r2 - in trunk: . bugzilla.openmoko.org bugzilla.openmoko.org/usr_share_bugzilla_template_en_default bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search lists.openmoko.org lists.openmoko.org/var_lib_mailman_templates_en planet.openmoko.org planet.openmoko.org/home_planet_planet_openmoko.org planet.openmoko.org/space_www_planet.openmoko.org planet.openmoko.org/space_www_planet.openmoko.org/_sifr planet.openmoko.org/space_www_planet.openmoko.org/images wiki.openmoko.org wiki.openmoko.org/space_www_wiki_skins wiki.openmoko.org/space_www_wiki_skins/chick wiki.openmoko.org/space_www_wiki_skins/common wiki.openmoko.org/space_www_wiki_skins/common/images wiki.openmoko.org/space_www_wiki_skins/common/images/icons wiki.openmoko.org/space_www_wiki_skins/disabled wiki.openmoko.org/space_www_wiki_skins/htmldump wiki.openmoko.org/space_www_wiki_skins/monobook wiki.openmoko.org/space_www_wiki_skins/myskin wiki.openmoko.org/space_www_wiki_skins/simple www.openmoko.org

laforge at sita.openmoko.org laforge at sita.openmoko.org
Mon Feb 12 16:31:26 CET 2007


Author: laforge
Date: 2007-02-12 16:31:04 +0100 (Mon, 12 Feb 2007)
New Revision: 2

Added:
   trunk/bugzilla.openmoko.org/
   trunk/bugzilla.openmoko.org/README.txt
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/cancel-token.txt.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/create.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/created.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-new.txt.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-old.txt.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/confirm.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/exists.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/forgotten-password.txt.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/set-forgotten-password.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/account.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/email.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/footer.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/permissions.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/prefs.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/create.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/delete.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/edit.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/list.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/content-types.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/create.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/created.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/edit.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/list.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/show-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/updated.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/show.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/table.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose-xml.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/comments.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/comment.txt.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/create.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/created.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/make-template.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/user-message.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-graph.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-tree.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/edit.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/navigate.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/confirm-duplicate.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/midair.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/next.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/results.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/verify-new-product.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/show-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/delete-all.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-bug.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-user.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/filterexceptions.pl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/banner.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/choose-product.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/code-error.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/footer.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/header.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/hidden-fields.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/message.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/select-menu.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/useful-links.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/user-error.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/index.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/change-columns.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/edit-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-rdf.rdf.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-simple.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/quips.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/server-push.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/table.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/components.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-simple.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-table.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/keywords.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/boolean-charts.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/form.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/knob.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/search.html.tmpl
   trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/sidebar.xul.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/cancel-token.txt.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/create.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/created.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-new.txt.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-old.txt.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/confirm.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/exists.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/forgotten-password.txt.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/set-forgotten-password.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/account.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/email.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/footer.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/permissions.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/prefs.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/create.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/delete.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/edit.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/list.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/content-types.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/create.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/created.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/edit.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/list.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/show-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/updated.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/show.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/table.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose-xml.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/comments.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/comment.txt.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/create.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/created.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/make-template.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/user-message.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-graph.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-tree.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/edit.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/navigate.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/confirm-duplicate.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/midair.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/next.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/results.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/verify-new-product.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/show-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/delete-all.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-bug.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-user.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/filterexceptions.pl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/banner.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/choose-product.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/code-error.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/footer.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/header.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/hidden-fields.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/message.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/select-menu.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/useful-links.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/user-error.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/index.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/change-columns.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/edit-multiple.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-rdf.rdf.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-simple.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/quips.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/server-push.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/table.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/components.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-simple.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-table.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/keywords.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/boolean-charts.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/form.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/knob.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/search.html.tmpl
   trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/sidebar.xul.tmpl
   trunk/downloads.openmoko.org/
   trunk/lists.openmoko.org/
   trunk/lists.openmoko.org/README
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbdetails.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbpreamble.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbsummary.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminsubscribeack.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminunsubscribeack.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/admlogin.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/approve.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxentry.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxfoot.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxhead.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archlistend.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archliststart.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtoc.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocentry.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocnombox.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/article.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/bounce.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/checkdbs.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/convert.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/cronpass.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/disabled.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/emptyarchive.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/headfoot.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/help.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/invite.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/listinfo.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/masthead.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/newlist.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/nomoretoday.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/options.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/postack.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/postauth.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/postheld.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/private.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/probe.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/refuse.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/roster.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/subauth.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribe.html
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribeack.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsub.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsubauth.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/userpass.txt
   trunk/lists.openmoko.org/var_lib_mailman_templates_en/verify.txt
   trunk/planet.openmoko.org/
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/atom.xml.tmpl
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/config.ini
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/foafroll.xml.tmpl
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/index.html.tmpl
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/opml.xml.tmpl
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss10.xml.tmpl
   trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss20.xml.tmpl
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/init_sifr.js
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-print.css
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-screen.css
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_normal.swf
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_semibold.swf
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sifr.js
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bottom.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet_hover.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_tile.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_top.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/foaf.png
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/footer_bg.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/opml.png
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/planet_logo.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss10.png
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss20.png
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss_feed_list.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/top_link.gif
   trunk/planet.openmoko.org/space_www_planet.openmoko.org/style.css
   trunk/projects.openmoko.org/
   trunk/wiki.openmoko.org/
   trunk/wiki.openmoko.org/space_www_wiki_skins/
   trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl
   trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/Skin.sample
   trunk/wiki.openmoko.org/space_www_wiki_skins/SkinPHPTal.sample
   trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/chick/
   trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE50Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE55Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE60Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/feed.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_d.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_l.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.xcf
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Zoom_sans.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/bullet.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_bold.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_extlink.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_headline.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_hr.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_image.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_italic.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_link.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_math.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_media.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_nowiki.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_sig.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_template.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/fileicon.xcf
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.xcf
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/COPYING
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-c.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-cpp.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-deb.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-dvi.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-exe.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-h.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-html.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-iso.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-java.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mid.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mov.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-o.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.xcf
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-pdf.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ps.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rm.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rpm.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-svg.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tar.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tex.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ttf.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-txt.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/link_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/magnify-clip.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-small.xcf
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/poweredby_mediawiki_88x31.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectltr.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectrtl.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki_moko.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar-right.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikiprintable.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/
   trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php
   trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/
   trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/lookup.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/main.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/md5.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/utf8.js
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE50Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE55Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IEMacFixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera6Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera7Fixes.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/bullet.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/discussionitem_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/external.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/file_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/headbg.jpg
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/link_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/lock_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/magnify-clip.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/mail_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/news_icon.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/required.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/user.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki-indexed.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/myskin/
   trunk/wiki.openmoko.org/space_www_wiki_skins/myskin/main.css
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/discussionitem_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/external.png
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/file_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/link_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/lock_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/mail_icon.gif
   trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css
   trunk/www.openmoko.org/
   trunk/www.openmoko.org/space_www_www/
Log:
import initial content for webdesign svn trunk


Added: trunk/bugzilla.openmoko.org/README.txt
===================================================================
--- trunk/bugzilla.openmoko.org/README.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/README.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,10 @@
+usr_share_bugzilla_template_en_default  
+
+	This is the default template pre-installed from the Debian bugzilla
+	package
+
+var_lib_bugzilla_template_en_openmoko
+
+	This is our openmoko theme.  As a start, I've populated it with a copy
+	original defalt template
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/cancel-token.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/cancel-token.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/cancel-token.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,39 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: [% tokentype %] token cancelled
+
+A token was cancelled from [% remoteaddress %].  
+If you did not request this, it could be either an honest 
+mistake or the result of a malicious hack attempt.  
+
+Take a look at the information below and forward this email 
+to [% maintainer %] if you suspect foul play.
+
+            Token: [% token %]
+       Token Type: [% tokentype %]
+             User: [% emailaddress %]
+       Issue Date: [% issuedate %]
+       Event Data: [% eventdata %]
+Cancelled Because: [% cancelaction %]
+
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,58 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Create a new Bugzilla account"
+%]
+
+<p>
+  To create a Bugzilla account, all that you need to do is to enter a
+  legitimate e-mail address.  The account will be created, and its
+  password will be mailed to you. Optionally you may enter your real name 
+  as well.
+</p>
+
+<form method="get" action="createaccount.cgi">
+  <table>
+    <tr>
+      <td align="right">
+        <b>E-mail address:</b>
+      </td>
+      <td>
+        <input size="35" name="login">
+        [% Param('emailsuffix') FILTER html %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>Real name:</b>
+      </td>
+      <td>
+        <input size="35" name="realname">
+      </td>
+    </tr>
+  </table>
+  <br>
+  <input type="submit" value="Create Account">
+</form>
+
+[% PROCESS global/footer.html.tmpl %] 

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Account Created"
+%]
+
+<p>
+  A new account,  
+  <tt>[% login FILTER html %]</tt>,
+  has been created and a randomly-generated password has been e-mailed 
+  to that address.
+</p>
+
+<p>
+  When the e-mail arrives, 
+  <a href="query.cgi?GoAheadAndLogIn=1">log in here</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %] 

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-new.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-new.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-new.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,39 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: Bugzilla Change Email Address Request
+
+Bugzilla has received a request to change the email address 
+for the [% oldemailaddress %] account to your address.
+
+To confirm the change, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cfmem&t=[% token FILTER url_quote %]
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER url_quote %]
+
+If you do nothing, the request will lapse after 
+[%- max_token_age %] days ([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) %]).

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-old.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-old.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/change-old.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,44 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[%# INTERFACE:
+  # emailaddress: string. The user's old Bugzilla login email address.
+  # newemailaddress: string. The user's new Bugzilla login email address.
+  # token: string. The token associated with this change.
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: Bugzilla Change Email Address Request
+Importance: High
+X-MSMail-Priority: High
+X-Priority: 1
+
+Bugzilla has received a request to change the email address 
+for your account to [% newemailaddress %].
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER url_quote %]
+
+If you do nothing, and [% newemailaddress %] confirms this request, the 
+change will be made permanent after 
+[%- max_token_age %] days ([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) %]).

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/confirm.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/confirm.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/email/confirm.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,47 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+
+[%# INTERFACE:
+  # token: string. The token to be used in this address change.
+  #%]
+  
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  To change your email address, please enter the old email address:
+</p>
+
+<form method="post" action="token.cgi">
+  <input type="hidden" name="t" value="[% token FILTER html %]">
+  <input type="hidden" name="a" value="chgem">
+  <table>
+    <tr>
+      <th align="right">Old Email Address:</th>
+      <td><input type="input" name="email" size="36"></td>
+    </tr>
+    <tr>
+      <th align="right"> </th>
+      <td><input type="submit" value="Submit"></td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/exists.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/exists.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/exists.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,38 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Account Exists"
+%]
+
+<form method="get" action="token.cgi">
+  <input type="hidden" name="a" value="reqpw">
+  <input type="hidden" name="loginname" value="[% login FILTER html %]">
+  A Bugzilla account for <tt>[% login FILTER html %]</tt> already exists. If you
+  are the account holder and have forgotten your password, 
+  <input type="submit" value="submit a request to change it">.
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/forgotten-password.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/forgotten-password.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/forgotten-password.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,38 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject:  Bugzilla Change Password Request
+
+You (or someone impersonating you) has requested to change your Bugzilla
+password.  To change your password, visit the following link:
+
+[%+ Param('urlbase') %]token.cgi?a=cfmpw&t=[% token FILTER url_quote %]
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[%+ Param('urlbase') %]token.cgi?a=cxlpw&t=[% token FILTER url_quote %]
+
+If you do nothing, the request will lapse after 
+[%- max_token_age %] days 
+([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) -%]) or when you log in successfully.

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/set-forgotten-password.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/set-forgotten-password.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/password/set-forgotten-password.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,55 @@
+<!-- 1.0 at bugzilla.org -->
+ [%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  To change your password, enter a new password twice:
+</p>
+
+<form method="post" action="token.cgi">
+  <input type="hidden" name="t" value="[% token FILTER html %]">
+  <input type="hidden" name="a" value="chgpw">
+  <table>
+    <tr>
+      <th align="right">New Password:</th>
+      <td>
+        <input type="password" name="password" size="16" maxlength="16">
+      </td>
+    </tr>
+    
+    <tr>
+      <th align="right">New Password Again:</th>
+      <td>
+        <input type="password" name="matchpassword" size="16" maxlength="16">
+      </td>
+    </tr>
+    
+    <tr>
+      <th align="right">&nbsp;</th>
+      <td>
+        <input type="submit" value="Submit">
+      </td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/account.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/account.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/account.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # realname: string. The user's real name, if any.
+  # login:    string. The user's Bugzilla login email address.
+  # login_change_date: string. The date the email change will be complete. (optional)
+  # new_login_name:    string. The user's new Bugzilla login whilst not confirmed. (optional)
+  #%]
+
+<table>
+  <tr>
+    <td colspan="3">
+      Please enter your existing password to confirm account changes.
+    </td>
+  </tr>
+  <tr>
+    <th align="right">Password:</th>
+    <td>
+      <input type="hidden" name="Bugzilla_login" 
+             value="[% login FILTER html %]">
+      <input type="password" name="Bugzilla_password">
+    </td>
+  </tr>              
+  <tr>
+    <td colspan="2"><hr></td>
+  </tr>
+
+  <tr>
+    <th align="right">New password:</th>
+    <td>
+      <input type="password" name="new_password1">
+    </td>
+  </tr>              
+
+  <tr>
+    <th align="right">Re-enter new password:</th>
+    <td>
+      <input type="password" name="new_password2">
+    </td>
+  </tr>              
+
+  <tr>
+    <th align="right">Your real name (optional, but encouraged):</th>
+    <td>
+      <input size="35" name="realname" value="[% realname FILTER html %]">
+    </td>
+  </tr>  
+
+  [% IF Param('allowemailchange') %]
+    [% IF login_change_date %]
+      [% IF new_login_name %]
+        <tr>
+          <th align="right">Pending email address:</th>
+          <td>[% new_login_name FILTER html %]</td>
+        </tr>
+        <tr>
+          <th align="right">Change request expires:</th>
+          <td>[% login_change_date %]</td>
+        </tr>
+      [% ELSE %]
+        <tr>
+          <th align="right">Confirmed email address:</th>
+          <td>[% login FILTER html %]
+        </tr>
+        <tr>
+          <th align="right">Completion date:</th>
+          <td>[% login_change_date %]</td>
+        </tr>
+      [% END %]
+    [% ELSE %]
+      <tr>
+        <th align="right">New email address:</th>
+        <td>
+          <input size="35" name="new_login_name">
+        </td>
+      </tr>
+    [% END %]
+  [% END %]
+  
+</table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/email.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/email.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/email.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,162 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # watchedusers: string. 
+  #               Comma-separated list of email addresses this user watches.
+  # excludeself:  boolean.
+  #               True if user is not receiving self-generated mail.
+  # <rolename>:   Multiple hashes, one for each rolename (e.g. owner; see 
+  #               below), keyed by reasonname (e.g. comments; again, see 
+  #               below). The value is a boolean - true if the user is 
+  #               receiving mail for that reason when in that role.
+  # Also references the 'supportwatchers' Param.
+  #%]
+
+[% useqacontact = Param('useqacontact') %]
+ 
+<table>
+  [% IF Param('supportwatchers') %]
+    <tr>
+      <td colspan="4">
+        <hr>
+      </td>
+    </tr>
+
+    <tr>
+      <td colspan="4">
+        If you want to help cover for someone when they're on vacation, or if
+        you need to do the QA related to all of their bugs, you can tell 
+        Bugzilla to send mail related to their bugs to you also.  List the 
+        email addresses of any users you wish to watch here, separated by
+        commas.
+      </td>
+    </tr>
+
+    <tr>
+      <th align="right">Users to watch:</th>
+      <td>
+        <input size="35" name="watchedusers" value="[% watchedusers FILTER html %]">
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+    <td colspan="2">
+      <p>
+        If you don't like getting a notification for "trivial"
+        changes to bugs, you can use the settings below to
+        filter some (or even all) notifications.
+      </p>
+    </td>
+  </tr>
+</table>
+
+<hr>
+
+<table>
+  <tr>
+    <td colspan="2">
+      <b>Global options:</b>
+    </td>
+  </tr>
+
+  <tr>
+    <td width="150"></td>
+    <td>
+      Only email me reports of changes made by other people
+      <input type="checkbox" name="ExcludeSelf" value="on"
+        [% " checked" IF excludeself %]>
+      <br>
+    </td>
+  </tr>
+</table>
+
+<hr>
+<b>Field/recipient specific options:</b>
+<br>
+<br>
+
+
+<table width="100%" border="1">
+  <tr>
+    <td colspan="[% useqacontact ? '5' : '4' %]" align="center" width="50%">
+      <b>When my relationship to this bug is:</b>
+    </td>
+    <td rowspan="2" width="50%">
+      <b>I want to receive mail when:</b>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="center" width="10%">
+      <b>Reporter</b>
+    </td>
+    <td align="center" width="10%">
+      <b>Assignee</b>
+    </td>
+    [% IF useqacontact %]
+      <td align="center" width="10%">
+        <b>QA Contact</b>
+      </td>
+    [% END %]
+    <td align="center" width="10%">
+      <b>CC</b>
+    </td>
+    <td align="center" width="10%">
+      <b>Voter</b>
+    </td>
+  </tr>
+
+  [% FOREACH reason = [ 
+      { name = 'Removeme',    
+        description = 'I\'m added to or removed from this capacity' },
+      { name = 'Comments',    
+        description = 'New Comments are added' },
+      { name = 'Attachments', 
+        description = 'New Attachments are added' },
+      { name = 'Status',      
+        description = 'Priority, status, severity, and/or milestone changes' },
+      { name = 'Resolved',    
+        description = 'The bug is resolved or verified' },
+      { name = 'Keywords',    
+        description = 'Keywords field changes' },
+      { name = 'CC',          
+        description = 'CC field changes' },
+      { name = 'Other',       
+        description = 'Any field not mentioned above changes' } ] %]
+    <tr>
+      [% FOREACH role = [ "Reporter", "Owner", "QAcontact", "CClist", "Voter" ] 
+       %]
+        [% NEXT IF role == "QAcontact" AND NOT useqacontact %]
+        <td align="center">
+          <input type="checkbox" name="email[% role %][% reason.name %]" value="on"
+            [% " checked" IF $role.${reason.name} %]>
+        </td>
+      [% END %]
+      <td>
+        [% reason.description %]
+      </td>
+    </tr>
+  [% END %]
+</table>       
+
+<br>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/footer.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/footer.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/footer.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,76 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # mybugslink: boolean. True if the user wishes the My Bugs link to appear. 
+  # queries: array of hashes. May be empty. Each hash has two members:
+  #   name:   string. The name of the query.
+  #   footer: boolean. True if the query appears in the footer.
+  #%]
+ 
+<table>
+  <tr>
+    <th align="right">The 'My bugs' link:</th>
+    <td>
+      <select name="mybugslink">
+        <option value="1">should appear on the footer of every page</option>  
+        <option value="0" 
+          [% " selected" IF NOT mybugslink %]>should not be displayed
+        </option>  
+      </select>
+    </td>
+  </tr>    
+    
+  <input type="hidden" name="numqueries" value="[% queries.size %]">
+  [% IF queries.size %]
+    [% FOREACH query = queries %]
+      <tr>
+        <th align="right">Your query named '[% query.name FILTER html %]':</th>
+        <td>
+          <select name="query-[% loop.index %]">
+            <option value="0">should only appear in the query page</option>  
+            <option value="1" 
+              [% " selected" IF query.footer %]>
+              should appear on the footer of every page
+            </option>  
+          </select>
+        </td>
+      </tr>
+
+      <input type="hidden" name="name-[% loop.index %]" 
+             value="[% query.name FILTER html %]">
+    [% END %]
+
+  [% ELSE %]
+    <tr>
+      <td colspan="4">
+        <br>                            
+        If you create remembered queries using the 
+        <a href="query.cgi">query page</a>,
+        you can then come to this page and choose to have some of them  
+        appear in the footer of each Bugzilla page.
+        <br>
+        <br>
+      </td>
+    </tr>
+  [% END %]
+    
+</table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/permissions.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/permissions.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/permissions.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,57 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # has_bits: array of strings. May be empty.
+  #           Descriptions of the permission bits the user has. 
+  # set_bits: array of strings. May be empty. 
+  #           Descriptions of the permission bits the user can set for 
+  #           other people.
+  #%]
+ 
+<table>
+  <tr>
+    <td>
+      [% IF has_bits.size %]
+        You have the following permission bits set on your account:
+        <ul>
+          [% FOREACH bit_description = has_bits %]
+            <li>[% bit_description %]</li>
+          [% END %]
+        </ul>
+      [% ELSE %]
+        There are no permission bits set on your account.
+      [% END %]
+
+      [% IF set_bits.size %]
+        And you can turn on or off the following bits for
+        <a href="editusers.cgi">other users</a>:
+        <p>
+          <ul>
+          [% FOREACH bit_description = set_bits %]
+            <li>[% bit_description %]</li>
+          [% END %]
+          </ul>
+        </p>
+      [% END %]
+    </td>
+  </tr>
+</table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/prefs.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/prefs.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/account/prefs/prefs.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,132 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  # tabs: List of hashes. May not be empty. Each hash has three members:
+  #   name: string. Name of the tab (used internally.)
+  #   description: string. Description of the tab (used in tab title.)
+  #   saveable: boolean. True if tab has a form which can be submitted.
+  #               True if user is not receiving self-generated mail.
+  # Note: For each tab name, a template "prefs/${tab.name}.tmpl" must exist, 
+  # and its interface must be fulfilled.
+  # current_tab: A direct reference to one of the hashes in the tabs list.
+  #              This tab will be displayed.
+  # changes_saved: boolean/string. True if the CGI processed form data before 
+  #                displaying anything, and can contain an optional custom
+  #                message if required (which Perl still evaluates as True).
+  #%]
+
+[% filtered_login = login FILTER html %]
+[% PROCESS global/header.html.tmpl
+   title = "User Preferences"
+   h2 = filtered_login
+   style = "td.selected_tab {
+              border-width: 2px 2px 0px;
+              border-style: solid; 
+            }
+            td.unselected_tab, td.spacer {
+              border-width: 0px 0px 2px 0px;
+              border-style: solid; 
+            }"
+ %]
+
+[% tabs = [ { name => "account", description => "Account settings", 
+              saveable => "1" },
+            { name => "email", description => "Email settings", 
+              saveable => "1" },
+            { name => "footer", description => "Page footer", 
+              saveable => "1" },
+            { name => "permissions", description => "Permissions", 
+              saveable => "0" } ] %]
+
+<center>
+  <table cellspacing="0" cellpadding="10" border="0" width="100%">
+    <tr>
+      <td class="spacer">&nbsp;</td>
+ 
+      [% FOREACH tab = tabs %]
+        [% IF tab.name == current_tab_name %]
+          [% current_tab = tab %]
+          <td align="center" bgcolor="lightblue" class="selected_tab">
+            [% tab.description %]
+          </td>
+        [% ELSE %]
+          <td align="center" bgcolor="#BBBBEE" class="unselected_tab">
+            <a href="userprefs.cgi?tab=[% tab.name %]">[% tab.description %]</a>
+          </td>
+        [% END %]
+       [% END %]
+ 
+       <td class="spacer">&nbsp;</td>
+     </tr>
+   </table>
+</center>
+
+[% IF changes_saved %]
+  <p>
+    <font color="red">
+      The changes to your 
+      [% current_tab.description FILTER lower %] have been saved.
+    </font>
+  </p>
+  [% IF changes_saved != 1 %]
+    <p>
+      [% changes_saved FILTER html %]
+    </p>
+  [% END %]
+[% END %]
+
+<h3>[% current_tab.description %]</h3>
+
+<form method="post">
+  <input type="hidden" name="tab" value="[% current_tab.name %]">
+
+  [%# See bug 160710 for why this is done this way %]
+  [% IF current_tab.name == "account" %]
+    [% PROCESS "account/prefs/account.html.tmpl" %]
+  [% ELSIF current_tab.name == "email" %]
+    [% PROCESS "account/prefs/email.html.tmpl" %]
+  [% ELSIF current_tab.name == "footer" %]
+    [% PROCESS "account/prefs/footer.html.tmpl" %]
+  [% ELSIF current_tab.name == "permissions" %]
+    [% PROCESS "account/prefs/permissions.html.tmpl" %]
+  [% END %]
+
+  [% IF current_tab.saveable %]
+    <input type="hidden" name="dosave" value="1">
+
+    <table>
+      <tr>
+        <td width="150"></td>
+        <td>
+          <input type="submit" value="Submit Changes">
+         </td>
+      </tr>
+    </table>
+  [% END %]
+  
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
+
+    
+    

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,77 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Create Attachment Status"
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+  "
+%]
+
+<form method="post" action="editattachstatuses.cgi">
+  <input type="hidden" name="action" value="insert">
+  <input type="hidden" name="id" value="[% id %]">
+
+  <table cellspacing="0" cellpadding="4" border="0">
+    <tr>
+      <th>Name:</th>
+      <td>
+        <input type="text" name="name" size="50" maxlength="50">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Description:</th>
+      <td>
+        <textarea name="desc" rows="4" cols="50"></textarea>
+      </td>
+    </tr>
+
+    <tr>
+      <th>Sort Key:</th>
+      <td>
+        <input type="text" name="sortkey" size="5" maxlength="5">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Product:</th>
+      <td>
+        <select name="product">
+          [% FOREACH item = products %]
+            <option value="[% item FILTER html %]">[% item FILTER html %]</option>
+          [% END %]
+        </select>
+      </td>
+    </tr>
+
+    <tr>
+      <th></th>
+      <td>
+        <input type="submit" value="Add">
+      </td>
+    </tr>
+
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/delete.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/delete.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/delete.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,55 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #                 Jeff Hedlund <jeff.hedlund at matrixsi.com>
+  #%]
+
+[%# Filter off the name here to be used multiple times below %]
+[% name = name FILTER html %]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Confirm Delete of Attachment Status '$name'" 
+%]
+
+<p>
+   [% attachcount %] attachments have the status '[% name %]'. If you delete
+   it, those attachments will lose this status.
+</p>
+
+<table>
+   <tr>
+      <td colspan=2>
+         Do you really want to delete this status?
+      </td>
+   </tr>
+   <tr>
+      <td>
+         <a href="editattachstatuses.cgi?action=delete&id=[% id %]">
+            Yes, delete
+         </a>
+      </td>
+      <td align="right">
+         <a href="editattachstatuses.cgi">
+            No, don't delete
+         </a>
+      </td>
+   </tr>
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,81 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # name: string. The name of the attachment status we are editing.
+  # desc: string. Its description.
+  # sortkey: integer. Where it's sorted in the list.
+  # product: string. Which product it applies to.
+  # id: integer. Its internal ID number.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Edit Attachment Status"
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+  "
+%]
+
+<form method="post" action="editattachstatuses.cgi">
+  <input type="hidden" name="action" value="update">
+  <input type="hidden" name="id" value="[% id %]">
+
+  <table cellspacing="0" cellpadding="4" border="0">
+    <tr>
+      <th>Name:</th>
+      <td>
+        <input type="text" name="name" value="[% name FILTER html %]" size="50" maxlength="50">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Description:</th>
+      <td>
+        <textarea name="desc" rows="4" cols="50">[% desc FILTER html %]</textarea>
+      </td>
+    </tr>
+
+    <tr>
+      <th>Sort Key:</th>
+      <td>
+        <input type="text" name="sortkey" value="[% sortkey %]" size="5" maxlength="5">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Product:</th>
+      <td>
+        [% product FILTER html %]
+      </td>
+    </tr>
+
+    <tr>
+      <th></th>
+      <td>
+        <input type="submit" value="Update">
+      </td>
+    </tr>
+
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/admin/attachstatus/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # statusdefs: list of hashes. may be empty. Each hash has six members:
+  #   name: string. The name of the attachment status.
+  #   description: string. Its description.
+  #   sortkey: integer. Sorting priority.
+  #   product: string. The product to which the attachment status applies.
+  #   id: integer. Its internal ID number.
+  #   attachcount: integer. How many attachments have that status.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = 'Administer Attachment Statuses'
+  message = message
+  style = "
+    th { text-align: left; }
+  "
+%]
+
+<table cellspacing="0" cellpadding="4" border="1">
+
+  <tr>
+    <th>Name</th>
+    <th>Description</th>
+    <th>Sort Key</th>
+    <th>Product</th>
+    <th>Action(s)</th>
+  </tr>
+
+  [% FOREACH statusdef = statusdefs %]
+
+    <tr>
+      <td>[% statusdef.name FILTER html %]</td>
+      <td>[% statusdef.description FILTER html %]</td>
+      <td>[% statusdef.sortkey %]</td>
+      <td>[% statusdef.product FILTER html %]</td>
+      <td>
+        <a href="editattachstatuses.cgi?action=edit&id=[% statusdef.id %]">
+            Edit</a>
+        &nbsp;|&nbsp;
+        <a href="editattachstatuses.cgi?action=confirmdelete&id=[% statusdef.id %]" 
+         onclick="return confirmDelete([% statusdef.attachcount %],
+                                       '[% statusdef.name FILTER js %]',
+                                       [% statusdef.id %]);">
+            Delete</a>
+      </td>
+    </tr>
+
+  [% END %]
+
+  <tr>
+    <td colspan="4"></td>
+    <td>
+      <a href="editattachstatuses.cgi?action=create">Create</a>
+    </td>
+  </tr>
+
+</table>
+<script language="JavaScript">
+  function confirmDelete(attachcount, name, id)
+  {
+    if (attachcount > 0) {
+        msg = attachcount + ' attachments have the status ' +
+              name + '.  If you delete it, those attachments ' +
+              'will lose this status.  Do you really want to ' +
+              'delete this status?';
+    }
+    else {
+        msg = 'Are you sure you want to delete attachment status ' +
+              name + '?';
+    }
+    if (confirm(msg)) {
+      location.href = "editattachstatuses.cgi?action=delete&id=" + id;
+    }
+    return false;
+  }
+</script>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/content-types.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/content-types.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/content-types.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,27 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+          <option value="text/plain">plain text (text/plain)</option>
+          <option value="text/html">HTML source (text/html)</option>
+          <option value="image/gif">GIF image (image/gif)</option>
+          <option value="image/jpeg">JPEG image (image/jpeg)</option>
+          <option value="image/png">PNG image (image/png)</option>
+          <option value="application/octet-stream">binary file (application/octet-stream)</option>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,130 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# Define strings that will serve as the title and header of this page %]
+[% title = BLOCK %]Create New Attachment for Bug #[% bugid %][% END %]
+[% h1 = BLOCK %]Create New Attachment for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
+[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
+
+[% PROCESS global/header.html.tmpl 
+  title = title
+  h1 = h1
+  h2 = h2
+  style = "
+    th { text-align: right; vertical-align: baseline; white-space: nowrap; }
+    td { text-align: left; vertical-align: baseline; padding-bottom: 5px; }
+  "
+  onload="setContentTypeDisabledState();"
+%]
+
+<form name="entryform" method="post" action="attachment.cgi" enctype="multipart/form-data">
+  <input type="hidden" name="bugid" value="[% bugid %]">
+  <input type="hidden" name="action" value="insert">
+   
+  <table>
+    <tr>
+      <th>File:</th>
+      <td>
+        <em>Enter the path to the file on your computer.</em><br>
+        <input type="file" name="data" size="50">
+      </td>
+    </tr>
+    <tr>
+      <th>Description:</th>
+      <td>
+        <em>Describe the attachment briefly.</em><br>
+        <input type="text" name="description" size="60" maxlength="200">
+      </td>
+    </tr>
+    <tr>
+      <th></th>
+      <td>
+      </td>
+    </tr>
+    <tr>
+      <th>Content Type:</th>
+      <td>
+        <em>If the attachment is a patch, check the box below.</em><br>
+        <input type="checkbox" name="ispatch" value="1" onchange="setContentTypeDisabledState();"> patch<br><br>
+
+        <em>Otherwise, choose a method for determining the content type.</em><br>
+        <input type="radio" name="contenttypemethod" value="autodetect"> 
+          auto-detect<br>
+        <input type="radio" name="contenttypemethod" value="list"> 
+          select from list: <select name="contenttypeselection" onchange="this.form.contenttypemethod[1].checked = true;">
+            [% PROCESS "attachment/content-types.html.tmpl" %]
+          </select><br>
+        <input type="radio" name="contenttypemethod" value="manual">
+          enter manually: <input type="text" name="contenttypeentry" size="30" maxlength="200" onchange="if (this.value) this.form.contenttypemethod[2].checked = true;">
+      </td>
+    </tr>
+    <tr>
+      <th>Obsoletes:</th>
+      <td>
+        <em>(optional) Check each existing attachment made obsolete by your new attachment.</em><br>
+        [% IF attachments.size %]
+          [% FOREACH attachment = attachments %]
+            <input type="checkbox" name="obsolete" value="[% attachment.id %]">
+            <a href="attachment.cgi?id=[% attachment.id %]&amp;action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br>
+          [% END %]
+        [% ELSE %]
+            [no attachments can be made obsolete]
+        [% END %]
+      </td>
+    </tr>
+    <tr>
+      <th>Comment:</th>
+      <td>
+        <em>(optional) Add a comment about this attachment to the bug.</em><br>
+        <textarea wrap="soft" name="comment" rows="6" cols="80"></textarea>
+      </td>
+    </tr>
+    <tr>
+      <th>&nbsp;</th>
+      <td><input type="submit" value="Submit"></td>
+    </tr>
+  </table>
+
+</form>
+
+<script language="JavaScript" type="text/javascript">
+  <!--
+  function setContentTypeDisabledState() 
+  {
+    var entryform = document.entryform;
+
+    var isdisabled = false;
+    if (entryform.ispatch.checked) 
+      isdisabled = true;
+
+    for (var i=0 ; i<entryform.contenttypemethod.length ; i++)
+      entryform.contenttypemethod[i].disabled = isdisabled;
+
+    entryform.contenttypeselection.disabled = isdisabled;
+    entryform.contenttypeentry.disabled = isdisabled;
+  }
+  //-->
+</script>
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,66 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # bugid: integer. ID of the bug we just attached an attachment to.
+  # attachid: integer. ID of the attachment just created.
+  # description: string. Description of the attachment just created.
+  # contenttype: string. The Content Type we attached it as.
+  # contenttypemethod: string. How we got the content type of the attachment.
+  #  Possible values: autodetect, list, manual.
+  # mailresults: string. who was mailed, and who wasn't.
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+  title = "Changes Submitted"
+  style = "th { text-align: left; }"
+%]
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>
+        <a title="[% description FILTER html %]" href="attachment.cgi?id=[% attachid %]&amp;action=edit">Attachment #[% attachid %]</a> 
+        to <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a> Created
+      </h2>
+
+      [% mailresults FILTER html %]
+
+      [% IF contenttypemethod == 'autodetect' %]
+        <p>
+          <b>Note:</b> Bugzilla automatically detected the content type
+          <em>[% contenttype %]</em> for this attachment.  If this is 
+          incorrect, correct the value by 
+          <a href="attachment.cgi?id=[% attachid %]&amp;action=edit">editing the attachment</a>.
+        </p>
+      [% END %]
+    </td>
+    <td>
+      <a href="show_bug.cgi?id=[% bugid %]">Go back to bug #[% bugid %]</a>
+    </td>
+  </tr>
+</table>
+
+<p>
+<a href="attachment.cgi?bugid=[% bugid %]&amp;action=enter">Create Another Attachment to Bug #[% bugid %]</a>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,226 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# Define strings that will serve as the title and header of this page %]
+[% title = BLOCK %]Edit Attachment #[% attachid %] for Bug #[% bugid %][% END %]
+[% h1 = BLOCK %]Edit Attachment #[% attachid %] for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
+[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
+
+[% PROCESS global/header.html.tmpl 
+  title = title
+  h1 = h1
+  h2 = h2
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+    td#info { text-align: right; vertical-align: top; }
+    td#actions { text-align: right; vertical-align: bottom; }
+    td#noview { text-align: left; vertical-align: center; }
+  "
+%]
+
+<script type="application/x-javascript" language="JavaScript">
+  <!--
+  function editAsComment()
+    {
+      // Get the content of the document as a string.
+      var viewFrame = document.getElementById('viewFrame');
+      var aSerializer = new XMLSerializer();
+      var contentDocument = viewFrame.contentDocument;
+      var theContent = aSerializer.serializeToString(contentDocument);
+
+      // If this is a plaintext document, remove cruft that Mozilla adds
+      // because it treats it as an HTML document with a big PRE section.
+      // http://bugzilla.mozilla.org/show_bug.cgi?id=86012
+      var contentType = '[% contenttype FILTER js %]';
+      if ( contentType == 'text/plain' )
+        {
+          theContent = theContent.replace( /^<html><head\/><body><pre>/i , "" );
+          theContent = theContent.replace( /<\/pre><\/body><\/html>$/i , "" );
+          theContent = theContent.replace( /&lt;/gi , "<" );
+          theContent = theContent.replace( /&gt;/gi , ">" );
+          theContent = theContent.replace( /&amp;/gi , "&" );
+        }
+
+      // Add mail-style quote indicators (>) to the beginning of each line.
+      // ".*\n" matches lines that end with a newline, while ".+" matches
+      // the rare situation in which the last line of a file does not end
+      // with a newline.
+      theContent = theContent.replace( /(.*\n|.+)/g , ">$1" );
+
+      hideElementById('viewFrame');
+      hideElementById('editButton');
+      hideElementById('smallCommentFrame');
+
+      showElementById('undoEditButton');
+
+      // Show the TEXTAREA that will contain the editable attachment
+      // and copy the content of the attachment into it.
+      showElementById('editFrame');
+
+      var editFrame = document.getElementById('editFrame');
+      editFrame.value = theContent;
+      editFrame.value += "\n\n";
+    }
+  function undoEditAsComment()
+    {
+      // Hide the "edit attachment as comment" TEXTAREA and the "undo" button.
+      hideElementById('undoEditButton');
+      hideElementById('editFrame');
+
+      // Show the "view attachment" IFRAME, the "redo" button that allows the user
+      // to go back to editing the attachment as a comment, and the small comment field.
+      showElementById('viewFrame');
+      showElementById('redoEditButton');
+      showElementById('smallCommentFrame');
+
+    }
+  function redoEditAsComment()
+    {
+      // Hide the "view attachment" IFRAME, the "redo" button that allows the user
+      // to go back to editing the attachment as a comment, and the small comment field.
+      hideElementById('viewFrame');
+      hideElementById('redoEditButton');
+      hideElementById('smallCommentFrame');
+
+      // Show the "edit attachment as comment" TEXTAREA and the "undo" button.
+      showElementById('undoEditButton');
+      showElementById('editFrame');
+    }
+
+  function hideElementById(id)
+  {
+    var elm = document.getElementById(id);
+    if (elm) {
+      elm.style.display = 'none';
+    }
+  }
+
+  function showElementById(id, val)
+  {
+    var elm = document.getElementById(id);
+    if (elm) {
+      if (!val) val = 'inline';
+      elm.style.display = val;
+    }
+  }
+
+  function normalizeComments()
+  {
+    // Remove the unused comment field from the document so its contents
+    // do not get transmitted back to the server.
+
+    var small = document.getElementById('smallCommentFrame');
+    var big = document.getElementById('editFrame');
+    if ( small.style.display == 'none' )
+    {
+      small.parentNode.removeChild(small);
+    }
+    if ( big.style.display == 'none' )
+    {
+      big.parentNode.removeChild(big);
+    }
+  }
+  //-->
+</script>
+
+<form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
+  <input type="hidden" name="id" value="[% attachid %]">
+  <input type="hidden" name="action" value="update">
+  <input type="hidden" name="contenttypemethod" value="manual">
+
+  <table width="100%">
+
+    <tr>
+      <td width="25%">
+        <small>
+        <b>Description:</b><br>
+          <textarea rows="3" cols="25" name="description" wrap="soft">[% description FILTER html %]</textarea><br>
+
+        <b>MIME Type:</b><br>
+          <input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br>
+
+        <b>Flags:</b><br>
+          <input type="checkbox" name="ispatch" value="1"[% " checked" IF ispatch %]>patch
+          <input type="checkbox" name="isobsolete" value="1"[% " checked" IF isobsolete %]>obsolete<br>
+
+        [% IF statusdefs.size %]
+          <b>Status:</b><br>
+            [% FOREACH def = statusdefs %]
+                <input type="checkbox" name="status" value="[% def.id %]"[% " checked" IF statuses.${def.id} %]>[% def.name FILTER html %]<br>
+            [% END %]
+        [% END %]
+
+        <div id="smallCommentFrame">
+          <b>Comment (on the bug):</b><br>
+            <textarea name="comment" rows="5" cols="25" wrap="soft"></textarea><br>
+        </div>
+
+        <input type="submit" value="Submit">
+
+        </small>
+      </td>
+
+      [% IF isviewable %]
+        <td width="75%">
+          <textarea id="editFrame" name="comment" style="height: 400px; width: 100%; display: none;" cols="80" wrap="soft"></textarea>
+          <iframe id="viewFrame" src="attachment.cgi?id=[% attachid %]&amp;action=view" style="height: 400px; width: 100%;">
+            <b>You cannot view the attachment while editing it because your browser does not support IFRAMEs.
+            <a href="attachment.cgi?id=[% attachid %]&amp;action=view">View the attachment on a separate page</a>.</b>
+          </iframe>
+          <script type="application/x-javascript" language="JavaScript">
+            <!--
+            if (typeof document.getElementById == "function") {
+              document.write('<button type="button" id="editButton" onclick="editAsComment();">Edit Attachment As Comment</button>');
+              document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment();" style="display: none;">Undo Edit As Comment</button>');
+              document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment();" style="display: none;">Redo Edit As Comment</button>');
+            }
+            //-->
+          </script>
+        </td>
+      [% ELSE %]
+        <td id="noview" width="50%">
+          <p><b>
+            Attachment cannot be viewed because its MIME type is not either text/*, image/*, or application/vnd.mozilla.*.
+            <a href="attachment.cgi?id=[% attachid %]&amp;action=view">Download the attachment instead</a>.
+          </b></p>
+        </td>
+      [% END %]
+
+    </tr>
+
+  </table>
+
+  Attachments on this Bug:
+  [% FOREACH a = attachments %]
+    [% IF a == attachid %]
+      #[% a %]
+    [% ELSE %]
+      <a href="attachment.cgi?id=[% a %]&amp;action=edit">#[% a %]</a>
+    [% END %]
+    [% " |" UNLESS loop.last() %]
+  [% END %]
+
+</form>
+
+<br>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,81 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<br>
+<table cellspacing="0" cellpadding="4" border="1">
+  <tr>
+    <th bgcolor="#cccccc" align="left">Attachment</th>
+    <th bgcolor="#cccccc" align="left">Type</th>
+    <th bgcolor="#cccccc" align="left">Modified</th>
+    <th bgcolor="#cccccc" align="left">Status</th>
+    <th bgcolor="#cccccc" align="left">Actions</th>
+  </tr>
+
+  [% FOREACH attachment = attachments %]
+    <tr>
+      <td valign="top">
+        [% IF attachment.isobsolete %]
+          <strike><a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a></strike>
+        [% ELSE %]
+          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a> 
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF attachment.ispatch %]
+          <i>patch</i>
+        [% ELSE %]
+          [% attachment.contenttype FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">[% attachment.date %]</td>
+
+      <td valign="top">
+        [% IF attachment.statuses.size == 0 %]
+          <i>none</i>
+        [% ELSE %]
+          [% FOREACH s = attachment.statuses %]
+            [% s FILTER html FILTER replace('\s', '&nbsp;') %]<br>
+          [% END %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF attachment.canedit %]
+          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=edit">Edit</a>
+        [% ELSE %]
+          None
+        [% END %]
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+    <td colspan="4">
+      <a href="attachment.cgi?bugid=[% bugid %]&amp;action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
+    </td>
+    <td colspan="1">
+      <a href="attachment.cgi?bugid=[% bugid %]&amp;action=viewall">View All</a>
+    </td>
+  </tr>
+</table>
+<br>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/show-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/show-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/show-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,98 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[% filtered_summary = bugsummary FILTER html %]
+[% PROCESS global/header.html.tmpl 
+  title = "View All Attachments for Bug #$bugid"
+  h1 = "View All Attachments for <a href=\"show_bug.cgi?id=$bugid\">Bug #$bugid</a>"
+  h2 = filtered_summary
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+    td#info { text-align: right; vertical-align: top; }
+    td#actions { text-align: right; vertical-align: bottom; }
+  "
+%]
+
+<br>
+
+[% FOREACH a = attachments %]
+
+  <div align="center">
+  <table cellspacing="0" cellpadding="4" border="1" width="75%">
+    <tr>
+      <td valign="top" bgcolor="#cccccc" colspan="5">
+        <big><b>Attachment #[% a.attachid %]</b></big>
+      </td>
+    </tr>
+    <tr>
+      <td valign="top">
+        [% IF a.isobsolete %]
+          <strike>[% a.description FILTER html %]</strike>
+        [% ELSE %]
+          [% a.description FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF a.ispatch %]
+          <i>patch</i>
+        [% ELSE %]
+          [% a.contenttype FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">[% a.date %]</td>
+
+      <td valign="top">
+        [% IF a.statuses.size == 0 %]
+          <i>none</i>
+        [% ELSE %]
+          [% FOREACH s = a.statuses %]
+            [% s FILTER html FILTER replace('\s', '&nbsp;') %]<br>
+          [% END %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        <a href="attachment.cgi?id=[% a.attachid %]&amp;action=edit">Edit</a> 
+      </td>
+    </tr>
+  </table>
+
+  [% IF a.isviewable %]
+    <iframe src="attachment.cgi?id=[% a.attachid %]&amp;action=view" width="75%" height="350">
+      <b>You cannot view the attachment on this page because your browser does not support IFRAMEs.
+      <a href="attachment.cgi?id=[% a.attachid %]&amp;action=view">View the attachment on a separate page</a>.</b>
+    </iframe>
+  [% ELSE %]
+    <p><b>
+      Attachment cannot be viewed because its MIME type is not text/*, image/*, or application/vnd.mozilla.*.
+      <a href="attachment.cgi?id=[% a.attachid %]&action=view">Download the attachment instead</a>.
+    </b></p>
+  [% END %]
+  </div>
+
+  <br><br>
+
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/updated.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/updated.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/attachment/updated.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,52 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bugid: integer. ID of the bug we are updating.
+  # attachid: integer. ID of the attachment we just attached.
+  # mailresults: string. Who was mailed and who wasn't. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+  title = "Changes Submitted"
+  style = "th { text-align: left; }"
+%]
+
+<hr>
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>Changes to 
+        <a href="attachment.cgi?id=[% attachid %]&amp;action=edit">attachment [% attachid %]</a>
+        of bug [% bugid %] submitted
+      </h2>
+      [% mailresults FILTER html %]
+    </td>
+
+    <td>
+      <a href="show_bug.cgi?id=[% bugid %]">Back to Bug #[% bugid %]</a>
+    </td>
+  </tr>
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/show.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/show.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/show.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,43 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. The bug ID.
+  #
+  # This template also needs to be called with the interface to the
+  # activity.html.tmpl template fulfilled.
+  #%]
+ 
+[% PROCESS global/header.html.tmpl 
+  title = "Changes made to bug $bug_id"
+  h1 = "Activity log"
+  h2 = "Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>"
+ %]
+
+<br>
+
+[% PROCESS bug/activity/table.html.tmpl %]
+
+<p>
+  <a href="show_bug.cgi?id=[% bug_id %]">Back to bug [% bug_id %]</a>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/activity/table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,91 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # operations: array of hashes. May be empty. Each has has three members:
+  #   who: string. who performed the operation
+  #   when: string. when they performed it
+  #   changes: hash. Details of what they changed. This hash has three 
+  #            compulsory and one optional member:
+  #     field: string. The name of the field
+  #     removed: string. What was removed from the field
+  #     added: string. What was added to the field
+  #     attach_id: integer. If the change was adding an attachment, its id.
+  # incomplete_data: boolean. True if some of the data is incomplete (because
+  #                  it was affected by an old Bugzilla bug.)
+  #%]
+ 
+[% IF incomplete_data %]
+  <p>
+    There used to be a bug Bugzilla which caused activity data
+    to be lost if there was a large number of cc's or dependencies.  That
+    has been fixed, however, there was some data already lost on this bug
+    that could not be regenerated.  The changes that the script could not
+    reliably determine are prefixed by '?'.
+  </p>
+[% END %]
+
+[% IF operations.size > 0 %]
+  <table border cellpadding="4">
+    <tr>
+      <th>Who</th>
+      <th>When</th>
+      <th>What</th>
+      <th>Removed</th>
+      <th>Added</th>
+    </tr>
+
+    [% FOREACH operation = operations %]     
+      <tr>
+        <td rowspan="[% operation.changes.size %]" valign="top">
+          [% operation.who FILTER html %]
+        </td>
+        <td rowspan="[% operation.changes.size %]" valign="top">
+          [% operation.when FILTER html %]
+        </td>
+        [% FOREACH change = operation.changes %]
+          [% "</tr><tr>" IF loop.index > 0 %]
+            <td>
+              [% IF change.attachid %]
+                <a href="attachment.cgi?id=[% change.attachid %]&amp;action=view">
+                Attachment #[% change.attachid %]</a>         
+              [% END %]
+              [% change.field %]
+            </td>
+            <td>
+              [% IF change.removed %]
+                [% change.removed FILTER html %]
+              [% ELSE %]
+                &nbsp;
+              [% END %]
+            </td>
+            <td>
+              [% IF change.added %]
+                [% change.added FILTER html %]
+              [% ELSE %]
+                &nbsp;
+              [% END %]
+            </td>
+        [% END %]
+      </tr>
+    [% END %]
+  </table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose-xml.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose-xml.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose-xml.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface.
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+   title = "Display bugs as XML"
+ %]
+
+<form method="get" action="xml.cgi">
+  <table>
+    <tr>
+      <td>
+        Display bugs as XML by entering a list of bug numbers here:
+      </td>
+      <td>
+        <input name="id" size="30">
+        <input type="submit" value="Display as XML">
+      </td>
+    </tr>
+    
+    <tr>
+      <td>&nbsp;</td>
+      <td>
+        (e.g. 1000, 2467, 852)
+      </td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/choose.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,36 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl 
+     title = "Search by bug number"
+   %]
+[% END %]
+
+<form method="get" action="show_bug.cgi">
+  <p>
+    You may find a single bug by entering its bug id here:
+    <input name="id" size="6">
+    <input type="submit" value="Show Me This Bug">
+  </p>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/comments.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/comments.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/comments.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,53 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% DEFAULT start_at = 0 %]
+[% count = 0 %]
+[% FOREACH comment = comments %]
+  [% IF count >= start_at %]
+    [% PROCESS a_comment %]
+  [% END %]
+  
+  [% count = count + 1 %]
+[% END %]
+
+
+[%############################################################################%]
+[%# Block for individual comments                                            #%]
+[%############################################################################%]
+
+[% BLOCK a_comment %]
+  [% IF count > 0 %]
+    <br>
+    <i>------- Additional Comment
+      <a name="c[% count %]" href="#c[% count %]">#[% count %]</a> From 
+      <a href="mailto:[% comment.email FILTER html %]">[% comment.name FILTER html %]</a>
+      [%+ comment.time %] -------
+    </i>
+  [% END %]
+    
+[%# Don't indent the <pre> block, since then the spaces are displayed in the
+  # generated HTML
+  #%]
+<pre>
+  [%- quoteUrls(comment.body) -%]
+</pre>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/comment.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/comment.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/comment.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,26 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+[%# INTERFACE:
+  # form: hash. This is the $::FORM variable from a bug submission (i.e. the
+  # fields on a template from enter_bug.cgi.) It can be used to pull out 
+  # various custom fields and format an initial Description entry from them. 
+  #%]  
+[% form.comment %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,261 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Ville Skyttä <ville.skytta at iki.fi>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = "Enter Bug"
+  h2 = "This page lets you enter a new bug into Bugzilla."
+%]
+
+<form method="post" action="post_bug.cgi">
+<input type="hidden" name="product" value="[% product FILTER html %]">
+
+<table cellspacing="2" cellpadding="0" border="0">
+
+  <tr>
+    <td><br></td>
+  </tr>
+
+  <tr>
+    <td></td>
+    <td colspan="3">
+    [%# Migration note: The following file corresponds to the old Param
+      # 'entryheaderhtml'
+      #%]
+    [% INCLUDE 'bug/create/user-message.html.tmpl' %]
+    </td>
+  </tr>
+  
+  <tr>
+    <td><br></td>
+  </tr>
+
+  <tr>
+    <td align="right" valign="top"><strong>Reporter:</strong></td>
+    <td valign="top">[% reporter FILTER html %]</td>
+    
+    <td align="right" valign="top"><strong>Product:</strong></td>
+    <td valign="top">[% product FILTER html %]</td>
+  </tr>
+  
+  [%# We can't use the select block in these two cases for various reasons. %]
+  <tr>
+    <td align="right" valign="top">
+      <strong>Version:</strong>
+    </td>
+    <td>
+      <select name="version" size="5">
+        [%- FOREACH v = version %]
+          <option value="[% v FILTER html %]"
+            [% " selected=\"selected\"" IF v == default.version %]>[% v FILTER html -%]
+          </option>
+        [%- END %]
+      </select>
+    </td>  
+    
+    <td align="right" valign="top">
+      <strong>
+        <a href="describecomponents.cgi?product=[% product FILTER url_quote %]">
+          Component</a>:
+      </strong>
+    </td>
+    <td>
+      <select name="component" size="5">
+        [%- FOREACH c = component_ %]
+          <option value="[% c.name FILTER html %]"
+            [% " selected=\"selected\"" IF c.name == default.component_ %]>
+            [% c.name FILTER html -%]
+          </option>
+        [%- END %]
+      </select>
+    </td>  
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+  
+  <tr>
+    [% sel = { description => 'Platform', name => 'rep_platform' } %]
+    [% INCLUDE select %]
+    
+    [% sel = { description => 'OS', name => 'op_sys' } %]
+    [% INCLUDE select %]
+  </tr>
+  
+  <tr>  
+  [% IF Param('letsubmitterchoosepriority') %]
+    [% sel = { description => 'Priority', name => 'priority' } %]
+    [% INCLUDE select %]
+  [% ELSE %]
+    <input type="hidden" name="priority" 
+           value="[% default.priority FILTER html %]">
+  [% END %]
+
+  [% sel = { description => 'Severity', name => 'bug_severity' } %]
+  [% INCLUDE select %]    
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+
+[% IF bug_status.size > 1 %] 
+  <tr>
+    [% sel = { description => 'Initial State', name => 'bug_status' } %]
+    [% INCLUDE select %]
+    
+    <td colspan="2"></td>
+  </tr>
+[% ELSE %]
+  <input type="hidden" name="bug_status" value="[% default.bug_status FILTER html %]">  
+[% END %]
+
+  <tr>
+    <td align="right">
+      <strong>
+        <a href="/bugzilla/bug_status.html#assigned_to">Assigned To</a>:
+      </strong>
+    </td>
+    <td colspan="3">
+      <input name="assigned_to" size="32" 
+             value="[% assigned_to FILTER html %]">
+      (Leave blank to assign to default component owner)
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right"><strong>Cc:</strong></td>
+    <td colspan="3">
+      <input name="cc" size="45" value="[% cc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+
+  <tr>
+    <td align="right"><strong>URL:</strong></td>
+    <td colspan="3">
+      <input name="bug_file_loc" size="60" 
+             value="[% bug_file_loc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right"><strong>Summary:</strong></td>
+    <td colspan="3">
+      <input name="short_desc" size="60" value="[% short_desc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr><td align="right" valign="top"><strong>Description:</strong></td>
+    <td colspan="3">
+      <textarea wrap="hard" name="comment" rows="10" cols="80">
+        [% comment FILTER html %]</textarea>
+      <br>
+    </td>
+  </tr>
+  
+  <tr>
+    <td></td>
+    <td colspan="3">
+    [% IF group.size %]
+      <br>
+        <strong>
+          Only users in all of the selected groups can view this bug:
+        </strong>
+      <br>
+      <font size="-1">
+        (Leave all boxes unchecked to make this a public bug.)
+      </font>
+      <br>
+      <br>
+
+      <!-- Checkboxes -->
+      [% FOREACH g = group %]
+        &nbsp;&nbsp;&nbsp;&nbsp;
+        <input type="checkbox" name="bit-[% g.bit %]" value="1"
+          [% " checked=\"checked\"" IF g.checked %]>[% g.description FILTER html %]<br>
+      [% END %]
+      <br>
+    [% END %]
+    </td>
+  </tr>
+  
+  <tr>
+    <td></td>
+    <td colspan="3">
+      <input type="submit" value="    Commit    " 
+             onclick="if (this.form.short_desc.value == '') 
+             { alert('Please enter a summary sentence for this bug.'); 
+               return false; } return true;">
+      &nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="submit" name="maketemplate" 
+             value="Remember values as bookmarkable template">
+    </td>
+  </tr>
+
+[% IF Param('usebrowserinfo') %]
+  <tr>
+    <td></td>
+    <td colspan="3">
+      <br>
+      We've made a guess at your operating system and platform. 
+      Please check them and, if we got it wrong, email 
+      [% Param('maintainer') %].
+    </td>
+  </tr>
+[% END %]
+
+  </table>
+  <input type="hidden" name="form_name" value="enter_bug">
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+  [% IF sel.description %]
+  <td align="right">
+    <strong>
+      <a href="/bugzilla/bug_status.html#[% sel.name %]">[% sel.description %]</a>:
+    </strong>
+  </td>
+  [% END %]
+  
+  <td>
+    <select name="[% sel.name %]">
+    [%- FOREACH x = ${sel.name} %]
+      <option value="[% x FILTER html %]"
+        [% " selected=\"selected\"" IF x == default.${sel.name} %]>[% x FILTER html -%]
+      </option>
+    [%- END %]
+    </select>
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,30 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Bug $id Submitted"
+%]
+
+[% PROCESS bug/process/results.html.tmpl %]
+
+<br>
+
+[%# post_bug.cgi will add a copy of the filed bug below here %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/make-template.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/make-template.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/make-template.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,33 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Bookmarks are your friend"
+  h1 = "Template constructed"
+%]
+
+<p>
+If you bookmark <a href="enter_bug.cgi?[% url FILTER html %]">this link</a>,
+going to the bookmark will bring up the enter bug page with the fields
+initialized as you've requested.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/user-message.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/user-message.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/create/user-message.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,34 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Matthew Tuck <matty at chariot.net.au>
+  #%]
+
+[%# Migration note: this file corresponds to the old Param
+  # 'entryheaderhtml'
+  #%]
+
+[%# You can make the output of this template product-specific by using
+  # Template Toolkit IF statements.  The current product name is stored in
+  # the 'product' variable.
+  #%]
+
+Before reporting a bug, please read the <a href="/bugzilla/bugwritinghelp.html">
+bug writing guidelines</a>, please look at the list of
+<a href="duplicates.cgi">most frequently reported bugs</a>, and please
+<a href="query.cgi">search</a> for the bug.

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-graph.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-graph.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-graph.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,106 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. The number of the bug(s).
+  # multiple_bugs: boolean. True if bug_id contains > 1 bug number.
+  # doall: boolean. True if we are displaying every bug in the database.
+  # showsummary: boolean. True if we are showing bug summaries.
+  # rankdir: string. "TB" if we are ranking top-to-bottom, 
+                     "LR" if left-to-right.
+  # image_url: string. The URL of the graphic showing the dependencies.
+  # map_url: string. The URL of the map file for the image.  (Optional)
+  # image_map: string. The image map for the graphic showing the 
+                       dependencies. (Optional)
+  #%]
+
+[% title = "Dependency Graph"
+   h1 = title
+ %]
+ 
+[% IF NOT multiple_bugs AND NOT doall %]
+  [% title = "$title for bug $bug_id"
+     h1 = "$h1 for bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>" 
+   %]
+[% END %]
+
+[% PROCESS global/header.html.tmpl %]
+
+[% image_map %]
+
+<p>
+  Green circles represent open bugs.
+</p>
+
+[% IF image_map %]
+  <img src="[% image_url %]" usemap="#imagemap"> 
+[% ELSE %]
+  <a href="[% map_url %]">
+    <img src="[% image_url %]" ismap="ismap"> 
+  </a>
+[% END %]
+
+<hr>
+
+<form>
+  <table>
+    <tr>
+      <td>
+        Bug numbers:
+        <input name="id" value="[% bug_id %]">
+      </td>
+    </tr>
+    
+    <tr>
+      <td>
+        <input type="checkbox" name="doall" 
+        [% " checked" IF doall %]>
+        Show <b>every</b> bug in the system with dependencies
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="3">
+        <input type="checkbox" name="showsummary" 
+          [% " checked" IF showsummary %]>
+        Show the summaries of all displayed bugs
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="3">
+        <select name="rankdir">
+          <option value="TB"
+            [% " selected" IF rankdir == "TB" %]>
+            Orient top-to-bottom
+          </option>
+          <option value="LR"
+            [% " selected" IF rankdir == "LR" %]>
+            Orient left-to-right
+          </option>
+        </select>
+      </td>
+    </tr>
+  </table>
+  <input type="submit" value="Change Parameters">
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-tree.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-tree.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/dependency-tree.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,198 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  # 
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Tobias Burnus <burnus at net-b.de>
+  #                 Ville Skyttä <ville.skytta at iki.fi>
+  #                 Myk Melez <myk at mozilla.org>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+   title = "Dependency tree for Bug $bugid"
+   h1    = "Dependency tree for <a href=\"show_bug.cgi?id=$bugid\">bug $bugid</a>"
+   style = "strike { background-color: #d9d9d9; color: #000000; }"
+%]
+
+[% PROCESS depthControlToolbar %]
+
+[%# Display the tree of bugs that this bug depends on. %]
+<h3>[% hide_resolved ? "Open b" : "B" %]ugs that <a href="show_bug.cgi?id=[% bugid %]">bug [% bugid %]</a> depends on</h3>
+[% IF dependson_ids.size > 0 %]
+  (
+  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
+  <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]">view as bug list</a>
+  [% IF canedit && dependson_ids.size > 1 %]
+    | <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]&amp;tweak=1">change several</a>
+  [% END %])
+  [% INCLUDE display_tree tree=dependson_tree bug_id=bugid %]
+[% ELSE %]
+  </h3>
+  <p>None</p>
+[% END %]
+
+[%# Display the tree of bugs that this bug blocks. %]
+<h3>[% hide_resolved ? "Open b" : "B" %]ugs that <a href="show_bug.cgi?id=[% bugid %]">bug [% bugid %]</a> blocks</h3>
+[% IF blocked_ids.size > 0 %]
+  (
+  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
+  <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]">view as bug list</a>
+  [% IF canedit && blocked_ids.size > 1 %]
+    | <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]&amp;tweak=1">change several</a>
+  [% END %])
+  [% INCLUDE display_tree tree=blocked_tree bug_id=bugid %]
+[% ELSE %]
+  </h3>
+  <p>None</p>
+[% END %]
+
+[% PROCESS depthControlToolbar %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%###########################################################################%]
+[%# Block to display a tree                                                 #%]
+[%###########################################################################%]
+
+[% BLOCK display_tree %]
+[% tree.$bug_id.seen = 1 %]
+<ul>
+  [% FOREACH dep_id = tree.$bug_id.dependencies %]
+    [% dep = tree.$dep_id %]
+    <li>
+      [% "<strike>" IF !dep.open %]
+      <a href="show_bug.cgi?id=[% dep_id %]">[% dep_id %] 
+        [[% IF dep.milestone %][% dep.milestone FILTER html %], [% END %]
+        [% dep.assignee_email FILTER html %]] - 
+        [% IF dep.seen %]
+          <i>This bug appears elsewhere in this tree.</i></a>
+        [% ELSE %]
+          [% dep.summary FILTER html %].</a>
+        [% END %]
+      [% "</strike>" IF !dep.open %]
+      [% INCLUDE display_tree bug_id=dep_id 
+           IF dep.dependencies.size > 0 && !dep.seen %]
+    </li>
+  [% END %]
+</ul>
+[% END %]
+
+[%###########################################################################%]
+[%# Block for depth control toolbar                                         #%]
+[%###########################################################################%]
+
+[% BLOCK depthControlToolbar %]
+ <table cellpadding="3" border="0" cellspacing="0" bgcolor="#d0d0d0">
+ <tr>
+   [%# Hide/show resolved button
+       Swaps text depending on the state of hide_resolved %]
+   <td align="center">
+   <form method="get" action="showdependencytree.cgi" 
+           style="display: inline; margin: 0px;">
+     <input name="id" type="hidden" value="[% bugid %]">
+     [% IF maxdepth %]
+       <input name="maxdepth" type="hidden" value="[% maxdepth %]">
+     [% END %]
+     <input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]">
+     <input type="submit" value="[% hide_resolved ? "Show" : "Hide" %] Resolved">
+   </form>
+   </td>
+
+   <td>
+     Max Depth:
+   </td>
+
+   <td>
+     &nbsp;
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi"
+         style="display: inline; margin: 0px;">
+     [%# set to one form %]
+     <input type="submit" value="&nbsp;1&nbsp;" [% 
+         realdepth < 2 || maxdepth == 1 ? "disabled" : ""
+     %]>
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="maxdepth" type="hidden" value="1">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Minus one form  
+         Allow subtracting only when realdepth and maxdepth > 1 %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="maxdepth" type="hidden" value="[% 
+         maxdepth == 1 ? 1 
+                       : ( maxdepth ? maxdepth - 1 : realdepth - 1 )
+     %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;&lt;&nbsp;" [%
+        realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : "" 
+     %]>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Limit entry form: the button can not do anything when total depth
+         is less than two, so disable it %]
+     <input name="maxdepth" size="4" maxlength="4" value="[% 
+         maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""
+     %]">
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <noscript>
+       <input type="submit" value="Change" [% realdepth < 2 ? "disabled" : "" %]>
+     </noscript>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# plus one form 
+         Disable button if total depth < 2, or if depth set to unlimited %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     [% IF maxdepth %]
+       <input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]">
+     [% END %]
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;&gt;&nbsp;" [% 
+            realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
+            "disabled" : ""
+     %]>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Unlimited button %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;Unlimited&nbsp;" 
+       [% maxdepth == 0 || maxdepth == realdepth ? "disabled" : "" %]>
+   </form>
+   </td>
+ </tr>
+</table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,540 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% filtered_desc = bug.short_desc FILTER html %]
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl 
+    title = "Bug $bug.bug_id - $filtered_desc"
+    h1 = "Bugzilla Bug $bug.bug_id"
+    h2 = filtered_desc
+    header_html = navigation_links
+   %]
+[% END %]
+
+[% PROCESS bug/navigate.html.tmpl %]
+
+<hr>
+
+<form name="changeform" method="post" action="process_bug.cgi">
+
+  <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]">
+  <input type="hidden" name="longdesclength" value="[% bug.longdesclength %]">
+  <input type="hidden" name="id" value="[% bug.bug_id %]">
+
+[%# *** Platform Reporter Product OS AddCC *** %]
+
+  <table cellspacing="1" cellpadding="1" border="0">
+    <tr>      
+      <td align="right">
+        <b>Bug#:</b>
+      </td>
+      <td>
+        <a href="[% Param('urlbase') %]show_bug.cgi?id=[% bug.bug_id %]">
+          [% bug.bug_id %]</a>
+      </td>
+      
+      <td>&nbsp;</td>
+
+      <td align="right">
+        <b>Platform:</b>
+      </td>
+      [% PROCESS select selname = "rep_platform" %]
+      
+      <td align="right">
+        <b>Reporter:</b>
+      </td>
+      <td>
+        [% bug.reporter FILTER html %]
+      </td>    
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>Product:</b>
+      </td>
+      [% PROCESS select selname => "product" %]
+      
+      <td align="right">
+        <b>OS:</b>
+      </td>
+      [% PROCESS select selname => "op_sys" %]
+
+      <td align="right">
+        <b>Add&nbsp;CC:</b>
+      </td>
+      <td>
+        <input name="newcc" size="30" value="">
+      </td>
+    </tr>
+
+[%# *** Component Version CC Priority Severity AssignedTo Milestone *** %]    
+
+    <tr>
+      <td align="right">
+        <b>
+          <a href="describecomponents.cgi?product=[% bug.product FILTER url_quote %]">
+            Component</a>:
+        </b>
+      </td>
+      <td>
+        <select name="component">
+          [% FOREACH x = component_ %]
+            <option value="[% x FILTER html %]"
+              [% " selected" IF x == bug.component %]>[% x FILTER html %]
+            </option>
+          [% END %]
+        </select>
+      </td>
+
+      <td>&nbsp;</td>
+ 
+      <td align="right">
+        <b>Version:</b>
+      </td>
+      [% PROCESS select selname => "version"  %]
+      
+      <td rowspan="4" align="right" valign="top">
+        <b>CC:</b>
+      </td>
+      <td rowspan="4" valign="top"> 
+      [% IF bug.cc %]
+        <select name="cc" multiple="multiple" size="5">
+        [% FOREACH c = bug.cc %]
+          <option value="[% c FILTER html %]">[% c FILTER html %]</option>
+        [% END %]
+        </select>
+        <br>
+        <input type="checkbox" name="removecc">Remove selected CCs
+        <br>
+      [% ELSE %]
+        <input type="hidden" name="cc" value="">
+      [% END %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html">Status</a>:
+        </b>
+      </td>
+      <td>[% bug.bug_status FILTER html %]</td>      
+      <td>&nbsp;</td>
+      
+      <td align="right">
+        <b><a href="/bugzilla/bug_status.html#priority">Priority</a>:</b>
+      </td>
+      [% PROCESS select selname => "priority" %]
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html">Resolution</a>:
+        </b>
+      </td>
+      <td>[% bug.resolution FILTER html %]</td>      
+      <td>&nbsp;</td>
+      
+      <td align="right">
+        <b><a href="/bugzilla/bug_status.html#severity">Severity</a>:</b>
+      </td>
+      [% PROCESS select selname = "bug_severity" %]
+      
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html#assigned_to">Assigned&nbsp;To</a>:
+        </b>
+      </td>
+      <td>[% bug.assigned_to FILTER html %]</td>
+      <td>&nbsp;</td>
+ 
+      [% IF Param("usetargetmilestone") && bug.target_milestone %]
+        <td align="right">
+          <b>
+            <a href="[% bug.milestoneurl FILTER html %]">Target Milestone</a>:
+          </b>
+        </td>
+        [% PROCESS select selname = "target_milestone" %]
+      [% ELSE %]
+        <td colspan="3">&nbsp;</td>
+      [% END %]
+    </tr>
+
+[%# *** QAContact URL Summary Whiteboard Keywords *** %]
+
+   [% IF Param('useqacontact') %]
+     <tr>
+       <td align="right">
+       <b>QA Contact:</b>
+       </td>
+       <td colspan="7">
+         <input name="qa_contact" 
+                value="[% bug.qa_contact FILTER html %]" size="60">
+       </td>
+     </tr>
+   [% END %]
+
+  <tr>
+    <td align="right">
+      <b>
+        [% IF bug.bug_file_loc %]
+          <a href="[% bug.bug_file_loc FILTER html %]">URL</a>:
+        [% ELSE %]
+          URL:
+        [% END %]
+      </b>
+    </td>
+    <td colspan="7">
+      <input name="bug_file_loc" 
+             value="[% bug.bug_file_loc FILTER html %]" size="60">
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right">
+      <b>Summary:</b>
+    </td>
+    <td colspan="7">
+      <input name="short_desc" 
+             value="[% bug.short_desc FILTER html %]" size="60">
+    </td>
+  </tr>
+
+  [% IF Param('usestatuswhiteboard') %] 
+    <tr>
+      <td align="right">
+        <b>Status Whiteboard:</b>
+      </td>
+      <td colspan="7">
+        <input name="status_whiteboard" 
+               value="[% bug.status_whiteboard FILTER html %]" size="60">
+      </td>
+    </tr>
+  [% END %]
+
+  [% IF use_keywords %]
+    <tr>
+      <td align="right">
+        <b>
+          <a href="describekeywords.cgi">Keywords</a>:
+        </b>
+      <td colspan="7">
+        <input name="keywords" 
+               value="[% bug.keywords.join(', ') FILTER html %]" size="60">
+      </td>
+    </tr> 
+  [% END %]
+  </table>
+  
+[%# *** Attachments *** %]
+
+  [% PROCESS attachment/list.html.tmpl 
+     attachments = bug.attachments 
+     bugid = bug.bug_id %]
+
+[%# *** Dependencies Votes *** %]
+
+  [% IF Param('usedependencies') %]
+  <table>
+    <tr>
+    [% PROCESS dependencies 
+       dep = { title => "depends on", fieldname => "dependson" } %]
+      <td rowspan="2">
+        <a href="showdependencytree.cgi?id=[% bug.bug_id %]">Show 
+        dependency tree</a>  
+
+        [% IF Param('webdotbase') %]  
+          <br>
+          <a href="showdependencygraph.cgi?id=[% bug.bug_id %]">Show 
+          dependency graph</a>
+        [% END %]
+      </td>
+    </tr>
+
+    <tr>
+    [% PROCESS dependencies 
+       dep = { title => "blocks", fieldname => "blocked" } %]
+    </tr>
+  </table>
+  [% END %]
+
+  [% IF use_votes %]
+  <table>
+    <tr>
+      <th>
+        <a href="/bugzilla/votehelp.html">Votes</a>:
+      </th>
+      <td>
+        [% bug.votes %]&nbsp;&nbsp;&nbsp;
+        <a href="votes.cgi?action=show_bug&amp;bug_id=[% bug.bug_id %]">Show 
+        votes for this bug</a>&nbsp;&nbsp;&nbsp;
+        <a href="votes.cgi?action=show_user&amp;bug_id=[% bug.bug_id %]">Vote 
+        for this bug</a>
+      </td>
+    </tr>
+  </table>
+  [% END %]
+
+[%# *** Comments Groups *** %]
+
+  <br>
+  <b>Additional Comments:</b>
+  <br>
+  <textarea wrap="hard" name="comment" rows="10" cols="80"
+            accesskey="c"></textarea>
+  <br>
+
+  [% IF groups.size > 0 %]
+    <br>
+    <b>Only users in all of the selected groups can view this bug:</b>
+    <br>
+    <font size="-1">(Unchecking all boxes makes this a public bug.)</font>
+    <br>
+    <br>
+
+    [% FOREACH group = groups %]
+      &nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="checkbox" name="bit-[% group.bit %]" value="1" 
+        [% " checked=\"checked\"" IF group.ison %]
+        [% " disabled=\"disabled\"" IF NOT group.ingroup %]>
+      [% group.description FILTER html %]
+      <br>
+    [% END %]
+
+    [% IF NOT user.inallgroups %]
+      <b>
+        Only members of a group can change the visibility of a bug for 
+        that group
+      </b>
+    <br>
+    [% END %]
+
+    [% IF bug.inagroup %]
+      <p>
+        <b>But users in the roles selected below can always view this bug:</b>
+        <br>
+        <small>
+          (The assignee                                                
+          [% IF (Param('useqacontact')) %]
+             and QA contact
+          [% END %]
+          can always see a bug, and this section does not take effect unless 
+          the bug is restricted to at least one group.)
+        </small>
+      </p>
+
+      <p>
+        <input type="checkbox" name="reporter_accessible" value="1"
+          [% " checked" IF bug.reporter_accessible %]>Reporter
+        <input type="checkbox" name="cclist_accessible" value="1"
+          [% " checked" IF bug.cclist_accessible %]>CC List
+      </p>  
+    [% END %]
+  [% END %]
+
+[%# *** Knob *** %]
+
+  <br>
+  <input type="radio" name="knob" value="none" checked="checked">
+  Leave as <b>[% bug.bug_status FILTER html %]&nbsp;
+              [% bug.resolution FILTER html %]</b>
+  <br>
+
+  [% knum = 1 %]
+
+  [% IF bug.bug_status == "UNCONFIRMED" && 
+        user.canconfirm %]
+    <input type="radio" name="knob" value="confirm">
+    Confirm bug (change status to <b>NEW</b>)
+    <br>
+    [% knum = knum + 1 %]
+  [% END %]
+
+  [% IF user.canedit %]
+    [% IF bug.isopened %]
+      [% IF bug.bug_status != "ASSIGNED" && user.canconfirm %]
+        <input type="radio" name="knob" value="accept">
+        Accept bug (
+        [% "confirm bug, " IF bug.isunconfirmed %]change
+        status to <b>ASSIGNED</b>)
+        <br>
+        [% knum = knum + 1 %]
+      [% END %]
+
+      [% IF bug.resolution %]
+        <input type="radio" name="knob" value="clearresolution">
+        Clear the resolution (remove the current resolution of
+        <b>[% bug.resolution FILTER html %]</b>)<br>      
+        [% knum = knum + 1 %]
+      [% END %]
+
+      <input type="radio" name="knob" value="resolve">
+      Resolve bug, changing <a href="/bugzilla/bug_status.html">resolution</a> to
+      <select name="resolution" 
+              onchange="document.changeform.knob[[% knum %]].checked=true">
+      [% FOREACH r = resolution %]
+        <option value="[% r FILTER html %]">[% r FILTER html %]</option>
+      [% END %]
+      </select>
+      <br>
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="duplicate">
+      Resolve bug, mark it as duplicate of bug # 
+      <input name="dup_id" size="6" 
+             onchange="if (this.value != '')
+                       {document.changeform.knob[[% knum %]].checked=true}">
+      <br>
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="reassign"> 
+      <a href="/bugzilla/bug_status.html#assigned_to">Reassign</a> bug to
+      <input name="assigned_to" size="32" 
+             onchange="if ((this.value != '[% bug.assigned_to_email FILTER js FILTER html %]') && 
+                            (this.value != '')) {
+                         document.changeform.knob[[% knum %]].checked=true; 
+                       }"  
+             value="[% bug.assigned_to_email FILTER html %]">
+      <br>
+      [% IF bug.isunconfirmed && user.canconfirm %]
+        &nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="andconfirm">
+        and confirm bug (change status to <b>NEW</b>)
+        <br>
+      [% END %]
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="reassignbycomponent">
+      Reassign bug to owner
+      [% "and QA contact" IF useqacontact %]
+      of selected component
+      <br>
+      [% IF bug.isunconfirmed && user.canconfirm %]
+        &nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="compconfirm">
+        and confirm bug (change status to <b>NEW</b>)
+        <br>
+      [% END %]
+      [% knum = knum + 1 %]
+    [% ELSE %]
+      [% IF bug.resolution != "MOVED" ||
+           (bug.resolution == "MOVED" && user.canmove) %]  
+        <input type="radio" name="knob" value="reopen"> Reopen bug
+        <br>
+        [% knum = knum + 1 %]
+      [% END %]
+      [% IF bug.bug_status == "RESOLVED" %]
+        <input type="radio" name="knob" value="verify">
+        Mark bug as <b>VERIFIED</b><br>
+        [% knum = knum + 1 %]
+      [% END %]
+      [% IF bug.bug_status != "CLOSED" %]
+        <input type="radio" name="knob" value="close">
+        Mark bug as <b>CLOSED</b><br>
+        [% knum = knum + 1 %]
+      [% END %]
+    [% END %]
+  [% END %]  
+  
+  <input type="submit" value="Commit">
+  <input type="hidden" name="form_name" value="process_bug">
+  <p>
+    <font size="+1">
+      <b>
+        <a href="show_activity.cgi?id=[% bug.bug_id %]">View Bug Activity</a>
+        &nbsp; | &nbsp;
+        <a href="long_list.cgi?buglist=[% bug.bug_id %]">Format For Printing</a>
+      </b>
+    </font>
+
+    [% IF user.canmove %]
+      &nbsp; <font size="+1"><b> | </b></font> &nbsp;
+      <input type="submit" name="action" 
+             value="[% Param("move-button-text") %]">
+    [% END %]
+  </p>  
+</form>
+
+[%# *** Additional Comments *** %]
+
+<table>
+  <tr>
+    <td align="left">
+      <b>
+        <a name="c0" href="#c0">Description</a>:
+      </b>
+    </td>
+    <td align="right" width="100%">
+      Opened: [% bug.creation_ts %]
+    </td>
+  </tr>
+</table>
+<hr>
+
+[% PROCESS bug/comments.html.tmpl 
+   comments = bug.comments 
+ %]
+  
+<hr>
+
+[% PROCESS bug/navigate.html.tmpl %]
+
+<br>
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%############################################################################%]
+[%# Block for dependencies                                                   #%]
+[%############################################################################%]
+
+[% BLOCK dependencies %]
+  <th align="right">Bug [% bug.bug_id %] [%+ dep.title %]:</th>
+  <td>
+  [% FOREACH depbug = bug.${dep.fieldname} %]
+    [% GetBugLink(depbug, depbug) %][% " " %]
+  [% END %]
+  </td>
+  <td>
+    <input name="[% dep.fieldname %]" 
+           value="[% bug.${dep.fieldname}.join(', ') %]">
+  </td>
+[% END %]
+
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]  
+  <td>
+    <select name="[% selname %]">
+      [% FOREACH x = ${selname} %]
+        <option value="[% x FILTER html %]"
+          [% " selected" IF x == bug.${selname} %]>[% x FILTER html %]
+        </option>
+      [% END %]
+    </select>
+  </td>
+  <td>&nbsp;</td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/navigate.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/navigate.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/navigate.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,54 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+  
+[% IF bug_list && bug_list.size > 0 %]
+  [% this_bug_idx = lsearch(bug_list, bug.bug_id) %]
+  <b>Bug List:</b>
+  [% IF this_bug_idx != -1 %]
+    ([% this_bug_idx + 1 %] of [% bug_list.size %])
+  [% END %]
+  
+  <a href="show_bug.cgi?id=[% bug_list.first %]">First</a>
+  <a href="show_bug.cgi?id=[% bug_list.last %]">Last</a>
+
+  [% IF this_bug_idx != -1 %]
+    [% IF this_bug_idx > 0 %]
+      [% prev_bug = this_bug_idx - 1 %]
+      <a href="show_bug.cgi?id=[% bug_list.$prev_bug %]">Prev</a>
+    [% ELSE %]
+      <i><font color="#777777">Prev</font></i>
+    [% END %]
+
+    [% IF this_bug_idx + 1 < bug_list.size %]
+      [% next_bug = this_bug_idx + 1 %]
+      <a href="show_bug.cgi?id=[% bug_list.$next_bug %]">Next</a>
+    [% ELSE %]
+      <i><font color="#777777">Next</font></i>
+    [% END %]
+  [% ELSE %]
+    (This bug is not in your list)
+  [% END %]
+  
+  &nbsp;&nbsp;<a href="buglist.cgi?regetlastlist=1">Show list</a>
+[% END %]
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="query.cgi">Query page</a>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="enter_bug.cgi">Enter new bug</a>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/confirm-duplicate.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/confirm-duplicate.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/confirm-duplicate.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,74 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # original_bug_id: number; the bug number for the bug
+  #   against which a bug is being duped
+  # duplicate_bug_id: number; the bug number for the bug
+  #   being duped
+  # cclist_accessible: boolean; whether or not users on the cc: list 
+  #   of the original bug can access that bug.
+  #%]
+ 
+[% PROCESS global/header.html.tmpl title="Duplicate Warning" %]
+    
+<p>
+  When marking a bug as a duplicate, the reporter of the duplicate 
+  is normally added to the CC list of the original. The permissions 
+  on bug [% original_bug_id %] (the original) are currently set 
+  such that the reporter would not normally be able to see it.
+</p>
+
+<p>
+  <b>Adding the reporter to the CC list of bug [% original_bug_id %] 
+  [% IF cclist_accessible %]
+    will immediately
+  [% ELSE %]
+    might, in the future,
+  [% END %]
+  allow him/her access to view this bug.</b>
+  Do you wish to do this?
+</p>
+    
+<form method="post">
+
+[% PROCESS "global/hidden-fields.html.tmpl" exclude="^(Bugzilla|LDAP)_(login|password)$" %]
+
+<p>
+  <input type="radio" name="confirm_add_duplicate" value="1"> 
+    Yes, add the reporter to CC list on bug [% original_bug_id %]
+</p>
+<p>
+  <input type="radio" name="confirm_add_duplicate" value="0" checked="checked"> 
+    No, do not add the reporter to CC list on bug [% original_bug_id %]
+</p>
+<p>
+  <a href="show_bug.cgi?id=[% duplicate_bug_id %]">Throw away my changes, 
+    and revisit bug [% duplicate_bug_id %]</a>
+<p>
+  <input type="submit" value="Submit">
+</p>
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/midair.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/midair.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/midair.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,76 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # operations: array; bug activity since the user last displayed the bug form,
+  #   used by bug/activity/table.html.tmpl to display recent changes that will
+  #   be overwritten if the user submits these changes.  See that template
+  #   for further documentation.
+  # start_at: number; the comment at which show/comments.tmpl should begin
+  #   displaying comments, either the index of the last comment (if the user
+  #   entered a comment along with their change) or a number less than that
+  #   (if they didn't), in which case no comments are displayed.
+  # comments: array; all the comments on the bug.
+  # bug_id: number; the ID of the bug being changed.
+  #%]
+ 
+<h1>Mid-air collision detected!</h1>
+
+<p>
+  Someone else has made changes to this bug at the same time you were trying to.
+  The changes made were:
+</p>
+
+<p>
+  [% PROCESS "bug/activity/table.html.tmpl" incomplete_data=0 %]
+</p>
+          
+[% IF comments.size > start_at %]
+<p>
+  Added comments:
+  <blockquote>
+    [% PROCESS "bug/comments.html.tmpl" %]
+  </blockquote>
+</p>
+[% END %]
+
+<p>
+You have the following choices:
+</p>
+
+<ul>
+  <li>
+    <form method="post">
+      [% PROCESS "global/hidden-fields.html.tmpl" exclude="^(Bugzilla|LDAP)_(login|password)$" %]
+      <input type="submit" value="Submit my changes anyway">
+        This will cause all of the above changes to be overwritten
+        [% ", except for the added comment(s)" IF comments.size > start_at %].
+    </form>
+  </li>
+  <li>
+    <a href="show_bug.cgi?id=[% bug_id %]">Throw away my changes, 
+      and revisit bug [% bug_id %]</a>
+  </li>
+</ul>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/next.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/next.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/next.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,32 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # next_id : number; the ID of the next bug in the user's bug list.
+  #%]
+
+<hr>
+
+<p>
+  The next bug in your list is bug
+  <a href="show_bug.cgi?id=[% next_id %]">[% next_id %]</a>:
+</p>
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/results.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/results.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/results.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,52 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # id: number; the ID of the bug that was changed/checked.
+  #
+  # type: string; the type of change/check that was made: "bug" when a bug
+  #   is changed, "dupe" when a duplication notation is added to a bug,
+  #   and "dep" when a bug is checked for changes to its dependencies.
+  #%]
+
+[% DEFAULT type="bug" %]
+
+[% 
+  title = {
+    'bug' => "Changes submitted for bug $id" , 
+    'dupe' => "Duplicate notation added to bug $id" , 
+    'dep' => "Checking for dependency changes on bug $id" , 
+    'votes' => "Bug $id confirmed by number of votes" , 
+    'created' => "Bug $id has been added to the database" , 
+  } 
+%]
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>[% title.$type %]</h2>
+      [% mail FILTER html %]
+    </td>
+    <td>
+      <a href="show_bug.cgi?id=[% id %]">Back To BUG# [% id %]</a>
+    </td>
+  </tr>
+</table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/verify-new-product.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/verify-new-product.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/process/verify-new-product.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,102 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # verify_fields: boolean; whether or not to verify 
+  #   the version, component, and target milestone fields
+  # versions: array; versions for the new product.
+  # components: array; components for the new product.
+  # milestones: array; milestones for the new product.
+  # defaults: hash; keys are names of fields, values are defaults for
+  #   those fields
+  # verify_bug_group: boolean; whether or not to ask the user
+  #   if they want to add the bug to its new product's group
+  # use_target_milestone: boolean; whether or not to use 
+  #   the target milestone field
+  #%]
+ 
+<form action="process_bug.cgi" method="post">
+
+[% PROCESS "global/hidden-fields.html.tmpl" 
+     exclude=(verify_fields ? "^version|component|target_milestone$" : "") %]
+
+[%# Verify the version, component, and target milestone fields. %]
+[% IF verify_fields %]
+  <h3>Verify Version, Component[% ", Target Milestone" IF use_target_milestone %]</h3>
+
+  <p>
+  [% IF use_target_milestone %]
+    You are moving the bug(s) to the product <b>[% form.product FILTER html %]</b>, 
+    and the version, component, and/or target milestone fields are no longer
+    correct.  Please set the correct version, component, and target milestone now:
+  [% ELSE %]
+    You are moving the bug(s) to the product <b>[% form.product FILTER html %]</b>, 
+    and the version and component fields are no longer correct.  
+    Please set the correct version and component now:
+  [% END %]
+  <p>
+
+  <table>
+    <tr>
+      <td>
+        <b>Version:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="version" options=versions default=defaults.version %]
+      </td>
+      <td>
+        <b>Component:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="component" options=components default=defaults.component %]
+      </td>
+      [% IF use_target_milestone %]
+        <td>
+          <b>Target Milestone:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="target_milestone" options=milestones default=defaults.target_milestone %]
+        </td>
+      [% END %]
+    </tr>
+  </table>
+
+[% END %]
+       
+[% IF verify_bug_group %]
+  <h3>Verify Bug Group</h3>
+
+  <p>
+    Do you want to add the bug to its new product's group (if any)?
+  </p>
+
+  <p>
+    <input type="radio" name="addtonewgroup" value="no"><b>no</b><br>
+    <input type="radio" name="addtonewgroup" value="yes"><b>yes</b><br>
+    <input type="radio" name="addtonewgroup" value="yesifinold" checked="checked">
+      <b>yes, but only if the bug was in its old product's group</b><br>
+  </p>
+[% END %]
+
+<input type="submit" value="Commit">
+
+</form>
+<hr>
+<a href="query.cgi">Cancel and Return to the Query Page</a>
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/show-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/show-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/show-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,157 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Terry Weissman <terry at mozilla.org>
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Full Text Bug Listing"
+%]
+
+[% IF bugs.first %]
+  [% FOREACH bug = bugs %]
+    [% PROCESS bug_display %]
+  [% END %]
+[% ELSE %]
+  <p>
+    You'd have more luck if you gave me some bug numbers.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%###########################################################################%]
+[%# Block for an individual bug                                             #%]
+[%###########################################################################%]
+
+[% BLOCK bug_display %]
+  <img src="/bugzilla/1x1.gif" width="1" height="80" align="left">
+  <div align="center">
+    <b>
+      <font ="+3">Bug [% bug.bug_id %] - [% bug.short_desc FILTER html %]</font>
+    </b>
+  </div>
+
+  <table width="100%">
+    <tr>
+      <td>
+        <b>Bug#:</b>
+        <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>
+      </td>
+      [% PROCESS cell attr = { description => "Product", 
+                               name => "product" } %]
+      [% PROCESS cell attr = { description => "Version", 
+                               name => "version" } %]
+      [% PROCESS cell attr = { description => "Platform", 
+                               name => "rep_platform" } %]
+    </tr>
+    
+    <tr>
+      [% PROCESS cell attr = { description => "OS/Version", 
+                               name => "op_sys" } %]
+      [% PROCESS cell attr = { description => "Status", 
+                               name => "bug_status" } %]
+      [% PROCESS cell attr = { description => "Severity", 
+                               name => "bug_severity" } %]
+      [% PROCESS cell attr = { description => "Priority", 
+                               name => "priority" } %]
+    </tr>
+    
+    <tr>
+      [% PROCESS cell attr = { description => "Resolution", 
+                               name => "resolution" } %]
+      [% PROCESS cell attr = { description => "Assigned To", 
+                               name => "assigned_to" } %]
+      [% PROCESS cell attr = { description => "Reported By", 
+                               name => "reporter" } %]
+      [% IF Param('useqacontact') %]
+        [% PROCESS cell attr = { description => "QA Contact", 
+                                 name => "qa_contact" } %]
+      [% END %]
+    </tr>
+    
+    <tr>
+      <td colspan="2">
+        <b>Component:</b>&nbsp;
+        [% bug.component %]
+      </td>
+    
+      <td colspan="2">
+      [% IF Param('usetargetmilestone') %]
+          <b>Target Milestone:</b>&nbsp;
+          [% bug.target_milestone FILTER html %]
+      [% END %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="4">
+        <b>URL:</b>&nbsp;
+        <a href="[% bug.bug_file_loc FILTER html %]">
+                 [% bug.bug_file_loc FILTER html %]</a> 
+    </tr>
+    
+    <tr>
+      <td colspan="4">
+        <b>Summary:</b>&nbsp;[% bug.short_desc FILTER html %]
+      </td>
+    </tr>
+     
+    [% IF use_keywords %]
+      <tr>
+        <td colspan="4">
+          <b>Keywords: </b>&nbsp;[% bug.keywords FILTER html %]
+        </td>
+      </tr>
+    [% END %]
+
+    [% IF Param("usestatuswhiteboard") %]
+      <tr>
+        <td colspan="4">
+          <b>Status Whiteboard:</b>&nbsp;
+          [% bug.status_whiteboard FILTER html %]
+        </td>
+      </tr>
+    [% END %]
+
+    <tr>
+      <td colspan="4">
+        <b>Description:</b>
+      </td>
+    </tr>
+  </table>
+
+  [% PROCESS bug/comments.html.tmpl 
+     comments = bug.comments %]
+  
+  <hr>
+[% END %]
+
+
+[%###########################################################################%]
+[%# Block for standard table cells                                          #%]
+[%###########################################################################%]
+
+[% BLOCK cell %]
+  <td>
+    <b>[% attr.description%]:</b>&nbsp;
+    [% bug.${attr.name} FILTER html %]
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/delete-all.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/delete-all.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/delete-all.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,50 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl
+           title = "Remove your votes?"
+ %]
+
+<p>
+  You are about to remove all of your bug votes. Are you sure you wish to 
+  remove your vote from every bug you've voted on?
+</p>
+
+<form action="votes.cgi" method="post">
+    <input type="hidden" name="action" value="vote">
+  <p>
+    <input type="radio" name="delete_all_votes" value="1">
+    Yes, delete all my votes
+  </p>
+  <p>
+    <input type="radio" name="delete_all_votes" value="0" checked="checked">
+    No, go back and review my votes
+  </p>
+  <p>
+    <input type="submit" value="Submit">
+  </p>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-bug.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-bug.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-bug.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,57 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. ID of the bug we are listing the votes for.
+  # users: list of hashes. May be empty. Each hash has two members:
+  #   name: string. The login name of the user whose vote is attached
+  #   count: integer. The number of times that user has votes for this bug.
+  # total: integer. The total number of votes for this bug. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl
+           title = "Show Votes"
+           h2 = "Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>"
+ %]
+ 
+<table cellspacing="4">
+  <tr>
+    <th>Who</th>
+    <th>Number of votes</th>
+  </tr>
+
+  [% FOREACH voter = users %]
+    <tr>
+      <td>
+        <a href="votes.cgi?action=show_user&amp;user=[% voter.name FILTER url_quote %]">
+          [% voter.name FILTER html %]
+        </a>
+      </td>
+      <td align="right">
+        [% voter.count %]
+      </td>
+    </tr>
+  [% END %]
+</table>
+
+<p>Total votes: [% total %]</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-user.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-user.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/bug/votes/list-for-user.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,132 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+           title = "Show Votes"
+           h2 = voting_user.name
+ %]
+
+[% canedit = 1 IF voting_user.login == user.login %]
+
+[% IF votes_recorded %]
+  <p>
+    <font color="red">
+      The changes to your votes have been saved.
+    </font>
+  </p>
+[% ELSE %]
+  <br>
+[% END %]
+
+[% IF products.size %]
+  <form action="votes.cgi">
+    <input type="hidden" name="action" value="vote">
+    <table cellspacing="4">
+      <tr>
+        <td></td>
+        <th>Bug #</th>
+        <th>Summary</th>
+        <th>Votes</th>
+      </tr>
+
+      [% FOREACH product = products %]
+        <tr>
+          <th>[% product.name FILTER html %]</th>
+          <td></td>
+          [% IF product.maxperbug < product.maxvotes AND
+                product.maxperbug > 1 %]
+            <td>
+              <font size="-1">
+                (Note: only [% product.maxperbug %] vote
+                [% "s" IF product.maxperbug != 1 %] allowed per bug in 
+                this product.)
+              </font>
+            </td>
+          [% END %]
+        </tr>
+
+        [% FOREACH bug = product.bugs %]
+          <tr>
+            <td></td>
+            <td>
+              [% "<strike>" IF NOT bug.opened %]
+                <a href="show_bug.cgi?id=[% bug.id %]">
+                  [% bug.id %]</a>
+              [% "</strike>" IF NOT bug.opened %]
+            </td>
+            <td>
+              <a href="votes.cgi?action=show_bug&amp;bug_id=[% bug.id %]">
+                [% bug.summary FILTER html %]
+              </a>
+            </td>
+            <td align="right">
+              [% IF canedit %]
+                [% IF product.onevoteonly %]
+                  <input type="checkbox" name="[% bug.id %]" value="1"
+                    [% " checked" IF bug.count %]>
+                [% ELSE %]
+                  <input name="[% bug.id %]" value="[% bug.count %]" 
+                         size="2">
+                [% END %]
+              [% ELSE %]
+                [% bug.count %]
+              [% END %]
+            </td>
+          </tr>
+        [% END %]
+
+        <tr>
+          <td></td>
+          <td colspan="3">[% product.total %] vote
+            [% "s" IF product.total != 1 %] used out of [% product.maxvotes %]
+            allowed.
+            <br>
+            <br>
+          </td>
+        </tr>
+      [% END %]
+    </table>
+
+    [% IF canedit %]
+      <input type="submit" value="Change My Votes">
+      <br>
+      <br>
+      To change your votes, type in new numbers (using zero to
+      mean no votes) or change the checkbox, and then click 
+      <b>Change My Votes</b>.
+    [% END %]  
+  </form>
+[% ELSE %]
+  <p>
+    [% IF canedit %]
+    You are
+    [% ELSE %]
+    This user is
+    [% END %]
+    currently not voting on any bugs.
+  </p>
+[% END %]
+
+<p>
+  <a href="/bugzilla/votehelp.html">Help with voting</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/filterexceptions.pl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/filterexceptions.pl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/filterexceptions.pl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,377 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code are the Bugzilla tests.
+#
+# The Initial Developer of the Original Code is Jacob Steenhagen.
+# Portions created by Jacob Steenhagen are
+# Copyright (C) 2001 Jacob Steenhagen. All
+# Rights Reserved.
+#
+# Contributor(s): Gervase Markham <gerv at gerv.net>
+
+# Important! The following classes of directives are excluded in the test,
+# and so do not need to be added here. Doing so will cause warnings.
+# See 008filter.t for more details.
+#
+# Comments                        - [%#...
+# Directives                      - [% IF|ELSE|UNLESS|FOREACH...
+# Assignments                     - [% foo = ...
+# Simple literals                 - [% " selected" ...
+# Values always used for numbers  - [% (i|j|k|n|count) %]
+# Params                          - [% Param(...
+# Safe functions                  - [% (time2str|GetBugLink)...
+# Safe vmethods                   - [% foo.size %]
+# TT loop variables               - [% loop.count %]
+# Already-filtered stuff          - [% wibble FILTER html %]
+#   where the filter is one of html|csv|js|url_quote|quoteUrls|time|uri|xml
+
+# Key:
+#
+# "#": directive should be filtered, but not doing so is not a security hole
+# The plan is to come back and add filtering for all those marked "#" after
+# the security release.
+#
+# "# Email": as above; but noting that it's an email address.
+# Other sorts of comments denote cleanups noticed while doing this work;
+# they should be fixed in the very short term.
+
+%::safe = (
+
+'sidebar.xul.tmpl' => [
+  'template_version', 
+],
+
+'search/boolean-charts.html.tmpl' => [
+  '"field${chartnum}-${rownum}-${colnum}"',
+  '"value${chartnum}-${rownum}-${colnum}"',
+  '"type${chartnum}-${rownum}-${colnum}"',
+  'field.name',
+  'field.description',
+  'type.name',
+  'type.description',
+  '"${chartnum}-${rownum}-${newor}"',
+  '"${chartnum}-${newand}-0"',
+  'newchart',
+  '$jsmagic', #
+],
+
+'search/form.html.tmpl' => [
+  'qv.value',
+  'qv.name',
+  'qv.description',
+  'field.name',
+  'field.description',
+  'sel.name',
+  'button_name', #
+],
+
+'search/knob.html.tmpl' => [
+  'button_name', #
+],
+
+'reports/components.html.tmpl' => [
+  'numcols',
+  'numcols - 1',
+],
+
+'reports/duplicates-simple.html.tmpl' => [
+],
+
+'reports/duplicates-table.html.tmpl' => [
+  '"&maxrows=$maxrows" IF maxrows',
+  '"&changedsince=$changedsince" IF changedsince',
+  '"&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible',
+  'column.name',
+  'column.description',
+  'vis_bug_ids.push(bug.id)',
+  'bug.id',
+  'bug.count',
+  'bug.delta',
+],
+
+'reports/duplicates.html.tmpl' => [
+  'bug_ids_string',
+  'maxrows',
+  'changedsince',
+  'reverse',
+],
+
+'reports/keywords.html.tmpl' => [
+  'keyword.bugcount',
+],
+
+'list/change-columns.html.tmpl' => [
+  'column',
+],
+
+'list/edit-multiple.html.tmpl' => [
+  'group.bit',
+  'knum',
+  'menuname',
+  'selected IF resolution == "FIXED"', #
+],
+
+'list/list-rdf.rdf.tmpl' => [
+  'template_version',
+  'bug.id',
+  'column',
+],
+
+'list/list-simple.html.tmpl' => [
+],
+
+'list/list.html.tmpl' => [
+  'buglist',
+],
+
+'list/table.html.tmpl' => [
+  'id',
+  'splitheader ? 2 : 1',
+  'abbrev.$id.title || column.title', #
+  'tableheader',
+  'bug.id',
+],
+
+'global/choose-product.html.tmpl' => [
+  'target',
+],
+
+'global/code-error.html.tmpl' => [
+  'error',
+],
+
+'global/footer.html.tmpl' => [
+  'CALL SyncAnyPendingShadowChanges() IF SyncAnyPendingShadowChanges',
+],
+
+'global/header.html.tmpl' => [
+  'header_html',
+  'javascript',
+  'style',
+  'style_url',
+  'bgcolor',
+  'onload',
+  'title',
+  'h1',
+  'h2',
+  'message',
+],
+
+'global/hidden-fields.html.tmpl' => [
+  'mvalue | html | html_linebreak', # Need to eliminate | usage
+  'field.value | html | html_linebreak',
+],
+
+'global/select-menu.html.tmpl' => [
+  'options', 
+],
+
+'global/useful-links.html.tmpl' => [
+  'user.login', # Email address
+],
+
+'global/user-error.html.tmpl' => [
+  'error', # can contain HTML in 2.16.x
+],
+
+'bug/comments.html.tmpl' => [
+  'comment.time',
+  'quoteUrls(comment.body)',
+],
+
+'bug/dependency-graph.html.tmpl' => [
+  'image_map', # We need to continue to make sure this is safe in the CGI
+  'image_url', 
+  'map_url', 
+  'bug_id', 
+],
+
+'bug/dependency-tree.html.tmpl' => [
+  'hide_resolved ? "Open b" : "B"', 
+  'bugid', 
+  'maxdepth', 
+  'dependson_ids.join(",")', 
+  'blocked_ids.join(",")',
+  'dep_id',
+  'hide_resolved ? 0 : 1',
+  'hide_resolved ? "Show" : "Hide"',
+  'realdepth < 2 || maxdepth == 1 ? "disabled" : ""',
+  'hide_resolved',
+  'realdepth < 2 ? "disabled" : ""',
+  'maxdepth + 1',
+  'maxdepth == 0 || maxdepth == realdepth ? "disabled" : ""',
+  'realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : ""',
+  'maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""',
+  'maxdepth == 1 ? 1 
+                       : ( maxdepth ? maxdepth - 1 : realdepth - 1 )',
+  'realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
+            "disabled" : ""',
+],
+
+'bug/edit.html.tmpl' => [
+  'bug.delta_ts',
+  'bug.bug_id',
+  'bug.votes',
+  'group.bit',
+  'knum',
+  'dep.title',
+  'dep.fieldname',
+  'bug.${dep.fieldname}.join(\', \')',
+  'selname',
+  'bug.longdesclength',
+  'bug.creation_ts',
+],
+
+'bug/navigate.html.tmpl' => [
+  'this_bug_idx + 1',
+  'bug_list.first',
+  'bug_list.last',
+  'bug_list.$prev_bug',
+  'bug_list.$next_bug',
+],
+
+'bug/show-multiple.html.tmpl' => [
+  'bug.bug_id',
+  'bug.component', #
+  'attr.description', #
+],
+
+'bug/votes/list-for-bug.html.tmpl' => [
+  'voter.count',
+  'total',
+],
+
+'bug/votes/list-for-user.html.tmpl' => [
+  'product.maxperbug',
+  'bug.id',
+  'bug.count',
+  'product.total',
+  'product.maxvotes',
+],
+# h2 = voting_user.name # Email
+
+'bug/process/confirm-duplicate.html.tmpl' => [
+  'original_bug_id',
+  'duplicate_bug_id',
+],
+
+'bug/process/midair.html.tmpl' => [
+  'bug_id',
+],
+
+'bug/process/next.html.tmpl' => [
+  'next_id',
+],
+
+'bug/process/results.html.tmpl' => [
+  'title.$type',
+  'id',
+],
+
+'bug/process/verify-new-product.html.tmpl' => [
+],
+
+'bug/create/create.html.tmpl' => [
+  'g.bit',
+  'sel.name',
+  'sel.description',
+],
+
+'bug/activity/show.html.tmpl' => [
+  'bug_id',
+],
+
+'bug/activity/table.html.tmpl' => [
+  'change.attachid',
+  'change.field',
+],
+
+'attachment/create.html.tmpl' => [
+  'bugid',
+  'attachment.id',
+],
+
+'attachment/created.html.tmpl' => [
+  'attachid',
+  'bugid',
+  'contenttype',
+],
+
+'attachment/edit.html.tmpl' => [
+  'attachid',
+  'bugid',
+  'def.id',
+  'a',
+],
+
+'attachment/list.html.tmpl' => [
+  'attachment.attachid',
+  'attachment.date',
+  'bugid',
+],
+
+'attachment/show-multiple.html.tmpl' => [
+  'a.attachid',
+  'a.date',
+],
+
+'attachment/updated.html.tmpl' => [
+  'attachid',
+  'bugid',
+],
+
+'admin/attachstatus/create.html.tmpl' => [
+  'id',
+],
+
+'admin/attachstatus/delete.html.tmpl' => [
+  'attachcount',
+  'id',
+  'name',
+],
+
+'admin/attachstatus/edit.html.tmpl' => [
+  'id',
+  'sortkey',
+],
+
+'admin/attachstatus/list.html.tmpl' => [
+  'statusdef.sortkey',
+  'statusdef.id',
+  'statusdef.attachcount',
+],
+
+'account/prefs/account.html.tmpl' => [
+  'login_change_date', #
+],
+
+'account/prefs/email.html.tmpl' => [
+  'useqacontact ? \'5\' : \'4\'',
+  'role',
+  'reason.name',
+  'reason.description',
+],
+
+'account/prefs/permissions.html.tmpl' => [
+  'bit_description',
+],
+
+'account/prefs/prefs.html.tmpl' => [
+  'tab.name',
+  'tab.description',
+  'current_tab.name',
+  'current_tab.description',
+  'current_tab.description FILTER lower',
+],
+
+);

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/banner.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/banner.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/banner.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,34 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Matthew Tuck <matty at chariot.net.au>
+  #%]
+
+[%# Migration note: this file corresponds to the old Param 'bannerhtml' %]
+
+    <table bgcolor="#000000" width="100%" border="0" cellpadding="0"
+           cellspacing="0">
+      <tr>
+        <td>
+          <font color="#FFFFFF" size="8"><center>
+            Bugzilla Version [% Param("version") %]
+          </center></font>
+        </td>
+      </tr>
+    </table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/choose-product.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/choose-product.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/choose-product.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,48 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # proddesc: hash. May be empty. The hash keys are the products, and the values
+  # are their descriptions.
+  #%]
+
+[% DEFAULT title = "Choose a Product" %]
+[% PROCESS global/header.html.tmpl %]
+
+<table>
+
+[% FOREACH p = proddesc.keys.sort %]
+  <tr>
+    <th align="right" valign="top">
+      <a href="[% target %]?product=[% p FILTER url_quote %]
+            [% IF format %]&amp;format=[% format FILTER url_quote %][% END %]">
+      [% p FILTER html %]</a>:
+    </th>
+
+    [% IF proddesc.$p %]
+      <td valign="top">&nbsp;[% proddesc.$p FILTER html %]</td>
+    [% END %]
+  </tr>
+[% END %]
+        
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/code-error.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/code-error.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/code-error.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,68 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # header_done: boolean. True if the header has already been printed.
+  # error: string. The error message to be printed. May contain HTML.
+  # variables: hash. Useful data about the problem. The keys are the variable
+  #  names, and the values the variable values.
+  #%]
+  
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl %]
+[% END %]
+
+<tt>
+  <p>
+    Bugzilla has suffered an internal error. Please save this page and send
+    it to [% Param("maintainer") %] with details of what you were doing at 
+    the time this message appeared.
+  </p>
+  <script> <!--
+    document.write("<p>URL: " +
+                   document.location.href.replace(/&/g, "&amp;")
+                                         .replace(/</g, "&lt;")
+                                         .replace(/>/g, "&gt;") +
+                   "</p>");
+  // -->
+  </script>
+</tt>
+
+<table cellpadding="20">
+  <tr>
+    <td bgcolor="#ff0000">
+      <font size="+2">
+        [% error %]
+      </font>
+    </td>
+  </tr>
+</table>
+
+[% IF variables %]
+  <pre>
+Variables:
+  [% FOREACH key = variables.keys %]
+    [%+ key FILTER html %]: [%+ variables.$key FILTER html %]
+  [% END %]
+  </pre>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/footer.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/footer.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/footer.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,61 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. However, you must fulfill the interface to
+  # global/useful-links.html.tmpl.
+  #%]
+  
+[%# Migration note: this whole file corresponds to the old Param 'footerhtml' %]
+  
+<table border="0">
+  <tr>
+    <td bgcolor="#000000" valign="top">
+      <table border="0" cellpadding="10" cellspacing="0" width="100%"
+             bgcolor="lightyellow">
+        <tr>
+          <td>
+          
+[%# Migration note: this section corresponds to the old Param 'blurbhtml' %]
+ 
+           This is <b>Bugzilla</b>: the Mozilla bug system.  For more 
+            information about what Bugzilla is and what it can do, see 
+            <a href="http://www.bugzilla.org/">bugzilla.org</a>.
+            
+[%# End section %]
+
+            <br>
+
+[%# Migration note: useful-links.html.tmpl corresponds to %commandmenu% %]
+
+           [% PROCESS "global/useful-links.html.tmpl" %]
+
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>
+
+[% CALL SyncAnyPendingShadowChanges() IF SyncAnyPendingShadowChanges %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/header.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/header.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/header.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,104 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # (All the below interface elements are optional.)
+  # title: string. Page title.
+  # h1: string. Main page header.
+  # h2: string. Page subheader.
+  # header_html: string. Any other HTML to go inside the <head> tags.
+  # javascript: string. Javascript to go in the header.
+  # style: string. CSS style.
+  # style_urls: list. List of URLs to CSS style sheets.
+  # message: string. A message to display to the user. May contain HTML.
+  #%]
+
+[% DEFAULT
+  h1 = title
+  h2 = ""
+  bgcolor = "#FFFFFF"
+  onload = ""
+%]
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <title>[% title %]</title>
+    
+[%# Migration note: contents of the old Param 'headerhtml' would go here %]
+
+    [% header_html %]
+    
+    [% IF javascript %]
+      <script type="text/javascript" language="JavaScript">
+        [% javascript %]
+      </script>
+    [% END %]
+    
+    [% IF style %]
+      <style type="text/css">
+        [% style %]
+      </style>
+    [% END %]
+    
+    [% IF style_urls %]
+      [% FOREACH style_url = style_urls %]
+        <link href="[% style_url %]" rel="stylesheet" type="text/css">
+      [% END %]
+    [% END %]
+  
+  </head>
+  
+[%# Migration note: contents of the old Param 'bodyhtml' go in the body tag,
+  # but set the bgcolor and onload attributes in the DEFAULT directive above.
+  #%]
+
+  <body bgcolor="[% bgcolor %]" onload="[% onload %]">
+
+[%# Migration note: the following file corresponds to the old Param
+  # 'bannerhtml'
+  #%]
+  
+[% INCLUDE global/banner.html.tmpl %]
+    
+[% IF h1 || h2 %]
+    <table border="0" cellspacing="0">
+      <tr>
+        <td valign="top" align="left">
+          <table border="0" cellpadding="0" cellspacing="2">
+            <tr>
+              <td valign="top" align="left" nowrap="nowrap">
+                <font size="+1"><b>[% h1 %]</b></font>
+              </td>
+            </tr>
+          </table>
+        </td>
+        <td valign="middle">&nbsp;</td>
+        <td valign="middle" align="left">[% h2 %]</td>
+      </tr>
+    </table>
+[% END %]
+
+[% IF message %]
+  <table width="100%" cellspacing="0" cellpadding="5" border="1"><tr><td>
+    <font color="green">[% message %]</font>
+  </td></tr></table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/hidden-fields.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/hidden-fields.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/hidden-fields.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form fields/values for which to generate hidden fields.
+  # mform: hash; the form fields/values with multiple values for which to
+  #   generate hidden fields.
+  # exclude: string; a regular expression matching fields to exclude
+  #   from the list of hidden fields generated by this template
+  #%]
+ 
+[%# Generate hidden form fields for non-excluded fields. %]
+[% FOREACH field = form %]
+  [% NEXT IF exclude && field.key.search(exclude) %]
+  [% IF mform.${field.key}.size > 1 %]
+    [% FOREACH mvalue = mform.${field.key} %]
+      <input type="hidden" name="[% field.key FILTER html %]"
+             value="[% mvalue | html | html_linebreak %]">
+    [% END %]
+  [% ELSE %]
+    <input type="hidden" name="[% field.key FILTER html %]"
+           value="[% field.value | html | html_linebreak %]">
+  [% END %]
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/message.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/message.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/message.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):
+  #%]
+  
+[%# INTERFACE:
+  # url: string. An optional URL to go to.
+  # link: string. The link text for that URL.
+  #%]
+
+[% DEFAULT title = "Bugzilla Message" %]
+
+[% PROCESS global/header.html.tmpl %]
+
+[%# The "header" template automatically displays the contents of a "message"
+    variable if it finds one, so it is not necessary to display the message
+    here. %]
+
+[%# Display a URL if the calling script has included one. %]
+[% IF url && link %]
+  <p>
+    <a href="[% url FILTER html %]">[% link FILTER html %]</a>
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/select-menu.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/select-menu.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/select-menu.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,56 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # name: string; the name of the menu.
+  #
+  # options: array or hash; the items with which to populate the array.
+  #   If a hash is passed, the hash keys become the names displayed
+  #   to the user while the hash values become the value of the item.
+  # 
+  # default: string; the item selected in the menu by default.
+  # 
+  #%]
+ 
+[%# Get the scalar representation of the options reference, 
+  # which looks like "ARRAY(0xA352BA3F)" or "HASH(0xA352BA3F)",
+  # so we can figure out whether it is a reference to an array
+  # or a hash.
+  #%]
+[% options_type = BLOCK %][% options %][% END %]
+
+<select name="[% name FILTER html %]">
+  [% IF options_type.search("ARRAY") %]
+    [% FOREACH value = options %]
+      <option value="[% value FILTER html %]"
+              [% " selected" IF value == default %]>
+        [% value FILTER html %]
+      </option>
+    [% END %]
+  [% ELSIF values_type.search("HASH") %]
+    [% FOREACH option = options %]
+      <option value="[% option.value FILTER html %]" 
+              [% " selected" IF option.value == default %]>
+        [% option.key FILTER html %]
+      </option>
+    [% END %]
+  [% END %]
+</select>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/useful-links.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/useful-links.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/useful-links.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,124 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # user: hash. Information about the user. If the user is not logged in,
+  #       user.login is undefined.
+  #   login: string. The user's Bugzilla login email address.
+  #   showmybugslink: boolean. True if user wants My Bugs in the footer.
+  #   queries: list of strings. The names of those of the user's named
+  #     queries which should be displayed in the footer.
+  #   groups: hash. Keys are group names, values are true if user in that group.
+  #     The keys used in this template are
+  #     tweakparams, editcomponents, creategroups, editkeywords, confirm,
+  #     editbugs, editusers. 
+  #%]
+
+[%# Migration note: this whole file corresponds to the old %commandmenu% 
+    substitution param in 'footerhtml' %]
+
+<form method="get" action="show_bug.cgi">
+  <table width="100%">
+    <tr>
+      <td>
+        Actions:
+      </td>
+      
+      <td valign="middle" nowrap>
+        <a href="enter_bug.cgi">New</a> | 
+        <a href="query.cgi">Query</a> |
+        
+        <input type="submit" value="Find"> bug # 
+        <input name="id" size="6"> | 
+        
+        <a href="reports.cgi">Reports</a> 
+       
+        [% IF user.login && Param('usevotes') %]
+          | <a href="votes.cgi?action=show_user">My Votes</a>
+        [% END %]      
+      </td>
+
+      <td>&nbsp;</td>
+      
+    [% IF user.login %] 
+
+      <td valign="middle">
+        Edit <a href="userprefs.cgi">prefs</a>
+        [% ", <a href='editparams.cgi'>parameters</a>" 
+                                                   IF user.groups.tweakparams %]
+        [% ", <a href='editusers.cgi'>users</a>"     IF user.groups.editusers 
+                                                  || (user.blessgroupset > 0) %]
+        [% ", <a href='editproducts.cgi'>products</a>" 
+                                                IF user.groups.editcomponents %]
+        [% ", <a href='editattachstatuses.cgi'> attachment&nbsp;statuses</a>" 
+                                                IF user.groups.editcomponents %]
+        [% ", <a href='editgroups.cgi'>groups</a>" 
+                                                  IF user.groups.creategroups %]
+        [% ", <a href='editkeywords.cgi'>keywords</a>" 
+                                                  IF user.groups.editkeywords %]
+        [% " | <a href='sanitycheck.cgi'>Sanity&nbsp;check</a>" 
+                                                   IF user.groups.tweakparams %]
+
+        | <a href="relogin.cgi">Log&nbsp;out</a>&nbsp;[% user.login %]
+      </td>
+    </tr> 
+
+    [%# Preset queries %]
+    
+    [% preset_queries = user.showmybugslink %]
+    [% FOREACH q = user.queries %]
+      [% preset_queries = 1 IF q.linkinfooter %]
+    [% END %]
+      
+    <tr>
+      [% IF preset_queries %]
+        <td>
+          Preset&nbsp;Queries:
+        </td>
+      [% END %]
+      
+      <td colspan="3">
+        [% IF user.showmybugslink %]
+          [% filtered_username = user.login FILTER url_quote %]
+          <a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">My&nbsp;Bugs</a>
+          [% print_pipe = 1 %]
+        [% END %]
+
+        [% FOREACH q = user.queries %]
+          [% IF q.linkinfooter %]
+            [% " | " IF print_pipe %]
+            <a href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]"><nobr>[% q.name FILTER html %]</nobr></a>
+            [% print_pipe = 1 %]
+          [% END %]        
+        [% END %]
+      </td>
+    </tr>
+      
+    [% ELSE %]    
+      <td valign="middle" align="right">
+        <a href="createaccount.cgi">New&nbsp;Account</a> | 
+        <a href="query.cgi?GoAheadAndLogIn=1">Log&nbsp;In</a>
+      </td>
+    </tr>
+    [% END %]
+    
+  </table>                
+</form>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/user-error.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/user-error.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/global/user-error.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,45 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # header_done: boolean. True if the header has already been printed.
+  # error: string. The error message to be displayed. May contain HTML.
+  #%]
+  
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl %]
+[% END %]
+
+<table cellpadding="20">
+  <tr>
+    <td bgcolor="#ff0000">
+      <font size="+2">
+        [% error %]
+      </font>
+    </td>
+  </tr>
+</table>
+
+<p>
+  Please press <b>Back</b> and try again.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/index.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/index.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/index.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,93 @@
+<!-- 1.0 at bugzilla.org -->
+[%# -*- mode: html -*- %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Terry Weissman <terry at mozilla.org>
+  #                 Jacob Steenhagen <jake at acutex.net>
+  #%]
+
+[%# INTERFACE:
+  # username: string. The login name of the user, if any.
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = 'Bugzilla Main Page'
+%]
+
+<script type="text/javascript" language="JavaScript">
+<!--
+function addSidebar() {
+      if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function"))
+      {
+	 // DEBCOMPAT: CGI are under /cgi-bin/bugzilla 
+         window.sidebar.addPanel ("Bugzilla", "[% Param('urlbase') %]sidebar.cgi", "");
+         //window.sidebar.addPanel ("Bugzilla", "[% Param('urlbase') %]../cgi-bin/bugzilla/sidebar.cgi", "");
+      }
+      else
+      {
+         var rv = window.confirm ("This page is enhanced for use with Netscape 6.  " + "Would you like to upgrade now?");
+         if (rv)
+            document.location.href = "http://home.netscape.com/download/index.html";
+      }
+   }
+//-->
+</script>
+
+
+<table width="100%"><tr>
+ <td>
+  <p>This is where we put in lots of nifty words explaining all about Bugzilla.</p>
+
+  But it all boils down to a choice of:
+  <p>
+  <a href="query.cgi">Query existing bug reports</a><br>
+  <a href="enter_bug.cgi">Enter a new bug report</a><br>
+  <a href="reports.cgi">Get summary reports</a><br>
+  </p><p>
+[% IF username %]
+  <a href="userprefs.cgi">Change password or user preferences</a><br>
+  <a href="relogin.cgi">Logout [% username FILTER html %]</a><br>
+[% ELSE %]
+  <a href="query.cgi?GoAheadAndLogIn=1">Log in to an existing account</a><br>
+  <a href="createaccount.cgi">Open a new Bugzilla account</a><br>
+[% END %]
+  </p><p>
+  <a href="javascript:addSidebar()">Add to Sidebar</a> (Requires Mozilla or Netscape 6)<br>
+  </p>
+  <form name="f" action="show_bug.cgi" method="get"
+      onsubmit="QuickSearch(f.id.value); return false;"> 
+  <p>
+  Enter a bug # or some search terms:<br>
+  <input type="text" name="id">
+  <input type="submit" value="Show">
+  <a href="/bugzilla/quicksearch.html">[Help]</a>
+  </p>
+  </form>
+ </td>
+ <td align="right"><img src="/bugzilla/ant.jpg" width="329" height="220" border="2" alt="ant.jpg [8.5k]"></td>
+</tr></table>
+
+<script type="text/javascript" language="JavaScript" src="/bugzilla/localconfig.js"></script>
+<script type="text/javascript" language="JavaScript" src="/bugzilla/quicksearch.js"></script>
+<script type="text/javascript">
+<!--
+document.forms['f'].id.focus();
+//-->
+</script>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/change-columns.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/change-columns.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/change-columns.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  # 
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Dave Lawrence <dkl at redhat.com>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = "Change Columns"
+%]
+
+Check which columns you wish to appear on the list, and then click
+on submit.  (Cookies are required.)
+<p>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
+[% FOREACH column = masterlist %]
+  <input type="checkbox" id="[% column %]" name="column_[% column %]" [% "CHECKED" IF lsearch(collist, column) != -1 %]>
+  <label for="[% column %]">[% desc.${column} FILTER html %]</label><br>
+[% END %]
+</p><p>
+<input id="nosplitheader" type="radio" name="splitheader" value="0" [% "CHECKED" IF ! splitheader %]>
+<label for="nosplitheader">Normal headers (prettier)</label><br>
+<input id="splitheader" type="radio" name="splitheader" value="1" [% "CHECKED" IF splitheader %]>
+<label for="splitheader">Stagger headers (often makes list more compact)</label>
+</p><p>
+<input type="submit" value="Submit">
+</form>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
+<input type="hidden" name="resetit" value="1">
+<input type="submit" value="Reset to Bugzilla default">
+</form>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/edit-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/edit-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/edit-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,316 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<script type="text/javascript" language="JavaScript">
+  var numelements = document.forms.changeform.elements.length;
+  function SetCheckboxes(value) {
+      var item;
+      for (var i=0 ; i<numelements ; i++) {
+          item = document.forms.changeform.elements[i];
+          item.checked = value;
+      }
+  }
+  document.write(' <input type="button" name="uncheck_all" value="Uncheck All" onclick="SetCheckboxes(false);">');
+  document.write(' <input type="button" name="check_all" value="Check All" onclick="SetCheckboxes(true);">');
+</script>
+
+<hr>
+
+<p><font size="-1">
+  To change multiple bugs:
+  <ol>
+    <li>Check the bugs you want to change above.</li>
+    <li>Make your changes in the form fields below.  If the change
+        you are making requires an explanation, include it in
+        the comments box.</li>
+    <li>Click the <em>Commit</em> button.</li>
+  </ol>
+</font></p>
+
+<table id="form">
+  <tr>
+
+    <th><label for="product">Product:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "product" 
+                            menuitems = products %]
+    </td>
+
+    <th><label for="version">Version:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "version" 
+                            menuitems = versions %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th>
+      <label for="rep_platform">
+        <a href="/bugzilla/bug_status.html#rep_platform">Platform</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "rep_platform" 
+                            menuitems = platforms %]
+    </td>
+
+    <th>
+      <label for="priority">
+        <a href="/bugzilla/bug_status.html#priority">Priority</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "priority" 
+                            menuitems = priorities %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th><label for="component">Component:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "component" 
+                            menuitems = components %]
+    </td>
+
+    <th>
+      <label for="bug_severity">
+        <a href="/bugzilla/bug_status.html#severity">Severity</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "bug_severity" 
+                            menuitems = severities %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th><label for="target_milestone">Target Milestone:</label></th>
+    <td colspan="3">
+      [% PROCESS selectmenu menuname = "target_milestone" 
+                            menuitems = targetmilestones %]
+    </td>
+
+  </tr>
+
+  [% IF Param("useqacontact") %]
+    <tr>
+      <th><label for="qa_contact">QA Contact:</label></th>
+      <td colspan="3">
+        <input id="qa_contact" 
+               name="qa_contact" 
+               value="[% dontchange FILTER html %]" 
+               size="32">
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+
+    <th><label for="masscc">CC List:</label></th>
+    <td colspan="3">
+      <input id="masscc" name="masscc" size="32">
+      <select name="ccaction">
+        <option value="add">Add these to the CC List</option>
+        <option value="remove">Remove these from the CC List</option>
+      </select>
+    </td>
+
+  </tr>
+
+  [% IF use_keywords %]
+    <tr>
+
+      <th>
+        <label for="keywords">
+          <a href="describekeywords.cgi">Keywords</a>:
+        </label>
+      </th>
+      <td colspan="3">
+        <input id="keywords" name="keywords" size="32">
+        <select name="keywordaction">
+          <option value="add">Add these keywords</option>
+          <option value="delete">Delete these keywords</option>
+          <option value="makeexact">Make the keywords be exactly this list</option>
+        </select>
+      </td>
+
+    </tr>
+  [% END %]
+
+</table>
+
+<input type="hidden" name="multiupdate" value="Y">
+
+<label for="comment"><b>Additional Comments:</b></label><br>
+<textarea id="comment" name="comment" rows="5" cols="80" wrap="hard"></textarea><br>
+
+[% IF groups.size > 0 %]
+
+  <b>Groupset:</b><br>
+  <table border="1">
+    <tr>
+      <th>Don't<br>change<br>this group<br>restriction</td>
+      <th>Remove<br>bugs<br>from this<br>group</td>
+      <th>Add<br>bugs<br>to this<br>group</td>
+      <th>Group Name:</td>
+    </tr>
+
+    [% FOREACH group = groups %]
+    <tr>
+      <td align="center">
+        <input type="radio" name="bit-[% group.bit %]" value="-1" checked="checked">
+      </td>
+      <td align="center">
+        <input type="radio" name="bit-[% group.bit %]" value="0">
+      </td>
+      [% IF group.isactive %]
+        <td align="center">
+          <input type="radio" name="bit-[% group.bit %]" value="1">
+        </td>
+      [% ELSE %]
+        <td>&nbsp;</td>
+        [% foundinactive = 1 %]
+      [% END %]
+
+      <td>
+        [% IF group.isactive %]
+          [% group.description FILTER html %]
+        [% ELSE %]
+          [% group.description FILTER html FILTER strike %]
+        [% END %]
+      </td>
+
+    </tr>
+    [% END %]
+
+  </table>
+
+  [% IF foundinactive %]
+    <font size="-1">(Note: Bugs may not be added to <strike>inactive 
+    groups</strike>, only removed.)</font><br>
+  [% END %]
+
+[% END %]
+
+
+
+[% knum = 0 %]
+<input id="knob-none" type="radio" name="knob" value="none" checked="checked">
+<label for="knob-none">Do nothing else</label><br>
+
+[% IF bugstatuses.size == 1 && bugstatuses.0 == unconfirmedstate %]
+  [% knum = knum + 1 %]
+  <input id="knob-confirm" type="radio" name="knob" value="confirm">
+  <label for="knob-confirm">
+    Confirm bugs (change status to <b>NEW</b>)
+  </label><br>
+[% END %]
+
+[% knum = knum + 1 %]
+<input id="knob-accept" type="radio" name="knob" value="accept">
+<label for="knob-accept">
+  Accept bugs (change status to <b>ASSIGNED</b>)
+</label><br>
+
+[%# If all the bugs being changed are open, allow the user to close them. %]
+[% IF !bugstatuses.containsany(closedstates) %]
+  [% knum = knum + 1 %]
+  <input id="knob-clearresolution" type="radio" name="knob" value="clearresolution">
+  <label for="knob-clearresolution">Clear the resolution</label><br>
+
+  [% knum = knum + 1 %]
+  <input id="knob-resolve" type="radio" name="knob" value="resolve">
+  <label for="knob-resolve">
+    Resolve bugs, changing <a HREF="/bugzilla/bug_status.html">resolution</a> to
+  </label>
+  <select name="resolution" onchange="document.forms.changeform.knob[[% knum %]].checked=true">
+    [% FOREACH resolution = resolutions %]
+      [% NEXT IF !resolution %]
+      <option value="[% resolution FILTER html %]" [% selected IF resolution == "FIXED" %]>
+        [% resolution FILTER html %]
+      </option>
+    [% END %]
+  </select><br>
+
+[% END %]
+
+[%# If all the bugs are closed, allow the user to reopen them. %]
+[% IF !bugstatuses.containsany(openstates) %]
+  [% knum = knum + 1 %]
+  <input id="knob-reopen" type="radio" name="knob" value="reopen">
+  <label for="knob-reopen">Reopen bugs</label><br>
+[% END %]
+
+[% IF bugstatuses.size == 1 %]
+  [% IF bugstatuses.contains('RESOLVED') %]
+    [% knum = knum + 1 %]
+    <input id="knob-verify" type="radio" name="knob" value="verify">
+    <label for="knob-verify">Mark bugs as <b>VERIFIED</b></label><br>
+  [% ELSIF bugstatuses.contains('VERIFIED') %]
+    [% knum = knum + 1 %]
+    <input id="knob-close" type="radio" name="knob" value="close">
+    <label for="knob-close">Mark bugs as <b>CLOSED</b></label><br>
+  [% END %]
+[% END %]
+
+[% knum = knum + 1 %]
+<input id="knob-reassign" type="radio" name="knob" value="reassign">
+<label for="knob-reassign"><a href="/bugzilla/bug_status.html#assigned_to">
+  Reassign</a> bugs to
+</label>
+<input name="assigned_to" 
+       value="[% user.login FILTER html %]"
+       onchange="document.forms.changeform.knob[[% knum %]].checked = true;"
+       size="32"><br>
+
+[% knum = knum + 1 %]
+<input id="knob-reassignbycomponent" 
+       type="radio" 
+       name="knob" 
+       value="reassignbycomponent">
+<label for="knob-reassignbycomponent">
+  Reassign bugs to owner of selected component
+</label><br>
+
+<input type="submit" value="Commit">
+
+[% IF ismover %]
+  <input type="submit" name="action" value="[% Param('move-button-text') %]">
+[% END %]
+
+
+[%############################################################################%]
+[%# Select Menu Block                                                        #%]
+[%############################################################################%]
+
+[% BLOCK selectmenu %]
+  <select id="[% menuname %]" name="[% menuname %]">
+    <option value="[% dontchange FILTER html %]" selected="selected">
+      [% dontchange FILTER html %]
+    </option>
+    [% FOREACH menuitem = menuitems %]
+      <option value="[% menuitem FILTER html %]">[% menuitem FILTER html %]</option>
+    [% END %]
+  </select>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-rdf.rdf.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-rdf.rdf.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-rdf.rdf.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,54 @@
+[% template_version = "1.0 at bugzilla.org" %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<?xml version="1.0"?>
+<!-- [% template_version %] -->
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+     xmlns:bz="http://www.bugzilla.org/rdf#">
+
+<bz:result about="[% Param('urlbase') %]buglist.cgi?[% urlquerypart FILTER html %]">
+
+  <bz:bugs>
+    <Seq>
+    [% FOREACH bug = bugs %]
+      <li>
+        
+        <bz:bug about="[% Param('urlbase') %]show_bug.cgi?id=[% bug.id %]">
+          
+          <bz:id>[% bug.id %]</bz:id>
+        
+        [% FOREACH column = displaycolumns %]
+          <bz:[% column %]>[% bug.$column FILTER html %]</bz:[% column %]>
+        [% END %]
+        
+        </bz:bug>
+      
+      </li>
+
+    [% END %]
+
+    </Seq>
+
+  </bz:bugs>
+
+</bz:result>
+
+</RDF>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-simple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-simple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list-simple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # title: string. The title for this page. (optional)
+  #%]
+
+[%############################################################################%]
+[%# Initialization                                                           #%]
+[%############################################################################%]
+
+[% DEFAULT title = "Bug List" %]
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+<html>
+
+  <head>
+    <title>[% title FILTER html %]</title>
+    <link href="/bugzilla/css/buglist.css" rel="stylesheet" type="text/css" >
+  </head>
+
+  <body>
+    [% IF bugs.size == 0 %]
+      <h3>Zarro Boogs found.</h3>
+    [% ELSE %]
+      [% PROCESS list/table.html.tmpl %]
+    [% END %]
+  </body>
+
+</html>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,162 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%############################################################################%]
+[%# Template Initialization                                                  #%]
+[%############################################################################%]
+
+[% DEFAULT title = "Bug List" %]
+[% style_urls = [ "/bugzilla/css/buglist.css" ] %]
+[% qorder = order FILTER url_quote IF order %]
+
+
+[%############################################################################%]
+[%# Page Header                                                              #%]
+[%############################################################################%]
+
+[% PROCESS global/header.html.tmpl
+  title = title
+  style = style
+%]
+
+<div align="center">
+  <b>[% currenttime FILTER html %]</b><br>
+
+  [% IF debug %]
+    <p>[% query FILTER html %]</p>
+  [% END %]
+
+  [% IF quip %]
+    <a href="quips.cgi"><i>[% quip FILTER html %]</i></a>
+  [% END %]
+
+</div>
+
+[% IF toolong %]
+  <h2>
+    This list is too long for Bugzilla's little mind; the 
+    Next/Prev/First/Last buttons won't appear on individual bugs.
+  </h2>
+[% END %]
+
+<hr>
+
+
+[%############################################################################%]
+[%# Preceding Status Line                                                    #%]
+[%############################################################################%]
+
+[% IF bugs.size > 9 %]
+  [% bugs.size %] bugs found.
+[% END %]
+
+
+[%############################################################################%]
+[%# Start of Change Form                                                     #%]
+[%############################################################################%]
+
+[% IF dotweak %]
+  <form name="changeform" method="post" action="process_bug.cgi">
+[% END %]
+
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+[% FLUSH %]
+[% PROCESS list/table.html.tmpl %]
+
+[%############################################################################%]
+[%# Succeeding Status Line                                                   #%]
+[%############################################################################%]
+
+[% IF bugs.size == 0 %]
+  Zarro Boogs found.
+  <p>
+    <a href="query.cgi">Query Page</a>
+    &nbsp;&nbsp;<a href="enter_bug.cgi">Enter New Bug</a>
+    <a href="query.cgi?[% urlquerypart FILTER html %]">Edit this query</a>
+  </p>
+
+[% ELSIF bugs.size == 1 %]
+  One bug found.
+
+[% ELSE %]
+  [% bugs.size %] bugs found.
+
+[% END %]
+
+<br>
+
+
+[%############################################################################%]
+[%# Rest of Change Form                                                      #%]
+[%############################################################################%]
+
+[% IF dotweak %]
+
+  [% PROCESS "list/edit-multiple.html.tmpl" %]
+  
+  </form>
+
+  <hr>
+
+[% END %]
+
+
+[%############################################################################%]
+[%# Navigation Bar                                                           #%]
+[%############################################################################%]
+
+[% IF bugs.size > 0 %]
+  <form method="post" action="long_list.cgi">
+    <input type="hidden" name="buglist" value="[% buglist %]">
+    <input type="submit" value="Long Format">
+
+    <a href="query.cgi">Query Page</a> &nbsp;&nbsp;
+    <a href="enter_bug.cgi">Enter New Bug</a> &nbsp;&nbsp;
+    <a href="colchange.cgi?[% urlquerypart FILTER html %]">Change Columns</a> &nbsp;&nbsp;
+
+    [% IF bugs.size > 1 && caneditbugs && !dotweak %]
+      <a href="buglist.cgi?[% urlquerypart FILTER html %]
+        [%- "&order=$qorder" FILTER html IF order %]&amp;tweak=1">Change Several 
+        Bugs at Once</a>
+      &nbsp;&nbsp;
+    [% END %]
+
+    [% IF bugowners %]
+      <a href="mailto:[% bugowners FILTER html %]">Send Mail to Bug Owners</a> &nbsp;&nbsp;
+    [% END %]
+
+    <a href="query.cgi?[% urlquerypart FILTER html %]">Edit this Query</a> &nbsp;&nbsp;
+
+  </form>
+
+[% END %]
+
+
+[%############################################################################%]
+[%# Page Footer                                                              #%]
+[%############################################################################%]
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/quips.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/quips.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/quips.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,72 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # added_quip: string. Defined if the CGI added a quip data before 
+  #                displaying anything; if defined, its value is that quip.
+  # show_quips: boolean. True if we are showing the entire quip list.
+  # quips: list of strings. Defined iff show_quips is true. List of all quips.
+  #%]
+
+[% PROCESS global/header.html.tmpl
+           title = "Bugzilla Quip System"
+           h1 = "Add your own clever headline"
+ %]
+
+[% IF added_quip %]
+  <p>
+    <font color="red">
+      Your quip '<tt>[% added_quip FILTER html %]</tt>' has been added.
+    </font>
+  </p>
+[% END %]
+
+<p>
+  Bugzilla will pick a random quip for the headline on each bug list, and 
+  you can extend the quip list. Type in something clever or funny or boring 
+  (but not obscene or offensive, please) and bonk on the button.
+</p>
+
+<form method="post" action="quips.cgi">
+  <input type="hidden" name="action" value="add">
+  <input size="80" name="quip">
+  <p>
+    <input type="submit" value="Add This Quip">
+  </p>
+</form>
+
+[% IF show_quips %]
+  <h2>
+    Existing quips:
+  </h2>
+  <ul>
+    [% FOREACH quip = quips %]
+      <li>[% quip FILTER html %]</li>
+    [% END %]
+  </ul>
+[% ELSE %]
+  <p>
+    Those who like their wisdom in large doses can 
+    <a href="quips.cgi?action=show">view the whole quip list</a>.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/server-push.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/server-push.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/server-push.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,41 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # debug: boolean. True if we want the query displayed while we wait.
+  # query: string. The SQL query which makes the buglist.
+  #%]
+  
+<html>
+  <head>
+    <title>Bugzilla is pondering your query</title>
+  </head>
+  <body>
+    <h1 style="margin-top: 20%; text-align: center;">Please stand by ...</h1>
+
+    [% IF debug %]
+      <p>
+        <code>[% query FILTER html %]</code>
+      </p>
+    [% END %]
+
+  </body>
+</html>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/list/table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,150 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%############################################################################%]
+[%# Initialization                                                           #%]
+[%############################################################################%]
+
+[%# Columns whose titles or values should be abbreviated to make the list
+  # more compact.  For columns whose titles should be abbreviated,
+  # the shortened title is included.  For columns whose values should be
+  # abbreviated, a maximum length is provided along with the ellipsis that
+  # should be added to an abbreviated value, if any.
+  # wrap is set if a column's contents should be allowed to be word-wrapped
+  # by the browser.
+  #%]
+[% abbrev = 
+  {
+    "severity"          => { maxlength => 3 , title => "Sev" } , 
+    "priority"          => { maxlength => 3 , title => "Pri" } , 
+    "platform"          => { maxlength => 3 , title => "Plt" } , 
+    "status"            => { maxlength => 4 } , 
+    "reporter"          => { maxlength => 30 , ellipsis => "..." } , 
+    "owner"             => { maxlength => 30 , ellipsis => "..." } , 
+    "qa_contact"        => { maxlength => 30 , ellipsis => "..." , title => "QAContact" } , 
+    "resolution"        => { maxlength => 4 } , 
+    "summary"           => { maxlength => 60 , ellipsis => "..." , wrap => 1 } ,
+    "summaryfull"       => { wrap => 1 } ,
+    "status_whiteboard" => { title => "StatusSummary" , wrap => 1 } , 
+    "component"         => { maxlength => 8 , title => "Comp" } , 
+    "product"           => { maxlength => 8 } , 
+    "version"           => { maxlength => 5 , title => "Vers" } , 
+    "os"                => { maxlength => 4 } , 
+    "target_milestone"  => { title => "TargetM" } , 
+  }
+%]
+
+[% qorder = order FILTER url_quote IF order %]
+
+[%############################################################################%]
+[%# Table Header                                                             #%]
+[%############################################################################%]
+
+[% tableheader = BLOCK %]
+  <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
+    <colgroup>
+      <col class="bz_id_column">
+      [% FOREACH id = displaycolumns %]
+      <col class="bz_[% id %]_column">
+      [% END %]
+    </colgroup>
+
+    <tr align="left">
+      <th colspan="[% splitheader ? 2 : 1 %]">
+        <a href="buglist.cgi?[% urlquerypart FILTER html %]&amp;order=bugs.bug_id">ID</a>
+      </th>
+
+      [% IF splitheader %]
+
+        [% FOREACH id = displaycolumns %]
+          [% NEXT UNLESS loop.count() % 2 == 0 %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+        </tr><tr align="left"><th>&nbsp;</th>
+
+        [% FOREACH id = displaycolumns %]
+          [% NEXT IF loop.count() % 2 == 0 %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+      [% ELSE %]
+
+        [% FOREACH id = displaycolumns %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+      [% END %]
+
+    </tr>
+[% END %]
+
+[% BLOCK columnheader %]
+  <th colspan="[% splitheader ? 2 : 1 %]">
+    <a href="buglist.cgi?[% urlquerypart FILTER html %]&amp;order=
+      [% column.name FILTER url_quote FILTER html %]
+      [% ",$qorder" FILTER html IF order %]">
+        [%- abbrev.$id.title || column.title -%]</a>
+  </th>
+[% END %]
+
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+[% FOREACH bug = bugs %]
+  [% FLUSH IF loop.count() % 10 == 1 %]
+
+  [%# At the beginning of every hundred bugs in the list, start a new table. %]
+  [% IF loop.count() % 100 == 1 %]
+    [% tableheader %]
+  [% END %]
+
+  <tr class="bz_[% bug.severity FILTER html %] bz_[% bug.priority FILTER html %] [%+ "bz_secure" IF (bug.groupset && !usebuggroups) %]">
+
+    <td>
+      [% IF dotweak %]<input type="checkbox" name="id_[% bug.id %]">[% END %]
+      <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
+    </td>
+
+    [% FOREACH column = displaycolumns %]
+    <td>
+      [% '<nobr>' IF NOT abbrev.$column.wrap %]
+      [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%]
+      [%- '</nobr>' IF NOT abbrev.$column.wrap %]
+    </td>
+    [% END %]
+
+  </tr>
+
+  [%# At the end of every hundred bugs in the list, or at the end of the list,
+    # end the current table. 
+    #%]
+  [% IF loop.last() || loop.count() % 100 == 0 %]
+    </table>
+  [% END %]
+
+[% END %]
+

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/components.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/components.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/components.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,97 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Bradley Baetz <bbaetz at student.usyd.edu.au>
+  #%]
+
+[%# INTERFACE:
+  # product: string. The product this is the components list for.
+  # components: List of hashes. May be empty. Each hash has four members:
+  #   name: string. Name of the component.
+  #   description: string. Description of the component. May contain HTML.
+  #   initialowner: string. Component's initial owner.
+  #   initialqacontact: string. Component's initial QA contact.
+  #%]
+  
+[% filtered_product = product FILTER html %]
+[% PROCESS global/header.html.tmpl 
+  title = "Components for $filtered_product"
+  h2 = filtered_product %]
+
+[% IF Param("useqacontact") %]
+  [% numcols = 3 %]
+[% ELSE %]
+  [% numcols = 2 %]
+[% END %]
+
+[% IF components.size == 0 %]
+  This product has no components.
+[% ELSE %]
+  <table>
+    <tr>
+      <th align="left">Component</th>
+      <th align="left">Default Owner</th>
+      [% IF Param("useqacontact") %]
+        <th align="left">Default QA Contact</th>
+      [% END %]
+    </tr>
+
+    [% FOREACH comp = components %]
+      [% INCLUDE describe_comp %]
+    [% END %]
+    <tr>
+      <td colspan="[% numcols %]">
+        <hr>
+      </td>
+    </tr>
+  </table>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+[%############################################################################%]
+[%# BLOCK for components                                                      %]
+[%############################################################################%]
+
+[% BLOCK describe_comp %]
+  <tr>
+    <td colspan="[% numcols %]">
+      <hr>
+    </td>
+  </tr>
+  <tr>
+    <td rowspan="2">
+      <a name="[% comp.name FILTER html %]">[% comp.name FILTER html %]</a>
+    </td>
+    <td>
+      <a href="mailto:[% comp.initialowner FILTER html %][% Param('emailsuffix') %]">
+      [% comp.initialowner FILTER html %]</a>
+    </td>
+    [% IF Param("useqacontact") %]
+      <td>
+        <a href="mailto:[% comp.initialqacontact FILTER html %][% Param('emailsuffix') %]">
+        [% comp.initialqacontact FILTER html %]</a>
+      </td>
+    [% END %]
+  </tr>
+  <tr>
+    <td colspan="[% numcols - 1 %]">
+      [% comp.description FILTER html %]
+    </td>
+  </tr>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-simple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-simple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-simple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # You need to fulfill the interface to duplicates-table.html.tmpl.
+  #%]
+  
+<html>
+
+  [% IF product %]
+    [% title = "Most Frequently Reported Bugs for $product" %]
+  [% ELSE %]   
+    [% title = "Most Frequently Reported Bugs" %]
+  [% END%]
+
+  <head>
+    <title>[% title FILTER html %]</title>
+  </head>
+
+  <body>
+    [% PROCESS "reports/duplicates-table.html.tmpl" %]
+  </body>
+
+</html>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates-table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,142 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bugs: list of hashes. May be empty. Each hash has nine members:
+  #   id: integer. The bug number
+  #   count: integer. The number of dupes
+  #   delta: integer. The change in count in the last $changedsince days
+  #   component: string. The bug's component
+  #   bug_severity: string. The bug's severity.
+  #   op_sys: string. The bug's reported OS.
+  #   target_milestone: string. The bug's TM.
+  #   short_desc: string. The bug's summary.
+  #   bug_status: string. The bug's status.
+  #   
+  # bug_ids: list of integers. May be empty. The IDs of the bugs in $bugs.
+  #  
+  # sortby: string. the column on which we are sorting the buglist.
+  # reverse: boolean. True if we are reversing the current sort.
+  # maxrows: integer. Max number of rows to display.
+  # changedsince: integer. The number of days ago for the changedsince column.
+  # openonly: boolean. True if we are only showing open bugs.    
+  # product: string. Restrict to this product only.
+  #%]
+  
+[%# *** Column Headers *** %]
+
+<table border>
+  <tr bgcolor="#CCCCCC">
+    [% FOREACH column = [ { name => "id", description => "Bug #" },
+                          { name => "count", description => "Dupe<br>Count" },
+                          { name => "delta", 
+                      description => "Change in last<br>$changedsince day(s)" },
+                          { name => "component", description => "Component" },
+                          { name => "bug_severity", description => "Severity" },
+                          { name => "op_sys", description => "Op Sys" }, 
+                          { name => "target_milestone", 
+                            description => "Target<br>Milestone" },
+                          { name => "short_desc", description => "Summary" } ] 
+     %]
+                          
+      [%# Small hack to keep delta column out if we don't need it %]
+      [% NEXT IF column.name == "delta" AND NOT dobefore %]                     
+
+      <td>
+        <center>
+          <b>
+            [% bug_ids_string = bug_ids.join(',') %]
+            <a href="duplicates.cgi?sortby=[% column.name %]
+              [% IF sortby == column.name %]
+                [% "&reverse=1" IF NOT reverse %]
+              [% ELSE %]
+                [%-# Some columns start off reversed %]
+                [% "&reverse=1" IF column.name.match('delta|count') %]
+              [% END %]
+              [% "&maxrows=$maxrows" IF maxrows %]
+              [% "&changedsince=$changedsince" IF changedsince %]
+              [% "&openonly=1" IF openonly %]
+              [% "&product=$product" FILTER html IF product %]
+              [% "&format=$format" FILTER html IF format %]
+              [% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
+              [% column.description %]</a>
+          </b>
+        </center>
+      </td>
+    [% END %]
+  </tr>
+  
+[% IF NOT sortby %]
+  [% sortby = "count"; reverse = "1" %]
+[% END %]
+
+[% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %]
+  [%# Numeric sort %]
+  [% sortedbugs = bugs.nsort(sortby) %]
+[% ELSE %]
+  [% sortedbugs = bugs.sort(sortby) %]
+[% END %]
+
+[% IF reverse %]
+  [% bugs = sortedbugs.reverse %]
+[% ELSE %]
+  [% bugs = sortedbugs %]
+[% END %]
+
+[%# *** Buglist *** %]
+
+[%# We need to keep track of the bug IDs we are actually displaying, because
+  # if the user decides to sort the visible list, we need to know what that
+  # list actually is. %]
+[% vis_bug_ids = [] %]
+
+[% FOREACH bug = bugs %]
+  [% LAST IF loop.index() >= maxrows %]
+  [% vis_bug_ids.push(bug.id) %]      
+
+  <tr>
+    <td>
+      <center>
+        [% "<strike>" IF bug.resolution != "" %]
+        <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
+        [% "</strike>" IF bug.resolution != "" %]
+      </center>
+    </td>
+
+    <td>
+      <center>
+        [% bug.count %]
+      </center>
+    </td>
+
+    [% IF dobefore %]
+      <td><center>[% bug.delta %]</center></td>
+    [% END %]
+
+    <td>[% bug.component FILTER html %]</td>
+    <td><center>[% bug.bug_severity FILTER html %]</center></td>
+    <td><center>[% bug.op_sys FILTER html %]</center></td>
+    <td><center>[% bug.target_milestone FILTER html %]</center></td>
+    <td>[% bug.short_desc FILTER html %]</td>
+  </tr>
+[% END %]
+
+</table>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/duplicates.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,177 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # products: list of strings. The products this user can see.
+  #  
+  # sortby: string. the column on which we are sorting the buglist.
+  # reverse: boolean. True if we are reversing the current sort.
+  # maxrows: integer. Max number of rows to display.
+  # changedsince: integer. The number of days ago for the changedsince column.
+  # openonly: boolean. True if we are only showing open bugs.    
+  # product: string. Restrict to this product only.
+  #
+  # Additionally, you need to fulfill the interface to
+  # duplicates-table.html.tmpl.
+  #%]
+ 
+[% IF product %]
+  [% title = BLOCK %]
+    Most Frequently Reported Bugs for [% product FILTER html %]
+  [% END %]
+[% ELSE %]   
+  [% title = "Most Frequently Reported Bugs" %]
+[% END%]
+
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  <a href="#explanation">What is this data?</a>
+  <br>
+  <a href="#params">Change parameters</a>
+</p>
+
+[% PROCESS "reports/duplicates-table.html.tmpl" %]
+
+<br>
+<br>
+
+[%# *** Parameters *** %]
+
+[% bug_ids_string = vis_bug_ids.join(',') %]
+
+<h3><a name="params">Change Parameters</a></h3>
+
+<form method="get" action="duplicates.cgi">
+  <input type="hidden" name="sortby" value="[% sortby FILTER html %]">
+  <input type="hidden" name="reverse" value="[% reverse %]">
+  <input type="hidden" name="bug_id" value="[% bug_ids_string %]">
+  <table>
+    <tr>
+      <td>When sorting or restricting,
+          work with:</td>
+      <td>
+        <input type="radio" name="sortvisible" id="entirelist" value="0" 
+          [% "checked" IF NOT sortvisible %]>         
+        <label for="entirelist">
+          entire list
+        </label>
+        <br>        
+        <input type="radio" name="sortvisible" id="visiblelist" value="1" 
+          [% "checked" IF sortvisible %]> 
+        <label for="visiblelist">
+          currently visible list
+        </label>
+      </td>
+      <td rowspan="4" valign="top">Restrict to products:</td>
+      <td rowspan="4" valign="top">
+        <select name="product" size="5" multiple="multiple">
+          [% FOREACH p = products %]
+            <option name="[% p FILTER html %]"
+            [% " selected" IF product == p %]>[% p FILTER html %]</option>
+          [% END %]
+        </select>
+      </td>
+     </tr>
+
+    <tr>
+      <td>Max rows:</td>
+      <td>
+        <input size="4" name="maxrows" value="[% maxrows %]">
+      </td>
+    </tr>
+
+    <tr>
+      <td>Change column is change in the last:</td>
+      <td>
+        <input size="4" name="changedsince" value="[% changedsince %]"> days
+      </td>
+    </tr>
+
+    <tr>
+      <td>
+        <label for="openonly">
+          Open bugs only:
+        </label>
+      </td>
+      <td>
+        <input type="checkbox" name="openonly" id="openonly" value="1" 
+          [% "checked" IF openonly %]>      
+      </td>
+    </tr>
+
+  </table>
+
+  <input type="submit" value="Change"> 
+</form>
+
+<form method="post" action="buglist.cgi">
+  <input type="hidden" name="bug_id" value="[% bug_ids_string %]">
+  <input type="hidden" name="order" value="Reuse same sort as last time">
+  Or just give this to me as a <input type="submit" value="bug list">. 
+  (Note: the order may not be the same.)
+</form>
+
+<hr>
+
+<b>
+  <a name="explanation">What are "Most Frequently Reported Bugs"?</a>
+</b>
+
+<blockquote>
+  The Most Frequent Bugs page lists the known open bugs which 
+  are reported most frequently in recent builds. It is 
+  automatically generated from the Bugzilla database every 24 hours, by 
+  counting the number of direct and indirect duplicates of bugs.
+  This information is provided in order to assist in minimizing
+  the amount of duplicate bugs entered into Bugzilla which in turn cuts down
+  on development time.
+</blockquote>
+
+<b>How do I use this list?</b>
+
+<ul>
+  <li>Review the most frequent bugs list.</li>
+  <li>If problem is listed:</li>
+
+  <ul>
+    <li>Click on Bug # link to confirm that you have found the same bug and 
+      comment if you have additional information. Or move on with your testing
+      of the product.
+    </li>
+  </ul>
+
+  <li>If problem not listed:</li>
+
+  <ul>
+    <li>Go to the <a href="query.cgi">Bugzilla Search</a>
+      page to try and locate a similar bug that has already been written.</li>
+    <li>If you find your bug in Bugzilla, feel free to comment with any new or
+      additional data you may have.</li>
+    <li>If you cannot find your problem already documented in Bugzilla, go to
+      the
+      <a href="http://www.mozilla.org/quality/help/bug-form.html">Bugzilla
+        Helper</a>
+      and post a new bug.</li>
+  </ul>
+</ul>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/keywords.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/keywords.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/reports/keywords.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,75 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # keywords: array of hashes. May be empty. Each has has three members:
+  #   name: the name of the keyword
+  #   description: keyword description. May be HTML.
+  #   bugcount: number of bugs with that keyword
+  # caneditkeywords: boolean. True if this user can edit keywords
+ %]
+ 
+[% PROCESS global/header.html.tmpl 
+  title = "Bugzilla Keyword Descriptions"
+%]
+
+[% FOREACH keyword = keywords %]
+  [% IF loop.index % 50 == 0 %]
+    [% IF loop.index != 0 %]
+       </table>
+    [% END %]
+    
+    <table border="1" cellpadding="4" cellspacing="0">
+      <tr bgcolor="#6666FF">
+        <th align="left">Name</th>
+        <th align="left">Description</th>
+        <th align="left">Bugs</th>
+      </tr>
+  [% END %]  
+  
+  <tr>
+    <th>
+      <a name="[% keyword.name FILTER html %]">
+        [% keyword.name FILTER html %]</a>
+    </th>
+    <td>[% keyword.description FILTER html %]</td>
+    <td align="right">
+      [% IF keyword.bugcount > 0 %]
+        <a href="buglist.cgi?keywords=[% keyword.name FILTER url_quote %]">
+          [% keyword.bugcount %]</a>
+      [% ELSE %]
+        none
+      [% END %]
+    </td>
+  </tr>
+[% END %]
+
+[% IF keywords.size > 0 %]
+  </table>
+[% END %]
+
+[% IF caneditkeywords %]
+  <p>
+    <a href="editkeywords.cgi">Edit keywords</a>.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/boolean-charts.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/boolean-charts.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/boolean-charts.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,118 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+  
+[% types = [
+  { name => "noop", description => "---" },
+  { name => "equals", description => "is equal to" },
+  { name => "notequals", description => "is not equal to" },
+  { name => "substring", description => "contains the string" },
+  { name => "casesubstring", description => "contains the string (exact case)" },
+  { name => "notsubstring", description => "does not contain the string" },
+  { name => "allwordssubstr", description => "contains all of the strings" },
+  { name => "anywordssubstr", description => "contains any of the strings" },
+  { name => "regexp", description => "contains regexp" },
+  { name => "notregexp", description => "does not contain regexp" },
+  { name => "lessthan", description => "is less than" },
+  { name => "greaterthan", description => "is greater than" },
+  { name => "anywords", description => "contains any of the words" },
+  { name => "allwords", description => "contains all of the words" },
+  { name => "nowords", description => "contains none of the words" },
+  { name => "changedbefore", description => "changed before" },
+  { name => "changedafter", description => "changed after" },
+  { name => "changedfrom", description => "changed from" },
+  { name => "changedto", description => "changed to" },
+  { name => "changedby", description => "changed by" } ] %]
+
+  <p>
+    <strong>
+      <a name="chart" href="queryhelp.cgi#advancedquerying">
+      Advanced Querying Using Boolean Charts</a>:
+    </strong>
+  </p>
+
+[%# Whoever wrote the original version of boolean charts had a seriously twisted mind %]
+
+[% jsmagic = "onclick=\"document.forms[0].action='query.cgi#chart'; document.forms[0].method='POST'; return 1;\"" %]
+
+[% FOREACH chart = default.charts %]
+  [% chartnum = loop.count - 1 %]
+  <table>
+  [% FOREACH row = chart %]
+    [% rownum = loop.count - 1 %]
+    <tr>
+    [% FOREACH col = row %]
+      [% colnum = loop.count - 1 %]
+      <td>
+        <select name="[% "field${chartnum}-${rownum}-${colnum}" %]">
+          [% FOREACH field = fields %]
+            <option value="[% field.name %]"
+              [%- " selected" IF field.name == col.field %]>[% field.description %]</option>
+          [% END %]
+        </select>
+
+        <select name="[% "type${chartnum}-${rownum}-${colnum}" %]">
+          [% FOREACH type = types %]
+            <option value="[% type.name %]"
+              [%- " selected" IF type.name == col.type %]>[% type.description %]</option>
+          [% END %]
+        </select>
+
+        <input name="[% "value${chartnum}-${rownum}-${colnum}" %]" 
+               value="[% col.value FILTER html %]"> 
+      </td>
+      
+      [% IF NOT col == row.last %]
+        <td align="center"> 
+          Or 
+        </td>    
+      [% ELSE %]
+        <td>
+          [% newor = colnum + 1 %]
+          <input type="submit" value="Or" 
+                 name="cmd-add[% "${chartnum}-${rownum}-${newor}" %]" [% $jsmagic %]>
+        </td>
+      [% END %]
+      
+    [% END %]
+    </tr>
+    
+    [% IF NOT row == chart.last %]
+    <tr>
+      <td>And</td>
+    </tr>    
+    [% ELSE %]
+    <tr>
+      <td>
+        [% newand = rownum + 1; newchart = chartnum + 1 %]
+        <input type="submit" value="And" 
+               name="cmd-add[% "${chartnum}-${newand}-0" %]"[% $jsmagic %]> 
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+        <input type="submit" value="Add another boolean chart" 
+               name="cmd-add[% newchart %]-0-0" [% $jsmagic %]>
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      </td>
+    </tr>   
+    [% END %]
+    
+  [% END %]
+  </table>
+  <hr>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/form.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/form.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/form.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,672 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Chris Lahey <clahey at ximian.com> [javascript fixes]
+  #                 Christian Reis <kiko at async.com.br> [javascript rewrite]
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+  
+  [%# Note: use Template comments and not JS ones here, to avoid bloating
+    what we actually send to the browser %]
+
+<script language="JavaScript" type="text/javascript"> <!--
+
+var first_load = true;         [%# is this the first time we load the page? %]
+var last_sel = new Array();    [%# caches last selection %]
+
+var cpts = new Array();
+var vers = new Array();
+[% IF Param('usetargetmilestone') %]
+var tms = new Array();
+[% END %]
+
+[%# Create three arrays of components, versions and target milestones, indexed 
+  # numerically according to the product they refer to. #%]
+
+[% n = 0 %]
+[% FOREACH p = product %]
+  cpts[[% n %]] = [ 
+    [%- FOREACH item = componentsbyproduct.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  vers[[% n %]] = [ 
+    [%- FOREACH item = versionsbyproduct.$p -%]'[%  item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  [% IF Param('usetargetmilestone') %]
+  tms[[% n %]]  = [ 
+     [%- FOREACH item = milestonesbyproduct.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  [% END %]
+  [% n = n+1 %]
+[% END %]
+
+[%# updateSelect(array, sel, target, merging)
+  #
+  # Adds to the target select object all elements in array that
+  # correspond to the elements selected in source.
+  # - array should be a array of arrays, indexed by number. the
+  #   array should contain the elements that correspond to that
+  #   product. 
+  # - sel is a list of selected items, either whole or a diff
+  #   depending on merging.
+  # - target should be the target select object.
+  # - merging (boolean) determines if we are mergine in a diff or
+  #   substituting the whole selection. a diff is used to optimize adding
+  #   selections.
+  #
+  # Example (compsel is a select form control)
+  #
+  #     var components = Array();
+  #     components[1] = [ 'ComponentA', 'ComponentB' ];
+  #     components[2] = [ 'ComponentC', 'ComponentD' ];
+  #     source = [ 2 ];
+  #     updateSelect(components, source, compsel, 0, 0);
+  #
+  # would clear compsel and add 'ComponentC' and 'ComponentD' to it.
+  #
+  %]
+
+function updateSelect(array, sel, target, merging) {
+        
+    var i, item;
+
+    [%# If we have no versions/components/milestones %]
+    if (array.length < 1) {
+        target.options.length = 0;
+        return false;
+    }
+
+    if (merging) {
+        [%# array merging/sorting in the case of multiple selections %]
+        [%# merge in the current options with the first selection %]
+        item = merge_arrays(array[sel[0]], target.options, 1);
+
+        [%# merge the rest of the selection with the results %]
+        for (i = 1 ; i < sel.length ; i++) {
+            item = merge_arrays(array[sel[i]], item, 0);
+        }
+    } else if ( sel.length > 1 ) {
+        [%# here we micro-optimize for two arrays to avoid merging with a
+            null array %]
+        item = merge_arrays(array[sel[0]],array[sel[1]], 0);
+
+        [%# merge the arrays. not very good for multiple selections. %]
+        for (i = 2; i < sel.length; i++) {
+            item = merge_arrays(item, array[sel[i]], 0);
+        }
+    } else { [%# single item in selection, just get me the list %]
+        item = array[sel[0]];
+    }
+
+    [%# clear select %]
+    target.options.length = 0;
+
+    [%# load elements of list into select %]
+    for (i = 0; i < item.length; i++) {
+        target.options[i] = new Option(item[i], item[i]);
+    }
+    return true;
+}
+
+[%# Returns elements in a that are not in b. 
+  # NOT A REAL DIFF: does not check the reverse.
+  #    - a,b: arrays of values to be compare. %]
+function fake_diff_array(a, b) {
+    var newsel = new Array();
+    var found = false;
+
+    [%# do a boring array diff to see who's new %]
+    for (var ia in a) {
+        for (var ib in b) {
+            if (a[ia] == b[ib]) {
+                found = true;
+            }
+        }
+        if (!found) {
+            newsel[newsel.length] = a[ia];
+        }
+        found = false;
+    }
+    return newsel;
+}
+
+[%# takes two arrays and sorts them by string, returning a new, sorted
+  # array. the merge removes dupes, too.
+  #    - a, b: arrays to be merge.
+  #    - b_is_select: if true, then b is actually an optionitem and as
+  #      such we need to use item.value on it. %]
+function merge_arrays(a, b, b_is_select) {
+    var pos_a = 0;
+    var pos_b = 0;
+    var ret = new Array();
+    var bitem, aitem;
+
+    [%# iterate through both arrays and add the larger item to the return
+       list. remove dupes, too. Use toLowerCase to provide
+       case-insensitivity. %]
+    while ((pos_a < a.length) && (pos_b < b.length)) {
+        if (b_is_select) {
+            bitem = b[pos_b].value;
+        } else {
+            bitem = b[pos_b];
+        }
+        aitem = a[pos_a];
+
+        [%# smaller item in list a %]
+        if (aitem.toLowerCase() < bitem.toLowerCase()) {
+            ret[ret.length] = aitem;
+            pos_a++;
+        } else {
+            [%# smaller item in list b %]
+            if (aitem.toLowerCase() > bitem.toLowerCase()) {
+                ret[ret.length] = bitem;
+                pos_b++;
+            } else {
+                [%# list contents are equal, inc both counters. %]
+                ret[ret.length] = aitem;
+                pos_a++;
+                pos_b++;
+            }
+        }
+    }
+
+    [%# catch leftovers here. these sections are ugly code-copying. %]
+    if (pos_a < a.length) {
+        for (; pos_a < a.length ; pos_a++) {
+            ret[ret.length] = a[pos_a];
+        }
+    }
+
+    if (pos_b < b.length) {
+        for (; pos_b < b.length; pos_b++) {
+            if (b_is_select) {
+                bitem = b[pos_b].value;
+            } else {
+                bitem = b[pos_b];
+            }
+            ret[ret.length] = bitem;
+        }
+    }
+    return ret;
+}
+
+[%# Returns an array of indexes or values from a select form control.
+  #    - control: select control from which to find selections
+  #    - findall: boolean, store all options when true or just the selected 
+  #      indexes
+  #    - want_values: boolean; we store values when true and indexes when
+  #      false %]
+function get_selection(control, findall, want_values) {
+    var ret = new Array();
+
+    if ((!findall) && (control.selectedIndex == -1)) {
+        return ret;
+    }
+
+    for (var i=0; i<control.length; i++) {
+        if (findall || control.options[i].selected) {
+            ret[ret.length] = want_values ? control.options[i].value : i;
+        }
+    }
+    return ret;
+}
+
+[%# Selects items in control that have index defined in sel
+  #    - control: SELECT control to be restored
+  #    - selnames: array of indexes in select form control %]
+function restoreSelection(control, selnames) {
+    [%# right. this sucks. but I see no way to avoid going through the
+      # list and comparing to the contents of the control. %]
+    for (var j=0; j < selnames.length; j++) {
+        for (var i=0; i < control.options.length; i++) {
+            if (control.options[i].value == selnames[j]) {
+                control.options[i].selected = true;
+            }
+        }
+    }
+}
+
+[%# selectProduct reads the selection from f.product and updates
+  # f.version, component and target_milestone accordingly.
+  #     - f: a form containing product, component, varsion and
+  #       target_milestone select boxes.
+  # globals (3vil!):
+  #     - cpts, vers, tms: array of arrays, indexed by product name. the
+  #       subarrays contain a list of names to be fed to the respective
+  #       selectboxes. For bugzilla, these are generated with perl code
+  #       at page start.
+  #     - first_load: boolean, specifying if it is the first time we load
+  #       the query page.
+  #     - last_sel: saves our last selection list so we know what has
+  #       changed, and optimize for additions. %]
+function selectProduct(f) {
+    [%# this is to avoid handling events that occur before the form
+        itself is ready, which could happen in buggy browsers. %]
+    if ((!f) || (!f.product)) {
+        return;
+    }
+
+    [%# if this is the first load and nothing is selected, no need to
+        merge and sort all components; perl gives it to us sorted. %]
+    if ((first_load) && (f.product.selectedIndex == -1)) {
+        first_load = false;
+        return;
+    }
+    
+    [%# turn first_load off. this is tricky, since it seems to be
+        redundant with the above clause. It's not: if when we first load
+        the page there is _one_ element selected, it won't fall into that
+        clause, and first_load will remain 1. Then, if we unselect that
+        item, selectProduct will be called but the clause will be valid
+        (since selectedIndex == -1), and we will return - incorrectly -
+        without merge/sorting. %]
+    first_load = false;
+
+    [%# - sel keeps the array of products we are selected. 
+        - merging says if it is a full list or just a list of products that
+          were added to the current selection. %]
+    var merging = false;
+    var sel = Array();
+
+    [%# if nothing selected, pick all %]
+    var findall = f.product.selectedIndex == -1;
+    sel = get_selection(f.product, findall, false);
+    if (!findall) {
+        [%# save sel for the next invocation of selectProduct() %]
+        var tmp = sel;
+    
+        [%# this is an optimization: if we have just added products to an
+            existing selection, no need to clear the form controls and add 
+            everybody again; just merge the new ones with the existing 
+            options. %]
+        if ((last_sel.length > 0) && (last_sel.length < sel.length)) {
+            sel = fake_diff_array(sel, last_sel);
+            merging = true;
+        }
+        last_sel = tmp;
+    }
+    [%# save original options selected %]
+    var saved_cpts = get_selection(f.component, false, true);
+    var saved_vers = get_selection(f.version, false, true);
+    [% IF Param('usetargetmilestone') %]
+    var saved_tms = get_selection(f.target_milestone, false, true);
+    [% END %]
+
+    [%# do the actual fill/update, reselect originally selected options %]
+    updateSelect(cpts, sel, f.component, merging);
+    restoreSelection(f.component, saved_cpts);
+    updateSelect(vers, sel, f.version, merging);
+    restoreSelection(f.version, saved_vers);
+    [% IF Param('usetargetmilestone') %]
+    updateSelect(tms, sel, f.target_milestone, merging);
+    restoreSelection(f.target_milestone, saved_tms);
+    [% END %]
+}
+
+// -->
+</script>
+
+[% query_variants = [ 
+  { value => "allwordssubstr", description => "contains all of the words/strings" },
+  { value => "anywordssubstr", description => "contains any of the words/strings" },
+  { value => "substring", description => "contains the string" },
+  { value => "casesubstring", description => "contains the string (exact case)" },
+  { value => "allwords", description => "contains all of the words" },
+  { value => "anywords", description => "contains any of the words" },
+  { value => "regexp", description => "matches the regexp" },
+  { value => "notregexp", description => "doesn't match the regexp" } ] %]
+     
+[%# *** Summary *** %]
+
+<table>
+  <tr>
+    <th align="right">Summary:</th>
+    <td>
+      <select name="short_desc_type">
+      [% FOREACH qv = query_variants %]
+        <option value="[% qv.value %]"
+          [% " selected" IF default.short_desc_type.0 == qv.value %]>[% qv.description %]</option>
+      [% END %]              
+      </select>
+    </td>
+    <td>
+      <input name="short_desc" size="40" value="[% default.short_desc.0 FILTER html %]">
+    </td>
+    <td>
+      <input type="submit" value="[% button_name %]">
+    </td>
+  </tr>  
+
+[%# *** Product Component Version Target *** %]
+
+  <tr>
+    <td colspan="4">
+      <table>
+        <tr valign="bottom">
+          <th align="left">Product:</th>
+          <th align="left"><a href="describecomponents.cgi">Component</a>:</th>
+          <th align="left">Version:</th>
+
+        [% IF (Param("usetargetmilestone")) %]
+          <th align="left">Target:</th>
+        [% END %]
+        </tr>
+
+        <tr valign="top">
+
+          [%# Can't use the select block here because of onChange and the fact that
+              'component' is a toolkit reserved word - we use 'component_' instead. %]
+          <td align="left">
+            <select name="product" multiple="multiple" size="5" onchange="selectProduct(this.form);">
+            [% FOREACH p = product %]
+              <option value="[% p FILTER html %]"
+                [% " selected" IF lsearch(default.product, p) != -1 %]>
+                [% p FILTER html %]</option>
+            [% END %]
+            </select>
+          </td>
+
+          <td align="left">
+            <select name="component" multiple="multiple" size="5">
+            [% FOREACH c = component_ %]
+              <option value="[% c FILTER html %]"
+                [% " selected" IF lsearch(default.component, c) != -1 %]>
+                [% c FILTER html %]</option>
+            [% END %]
+            </select>
+          </td>
+
+          [% PROCESS select sel = { name => 'version', size => 5 } %]
+
+        [% IF Param('usetargetmilestone') && target_milestone.size > 0 %]
+          [% PROCESS select sel = { name => 'target_milestone', size => 5 } %]
+        [% END %]
+        </tr>
+      </table>
+    </td>
+  </tr>
+  
+[%# *** Comment URL Whiteboard Keywords *** %]
+
+  [% FOREACH field = [ 
+    { name => "long_desc", description => "A&nbsp;comment" },
+    { name => "bug_file_loc", description => "The&nbsp;URL" },
+    { name => "status_whiteboard", description => "Whiteboard" } ] %]
+
+    [% UNLESS field.name == 'status_whiteboard' AND NOT Param('usestatuswhiteboard') %]
+    <tr>
+      <th align="right">[% field.description %]:</th>
+      <td>
+        <select name="[% field.name %]_type">
+        [% FOREACH qv = query_variants %]
+          [% type = "${field.name}_type" %]                   
+          <option value="[% qv.value %]"
+            [% " selected" IF default.$type.0 == qv.value %]>[% qv.description %]</option>
+        [% END %]              
+        </select>
+      </td>
+      <td><input name="[% field.name %]" size="40" value="
+        [% default.${field.name}.0 FILTER html %]">
+      </td>
+      <td></td>
+    </tr>  
+    [% END %]
+  [% END %]
+
+  [% IF have_keywords %]
+    <tr>
+      <th align="right"><a href="describekeywords.cgi">Keywords</a>:</th>
+      <td>
+        <select name="keywords_type">
+        [% FOREACH qv = [ 
+          { name => "allwords", description => "contains all of the keywords" },
+          { name => "anywords", description => "contains any of the keywords" },
+          { name => "nowords",  description => "contains none of the keywords" } ] %]
+
+          <option value="[% qv.name %]"
+            [% " selected" IF default.keywords_type.0 == qv.name %]>
+            [% qv.description %]</option>
+        [% END %]
+        </select>
+      </td>
+      <td>
+        <input name="keywords" size="40" value="[% default.keywords.0 FILTER html %]">
+      </td>
+    </tr>
+  [% END %]
+</table>  
+
+<hr>
+
+[%# *** Status Resolution Severity Priority Hardware OS *** %]
+
+<table>
+  <tr>
+    <th align="left"><a href="queryhelp.cgi#status">Status</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#resolution">Resolution</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#severity">Severity</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#priority">Priority</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#platform">Hardware</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#opsys">OS</a>:</th>
+  </tr>
+
+  <tr valign="top">
+    [% PROCESS select sel = { name => 'bug_status', size => 7 } %]
+    [% PROCESS select sel = { name => 'resolution', size => 7 } %]
+    [% PROCESS select sel = { name => 'bug_severity', size => 7 } %]    
+    [% PROCESS select sel = { name => 'priority', size => 7 } %]    
+    [% PROCESS select sel = { name => 'rep_platform', size => 7 } %]
+    [% PROCESS select sel = { name => 'op_sys', size => 7 } %]
+  </tr>
+</table>
+
+<p>
+
+[%# *** Email Numbering Votes *** %]
+
+<table>
+  <tr>
+    <td>
+      <fieldset>
+        <legend>
+          <strong>
+            <a href="queryhelp.cgi#peopleinvolved">Email</a> and Numbering
+          </strong>  
+        </legend>
+
+
+<table>
+  <tr>
+  [% FOREACH n = [1, 2] %]
+    <td>
+
+
+<table cellspacing="0" cellpadding="0">
+  <tr>
+    <td>
+      Any of:
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input type="checkbox" name="emailassigned_to[% n %]" 
+             id="emailassigned_to[% n %]" value="1"
+             [% " checked" IF default.emailassigned_to.$n %]>
+      <label for="emailassigned_to[% n %]">
+        bug owner
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input type="checkbox" name="emailreporter[% n %]" 
+             id="emailreporter[% n %]" value="1"
+             [% " checked" IF default.emailreporter.$n %]>
+      <label for="emailreporter[% n %]">
+        reporter
+      </label>
+    </td>
+  </tr>
+  [% IF Param('useqacontact') %]
+  <tr>
+    <td>
+      <input type="checkbox" name="emailqa_contact[% n %]" 
+             id="emailqa_contact[% n %]" value="1"
+             [% " checked" IF default.emailqa_contact.$n %]>
+      <label for="emailqa_contact[% n %]">
+        QA contact
+      </label>
+    </td>
+  </tr>
+  [% END %]
+  <tr>
+    <td>
+      <input type="checkbox" name="emailcc[% n %]" 
+             id="emailcc[% n %]" value="1"
+             [% " checked" IF default.emailcc.$n %]>
+      <label for="emailcc[% n %]">
+        CC list member
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+        <input type="checkbox" name="emaillongdesc[% n %]" 
+               id="emaillongdesc[% n %]" value="1"
+               [% " checked" IF default.emaillongdesc.$n %]>
+      <label for="emaillongdesc[% n %]">
+        commenter
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <select name="emailtype[% n %]">
+      [% FOREACH qv = [ 
+        { name => "substring", description => "contains" },
+        { name => "exact", description => "is" },
+        { name => "regexp", description => "matches regexp" },
+        { name => "notregexp", description => "doesn't match regexp" } ] %]
+        
+        <option value="[% qv.name %]"
+          [% " selected" IF default.emailtype.$n == qv.name %]>[% qv.description %]</option>
+      [% END %]
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input name="email[% n %]" size="25" value="[% default.email.$n FILTER html %]">
+    </td>
+  </tr>
+</table>
+
+    
+    </td>
+  [% END %]
+  </tr>
+</table>
+<hr>
+<table>  
+  <tr>
+    <td>
+      <select name="bugidtype">
+        <option value="include"[% " selected" IF default.bugidtype.0 == "include" %]>Only include</option>
+        <option value="exclude"[% " selected" IF default.bugidtype.0 == "exclude" %]>Exclude</option>
+      </select>
+      bugs numbered: 
+    </td>
+    <td>
+      <input type="text" name="bug_id" value="[% default.bug_id.0 FILTER html %]" size="20">
+    </td>
+  </tr>
+  <tr>
+    <td></td>
+    <td>(comma-separated list)</td>
+  </tr>
+  [% IF Param('usevotes') %]
+    <tr>
+      <td align="right">
+        Only bugs with at least:
+      </td>
+      <td>
+        <input name="votes" size="3" value="[% default.votes.0 FILTER html %]"> votes
+      </td>
+    </tr>
+  [% END %]
+</table>
+
+
+      </fieldset>
+    </td>
+   
+[%# *** Bug Changes *** %]
+
+    <td valign="top">
+      <fieldset>
+        <legend><strong>Bug Changes</strong></legend>
+
+
+<dl>
+  <dt>Only bugs changed in the last </dt>
+  <dd><input name="changedin" size="3" value="[% default.changedin.0 FILTER html %]"> days</dd>
+</dl>
+
+<dl>
+  <dt>Only bugs where any of the fields</dt>
+  <dd>
+    <select name="chfield" multiple="multiple" size="4">
+    [% FOREACH field = chfield %]
+      <option value="[% field FILTER html %]"
+        [% " selected" IF lsearch(default.chfield, field) != -1 %]>
+        [% field FILTER html %]</option>
+    [% END %]
+    </select>
+  </dd>
+
+  <dt>were changed between</dt>
+  <dd>
+    <input name="chfieldfrom" size="10" value="[% default.chfieldfrom.0 FILTER html %]">
+    and <input name="chfieldto" size="10" value="[% default.chfieldto.0 FILTER html %]">
+    <br>(YYYY-MM-DD)
+  </dd>
+  <dt>to this value: (optional)</dt>
+  <dd>
+    <input name="chfieldvalue" size="20" value="[% default.chfieldvalue.0 FILTER html %]">
+  </dd>
+</dl>
+
+
+       </fieldset>
+     </td>
+  </tr>
+</table>
+
+[%# Note: the <form> tag is unclosed at the end of this template %]
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+  <td align="left">
+    <select name="[% sel.name %]" multiple="multiple" size="[% sel.size %]">
+    [% FOREACH name = ${sel.name} %]
+      <option value="[% name FILTER html %]"
+        [% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
+        [% name FILTER html %]</option>
+    [% END %]
+    </select>
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/knob.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/knob.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/knob.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Tobias Burnus <burnus at net-b.de>
+  #                 Jouni Heikniemi <jouni at heikniemi.net>
+  #%]
+
+[%# This is not necessary for English templates, but useful for localisers. %]
+[% ordersdesc = {
+   "Reuse same sort as last time" => "Reuse same sort as last time",
+   "Bug Number"   => "Bug Number",
+   "Importance"   => "Importance",
+   "Assignee"     => "Assignee",
+   "Last Changed" => "Last Changed" } %]
+
+<br>
+[% IF NOT userid %]
+   <input type="hidden" name="cmdtype" value="doit">
+[% ELSE %]
+   <input type="radio" name="cmdtype" value="doit" checked="checked">
+     Run this query
+   <br>
+   [% IF namedqueries.size > 0 %]
+     <br>
+     <table cellspacing="0" cellpadding="0">
+       <tr>
+         <td>
+           <input type="radio" name="cmdtype" value="editnamed">
+           Load my remembered query:
+         </td>
+         <td rowspan="3">
+           &nbsp;&nbsp;<select name="namedcmd">
+             [% FOREACH query = namedqueries %]
+               <option value="[% query FILTER html %]">
+                 [% query FILTER html %]</option>
+             [% END %]
+           </select>
+         </td>
+       </tr>  
+       <tr>
+         <td>
+           <input type="radio" name="cmdtype" value="runnamed">
+           Run my remembered query:
+         </td>
+       </tr>
+       <tr>
+          <td>
+           <input type="radio" name="cmdtype" value="forgetnamed">
+           Forget my remembered query:
+         </td>
+       </tr>
+     </table>
+     <br>
+   [% END %]
+   <input type="radio" name="cmdtype" value="asdefault">
+     Remember this as my default query
+   <br>
+   <input type="radio" name="cmdtype" value="asnamed">
+     Remember this query, and name it: 
+     <input type="text" name="newqueryname">
+     <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+     <input type="checkbox" name="tofooter" value="1">
+       and put it in my page footer
+[% END %]
+
+  <p>
+    Sort results by:
+    <select name="order">
+    [% FOREACH order = orders %]
+      <option value="[% order FILTER html %]"
+        [% " selected" IF default.order.0 == order %]>
+           [% ordersdesc.$order FILTER html %]</option> 
+    [% END %]
+    </select>
+
+    <input type="submit" value="[% button_name %]">
+    [% IF userdefaultquery %]
+       <p>
+         <a href="query.cgi?nukedefaultquery=1">
+           Set my default query back to the system default</a>
+       </p>
+    [% END %]
+  </p>

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/search.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/search.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/search/search.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. However, to use it, you need to fulfill
+  # the interfaces of search/form.html.tmpl, search/knob.html.tmpl and
+  # search/boolean-charts.html.tmpl.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Search for bugs"
+  onload = "selectProduct(document.forms['queryform']);"
+%]
+
+[% button_name = "Search" %]
+
+<form method="get" action="buglist.cgi" name="queryform">
+
+[% PROCESS search/form.html.tmpl %]
+
+[% PROCESS search/knob.html.tmpl %]
+
+<hr>
+
+[% PROCESS "search/boolean-charts.html.tmpl" %]
+
+<p>
+  Give me a <a href="queryhelp.cgi">clue</a> about how to use this form.
+</p>
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/sidebar.xul.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/sidebar.xul.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/usr_share_bugzilla_template_en_default/sidebar.xul.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,120 @@
+[% template_version = "1.0 at bugzilla.org" %]
+[%# -*- mode: sgml -*- %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Jacob Steenhagen <jake at acutex.net>
+  #                 Scott Collins <scc at mozilla.org>
+  #                 Christopher A. Aillon <christopher at aillon.com>
+  #%]
+<?xml version="1.0"?>
+<!-- [% template_version %] -->
+<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
+<?xml-stylesheet href="[% Param('urlbase') %]css/panel.css" type="text/css"?>
+<window
+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+  xmlns:html="http://www.w3.org/1999/xhtml"
+  orient="vertical"
+  onload="document.getElementById('query-field').addEventListener('keypress', initial_keypress_handler, true)">
+
+<!-- Load QuickSearch libraries -->
+<script type="application/x-javascript" src="/bugzilla/localconfig.js"/>
+<script type="application/x-javascript" src="/bugzilla/quicksearch.js"/>
+<script type="application/x-javascript"><![CDATA[
+
+// Tell QuickSearch that the source of this is the sidebar
+var sidebar = 1;
+
+function load_relative_url( aRelativeURL ) {
+        // DEBCOMPAT: CGI are under /cgi-bin/bugzilla
+        aRelativeURL = '[% Param('urlbase') %]' + aRelativeURL;
+        _content.location = aRelativeURL;
+}
+
+function initial_keypress_handler( aEvent ) {
+    this.removeAttribute("class");
+    this.addEventListener("keypress", normal_keypress_handler, true);
+    this.removeEventListener("keypress", initial_keypress_handler, true);
+}
+
+function normal_keypress_handler( aEvent ) {
+    if ( aEvent.keyCode == 13 )
+      QuickSearch(this.value);
+}
+
+]]></script>
+
+  <textbox id="query-field" class="descriptive-content" value="enter query" onfocus="this.setSelectionRange(0,this.value.length)"/>
+
+  <separator class="groove"/>
+
+  <box autostretch="never" valign="top">
+    <box orient="vertical" flex="1">
+      <text class="text-link" onclick="load_relative_url('query.cgi')" value="new query"/>
+      <text class="text-link" onclick="load_relative_url('reports.cgi')" value="reports"/>
+      <text class="text-link" onclick="load_relative_url('enter_bug.cgi')" value="new bug"/>
+      <separator class="thin"/>
+
+[% IF username %]
+      <text class="text-link" onclick="load_relative_url('userprefs.cgi')" value="edit prefs"/>
+  [%- IF UserInGroup('tweakparams') %]
+      <text class="text-link" onclick="load_relative_url('editparams.cgi')" value="edit params"/>
+  [%- END %]
+  [%- IF UserInGroup('editusers') || blessgroupset %]
+      <text class="text-link" onclick="load_relative_url('editusers.cgi')" value="edit users"/>
+  [%- END %]
+  [%- IF UserInGroup('editcomponents') %]
+      <text class="text-link" onclick="load_relative_url('editcomponents.cgi')" value="edit components"/>
+  [%- END %]
+  [%- IF UserInGroup('creategroups') %]
+      <text class="text-link" onclick="load_relative_url('editgroups.cgi')" value="edit groups"/>
+  [%- END %]
+  [%- IF UserInGroup('editkeywords') %]
+      <text class="text-link" onclick="load_relative_url('editkeywords.cgi')" value="edit keywords"/>
+  [%- END %]
+  [%- IF UserInGroup('tweakparams') %]
+      <text class="text-link" onclick="load_relative_url('sanitycheck.cgi')" value="sanity check"/>
+  [%- END %]
+      <text class="text-link" onclick="load_relative_url('relogin.cgi')" value="logout [% username FILTER html %]"/>
+      <separator class="thin"/>
+  [%- IF mybugsurl %]
+      <text class="text-link" onclick="load_relative_url('[% mybugsurl FILTER html %]')" value="my bugs"/>
+  [%- END %]
+  [%- IF Param('usevotes') %]
+      <text class="text-link" onclick="load_relative_url('votes.cgi?action=show_user')" value="my votes"/>
+  [%- END %]
+
+  [%- FOREACH name = namedqueries %]
+      <text class="text-link" onclick="load_relative_url('buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% name FILTER url_quote %]')" value="[% name FILTER html %]"/>
+  [% END %]
+
+[% ELSE %]
+      <text class="text-link" onclick="load_relative_url('createaccount.cgi')" value="new user"/>
+      <text class="text-link" onclick="load_relative_url('query.cgi?GoAheadAndLogIn=1')" value="log in"/>
+[% END %]
+
+    </box>
+  </box>
+
+  <spring flex="1"/>
+  <box orient="horizontal">
+    <spring flex="1"/>
+    <html align="right">
+      <html:a class="text-link" href="[% Param('urlbase') %]sidebar.cgi">reload</html:a>
+    </html>
+  </box>
+</window>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/cancel-token.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/cancel-token.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/cancel-token.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,39 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: [% tokentype %] token cancelled
+
+A token was cancelled from [% remoteaddress %].  
+If you did not request this, it could be either an honest 
+mistake or the result of a malicious hack attempt.  
+
+Take a look at the information below and forward this email 
+to [% maintainer %] if you suspect foul play.
+
+            Token: [% token %]
+       Token Type: [% tokentype %]
+             User: [% emailaddress %]
+       Issue Date: [% issuedate %]
+       Event Data: [% eventdata %]
+Cancelled Because: [% cancelaction %]
+
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,58 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Create a new Bugzilla account"
+%]
+
+<p>
+  To create a Bugzilla account, all that you need to do is to enter a
+  legitimate e-mail address.  The account will be created, and its
+  password will be mailed to you. Optionally you may enter your real name 
+  as well.
+</p>
+
+<form method="get" action="createaccount.cgi">
+  <table>
+    <tr>
+      <td align="right">
+        <b>E-mail address:</b>
+      </td>
+      <td>
+        <input size="35" name="login">
+        [% Param('emailsuffix') FILTER html %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>Real name:</b>
+      </td>
+      <td>
+        <input size="35" name="realname">
+      </td>
+    </tr>
+  </table>
+  <br>
+  <input type="submit" value="Create Account">
+</form>
+
+[% PROCESS global/footer.html.tmpl %] 

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Account Created"
+%]
+
+<p>
+  A new account,  
+  <tt>[% login FILTER html %]</tt>,
+  has been created and a randomly-generated password has been e-mailed 
+  to that address.
+</p>
+
+<p>
+  When the e-mail arrives, 
+  <a href="query.cgi?GoAheadAndLogIn=1">log in here</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %] 

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-new.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-new.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-new.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,39 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: Bugzilla Change Email Address Request
+
+Bugzilla has received a request to change the email address 
+for the [% oldemailaddress %] account to your address.
+
+To confirm the change, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cfmem&t=[% token FILTER url_quote %]
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER url_quote %]
+
+If you do nothing, the request will lapse after 
+[%- max_token_age %] days ([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) %]).

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-old.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-old.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/change-old.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,44 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[%# INTERFACE:
+  # emailaddress: string. The user's old Bugzilla login email address.
+  # newemailaddress: string. The user's new Bugzilla login email address.
+  # token: string. The token associated with this change.
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject: Bugzilla Change Email Address Request
+Importance: High
+X-MSMail-Priority: High
+X-Priority: 1
+
+Bugzilla has received a request to change the email address 
+for your account to [% newemailaddress %].
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER url_quote %]
+
+If you do nothing, and [% newemailaddress %] confirms this request, the 
+change will be made permanent after 
+[%- max_token_age %] days ([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) %]).

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/confirm.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/confirm.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/email/confirm.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,47 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+
+[%# INTERFACE:
+  # token: string. The token to be used in this address change.
+  #%]
+  
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  To change your email address, please enter the old email address:
+</p>
+
+<form method="post" action="token.cgi">
+  <input type="hidden" name="t" value="[% token FILTER html %]">
+  <input type="hidden" name="a" value="chgem">
+  <table>
+    <tr>
+      <th align="right">Old Email Address:</th>
+      <td><input type="input" name="email" size="36"></td>
+    </tr>
+    <tr>
+      <th align="right"> </th>
+      <td><input type="submit" value="Submit"></td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/exists.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/exists.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/exists.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,38 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Account Exists"
+%]
+
+<form method="get" action="token.cgi">
+  <input type="hidden" name="a" value="reqpw">
+  <input type="hidden" name="loginname" value="[% login FILTER html %]">
+  A Bugzilla account for <tt>[% login FILTER html %]</tt> already exists. If you
+  are the account holder and have forgotten your password, 
+  <input type="submit" value="submit a request to change it">.
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/forgotten-password.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/forgotten-password.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/forgotten-password.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,38 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):     John Vandenberg <zeroj at null.net>
+  #%]
+[% expiration_ts = token_ts + (max_token_age * 86400) %]
+From: bugzilla-admin-daemon
+To: [% emailaddress %]
+Subject:  Bugzilla Change Password Request
+
+You (or someone impersonating you) has requested to change your Bugzilla
+password.  To change your password, visit the following link:
+
+[%+ Param('urlbase') %]token.cgi?a=cfmpw&t=[% token FILTER url_quote %]
+
+If you are not the person who made this request, or you wish to cancel
+this request, visit the following link:
+
+[%+ Param('urlbase') %]token.cgi?a=cxlpw&t=[% token FILTER url_quote %]
+
+If you do nothing, the request will lapse after 
+[%- max_token_age %] days 
+([% time2str("%H:%M on the %o of %B, %Y", expiration_ts) -%]) or when you log in successfully.

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/set-forgotten-password.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/set-forgotten-password.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/password/set-forgotten-password.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,55 @@
+<!-- 1.0 at bugzilla.org -->
+ [%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  To change your password, enter a new password twice:
+</p>
+
+<form method="post" action="token.cgi">
+  <input type="hidden" name="t" value="[% token FILTER html %]">
+  <input type="hidden" name="a" value="chgpw">
+  <table>
+    <tr>
+      <th align="right">New Password:</th>
+      <td>
+        <input type="password" name="password" size="16" maxlength="16">
+      </td>
+    </tr>
+    
+    <tr>
+      <th align="right">New Password Again:</th>
+      <td>
+        <input type="password" name="matchpassword" size="16" maxlength="16">
+      </td>
+    </tr>
+    
+    <tr>
+      <th align="right">&nbsp;</th>
+      <td>
+        <input type="submit" value="Submit">
+      </td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/account.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/account.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/account.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # realname: string. The user's real name, if any.
+  # login:    string. The user's Bugzilla login email address.
+  # login_change_date: string. The date the email change will be complete. (optional)
+  # new_login_name:    string. The user's new Bugzilla login whilst not confirmed. (optional)
+  #%]
+
+<table>
+  <tr>
+    <td colspan="3">
+      Please enter your existing password to confirm account changes.
+    </td>
+  </tr>
+  <tr>
+    <th align="right">Password:</th>
+    <td>
+      <input type="hidden" name="Bugzilla_login" 
+             value="[% login FILTER html %]">
+      <input type="password" name="Bugzilla_password">
+    </td>
+  </tr>              
+  <tr>
+    <td colspan="2"><hr></td>
+  </tr>
+
+  <tr>
+    <th align="right">New password:</th>
+    <td>
+      <input type="password" name="new_password1">
+    </td>
+  </tr>              
+
+  <tr>
+    <th align="right">Re-enter new password:</th>
+    <td>
+      <input type="password" name="new_password2">
+    </td>
+  </tr>              
+
+  <tr>
+    <th align="right">Your real name (optional, but encouraged):</th>
+    <td>
+      <input size="35" name="realname" value="[% realname FILTER html %]">
+    </td>
+  </tr>  
+
+  [% IF Param('allowemailchange') %]
+    [% IF login_change_date %]
+      [% IF new_login_name %]
+        <tr>
+          <th align="right">Pending email address:</th>
+          <td>[% new_login_name FILTER html %]</td>
+        </tr>
+        <tr>
+          <th align="right">Change request expires:</th>
+          <td>[% login_change_date %]</td>
+        </tr>
+      [% ELSE %]
+        <tr>
+          <th align="right">Confirmed email address:</th>
+          <td>[% login FILTER html %]
+        </tr>
+        <tr>
+          <th align="right">Completion date:</th>
+          <td>[% login_change_date %]</td>
+        </tr>
+      [% END %]
+    [% ELSE %]
+      <tr>
+        <th align="right">New email address:</th>
+        <td>
+          <input size="35" name="new_login_name">
+        </td>
+      </tr>
+    [% END %]
+  [% END %]
+  
+</table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/email.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/email.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/email.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,162 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # watchedusers: string. 
+  #               Comma-separated list of email addresses this user watches.
+  # excludeself:  boolean.
+  #               True if user is not receiving self-generated mail.
+  # <rolename>:   Multiple hashes, one for each rolename (e.g. owner; see 
+  #               below), keyed by reasonname (e.g. comments; again, see 
+  #               below). The value is a boolean - true if the user is 
+  #               receiving mail for that reason when in that role.
+  # Also references the 'supportwatchers' Param.
+  #%]
+
+[% useqacontact = Param('useqacontact') %]
+ 
+<table>
+  [% IF Param('supportwatchers') %]
+    <tr>
+      <td colspan="4">
+        <hr>
+      </td>
+    </tr>
+
+    <tr>
+      <td colspan="4">
+        If you want to help cover for someone when they're on vacation, or if
+        you need to do the QA related to all of their bugs, you can tell 
+        Bugzilla to send mail related to their bugs to you also.  List the 
+        email addresses of any users you wish to watch here, separated by
+        commas.
+      </td>
+    </tr>
+
+    <tr>
+      <th align="right">Users to watch:</th>
+      <td>
+        <input size="35" name="watchedusers" value="[% watchedusers FILTER html %]">
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+    <td colspan="2">
+      <p>
+        If you don't like getting a notification for "trivial"
+        changes to bugs, you can use the settings below to
+        filter some (or even all) notifications.
+      </p>
+    </td>
+  </tr>
+</table>
+
+<hr>
+
+<table>
+  <tr>
+    <td colspan="2">
+      <b>Global options:</b>
+    </td>
+  </tr>
+
+  <tr>
+    <td width="150"></td>
+    <td>
+      Only email me reports of changes made by other people
+      <input type="checkbox" name="ExcludeSelf" value="on"
+        [% " checked" IF excludeself %]>
+      <br>
+    </td>
+  </tr>
+</table>
+
+<hr>
+<b>Field/recipient specific options:</b>
+<br>
+<br>
+
+
+<table width="100%" border="1">
+  <tr>
+    <td colspan="[% useqacontact ? '5' : '4' %]" align="center" width="50%">
+      <b>When my relationship to this bug is:</b>
+    </td>
+    <td rowspan="2" width="50%">
+      <b>I want to receive mail when:</b>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="center" width="10%">
+      <b>Reporter</b>
+    </td>
+    <td align="center" width="10%">
+      <b>Assignee</b>
+    </td>
+    [% IF useqacontact %]
+      <td align="center" width="10%">
+        <b>QA Contact</b>
+      </td>
+    [% END %]
+    <td align="center" width="10%">
+      <b>CC</b>
+    </td>
+    <td align="center" width="10%">
+      <b>Voter</b>
+    </td>
+  </tr>
+
+  [% FOREACH reason = [ 
+      { name = 'Removeme',    
+        description = 'I\'m added to or removed from this capacity' },
+      { name = 'Comments',    
+        description = 'New Comments are added' },
+      { name = 'Attachments', 
+        description = 'New Attachments are added' },
+      { name = 'Status',      
+        description = 'Priority, status, severity, and/or milestone changes' },
+      { name = 'Resolved',    
+        description = 'The bug is resolved or verified' },
+      { name = 'Keywords',    
+        description = 'Keywords field changes' },
+      { name = 'CC',          
+        description = 'CC field changes' },
+      { name = 'Other',       
+        description = 'Any field not mentioned above changes' } ] %]
+    <tr>
+      [% FOREACH role = [ "Reporter", "Owner", "QAcontact", "CClist", "Voter" ] 
+       %]
+        [% NEXT IF role == "QAcontact" AND NOT useqacontact %]
+        <td align="center">
+          <input type="checkbox" name="email[% role %][% reason.name %]" value="on"
+            [% " checked" IF $role.${reason.name} %]>
+        </td>
+      [% END %]
+      <td>
+        [% reason.description %]
+      </td>
+    </tr>
+  [% END %]
+</table>       
+
+<br>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/footer.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/footer.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/footer.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,76 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # mybugslink: boolean. True if the user wishes the My Bugs link to appear. 
+  # queries: array of hashes. May be empty. Each hash has two members:
+  #   name:   string. The name of the query.
+  #   footer: boolean. True if the query appears in the footer.
+  #%]
+ 
+<table>
+  <tr>
+    <th align="right">The 'My bugs' link:</th>
+    <td>
+      <select name="mybugslink">
+        <option value="1">should appear on the footer of every page</option>  
+        <option value="0" 
+          [% " selected" IF NOT mybugslink %]>should not be displayed
+        </option>  
+      </select>
+    </td>
+  </tr>    
+    
+  <input type="hidden" name="numqueries" value="[% queries.size %]">
+  [% IF queries.size %]
+    [% FOREACH query = queries %]
+      <tr>
+        <th align="right">Your query named '[% query.name FILTER html %]':</th>
+        <td>
+          <select name="query-[% loop.index %]">
+            <option value="0">should only appear in the query page</option>  
+            <option value="1" 
+              [% " selected" IF query.footer %]>
+              should appear on the footer of every page
+            </option>  
+          </select>
+        </td>
+      </tr>
+
+      <input type="hidden" name="name-[% loop.index %]" 
+             value="[% query.name FILTER html %]">
+    [% END %]
+
+  [% ELSE %]
+    <tr>
+      <td colspan="4">
+        <br>                            
+        If you create remembered queries using the 
+        <a href="query.cgi">query page</a>,
+        you can then come to this page and choose to have some of them  
+        appear in the footer of each Bugzilla page.
+        <br>
+        <br>
+      </td>
+    </tr>
+  [% END %]
+    
+</table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/permissions.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/permissions.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/permissions.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,57 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # has_bits: array of strings. May be empty.
+  #           Descriptions of the permission bits the user has. 
+  # set_bits: array of strings. May be empty. 
+  #           Descriptions of the permission bits the user can set for 
+  #           other people.
+  #%]
+ 
+<table>
+  <tr>
+    <td>
+      [% IF has_bits.size %]
+        You have the following permission bits set on your account:
+        <ul>
+          [% FOREACH bit_description = has_bits %]
+            <li>[% bit_description %]</li>
+          [% END %]
+        </ul>
+      [% ELSE %]
+        There are no permission bits set on your account.
+      [% END %]
+
+      [% IF set_bits.size %]
+        And you can turn on or off the following bits for
+        <a href="editusers.cgi">other users</a>:
+        <p>
+          <ul>
+          [% FOREACH bit_description = set_bits %]
+            <li>[% bit_description %]</li>
+          [% END %]
+          </ul>
+        </p>
+      [% END %]
+    </td>
+  </tr>
+</table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/prefs.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/prefs.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/account/prefs/prefs.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,132 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # login: string. The user's Bugzilla login email address.
+  # tabs: List of hashes. May not be empty. Each hash has three members:
+  #   name: string. Name of the tab (used internally.)
+  #   description: string. Description of the tab (used in tab title.)
+  #   saveable: boolean. True if tab has a form which can be submitted.
+  #               True if user is not receiving self-generated mail.
+  # Note: For each tab name, a template "prefs/${tab.name}.tmpl" must exist, 
+  # and its interface must be fulfilled.
+  # current_tab: A direct reference to one of the hashes in the tabs list.
+  #              This tab will be displayed.
+  # changes_saved: boolean/string. True if the CGI processed form data before 
+  #                displaying anything, and can contain an optional custom
+  #                message if required (which Perl still evaluates as True).
+  #%]
+
+[% filtered_login = login FILTER html %]
+[% PROCESS global/header.html.tmpl
+   title = "User Preferences"
+   h2 = filtered_login
+   style = "td.selected_tab {
+              border-width: 2px 2px 0px;
+              border-style: solid; 
+            }
+            td.unselected_tab, td.spacer {
+              border-width: 0px 0px 2px 0px;
+              border-style: solid; 
+            }"
+ %]
+
+[% tabs = [ { name => "account", description => "Account settings", 
+              saveable => "1" },
+            { name => "email", description => "Email settings", 
+              saveable => "1" },
+            { name => "footer", description => "Page footer", 
+              saveable => "1" },
+            { name => "permissions", description => "Permissions", 
+              saveable => "0" } ] %]
+
+<center>
+  <table cellspacing="0" cellpadding="10" border="0" width="100%">
+    <tr>
+      <td class="spacer">&nbsp;</td>
+ 
+      [% FOREACH tab = tabs %]
+        [% IF tab.name == current_tab_name %]
+          [% current_tab = tab %]
+          <td align="center" bgcolor="lightblue" class="selected_tab">
+            [% tab.description %]
+          </td>
+        [% ELSE %]
+          <td align="center" bgcolor="#BBBBEE" class="unselected_tab">
+            <a href="userprefs.cgi?tab=[% tab.name %]">[% tab.description %]</a>
+          </td>
+        [% END %]
+       [% END %]
+ 
+       <td class="spacer">&nbsp;</td>
+     </tr>
+   </table>
+</center>
+
+[% IF changes_saved %]
+  <p>
+    <font color="red">
+      The changes to your 
+      [% current_tab.description FILTER lower %] have been saved.
+    </font>
+  </p>
+  [% IF changes_saved != 1 %]
+    <p>
+      [% changes_saved FILTER html %]
+    </p>
+  [% END %]
+[% END %]
+
+<h3>[% current_tab.description %]</h3>
+
+<form method="post">
+  <input type="hidden" name="tab" value="[% current_tab.name %]">
+
+  [%# See bug 160710 for why this is done this way %]
+  [% IF current_tab.name == "account" %]
+    [% PROCESS "account/prefs/account.html.tmpl" %]
+  [% ELSIF current_tab.name == "email" %]
+    [% PROCESS "account/prefs/email.html.tmpl" %]
+  [% ELSIF current_tab.name == "footer" %]
+    [% PROCESS "account/prefs/footer.html.tmpl" %]
+  [% ELSIF current_tab.name == "permissions" %]
+    [% PROCESS "account/prefs/permissions.html.tmpl" %]
+  [% END %]
+
+  [% IF current_tab.saveable %]
+    <input type="hidden" name="dosave" value="1">
+
+    <table>
+      <tr>
+        <td width="150"></td>
+        <td>
+          <input type="submit" value="Submit Changes">
+         </td>
+      </tr>
+    </table>
+  [% END %]
+  
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
+
+    
+    

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,77 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Create Attachment Status"
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+  "
+%]
+
+<form method="post" action="editattachstatuses.cgi">
+  <input type="hidden" name="action" value="insert">
+  <input type="hidden" name="id" value="[% id %]">
+
+  <table cellspacing="0" cellpadding="4" border="0">
+    <tr>
+      <th>Name:</th>
+      <td>
+        <input type="text" name="name" size="50" maxlength="50">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Description:</th>
+      <td>
+        <textarea name="desc" rows="4" cols="50"></textarea>
+      </td>
+    </tr>
+
+    <tr>
+      <th>Sort Key:</th>
+      <td>
+        <input type="text" name="sortkey" size="5" maxlength="5">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Product:</th>
+      <td>
+        <select name="product">
+          [% FOREACH item = products %]
+            <option value="[% item FILTER html %]">[% item FILTER html %]</option>
+          [% END %]
+        </select>
+      </td>
+    </tr>
+
+    <tr>
+      <th></th>
+      <td>
+        <input type="submit" value="Add">
+      </td>
+    </tr>
+
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/delete.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/delete.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/delete.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,55 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #                 Jeff Hedlund <jeff.hedlund at matrixsi.com>
+  #%]
+
+[%# Filter off the name here to be used multiple times below %]
+[% name = name FILTER html %]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Confirm Delete of Attachment Status '$name'" 
+%]
+
+<p>
+   [% attachcount %] attachments have the status '[% name %]'. If you delete
+   it, those attachments will lose this status.
+</p>
+
+<table>
+   <tr>
+      <td colspan=2>
+         Do you really want to delete this status?
+      </td>
+   </tr>
+   <tr>
+      <td>
+         <a href="editattachstatuses.cgi?action=delete&id=[% id %]">
+            Yes, delete
+         </a>
+      </td>
+      <td align="right">
+         <a href="editattachstatuses.cgi">
+            No, don't delete
+         </a>
+      </td>
+   </tr>
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,81 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # name: string. The name of the attachment status we are editing.
+  # desc: string. Its description.
+  # sortkey: integer. Where it's sorted in the list.
+  # product: string. Which product it applies to.
+  # id: integer. Its internal ID number.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Edit Attachment Status"
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+  "
+%]
+
+<form method="post" action="editattachstatuses.cgi">
+  <input type="hidden" name="action" value="update">
+  <input type="hidden" name="id" value="[% id %]">
+
+  <table cellspacing="0" cellpadding="4" border="0">
+    <tr>
+      <th>Name:</th>
+      <td>
+        <input type="text" name="name" value="[% name FILTER html %]" size="50" maxlength="50">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Description:</th>
+      <td>
+        <textarea name="desc" rows="4" cols="50">[% desc FILTER html %]</textarea>
+      </td>
+    </tr>
+
+    <tr>
+      <th>Sort Key:</th>
+      <td>
+        <input type="text" name="sortkey" value="[% sortkey %]" size="5" maxlength="5">
+      </td>
+    </tr>
+
+    <tr>
+      <th>Product:</th>
+      <td>
+        [% product FILTER html %]
+      </td>
+    </tr>
+
+    <tr>
+      <th></th>
+      <td>
+        <input type="submit" value="Update">
+      </td>
+    </tr>
+
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/admin/attachstatus/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # statusdefs: list of hashes. may be empty. Each hash has six members:
+  #   name: string. The name of the attachment status.
+  #   description: string. Its description.
+  #   sortkey: integer. Sorting priority.
+  #   product: string. The product to which the attachment status applies.
+  #   id: integer. Its internal ID number.
+  #   attachcount: integer. How many attachments have that status.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = 'Administer Attachment Statuses'
+  message = message
+  style = "
+    th { text-align: left; }
+  "
+%]
+
+<table cellspacing="0" cellpadding="4" border="1">
+
+  <tr>
+    <th>Name</th>
+    <th>Description</th>
+    <th>Sort Key</th>
+    <th>Product</th>
+    <th>Action(s)</th>
+  </tr>
+
+  [% FOREACH statusdef = statusdefs %]
+
+    <tr>
+      <td>[% statusdef.name FILTER html %]</td>
+      <td>[% statusdef.description FILTER html %]</td>
+      <td>[% statusdef.sortkey %]</td>
+      <td>[% statusdef.product FILTER html %]</td>
+      <td>
+        <a href="editattachstatuses.cgi?action=edit&id=[% statusdef.id %]">
+            Edit</a>
+        &nbsp;|&nbsp;
+        <a href="editattachstatuses.cgi?action=confirmdelete&id=[% statusdef.id %]" 
+         onclick="return confirmDelete([% statusdef.attachcount %],
+                                       '[% statusdef.name FILTER js %]',
+                                       [% statusdef.id %]);">
+            Delete</a>
+      </td>
+    </tr>
+
+  [% END %]
+
+  <tr>
+    <td colspan="4"></td>
+    <td>
+      <a href="editattachstatuses.cgi?action=create">Create</a>
+    </td>
+  </tr>
+
+</table>
+<script language="JavaScript">
+  function confirmDelete(attachcount, name, id)
+  {
+    if (attachcount > 0) {
+        msg = attachcount + ' attachments have the status ' +
+              name + '.  If you delete it, those attachments ' +
+              'will lose this status.  Do you really want to ' +
+              'delete this status?';
+    }
+    else {
+        msg = 'Are you sure you want to delete attachment status ' +
+              name + '?';
+    }
+    if (confirm(msg)) {
+      location.href = "editattachstatuses.cgi?action=delete&id=" + id;
+    }
+    return false;
+  }
+</script>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/content-types.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/content-types.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/content-types.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,27 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+          <option value="text/plain">plain text (text/plain)</option>
+          <option value="text/html">HTML source (text/html)</option>
+          <option value="image/gif">GIF image (image/gif)</option>
+          <option value="image/jpeg">JPEG image (image/jpeg)</option>
+          <option value="image/png">PNG image (image/png)</option>
+          <option value="application/octet-stream">binary file (application/octet-stream)</option>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,130 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# Define strings that will serve as the title and header of this page %]
+[% title = BLOCK %]Create New Attachment for Bug #[% bugid %][% END %]
+[% h1 = BLOCK %]Create New Attachment for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
+[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
+
+[% PROCESS global/header.html.tmpl 
+  title = title
+  h1 = h1
+  h2 = h2
+  style = "
+    th { text-align: right; vertical-align: baseline; white-space: nowrap; }
+    td { text-align: left; vertical-align: baseline; padding-bottom: 5px; }
+  "
+  onload="setContentTypeDisabledState();"
+%]
+
+<form name="entryform" method="post" action="attachment.cgi" enctype="multipart/form-data">
+  <input type="hidden" name="bugid" value="[% bugid %]">
+  <input type="hidden" name="action" value="insert">
+   
+  <table>
+    <tr>
+      <th>File:</th>
+      <td>
+        <em>Enter the path to the file on your computer.</em><br>
+        <input type="file" name="data" size="50">
+      </td>
+    </tr>
+    <tr>
+      <th>Description:</th>
+      <td>
+        <em>Describe the attachment briefly.</em><br>
+        <input type="text" name="description" size="60" maxlength="200">
+      </td>
+    </tr>
+    <tr>
+      <th></th>
+      <td>
+      </td>
+    </tr>
+    <tr>
+      <th>Content Type:</th>
+      <td>
+        <em>If the attachment is a patch, check the box below.</em><br>
+        <input type="checkbox" name="ispatch" value="1" onchange="setContentTypeDisabledState();"> patch<br><br>
+
+        <em>Otherwise, choose a method for determining the content type.</em><br>
+        <input type="radio" name="contenttypemethod" value="autodetect"> 
+          auto-detect<br>
+        <input type="radio" name="contenttypemethod" value="list"> 
+          select from list: <select name="contenttypeselection" onchange="this.form.contenttypemethod[1].checked = true;">
+            [% PROCESS "attachment/content-types.html.tmpl" %]
+          </select><br>
+        <input type="radio" name="contenttypemethod" value="manual">
+          enter manually: <input type="text" name="contenttypeentry" size="30" maxlength="200" onchange="if (this.value) this.form.contenttypemethod[2].checked = true;">
+      </td>
+    </tr>
+    <tr>
+      <th>Obsoletes:</th>
+      <td>
+        <em>(optional) Check each existing attachment made obsolete by your new attachment.</em><br>
+        [% IF attachments.size %]
+          [% FOREACH attachment = attachments %]
+            <input type="checkbox" name="obsolete" value="[% attachment.id %]">
+            <a href="attachment.cgi?id=[% attachment.id %]&amp;action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br>
+          [% END %]
+        [% ELSE %]
+            [no attachments can be made obsolete]
+        [% END %]
+      </td>
+    </tr>
+    <tr>
+      <th>Comment:</th>
+      <td>
+        <em>(optional) Add a comment about this attachment to the bug.</em><br>
+        <textarea wrap="soft" name="comment" rows="6" cols="80"></textarea>
+      </td>
+    </tr>
+    <tr>
+      <th>&nbsp;</th>
+      <td><input type="submit" value="Submit"></td>
+    </tr>
+  </table>
+
+</form>
+
+<script language="JavaScript" type="text/javascript">
+  <!--
+  function setContentTypeDisabledState() 
+  {
+    var entryform = document.entryform;
+
+    var isdisabled = false;
+    if (entryform.ispatch.checked) 
+      isdisabled = true;
+
+    for (var i=0 ; i<entryform.contenttypemethod.length ; i++)
+      entryform.contenttypemethod[i].disabled = isdisabled;
+
+    entryform.contenttypeselection.disabled = isdisabled;
+    entryform.contenttypeentry.disabled = isdisabled;
+  }
+  //-->
+</script>
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,66 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # bugid: integer. ID of the bug we just attached an attachment to.
+  # attachid: integer. ID of the attachment just created.
+  # description: string. Description of the attachment just created.
+  # contenttype: string. The Content Type we attached it as.
+  # contenttypemethod: string. How we got the content type of the attachment.
+  #  Possible values: autodetect, list, manual.
+  # mailresults: string. who was mailed, and who wasn't.
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+  title = "Changes Submitted"
+  style = "th { text-align: left; }"
+%]
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>
+        <a title="[% description FILTER html %]" href="attachment.cgi?id=[% attachid %]&amp;action=edit">Attachment #[% attachid %]</a> 
+        to <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a> Created
+      </h2>
+
+      [% mailresults FILTER html %]
+
+      [% IF contenttypemethod == 'autodetect' %]
+        <p>
+          <b>Note:</b> Bugzilla automatically detected the content type
+          <em>[% contenttype %]</em> for this attachment.  If this is 
+          incorrect, correct the value by 
+          <a href="attachment.cgi?id=[% attachid %]&amp;action=edit">editing the attachment</a>.
+        </p>
+      [% END %]
+    </td>
+    <td>
+      <a href="show_bug.cgi?id=[% bugid %]">Go back to bug #[% bugid %]</a>
+    </td>
+  </tr>
+</table>
+
+<p>
+<a href="attachment.cgi?bugid=[% bugid %]&amp;action=enter">Create Another Attachment to Bug #[% bugid %]</a>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,226 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# Define strings that will serve as the title and header of this page %]
+[% title = BLOCK %]Edit Attachment #[% attachid %] for Bug #[% bugid %][% END %]
+[% h1 = BLOCK %]Edit Attachment #[% attachid %] for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
+[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
+
+[% PROCESS global/header.html.tmpl 
+  title = title
+  h1 = h1
+  h2 = h2
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+    td#info { text-align: right; vertical-align: top; }
+    td#actions { text-align: right; vertical-align: bottom; }
+    td#noview { text-align: left; vertical-align: center; }
+  "
+%]
+
+<script type="application/x-javascript" language="JavaScript">
+  <!--
+  function editAsComment()
+    {
+      // Get the content of the document as a string.
+      var viewFrame = document.getElementById('viewFrame');
+      var aSerializer = new XMLSerializer();
+      var contentDocument = viewFrame.contentDocument;
+      var theContent = aSerializer.serializeToString(contentDocument);
+
+      // If this is a plaintext document, remove cruft that Mozilla adds
+      // because it treats it as an HTML document with a big PRE section.
+      // http://bugzilla.mozilla.org/show_bug.cgi?id=86012
+      var contentType = '[% contenttype FILTER js %]';
+      if ( contentType == 'text/plain' )
+        {
+          theContent = theContent.replace( /^<html><head\/><body><pre>/i , "" );
+          theContent = theContent.replace( /<\/pre><\/body><\/html>$/i , "" );
+          theContent = theContent.replace( /&lt;/gi , "<" );
+          theContent = theContent.replace( /&gt;/gi , ">" );
+          theContent = theContent.replace( /&amp;/gi , "&" );
+        }
+
+      // Add mail-style quote indicators (>) to the beginning of each line.
+      // ".*\n" matches lines that end with a newline, while ".+" matches
+      // the rare situation in which the last line of a file does not end
+      // with a newline.
+      theContent = theContent.replace( /(.*\n|.+)/g , ">$1" );
+
+      hideElementById('viewFrame');
+      hideElementById('editButton');
+      hideElementById('smallCommentFrame');
+
+      showElementById('undoEditButton');
+
+      // Show the TEXTAREA that will contain the editable attachment
+      // and copy the content of the attachment into it.
+      showElementById('editFrame');
+
+      var editFrame = document.getElementById('editFrame');
+      editFrame.value = theContent;
+      editFrame.value += "\n\n";
+    }
+  function undoEditAsComment()
+    {
+      // Hide the "edit attachment as comment" TEXTAREA and the "undo" button.
+      hideElementById('undoEditButton');
+      hideElementById('editFrame');
+
+      // Show the "view attachment" IFRAME, the "redo" button that allows the user
+      // to go back to editing the attachment as a comment, and the small comment field.
+      showElementById('viewFrame');
+      showElementById('redoEditButton');
+      showElementById('smallCommentFrame');
+
+    }
+  function redoEditAsComment()
+    {
+      // Hide the "view attachment" IFRAME, the "redo" button that allows the user
+      // to go back to editing the attachment as a comment, and the small comment field.
+      hideElementById('viewFrame');
+      hideElementById('redoEditButton');
+      hideElementById('smallCommentFrame');
+
+      // Show the "edit attachment as comment" TEXTAREA and the "undo" button.
+      showElementById('undoEditButton');
+      showElementById('editFrame');
+    }
+
+  function hideElementById(id)
+  {
+    var elm = document.getElementById(id);
+    if (elm) {
+      elm.style.display = 'none';
+    }
+  }
+
+  function showElementById(id, val)
+  {
+    var elm = document.getElementById(id);
+    if (elm) {
+      if (!val) val = 'inline';
+      elm.style.display = val;
+    }
+  }
+
+  function normalizeComments()
+  {
+    // Remove the unused comment field from the document so its contents
+    // do not get transmitted back to the server.
+
+    var small = document.getElementById('smallCommentFrame');
+    var big = document.getElementById('editFrame');
+    if ( small.style.display == 'none' )
+    {
+      small.parentNode.removeChild(small);
+    }
+    if ( big.style.display == 'none' )
+    {
+      big.parentNode.removeChild(big);
+    }
+  }
+  //-->
+</script>
+
+<form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
+  <input type="hidden" name="id" value="[% attachid %]">
+  <input type="hidden" name="action" value="update">
+  <input type="hidden" name="contenttypemethod" value="manual">
+
+  <table width="100%">
+
+    <tr>
+      <td width="25%">
+        <small>
+        <b>Description:</b><br>
+          <textarea rows="3" cols="25" name="description" wrap="soft">[% description FILTER html %]</textarea><br>
+
+        <b>MIME Type:</b><br>
+          <input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br>
+
+        <b>Flags:</b><br>
+          <input type="checkbox" name="ispatch" value="1"[% " checked" IF ispatch %]>patch
+          <input type="checkbox" name="isobsolete" value="1"[% " checked" IF isobsolete %]>obsolete<br>
+
+        [% IF statusdefs.size %]
+          <b>Status:</b><br>
+            [% FOREACH def = statusdefs %]
+                <input type="checkbox" name="status" value="[% def.id %]"[% " checked" IF statuses.${def.id} %]>[% def.name FILTER html %]<br>
+            [% END %]
+        [% END %]
+
+        <div id="smallCommentFrame">
+          <b>Comment (on the bug):</b><br>
+            <textarea name="comment" rows="5" cols="25" wrap="soft"></textarea><br>
+        </div>
+
+        <input type="submit" value="Submit">
+
+        </small>
+      </td>
+
+      [% IF isviewable %]
+        <td width="75%">
+          <textarea id="editFrame" name="comment" style="height: 400px; width: 100%; display: none;" cols="80" wrap="soft"></textarea>
+          <iframe id="viewFrame" src="attachment.cgi?id=[% attachid %]&amp;action=view" style="height: 400px; width: 100%;">
+            <b>You cannot view the attachment while editing it because your browser does not support IFRAMEs.
+            <a href="attachment.cgi?id=[% attachid %]&amp;action=view">View the attachment on a separate page</a>.</b>
+          </iframe>
+          <script type="application/x-javascript" language="JavaScript">
+            <!--
+            if (typeof document.getElementById == "function") {
+              document.write('<button type="button" id="editButton" onclick="editAsComment();">Edit Attachment As Comment</button>');
+              document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment();" style="display: none;">Undo Edit As Comment</button>');
+              document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment();" style="display: none;">Redo Edit As Comment</button>');
+            }
+            //-->
+          </script>
+        </td>
+      [% ELSE %]
+        <td id="noview" width="50%">
+          <p><b>
+            Attachment cannot be viewed because its MIME type is not either text/*, image/*, or application/vnd.mozilla.*.
+            <a href="attachment.cgi?id=[% attachid %]&amp;action=view">Download the attachment instead</a>.
+          </b></p>
+        </td>
+      [% END %]
+
+    </tr>
+
+  </table>
+
+  Attachments on this Bug:
+  [% FOREACH a = attachments %]
+    [% IF a == attachid %]
+      #[% a %]
+    [% ELSE %]
+      <a href="attachment.cgi?id=[% a %]&amp;action=edit">#[% a %]</a>
+    [% END %]
+    [% " |" UNLESS loop.last() %]
+  [% END %]
+
+</form>
+
+<br>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,81 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<br>
+<table cellspacing="0" cellpadding="4" border="1">
+  <tr>
+    <th bgcolor="#cccccc" align="left">Attachment</th>
+    <th bgcolor="#cccccc" align="left">Type</th>
+    <th bgcolor="#cccccc" align="left">Modified</th>
+    <th bgcolor="#cccccc" align="left">Status</th>
+    <th bgcolor="#cccccc" align="left">Actions</th>
+  </tr>
+
+  [% FOREACH attachment = attachments %]
+    <tr>
+      <td valign="top">
+        [% IF attachment.isobsolete %]
+          <strike><a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a></strike>
+        [% ELSE %]
+          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a> 
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF attachment.ispatch %]
+          <i>patch</i>
+        [% ELSE %]
+          [% attachment.contenttype FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">[% attachment.date %]</td>
+
+      <td valign="top">
+        [% IF attachment.statuses.size == 0 %]
+          <i>none</i>
+        [% ELSE %]
+          [% FOREACH s = attachment.statuses %]
+            [% s FILTER html FILTER replace('\s', '&nbsp;') %]<br>
+          [% END %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF attachment.canedit %]
+          <a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=edit">Edit</a>
+        [% ELSE %]
+          None
+        [% END %]
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+    <td colspan="4">
+      <a href="attachment.cgi?bugid=[% bugid %]&amp;action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
+    </td>
+    <td colspan="1">
+      <a href="attachment.cgi?bugid=[% bugid %]&amp;action=viewall">View All</a>
+    </td>
+  </tr>
+</table>
+<br>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/show-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/show-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/show-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,98 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[% filtered_summary = bugsummary FILTER html %]
+[% PROCESS global/header.html.tmpl 
+  title = "View All Attachments for Bug #$bugid"
+  h1 = "View All Attachments for <a href=\"show_bug.cgi?id=$bugid\">Bug #$bugid</a>"
+  h2 = filtered_summary
+  style = "
+    th { text-align: right; vertical-align: top; }
+    td { text-align: left; vertical-align: top; }
+    td#info { text-align: right; vertical-align: top; }
+    td#actions { text-align: right; vertical-align: bottom; }
+  "
+%]
+
+<br>
+
+[% FOREACH a = attachments %]
+
+  <div align="center">
+  <table cellspacing="0" cellpadding="4" border="1" width="75%">
+    <tr>
+      <td valign="top" bgcolor="#cccccc" colspan="5">
+        <big><b>Attachment #[% a.attachid %]</b></big>
+      </td>
+    </tr>
+    <tr>
+      <td valign="top">
+        [% IF a.isobsolete %]
+          <strike>[% a.description FILTER html %]</strike>
+        [% ELSE %]
+          [% a.description FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        [% IF a.ispatch %]
+          <i>patch</i>
+        [% ELSE %]
+          [% a.contenttype FILTER html %]
+        [% END %]
+      </td>
+
+      <td valign="top">[% a.date %]</td>
+
+      <td valign="top">
+        [% IF a.statuses.size == 0 %]
+          <i>none</i>
+        [% ELSE %]
+          [% FOREACH s = a.statuses %]
+            [% s FILTER html FILTER replace('\s', '&nbsp;') %]<br>
+          [% END %]
+        [% END %]
+      </td>
+
+      <td valign="top">
+        <a href="attachment.cgi?id=[% a.attachid %]&amp;action=edit">Edit</a> 
+      </td>
+    </tr>
+  </table>
+
+  [% IF a.isviewable %]
+    <iframe src="attachment.cgi?id=[% a.attachid %]&amp;action=view" width="75%" height="350">
+      <b>You cannot view the attachment on this page because your browser does not support IFRAMEs.
+      <a href="attachment.cgi?id=[% a.attachid %]&amp;action=view">View the attachment on a separate page</a>.</b>
+    </iframe>
+  [% ELSE %]
+    <p><b>
+      Attachment cannot be viewed because its MIME type is not text/*, image/*, or application/vnd.mozilla.*.
+      <a href="attachment.cgi?id=[% a.attachid %]&action=view">Download the attachment instead</a>.
+    </b></p>
+  [% END %]
+  </div>
+
+  <br><br>
+
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/updated.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/updated.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/attachment/updated.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,52 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bugid: integer. ID of the bug we are updating.
+  # attachid: integer. ID of the attachment we just attached.
+  # mailresults: string. Who was mailed and who wasn't. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+  title = "Changes Submitted"
+  style = "th { text-align: left; }"
+%]
+
+<hr>
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>Changes to 
+        <a href="attachment.cgi?id=[% attachid %]&amp;action=edit">attachment [% attachid %]</a>
+        of bug [% bugid %] submitted
+      </h2>
+      [% mailresults FILTER html %]
+    </td>
+
+    <td>
+      <a href="show_bug.cgi?id=[% bugid %]">Back to Bug #[% bugid %]</a>
+    </td>
+  </tr>
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/show.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/show.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/show.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,43 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. The bug ID.
+  #
+  # This template also needs to be called with the interface to the
+  # activity.html.tmpl template fulfilled.
+  #%]
+ 
+[% PROCESS global/header.html.tmpl 
+  title = "Changes made to bug $bug_id"
+  h1 = "Activity log"
+  h2 = "Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>"
+ %]
+
+<br>
+
+[% PROCESS bug/activity/table.html.tmpl %]
+
+<p>
+  <a href="show_bug.cgi?id=[% bug_id %]">Back to bug [% bug_id %]</a>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/activity/table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,91 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # operations: array of hashes. May be empty. Each has has three members:
+  #   who: string. who performed the operation
+  #   when: string. when they performed it
+  #   changes: hash. Details of what they changed. This hash has three 
+  #            compulsory and one optional member:
+  #     field: string. The name of the field
+  #     removed: string. What was removed from the field
+  #     added: string. What was added to the field
+  #     attach_id: integer. If the change was adding an attachment, its id.
+  # incomplete_data: boolean. True if some of the data is incomplete (because
+  #                  it was affected by an old Bugzilla bug.)
+  #%]
+ 
+[% IF incomplete_data %]
+  <p>
+    There used to be a bug Bugzilla which caused activity data
+    to be lost if there was a large number of cc's or dependencies.  That
+    has been fixed, however, there was some data already lost on this bug
+    that could not be regenerated.  The changes that the script could not
+    reliably determine are prefixed by '?'.
+  </p>
+[% END %]
+
+[% IF operations.size > 0 %]
+  <table border cellpadding="4">
+    <tr>
+      <th>Who</th>
+      <th>When</th>
+      <th>What</th>
+      <th>Removed</th>
+      <th>Added</th>
+    </tr>
+
+    [% FOREACH operation = operations %]     
+      <tr>
+        <td rowspan="[% operation.changes.size %]" valign="top">
+          [% operation.who FILTER html %]
+        </td>
+        <td rowspan="[% operation.changes.size %]" valign="top">
+          [% operation.when FILTER html %]
+        </td>
+        [% FOREACH change = operation.changes %]
+          [% "</tr><tr>" IF loop.index > 0 %]
+            <td>
+              [% IF change.attachid %]
+                <a href="attachment.cgi?id=[% change.attachid %]&amp;action=view">
+                Attachment #[% change.attachid %]</a>         
+              [% END %]
+              [% change.field %]
+            </td>
+            <td>
+              [% IF change.removed %]
+                [% change.removed FILTER html %]
+              [% ELSE %]
+                &nbsp;
+              [% END %]
+            </td>
+            <td>
+              [% IF change.added %]
+                [% change.added FILTER html %]
+              [% ELSE %]
+                &nbsp;
+              [% END %]
+            </td>
+        [% END %]
+      </tr>
+    [% END %]
+  </table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose-xml.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose-xml.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose-xml.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface.
+  #%]
+  
+[% PROCESS global/header.html.tmpl 
+   title = "Display bugs as XML"
+ %]
+
+<form method="get" action="xml.cgi">
+  <table>
+    <tr>
+      <td>
+        Display bugs as XML by entering a list of bug numbers here:
+      </td>
+      <td>
+        <input name="id" size="30">
+        <input type="submit" value="Display as XML">
+      </td>
+    </tr>
+    
+    <tr>
+      <td>&nbsp;</td>
+      <td>
+        (e.g. 1000, 2467, 852)
+      </td>
+    </tr>
+  </table>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/choose.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,36 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl 
+     title = "Search by bug number"
+   %]
+[% END %]
+
+<form method="get" action="show_bug.cgi">
+  <p>
+    You may find a single bug by entering its bug id here:
+    <input name="id" size="6">
+    <input type="submit" value="Show Me This Bug">
+  </p>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/comments.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/comments.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/comments.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,53 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% DEFAULT start_at = 0 %]
+[% count = 0 %]
+[% FOREACH comment = comments %]
+  [% IF count >= start_at %]
+    [% PROCESS a_comment %]
+  [% END %]
+  
+  [% count = count + 1 %]
+[% END %]
+
+
+[%############################################################################%]
+[%# Block for individual comments                                            #%]
+[%############################################################################%]
+
+[% BLOCK a_comment %]
+  [% IF count > 0 %]
+    <br>
+    <i>------- Additional Comment
+      <a name="c[% count %]" href="#c[% count %]">#[% count %]</a> From 
+      <a href="mailto:[% comment.email FILTER html %]">[% comment.name FILTER html %]</a>
+      [%+ comment.time %] -------
+    </i>
+  [% END %]
+    
+[%# Don't indent the <pre> block, since then the spaces are displayed in the
+  # generated HTML
+  #%]
+<pre>
+  [%- quoteUrls(comment.body) -%]
+</pre>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/comment.txt.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/comment.txt.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/comment.txt.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,26 @@
+[%# 1.0 at bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+[%# INTERFACE:
+  # form: hash. This is the $::FORM variable from a bug submission (i.e. the
+  # fields on a template from enter_bug.cgi.) It can be used to pull out 
+  # various custom fields and format an initial Description entry from them. 
+  #%]  
+[% form.comment %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/create.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/create.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/create.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,261 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Ville Skyttä <ville.skytta at iki.fi>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = "Enter Bug"
+  h2 = "This page lets you enter a new bug into Bugzilla."
+%]
+
+<form method="post" action="post_bug.cgi">
+<input type="hidden" name="product" value="[% product FILTER html %]">
+
+<table cellspacing="2" cellpadding="0" border="0">
+
+  <tr>
+    <td><br></td>
+  </tr>
+
+  <tr>
+    <td></td>
+    <td colspan="3">
+    [%# Migration note: The following file corresponds to the old Param
+      # 'entryheaderhtml'
+      #%]
+    [% INCLUDE 'bug/create/user-message.html.tmpl' %]
+    </td>
+  </tr>
+  
+  <tr>
+    <td><br></td>
+  </tr>
+
+  <tr>
+    <td align="right" valign="top"><strong>Reporter:</strong></td>
+    <td valign="top">[% reporter FILTER html %]</td>
+    
+    <td align="right" valign="top"><strong>Product:</strong></td>
+    <td valign="top">[% product FILTER html %]</td>
+  </tr>
+  
+  [%# We can't use the select block in these two cases for various reasons. %]
+  <tr>
+    <td align="right" valign="top">
+      <strong>Version:</strong>
+    </td>
+    <td>
+      <select name="version" size="5">
+        [%- FOREACH v = version %]
+          <option value="[% v FILTER html %]"
+            [% " selected=\"selected\"" IF v == default.version %]>[% v FILTER html -%]
+          </option>
+        [%- END %]
+      </select>
+    </td>  
+    
+    <td align="right" valign="top">
+      <strong>
+        <a href="describecomponents.cgi?product=[% product FILTER url_quote %]">
+          Component</a>:
+      </strong>
+    </td>
+    <td>
+      <select name="component" size="5">
+        [%- FOREACH c = component_ %]
+          <option value="[% c.name FILTER html %]"
+            [% " selected=\"selected\"" IF c.name == default.component_ %]>
+            [% c.name FILTER html -%]
+          </option>
+        [%- END %]
+      </select>
+    </td>  
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+  
+  <tr>
+    [% sel = { description => 'Platform', name => 'rep_platform' } %]
+    [% INCLUDE select %]
+    
+    [% sel = { description => 'OS', name => 'op_sys' } %]
+    [% INCLUDE select %]
+  </tr>
+  
+  <tr>  
+  [% IF Param('letsubmitterchoosepriority') %]
+    [% sel = { description => 'Priority', name => 'priority' } %]
+    [% INCLUDE select %]
+  [% ELSE %]
+    <input type="hidden" name="priority" 
+           value="[% default.priority FILTER html %]">
+  [% END %]
+
+  [% sel = { description => 'Severity', name => 'bug_severity' } %]
+  [% INCLUDE select %]    
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+
+[% IF bug_status.size > 1 %] 
+  <tr>
+    [% sel = { description => 'Initial State', name => 'bug_status' } %]
+    [% INCLUDE select %]
+    
+    <td colspan="2"></td>
+  </tr>
+[% ELSE %]
+  <input type="hidden" name="bug_status" value="[% default.bug_status FILTER html %]">  
+[% END %]
+
+  <tr>
+    <td align="right">
+      <strong>
+        <a href="/bugzilla/bug_status.html#assigned_to">Assigned To</a>:
+      </strong>
+    </td>
+    <td colspan="3">
+      <input name="assigned_to" size="32" 
+             value="[% assigned_to FILTER html %]">
+      (Leave blank to assign to default component owner)
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right"><strong>Cc:</strong></td>
+    <td colspan="3">
+      <input name="cc" size="45" value="[% cc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr>
+    <td>&nbsp;</td>
+    <td colspan="3"></td>
+  </tr>
+
+  <tr>
+    <td align="right"><strong>URL:</strong></td>
+    <td colspan="3">
+      <input name="bug_file_loc" size="60" 
+             value="[% bug_file_loc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right"><strong>Summary:</strong></td>
+    <td colspan="3">
+      <input name="short_desc" size="60" value="[% short_desc FILTER html %]">
+    </td>
+  </tr>
+  
+  <tr><td align="right" valign="top"><strong>Description:</strong></td>
+    <td colspan="3">
+      <textarea wrap="hard" name="comment" rows="10" cols="80">
+        [% comment FILTER html %]</textarea>
+      <br>
+    </td>
+  </tr>
+  
+  <tr>
+    <td></td>
+    <td colspan="3">
+    [% IF group.size %]
+      <br>
+        <strong>
+          Only users in all of the selected groups can view this bug:
+        </strong>
+      <br>
+      <font size="-1">
+        (Leave all boxes unchecked to make this a public bug.)
+      </font>
+      <br>
+      <br>
+
+      <!-- Checkboxes -->
+      [% FOREACH g = group %]
+        &nbsp;&nbsp;&nbsp;&nbsp;
+        <input type="checkbox" name="bit-[% g.bit %]" value="1"
+          [% " checked=\"checked\"" IF g.checked %]>[% g.description FILTER html %]<br>
+      [% END %]
+      <br>
+    [% END %]
+    </td>
+  </tr>
+  
+  <tr>
+    <td></td>
+    <td colspan="3">
+      <input type="submit" value="    Commit    " 
+             onclick="if (this.form.short_desc.value == '') 
+             { alert('Please enter a summary sentence for this bug.'); 
+               return false; } return true;">
+      &nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="submit" name="maketemplate" 
+             value="Remember values as bookmarkable template">
+    </td>
+  </tr>
+
+[% IF Param('usebrowserinfo') %]
+  <tr>
+    <td></td>
+    <td colspan="3">
+      <br>
+      We've made a guess at your operating system and platform. 
+      Please check them and, if we got it wrong, email 
+      [% Param('maintainer') %].
+    </td>
+  </tr>
+[% END %]
+
+  </table>
+  <input type="hidden" name="form_name" value="enter_bug">
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+  [% IF sel.description %]
+  <td align="right">
+    <strong>
+      <a href="/bugzilla/bug_status.html#[% sel.name %]">[% sel.description %]</a>:
+    </strong>
+  </td>
+  [% END %]
+  
+  <td>
+    <select name="[% sel.name %]">
+    [%- FOREACH x = ${sel.name} %]
+      <option value="[% x FILTER html %]"
+        [% " selected=\"selected\"" IF x == default.${sel.name} %]>[% x FILTER html -%]
+      </option>
+    [%- END %]
+    </select>
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/created.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/created.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/created.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,30 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Bug $id Submitted"
+%]
+
+[% PROCESS bug/process/results.html.tmpl %]
+
+<br>
+
+[%# post_bug.cgi will add a copy of the filed bug below here %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/make-template.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/make-template.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/make-template.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,33 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Bookmarks are your friend"
+  h1 = "Template constructed"
+%]
+
+<p>
+If you bookmark <a href="enter_bug.cgi?[% url FILTER html %]">this link</a>,
+going to the bookmark will bring up the enter bug page with the fields
+initialized as you've requested.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/user-message.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/user-message.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/create/user-message.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,34 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Matthew Tuck <matty at chariot.net.au>
+  #%]
+
+[%# Migration note: this file corresponds to the old Param
+  # 'entryheaderhtml'
+  #%]
+
+[%# You can make the output of this template product-specific by using
+  # Template Toolkit IF statements.  The current product name is stored in
+  # the 'product' variable.
+  #%]
+
+Before reporting a bug, please read the <a href="/bugzilla/bugwritinghelp.html">
+bug writing guidelines</a>, please look at the list of
+<a href="duplicates.cgi">most frequently reported bugs</a>, and please
+<a href="query.cgi">search</a> for the bug.

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-graph.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-graph.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-graph.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,106 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. The number of the bug(s).
+  # multiple_bugs: boolean. True if bug_id contains > 1 bug number.
+  # doall: boolean. True if we are displaying every bug in the database.
+  # showsummary: boolean. True if we are showing bug summaries.
+  # rankdir: string. "TB" if we are ranking top-to-bottom, 
+                     "LR" if left-to-right.
+  # image_url: string. The URL of the graphic showing the dependencies.
+  # map_url: string. The URL of the map file for the image.  (Optional)
+  # image_map: string. The image map for the graphic showing the 
+                       dependencies. (Optional)
+  #%]
+
+[% title = "Dependency Graph"
+   h1 = title
+ %]
+ 
+[% IF NOT multiple_bugs AND NOT doall %]
+  [% title = "$title for bug $bug_id"
+     h1 = "$h1 for bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>" 
+   %]
+[% END %]
+
+[% PROCESS global/header.html.tmpl %]
+
+[% image_map %]
+
+<p>
+  Green circles represent open bugs.
+</p>
+
+[% IF image_map %]
+  <img src="[% image_url %]" usemap="#imagemap"> 
+[% ELSE %]
+  <a href="[% map_url %]">
+    <img src="[% image_url %]" ismap="ismap"> 
+  </a>
+[% END %]
+
+<hr>
+
+<form>
+  <table>
+    <tr>
+      <td>
+        Bug numbers:
+        <input name="id" value="[% bug_id %]">
+      </td>
+    </tr>
+    
+    <tr>
+      <td>
+        <input type="checkbox" name="doall" 
+        [% " checked" IF doall %]>
+        Show <b>every</b> bug in the system with dependencies
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="3">
+        <input type="checkbox" name="showsummary" 
+          [% " checked" IF showsummary %]>
+        Show the summaries of all displayed bugs
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="3">
+        <select name="rankdir">
+          <option value="TB"
+            [% " selected" IF rankdir == "TB" %]>
+            Orient top-to-bottom
+          </option>
+          <option value="LR"
+            [% " selected" IF rankdir == "LR" %]>
+            Orient left-to-right
+          </option>
+        </select>
+      </td>
+    </tr>
+  </table>
+  <input type="submit" value="Change Parameters">
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-tree.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-tree.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/dependency-tree.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,198 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  # 
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Tobias Burnus <burnus at net-b.de>
+  #                 Ville Skyttä <ville.skytta at iki.fi>
+  #                 Myk Melez <myk at mozilla.org>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+   title = "Dependency tree for Bug $bugid"
+   h1    = "Dependency tree for <a href=\"show_bug.cgi?id=$bugid\">bug $bugid</a>"
+   style = "strike { background-color: #d9d9d9; color: #000000; }"
+%]
+
+[% PROCESS depthControlToolbar %]
+
+[%# Display the tree of bugs that this bug depends on. %]
+<h3>[% hide_resolved ? "Open b" : "B" %]ugs that <a href="show_bug.cgi?id=[% bugid %]">bug [% bugid %]</a> depends on</h3>
+[% IF dependson_ids.size > 0 %]
+  (
+  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
+  <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]">view as bug list</a>
+  [% IF canedit && dependson_ids.size > 1 %]
+    | <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]&amp;tweak=1">change several</a>
+  [% END %])
+  [% INCLUDE display_tree tree=dependson_tree bug_id=bugid %]
+[% ELSE %]
+  </h3>
+  <p>None</p>
+[% END %]
+
+[%# Display the tree of bugs that this bug blocks. %]
+<h3>[% hide_resolved ? "Open b" : "B" %]ugs that <a href="show_bug.cgi?id=[% bugid %]">bug [% bugid %]</a> blocks</h3>
+[% IF blocked_ids.size > 0 %]
+  (
+  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
+  <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]">view as bug list</a>
+  [% IF canedit && blocked_ids.size > 1 %]
+    | <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]&amp;tweak=1">change several</a>
+  [% END %])
+  [% INCLUDE display_tree tree=blocked_tree bug_id=bugid %]
+[% ELSE %]
+  </h3>
+  <p>None</p>
+[% END %]
+
+[% PROCESS depthControlToolbar %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%###########################################################################%]
+[%# Block to display a tree                                                 #%]
+[%###########################################################################%]
+
+[% BLOCK display_tree %]
+[% tree.$bug_id.seen = 1 %]
+<ul>
+  [% FOREACH dep_id = tree.$bug_id.dependencies %]
+    [% dep = tree.$dep_id %]
+    <li>
+      [% "<strike>" IF !dep.open %]
+      <a href="show_bug.cgi?id=[% dep_id %]">[% dep_id %] 
+        [[% IF dep.milestone %][% dep.milestone FILTER html %], [% END %]
+        [% dep.assignee_email FILTER html %]] - 
+        [% IF dep.seen %]
+          <i>This bug appears elsewhere in this tree.</i></a>
+        [% ELSE %]
+          [% dep.summary FILTER html %].</a>
+        [% END %]
+      [% "</strike>" IF !dep.open %]
+      [% INCLUDE display_tree bug_id=dep_id 
+           IF dep.dependencies.size > 0 && !dep.seen %]
+    </li>
+  [% END %]
+</ul>
+[% END %]
+
+[%###########################################################################%]
+[%# Block for depth control toolbar                                         #%]
+[%###########################################################################%]
+
+[% BLOCK depthControlToolbar %]
+ <table cellpadding="3" border="0" cellspacing="0" bgcolor="#d0d0d0">
+ <tr>
+   [%# Hide/show resolved button
+       Swaps text depending on the state of hide_resolved %]
+   <td align="center">
+   <form method="get" action="showdependencytree.cgi" 
+           style="display: inline; margin: 0px;">
+     <input name="id" type="hidden" value="[% bugid %]">
+     [% IF maxdepth %]
+       <input name="maxdepth" type="hidden" value="[% maxdepth %]">
+     [% END %]
+     <input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]">
+     <input type="submit" value="[% hide_resolved ? "Show" : "Hide" %] Resolved">
+   </form>
+   </td>
+
+   <td>
+     Max Depth:
+   </td>
+
+   <td>
+     &nbsp;
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi"
+         style="display: inline; margin: 0px;">
+     [%# set to one form %]
+     <input type="submit" value="&nbsp;1&nbsp;" [% 
+         realdepth < 2 || maxdepth == 1 ? "disabled" : ""
+     %]>
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="maxdepth" type="hidden" value="1">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Minus one form  
+         Allow subtracting only when realdepth and maxdepth > 1 %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="maxdepth" type="hidden" value="[% 
+         maxdepth == 1 ? 1 
+                       : ( maxdepth ? maxdepth - 1 : realdepth - 1 )
+     %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;&lt;&nbsp;" [%
+        realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : "" 
+     %]>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Limit entry form: the button can not do anything when total depth
+         is less than two, so disable it %]
+     <input name="maxdepth" size="4" maxlength="4" value="[% 
+         maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""
+     %]">
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <noscript>
+       <input type="submit" value="Change" [% realdepth < 2 ? "disabled" : "" %]>
+     </noscript>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# plus one form 
+         Disable button if total depth < 2, or if depth set to unlimited %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     [% IF maxdepth %]
+       <input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]">
+     [% END %]
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;&gt;&nbsp;" [% 
+            realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
+            "disabled" : ""
+     %]>
+   </form>
+   </td>
+
+   <td>
+   <form method="get" action="showdependencytree.cgi" 
+         style="display: inline; margin: 0px;">
+     [%# Unlimited button %]
+     <input name="id" type="hidden" value="[% bugid %]">
+     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
+     <input type="submit" value="&nbsp;Unlimited&nbsp;" 
+       [% maxdepth == 0 || maxdepth == realdepth ? "disabled" : "" %]>
+   </form>
+   </td>
+ </tr>
+</table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/edit.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/edit.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/edit.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,540 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% filtered_desc = bug.short_desc FILTER html %]
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl 
+    title = "Bug $bug.bug_id - $filtered_desc"
+    h1 = "Bugzilla Bug $bug.bug_id"
+    h2 = filtered_desc
+    header_html = navigation_links
+   %]
+[% END %]
+
+[% PROCESS bug/navigate.html.tmpl %]
+
+<hr>
+
+<form name="changeform" method="post" action="process_bug.cgi">
+
+  <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]">
+  <input type="hidden" name="longdesclength" value="[% bug.longdesclength %]">
+  <input type="hidden" name="id" value="[% bug.bug_id %]">
+
+[%# *** Platform Reporter Product OS AddCC *** %]
+
+  <table cellspacing="1" cellpadding="1" border="0">
+    <tr>      
+      <td align="right">
+        <b>Bug#:</b>
+      </td>
+      <td>
+        <a href="[% Param('urlbase') %]show_bug.cgi?id=[% bug.bug_id %]">
+          [% bug.bug_id %]</a>
+      </td>
+      
+      <td>&nbsp;</td>
+
+      <td align="right">
+        <b>Platform:</b>
+      </td>
+      [% PROCESS select selname = "rep_platform" %]
+      
+      <td align="right">
+        <b>Reporter:</b>
+      </td>
+      <td>
+        [% bug.reporter FILTER html %]
+      </td>    
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>Product:</b>
+      </td>
+      [% PROCESS select selname => "product" %]
+      
+      <td align="right">
+        <b>OS:</b>
+      </td>
+      [% PROCESS select selname => "op_sys" %]
+
+      <td align="right">
+        <b>Add&nbsp;CC:</b>
+      </td>
+      <td>
+        <input name="newcc" size="30" value="">
+      </td>
+    </tr>
+
+[%# *** Component Version CC Priority Severity AssignedTo Milestone *** %]    
+
+    <tr>
+      <td align="right">
+        <b>
+          <a href="describecomponents.cgi?product=[% bug.product FILTER url_quote %]">
+            Component</a>:
+        </b>
+      </td>
+      <td>
+        <select name="component">
+          [% FOREACH x = component_ %]
+            <option value="[% x FILTER html %]"
+              [% " selected" IF x == bug.component %]>[% x FILTER html %]
+            </option>
+          [% END %]
+        </select>
+      </td>
+
+      <td>&nbsp;</td>
+ 
+      <td align="right">
+        <b>Version:</b>
+      </td>
+      [% PROCESS select selname => "version"  %]
+      
+      <td rowspan="4" align="right" valign="top">
+        <b>CC:</b>
+      </td>
+      <td rowspan="4" valign="top"> 
+      [% IF bug.cc %]
+        <select name="cc" multiple="multiple" size="5">
+        [% FOREACH c = bug.cc %]
+          <option value="[% c FILTER html %]">[% c FILTER html %]</option>
+        [% END %]
+        </select>
+        <br>
+        <input type="checkbox" name="removecc">Remove selected CCs
+        <br>
+      [% ELSE %]
+        <input type="hidden" name="cc" value="">
+      [% END %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html">Status</a>:
+        </b>
+      </td>
+      <td>[% bug.bug_status FILTER html %]</td>      
+      <td>&nbsp;</td>
+      
+      <td align="right">
+        <b><a href="/bugzilla/bug_status.html#priority">Priority</a>:</b>
+      </td>
+      [% PROCESS select selname => "priority" %]
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html">Resolution</a>:
+        </b>
+      </td>
+      <td>[% bug.resolution FILTER html %]</td>      
+      <td>&nbsp;</td>
+      
+      <td align="right">
+        <b><a href="/bugzilla/bug_status.html#severity">Severity</a>:</b>
+      </td>
+      [% PROCESS select selname = "bug_severity" %]
+      
+    </tr>
+    
+    <tr>
+      <td align="right">
+        <b>
+          <a href="/bugzilla/bug_status.html#assigned_to">Assigned&nbsp;To</a>:
+        </b>
+      </td>
+      <td>[% bug.assigned_to FILTER html %]</td>
+      <td>&nbsp;</td>
+ 
+      [% IF Param("usetargetmilestone") && bug.target_milestone %]
+        <td align="right">
+          <b>
+            <a href="[% bug.milestoneurl FILTER html %]">Target Milestone</a>:
+          </b>
+        </td>
+        [% PROCESS select selname = "target_milestone" %]
+      [% ELSE %]
+        <td colspan="3">&nbsp;</td>
+      [% END %]
+    </tr>
+
+[%# *** QAContact URL Summary Whiteboard Keywords *** %]
+
+   [% IF Param('useqacontact') %]
+     <tr>
+       <td align="right">
+       <b>QA Contact:</b>
+       </td>
+       <td colspan="7">
+         <input name="qa_contact" 
+                value="[% bug.qa_contact FILTER html %]" size="60">
+       </td>
+     </tr>
+   [% END %]
+
+  <tr>
+    <td align="right">
+      <b>
+        [% IF bug.bug_file_loc %]
+          <a href="[% bug.bug_file_loc FILTER html %]">URL</a>:
+        [% ELSE %]
+          URL:
+        [% END %]
+      </b>
+    </td>
+    <td colspan="7">
+      <input name="bug_file_loc" 
+             value="[% bug.bug_file_loc FILTER html %]" size="60">
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="right">
+      <b>Summary:</b>
+    </td>
+    <td colspan="7">
+      <input name="short_desc" 
+             value="[% bug.short_desc FILTER html %]" size="60">
+    </td>
+  </tr>
+
+  [% IF Param('usestatuswhiteboard') %] 
+    <tr>
+      <td align="right">
+        <b>Status Whiteboard:</b>
+      </td>
+      <td colspan="7">
+        <input name="status_whiteboard" 
+               value="[% bug.status_whiteboard FILTER html %]" size="60">
+      </td>
+    </tr>
+  [% END %]
+
+  [% IF use_keywords %]
+    <tr>
+      <td align="right">
+        <b>
+          <a href="describekeywords.cgi">Keywords</a>:
+        </b>
+      <td colspan="7">
+        <input name="keywords" 
+               value="[% bug.keywords.join(', ') FILTER html %]" size="60">
+      </td>
+    </tr> 
+  [% END %]
+  </table>
+  
+[%# *** Attachments *** %]
+
+  [% PROCESS attachment/list.html.tmpl 
+     attachments = bug.attachments 
+     bugid = bug.bug_id %]
+
+[%# *** Dependencies Votes *** %]
+
+  [% IF Param('usedependencies') %]
+  <table>
+    <tr>
+    [% PROCESS dependencies 
+       dep = { title => "depends on", fieldname => "dependson" } %]
+      <td rowspan="2">
+        <a href="showdependencytree.cgi?id=[% bug.bug_id %]">Show 
+        dependency tree</a>  
+
+        [% IF Param('webdotbase') %]  
+          <br>
+          <a href="showdependencygraph.cgi?id=[% bug.bug_id %]">Show 
+          dependency graph</a>
+        [% END %]
+      </td>
+    </tr>
+
+    <tr>
+    [% PROCESS dependencies 
+       dep = { title => "blocks", fieldname => "blocked" } %]
+    </tr>
+  </table>
+  [% END %]
+
+  [% IF use_votes %]
+  <table>
+    <tr>
+      <th>
+        <a href="/bugzilla/votehelp.html">Votes</a>:
+      </th>
+      <td>
+        [% bug.votes %]&nbsp;&nbsp;&nbsp;
+        <a href="votes.cgi?action=show_bug&amp;bug_id=[% bug.bug_id %]">Show 
+        votes for this bug</a>&nbsp;&nbsp;&nbsp;
+        <a href="votes.cgi?action=show_user&amp;bug_id=[% bug.bug_id %]">Vote 
+        for this bug</a>
+      </td>
+    </tr>
+  </table>
+  [% END %]
+
+[%# *** Comments Groups *** %]
+
+  <br>
+  <b>Additional Comments:</b>
+  <br>
+  <textarea wrap="hard" name="comment" rows="10" cols="80"
+            accesskey="c"></textarea>
+  <br>
+
+  [% IF groups.size > 0 %]
+    <br>
+    <b>Only users in all of the selected groups can view this bug:</b>
+    <br>
+    <font size="-1">(Unchecking all boxes makes this a public bug.)</font>
+    <br>
+    <br>
+
+    [% FOREACH group = groups %]
+      &nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="checkbox" name="bit-[% group.bit %]" value="1" 
+        [% " checked=\"checked\"" IF group.ison %]
+        [% " disabled=\"disabled\"" IF NOT group.ingroup %]>
+      [% group.description FILTER html %]
+      <br>
+    [% END %]
+
+    [% IF NOT user.inallgroups %]
+      <b>
+        Only members of a group can change the visibility of a bug for 
+        that group
+      </b>
+    <br>
+    [% END %]
+
+    [% IF bug.inagroup %]
+      <p>
+        <b>But users in the roles selected below can always view this bug:</b>
+        <br>
+        <small>
+          (The assignee                                                
+          [% IF (Param('useqacontact')) %]
+             and QA contact
+          [% END %]
+          can always see a bug, and this section does not take effect unless 
+          the bug is restricted to at least one group.)
+        </small>
+      </p>
+
+      <p>
+        <input type="checkbox" name="reporter_accessible" value="1"
+          [% " checked" IF bug.reporter_accessible %]>Reporter
+        <input type="checkbox" name="cclist_accessible" value="1"
+          [% " checked" IF bug.cclist_accessible %]>CC List
+      </p>  
+    [% END %]
+  [% END %]
+
+[%# *** Knob *** %]
+
+  <br>
+  <input type="radio" name="knob" value="none" checked="checked">
+  Leave as <b>[% bug.bug_status FILTER html %]&nbsp;
+              [% bug.resolution FILTER html %]</b>
+  <br>
+
+  [% knum = 1 %]
+
+  [% IF bug.bug_status == "UNCONFIRMED" && 
+        user.canconfirm %]
+    <input type="radio" name="knob" value="confirm">
+    Confirm bug (change status to <b>NEW</b>)
+    <br>
+    [% knum = knum + 1 %]
+  [% END %]
+
+  [% IF user.canedit %]
+    [% IF bug.isopened %]
+      [% IF bug.bug_status != "ASSIGNED" && user.canconfirm %]
+        <input type="radio" name="knob" value="accept">
+        Accept bug (
+        [% "confirm bug, " IF bug.isunconfirmed %]change
+        status to <b>ASSIGNED</b>)
+        <br>
+        [% knum = knum + 1 %]
+      [% END %]
+
+      [% IF bug.resolution %]
+        <input type="radio" name="knob" value="clearresolution">
+        Clear the resolution (remove the current resolution of
+        <b>[% bug.resolution FILTER html %]</b>)<br>      
+        [% knum = knum + 1 %]
+      [% END %]
+
+      <input type="radio" name="knob" value="resolve">
+      Resolve bug, changing <a href="/bugzilla/bug_status.html">resolution</a> to
+      <select name="resolution" 
+              onchange="document.changeform.knob[[% knum %]].checked=true">
+      [% FOREACH r = resolution %]
+        <option value="[% r FILTER html %]">[% r FILTER html %]</option>
+      [% END %]
+      </select>
+      <br>
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="duplicate">
+      Resolve bug, mark it as duplicate of bug # 
+      <input name="dup_id" size="6" 
+             onchange="if (this.value != '')
+                       {document.changeform.knob[[% knum %]].checked=true}">
+      <br>
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="reassign"> 
+      <a href="/bugzilla/bug_status.html#assigned_to">Reassign</a> bug to
+      <input name="assigned_to" size="32" 
+             onchange="if ((this.value != '[% bug.assigned_to_email FILTER js FILTER html %]') && 
+                            (this.value != '')) {
+                         document.changeform.knob[[% knum %]].checked=true; 
+                       }"  
+             value="[% bug.assigned_to_email FILTER html %]">
+      <br>
+      [% IF bug.isunconfirmed && user.canconfirm %]
+        &nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="andconfirm">
+        and confirm bug (change status to <b>NEW</b>)
+        <br>
+      [% END %]
+      [% knum = knum + 1 %]
+
+      <input type="radio" name="knob" value="reassignbycomponent">
+      Reassign bug to owner
+      [% "and QA contact" IF useqacontact %]
+      of selected component
+      <br>
+      [% IF bug.isunconfirmed && user.canconfirm %]
+        &nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="compconfirm">
+        and confirm bug (change status to <b>NEW</b>)
+        <br>
+      [% END %]
+      [% knum = knum + 1 %]
+    [% ELSE %]
+      [% IF bug.resolution != "MOVED" ||
+           (bug.resolution == "MOVED" && user.canmove) %]  
+        <input type="radio" name="knob" value="reopen"> Reopen bug
+        <br>
+        [% knum = knum + 1 %]
+      [% END %]
+      [% IF bug.bug_status == "RESOLVED" %]
+        <input type="radio" name="knob" value="verify">
+        Mark bug as <b>VERIFIED</b><br>
+        [% knum = knum + 1 %]
+      [% END %]
+      [% IF bug.bug_status != "CLOSED" %]
+        <input type="radio" name="knob" value="close">
+        Mark bug as <b>CLOSED</b><br>
+        [% knum = knum + 1 %]
+      [% END %]
+    [% END %]
+  [% END %]  
+  
+  <input type="submit" value="Commit">
+  <input type="hidden" name="form_name" value="process_bug">
+  <p>
+    <font size="+1">
+      <b>
+        <a href="show_activity.cgi?id=[% bug.bug_id %]">View Bug Activity</a>
+        &nbsp; | &nbsp;
+        <a href="long_list.cgi?buglist=[% bug.bug_id %]">Format For Printing</a>
+      </b>
+    </font>
+
+    [% IF user.canmove %]
+      &nbsp; <font size="+1"><b> | </b></font> &nbsp;
+      <input type="submit" name="action" 
+             value="[% Param("move-button-text") %]">
+    [% END %]
+  </p>  
+</form>
+
+[%# *** Additional Comments *** %]
+
+<table>
+  <tr>
+    <td align="left">
+      <b>
+        <a name="c0" href="#c0">Description</a>:
+      </b>
+    </td>
+    <td align="right" width="100%">
+      Opened: [% bug.creation_ts %]
+    </td>
+  </tr>
+</table>
+<hr>
+
+[% PROCESS bug/comments.html.tmpl 
+   comments = bug.comments 
+ %]
+  
+<hr>
+
+[% PROCESS bug/navigate.html.tmpl %]
+
+<br>
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%############################################################################%]
+[%# Block for dependencies                                                   #%]
+[%############################################################################%]
+
+[% BLOCK dependencies %]
+  <th align="right">Bug [% bug.bug_id %] [%+ dep.title %]:</th>
+  <td>
+  [% FOREACH depbug = bug.${dep.fieldname} %]
+    [% GetBugLink(depbug, depbug) %][% " " %]
+  [% END %]
+  </td>
+  <td>
+    <input name="[% dep.fieldname %]" 
+           value="[% bug.${dep.fieldname}.join(', ') %]">
+  </td>
+[% END %]
+
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]  
+  <td>
+    <select name="[% selname %]">
+      [% FOREACH x = ${selname} %]
+        <option value="[% x FILTER html %]"
+          [% " selected" IF x == bug.${selname} %]>[% x FILTER html %]
+        </option>
+      [% END %]
+    </select>
+  </td>
+  <td>&nbsp;</td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/navigate.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/navigate.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/navigate.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,54 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+  
+[% IF bug_list && bug_list.size > 0 %]
+  [% this_bug_idx = lsearch(bug_list, bug.bug_id) %]
+  <b>Bug List:</b>
+  [% IF this_bug_idx != -1 %]
+    ([% this_bug_idx + 1 %] of [% bug_list.size %])
+  [% END %]
+  
+  <a href="show_bug.cgi?id=[% bug_list.first %]">First</a>
+  <a href="show_bug.cgi?id=[% bug_list.last %]">Last</a>
+
+  [% IF this_bug_idx != -1 %]
+    [% IF this_bug_idx > 0 %]
+      [% prev_bug = this_bug_idx - 1 %]
+      <a href="show_bug.cgi?id=[% bug_list.$prev_bug %]">Prev</a>
+    [% ELSE %]
+      <i><font color="#777777">Prev</font></i>
+    [% END %]
+
+    [% IF this_bug_idx + 1 < bug_list.size %]
+      [% next_bug = this_bug_idx + 1 %]
+      <a href="show_bug.cgi?id=[% bug_list.$next_bug %]">Next</a>
+    [% ELSE %]
+      <i><font color="#777777">Next</font></i>
+    [% END %]
+  [% ELSE %]
+    (This bug is not in your list)
+  [% END %]
+  
+  &nbsp;&nbsp;<a href="buglist.cgi?regetlastlist=1">Show list</a>
+[% END %]
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="query.cgi">Query page</a>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="enter_bug.cgi">Enter new bug</a>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/confirm-duplicate.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/confirm-duplicate.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/confirm-duplicate.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,74 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # original_bug_id: number; the bug number for the bug
+  #   against which a bug is being duped
+  # duplicate_bug_id: number; the bug number for the bug
+  #   being duped
+  # cclist_accessible: boolean; whether or not users on the cc: list 
+  #   of the original bug can access that bug.
+  #%]
+ 
+[% PROCESS global/header.html.tmpl title="Duplicate Warning" %]
+    
+<p>
+  When marking a bug as a duplicate, the reporter of the duplicate 
+  is normally added to the CC list of the original. The permissions 
+  on bug [% original_bug_id %] (the original) are currently set 
+  such that the reporter would not normally be able to see it.
+</p>
+
+<p>
+  <b>Adding the reporter to the CC list of bug [% original_bug_id %] 
+  [% IF cclist_accessible %]
+    will immediately
+  [% ELSE %]
+    might, in the future,
+  [% END %]
+  allow him/her access to view this bug.</b>
+  Do you wish to do this?
+</p>
+    
+<form method="post">
+
+[% PROCESS "global/hidden-fields.html.tmpl" exclude="^(Bugzilla|LDAP)_(login|password)$" %]
+
+<p>
+  <input type="radio" name="confirm_add_duplicate" value="1"> 
+    Yes, add the reporter to CC list on bug [% original_bug_id %]
+</p>
+<p>
+  <input type="radio" name="confirm_add_duplicate" value="0" checked="checked"> 
+    No, do not add the reporter to CC list on bug [% original_bug_id %]
+</p>
+<p>
+  <a href="show_bug.cgi?id=[% duplicate_bug_id %]">Throw away my changes, 
+    and revisit bug [% duplicate_bug_id %]</a>
+<p>
+  <input type="submit" value="Submit">
+</p>
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/midair.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/midair.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/midair.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,76 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # operations: array; bug activity since the user last displayed the bug form,
+  #   used by bug/activity/table.html.tmpl to display recent changes that will
+  #   be overwritten if the user submits these changes.  See that template
+  #   for further documentation.
+  # start_at: number; the comment at which show/comments.tmpl should begin
+  #   displaying comments, either the index of the last comment (if the user
+  #   entered a comment along with their change) or a number less than that
+  #   (if they didn't), in which case no comments are displayed.
+  # comments: array; all the comments on the bug.
+  # bug_id: number; the ID of the bug being changed.
+  #%]
+ 
+<h1>Mid-air collision detected!</h1>
+
+<p>
+  Someone else has made changes to this bug at the same time you were trying to.
+  The changes made were:
+</p>
+
+<p>
+  [% PROCESS "bug/activity/table.html.tmpl" incomplete_data=0 %]
+</p>
+          
+[% IF comments.size > start_at %]
+<p>
+  Added comments:
+  <blockquote>
+    [% PROCESS "bug/comments.html.tmpl" %]
+  </blockquote>
+</p>
+[% END %]
+
+<p>
+You have the following choices:
+</p>
+
+<ul>
+  <li>
+    <form method="post">
+      [% PROCESS "global/hidden-fields.html.tmpl" exclude="^(Bugzilla|LDAP)_(login|password)$" %]
+      <input type="submit" value="Submit my changes anyway">
+        This will cause all of the above changes to be overwritten
+        [% ", except for the added comment(s)" IF comments.size > start_at %].
+    </form>
+  </li>
+  <li>
+    <a href="show_bug.cgi?id=[% bug_id %]">Throw away my changes, 
+      and revisit bug [% bug_id %]</a>
+  </li>
+</ul>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/next.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/next.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/next.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,32 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # next_id : number; the ID of the next bug in the user's bug list.
+  #%]
+
+<hr>
+
+<p>
+  The next bug in your list is bug
+  <a href="show_bug.cgi?id=[% next_id %]">[% next_id %]</a>:
+</p>
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/results.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/results.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/results.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,52 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # id: number; the ID of the bug that was changed/checked.
+  #
+  # type: string; the type of change/check that was made: "bug" when a bug
+  #   is changed, "dupe" when a duplication notation is added to a bug,
+  #   and "dep" when a bug is checked for changes to its dependencies.
+  #%]
+
+[% DEFAULT type="bug" %]
+
+[% 
+  title = {
+    'bug' => "Changes submitted for bug $id" , 
+    'dupe' => "Duplicate notation added to bug $id" , 
+    'dep' => "Checking for dependency changes on bug $id" , 
+    'votes' => "Bug $id confirmed by number of votes" , 
+    'created' => "Bug $id has been added to the database" , 
+  } 
+%]
+
+<table border="1">
+  <tr>
+    <td>
+      <h2>[% title.$type %]</h2>
+      [% mail FILTER html %]
+    </td>
+    <td>
+      <a href="show_bug.cgi?id=[% id %]">Back To BUG# [% id %]</a>
+    </td>
+  </tr>
+</table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/verify-new-product.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/verify-new-product.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/process/verify-new-product.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,102 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form values submitted to the script
+  # mform: hash; the form multi-values submitted to the script
+  # verify_fields: boolean; whether or not to verify 
+  #   the version, component, and target milestone fields
+  # versions: array; versions for the new product.
+  # components: array; components for the new product.
+  # milestones: array; milestones for the new product.
+  # defaults: hash; keys are names of fields, values are defaults for
+  #   those fields
+  # verify_bug_group: boolean; whether or not to ask the user
+  #   if they want to add the bug to its new product's group
+  # use_target_milestone: boolean; whether or not to use 
+  #   the target milestone field
+  #%]
+ 
+<form action="process_bug.cgi" method="post">
+
+[% PROCESS "global/hidden-fields.html.tmpl" 
+     exclude=(verify_fields ? "^version|component|target_milestone$" : "") %]
+
+[%# Verify the version, component, and target milestone fields. %]
+[% IF verify_fields %]
+  <h3>Verify Version, Component[% ", Target Milestone" IF use_target_milestone %]</h3>
+
+  <p>
+  [% IF use_target_milestone %]
+    You are moving the bug(s) to the product <b>[% form.product FILTER html %]</b>, 
+    and the version, component, and/or target milestone fields are no longer
+    correct.  Please set the correct version, component, and target milestone now:
+  [% ELSE %]
+    You are moving the bug(s) to the product <b>[% form.product FILTER html %]</b>, 
+    and the version and component fields are no longer correct.  
+    Please set the correct version and component now:
+  [% END %]
+  <p>
+
+  <table>
+    <tr>
+      <td>
+        <b>Version:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="version" options=versions default=defaults.version %]
+      </td>
+      <td>
+        <b>Component:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="component" options=components default=defaults.component %]
+      </td>
+      [% IF use_target_milestone %]
+        <td>
+          <b>Target Milestone:</b><br>
+        [% PROCESS "global/select-menu.html.tmpl" name="target_milestone" options=milestones default=defaults.target_milestone %]
+        </td>
+      [% END %]
+    </tr>
+  </table>
+
+[% END %]
+       
+[% IF verify_bug_group %]
+  <h3>Verify Bug Group</h3>
+
+  <p>
+    Do you want to add the bug to its new product's group (if any)?
+  </p>
+
+  <p>
+    <input type="radio" name="addtonewgroup" value="no"><b>no</b><br>
+    <input type="radio" name="addtonewgroup" value="yes"><b>yes</b><br>
+    <input type="radio" name="addtonewgroup" value="yesifinold" checked="checked">
+      <b>yes, but only if the bug was in its old product's group</b><br>
+  </p>
+[% END %]
+
+<input type="submit" value="Commit">
+
+</form>
+<hr>
+<a href="query.cgi">Cancel and Return to the Query Page</a>
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/show-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/show-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/show-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,157 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Terry Weissman <terry at mozilla.org>
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Full Text Bug Listing"
+%]
+
+[% IF bugs.first %]
+  [% FOREACH bug = bugs %]
+    [% PROCESS bug_display %]
+  [% END %]
+[% ELSE %]
+  <p>
+    You'd have more luck if you gave me some bug numbers.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+
+[%###########################################################################%]
+[%# Block for an individual bug                                             #%]
+[%###########################################################################%]
+
+[% BLOCK bug_display %]
+  <img src="/bugzilla/1x1.gif" width="1" height="80" align="left">
+  <div align="center">
+    <b>
+      <font ="+3">Bug [% bug.bug_id %] - [% bug.short_desc FILTER html %]</font>
+    </b>
+  </div>
+
+  <table width="100%">
+    <tr>
+      <td>
+        <b>Bug#:</b>
+        <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>
+      </td>
+      [% PROCESS cell attr = { description => "Product", 
+                               name => "product" } %]
+      [% PROCESS cell attr = { description => "Version", 
+                               name => "version" } %]
+      [% PROCESS cell attr = { description => "Platform", 
+                               name => "rep_platform" } %]
+    </tr>
+    
+    <tr>
+      [% PROCESS cell attr = { description => "OS/Version", 
+                               name => "op_sys" } %]
+      [% PROCESS cell attr = { description => "Status", 
+                               name => "bug_status" } %]
+      [% PROCESS cell attr = { description => "Severity", 
+                               name => "bug_severity" } %]
+      [% PROCESS cell attr = { description => "Priority", 
+                               name => "priority" } %]
+    </tr>
+    
+    <tr>
+      [% PROCESS cell attr = { description => "Resolution", 
+                               name => "resolution" } %]
+      [% PROCESS cell attr = { description => "Assigned To", 
+                               name => "assigned_to" } %]
+      [% PROCESS cell attr = { description => "Reported By", 
+                               name => "reporter" } %]
+      [% IF Param('useqacontact') %]
+        [% PROCESS cell attr = { description => "QA Contact", 
+                                 name => "qa_contact" } %]
+      [% END %]
+    </tr>
+    
+    <tr>
+      <td colspan="2">
+        <b>Component:</b>&nbsp;
+        [% bug.component %]
+      </td>
+    
+      <td colspan="2">
+      [% IF Param('usetargetmilestone') %]
+          <b>Target Milestone:</b>&nbsp;
+          [% bug.target_milestone FILTER html %]
+      [% END %]
+      </td>
+    </tr>
+    
+    <tr>
+      <td colspan="4">
+        <b>URL:</b>&nbsp;
+        <a href="[% bug.bug_file_loc FILTER html %]">
+                 [% bug.bug_file_loc FILTER html %]</a> 
+    </tr>
+    
+    <tr>
+      <td colspan="4">
+        <b>Summary:</b>&nbsp;[% bug.short_desc FILTER html %]
+      </td>
+    </tr>
+     
+    [% IF use_keywords %]
+      <tr>
+        <td colspan="4">
+          <b>Keywords: </b>&nbsp;[% bug.keywords FILTER html %]
+        </td>
+      </tr>
+    [% END %]
+
+    [% IF Param("usestatuswhiteboard") %]
+      <tr>
+        <td colspan="4">
+          <b>Status Whiteboard:</b>&nbsp;
+          [% bug.status_whiteboard FILTER html %]
+        </td>
+      </tr>
+    [% END %]
+
+    <tr>
+      <td colspan="4">
+        <b>Description:</b>
+      </td>
+    </tr>
+  </table>
+
+  [% PROCESS bug/comments.html.tmpl 
+     comments = bug.comments %]
+  
+  <hr>
+[% END %]
+
+
+[%###########################################################################%]
+[%# Block for standard table cells                                          #%]
+[%###########################################################################%]
+
+[% BLOCK cell %]
+  <td>
+    <b>[% attr.description%]:</b>&nbsp;
+    [% bug.${attr.name} FILTER html %]
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/delete-all.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/delete-all.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/delete-all.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,50 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl
+           title = "Remove your votes?"
+ %]
+
+<p>
+  You are about to remove all of your bug votes. Are you sure you wish to 
+  remove your vote from every bug you've voted on?
+</p>
+
+<form action="votes.cgi" method="post">
+    <input type="hidden" name="action" value="vote">
+  <p>
+    <input type="radio" name="delete_all_votes" value="1">
+    Yes, delete all my votes
+  </p>
+  <p>
+    <input type="radio" name="delete_all_votes" value="0" checked="checked">
+    No, go back and review my votes
+  </p>
+  <p>
+    <input type="submit" value="Submit">
+  </p>
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-bug.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-bug.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-bug.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,57 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bug_id: integer. ID of the bug we are listing the votes for.
+  # users: list of hashes. May be empty. Each hash has two members:
+  #   name: string. The login name of the user whose vote is attached
+  #   count: integer. The number of times that user has votes for this bug.
+  # total: integer. The total number of votes for this bug. 
+  #%]
+  
+[% PROCESS global/header.html.tmpl
+           title = "Show Votes"
+           h2 = "Bug <a href=\"show_bug.cgi?id=$bug_id\">$bug_id</a>"
+ %]
+ 
+<table cellspacing="4">
+  <tr>
+    <th>Who</th>
+    <th>Number of votes</th>
+  </tr>
+
+  [% FOREACH voter = users %]
+    <tr>
+      <td>
+        <a href="votes.cgi?action=show_user&amp;user=[% voter.name FILTER url_quote %]">
+          [% voter.name FILTER html %]
+        </a>
+      </td>
+      <td align="right">
+        [% voter.count %]
+      </td>
+    </tr>
+  [% END %]
+</table>
+
+<p>Total votes: [% total %]</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-user.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-user.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/bug/votes/list-for-user.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,132 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+           title = "Show Votes"
+           h2 = voting_user.name
+ %]
+
+[% canedit = 1 IF voting_user.login == user.login %]
+
+[% IF votes_recorded %]
+  <p>
+    <font color="red">
+      The changes to your votes have been saved.
+    </font>
+  </p>
+[% ELSE %]
+  <br>
+[% END %]
+
+[% IF products.size %]
+  <form action="votes.cgi">
+    <input type="hidden" name="action" value="vote">
+    <table cellspacing="4">
+      <tr>
+        <td></td>
+        <th>Bug #</th>
+        <th>Summary</th>
+        <th>Votes</th>
+      </tr>
+
+      [% FOREACH product = products %]
+        <tr>
+          <th>[% product.name FILTER html %]</th>
+          <td></td>
+          [% IF product.maxperbug < product.maxvotes AND
+                product.maxperbug > 1 %]
+            <td>
+              <font size="-1">
+                (Note: only [% product.maxperbug %] vote
+                [% "s" IF product.maxperbug != 1 %] allowed per bug in 
+                this product.)
+              </font>
+            </td>
+          [% END %]
+        </tr>
+
+        [% FOREACH bug = product.bugs %]
+          <tr>
+            <td></td>
+            <td>
+              [% "<strike>" IF NOT bug.opened %]
+                <a href="show_bug.cgi?id=[% bug.id %]">
+                  [% bug.id %]</a>
+              [% "</strike>" IF NOT bug.opened %]
+            </td>
+            <td>
+              <a href="votes.cgi?action=show_bug&amp;bug_id=[% bug.id %]">
+                [% bug.summary FILTER html %]
+              </a>
+            </td>
+            <td align="right">
+              [% IF canedit %]
+                [% IF product.onevoteonly %]
+                  <input type="checkbox" name="[% bug.id %]" value="1"
+                    [% " checked" IF bug.count %]>
+                [% ELSE %]
+                  <input name="[% bug.id %]" value="[% bug.count %]" 
+                         size="2">
+                [% END %]
+              [% ELSE %]
+                [% bug.count %]
+              [% END %]
+            </td>
+          </tr>
+        [% END %]
+
+        <tr>
+          <td></td>
+          <td colspan="3">[% product.total %] vote
+            [% "s" IF product.total != 1 %] used out of [% product.maxvotes %]
+            allowed.
+            <br>
+            <br>
+          </td>
+        </tr>
+      [% END %]
+    </table>
+
+    [% IF canedit %]
+      <input type="submit" value="Change My Votes">
+      <br>
+      <br>
+      To change your votes, type in new numbers (using zero to
+      mean no votes) or change the checkbox, and then click 
+      <b>Change My Votes</b>.
+    [% END %]  
+  </form>
+[% ELSE %]
+  <p>
+    [% IF canedit %]
+    You are
+    [% ELSE %]
+    This user is
+    [% END %]
+    currently not voting on any bugs.
+  </p>
+[% END %]
+
+<p>
+  <a href="/bugzilla/votehelp.html">Help with voting</a>.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/filterexceptions.pl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/filterexceptions.pl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/filterexceptions.pl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,377 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code are the Bugzilla tests.
+#
+# The Initial Developer of the Original Code is Jacob Steenhagen.
+# Portions created by Jacob Steenhagen are
+# Copyright (C) 2001 Jacob Steenhagen. All
+# Rights Reserved.
+#
+# Contributor(s): Gervase Markham <gerv at gerv.net>
+
+# Important! The following classes of directives are excluded in the test,
+# and so do not need to be added here. Doing so will cause warnings.
+# See 008filter.t for more details.
+#
+# Comments                        - [%#...
+# Directives                      - [% IF|ELSE|UNLESS|FOREACH...
+# Assignments                     - [% foo = ...
+# Simple literals                 - [% " selected" ...
+# Values always used for numbers  - [% (i|j|k|n|count) %]
+# Params                          - [% Param(...
+# Safe functions                  - [% (time2str|GetBugLink)...
+# Safe vmethods                   - [% foo.size %]
+# TT loop variables               - [% loop.count %]
+# Already-filtered stuff          - [% wibble FILTER html %]
+#   where the filter is one of html|csv|js|url_quote|quoteUrls|time|uri|xml
+
+# Key:
+#
+# "#": directive should be filtered, but not doing so is not a security hole
+# The plan is to come back and add filtering for all those marked "#" after
+# the security release.
+#
+# "# Email": as above; but noting that it's an email address.
+# Other sorts of comments denote cleanups noticed while doing this work;
+# they should be fixed in the very short term.
+
+%::safe = (
+
+'sidebar.xul.tmpl' => [
+  'template_version', 
+],
+
+'search/boolean-charts.html.tmpl' => [
+  '"field${chartnum}-${rownum}-${colnum}"',
+  '"value${chartnum}-${rownum}-${colnum}"',
+  '"type${chartnum}-${rownum}-${colnum}"',
+  'field.name',
+  'field.description',
+  'type.name',
+  'type.description',
+  '"${chartnum}-${rownum}-${newor}"',
+  '"${chartnum}-${newand}-0"',
+  'newchart',
+  '$jsmagic', #
+],
+
+'search/form.html.tmpl' => [
+  'qv.value',
+  'qv.name',
+  'qv.description',
+  'field.name',
+  'field.description',
+  'sel.name',
+  'button_name', #
+],
+
+'search/knob.html.tmpl' => [
+  'button_name', #
+],
+
+'reports/components.html.tmpl' => [
+  'numcols',
+  'numcols - 1',
+],
+
+'reports/duplicates-simple.html.tmpl' => [
+],
+
+'reports/duplicates-table.html.tmpl' => [
+  '"&maxrows=$maxrows" IF maxrows',
+  '"&changedsince=$changedsince" IF changedsince',
+  '"&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible',
+  'column.name',
+  'column.description',
+  'vis_bug_ids.push(bug.id)',
+  'bug.id',
+  'bug.count',
+  'bug.delta',
+],
+
+'reports/duplicates.html.tmpl' => [
+  'bug_ids_string',
+  'maxrows',
+  'changedsince',
+  'reverse',
+],
+
+'reports/keywords.html.tmpl' => [
+  'keyword.bugcount',
+],
+
+'list/change-columns.html.tmpl' => [
+  'column',
+],
+
+'list/edit-multiple.html.tmpl' => [
+  'group.bit',
+  'knum',
+  'menuname',
+  'selected IF resolution == "FIXED"', #
+],
+
+'list/list-rdf.rdf.tmpl' => [
+  'template_version',
+  'bug.id',
+  'column',
+],
+
+'list/list-simple.html.tmpl' => [
+],
+
+'list/list.html.tmpl' => [
+  'buglist',
+],
+
+'list/table.html.tmpl' => [
+  'id',
+  'splitheader ? 2 : 1',
+  'abbrev.$id.title || column.title', #
+  'tableheader',
+  'bug.id',
+],
+
+'global/choose-product.html.tmpl' => [
+  'target',
+],
+
+'global/code-error.html.tmpl' => [
+  'error',
+],
+
+'global/footer.html.tmpl' => [
+  'CALL SyncAnyPendingShadowChanges() IF SyncAnyPendingShadowChanges',
+],
+
+'global/header.html.tmpl' => [
+  'header_html',
+  'javascript',
+  'style',
+  'style_url',
+  'bgcolor',
+  'onload',
+  'title',
+  'h1',
+  'h2',
+  'message',
+],
+
+'global/hidden-fields.html.tmpl' => [
+  'mvalue | html | html_linebreak', # Need to eliminate | usage
+  'field.value | html | html_linebreak',
+],
+
+'global/select-menu.html.tmpl' => [
+  'options', 
+],
+
+'global/useful-links.html.tmpl' => [
+  'user.login', # Email address
+],
+
+'global/user-error.html.tmpl' => [
+  'error', # can contain HTML in 2.16.x
+],
+
+'bug/comments.html.tmpl' => [
+  'comment.time',
+  'quoteUrls(comment.body)',
+],
+
+'bug/dependency-graph.html.tmpl' => [
+  'image_map', # We need to continue to make sure this is safe in the CGI
+  'image_url', 
+  'map_url', 
+  'bug_id', 
+],
+
+'bug/dependency-tree.html.tmpl' => [
+  'hide_resolved ? "Open b" : "B"', 
+  'bugid', 
+  'maxdepth', 
+  'dependson_ids.join(",")', 
+  'blocked_ids.join(",")',
+  'dep_id',
+  'hide_resolved ? 0 : 1',
+  'hide_resolved ? "Show" : "Hide"',
+  'realdepth < 2 || maxdepth == 1 ? "disabled" : ""',
+  'hide_resolved',
+  'realdepth < 2 ? "disabled" : ""',
+  'maxdepth + 1',
+  'maxdepth == 0 || maxdepth == realdepth ? "disabled" : ""',
+  'realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : ""',
+  'maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""',
+  'maxdepth == 1 ? 1 
+                       : ( maxdepth ? maxdepth - 1 : realdepth - 1 )',
+  'realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
+            "disabled" : ""',
+],
+
+'bug/edit.html.tmpl' => [
+  'bug.delta_ts',
+  'bug.bug_id',
+  'bug.votes',
+  'group.bit',
+  'knum',
+  'dep.title',
+  'dep.fieldname',
+  'bug.${dep.fieldname}.join(\', \')',
+  'selname',
+  'bug.longdesclength',
+  'bug.creation_ts',
+],
+
+'bug/navigate.html.tmpl' => [
+  'this_bug_idx + 1',
+  'bug_list.first',
+  'bug_list.last',
+  'bug_list.$prev_bug',
+  'bug_list.$next_bug',
+],
+
+'bug/show-multiple.html.tmpl' => [
+  'bug.bug_id',
+  'bug.component', #
+  'attr.description', #
+],
+
+'bug/votes/list-for-bug.html.tmpl' => [
+  'voter.count',
+  'total',
+],
+
+'bug/votes/list-for-user.html.tmpl' => [
+  'product.maxperbug',
+  'bug.id',
+  'bug.count',
+  'product.total',
+  'product.maxvotes',
+],
+# h2 = voting_user.name # Email
+
+'bug/process/confirm-duplicate.html.tmpl' => [
+  'original_bug_id',
+  'duplicate_bug_id',
+],
+
+'bug/process/midair.html.tmpl' => [
+  'bug_id',
+],
+
+'bug/process/next.html.tmpl' => [
+  'next_id',
+],
+
+'bug/process/results.html.tmpl' => [
+  'title.$type',
+  'id',
+],
+
+'bug/process/verify-new-product.html.tmpl' => [
+],
+
+'bug/create/create.html.tmpl' => [
+  'g.bit',
+  'sel.name',
+  'sel.description',
+],
+
+'bug/activity/show.html.tmpl' => [
+  'bug_id',
+],
+
+'bug/activity/table.html.tmpl' => [
+  'change.attachid',
+  'change.field',
+],
+
+'attachment/create.html.tmpl' => [
+  'bugid',
+  'attachment.id',
+],
+
+'attachment/created.html.tmpl' => [
+  'attachid',
+  'bugid',
+  'contenttype',
+],
+
+'attachment/edit.html.tmpl' => [
+  'attachid',
+  'bugid',
+  'def.id',
+  'a',
+],
+
+'attachment/list.html.tmpl' => [
+  'attachment.attachid',
+  'attachment.date',
+  'bugid',
+],
+
+'attachment/show-multiple.html.tmpl' => [
+  'a.attachid',
+  'a.date',
+],
+
+'attachment/updated.html.tmpl' => [
+  'attachid',
+  'bugid',
+],
+
+'admin/attachstatus/create.html.tmpl' => [
+  'id',
+],
+
+'admin/attachstatus/delete.html.tmpl' => [
+  'attachcount',
+  'id',
+  'name',
+],
+
+'admin/attachstatus/edit.html.tmpl' => [
+  'id',
+  'sortkey',
+],
+
+'admin/attachstatus/list.html.tmpl' => [
+  'statusdef.sortkey',
+  'statusdef.id',
+  'statusdef.attachcount',
+],
+
+'account/prefs/account.html.tmpl' => [
+  'login_change_date', #
+],
+
+'account/prefs/email.html.tmpl' => [
+  'useqacontact ? \'5\' : \'4\'',
+  'role',
+  'reason.name',
+  'reason.description',
+],
+
+'account/prefs/permissions.html.tmpl' => [
+  'bit_description',
+],
+
+'account/prefs/prefs.html.tmpl' => [
+  'tab.name',
+  'tab.description',
+  'current_tab.name',
+  'current_tab.description',
+  'current_tab.description FILTER lower',
+],
+
+);

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/banner.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/banner.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/banner.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,34 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Matthew Tuck <matty at chariot.net.au>
+  #%]
+
+[%# Migration note: this file corresponds to the old Param 'bannerhtml' %]
+
+    <table bgcolor="#000000" width="100%" border="0" cellpadding="0"
+           cellspacing="0">
+      <tr>
+        <td>
+          <font color="#FFFFFF" size="8"><center>
+            Bugzilla Version [% Param("version") %]
+          </center></font>
+        </td>
+      </tr>
+    </table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/choose-product.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/choose-product.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/choose-product.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,48 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # proddesc: hash. May be empty. The hash keys are the products, and the values
+  # are their descriptions.
+  #%]
+
+[% DEFAULT title = "Choose a Product" %]
+[% PROCESS global/header.html.tmpl %]
+
+<table>
+
+[% FOREACH p = proddesc.keys.sort %]
+  <tr>
+    <th align="right" valign="top">
+      <a href="[% target %]?product=[% p FILTER url_quote %]
+            [% IF format %]&amp;format=[% format FILTER url_quote %][% END %]">
+      [% p FILTER html %]</a>:
+    </th>
+
+    [% IF proddesc.$p %]
+      <td valign="top">&nbsp;[% proddesc.$p FILTER html %]</td>
+    [% END %]
+  </tr>
+[% END %]
+        
+</table>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/code-error.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/code-error.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/code-error.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,68 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # header_done: boolean. True if the header has already been printed.
+  # error: string. The error message to be printed. May contain HTML.
+  # variables: hash. Useful data about the problem. The keys are the variable
+  #  names, and the values the variable values.
+  #%]
+  
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl %]
+[% END %]
+
+<tt>
+  <p>
+    Bugzilla has suffered an internal error. Please save this page and send
+    it to [% Param("maintainer") %] with details of what you were doing at 
+    the time this message appeared.
+  </p>
+  <script> <!--
+    document.write("<p>URL: " +
+                   document.location.href.replace(/&/g, "&amp;")
+                                         .replace(/</g, "&lt;")
+                                         .replace(/>/g, "&gt;") +
+                   "</p>");
+  // -->
+  </script>
+</tt>
+
+<table cellpadding="20">
+  <tr>
+    <td bgcolor="#ff0000">
+      <font size="+2">
+        [% error %]
+      </font>
+    </td>
+  </tr>
+</table>
+
+[% IF variables %]
+  <pre>
+Variables:
+  [% FOREACH key = variables.keys %]
+    [%+ key FILTER html %]: [%+ variables.$key FILTER html %]
+  [% END %]
+  </pre>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/footer.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/footer.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/footer.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,61 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. However, you must fulfill the interface to
+  # global/useful-links.html.tmpl.
+  #%]
+  
+[%# Migration note: this whole file corresponds to the old Param 'footerhtml' %]
+  
+<table border="0">
+  <tr>
+    <td bgcolor="#000000" valign="top">
+      <table border="0" cellpadding="10" cellspacing="0" width="100%"
+             bgcolor="lightyellow">
+        <tr>
+          <td>
+          
+[%# Migration note: this section corresponds to the old Param 'blurbhtml' %]
+ 
+           This is <b>Bugzilla</b>: the Mozilla bug system.  For more 
+            information about what Bugzilla is and what it can do, see 
+            <a href="http://www.bugzilla.org/">bugzilla.org</a>.
+            
+[%# End section %]
+
+            <br>
+
+[%# Migration note: useful-links.html.tmpl corresponds to %commandmenu% %]
+
+           [% PROCESS "global/useful-links.html.tmpl" %]
+
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>
+
+[% CALL SyncAnyPendingShadowChanges() IF SyncAnyPendingShadowChanges %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/header.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/header.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/header.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,104 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # (All the below interface elements are optional.)
+  # title: string. Page title.
+  # h1: string. Main page header.
+  # h2: string. Page subheader.
+  # header_html: string. Any other HTML to go inside the <head> tags.
+  # javascript: string. Javascript to go in the header.
+  # style: string. CSS style.
+  # style_urls: list. List of URLs to CSS style sheets.
+  # message: string. A message to display to the user. May contain HTML.
+  #%]
+
+[% DEFAULT
+  h1 = title
+  h2 = ""
+  bgcolor = "#FFFFFF"
+  onload = ""
+%]
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <title>[% title %]</title>
+    
+[%# Migration note: contents of the old Param 'headerhtml' would go here %]
+
+    [% header_html %]
+    
+    [% IF javascript %]
+      <script type="text/javascript" language="JavaScript">
+        [% javascript %]
+      </script>
+    [% END %]
+    
+    [% IF style %]
+      <style type="text/css">
+        [% style %]
+      </style>
+    [% END %]
+    
+    [% IF style_urls %]
+      [% FOREACH style_url = style_urls %]
+        <link href="[% style_url %]" rel="stylesheet" type="text/css">
+      [% END %]
+    [% END %]
+  
+  </head>
+  
+[%# Migration note: contents of the old Param 'bodyhtml' go in the body tag,
+  # but set the bgcolor and onload attributes in the DEFAULT directive above.
+  #%]
+
+  <body bgcolor="[% bgcolor %]" onload="[% onload %]">
+
+[%# Migration note: the following file corresponds to the old Param
+  # 'bannerhtml'
+  #%]
+  
+[% INCLUDE global/banner.html.tmpl %]
+    
+[% IF h1 || h2 %]
+    <table border="0" cellspacing="0">
+      <tr>
+        <td valign="top" align="left">
+          <table border="0" cellpadding="0" cellspacing="2">
+            <tr>
+              <td valign="top" align="left" nowrap="nowrap">
+                <font size="+1"><b>[% h1 %]</b></font>
+              </td>
+            </tr>
+          </table>
+        </td>
+        <td valign="middle">&nbsp;</td>
+        <td valign="middle" align="left">[% h2 %]</td>
+      </tr>
+    </table>
+[% END %]
+
+[% IF message %]
+  <table width="100%" cellspacing="0" cellpadding="5" border="1"><tr><td>
+    <font color="green">[% message %]</font>
+  </td></tr></table>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/hidden-fields.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/hidden-fields.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/hidden-fields.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # form: hash; the form fields/values for which to generate hidden fields.
+  # mform: hash; the form fields/values with multiple values for which to
+  #   generate hidden fields.
+  # exclude: string; a regular expression matching fields to exclude
+  #   from the list of hidden fields generated by this template
+  #%]
+ 
+[%# Generate hidden form fields for non-excluded fields. %]
+[% FOREACH field = form %]
+  [% NEXT IF exclude && field.key.search(exclude) %]
+  [% IF mform.${field.key}.size > 1 %]
+    [% FOREACH mvalue = mform.${field.key} %]
+      <input type="hidden" name="[% field.key FILTER html %]"
+             value="[% mvalue | html | html_linebreak %]">
+    [% END %]
+  [% ELSE %]
+    <input type="hidden" name="[% field.key FILTER html %]"
+           value="[% field.value | html | html_linebreak %]">
+  [% END %]
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/message.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/message.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/message.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s):
+  #%]
+  
+[%# INTERFACE:
+  # url: string. An optional URL to go to.
+  # link: string. The link text for that URL.
+  #%]
+
+[% DEFAULT title = "Bugzilla Message" %]
+
+[% PROCESS global/header.html.tmpl %]
+
+[%# The "header" template automatically displays the contents of a "message"
+    variable if it finds one, so it is not necessary to display the message
+    here. %]
+
+[%# Display a URL if the calling script has included one. %]
+[% IF url && link %]
+  <p>
+    <a href="[% url FILTER html %]">[% link FILTER html %]</a>
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/select-menu.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/select-menu.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/select-menu.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,56 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # name: string; the name of the menu.
+  #
+  # options: array or hash; the items with which to populate the array.
+  #   If a hash is passed, the hash keys become the names displayed
+  #   to the user while the hash values become the value of the item.
+  # 
+  # default: string; the item selected in the menu by default.
+  # 
+  #%]
+ 
+[%# Get the scalar representation of the options reference, 
+  # which looks like "ARRAY(0xA352BA3F)" or "HASH(0xA352BA3F)",
+  # so we can figure out whether it is a reference to an array
+  # or a hash.
+  #%]
+[% options_type = BLOCK %][% options %][% END %]
+
+<select name="[% name FILTER html %]">
+  [% IF options_type.search("ARRAY") %]
+    [% FOREACH value = options %]
+      <option value="[% value FILTER html %]"
+              [% " selected" IF value == default %]>
+        [% value FILTER html %]
+      </option>
+    [% END %]
+  [% ELSIF values_type.search("HASH") %]
+    [% FOREACH option = options %]
+      <option value="[% option.value FILTER html %]" 
+              [% " selected" IF option.value == default %]>
+        [% option.key FILTER html %]
+      </option>
+    [% END %]
+  [% END %]
+</select>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/useful-links.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/useful-links.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/useful-links.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,124 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # user: hash. Information about the user. If the user is not logged in,
+  #       user.login is undefined.
+  #   login: string. The user's Bugzilla login email address.
+  #   showmybugslink: boolean. True if user wants My Bugs in the footer.
+  #   queries: list of strings. The names of those of the user's named
+  #     queries which should be displayed in the footer.
+  #   groups: hash. Keys are group names, values are true if user in that group.
+  #     The keys used in this template are
+  #     tweakparams, editcomponents, creategroups, editkeywords, confirm,
+  #     editbugs, editusers. 
+  #%]
+
+[%# Migration note: this whole file corresponds to the old %commandmenu% 
+    substitution param in 'footerhtml' %]
+
+<form method="get" action="show_bug.cgi">
+  <table width="100%">
+    <tr>
+      <td>
+        Actions:
+      </td>
+      
+      <td valign="middle" nowrap>
+        <a href="enter_bug.cgi">New</a> | 
+        <a href="query.cgi">Query</a> |
+        
+        <input type="submit" value="Find"> bug # 
+        <input name="id" size="6"> | 
+        
+        <a href="reports.cgi">Reports</a> 
+       
+        [% IF user.login && Param('usevotes') %]
+          | <a href="votes.cgi?action=show_user">My Votes</a>
+        [% END %]      
+      </td>
+
+      <td>&nbsp;</td>
+      
+    [% IF user.login %] 
+
+      <td valign="middle">
+        Edit <a href="userprefs.cgi">prefs</a>
+        [% ", <a href='editparams.cgi'>parameters</a>" 
+                                                   IF user.groups.tweakparams %]
+        [% ", <a href='editusers.cgi'>users</a>"     IF user.groups.editusers 
+                                                  || (user.blessgroupset > 0) %]
+        [% ", <a href='editproducts.cgi'>products</a>" 
+                                                IF user.groups.editcomponents %]
+        [% ", <a href='editattachstatuses.cgi'> attachment&nbsp;statuses</a>" 
+                                                IF user.groups.editcomponents %]
+        [% ", <a href='editgroups.cgi'>groups</a>" 
+                                                  IF user.groups.creategroups %]
+        [% ", <a href='editkeywords.cgi'>keywords</a>" 
+                                                  IF user.groups.editkeywords %]
+        [% " | <a href='sanitycheck.cgi'>Sanity&nbsp;check</a>" 
+                                                   IF user.groups.tweakparams %]
+
+        | <a href="relogin.cgi">Log&nbsp;out</a>&nbsp;[% user.login %]
+      </td>
+    </tr> 
+
+    [%# Preset queries %]
+    
+    [% preset_queries = user.showmybugslink %]
+    [% FOREACH q = user.queries %]
+      [% preset_queries = 1 IF q.linkinfooter %]
+    [% END %]
+      
+    <tr>
+      [% IF preset_queries %]
+        <td>
+          Preset&nbsp;Queries:
+        </td>
+      [% END %]
+      
+      <td colspan="3">
+        [% IF user.showmybugslink %]
+          [% filtered_username = user.login FILTER url_quote %]
+          <a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">My&nbsp;Bugs</a>
+          [% print_pipe = 1 %]
+        [% END %]
+
+        [% FOREACH q = user.queries %]
+          [% IF q.linkinfooter %]
+            [% " | " IF print_pipe %]
+            <a href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]"><nobr>[% q.name FILTER html %]</nobr></a>
+            [% print_pipe = 1 %]
+          [% END %]        
+        [% END %]
+      </td>
+    </tr>
+      
+    [% ELSE %]    
+      <td valign="middle" align="right">
+        <a href="createaccount.cgi">New&nbsp;Account</a> | 
+        <a href="query.cgi?GoAheadAndLogIn=1">Log&nbsp;In</a>
+      </td>
+    </tr>
+    [% END %]
+    
+  </table>                
+</form>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/user-error.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/user-error.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/global/user-error.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,45 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # header_done: boolean. True if the header has already been printed.
+  # error: string. The error message to be displayed. May contain HTML.
+  #%]
+  
+[% UNLESS header_done %]
+  [% PROCESS global/header.html.tmpl %]
+[% END %]
+
+<table cellpadding="20">
+  <tr>
+    <td bgcolor="#ff0000">
+      <font size="+2">
+        [% error %]
+      </font>
+    </td>
+  </tr>
+</table>
+
+<p>
+  Please press <b>Back</b> and try again.
+</p>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/index.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/index.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/index.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,93 @@
+<!-- 1.0 at bugzilla.org -->
+[%# -*- mode: html -*- %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Terry Weissman <terry at mozilla.org>
+  #                 Jacob Steenhagen <jake at acutex.net>
+  #%]
+
+[%# INTERFACE:
+  # username: string. The login name of the user, if any.
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = 'Bugzilla Main Page'
+%]
+
+<script type="text/javascript" language="JavaScript">
+<!--
+function addSidebar() {
+      if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function"))
+      {
+	 // DEBCOMPAT: CGI are under /cgi-bin/bugzilla 
+         window.sidebar.addPanel ("Bugzilla", "[% Param('urlbase') %]sidebar.cgi", "");
+         //window.sidebar.addPanel ("Bugzilla", "[% Param('urlbase') %]../cgi-bin/bugzilla/sidebar.cgi", "");
+      }
+      else
+      {
+         var rv = window.confirm ("This page is enhanced for use with Netscape 6.  " + "Would you like to upgrade now?");
+         if (rv)
+            document.location.href = "http://home.netscape.com/download/index.html";
+      }
+   }
+//-->
+</script>
+
+
+<table width="100%"><tr>
+ <td>
+  <p>This is where we put in lots of nifty words explaining all about Bugzilla.</p>
+
+  But it all boils down to a choice of:
+  <p>
+  <a href="query.cgi">Query existing bug reports</a><br>
+  <a href="enter_bug.cgi">Enter a new bug report</a><br>
+  <a href="reports.cgi">Get summary reports</a><br>
+  </p><p>
+[% IF username %]
+  <a href="userprefs.cgi">Change password or user preferences</a><br>
+  <a href="relogin.cgi">Logout [% username FILTER html %]</a><br>
+[% ELSE %]
+  <a href="query.cgi?GoAheadAndLogIn=1">Log in to an existing account</a><br>
+  <a href="createaccount.cgi">Open a new Bugzilla account</a><br>
+[% END %]
+  </p><p>
+  <a href="javascript:addSidebar()">Add to Sidebar</a> (Requires Mozilla or Netscape 6)<br>
+  </p>
+  <form name="f" action="show_bug.cgi" method="get"
+      onsubmit="QuickSearch(f.id.value); return false;"> 
+  <p>
+  Enter a bug # or some search terms:<br>
+  <input type="text" name="id">
+  <input type="submit" value="Show">
+  <a href="/bugzilla/quicksearch.html">[Help]</a>
+  </p>
+  </form>
+ </td>
+ <td align="right"><img src="/bugzilla/ant.jpg" width="329" height="220" border="2" alt="ant.jpg [8.5k]"></td>
+</tr></table>
+
+<script type="text/javascript" language="JavaScript" src="/bugzilla/localconfig.js"></script>
+<script type="text/javascript" language="JavaScript" src="/bugzilla/quicksearch.js"></script>
+<script type="text/javascript">
+<!--
+document.forms['f'].id.focus();
+//-->
+</script>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/change-columns.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/change-columns.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/change-columns.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  # 
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Dave Lawrence <dkl at redhat.com>
+  #%]
+
+[% PROCESS global/header.html.tmpl
+  title = "Change Columns"
+%]
+
+Check which columns you wish to appear on the list, and then click
+on submit.  (Cookies are required.)
+<p>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
+[% FOREACH column = masterlist %]
+  <input type="checkbox" id="[% column %]" name="column_[% column %]" [% "CHECKED" IF lsearch(collist, column) != -1 %]>
+  <label for="[% column %]">[% desc.${column} FILTER html %]</label><br>
+[% END %]
+</p><p>
+<input id="nosplitheader" type="radio" name="splitheader" value="0" [% "CHECKED" IF ! splitheader %]>
+<label for="nosplitheader">Normal headers (prettier)</label><br>
+<input id="splitheader" type="radio" name="splitheader" value="1" [% "CHECKED" IF splitheader %]>
+<label for="splitheader">Stagger headers (often makes list more compact)</label>
+</p><p>
+<input type="submit" value="Submit">
+</form>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
+<input type="hidden" name="resetit" value="1">
+<input type="submit" value="Reset to Bugzilla default">
+</form>
+</p>
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/edit-multiple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/edit-multiple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/edit-multiple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,316 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<script type="text/javascript" language="JavaScript">
+  var numelements = document.forms.changeform.elements.length;
+  function SetCheckboxes(value) {
+      var item;
+      for (var i=0 ; i<numelements ; i++) {
+          item = document.forms.changeform.elements[i];
+          item.checked = value;
+      }
+  }
+  document.write(' <input type="button" name="uncheck_all" value="Uncheck All" onclick="SetCheckboxes(false);">');
+  document.write(' <input type="button" name="check_all" value="Check All" onclick="SetCheckboxes(true);">');
+</script>
+
+<hr>
+
+<p><font size="-1">
+  To change multiple bugs:
+  <ol>
+    <li>Check the bugs you want to change above.</li>
+    <li>Make your changes in the form fields below.  If the change
+        you are making requires an explanation, include it in
+        the comments box.</li>
+    <li>Click the <em>Commit</em> button.</li>
+  </ol>
+</font></p>
+
+<table id="form">
+  <tr>
+
+    <th><label for="product">Product:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "product" 
+                            menuitems = products %]
+    </td>
+
+    <th><label for="version">Version:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "version" 
+                            menuitems = versions %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th>
+      <label for="rep_platform">
+        <a href="/bugzilla/bug_status.html#rep_platform">Platform</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "rep_platform" 
+                            menuitems = platforms %]
+    </td>
+
+    <th>
+      <label for="priority">
+        <a href="/bugzilla/bug_status.html#priority">Priority</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "priority" 
+                            menuitems = priorities %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th><label for="component">Component:</label></th>
+    <td>
+      [% PROCESS selectmenu menuname = "component" 
+                            menuitems = components %]
+    </td>
+
+    <th>
+      <label for="bug_severity">
+        <a href="/bugzilla/bug_status.html#severity">Severity</a>:
+      </label>
+    </th>
+    <td>
+      [% PROCESS selectmenu menuname = "bug_severity" 
+                            menuitems = severities %]
+    </td>
+
+  </tr>
+  <tr>
+
+    <th><label for="target_milestone">Target Milestone:</label></th>
+    <td colspan="3">
+      [% PROCESS selectmenu menuname = "target_milestone" 
+                            menuitems = targetmilestones %]
+    </td>
+
+  </tr>
+
+  [% IF Param("useqacontact") %]
+    <tr>
+      <th><label for="qa_contact">QA Contact:</label></th>
+      <td colspan="3">
+        <input id="qa_contact" 
+               name="qa_contact" 
+               value="[% dontchange FILTER html %]" 
+               size="32">
+      </td>
+    </tr>
+  [% END %]
+
+  <tr>
+
+    <th><label for="masscc">CC List:</label></th>
+    <td colspan="3">
+      <input id="masscc" name="masscc" size="32">
+      <select name="ccaction">
+        <option value="add">Add these to the CC List</option>
+        <option value="remove">Remove these from the CC List</option>
+      </select>
+    </td>
+
+  </tr>
+
+  [% IF use_keywords %]
+    <tr>
+
+      <th>
+        <label for="keywords">
+          <a href="describekeywords.cgi">Keywords</a>:
+        </label>
+      </th>
+      <td colspan="3">
+        <input id="keywords" name="keywords" size="32">
+        <select name="keywordaction">
+          <option value="add">Add these keywords</option>
+          <option value="delete">Delete these keywords</option>
+          <option value="makeexact">Make the keywords be exactly this list</option>
+        </select>
+      </td>
+
+    </tr>
+  [% END %]
+
+</table>
+
+<input type="hidden" name="multiupdate" value="Y">
+
+<label for="comment"><b>Additional Comments:</b></label><br>
+<textarea id="comment" name="comment" rows="5" cols="80" wrap="hard"></textarea><br>
+
+[% IF groups.size > 0 %]
+
+  <b>Groupset:</b><br>
+  <table border="1">
+    <tr>
+      <th>Don't<br>change<br>this group<br>restriction</td>
+      <th>Remove<br>bugs<br>from this<br>group</td>
+      <th>Add<br>bugs<br>to this<br>group</td>
+      <th>Group Name:</td>
+    </tr>
+
+    [% FOREACH group = groups %]
+    <tr>
+      <td align="center">
+        <input type="radio" name="bit-[% group.bit %]" value="-1" checked="checked">
+      </td>
+      <td align="center">
+        <input type="radio" name="bit-[% group.bit %]" value="0">
+      </td>
+      [% IF group.isactive %]
+        <td align="center">
+          <input type="radio" name="bit-[% group.bit %]" value="1">
+        </td>
+      [% ELSE %]
+        <td>&nbsp;</td>
+        [% foundinactive = 1 %]
+      [% END %]
+
+      <td>
+        [% IF group.isactive %]
+          [% group.description FILTER html %]
+        [% ELSE %]
+          [% group.description FILTER html FILTER strike %]
+        [% END %]
+      </td>
+
+    </tr>
+    [% END %]
+
+  </table>
+
+  [% IF foundinactive %]
+    <font size="-1">(Note: Bugs may not be added to <strike>inactive 
+    groups</strike>, only removed.)</font><br>
+  [% END %]
+
+[% END %]
+
+
+
+[% knum = 0 %]
+<input id="knob-none" type="radio" name="knob" value="none" checked="checked">
+<label for="knob-none">Do nothing else</label><br>
+
+[% IF bugstatuses.size == 1 && bugstatuses.0 == unconfirmedstate %]
+  [% knum = knum + 1 %]
+  <input id="knob-confirm" type="radio" name="knob" value="confirm">
+  <label for="knob-confirm">
+    Confirm bugs (change status to <b>NEW</b>)
+  </label><br>
+[% END %]
+
+[% knum = knum + 1 %]
+<input id="knob-accept" type="radio" name="knob" value="accept">
+<label for="knob-accept">
+  Accept bugs (change status to <b>ASSIGNED</b>)
+</label><br>
+
+[%# If all the bugs being changed are open, allow the user to close them. %]
+[% IF !bugstatuses.containsany(closedstates) %]
+  [% knum = knum + 1 %]
+  <input id="knob-clearresolution" type="radio" name="knob" value="clearresolution">
+  <label for="knob-clearresolution">Clear the resolution</label><br>
+
+  [% knum = knum + 1 %]
+  <input id="knob-resolve" type="radio" name="knob" value="resolve">
+  <label for="knob-resolve">
+    Resolve bugs, changing <a HREF="/bugzilla/bug_status.html">resolution</a> to
+  </label>
+  <select name="resolution" onchange="document.forms.changeform.knob[[% knum %]].checked=true">
+    [% FOREACH resolution = resolutions %]
+      [% NEXT IF !resolution %]
+      <option value="[% resolution FILTER html %]" [% selected IF resolution == "FIXED" %]>
+        [% resolution FILTER html %]
+      </option>
+    [% END %]
+  </select><br>
+
+[% END %]
+
+[%# If all the bugs are closed, allow the user to reopen them. %]
+[% IF !bugstatuses.containsany(openstates) %]
+  [% knum = knum + 1 %]
+  <input id="knob-reopen" type="radio" name="knob" value="reopen">
+  <label for="knob-reopen">Reopen bugs</label><br>
+[% END %]
+
+[% IF bugstatuses.size == 1 %]
+  [% IF bugstatuses.contains('RESOLVED') %]
+    [% knum = knum + 1 %]
+    <input id="knob-verify" type="radio" name="knob" value="verify">
+    <label for="knob-verify">Mark bugs as <b>VERIFIED</b></label><br>
+  [% ELSIF bugstatuses.contains('VERIFIED') %]
+    [% knum = knum + 1 %]
+    <input id="knob-close" type="radio" name="knob" value="close">
+    <label for="knob-close">Mark bugs as <b>CLOSED</b></label><br>
+  [% END %]
+[% END %]
+
+[% knum = knum + 1 %]
+<input id="knob-reassign" type="radio" name="knob" value="reassign">
+<label for="knob-reassign"><a href="/bugzilla/bug_status.html#assigned_to">
+  Reassign</a> bugs to
+</label>
+<input name="assigned_to" 
+       value="[% user.login FILTER html %]"
+       onchange="document.forms.changeform.knob[[% knum %]].checked = true;"
+       size="32"><br>
+
+[% knum = knum + 1 %]
+<input id="knob-reassignbycomponent" 
+       type="radio" 
+       name="knob" 
+       value="reassignbycomponent">
+<label for="knob-reassignbycomponent">
+  Reassign bugs to owner of selected component
+</label><br>
+
+<input type="submit" value="Commit">
+
+[% IF ismover %]
+  <input type="submit" name="action" value="[% Param('move-button-text') %]">
+[% END %]
+
+
+[%############################################################################%]
+[%# Select Menu Block                                                        #%]
+[%############################################################################%]
+
+[% BLOCK selectmenu %]
+  <select id="[% menuname %]" name="[% menuname %]">
+    <option value="[% dontchange FILTER html %]" selected="selected">
+      [% dontchange FILTER html %]
+    </option>
+    [% FOREACH menuitem = menuitems %]
+      <option value="[% menuitem FILTER html %]">[% menuitem FILTER html %]</option>
+    [% END %]
+  </select>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-rdf.rdf.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-rdf.rdf.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-rdf.rdf.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,54 @@
+[% template_version = "1.0 at bugzilla.org" %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+<?xml version="1.0"?>
+<!-- [% template_version %] -->
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+     xmlns:bz="http://www.bugzilla.org/rdf#">
+
+<bz:result about="[% Param('urlbase') %]buglist.cgi?[% urlquerypart FILTER html %]">
+
+  <bz:bugs>
+    <Seq>
+    [% FOREACH bug = bugs %]
+      <li>
+        
+        <bz:bug about="[% Param('urlbase') %]show_bug.cgi?id=[% bug.id %]">
+          
+          <bz:id>[% bug.id %]</bz:id>
+        
+        [% FOREACH column = displaycolumns %]
+          <bz:[% column %]>[% bug.$column FILTER html %]</bz:[% column %]>
+        [% END %]
+        
+        </bz:bug>
+      
+      </li>
+
+    [% END %]
+
+    </Seq>
+
+  </bz:bugs>
+
+</bz:result>
+
+</RDF>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-simple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-simple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list-simple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # title: string. The title for this page. (optional)
+  #%]
+
+[%############################################################################%]
+[%# Initialization                                                           #%]
+[%############################################################################%]
+
+[% DEFAULT title = "Bug List" %]
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+<html>
+
+  <head>
+    <title>[% title FILTER html %]</title>
+    <link href="/bugzilla/css/buglist.css" rel="stylesheet" type="text/css" >
+  </head>
+
+  <body>
+    [% IF bugs.size == 0 %]
+      <h3>Zarro Boogs found.</h3>
+    [% ELSE %]
+      [% PROCESS list/table.html.tmpl %]
+    [% END %]
+  </body>
+
+</html>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/list.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,162 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%############################################################################%]
+[%# Template Initialization                                                  #%]
+[%############################################################################%]
+
+[% DEFAULT title = "Bug List" %]
+[% style_urls = [ "/bugzilla/css/buglist.css" ] %]
+[% qorder = order FILTER url_quote IF order %]
+
+
+[%############################################################################%]
+[%# Page Header                                                              #%]
+[%############################################################################%]
+
+[% PROCESS global/header.html.tmpl
+  title = title
+  style = style
+%]
+
+<div align="center">
+  <b>[% currenttime FILTER html %]</b><br>
+
+  [% IF debug %]
+    <p>[% query FILTER html %]</p>
+  [% END %]
+
+  [% IF quip %]
+    <a href="quips.cgi"><i>[% quip FILTER html %]</i></a>
+  [% END %]
+
+</div>
+
+[% IF toolong %]
+  <h2>
+    This list is too long for Bugzilla's little mind; the 
+    Next/Prev/First/Last buttons won't appear on individual bugs.
+  </h2>
+[% END %]
+
+<hr>
+
+
+[%############################################################################%]
+[%# Preceding Status Line                                                    #%]
+[%############################################################################%]
+
+[% IF bugs.size > 9 %]
+  [% bugs.size %] bugs found.
+[% END %]
+
+
+[%############################################################################%]
+[%# Start of Change Form                                                     #%]
+[%############################################################################%]
+
+[% IF dotweak %]
+  <form name="changeform" method="post" action="process_bug.cgi">
+[% END %]
+
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+[% FLUSH %]
+[% PROCESS list/table.html.tmpl %]
+
+[%############################################################################%]
+[%# Succeeding Status Line                                                   #%]
+[%############################################################################%]
+
+[% IF bugs.size == 0 %]
+  Zarro Boogs found.
+  <p>
+    <a href="query.cgi">Query Page</a>
+    &nbsp;&nbsp;<a href="enter_bug.cgi">Enter New Bug</a>
+    <a href="query.cgi?[% urlquerypart FILTER html %]">Edit this query</a>
+  </p>
+
+[% ELSIF bugs.size == 1 %]
+  One bug found.
+
+[% ELSE %]
+  [% bugs.size %] bugs found.
+
+[% END %]
+
+<br>
+
+
+[%############################################################################%]
+[%# Rest of Change Form                                                      #%]
+[%############################################################################%]
+
+[% IF dotweak %]
+
+  [% PROCESS "list/edit-multiple.html.tmpl" %]
+  
+  </form>
+
+  <hr>
+
+[% END %]
+
+
+[%############################################################################%]
+[%# Navigation Bar                                                           #%]
+[%############################################################################%]
+
+[% IF bugs.size > 0 %]
+  <form method="post" action="long_list.cgi">
+    <input type="hidden" name="buglist" value="[% buglist %]">
+    <input type="submit" value="Long Format">
+
+    <a href="query.cgi">Query Page</a> &nbsp;&nbsp;
+    <a href="enter_bug.cgi">Enter New Bug</a> &nbsp;&nbsp;
+    <a href="colchange.cgi?[% urlquerypart FILTER html %]">Change Columns</a> &nbsp;&nbsp;
+
+    [% IF bugs.size > 1 && caneditbugs && !dotweak %]
+      <a href="buglist.cgi?[% urlquerypart FILTER html %]
+        [%- "&order=$qorder" FILTER html IF order %]&amp;tweak=1">Change Several 
+        Bugs at Once</a>
+      &nbsp;&nbsp;
+    [% END %]
+
+    [% IF bugowners %]
+      <a href="mailto:[% bugowners FILTER html %]">Send Mail to Bug Owners</a> &nbsp;&nbsp;
+    [% END %]
+
+    <a href="query.cgi?[% urlquerypart FILTER html %]">Edit this Query</a> &nbsp;&nbsp;
+
+  </form>
+
+[% END %]
+
+
+[%############################################################################%]
+[%# Page Footer                                                              #%]
+[%############################################################################%]
+
+[% PROCESS global/footer.html.tmpl %]
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/quips.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/quips.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/quips.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,72 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # added_quip: string. Defined if the CGI added a quip data before 
+  #                displaying anything; if defined, its value is that quip.
+  # show_quips: boolean. True if we are showing the entire quip list.
+  # quips: list of strings. Defined iff show_quips is true. List of all quips.
+  #%]
+
+[% PROCESS global/header.html.tmpl
+           title = "Bugzilla Quip System"
+           h1 = "Add your own clever headline"
+ %]
+
+[% IF added_quip %]
+  <p>
+    <font color="red">
+      Your quip '<tt>[% added_quip FILTER html %]</tt>' has been added.
+    </font>
+  </p>
+[% END %]
+
+<p>
+  Bugzilla will pick a random quip for the headline on each bug list, and 
+  you can extend the quip list. Type in something clever or funny or boring 
+  (but not obscene or offensive, please) and bonk on the button.
+</p>
+
+<form method="post" action="quips.cgi">
+  <input type="hidden" name="action" value="add">
+  <input size="80" name="quip">
+  <p>
+    <input type="submit" value="Add This Quip">
+  </p>
+</form>
+
+[% IF show_quips %]
+  <h2>
+    Existing quips:
+  </h2>
+  <ul>
+    [% FOREACH quip = quips %]
+      <li>[% quip FILTER html %]</li>
+    [% END %]
+  </ul>
+[% ELSE %]
+  <p>
+    Those who like their wisdom in large doses can 
+    <a href="quips.cgi?action=show">view the whole quip list</a>.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/server-push.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/server-push.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/server-push.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,41 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%# INTERFACE:
+  # debug: boolean. True if we want the query displayed while we wait.
+  # query: string. The SQL query which makes the buglist.
+  #%]
+  
+<html>
+  <head>
+    <title>Bugzilla is pondering your query</title>
+  </head>
+  <body>
+    <h1 style="margin-top: 20%; text-align: center;">Please stand by ...</h1>
+
+    [% IF debug %]
+      <p>
+        <code>[% query FILTER html %]</code>
+      </p>
+    [% END %]
+
+  </body>
+</html>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/list/table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,150 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Myk Melez <myk at mozilla.org>
+  #%]
+
+[%############################################################################%]
+[%# Initialization                                                           #%]
+[%############################################################################%]
+
+[%# Columns whose titles or values should be abbreviated to make the list
+  # more compact.  For columns whose titles should be abbreviated,
+  # the shortened title is included.  For columns whose values should be
+  # abbreviated, a maximum length is provided along with the ellipsis that
+  # should be added to an abbreviated value, if any.
+  # wrap is set if a column's contents should be allowed to be word-wrapped
+  # by the browser.
+  #%]
+[% abbrev = 
+  {
+    "severity"          => { maxlength => 3 , title => "Sev" } , 
+    "priority"          => { maxlength => 3 , title => "Pri" } , 
+    "platform"          => { maxlength => 3 , title => "Plt" } , 
+    "status"            => { maxlength => 4 } , 
+    "reporter"          => { maxlength => 30 , ellipsis => "..." } , 
+    "owner"             => { maxlength => 30 , ellipsis => "..." } , 
+    "qa_contact"        => { maxlength => 30 , ellipsis => "..." , title => "QAContact" } , 
+    "resolution"        => { maxlength => 4 } , 
+    "summary"           => { maxlength => 60 , ellipsis => "..." , wrap => 1 } ,
+    "summaryfull"       => { wrap => 1 } ,
+    "status_whiteboard" => { title => "StatusSummary" , wrap => 1 } , 
+    "component"         => { maxlength => 8 , title => "Comp" } , 
+    "product"           => { maxlength => 8 } , 
+    "version"           => { maxlength => 5 , title => "Vers" } , 
+    "os"                => { maxlength => 4 } , 
+    "target_milestone"  => { title => "TargetM" } , 
+  }
+%]
+
+[% qorder = order FILTER url_quote IF order %]
+
+[%############################################################################%]
+[%# Table Header                                                             #%]
+[%############################################################################%]
+
+[% tableheader = BLOCK %]
+  <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
+    <colgroup>
+      <col class="bz_id_column">
+      [% FOREACH id = displaycolumns %]
+      <col class="bz_[% id %]_column">
+      [% END %]
+    </colgroup>
+
+    <tr align="left">
+      <th colspan="[% splitheader ? 2 : 1 %]">
+        <a href="buglist.cgi?[% urlquerypart FILTER html %]&amp;order=bugs.bug_id">ID</a>
+      </th>
+
+      [% IF splitheader %]
+
+        [% FOREACH id = displaycolumns %]
+          [% NEXT UNLESS loop.count() % 2 == 0 %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+        </tr><tr align="left"><th>&nbsp;</th>
+
+        [% FOREACH id = displaycolumns %]
+          [% NEXT IF loop.count() % 2 == 0 %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+      [% ELSE %]
+
+        [% FOREACH id = displaycolumns %]
+          [% column = columns.$id %]
+          [% PROCESS columnheader %]
+        [% END %]
+
+      [% END %]
+
+    </tr>
+[% END %]
+
+[% BLOCK columnheader %]
+  <th colspan="[% splitheader ? 2 : 1 %]">
+    <a href="buglist.cgi?[% urlquerypart FILTER html %]&amp;order=
+      [% column.name FILTER url_quote FILTER html %]
+      [% ",$qorder" FILTER html IF order %]">
+        [%- abbrev.$id.title || column.title -%]</a>
+  </th>
+[% END %]
+
+
+[%############################################################################%]
+[%# Bug Table                                                                #%]
+[%############################################################################%]
+
+[% FOREACH bug = bugs %]
+  [% FLUSH IF loop.count() % 10 == 1 %]
+
+  [%# At the beginning of every hundred bugs in the list, start a new table. %]
+  [% IF loop.count() % 100 == 1 %]
+    [% tableheader %]
+  [% END %]
+
+  <tr class="bz_[% bug.severity FILTER html %] bz_[% bug.priority FILTER html %] [%+ "bz_secure" IF (bug.groupset && !usebuggroups) %]">
+
+    <td>
+      [% IF dotweak %]<input type="checkbox" name="id_[% bug.id %]">[% END %]
+      <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
+    </td>
+
+    [% FOREACH column = displaycolumns %]
+    <td>
+      [% '<nobr>' IF NOT abbrev.$column.wrap %]
+      [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%]
+      [%- '</nobr>' IF NOT abbrev.$column.wrap %]
+    </td>
+    [% END %]
+
+  </tr>
+
+  [%# At the end of every hundred bugs in the list, or at the end of the list,
+    # end the current table. 
+    #%]
+  [% IF loop.last() || loop.count() % 100 == 0 %]
+    </table>
+  [% END %]
+
+[% END %]
+

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/components.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/components.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/components.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,97 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Bradley Baetz <bbaetz at student.usyd.edu.au>
+  #%]
+
+[%# INTERFACE:
+  # product: string. The product this is the components list for.
+  # components: List of hashes. May be empty. Each hash has four members:
+  #   name: string. Name of the component.
+  #   description: string. Description of the component. May contain HTML.
+  #   initialowner: string. Component's initial owner.
+  #   initialqacontact: string. Component's initial QA contact.
+  #%]
+  
+[% filtered_product = product FILTER html %]
+[% PROCESS global/header.html.tmpl 
+  title = "Components for $filtered_product"
+  h2 = filtered_product %]
+
+[% IF Param("useqacontact") %]
+  [% numcols = 3 %]
+[% ELSE %]
+  [% numcols = 2 %]
+[% END %]
+
+[% IF components.size == 0 %]
+  This product has no components.
+[% ELSE %]
+  <table>
+    <tr>
+      <th align="left">Component</th>
+      <th align="left">Default Owner</th>
+      [% IF Param("useqacontact") %]
+        <th align="left">Default QA Contact</th>
+      [% END %]
+    </tr>
+
+    [% FOREACH comp = components %]
+      [% INCLUDE describe_comp %]
+    [% END %]
+    <tr>
+      <td colspan="[% numcols %]">
+        <hr>
+      </td>
+    </tr>
+  </table>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]
+
+[%############################################################################%]
+[%# BLOCK for components                                                      %]
+[%############################################################################%]
+
+[% BLOCK describe_comp %]
+  <tr>
+    <td colspan="[% numcols %]">
+      <hr>
+    </td>
+  </tr>
+  <tr>
+    <td rowspan="2">
+      <a name="[% comp.name FILTER html %]">[% comp.name FILTER html %]</a>
+    </td>
+    <td>
+      <a href="mailto:[% comp.initialowner FILTER html %][% Param('emailsuffix') %]">
+      [% comp.initialowner FILTER html %]</a>
+    </td>
+    [% IF Param("useqacontact") %]
+      <td>
+        <a href="mailto:[% comp.initialqacontact FILTER html %][% Param('emailsuffix') %]">
+        [% comp.initialqacontact FILTER html %]</a>
+      </td>
+    [% END %]
+  </tr>
+  <tr>
+    <td colspan="[% numcols - 1 %]">
+      [% comp.description FILTER html %]
+    </td>
+  </tr>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-simple.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-simple.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-simple.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,42 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # You need to fulfill the interface to duplicates-table.html.tmpl.
+  #%]
+  
+<html>
+
+  [% IF product %]
+    [% title = "Most Frequently Reported Bugs for $product" %]
+  [% ELSE %]   
+    [% title = "Most Frequently Reported Bugs" %]
+  [% END%]
+
+  <head>
+    <title>[% title FILTER html %]</title>
+  </head>
+
+  <body>
+    [% PROCESS "reports/duplicates-table.html.tmpl" %]
+  </body>
+
+</html>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-table.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-table.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates-table.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,142 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # bugs: list of hashes. May be empty. Each hash has nine members:
+  #   id: integer. The bug number
+  #   count: integer. The number of dupes
+  #   delta: integer. The change in count in the last $changedsince days
+  #   component: string. The bug's component
+  #   bug_severity: string. The bug's severity.
+  #   op_sys: string. The bug's reported OS.
+  #   target_milestone: string. The bug's TM.
+  #   short_desc: string. The bug's summary.
+  #   bug_status: string. The bug's status.
+  #   
+  # bug_ids: list of integers. May be empty. The IDs of the bugs in $bugs.
+  #  
+  # sortby: string. the column on which we are sorting the buglist.
+  # reverse: boolean. True if we are reversing the current sort.
+  # maxrows: integer. Max number of rows to display.
+  # changedsince: integer. The number of days ago for the changedsince column.
+  # openonly: boolean. True if we are only showing open bugs.    
+  # product: string. Restrict to this product only.
+  #%]
+  
+[%# *** Column Headers *** %]
+
+<table border>
+  <tr bgcolor="#CCCCCC">
+    [% FOREACH column = [ { name => "id", description => "Bug #" },
+                          { name => "count", description => "Dupe<br>Count" },
+                          { name => "delta", 
+                      description => "Change in last<br>$changedsince day(s)" },
+                          { name => "component", description => "Component" },
+                          { name => "bug_severity", description => "Severity" },
+                          { name => "op_sys", description => "Op Sys" }, 
+                          { name => "target_milestone", 
+                            description => "Target<br>Milestone" },
+                          { name => "short_desc", description => "Summary" } ] 
+     %]
+                          
+      [%# Small hack to keep delta column out if we don't need it %]
+      [% NEXT IF column.name == "delta" AND NOT dobefore %]                     
+
+      <td>
+        <center>
+          <b>
+            [% bug_ids_string = bug_ids.join(',') %]
+            <a href="duplicates.cgi?sortby=[% column.name %]
+              [% IF sortby == column.name %]
+                [% "&reverse=1" IF NOT reverse %]
+              [% ELSE %]
+                [%-# Some columns start off reversed %]
+                [% "&reverse=1" IF column.name.match('delta|count') %]
+              [% END %]
+              [% "&maxrows=$maxrows" IF maxrows %]
+              [% "&changedsince=$changedsince" IF changedsince %]
+              [% "&openonly=1" IF openonly %]
+              [% "&product=$product" FILTER html IF product %]
+              [% "&format=$format" FILTER html IF format %]
+              [% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
+              [% column.description %]</a>
+          </b>
+        </center>
+      </td>
+    [% END %]
+  </tr>
+  
+[% IF NOT sortby %]
+  [% sortby = "count"; reverse = "1" %]
+[% END %]
+
+[% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %]
+  [%# Numeric sort %]
+  [% sortedbugs = bugs.nsort(sortby) %]
+[% ELSE %]
+  [% sortedbugs = bugs.sort(sortby) %]
+[% END %]
+
+[% IF reverse %]
+  [% bugs = sortedbugs.reverse %]
+[% ELSE %]
+  [% bugs = sortedbugs %]
+[% END %]
+
+[%# *** Buglist *** %]
+
+[%# We need to keep track of the bug IDs we are actually displaying, because
+  # if the user decides to sort the visible list, we need to know what that
+  # list actually is. %]
+[% vis_bug_ids = [] %]
+
+[% FOREACH bug = bugs %]
+  [% LAST IF loop.index() >= maxrows %]
+  [% vis_bug_ids.push(bug.id) %]      
+
+  <tr>
+    <td>
+      <center>
+        [% "<strike>" IF bug.resolution != "" %]
+        <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
+        [% "</strike>" IF bug.resolution != "" %]
+      </center>
+    </td>
+
+    <td>
+      <center>
+        [% bug.count %]
+      </center>
+    </td>
+
+    [% IF dobefore %]
+      <td><center>[% bug.delta %]</center></td>
+    [% END %]
+
+    <td>[% bug.component FILTER html %]</td>
+    <td><center>[% bug.bug_severity FILTER html %]</center></td>
+    <td><center>[% bug.op_sys FILTER html %]</center></td>
+    <td><center>[% bug.target_milestone FILTER html %]</center></td>
+    <td>[% bug.short_desc FILTER html %]</td>
+  </tr>
+[% END %]
+
+</table>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/duplicates.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,177 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # products: list of strings. The products this user can see.
+  #  
+  # sortby: string. the column on which we are sorting the buglist.
+  # reverse: boolean. True if we are reversing the current sort.
+  # maxrows: integer. Max number of rows to display.
+  # changedsince: integer. The number of days ago for the changedsince column.
+  # openonly: boolean. True if we are only showing open bugs.    
+  # product: string. Restrict to this product only.
+  #
+  # Additionally, you need to fulfill the interface to
+  # duplicates-table.html.tmpl.
+  #%]
+ 
+[% IF product %]
+  [% title = BLOCK %]
+    Most Frequently Reported Bugs for [% product FILTER html %]
+  [% END %]
+[% ELSE %]   
+  [% title = "Most Frequently Reported Bugs" %]
+[% END%]
+
+[% PROCESS global/header.html.tmpl %]
+
+<p>
+  <a href="#explanation">What is this data?</a>
+  <br>
+  <a href="#params">Change parameters</a>
+</p>
+
+[% PROCESS "reports/duplicates-table.html.tmpl" %]
+
+<br>
+<br>
+
+[%# *** Parameters *** %]
+
+[% bug_ids_string = vis_bug_ids.join(',') %]
+
+<h3><a name="params">Change Parameters</a></h3>
+
+<form method="get" action="duplicates.cgi">
+  <input type="hidden" name="sortby" value="[% sortby FILTER html %]">
+  <input type="hidden" name="reverse" value="[% reverse %]">
+  <input type="hidden" name="bug_id" value="[% bug_ids_string %]">
+  <table>
+    <tr>
+      <td>When sorting or restricting,
+          work with:</td>
+      <td>
+        <input type="radio" name="sortvisible" id="entirelist" value="0" 
+          [% "checked" IF NOT sortvisible %]>         
+        <label for="entirelist">
+          entire list
+        </label>
+        <br>        
+        <input type="radio" name="sortvisible" id="visiblelist" value="1" 
+          [% "checked" IF sortvisible %]> 
+        <label for="visiblelist">
+          currently visible list
+        </label>
+      </td>
+      <td rowspan="4" valign="top">Restrict to products:</td>
+      <td rowspan="4" valign="top">
+        <select name="product" size="5" multiple="multiple">
+          [% FOREACH p = products %]
+            <option name="[% p FILTER html %]"
+            [% " selected" IF product == p %]>[% p FILTER html %]</option>
+          [% END %]
+        </select>
+      </td>
+     </tr>
+
+    <tr>
+      <td>Max rows:</td>
+      <td>
+        <input size="4" name="maxrows" value="[% maxrows %]">
+      </td>
+    </tr>
+
+    <tr>
+      <td>Change column is change in the last:</td>
+      <td>
+        <input size="4" name="changedsince" value="[% changedsince %]"> days
+      </td>
+    </tr>
+
+    <tr>
+      <td>
+        <label for="openonly">
+          Open bugs only:
+        </label>
+      </td>
+      <td>
+        <input type="checkbox" name="openonly" id="openonly" value="1" 
+          [% "checked" IF openonly %]>      
+      </td>
+    </tr>
+
+  </table>
+
+  <input type="submit" value="Change"> 
+</form>
+
+<form method="post" action="buglist.cgi">
+  <input type="hidden" name="bug_id" value="[% bug_ids_string %]">
+  <input type="hidden" name="order" value="Reuse same sort as last time">
+  Or just give this to me as a <input type="submit" value="bug list">. 
+  (Note: the order may not be the same.)
+</form>
+
+<hr>
+
+<b>
+  <a name="explanation">What are "Most Frequently Reported Bugs"?</a>
+</b>
+
+<blockquote>
+  The Most Frequent Bugs page lists the known open bugs which 
+  are reported most frequently in recent builds. It is 
+  automatically generated from the Bugzilla database every 24 hours, by 
+  counting the number of direct and indirect duplicates of bugs.
+  This information is provided in order to assist in minimizing
+  the amount of duplicate bugs entered into Bugzilla which in turn cuts down
+  on development time.
+</blockquote>
+
+<b>How do I use this list?</b>
+
+<ul>
+  <li>Review the most frequent bugs list.</li>
+  <li>If problem is listed:</li>
+
+  <ul>
+    <li>Click on Bug # link to confirm that you have found the same bug and 
+      comment if you have additional information. Or move on with your testing
+      of the product.
+    </li>
+  </ul>
+
+  <li>If problem not listed:</li>
+
+  <ul>
+    <li>Go to the <a href="query.cgi">Bugzilla Search</a>
+      page to try and locate a similar bug that has already been written.</li>
+    <li>If you find your bug in Bugzilla, feel free to comment with any new or
+      additional data you may have.</li>
+    <li>If you cannot find your problem already documented in Bugzilla, go to
+      the
+      <a href="http://www.mozilla.org/quality/help/bug-form.html">Bugzilla
+        Helper</a>
+      and post a new bug.</li>
+  </ul>
+</ul>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/keywords.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/keywords.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/reports/keywords.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,75 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # keywords: array of hashes. May be empty. Each has has three members:
+  #   name: the name of the keyword
+  #   description: keyword description. May be HTML.
+  #   bugcount: number of bugs with that keyword
+  # caneditkeywords: boolean. True if this user can edit keywords
+ %]
+ 
+[% PROCESS global/header.html.tmpl 
+  title = "Bugzilla Keyword Descriptions"
+%]
+
+[% FOREACH keyword = keywords %]
+  [% IF loop.index % 50 == 0 %]
+    [% IF loop.index != 0 %]
+       </table>
+    [% END %]
+    
+    <table border="1" cellpadding="4" cellspacing="0">
+      <tr bgcolor="#6666FF">
+        <th align="left">Name</th>
+        <th align="left">Description</th>
+        <th align="left">Bugs</th>
+      </tr>
+  [% END %]  
+  
+  <tr>
+    <th>
+      <a name="[% keyword.name FILTER html %]">
+        [% keyword.name FILTER html %]</a>
+    </th>
+    <td>[% keyword.description FILTER html %]</td>
+    <td align="right">
+      [% IF keyword.bugcount > 0 %]
+        <a href="buglist.cgi?keywords=[% keyword.name FILTER url_quote %]">
+          [% keyword.bugcount %]</a>
+      [% ELSE %]
+        none
+      [% END %]
+    </td>
+  </tr>
+[% END %]
+
+[% IF keywords.size > 0 %]
+  </table>
+[% END %]
+
+[% IF caneditkeywords %]
+  <p>
+    <a href="editkeywords.cgi">Edit keywords</a>.
+  </p>
+[% END %]
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/boolean-charts.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/boolean-charts.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/boolean-charts.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,118 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+  
+[% types = [
+  { name => "noop", description => "---" },
+  { name => "equals", description => "is equal to" },
+  { name => "notequals", description => "is not equal to" },
+  { name => "substring", description => "contains the string" },
+  { name => "casesubstring", description => "contains the string (exact case)" },
+  { name => "notsubstring", description => "does not contain the string" },
+  { name => "allwordssubstr", description => "contains all of the strings" },
+  { name => "anywordssubstr", description => "contains any of the strings" },
+  { name => "regexp", description => "contains regexp" },
+  { name => "notregexp", description => "does not contain regexp" },
+  { name => "lessthan", description => "is less than" },
+  { name => "greaterthan", description => "is greater than" },
+  { name => "anywords", description => "contains any of the words" },
+  { name => "allwords", description => "contains all of the words" },
+  { name => "nowords", description => "contains none of the words" },
+  { name => "changedbefore", description => "changed before" },
+  { name => "changedafter", description => "changed after" },
+  { name => "changedfrom", description => "changed from" },
+  { name => "changedto", description => "changed to" },
+  { name => "changedby", description => "changed by" } ] %]
+
+  <p>
+    <strong>
+      <a name="chart" href="queryhelp.cgi#advancedquerying">
+      Advanced Querying Using Boolean Charts</a>:
+    </strong>
+  </p>
+
+[%# Whoever wrote the original version of boolean charts had a seriously twisted mind %]
+
+[% jsmagic = "onclick=\"document.forms[0].action='query.cgi#chart'; document.forms[0].method='POST'; return 1;\"" %]
+
+[% FOREACH chart = default.charts %]
+  [% chartnum = loop.count - 1 %]
+  <table>
+  [% FOREACH row = chart %]
+    [% rownum = loop.count - 1 %]
+    <tr>
+    [% FOREACH col = row %]
+      [% colnum = loop.count - 1 %]
+      <td>
+        <select name="[% "field${chartnum}-${rownum}-${colnum}" %]">
+          [% FOREACH field = fields %]
+            <option value="[% field.name %]"
+              [%- " selected" IF field.name == col.field %]>[% field.description %]</option>
+          [% END %]
+        </select>
+
+        <select name="[% "type${chartnum}-${rownum}-${colnum}" %]">
+          [% FOREACH type = types %]
+            <option value="[% type.name %]"
+              [%- " selected" IF type.name == col.type %]>[% type.description %]</option>
+          [% END %]
+        </select>
+
+        <input name="[% "value${chartnum}-${rownum}-${colnum}" %]" 
+               value="[% col.value FILTER html %]"> 
+      </td>
+      
+      [% IF NOT col == row.last %]
+        <td align="center"> 
+          Or 
+        </td>    
+      [% ELSE %]
+        <td>
+          [% newor = colnum + 1 %]
+          <input type="submit" value="Or" 
+                 name="cmd-add[% "${chartnum}-${rownum}-${newor}" %]" [% $jsmagic %]>
+        </td>
+      [% END %]
+      
+    [% END %]
+    </tr>
+    
+    [% IF NOT row == chart.last %]
+    <tr>
+      <td>And</td>
+    </tr>    
+    [% ELSE %]
+    <tr>
+      <td>
+        [% newand = rownum + 1; newchart = chartnum + 1 %]
+        <input type="submit" value="And" 
+               name="cmd-add[% "${chartnum}-${newand}-0" %]"[% $jsmagic %]> 
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+        <input type="submit" value="Add another boolean chart" 
+               name="cmd-add[% newchart %]-0-0" [% $jsmagic %]>
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      </td>
+    </tr>   
+    [% END %]
+    
+  [% END %]
+  </table>
+  <hr>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/form.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/form.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/form.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,672 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Chris Lahey <clahey at ximian.com> [javascript fixes]
+  #                 Christian Reis <kiko at async.com.br> [javascript rewrite]
+  #                 Gervase Markham <gerv at gerv.net>
+  #%]
+  
+  [%# Note: use Template comments and not JS ones here, to avoid bloating
+    what we actually send to the browser %]
+
+<script language="JavaScript" type="text/javascript"> <!--
+
+var first_load = true;         [%# is this the first time we load the page? %]
+var last_sel = new Array();    [%# caches last selection %]
+
+var cpts = new Array();
+var vers = new Array();
+[% IF Param('usetargetmilestone') %]
+var tms = new Array();
+[% END %]
+
+[%# Create three arrays of components, versions and target milestones, indexed 
+  # numerically according to the product they refer to. #%]
+
+[% n = 0 %]
+[% FOREACH p = product %]
+  cpts[[% n %]] = [ 
+    [%- FOREACH item = componentsbyproduct.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  vers[[% n %]] = [ 
+    [%- FOREACH item = versionsbyproduct.$p -%]'[%  item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  [% IF Param('usetargetmilestone') %]
+  tms[[% n %]]  = [ 
+     [%- FOREACH item = milestonesbyproduct.$p %]'[% item FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%] ];
+  [% END %]
+  [% n = n+1 %]
+[% END %]
+
+[%# updateSelect(array, sel, target, merging)
+  #
+  # Adds to the target select object all elements in array that
+  # correspond to the elements selected in source.
+  # - array should be a array of arrays, indexed by number. the
+  #   array should contain the elements that correspond to that
+  #   product. 
+  # - sel is a list of selected items, either whole or a diff
+  #   depending on merging.
+  # - target should be the target select object.
+  # - merging (boolean) determines if we are mergine in a diff or
+  #   substituting the whole selection. a diff is used to optimize adding
+  #   selections.
+  #
+  # Example (compsel is a select form control)
+  #
+  #     var components = Array();
+  #     components[1] = [ 'ComponentA', 'ComponentB' ];
+  #     components[2] = [ 'ComponentC', 'ComponentD' ];
+  #     source = [ 2 ];
+  #     updateSelect(components, source, compsel, 0, 0);
+  #
+  # would clear compsel and add 'ComponentC' and 'ComponentD' to it.
+  #
+  %]
+
+function updateSelect(array, sel, target, merging) {
+        
+    var i, item;
+
+    [%# If we have no versions/components/milestones %]
+    if (array.length < 1) {
+        target.options.length = 0;
+        return false;
+    }
+
+    if (merging) {
+        [%# array merging/sorting in the case of multiple selections %]
+        [%# merge in the current options with the first selection %]
+        item = merge_arrays(array[sel[0]], target.options, 1);
+
+        [%# merge the rest of the selection with the results %]
+        for (i = 1 ; i < sel.length ; i++) {
+            item = merge_arrays(array[sel[i]], item, 0);
+        }
+    } else if ( sel.length > 1 ) {
+        [%# here we micro-optimize for two arrays to avoid merging with a
+            null array %]
+        item = merge_arrays(array[sel[0]],array[sel[1]], 0);
+
+        [%# merge the arrays. not very good for multiple selections. %]
+        for (i = 2; i < sel.length; i++) {
+            item = merge_arrays(item, array[sel[i]], 0);
+        }
+    } else { [%# single item in selection, just get me the list %]
+        item = array[sel[0]];
+    }
+
+    [%# clear select %]
+    target.options.length = 0;
+
+    [%# load elements of list into select %]
+    for (i = 0; i < item.length; i++) {
+        target.options[i] = new Option(item[i], item[i]);
+    }
+    return true;
+}
+
+[%# Returns elements in a that are not in b. 
+  # NOT A REAL DIFF: does not check the reverse.
+  #    - a,b: arrays of values to be compare. %]
+function fake_diff_array(a, b) {
+    var newsel = new Array();
+    var found = false;
+
+    [%# do a boring array diff to see who's new %]
+    for (var ia in a) {
+        for (var ib in b) {
+            if (a[ia] == b[ib]) {
+                found = true;
+            }
+        }
+        if (!found) {
+            newsel[newsel.length] = a[ia];
+        }
+        found = false;
+    }
+    return newsel;
+}
+
+[%# takes two arrays and sorts them by string, returning a new, sorted
+  # array. the merge removes dupes, too.
+  #    - a, b: arrays to be merge.
+  #    - b_is_select: if true, then b is actually an optionitem and as
+  #      such we need to use item.value on it. %]
+function merge_arrays(a, b, b_is_select) {
+    var pos_a = 0;
+    var pos_b = 0;
+    var ret = new Array();
+    var bitem, aitem;
+
+    [%# iterate through both arrays and add the larger item to the return
+       list. remove dupes, too. Use toLowerCase to provide
+       case-insensitivity. %]
+    while ((pos_a < a.length) && (pos_b < b.length)) {
+        if (b_is_select) {
+            bitem = b[pos_b].value;
+        } else {
+            bitem = b[pos_b];
+        }
+        aitem = a[pos_a];
+
+        [%# smaller item in list a %]
+        if (aitem.toLowerCase() < bitem.toLowerCase()) {
+            ret[ret.length] = aitem;
+            pos_a++;
+        } else {
+            [%# smaller item in list b %]
+            if (aitem.toLowerCase() > bitem.toLowerCase()) {
+                ret[ret.length] = bitem;
+                pos_b++;
+            } else {
+                [%# list contents are equal, inc both counters. %]
+                ret[ret.length] = aitem;
+                pos_a++;
+                pos_b++;
+            }
+        }
+    }
+
+    [%# catch leftovers here. these sections are ugly code-copying. %]
+    if (pos_a < a.length) {
+        for (; pos_a < a.length ; pos_a++) {
+            ret[ret.length] = a[pos_a];
+        }
+    }
+
+    if (pos_b < b.length) {
+        for (; pos_b < b.length; pos_b++) {
+            if (b_is_select) {
+                bitem = b[pos_b].value;
+            } else {
+                bitem = b[pos_b];
+            }
+            ret[ret.length] = bitem;
+        }
+    }
+    return ret;
+}
+
+[%# Returns an array of indexes or values from a select form control.
+  #    - control: select control from which to find selections
+  #    - findall: boolean, store all options when true or just the selected 
+  #      indexes
+  #    - want_values: boolean; we store values when true and indexes when
+  #      false %]
+function get_selection(control, findall, want_values) {
+    var ret = new Array();
+
+    if ((!findall) && (control.selectedIndex == -1)) {
+        return ret;
+    }
+
+    for (var i=0; i<control.length; i++) {
+        if (findall || control.options[i].selected) {
+            ret[ret.length] = want_values ? control.options[i].value : i;
+        }
+    }
+    return ret;
+}
+
+[%# Selects items in control that have index defined in sel
+  #    - control: SELECT control to be restored
+  #    - selnames: array of indexes in select form control %]
+function restoreSelection(control, selnames) {
+    [%# right. this sucks. but I see no way to avoid going through the
+      # list and comparing to the contents of the control. %]
+    for (var j=0; j < selnames.length; j++) {
+        for (var i=0; i < control.options.length; i++) {
+            if (control.options[i].value == selnames[j]) {
+                control.options[i].selected = true;
+            }
+        }
+    }
+}
+
+[%# selectProduct reads the selection from f.product and updates
+  # f.version, component and target_milestone accordingly.
+  #     - f: a form containing product, component, varsion and
+  #       target_milestone select boxes.
+  # globals (3vil!):
+  #     - cpts, vers, tms: array of arrays, indexed by product name. the
+  #       subarrays contain a list of names to be fed to the respective
+  #       selectboxes. For bugzilla, these are generated with perl code
+  #       at page start.
+  #     - first_load: boolean, specifying if it is the first time we load
+  #       the query page.
+  #     - last_sel: saves our last selection list so we know what has
+  #       changed, and optimize for additions. %]
+function selectProduct(f) {
+    [%# this is to avoid handling events that occur before the form
+        itself is ready, which could happen in buggy browsers. %]
+    if ((!f) || (!f.product)) {
+        return;
+    }
+
+    [%# if this is the first load and nothing is selected, no need to
+        merge and sort all components; perl gives it to us sorted. %]
+    if ((first_load) && (f.product.selectedIndex == -1)) {
+        first_load = false;
+        return;
+    }
+    
+    [%# turn first_load off. this is tricky, since it seems to be
+        redundant with the above clause. It's not: if when we first load
+        the page there is _one_ element selected, it won't fall into that
+        clause, and first_load will remain 1. Then, if we unselect that
+        item, selectProduct will be called but the clause will be valid
+        (since selectedIndex == -1), and we will return - incorrectly -
+        without merge/sorting. %]
+    first_load = false;
+
+    [%# - sel keeps the array of products we are selected. 
+        - merging says if it is a full list or just a list of products that
+          were added to the current selection. %]
+    var merging = false;
+    var sel = Array();
+
+    [%# if nothing selected, pick all %]
+    var findall = f.product.selectedIndex == -1;
+    sel = get_selection(f.product, findall, false);
+    if (!findall) {
+        [%# save sel for the next invocation of selectProduct() %]
+        var tmp = sel;
+    
+        [%# this is an optimization: if we have just added products to an
+            existing selection, no need to clear the form controls and add 
+            everybody again; just merge the new ones with the existing 
+            options. %]
+        if ((last_sel.length > 0) && (last_sel.length < sel.length)) {
+            sel = fake_diff_array(sel, last_sel);
+            merging = true;
+        }
+        last_sel = tmp;
+    }
+    [%# save original options selected %]
+    var saved_cpts = get_selection(f.component, false, true);
+    var saved_vers = get_selection(f.version, false, true);
+    [% IF Param('usetargetmilestone') %]
+    var saved_tms = get_selection(f.target_milestone, false, true);
+    [% END %]
+
+    [%# do the actual fill/update, reselect originally selected options %]
+    updateSelect(cpts, sel, f.component, merging);
+    restoreSelection(f.component, saved_cpts);
+    updateSelect(vers, sel, f.version, merging);
+    restoreSelection(f.version, saved_vers);
+    [% IF Param('usetargetmilestone') %]
+    updateSelect(tms, sel, f.target_milestone, merging);
+    restoreSelection(f.target_milestone, saved_tms);
+    [% END %]
+}
+
+// -->
+</script>
+
+[% query_variants = [ 
+  { value => "allwordssubstr", description => "contains all of the words/strings" },
+  { value => "anywordssubstr", description => "contains any of the words/strings" },
+  { value => "substring", description => "contains the string" },
+  { value => "casesubstring", description => "contains the string (exact case)" },
+  { value => "allwords", description => "contains all of the words" },
+  { value => "anywords", description => "contains any of the words" },
+  { value => "regexp", description => "matches the regexp" },
+  { value => "notregexp", description => "doesn't match the regexp" } ] %]
+     
+[%# *** Summary *** %]
+
+<table>
+  <tr>
+    <th align="right">Summary:</th>
+    <td>
+      <select name="short_desc_type">
+      [% FOREACH qv = query_variants %]
+        <option value="[% qv.value %]"
+          [% " selected" IF default.short_desc_type.0 == qv.value %]>[% qv.description %]</option>
+      [% END %]              
+      </select>
+    </td>
+    <td>
+      <input name="short_desc" size="40" value="[% default.short_desc.0 FILTER html %]">
+    </td>
+    <td>
+      <input type="submit" value="[% button_name %]">
+    </td>
+  </tr>  
+
+[%# *** Product Component Version Target *** %]
+
+  <tr>
+    <td colspan="4">
+      <table>
+        <tr valign="bottom">
+          <th align="left">Product:</th>
+          <th align="left"><a href="describecomponents.cgi">Component</a>:</th>
+          <th align="left">Version:</th>
+
+        [% IF (Param("usetargetmilestone")) %]
+          <th align="left">Target:</th>
+        [% END %]
+        </tr>
+
+        <tr valign="top">
+
+          [%# Can't use the select block here because of onChange and the fact that
+              'component' is a toolkit reserved word - we use 'component_' instead. %]
+          <td align="left">
+            <select name="product" multiple="multiple" size="5" onchange="selectProduct(this.form);">
+            [% FOREACH p = product %]
+              <option value="[% p FILTER html %]"
+                [% " selected" IF lsearch(default.product, p) != -1 %]>
+                [% p FILTER html %]</option>
+            [% END %]
+            </select>
+          </td>
+
+          <td align="left">
+            <select name="component" multiple="multiple" size="5">
+            [% FOREACH c = component_ %]
+              <option value="[% c FILTER html %]"
+                [% " selected" IF lsearch(default.component, c) != -1 %]>
+                [% c FILTER html %]</option>
+            [% END %]
+            </select>
+          </td>
+
+          [% PROCESS select sel = { name => 'version', size => 5 } %]
+
+        [% IF Param('usetargetmilestone') && target_milestone.size > 0 %]
+          [% PROCESS select sel = { name => 'target_milestone', size => 5 } %]
+        [% END %]
+        </tr>
+      </table>
+    </td>
+  </tr>
+  
+[%# *** Comment URL Whiteboard Keywords *** %]
+
+  [% FOREACH field = [ 
+    { name => "long_desc", description => "A&nbsp;comment" },
+    { name => "bug_file_loc", description => "The&nbsp;URL" },
+    { name => "status_whiteboard", description => "Whiteboard" } ] %]
+
+    [% UNLESS field.name == 'status_whiteboard' AND NOT Param('usestatuswhiteboard') %]
+    <tr>
+      <th align="right">[% field.description %]:</th>
+      <td>
+        <select name="[% field.name %]_type">
+        [% FOREACH qv = query_variants %]
+          [% type = "${field.name}_type" %]                   
+          <option value="[% qv.value %]"
+            [% " selected" IF default.$type.0 == qv.value %]>[% qv.description %]</option>
+        [% END %]              
+        </select>
+      </td>
+      <td><input name="[% field.name %]" size="40" value="
+        [% default.${field.name}.0 FILTER html %]">
+      </td>
+      <td></td>
+    </tr>  
+    [% END %]
+  [% END %]
+
+  [% IF have_keywords %]
+    <tr>
+      <th align="right"><a href="describekeywords.cgi">Keywords</a>:</th>
+      <td>
+        <select name="keywords_type">
+        [% FOREACH qv = [ 
+          { name => "allwords", description => "contains all of the keywords" },
+          { name => "anywords", description => "contains any of the keywords" },
+          { name => "nowords",  description => "contains none of the keywords" } ] %]
+
+          <option value="[% qv.name %]"
+            [% " selected" IF default.keywords_type.0 == qv.name %]>
+            [% qv.description %]</option>
+        [% END %]
+        </select>
+      </td>
+      <td>
+        <input name="keywords" size="40" value="[% default.keywords.0 FILTER html %]">
+      </td>
+    </tr>
+  [% END %]
+</table>  
+
+<hr>
+
+[%# *** Status Resolution Severity Priority Hardware OS *** %]
+
+<table>
+  <tr>
+    <th align="left"><a href="queryhelp.cgi#status">Status</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#resolution">Resolution</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#severity">Severity</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#priority">Priority</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#platform">Hardware</a>:</th>
+    <th align="left"><a href="queryhelp.cgi#opsys">OS</a>:</th>
+  </tr>
+
+  <tr valign="top">
+    [% PROCESS select sel = { name => 'bug_status', size => 7 } %]
+    [% PROCESS select sel = { name => 'resolution', size => 7 } %]
+    [% PROCESS select sel = { name => 'bug_severity', size => 7 } %]    
+    [% PROCESS select sel = { name => 'priority', size => 7 } %]    
+    [% PROCESS select sel = { name => 'rep_platform', size => 7 } %]
+    [% PROCESS select sel = { name => 'op_sys', size => 7 } %]
+  </tr>
+</table>
+
+<p>
+
+[%# *** Email Numbering Votes *** %]
+
+<table>
+  <tr>
+    <td>
+      <fieldset>
+        <legend>
+          <strong>
+            <a href="queryhelp.cgi#peopleinvolved">Email</a> and Numbering
+          </strong>  
+        </legend>
+
+
+<table>
+  <tr>
+  [% FOREACH n = [1, 2] %]
+    <td>
+
+
+<table cellspacing="0" cellpadding="0">
+  <tr>
+    <td>
+      Any of:
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input type="checkbox" name="emailassigned_to[% n %]" 
+             id="emailassigned_to[% n %]" value="1"
+             [% " checked" IF default.emailassigned_to.$n %]>
+      <label for="emailassigned_to[% n %]">
+        bug owner
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input type="checkbox" name="emailreporter[% n %]" 
+             id="emailreporter[% n %]" value="1"
+             [% " checked" IF default.emailreporter.$n %]>
+      <label for="emailreporter[% n %]">
+        reporter
+      </label>
+    </td>
+  </tr>
+  [% IF Param('useqacontact') %]
+  <tr>
+    <td>
+      <input type="checkbox" name="emailqa_contact[% n %]" 
+             id="emailqa_contact[% n %]" value="1"
+             [% " checked" IF default.emailqa_contact.$n %]>
+      <label for="emailqa_contact[% n %]">
+        QA contact
+      </label>
+    </td>
+  </tr>
+  [% END %]
+  <tr>
+    <td>
+      <input type="checkbox" name="emailcc[% n %]" 
+             id="emailcc[% n %]" value="1"
+             [% " checked" IF default.emailcc.$n %]>
+      <label for="emailcc[% n %]">
+        CC list member
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+        <input type="checkbox" name="emaillongdesc[% n %]" 
+               id="emaillongdesc[% n %]" value="1"
+               [% " checked" IF default.emaillongdesc.$n %]>
+      <label for="emaillongdesc[% n %]">
+        commenter
+      </label>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <select name="emailtype[% n %]">
+      [% FOREACH qv = [ 
+        { name => "substring", description => "contains" },
+        { name => "exact", description => "is" },
+        { name => "regexp", description => "matches regexp" },
+        { name => "notregexp", description => "doesn't match regexp" } ] %]
+        
+        <option value="[% qv.name %]"
+          [% " selected" IF default.emailtype.$n == qv.name %]>[% qv.description %]</option>
+      [% END %]
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <input name="email[% n %]" size="25" value="[% default.email.$n FILTER html %]">
+    </td>
+  </tr>
+</table>
+
+    
+    </td>
+  [% END %]
+  </tr>
+</table>
+<hr>
+<table>  
+  <tr>
+    <td>
+      <select name="bugidtype">
+        <option value="include"[% " selected" IF default.bugidtype.0 == "include" %]>Only include</option>
+        <option value="exclude"[% " selected" IF default.bugidtype.0 == "exclude" %]>Exclude</option>
+      </select>
+      bugs numbered: 
+    </td>
+    <td>
+      <input type="text" name="bug_id" value="[% default.bug_id.0 FILTER html %]" size="20">
+    </td>
+  </tr>
+  <tr>
+    <td></td>
+    <td>(comma-separated list)</td>
+  </tr>
+  [% IF Param('usevotes') %]
+    <tr>
+      <td align="right">
+        Only bugs with at least:
+      </td>
+      <td>
+        <input name="votes" size="3" value="[% default.votes.0 FILTER html %]"> votes
+      </td>
+    </tr>
+  [% END %]
+</table>
+
+
+      </fieldset>
+    </td>
+   
+[%# *** Bug Changes *** %]
+
+    <td valign="top">
+      <fieldset>
+        <legend><strong>Bug Changes</strong></legend>
+
+
+<dl>
+  <dt>Only bugs changed in the last </dt>
+  <dd><input name="changedin" size="3" value="[% default.changedin.0 FILTER html %]"> days</dd>
+</dl>
+
+<dl>
+  <dt>Only bugs where any of the fields</dt>
+  <dd>
+    <select name="chfield" multiple="multiple" size="4">
+    [% FOREACH field = chfield %]
+      <option value="[% field FILTER html %]"
+        [% " selected" IF lsearch(default.chfield, field) != -1 %]>
+        [% field FILTER html %]</option>
+    [% END %]
+    </select>
+  </dd>
+
+  <dt>were changed between</dt>
+  <dd>
+    <input name="chfieldfrom" size="10" value="[% default.chfieldfrom.0 FILTER html %]">
+    and <input name="chfieldto" size="10" value="[% default.chfieldto.0 FILTER html %]">
+    <br>(YYYY-MM-DD)
+  </dd>
+  <dt>to this value: (optional)</dt>
+  <dd>
+    <input name="chfieldvalue" size="20" value="[% default.chfieldvalue.0 FILTER html %]">
+  </dd>
+</dl>
+
+
+       </fieldset>
+     </td>
+  </tr>
+</table>
+
+[%# Note: the <form> tag is unclosed at the end of this template %]
+
+[%############################################################################%]
+[%# Block for SELECT fields                                                  #%]
+[%############################################################################%]
+
+[% BLOCK select %]
+  <td align="left">
+    <select name="[% sel.name %]" multiple="multiple" size="[% sel.size %]">
+    [% FOREACH name = ${sel.name} %]
+      <option value="[% name FILTER html %]"
+        [% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
+        [% name FILTER html %]</option>
+    [% END %]
+    </select>
+  </td>
+[% END %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/knob.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/knob.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/knob.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,99 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #                 Tobias Burnus <burnus at net-b.de>
+  #                 Jouni Heikniemi <jouni at heikniemi.net>
+  #%]
+
+[%# This is not necessary for English templates, but useful for localisers. %]
+[% ordersdesc = {
+   "Reuse same sort as last time" => "Reuse same sort as last time",
+   "Bug Number"   => "Bug Number",
+   "Importance"   => "Importance",
+   "Assignee"     => "Assignee",
+   "Last Changed" => "Last Changed" } %]
+
+<br>
+[% IF NOT userid %]
+   <input type="hidden" name="cmdtype" value="doit">
+[% ELSE %]
+   <input type="radio" name="cmdtype" value="doit" checked="checked">
+     Run this query
+   <br>
+   [% IF namedqueries.size > 0 %]
+     <br>
+     <table cellspacing="0" cellpadding="0">
+       <tr>
+         <td>
+           <input type="radio" name="cmdtype" value="editnamed">
+           Load my remembered query:
+         </td>
+         <td rowspan="3">
+           &nbsp;&nbsp;<select name="namedcmd">
+             [% FOREACH query = namedqueries %]
+               <option value="[% query FILTER html %]">
+                 [% query FILTER html %]</option>
+             [% END %]
+           </select>
+         </td>
+       </tr>  
+       <tr>
+         <td>
+           <input type="radio" name="cmdtype" value="runnamed">
+           Run my remembered query:
+         </td>
+       </tr>
+       <tr>
+          <td>
+           <input type="radio" name="cmdtype" value="forgetnamed">
+           Forget my remembered query:
+         </td>
+       </tr>
+     </table>
+     <br>
+   [% END %]
+   <input type="radio" name="cmdtype" value="asdefault">
+     Remember this as my default query
+   <br>
+   <input type="radio" name="cmdtype" value="asnamed">
+     Remember this query, and name it: 
+     <input type="text" name="newqueryname">
+     <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+     <input type="checkbox" name="tofooter" value="1">
+       and put it in my page footer
+[% END %]
+
+  <p>
+    Sort results by:
+    <select name="order">
+    [% FOREACH order = orders %]
+      <option value="[% order FILTER html %]"
+        [% " selected" IF default.order.0 == order %]>
+           [% ordersdesc.$order FILTER html %]</option> 
+    [% END %]
+    </select>
+
+    <input type="submit" value="[% button_name %]">
+    [% IF userdefaultquery %]
+       <p>
+         <a href="query.cgi?nukedefaultquery=1">
+           Set my default query back to the system default</a>
+       </p>
+    [% END %]
+  </p>

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/search.html.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/search.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/search/search.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,51 @@
+<!-- 1.0 at bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Gervase Markham <gerv at gerv.net>
+  #%]
+
+[%# INTERFACE:
+  # This template has no interface. However, to use it, you need to fulfill
+  # the interfaces of search/form.html.tmpl, search/knob.html.tmpl and
+  # search/boolean-charts.html.tmpl.
+  #%]
+
+[% PROCESS global/header.html.tmpl 
+  title = "Search for bugs"
+  onload = "selectProduct(document.forms['queryform']);"
+%]
+
+[% button_name = "Search" %]
+
+<form method="get" action="buglist.cgi" name="queryform">
+
+[% PROCESS search/form.html.tmpl %]
+
+[% PROCESS search/knob.html.tmpl %]
+
+<hr>
+
+[% PROCESS "search/boolean-charts.html.tmpl" %]
+
+<p>
+  Give me a <a href="queryhelp.cgi">clue</a> about how to use this form.
+</p>
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]

Added: trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/sidebar.xul.tmpl
===================================================================
--- trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/sidebar.xul.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/bugzilla.openmoko.org/var_lib_bugzilla_template_en_openmoko/sidebar.xul.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,120 @@
+[% template_version = "1.0 at bugzilla.org" %]
+[%# -*- mode: sgml -*- %]
+[%# The contents of this file are subject to the Mozilla Public
+  # License Version 1.1 (the "License"); you may not use this file
+  # except in compliance with the License. You may obtain a copy of
+  # the License at http://www.mozilla.org/MPL/
+  #
+  # Software distributed under the License is distributed on an "AS
+  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+  # implied. See the License for the specific language governing
+  # rights and limitations under the License.
+  #
+  # The Original Code is the Bugzilla Bug Tracking System.
+  #
+  # The Initial Developer of the Original Code is Netscape Communications
+  # Corporation. Portions created by Netscape are
+  # Copyright (C) 1998 Netscape Communications Corporation. All
+  # Rights Reserved.
+  #
+  # Contributor(s): Jacob Steenhagen <jake at acutex.net>
+  #                 Scott Collins <scc at mozilla.org>
+  #                 Christopher A. Aillon <christopher at aillon.com>
+  #%]
+<?xml version="1.0"?>
+<!-- [% template_version %] -->
+<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
+<?xml-stylesheet href="[% Param('urlbase') %]css/panel.css" type="text/css"?>
+<window
+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+  xmlns:html="http://www.w3.org/1999/xhtml"
+  orient="vertical"
+  onload="document.getElementById('query-field').addEventListener('keypress', initial_keypress_handler, true)">
+
+<!-- Load QuickSearch libraries -->
+<script type="application/x-javascript" src="/bugzilla/localconfig.js"/>
+<script type="application/x-javascript" src="/bugzilla/quicksearch.js"/>
+<script type="application/x-javascript"><![CDATA[
+
+// Tell QuickSearch that the source of this is the sidebar
+var sidebar = 1;
+
+function load_relative_url( aRelativeURL ) {
+        // DEBCOMPAT: CGI are under /cgi-bin/bugzilla
+        aRelativeURL = '[% Param('urlbase') %]' + aRelativeURL;
+        _content.location = aRelativeURL;
+}
+
+function initial_keypress_handler( aEvent ) {
+    this.removeAttribute("class");
+    this.addEventListener("keypress", normal_keypress_handler, true);
+    this.removeEventListener("keypress", initial_keypress_handler, true);
+}
+
+function normal_keypress_handler( aEvent ) {
+    if ( aEvent.keyCode == 13 )
+      QuickSearch(this.value);
+}
+
+]]></script>
+
+  <textbox id="query-field" class="descriptive-content" value="enter query" onfocus="this.setSelectionRange(0,this.value.length)"/>
+
+  <separator class="groove"/>
+
+  <box autostretch="never" valign="top">
+    <box orient="vertical" flex="1">
+      <text class="text-link" onclick="load_relative_url('query.cgi')" value="new query"/>
+      <text class="text-link" onclick="load_relative_url('reports.cgi')" value="reports"/>
+      <text class="text-link" onclick="load_relative_url('enter_bug.cgi')" value="new bug"/>
+      <separator class="thin"/>
+
+[% IF username %]
+      <text class="text-link" onclick="load_relative_url('userprefs.cgi')" value="edit prefs"/>
+  [%- IF UserInGroup('tweakparams') %]
+      <text class="text-link" onclick="load_relative_url('editparams.cgi')" value="edit params"/>
+  [%- END %]
+  [%- IF UserInGroup('editusers') || blessgroupset %]
+      <text class="text-link" onclick="load_relative_url('editusers.cgi')" value="edit users"/>
+  [%- END %]
+  [%- IF UserInGroup('editcomponents') %]
+      <text class="text-link" onclick="load_relative_url('editcomponents.cgi')" value="edit components"/>
+  [%- END %]
+  [%- IF UserInGroup('creategroups') %]
+      <text class="text-link" onclick="load_relative_url('editgroups.cgi')" value="edit groups"/>
+  [%- END %]
+  [%- IF UserInGroup('editkeywords') %]
+      <text class="text-link" onclick="load_relative_url('editkeywords.cgi')" value="edit keywords"/>
+  [%- END %]
+  [%- IF UserInGroup('tweakparams') %]
+      <text class="text-link" onclick="load_relative_url('sanitycheck.cgi')" value="sanity check"/>
+  [%- END %]
+      <text class="text-link" onclick="load_relative_url('relogin.cgi')" value="logout [% username FILTER html %]"/>
+      <separator class="thin"/>
+  [%- IF mybugsurl %]
+      <text class="text-link" onclick="load_relative_url('[% mybugsurl FILTER html %]')" value="my bugs"/>
+  [%- END %]
+  [%- IF Param('usevotes') %]
+      <text class="text-link" onclick="load_relative_url('votes.cgi?action=show_user')" value="my votes"/>
+  [%- END %]
+
+  [%- FOREACH name = namedqueries %]
+      <text class="text-link" onclick="load_relative_url('buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% name FILTER url_quote %]')" value="[% name FILTER html %]"/>
+  [% END %]
+
+[% ELSE %]
+      <text class="text-link" onclick="load_relative_url('createaccount.cgi')" value="new user"/>
+      <text class="text-link" onclick="load_relative_url('query.cgi?GoAheadAndLogIn=1')" value="log in"/>
+[% END %]
+
+    </box>
+  </box>
+
+  <spring flex="1"/>
+  <box orient="horizontal">
+    <spring flex="1"/>
+    <html align="right">
+      <html:a class="text-link" href="[% Param('urlbase') %]sidebar.cgi">reload</html:a>
+    </html>
+  </box>
+</window>

Added: trunk/lists.openmoko.org/README
===================================================================
--- trunk/lists.openmoko.org/README	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/README	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1 @@
+this is just the singla and only theming directory that mailman has.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbdetails.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbdetails.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbdetails.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,65 @@
+The administrative requests are displayed in one of two ways, on a <a
+href="%(summaryurl)s">summary page</a>, and on a <em>details</em>
+page.  The summary page contains pending subscription and
+unsubscription requests, as well as postings being held for your
+approval, grouped by sender email address.  The details page contains
+a more detailed view of each held message, including the all the
+message's headers and an excerpt of the message body.
+
+<p>On all the pages, the following actions are available:
+
+<ul>
+<li><b>Defer</b> -- Defer your decision until later.  No action is
+    taken now for this pending administrative request, but for held
+    postings, you can still forward or preserve the message (see
+    below).
+
+<li><b>Approve</b> -- Approve the message, sending it on to the list.
+    For membership requests, approve the change in membership status.
+
+<li><b>Reject</b> -- Reject the message, sending a rejection notice to
+    the sender, and discarding the original message.  For membership
+    requests, reject the change in membership status.  In either case,
+    you should add a reason for the rejection in the accompanying text
+    box.
+
+<li><b>Discard</b> -- Throw away the original message, without sending
+    a rejection notice.  For membership requests, this simply discards
+    the request without notice to the person making the request.  This
+    is usually the action you want to take for known spam.
+</ul>
+
+<p>For held messages, turn on the <b>Preserve</b> option if you want
+to save a copy of the message for the site administrator.  This is
+useful for abusive messages that you want to discard, but need to keep
+a record of for later inspection.
+
+<p>Turn on the <b>Forward to</b> option, and fill in the forwarding
+address if you want to forward the message to someone else not on the
+list.  To edit a held message before it is sent on to the list, you
+should forward the message to yourself (or the list owners), and
+discard the original message.  Then, when the message shows up in your
+mailbox, make your edits and resend the message to the list, including
+an <tt>Approved:</tt> header with the list password as its value.  It
+is proper netiquette in this case to include a note in the resent
+message, explaining that you have modified the text.
+
+<p>If the sender is a list member who is being moderated, you can
+optionally clear their moderation flag.  This is useful when your list
+is configured to put new members on probation, and you've decided that
+this member can be trusted to post to the list without approval.
+
+<p>If the sender is not a list member, you can add the email address to
+a <em>sender filter</em>.  Sender filters are described on the <a
+href="%(filterurl)s">sender filter privacy page</a>, and may be one of
+<b>auto-accept</b> (Accepts), <b>auto-hold</b> (Holds),
+<b>auto-reject</b> (Rejects), or <b>auto-discard</b> (Discards).  This
+option will not be available if the address is already on one of the
+sender filters.
+
+<p>When you're finished, click on the <em>Submit All Data</em> button
+at the top or bottom of the page.  This button will submit all
+selected actions for all administrative requests that you've made a
+decision for.
+
+<p><a href="%(summaryurl)s">Return to the summary page</a>.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbpreamble.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbpreamble.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbpreamble.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,10 @@
+This page contains a subset of the <em>%(listname)s</em> mailing list
+postings that are being held for your approval.  It currently shows
+%(description)s
+
+<p>For each administrative request, please select the action to take,
+clicking on the <b>Submit All Data</b> when finished.  More detailed
+instructions are available <a href="%(detailsurl)s">here</a>.
+
+<p>You can also <a href="%(summaryurl)s">view a summary</a> of all
+pending requests.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbsummary.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbsummary.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/admindbsummary.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,14 @@
+This page contains a summary of the current set of administrative
+requests requiring your approval for the
+<a href="%(adminurl)s"><em>%(listname)s</em> mailing list</a>.
+First, you will find the list of pending
+subscription and unsubscription requests, if any, followed by any
+postings being held for your approval.
+
+<p>For each administrative request, please select the action to take,
+clicking on the <b>Submit All Data</b> button when finished.
+<a href="%(detailsurl)s">More detailed instructions</a> are also
+available.
+
+<p>You can also <a href="%(viewallurl)s">view the details</a> of all
+held postings.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminsubscribeack.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminsubscribeack.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminsubscribeack.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,3 @@
+%(member)s has been successfully subscribed to %(listname)s.
+
+

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminunsubscribeack.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminunsubscribeack.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/adminunsubscribeack.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,2 @@
+%(member)s has been removed from %(listname)s.
+

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/admlogin.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/admlogin.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/admlogin.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,40 @@
+<html>
+<head>
+  <title>%(listname)s %(who)s Authentication</title>
+<script>function sf(){document.f.adminpw.focus();}</script>
+</head>
+<body bgcolor="#ffffff" onLoad="sf()">
+<FORM METHOD=POST ACTION="%(path)s" name="f">
+%(message)s
+  <TABLE WIDTH="100%%" BORDER="0" CELLSPACING="4" CELLPADDING="5">
+    <TR>
+      <TD COLSPAN="2" WIDTH="100%%" BGCOLOR="#99CCFF" ALIGN="CENTER">
+	<B><FONT COLOR="#000000" SIZE="+1">%(listname)s %(who)s
+	    Authentication</FONT></B>
+      </TD>
+    </TR>
+    <tr>
+      <TD><div ALIGN="Right">List %(who)s Password:</div></TD>
+      <TD><INPUT TYPE="password" NAME="adminpw" SIZE="30"></TD>
+    </tr>
+    <tr>
+      <td colspan=2 align=middle><INPUT type="SUBMIT"
+                                        name="admlogin"
+					value="Let me in...">
+      </td>
+    </tr>
+  </TABLE>
+      <p><strong><em>Important:</em></strong> From this point on, you
+      must have cookies enabled in your browser, otherwise no
+      administrative changes will take effect.
+
+      <p>Session cookies are used in Mailman's
+      administrative interface so that you don't need to
+      re-authenticate with every administrative operation.  This
+      cookie will expire automatically when you exit your browser, or
+      you can explicitly expire the cookie by hitting the
+      <em>Logout</em> link under <em>Other Administrative
+      Activities</em> (which you'll see once you successfully log in).
+</FORM>
+</body>
+</html>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/approve.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/approve.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/approve.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,15 @@
+Your request to %(requestaddr)s:
+
+    %(cmd)s
+
+has been forwarded to the person running the list.
+
+This is probably because you are trying to subscribe to a 'closed'
+list.
+
+You will receive email notification of the list owner's decision about
+your subscription request.
+
+Any questions about the list owner's policy should be directed to:
+
+    %(adminaddr)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxentry.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxentry.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxentry.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,4 @@
+<LI><A HREF="%(filename)s">%(subject)s
+</A><A NAME="%(sequence)i">&nbsp;</A>
+<I>%(author)s
+</I>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxfoot.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxfoot.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxfoot.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,21 @@
+    </ul>
+    <p>
+      <a name="end"><b>Last message date:</b></a> 
+       <i>%(lastdate)s</i><br>
+    <b>Archived on:</b> <i>%(archivedate)s</i>
+    <p>
+   <ul>
+         <li> <b>Messages sorted by:</b>
+	        %(thread_ref)s
+		%(subject_ref)s
+		%(author_ref)s
+		%(date_ref)s
+	     <li><b><a href="%(listinfo)s">More info on this list...
+                    </a></b></li>
+     </ul>
+     <p>
+     <hr>
+     <i>This archive was generated by
+     Pipermail %(version)s.</i>
+  </BODY>
+</HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxhead.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxhead.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archidxhead.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+  <HEAD>
+     <title>The %(listname)s %(archive)s Archive by %(archtype)s</title>
+     <META NAME="robots" CONTENT="noindex,follow">
+     %(encoding)s
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+      <a name="start"></A>
+      <h1>%(archive)s Archives by %(archtype)s</h1>
+      <ul>
+         <li> <b>Messages sorted by:</b>
+	        %(thread_ref)s
+		%(subject_ref)s
+		%(author_ref)s
+		%(date_ref)s
+
+	     <li><b><a href="%(listinfo)s">More info on this list...
+                    </a></b></li>
+      </ul>
+      <p><b>Starting:</b> <i>%(firstdate)s</i><br>
+         <b>Ending:</b> <i>%(lastdate)s</i><br>
+         <b>Messages:</b> %(size)s<p>
+     <ul>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archlistend.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archlistend.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archlistend.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1 @@
+         </table>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archliststart.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archliststart.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archliststart.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,4 @@
+	<table border=3>
+          <tr><td>Archive</td>
+          <td>View by:</td>
+          <td>Downloadable version</td></tr>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtoc.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtoc.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtoc.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+  <HEAD>
+     <title>The %(listname)s Archives</title>
+     <META NAME="robots" CONTENT="noindex,follow">
+     %(meta)s
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+     <h1>The %(listname)s Archives </h1>
+     <p>
+      You can get <a href="%(listinfo)s">more information about this list</a>
+      or you can <a href="%(fullarch)s">download the full raw archive</a>
+      (%(size)s).
+     </p>
+     %(noarchive_msg)s
+     %(archive_listing_start)s
+     %(archive_listing)s
+     %(archive_listing_end)s
+     </BODY>
+     </HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocentry.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocentry.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocentry.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,12 @@
+
+	    <tr>
+            <td>%(archivelabel)s:</td>
+            <td>
+              <A href="%(archive)s/thread.html">[ Thread ]</a>
+              <A href="%(archive)s/subject.html">[ Subject ]</a>
+              <A href="%(archive)s/author.html">[ Author ]</a>
+              <A href="%(archive)s/date.html">[ Date ]</a>
+            </td>
+            %(textlink)s
+            </tr>
+

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocnombox.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocnombox.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/archtocnombox.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+  <HEAD>
+     <title>The %(listname)s Archives</title>
+     <META NAME="robots" CONTENT="noindex,follow">
+     %(meta)s
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+     <h1>The %(listname)s Archives </h1>
+     <p>
+      You can get <a href="%(listinfo)s">more information about this list</a>.
+     </p>
+     %(noarchive_msg)s
+     %(archive_listing_start)s
+     %(archive_listing)s
+     %(archive_listing_end)s
+     </BODY>
+     </HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/article.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/article.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/article.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+ <HEAD>
+   <TITLE> %(title)s
+   </TITLE>
+   <LINK REL="Index" HREF="index.html" >
+   <LINK REL="made" HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s">
+   <META NAME="robots" CONTENT="index,nofollow">
+   %(encoding)s
+   %(prev)s
+   %(next)s
+ </HEAD>
+ <BODY BGCOLOR="#ffffff">
+   <H1>%(subject_html)s</H1>
+    <B>%(author_html)s</B> 
+    <A HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s"
+       TITLE="%(subject_html)s">%(email_html)s
+       </A><BR>
+    <I>%(datestr_html)s</I>
+    <P><UL>
+        %(prev_wsubj)s
+        %(next_wsubj)s
+         <LI> <B>Messages sorted by:</B> 
+              <a href="date.html#%(sequence)s">[ date ]</a>
+              <a href="thread.html#%(sequence)s">[ thread ]</a>
+              <a href="subject.html#%(sequence)s">[ subject ]</a>
+              <a href="author.html#%(sequence)s">[ author ]</a>
+         </LI>
+       </UL>
+    <HR>  
+<!--beginarticle-->
+%(body)s
+<!--endarticle-->
+    <HR>
+    <P><UL>
+        <!--threads-->
+	%(prev_wsubj)s
+	%(next_wsubj)s
+         <LI> <B>Messages sorted by:</B> 
+              <a href="date.html#%(sequence)s">[ date ]</a>
+              <a href="thread.html#%(sequence)s">[ thread ]</a>
+              <a href="subject.html#%(sequence)s">[ subject ]</a>
+              <a href="author.html#%(sequence)s">[ author ]</a>
+         </LI>
+       </UL>
+
+<hr>
+<a href="%(listurl)s">More information about the %(listname)s
+mailing list</a><br>
+</body></html>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/bounce.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/bounce.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/bounce.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,13 @@
+This is a Mailman mailing list bounce action notice:
+
+    List:       %(listname)s
+    Member:     %(addr)s
+    Action:     Subscription %(negative)s%(did)s.
+    Reason:     Excessive or fatal bounces.
+    %(but)s
+
+%(reenable)s
+The triggering bounce notice is attached below.
+
+Questions?  
+Contact the Mailman site administrator at %(owneraddr)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/checkdbs.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/checkdbs.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/checkdbs.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,7 @@
+The %(real_name)s@%(host_name)s mailing list has %(count)d request(s)
+waiting for your consideration at:
+
+	%(adminDB)s
+	
+Please attend to this at your earliest convenience.  This notice of
+pending requests, if any, will be sent out daily.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/convert.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/convert.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/convert.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,34 @@
+The %(listname)s mailing list has just undergone a big change.  It is
+running on a new mailing list package called "Mailman".  This will
+hopefully solve a lot of problems that administering this list has
+presented.
+
+How does this affect you?
+
+1) Mail intended for the whole list should be sent to: %(listaddr)s.
+
+2) You have been given an arbitrary password to prevent others from
+unsubscribing you without your knowledge.  It will be mailed to you in 
+a separate email, which you may have already received.  Don't worry if 
+you forget this password; a reminder will be sent to you via email
+every month.
+
+3) If you have World Wide Web access, you can use it any time to
+unsubscribe from this list, to switch to and from digest mode, to
+check back issues of the list (which will be available after the list
+has been getting posts for a day or so), etc.  The Web address for
+these resources is:
+
+    %(listinfo_url)s
+
+4) If you do not have WWW access, you can do these same things via
+email.  Send mail to %(requestaddr)s with a subject or body containing 
+just the word "help" (without the quotes).  You will receive an
+automated reply giving you further directions.
+
+Please address any questions or problems with this new setup to:
+%(adminaddr)s.
+
+This message was auto-generated by Mailman %(version)s.  For more
+information on the Mailman software, visit the Mailman homepage at
+http://www.list.org/

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/cronpass.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/cronpass.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/cronpass.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,19 @@
+This is a reminder, sent out once a month, about your %(hostname)s
+mailing list memberships.  It includes your subscription info and how
+to use it to change it or unsubscribe from a list.
+
+You can visit the URLs to change your membership status or
+configuration, including unsubscribing, setting digest-style delivery
+or disabling delivery altogether (e.g., for a vacation), and so on.
+
+In addition to the URL interfaces, you can also use email to make such
+changes.  For more info, send a message to the '-request' address of
+the list (for example, %(exreq)s) containing just the word 'help' in
+the message body, and an email message will be sent to you with
+instructions.
+
+If you have questions, problems, comments, etc, send them to
+%(owner)s.  Thanks!
+
+Passwords for %(useraddr)s:
+

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/disabled.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/disabled.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/disabled.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,25 @@
+Your membership in the mailing list %(listname)s has been disabled
+%(reason)s.  You will not get any more messages from this
+list until you re-enable your membership.  You will receive
+%(noticesleft)s more reminders like this before your membership in the
+list is deleted.
+
+To re-enable your membership, you can simply respond to this message
+(leaving the Subject: line intact), or visit the confirmation page at
+
+    %(confirmurl)s
+
+You can also visit your membership page at
+
+    %(optionsurl)s
+
+On your membership page, you can change various delivery options such
+as your email address and whether you get digests or not.  As a
+reminder, your membership password is
+
+    %(password)s
+
+If you have any questions or problems, you can contact the list owner
+at
+
+    %(owneraddr)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/emptyarchive.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/emptyarchive.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/emptyarchive.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+  <HEAD>
+     <title>The %(listname)s Archives</title>
+     <META NAME="robots" CONTENT="noindex,follow">
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+     <h1>The %(listname)s Archives </h1>
+     <p>
+      No messages have been posted to this list yet, so the archives are
+      currently empty.  You can get <a href="%(listinfo)s">more information
+      about this list</a>.
+     </p>
+  </BODY>
+  </HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/headfoot.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/headfoot.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/headfoot.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,28 @@
+This text can include 
+<a href="http://www.python.org/doc/current/lib/typesseq-strings.html">Python
+format strings</a> which are resolved against list attributes.  The
+list of substitutions allowed are:
+
+<ul>
+    <li><b>real_name</b> - The "pretty" name of the list; usually
+    the list name with capitalization.
+
+    <li><b>list_name</b> - The name by which the list is
+    identified in URLs, where case is significant.
+
+    <li><b>host_name</b> - The fully qualified domain name
+    that the list server runs on.
+
+    <li><b>web_page_url</b> - The base URL for Mailman.  This
+    can be appended with,
+    e.g. <em>listinfo/%(list_name)s</em> to yield the
+    listinfo page for the mailing list.
+
+    <li><b>description</b> - The brief description of the
+    mailing list.
+
+    <li><b>info</b> - The full description of the mailing
+    list.
+
+    <li><b>cgiext</b> - The extension added to CGI scripts.
+</ul>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/help.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/help.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/help.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,33 @@
+Help for %(listname)s mailing list:
+
+This is email command help for version %(version)s of the "Mailman"
+list manager.  The following describes commands you can send to get
+information about and control your subscription to Mailman lists at
+this site.  A command can be in the subject line or in the body of the
+message.
+
+Note that much of the following can also be accomplished via the World
+Wide Web, at:
+
+    %(listinfo_url)s
+
+In particular, you can use the Web site to have your password sent to
+your delivery address.
+
+List specific commands (subscribe, who, etc) should be sent to the
+*-request address for the particular list, e.g. for the 'mailman'
+list, use 'mailman-request at ...'.
+
+About the descriptions - words in "<>"s signify REQUIRED items and
+words in "[]" denote OPTIONAL items.  Do not include the "<>"s or
+"[]"s when you use the commands.
+
+The following commands are valid:
+
+    %(commands)s
+
+Commands should be sent to %(requestaddr)s
+
+Questions and concerns for the attention of a person should be sent to
+
+    %(adminaddr)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/invite.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/invite.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/invite.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,20 @@
+Your address "%(email)s" has been invited to join the %(listname)s
+mailing list at %(hostname)s by the %(listname)s mailing list owner.
+You may accept the invitation by simply replying to this message,
+keeping the Subject: header intact.
+
+You can also visit this web page:
+
+    %(confirmurl)s
+
+Or you should include the following line -- and only the following
+line -- in a message to %(requestaddr)s:
+
+    confirm %(cookie)s
+
+Note that simply sending a `reply' to this message should work from
+most mail readers.
+
+If you want to decline this invitation, please simply disregard this
+message.  If you have any questions, please send them to
+%(listowner)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/listinfo.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/listinfo.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/listinfo.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,144 @@
+<!-- $Revision: 2.4 $ -->
+<HTML>
+  <HEAD>
+    <TITLE><MM-List-Name> Info Page</TITLE>
+  
+  </HEAD>
+  <BODY>
+
+    <P>
+      <TABLE COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
+	<TR>
+	  <TD COLSPAN="2" WIDTH="100%" BGCOLOR="#99CCFF" ALIGN="CENTER">
+	    <B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name> --
+	<MM-List-Description></FONT></B>
+	  </TD>
+	</TR>
+	<tr>
+	    <td colspan="2">
+	      <p>&nbsp;
+	    </td>
+	  </tr>
+	  <tr>
+	    <TD COLSPAN="1" WIDTH="100%" BGCOLOR="#FFF0D0">
+	      <B><FONT COLOR="#000000">About <MM-List-Name></FONT></B>
+	    </TD>
+            <TD COLSPAN="1" WIDTH="100%" BGCOLOR="#FFF0D0">
+              <MM-lang-form-start><MM-displang-box> <MM-list-langs>
+              <MM-form-end>
+    <MM-Subscribe-Form-Start>
+            </TD>
+	  </TR>
+	    <tr>
+	      <td colspan="2">
+		<P><MM-List-Info></P>
+	  <p> To see the collection of prior postings to the list,
+	      visit the <MM-Archive><MM-List-Name>
+		  Archives</MM-Archive>.
+	      <MM-Restricted-List-Message>
+	  </p>
+	</TD>
+      </TR>
+      <TR>
+	<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
+	  <B><FONT COLOR="#000000">Using <MM-List-Name></FONT></B>
+	</TD>
+      </TR>
+      <tr>
+	<td colspan="2">
+	  To post a message to all the list members, send email to
+	  <A HREF="mailto:<MM-Posting-Addr>"><MM-Posting-Addr></A>.
+
+	  <p>You can subscribe to the list, or change your existing
+	    subscription, in the sections below.
+	</td>
+      </tr>
+      <TR>
+	<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
+	  <B><FONT COLOR="#000000">Subscribing to <MM-List-Name></FONT></B>
+	</TD>
+      </TR>
+      <tr>
+	<td colspan="2">
+	  <P>
+	    Subscribe to <MM-List-Name> by filling out the following
+	      form.
+	  <ul>
+	  <MM-List-Subscription-Msg>
+	      <TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2"
+		WIDTH="70%" HEIGHT= "112">
+		<TR>
+		  <TD BGCOLOR="#dddddd" WIDTH="55%">Your email address:</TD>
+		  <TD WIDTH="33%"><MM-Subscribe-Box>
+	</TD>
+	<TD WIDTH="12%">&nbsp;</TD></TR>
+      <tr>
+        <td bgcolor="#dddddd" width="55%">Your name (optional):</td>
+        <td width="33%"><mm-fullname-box></td>
+	<TD WIDTH="12%">&nbsp;</TD></TR>
+      <TR>
+	<TD COLSPAN="3"><FONT SIZE=-1>You may enter a
+	    privacy password below. This provides only mild security,
+	    but should prevent others from messing with your
+	    subscription.  <b>Do not use a valuable password</b> as
+	    it will occasionally be emailed back to you in cleartext.
+
+            <p>If you choose not to enter a password, one will be
+            automatically generated for you, and it will be sent to
+            you once you've confirmed your subscription.  You can
+            always request a mail-back of your password when you edit
+            your personal options.
+	    <MM-Reminder>
+	</TD>
+      </TR>  
+      <TR>
+	<TD BGCOLOR="#dddddd">Pick a password:</TD>
+	<TD><MM-New-Password-Box></TD>
+	<TD>&nbsp;</TD></TR>
+      <TR> 
+	<TD BGCOLOR="#dddddd">Reenter password to confirm:</TD>
+	<TD><MM-Confirm-Password></TD>
+	<TD>&nbsp; </TD></TR>
+      <tr>
+        <TD BGCOLOR="#dddddd">Which language do you prefer to display your messages?</TD> 
+        <TD> <MM-list-langs></TD>
+        <TD>&nbsp; </TD></TR>
+      <mm-digest-question-start>
+      <tr>
+	<td>Would you like to receive list mail batched in a daily
+	  digest?
+	  </td>
+	<td><MM-Undigest-Radio-Button> No
+	    <MM-Digest-Radio-Button>  Yes
+	</TD>
+      </tr>
+      <mm-digest-question-end>
+      <tr>
+	<td colspan="3">
+	  <center><MM-Subscribe-Button></P></center>
+    </TABLE>
+    <MM-Form-End>
+    </ul>
+    </td>
+    </tr>
+    <TR>
+      <TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
+	<a name="subscribers">
+        <B><FONT COLOR="#000000"><MM-List-Name> Subscribers</FONT></B></a>
+      </TD>
+    </TR>
+    <tr>
+      <TD COLSPAN="2" WIDTH="100%">
+	<MM-Roster-Form-Start>
+	<MM-Roster-Option>
+	    <MM-Form-End>
+	  <p>
+	<MM-Options-Form-Start>
+	<MM-Editing-Options>
+		<MM-Form-End>
+      </td>
+    </tr>
+  </table>
+<MM-Mailman-Footer>
+</BODY>
+</HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/masthead.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/masthead.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/masthead.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,13 @@
+Send %(real_name)s mailing list submissions to
+	%(got_list_email)s
+
+To subscribe or unsubscribe via the World Wide Web, visit
+	%(got_listinfo_url)s
+or, via email, send a message with subject or body 'help' to
+	%(got_request_email)s
+
+You can reach the person managing the list at
+	%(got_owner_email)s
+
+When replying, please edit your Subject line so it is more specific than
+"Re: Contents of %(real_name)s digest..."

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/newlist.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/newlist.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/newlist.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,35 @@
+The mailing list `%(listname)s' has just been created for you.  The
+following is some basic information about your mailing list.
+
+Your mailing list password is:
+
+    %(password)s
+
+You need this password to configure your mailing list.  You also need
+it to handle administrative requests, such as approving mail if you
+choose to run a moderated list.
+
+You can configure your mailing list at the following web page:
+
+    %(admin_url)s
+
+The web page for users of your mailing list is: 
+
+    %(listinfo_url)s
+
+You can even customize these web pages from the list configuration
+page.  However, you do need to know HTML to be able to do this.
+
+There is also an email-based interface for users (not administrators)
+of your list; you can get info about using it by sending a message
+with just the word `help' as subject or in the body, to:
+
+    %(requestaddr)s
+
+To unsubscribe a user: from the mailing list 'listinfo' web page,
+click on or enter the user's email address as if you were that user.
+Where that user would put in their password to unsubscribe, put in
+your admin password.  You can also use your password to change
+member's options, including digestification, delivery disabling, etc.
+
+Please address all questions to %(siteowner)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/nomoretoday.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/nomoretoday.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/nomoretoday.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,8 @@
+We have received a message from your address `%(sender)s' requesting
+an automated response from the %(listname)s mailing list.  We have
+seen %(num)s such messages from you today.  In order to avoid problems
+such as mail loops between email robots, we will not be sending you
+any further email responses today.  Please try again tomorrow.
+
+If you believe this message is in error, or if you have any questions,
+please contact the list owner at %(owneremail)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/options.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/options.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/options.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,316 @@
+<html>
+<head>
+    <link rel="SHORTCUT ICON" href="<mm-favicon>">
+    <title><MM-Presentable-User> membership configuration for <MM-List-Name>
+    </title>
+</head>
+<BODY BGCOLOR="#ffffff">
+    <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
+    <TR><TD WIDTH="100%" BGCOLOR="#99CCFF"><B>
+        <FONT COLOR="#000000" SIZE=+1>
+        <MM-List-Name> mailing list membership configuration for
+        <MM-Presentable-User>
+        </FONT></B></TD></TR>
+    </TABLE>
+<p>
+<table width="100%" border="0" cellspacing="5" cellpadding="5">
+    <tr><td>
+        <b><MM-Presentable-User></b>'s subscription status,
+        password, and options for the <MM-List-Name> mailing list.
+        </td><td><MM-Form-Start><mm-logout-button><MM-Form-End></td>
+    </tr><tr>
+        <td colspan="2">
+        <MM-Case-Preserved-User>
+
+        <MM-Disabled-Notice>
+
+        <p><mm-results>
+        </td>
+    </tr>
+</table>
+
+<MM-Form-Start>
+<p>
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
+    <TR><TD WIDTH="100%" BGCOLOR="#FFF0D0" colspan="2">
+        <FONT COLOR="#000000">
+        <B>Changing your <MM-List-Name> membership information</B>
+        </FONT></TD></TR>
+    <tr><td colspan="2">You can change the address that you are subscribed
+        to the mailing list with by entering the new address in the
+        fields below.  Note that a confirmation email will be sent to
+        the new address, and the change must be confirmed before it is
+        processed.
+
+        <p>Confirmations time out after about <mm-pending-days>.
+
+        <p>You can also optionally set or change your real name
+        (i.e. <em>John Smith</em>).
+
+        <p>If you want to make the membership changes for all the
+        lists that you are subscribed to at <mm-host>, turn on the
+        <em>Change globally</em> check box.
+
+        </td></tr>
+    <tr><td><center>
+        <table border="0" cellspacing="2" cellpadding="2" width="80%" cols="2">
+        <tr><td bgcolor="#dddddd"><div align="right">New address:</div></td>
+            <td><mm-new-address-box></td>
+            </tr>
+        <tr><td bgcolor="#dddddd"><div align="right">Again to
+            confirm:</div></td> 
+            <td><mm-confirm-address-box></td>
+            </tr>
+        </tr></table></center>
+        </td>
+        <td><center>
+        <table border="0" cellspacing="2" cellpadding="2" width="80%" cols="2">
+            <tr><td bgcolor="#dddddd"><div align="right">Your name
+            (optional):</div></td>
+            <td><mm-fullname-box></td>
+            </tr>
+        </table></center>
+        </td>
+        </tr>
+    <tr><td colspan="2"><center><mm-change-address-button>
+        <p><mm-global-change-of-address>Change globally</center></td>
+    </tr>
+</table>
+
+<p>
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="5" CELLPADDING="5">
+    <TR><TD WIDTH="50%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
+        <B>Unsubscribing from <MM-List-Name></B></td>
+
+        <TD WIDTH="50%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
+        <B>Your other <MM-Host> subscriptions</B>
+        </FONT></TD></TR>
+
+    <tr><td>
+        Turn on the confirmation checkbox and hit this button to
+        unsubscribe from this mailing list.  <strong>Warning:</strong>
+        This action will be taken immediately!
+        <p>
+        <center><MM-Unsubscribe-Button></center></td>
+    <td>
+        You can view a list of all the other mailing lists at
+        <mm-host> for which you are a member.  Use this if you want to
+        make the same membership option changes to this other
+        subscriptions.
+
+        <p>
+        <center><MM-Other-Subscriptions-Submit></center>
+        </TD></TR>
+</table>
+
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
+    <TR><TD COLSPAN=2 WIDTH="100%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
+        <B>Your <MM-List-Name> Password</B>
+        </FONT></TD></TR>
+
+    <tr valign="TOP"><td WIDTH="50%">
+        <a name=reminder>
+        <center>
+        <h3>Forgotten Your Password?</h3>
+        </center>
+        Click this button to have your password emailed to your
+        membership address.
+        <p><MM-Umbrella-Notice>
+        <center>
+        <MM-Email-My-Pw>
+        </center>
+        </td>
+
+    <td WIDTH="50%">
+        <a name=changepw>
+        <center>
+        <h3>Change Your Password</h3>
+        <TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2" WIDTH="70%" COLS=2>
+            <TR><TD BGCOLOR="#dddddd"><div align="right">New
+                password:</div></TD>
+                <TD><MM-New-Pass-Box></TD>
+                </TR>
+            <TR>
+                <TD BGCOLOR="#dddddd"><div align="right">Again to
+                confirm:</div></TD>
+                <TD><MM-Confirm-Pass-Box></TD>
+            </TR>
+        </table>
+
+        <MM-Change-Pass-Button>
+        <p><center><mm-global-pw-changes-button>Change globally.
+        </center>
+</TABLE>
+
+<p>
+<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
+    <TR><TD WIDTH="100%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
+        <B>Your <MM-List-Name> Subscription Options</B>
+        </FONT></TD></TR>
+</table>
+
+<p>
+<i><strong>Current values are checked.</strong></i>
+
+<p>Note that some of the options have a <em>Set globally</em>
+checkbox.  Checking this field will cause the changes to be made to
+every mailing list that you are a member of on <mm-host>.  Click on
+<em>List my other subscriptions</em> above to see which other mailing
+lists you are subscribed to.
+<p>
+<TABLE BORDER="0" CELLSPACING="3" CELLPADDING="4" WIDTH="100%">
+    <tr><TD BGCOLOR="#cccccc">
+        <a name="disable">
+        <strong>Mail delivery</strong></a><p>
+        Set this option to <em>Enabled</em> to receive messages posted
+        to this mailing list.  Set it to <em>Disabled</em> if you want
+        to stay subscribed, but don't want mail delivered to you for a
+        while (e.g. you're going on vacation).  If you disable mail
+        delivery, don't forget to re-enable it when you come back; it
+        will not be automatically re-enabled.
+        </td><td bgcolor="#cccccc">
+        <mm-delivery-enable-button>Enabled<br>
+        <mm-delivery-disable-button>Disabled<p>
+        <mm-global-deliver-button><i>Set globally</i>
+        </td></tr>
+
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>Set Digest Mode</strong><p>
+        If you turn digest mode on, you'll get posts bundled together
+        (usually one per day but possibly more on busy lists), instead
+        of singly when they're sent.  If digest mode is changed from
+        on to off, you may receive one last digest.
+        </td><td bgcolor="#cccccc">
+        <MM-Undigest-Radio-Button>Off<br>
+        <MM-Digest-Radio-Button>On
+        </td></tr>
+        
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>Get MIME or Plain Text Digests?</strong><p>
+        Your mail reader may or may not support MIME digests.  In
+        general MIME digests are preferred, but if you have a problem
+        reading them, select plain text digests.
+        </td><td bgcolor="#cccccc">
+        <MM-Mime-Digests-Button>MIME<br>
+        <MM-Plain-Digests-Button>Plain Text<p>
+        <mm-global-mime-button><i>Set globally</i>
+        </td></tr>
+        
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>Receive your own posts to the list?</strong><p>
+        Ordinarily, you will get a copy of every message you post to
+        the list.  If you don't want to receive this copy, set this
+        option to <em>No</em>.
+        </td><td bgcolor="#cccccc">
+        <mm-dont-receive-own-mail-button>No<br>
+        <mm-receive-own-mail-button>Yes
+        </td></tr>
+
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>Receive acknowledgement mail when you send mail to
+        the list?</strong><p>
+        </td><td bgcolor="#cccccc">
+        <mm-dont-ack-posts-button>No<br>
+        <mm-ack-posts-button>Yes
+        </td></tr>
+
+    <tr><td bgcolor="#cccccc">
+        <strong>Get password reminder email for this list?</strong><p>
+        Once a month, you will get an email containing a password
+        reminder for every list at this host to which you are
+        subscribed.  You can turn this off on a per-list basis by
+        selecting <em>No</em> for this option.  If you turn off
+        password reminders for all the lists you are subscribed to, no
+        reminder email will be sent to you.
+        </td><td bgcolor="#cccccc">
+        <mm-dont-get-password-reminder-button>No<br>
+        <mm-get-password-reminder-button>Yes<p>
+        <mm-global-remind-button><i>Set globally</i>
+        </td></tr>
+
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>Conceal yourself from subscriber list?</strong><p>
+        When someone views the list membership, your email address is
+        normally shown (in an obscured fashion to thwart spam
+        harvesters).  If you do not want your email address to show up
+        on this membership roster at all, select <em>Yes</em> for this option.
+        </td><td bgcolor="#cccccc">
+        <MM-Public-Subscription-Button>No<br>
+        <MM-Hide-Subscription-Button>Yes
+        </td></tr>
+
+    <tr><TD BGCOLOR="#cccccc">
+        <strong>What language do you prefer?</strong><p>
+        </td><td bgcolor="#cccccc">
+        <MM-list-langs>
+        </td></tr>
+
+    <tr><td bgcolor="#cccccc">
+        <strong>Which topic categories would you like to subscribe
+                to?</strong><p>
+                By selecting one or more topics, you can filter the
+                traffic on the mailing list, so as to receive only a
+                subset of the messages.  If a message matches one of
+                your selected topics, then you will get the message,
+                otherwise you will not.
+
+                <p>If a message does not match any topic, the delivery
+                rule depends on the setting of the option below.  If
+                you do not select any topics of interest, you will get
+                all the messages sent to the mailing list.
+        </td><td bgcolor="#cccccc">
+        <mm-topics>
+        </td></tr>
+
+    <tr><td bgcolor="#cccccc">
+        <strong>Do you want to receive messages that do not match any
+                topic filter?</strong><p>
+
+                This option only takes effect if you've subscribed to
+                at least one topic above.  It describes what the
+                default delivery rule is for messages that don't match
+                any topic filter.  Selecting <em>No</em> says that if
+                the message does not match any topic filters, then you
+                won't get the message, while selecting <em>Yes</em>
+                says to delivery such non-matching messages to you.
+
+                <p>If no topics of interest are selected above, then
+                you will receive every message sent to the mailing
+                list.
+        </td><td bgcolor="#cccccc">
+        <mm-suppress-nonmatching-topics>No<br>
+        <mm-receive-nonmatching-topics>Yes
+        </td></tr>
+
+    <tr><td bgcolor="#cccccc">
+        <strong>Avoid duplicate copies of messages?</strong><p>
+
+                When you are listed explicitly in the <tt>To:</tt> or
+                <tt>Cc:</tt> headers of a list message, you can opt to
+                not receive another copy from the mailing list.
+                Select <em>Yes</em> to avoid receiving copies from the
+                mailing list; select <em>No</em> to receive copies.
+
+                <p>If the list has member personalized messages
+                enabled, and you elect to receive copies, every copy
+                will have a <tt>X-Mailman-Copy: yes</tt> header added
+                to it.
+
+        </td><td bgcolor="#cccccc">
+        <mm-receive-duplicates-button>No<br>
+        <mm-dont-receive-duplicates-button>Yes<p>
+        <mm-global-nodupes-button><i>Set globally</i>
+        </td></tr>
+
+    <tr><TD colspan="2">
+        <center><MM-options-Submit-button></center>
+        </td></tr>
+
+</table>
+</center>
+<p>
+<MM-Form-End>
+
+<MM-Mailman-Footer>
+</body>
+</html>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/postack.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/postack.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/postack.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,8 @@
+Your message entitled
+
+    %(subject)s
+
+was successfully received by the %(listname)s mailing list.
+
+List info page: %(listinfo_url)s
+Your preferences: %(optionsurl)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/postauth.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/postauth.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/postauth.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,13 @@
+As list administrator, your authorization is requested for the
+following mailing list posting:
+
+    List:    %(listname)s@%(hostname)s
+    From:    %(sender)s
+    Subject: %(subject)s
+    Reason:  %(reason)s
+
+At your convenience, visit:
+
+    %(admindb_url)s
+        
+to approve or deny the request.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/postheld.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/postheld.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/postheld.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,15 @@
+Your mail to '%(listname)s' with the subject
+
+    %(subject)s
+
+Is being held until the list moderator can review it for approval.
+
+The reason it is being held:
+
+    %(reason)s
+
+Either the message will get posted to the list, or you will receive
+notification of the moderator's decision.  If you would like to cancel
+this posting, please visit the following URL:
+
+    %(confirmurl)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/private.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/private.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/private.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,44 @@
+<html>
+<head>
+    <title>%(realname)s Private Archives Authentication</title>
+<script>function sf(){document.f.adminpw.focus();}</script>
+</head>
+<body bgcolor="#ffffff" onLoad="sf()">
+<FORM METHOD=POST ACTION="%(action)s/">
+%(message)s
+  <TABLE WIDTH="100%%" BORDER="0" CELLSPACING="4" CELLPADDING="5">
+    <TR>
+      <TD COLSPAN="2" WIDTH="100%%" BGCOLOR="#99CCFF" ALIGN="CENTER">
+	<B><FONT COLOR="#000000" SIZE="+1">%(realname)s Private
+	    Archives Authentication</FONT></B>
+      </TD>
+    </TR>
+    <tr>
+        <TD><div ALIGN="Right">Email address:</div></TD>
+        <TD><INPUT TYPE="text" NAME="username" SIZE="30"></TD>
+    </tr>
+    <tr>
+      <TD><div ALIGN="Right">Password:</div></TD>
+      <TD><INPUT TYPE="password" NAME="password" SIZE="30"></TD>
+    </tr>
+    <tr>
+      <td colspan=2 align="middle"><INPUT type="SUBMIT"
+                                          name="submit"
+					  value="Let me in...">
+      </td>
+    </tr>
+  </TABLE>
+      <p><strong><em>Important:</em></strong> From this point on, you
+      must have cookies enabled in your browser, otherwise no
+      administrative changes will take effect.
+
+      <p>Session cookies are used in Mailman's
+      administrative interface so that you don't need to
+      re-authenticate with every administrative operation.  This
+      cookie will expire automatically when you exit your browser, or
+      you can explicitly expire the cookie by hitting the
+      <em>Logout</em> link under <em>Other Administrative
+      Activities</em> (which you'll see once you successfully log in).
+</FORM>
+</body>
+</html>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/probe.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/probe.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/probe.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,28 @@
+This is a probe message.  You can ignore this message.
+
+The %(listname)s mailing list has received a number of bounces from you,
+indicating that there may be a problem delivering messages to %(address)s.
+A bounce sample is attached below.  Please examine this message to make sure
+there are no problems with your email address.  You may want to check with
+your mail administrator for more help.
+
+If you are reading this, you don't need to do anything to remain an enabled
+member of the mailing list.  If this message had bounced, you would not be
+reading it, and your membership would have been disabled.  Normally when you
+are disabled, you receive occasional messages asking you to re-enable your
+subscription.
+
+You can also visit your membership page at
+
+    %(optionsurl)s
+
+On your membership page, you can change various delivery options such
+as your email address and whether you get digests or not.  As a
+reminder, your membership password is
+
+    %(password)s
+
+If you have any questions or problems, you can contact the list owner
+at
+
+    %(owneraddr)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/refuse.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/refuse.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/refuse.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,13 @@
+Your request to the %(listname)s mailing list
+
+    %(request)s
+
+has been rejected by the list moderator.  The moderator gave the
+following reason for rejecting your request:
+
+"%(reason)s"
+
+Any questions or comments should be directed to the list administrator 
+at:
+
+    %(adminaddr)s

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/roster.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/roster.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/roster.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,53 @@
+<!-- $Revision: 2.0 $ -->
+<HTML>
+  <HEAD>
+    <TITLE><MM-List-Name> Subscribers</TITLE>
+  
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+
+    <P>
+    <TABLE WIDTH="100%" COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
+      <TR>
+	<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#99CCFF" ALIGN="CENTER">
+	  <B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name>
+		Subscribers</FONT></B>
+	</TD>
+      </TR>
+      <TR>
+	<TD COLSPAN="2" WIDTH="100%" ALIGN="CENTER">
+	    
+          <P align = "right"> <MM-lang-form-start><MM-displang-box>
+                       <MM-list-langs><MM-form-end></p>        
+
+	  <P>Click on your address to visit your subscription
+	      options page.<br><I>(Parenthesized entries have list delivery 
+	      disabled.)</I></P>
+	</TD>
+      </TR>
+      <TR WIDTH="100%" VALIGN="top">
+	<TD BGCOLOR="#FFF0D0" WIDTH="50%">
+	  <center>
+	    <B><FONT COLOR="#000000"><MM-Num-Reg-Users>
+		  Non-digested Members of <MM-List-Name>:</FONT></B>
+	  </center>
+	</TD>
+	<TD BGCOLOR="#FFF0D0" WIDTH="50%">
+	  <center>
+	    <B><FONT COLOR="#000000"><MM-Num-Digesters> Digested
+		  Members of <MM-List-Name>:</FONT></B> 
+	  </center>
+	</TD>
+      </TR>
+      <TR VALIGN="top">
+	<td>
+	  <P><MM-Regular-Users>
+	</td>
+	<td>
+	  <P><MM-Digest-Users>
+	</td>
+      </tr>
+    </table>
+<MM-Mailman-Footer>
+</BODY>
+</HTML>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/subauth.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/subauth.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/subauth.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,11 @@
+Your authorization is required for a mailing list subscription request
+approval:
+
+    For:  %(username)s
+    List: %(listname)s@%(hostname)s
+
+At your convenience, visit:
+
+    %(admindb_url)s
+	
+to process the request.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribe.html
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribe.html	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribe.html	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,9 @@
+<!-- $Revision: 2.1 $ -->
+<html>
+<head><title><MM-List-Name> Subscription results</title></head>
+<body bgcolor="white">
+<h1><MM-List-Name> Subscription results</h1>
+<MM-Results>
+<MM-Mailman-Footer>
+</body>
+</html>

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribeack.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribeack.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/subscribeack.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,33 @@
+Welcome to the %(real_name)s@%(host_name)s mailing list!
+%(welcome)s
+To post to this list, send your email to:
+
+  %(emailaddr)s
+
+General information about the mailing list is at:
+
+  %(listinfo_url)s
+
+If you ever want to unsubscribe or change your options (eg, switch to or
+from digest mode, change your password, etc.), visit your subscription
+page at:
+
+  %(optionsurl)s
+%(umbrella)s
+You can also make such adjustments via email by sending a message to:
+
+  %(real_name)s-request@%(host_name)s
+
+with the word `help' in the subject or body (don't include the
+quotes), and you will get back a message with instructions.
+
+You must know your password to change your options (including changing
+the password, itself) or to unsubscribe.  It is:
+
+  %(password)s
+
+Normally, Mailman will remind you of your %(host_name)s mailing list
+passwords once every month, although you can disable this if you
+prefer.  This reminder will also include instructions on how to
+unsubscribe or change your account options.  There is also a button on
+your options page that will email your current password to you.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsub.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsub.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsub.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,23 @@
+Mailing list removal confirmation notice for mailing list %(listname)s
+
+We have received a request%(remote)s for the removal of your email
+address, "%(email)s" from the %(listaddr)s mailing list.  To confirm
+that you want to be removed from this mailing list, simply reply to
+this message, keeping the Subject: header intact.  Or visit this web
+page:
+
+    %(confirmurl)s
+
+Or include the following line -- and only the following line -- in a
+message to %(requestaddr)s:
+
+    confirm %(cookie)s
+
+Note that simply sending a `reply' to this message should work from
+most mail readers, since that usually leaves the Subject: line in
+the right form (additional "Re:" text in the Subject: is okay).
+
+If you do not wish to be removed from this list, please simply
+disregard this message.  If you think you are being maliciously
+removed from the list, or have any other questions, send them to
+%(listadmin)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsubauth.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsubauth.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/unsubauth.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,11 @@
+Your authorization is required for a mailing list unsubscription
+request approval:
+
+    By:   %(username)s
+    From: %(listname)s@%(hostname)s
+
+At your convenience, visit:
+
+    %(admindb_url)s
+
+to process the request.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/userpass.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/userpass.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/userpass.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,24 @@
+You, or someone posing as you, has requested a password reminder for
+your membership on the mailing list %(fqdn_lname)s.  You will need
+this password in order to change your membership options (e.g. do you
+want regular delivery or digest delivery), and having this password
+makes it easier for you to unsubscribe from the mailing list.
+
+You are subscribed with the address: %(user)s
+
+Your %(listname)s password is: %(password)s
+
+To make changes to your membership options, log in and visit your
+options web page:
+
+    %(options_url)s
+
+You can also make such changes via email by sending a message to:
+
+    %(requestaddr)s
+
+with the text "help" in the subject or body.  The automatic reply will
+contain more detailed instructions.
+
+Questions or comments?  Please send them to the %(listname)s mailing
+list administrator at %(owneraddr)s.

Added: trunk/lists.openmoko.org/var_lib_mailman_templates_en/verify.txt
===================================================================
--- trunk/lists.openmoko.org/var_lib_mailman_templates_en/verify.txt	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/lists.openmoko.org/var_lib_mailman_templates_en/verify.txt	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,22 @@
+Mailing list subscription confirmation notice for mailing list %(listname)s
+
+We have received a request%(remote)s for subscription of your email
+address, "%(email)s", to the %(listaddr)s mailing list.  To confirm
+that you want to be added to this mailing list, simply reply to this
+message, keeping the Subject: header intact.  Or visit this web page:
+
+    %(confirmurl)s
+
+Or include the following line -- and only the following line -- in a
+message to %(requestaddr)s:
+
+    confirm %(cookie)s
+
+Note that simply sending a `reply' to this message should work from
+most mail readers, since that usually leaves the Subject: line in
+the right form (additional "Re:" text in the Subject: is okay).
+
+If you do not wish to be subscribed to this list, please simply
+disregard this message.  If you think you are being maliciously
+subscribed to the list, or have any other questions, send them to
+%(listadmin)s.

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/atom.xml.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/atom.xml.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/atom.xml.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+
+	<title><TMPL_VAR name></title>
+	<link rel="self" href="<TMPL_VAR feed ESCAPE="HTML">"/>
+	<link href="<TMPL_VAR link ESCAPE="HTML">"/>
+	<id><TMPL_VAR feed ESCAPE="HTML"></id>
+	<updated><TMPL_VAR date_iso></updated>
+	<generator uri="http://www.planetplanet.org/"><TMPL_VAR generator ESCAPE="HTML"></generator>
+
+<TMPL_LOOP Items>
+	<entry<TMPL_IF channel_language> xml:lang="<TMPL_VAR channel_language>"</TMPL_IF>>
+		<title type="html"<TMPL_IF title_language> xml:lang="<TMPL_VAR title_language>"</TMPL_IF>><TMPL_VAR title ESCAPE="HTML"></title>
+		<link href="<TMPL_VAR link ESCAPE="HTML">"/>
+		<id><TMPL_VAR id ESCAPE="HTML"></id>
+		<updated><TMPL_VAR date_iso></updated>
+		<content type="html"<TMPL_IF content_language> xml:lang="<TMPL_VAR content_language>"</TMPL_IF>><TMPL_VAR content ESCAPE="HTML"></content>
+		<author>
+<TMPL_IF author_name>
+			<name><TMPL_VAR author_name ESCAPE="HTML"></name>
+<TMPL_IF author_email>
+			<email><TMPL_VAR author_email ESCAPE="HTML"></email>
+</TMPL_IF author_email>
+<TMPL_ELSE>
+<TMPL_IF channel_author_name>
+			<name><TMPL_VAR channel_author_name ESCAPE="HTML"></name>
+<TMPL_IF channel_author_email>
+			<email><TMPL_VAR channel_author_email ESCAPE="HTML"></email>
+</TMPL_IF channel_author_email>
+<TMPL_ELSE>
+			<name><TMPL_VAR channel_name ESCAPE="HTML"></name>
+</TMPL_IF>
+</TMPL_IF>
+			<uri><TMPL_VAR channel_link ESCAPE="HTML"></uri>
+		</author>
+		<source>
+<TMPL_IF channel_title>
+			<title type="html"><TMPL_VAR channel_title ESCAPE="HTML"></title>
+<TMPL_ELSE>
+			<title type="html"><TMPL_VAR channel_name ESCAPE="HTML"></title>
+</TMPL_IF>
+<TMPL_IF channel_subtitle>
+			<subtitle type="html"><TMPL_VAR channel_subtitle ESCAPE="HTML"></subtitle>
+</TMPL_IF>
+			<link rel="self" href="<TMPL_VAR channel_url ESCAPE="HTML">"/>
+<TMPL_IF channel_id>
+			<id><TMPL_VAR channel_id ESCAPE="HTML"></id>
+<TMPL_ELSE>
+			<id><TMPL_VAR channel_url ESCAPE="HTML"></id>
+</TMPL_IF>
+<TMPL_IF channel_updated_iso>
+			<updated><TMPL_VAR channel_updated_iso></updated>
+</TMPL_IF>
+<TMPL_IF channel_rights>
+			<rights type="html"><TMPL_VAR channel_rights ESCAPE="HTML"></rights>
+</TMPL_IF>
+		</source>
+	</entry>
+
+</TMPL_LOOP>
+</feed>

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/config.ini
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/config.ini	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/config.ini	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,95 @@
+# Planet configuration file
+
+# Every planet needs a [Planet] section
+[Planet]
+# name: Your planet's name
+# link: Link to the main page
+# owner_name: Your name
+# owner_email: Your e-mail address
+name = Planet OpenMoko
+link = http://planet.openmoko.org/
+owner_name = Sean Moss-Pultz
+owner_email = coreteam at openmoko.org
+
+# cache_directory: Where cached feeds are stored
+# new_feed_items: Number of items to take from new feeds
+# log_level: One of DEBUG, INFO, WARNING, ERROR or CRITICAL
+cache_directory = cache
+new_feed_items = 10
+log_level = DEBUG
+
+# template_files: Space-separated list of output template files
+template_files = index.html.tmpl atom.xml.tmpl rss20.xml.tmpl rss10.xml.tmpl opml.xml.tmpl foafroll.xml.tmpl index2.html.tmpl
+
+# The following provide defaults for each template:
+# output_dir: Directory to place output files
+# items_per_page: How many items to put on each page
+# days_per_page: How many complete days of posts to put on each page
+#                This is the absolute, hard limit (over the item limit)
+# date_format: strftime format for the default 'date' template variable
+# new_date_format: strftime format for the 'new_date' template variable
+# encoding: output encoding for the file, Python 2.3+ users can use the
+#           special "xml" value to output ASCII with XML character references
+# locale: locale to use for (e.g.) strings in dates, default is taken from your
+#         system. You can specify more locales separated by ':', planet will
+#         use the first available one
+output_dir = output
+items_per_page = 60
+days_per_page = 0
+date_format = %B %d, %Y %I:%M %p
+new_date_format = %B %d, %Y
+encoding = utf-8
+# locale = C
+
+
+# To define a different value for a particular template you may create
+# a section with the same name as the template file's filename (as given
+# in template_files).
+#
+#     [examples/rss10.xml.tmpl]
+#     items_per_page = 30
+#     encoding = xml
+
+
+# Any other section defines a feed to subscribe to.  The section title
+# (in the []s) is the URI of the feed itself.  A section can also be
+# have any of the following options:
+# 
+# name: Name of the feed (defaults to the title found in the feed)
+#
+# Additionally any other option placed here will be available in
+# the template (prefixed with channel_ for the Items loop).  You can
+# define defaults for these in a [DEFAULT] section, for example
+# Planet Debian uses the following to define faces:
+#
+#     [DEFAULT]
+#     facewidth = 64
+#     faceheight = 64
+#
+#     [http://www.blog.com/rss]
+#     face = foo.png
+#     faceheight = 32
+#
+# The facewidth of the defined blog defaults to 64.
+
+[http://gnumonks.org/~laforge/weblog/linux/openmoko/index.rss]
+name = Harald "LaF0rge" Welte
+
+[http://www.vanille-media.de/site/index.php/category/opensource/openmoko/feed]
+name = Michael "mickeyl" Lauer
+
+[http://www.moss-pultz.com/threads/rss/]
+name = Sean Moss-Pultz
+
+[http://www.datenfreihafen.org/~stefan/weblog/archives/cat_7/index.xml]
+name = Stefan Schmidt
+
+[http://dominion.kabel.utwente.nl/koen/cms/taxonomy/term/4/0/feed]
+name = Koen Kooi
+
+[http://hrw.one.pl/tag/openmoko/feed/]
+name = Marcin Juszkiewicz
+
+[http://www.rwhitby.net/blog/category/openmoko/feed]
+name = Rod Whitby
+

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/foafroll.xml.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/foafroll.xml.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/foafroll.xml.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<rdf:RDF
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+	xmlns:foaf="http://xmlns.com/foaf/0.1/"
+	xmlns:rss="http://purl.org/rss/1.0/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+<foaf:Group>
+	<foaf:name><TMPL_VAR name ESCAPE="HTML"></foaf:name>
+	<foaf:homepage><TMPL_VAR link ESCAPE="HTML"></foaf:homepage>
+	<rdfs:seeAlso rdf:resource="<TMPL_VAR url ESCAPE="HTML">" />
+
+<TMPL_LOOP Channels>
+	<foaf:member>
+		<foaf:Agent>
+			<foaf:name><TMPL_VAR name ESCAPE="HTML"></foaf:name>
+			<foaf:weblog>
+				<foaf:Document rdf:about="<TMPL_VAR link ESCAPE="HTML">">
+					<dc:title><TMPL_VAR title_plain ESCAPE="HTML"></dc:title>
+					<rdfs:seeAlso>
+						<rss:channel rdf:about="<TMPL_VAR url ESCAPE="HTML">" />
+					</rdfs:seeAlso>
+				</foaf:Document>
+			</foaf:weblog>
+		</foaf:Agent>
+	</foaf:member>
+</TMPL_LOOP>
+
+</foaf:Group>
+</rdf:RDF>

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/index.html.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/index.html.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/index.html.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+	<title><TMPL_VAR name></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<meta name="generator" content="<TMPL_VAR generator ESCAPE="HTML">">
+	<link href="style.css" rel="stylesheet" type="text/css" />
+<!--	<link href="./_sifr/sIFR-screen.css" rel="stylesheet" type="text/css" media="screen" />
+	<link href="./_sifr/sIFR-print.css" rel="stylesheet" type="text/css" media="print" />
+	
+	<script src="_sifr/sifr.js" type="text/javascript"></script> -->
+</head>
+
+<body>
+<div id="main_wrapper">
+	<div id="left_column">
+		<a href="#" id="planet_logo"><img src="images/planet_logo.gif" alt="planet openmoko" /></a>
+		
+		<div class="sidebox"><div class="sidebox_inner"><div class="sidebox_inner2">
+			<h3>Subscriptions</h3>
+			<ul class="feed_list">
+			<TMPL_LOOP Channels>
+				<li><a href="<TMPL_VAR link ESCAPE="HTML">" title="<TMPL_VAR title ESCAPE="HTML">"  class="feed_author"><TMPL_VAR name></a>, <a href="<TMPL_VAR url ESCAPE="HTML">"><img src="images/rss_feed_list.gif" alt="rss" /></a></li>
+			</TMPL_LOOP>
+			</ul>
+			<br />
+			<h3>Feeds</h3>
+			<ul class="feed_list">
+			<li><a href="rss10.xml" class="feed"><img src="images/rss10.png" width="80" height="15" alt="RSS 1.0 Feed"></a></li>
+			<li><a href="rss20.xml" class="feed"><img src="images/rss20.png" width="80" height="15" alt="RSS 2.0 Feed"></a></li>
+			<li><a href="foafroll.xml" class="feed"><img src="images/foaf.png" width="80" height="15" alt="FOAF Subscriptions"></a></li>
+			<li><a href="opml.xml" class="feed"><img src="images/opml.png" width="80" height="15" alt="OPML Subscriptions"></a></li>
+			</ul>
+			</p>
+
+		</div></div></div>
+	</div>
+	
+	<div id="right_column">
+	
+	<TMPL_LOOP Items>
+		<TMPL_IF new_date>
+		<div class="date_container">
+			<h2 class="sifr_headline"><TMPL_VAR new_date></h2>
+		</div>
+		</TMPL_IF>
+		
+		<div class="post">
+			<TMPL_IF title>
+			<h3 class="sifr_headline"><a href="<TMPL_VAR link ESCAPE="HTML">" target="_blank"><TMPL_VAR title></a></h3>
+			</TMPL_IF>
+			<h4 class="author"><a href="<TMPL_VAR link ESCAPE="HTML">">By <TMPL_VAR channel_name></a></h4>
+					
+			<TMPL_VAR content>
+		</div>
+		
+		</TMPL_LOOP>
+	</div>
+	
+	<script src="_sifr/init_sifr.js" type="text/javascript"></script>
+	
+	<div id="footer">
+		<p>Site design Copyright &copy; 2006 <a href="http://www.openmoko.org/">Openmoko, Inc</a>. All rights reserved.</p>
+		<p><a href="http://www.planetplanet.org/">Powered by Planet!</a></p>
+		<p class="last_updated">Last updated: <TMPL_VAR date></p>
+	</div>
+</div>
+</body>
+
+</html>

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/opml.xml.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/opml.xml.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/opml.xml.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<opml version="1.1">
+	<head>
+		<title><TMPL_VAR name ESCAPE="HTML"></title>
+		<dateModified><TMPL_VAR date_822></dateModified>
+		<ownerName><TMPL_VAR owner_name></ownerName>
+		<ownerEmail><TMPL_VAR owner_email></ownerEmail>
+	</head>
+	
+	<body>
+		<TMPL_LOOP Channels>
+		<outline type="rss" text="<TMPL_VAR name ESCAPE="HTML">" xmlUrl="<TMPL_VAR url ESCAPE="HTML">" title="<TMPL_IF title><TMPL_VAR title ESCAPE="HTML"></TMPL_IF><TMPL_UNLESS title><TMPL_VAR name ESCAPE="HTML"></TMPL_UNLESS>"<TMPL_IF channel_link> htmlUrl="<TMPL_VAR channel_link ESCAPE="HTML">"</TMPL_IF> />
+		</TMPL_LOOP>
+	</body>
+</opml>

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss10.xml.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss10.xml.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss10.xml.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<rdf:RDF
+	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:foaf="http://xmlns.com/foaf/0.1/"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns="http://purl.org/rss/1.0/"
+>
+<channel rdf:about="<TMPL_VAR link ESCAPE="HTML">">
+	<title><TMPL_VAR name ESCAPE="HTML"></title>
+	<link><TMPL_VAR link ESCAPE="HTML"></link>
+	<description><TMPL_VAR name ESCAPE="HTML"> - <TMPL_VAR link ESCAPE="HTML"></description>
+
+	<items>
+		<rdf:Seq>
+<TMPL_LOOP Items>
+			<rdf:li rdf:resource="<TMPL_VAR id ESCAPE="HTML">" />
+</TMPL_LOOP>
+		</rdf:Seq>
+	</items>
+</channel>
+
+<TMPL_LOOP Items>
+<item rdf:about="<TMPL_VAR id ESCAPE="HTML">">
+	<title><TMPL_VAR channel_name ESCAPE="HTML"><TMPL_IF title>: <TMPL_VAR title_plain ESCAPE="HTML"></TMPL_IF></title>
+	<link><TMPL_VAR link ESCAPE="HTML"></link>
+	<TMPL_IF content>
+	<content:encoded><TMPL_VAR content ESCAPE="HTML"></content:encoded>
+	</TMPL_IF>
+	<dc:date><TMPL_VAR date_iso></dc:date>
+	<TMPL_IF author_name>
+	<dc:creator><TMPL_VAR author_name></dc:creator>
+	</TMPL_IF>
+</item>
+</TMPL_LOOP>
+
+</rdf:RDF>

Added: trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss20.xml.tmpl
===================================================================
--- trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss20.xml.tmpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/home_planet_planet_openmoko.org/rss20.xml.tmpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<rss version="2.0">
+
+<channel>
+	<title><TMPL_VAR name></title>
+	<link><TMPL_VAR link ESCAPE="HTML"></link>
+	<language>en</language>
+	<description><TMPL_VAR name ESCAPE="HTML"> - <TMPL_VAR link ESCAPE="HTML"></description>
+
+<TMPL_LOOP Items>
+<item>
+	<title><TMPL_VAR channel_name ESCAPE="HTML"><TMPL_IF title>: <TMPL_VAR title_plain ESCAPE="HTML"></TMPL_IF></title>
+	<guid><TMPL_VAR id ESCAPE="HTML"></guid>
+	<link><TMPL_VAR link ESCAPE="HTML"></link>
+	<TMPL_IF content>
+	<description><TMPL_VAR content ESCAPE="HTML"></description>
+	</TMPL_IF>
+	<pubDate><TMPL_VAR date_822></pubDate>
+	<TMPL_IF author_email>
+	<TMPL_IF author_name>
+	<author><TMPL_VAR author_email> (<TMPL_VAR author_name>)</author>
+	<TMPL_ELSE>
+	<author><TMPL_VAR author_email></author>
+	</TMPL_IF>
+	</TMPL_IF>
+</item>
+</TMPL_LOOP>
+
+</channel>
+</rss>

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/init_sifr.js
===================================================================
--- trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/init_sifr.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/init_sifr.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,5 @@
+if(typeof sIFR == "function"){
+	sIFR.replaceElement("h2.sifr_headline", named({sFlashSrc: "./_sifr/sansasoft_semibold.swf", sColor: "#333333"}));
+//	sIFR.replaceElement("h3.sifr_headline", named({sFlashSrc: "./_sifr/sansasoft_semibold.swf", sColor: "#ff6600",sHoverColor: "#333333"}));
+	sIFR.debug();
+};


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/init_sifr.js
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-print.css
===================================================================
--- trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-print.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-print.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,17 @@
+/* This is the print stylesheet to hide the Flash headlines from the browser... regular browser text headlines will now print as normal */
+
+.sIFR-flash, .sIFR-flash object, .sIFR-flash embed {
+	display: none !important;
+	height: 0;
+	width: 0;
+	position: absolute;
+	overflow: hidden;
+}
+
+span.sIFR-alternate {
+	visibility: visible !important;
+	display: block !important;
+	position: static !important;
+	left: auto !important;
+	top: auto !important;
+}
\ No newline at end of file


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-print.css
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-screen.css
===================================================================
--- trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-screen.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-screen.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,72 @@
+/* These are standard sIFR styles... do not modify */
+
+.sIFR-flash {
+	visibility: visible !important;
+	margin: 0;
+}
+
+.sIFR-replaced {
+	visibility: visible !important;
+}
+
+span.sIFR-alternate {
+	position: absolute;
+	left: 0;
+	top: 0;
+	width: 0;
+	height: 0;
+	display: block;
+	overflow: hidden;
+}
+
+/* Hide Adblock Object tab: the text should show up just fine, not poorly with a tab laid over it. */
+.sIFR-flash + div[adblocktab=true] {
+  display: none !important;
+}
+
+/* These "decoy" styles are used to hide the browser text before it is replaced... the negative-letter spacing in this case is used to make the browser text metrics match up with the sIFR text metrics since the sIFR text in this example is so much narrower... your own settings may vary... any weird sizing issues you may run into are usually fixed by tweaking these decoy styles */
+
+/*.sIFR-hasFlash h1 {
+	visibility: hidden;
+}
+
+.sIFR-hasFlash h2 {
+	visibility: hidden;
+	letter-spacing: -9px;
+	font-size: 55px;
+}
+
+.sIFR-hasFlash h3 {
+	visibility: hidden;
+	letter-spacing: -6px;
+}
+
+.sIFR-hasFlash h4 {
+	visibility: hidden;
+	letter-spacing: -5px;
+	font-size: 21px;
+}
+
+.sIFR-hasFlash h5#pullquote {
+	letter-spacing: -4px;
+	visibility: hidden;
+	font-size: 24px;
+}*/
+
+/* custom styles */
+
+h2.sifr_headline {
+	visibility: hidden;
+	font-size: 15px !important;
+	margin: 0px !important;
+	padding: 3px 0px 3px 0px!important;
+	height: auto !important;
+}
+
+/*h3.sifr_headline {
+	visibility: hidden;
+	font-size: 13px !important;
+	margin: 0px !important;
+	padding: 2px 0px 2px 0px!important;
+	height: auto !important;
+}*/
\ No newline at end of file


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sIFR-screen.css
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_normal.swf
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_normal.swf
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_semibold.swf
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sansasoft_semibold.swf
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sifr.js
===================================================================
--- trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sifr.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sifr.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,11 @@
+/*	sIFR 2.0.2
+	Copyright 2004 - 2006 Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben
+
+	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
+*/
+
+var hasFlash=function(){var a=6;if(navigator.appVersion.indexOf("MSIE")!=-1&&navigator.appVersion.indexOf("Windows")>-1){document.write('<script language="VBScript"\> \non error resume next \nhasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & '+a+'))) \n</script\> \n');if(window.hasFlash!=null)return window.hasFlash}if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){var b=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description;return parseInt(b.charAt(b.indexOf(".")-1))>=a}return false}();String.prototype.normalize=function(){return this.replace(/\s+/g," ")};if(Array.prototype.push==null){Array.prototype.push=function(){var i=0,a=this.length,b=arguments.length;while(i<b){this[a++]=arguments[i++]}return this.length}}if(!Function.prototype.apply){Function.prototype.apply=function(a,b){var c=[];var d,e;if(!a)a=window;if(!b)b=[];for(var i=0;i<b.length;i++){c[i]="b["+i+"]"}e="a.__applyTemp__("+c.join(",")+");";a.__applyTemp__=this;d=eval(e);a.__applyTemp__=null;return d}}function named(a){return new named.Arguments(a)}named.Arguments=function(a){this.oArgs=a};named.Arguments.prototype.constructor=named.Arguments;named.extract=function(a,b){var c,d;var i=a.length;while(i--){d=a[i];if(d!=null&&d.constructor!=null&&d.constructor==named.Arguments){c=a[i].oArgs;break}}if(c==null)return;for(e in c)if(b[e]!=null)b[e](c[e]);return};var parseSelector=function(){var a=/^([^#.>`]*)(#|\.|\>|\`)(.+)$/;function r(s,t){var u=s.split(/\s*\,\s*/);var v=[];for(var i=0;i<u.length;i++)v=v.concat(b(u[i],t));return v}function b(c,d,e){c=c.normalize().replace(" ","`");var f=c.match(a);var g,h,i,j,k,n;var l=[];if(f==null)f=[c,c];if(f[1]=="")f[1]="*";if(e==null)e="`";if(d==null)d=document;switch(f[2]){case "#":k=f[3].match(a);if(k==null)k=[null,f[3]];g=document.getElementById(k[1]);if(g==null||(f[1]!="*"&&!o(g,f[1])))return l;if(k.length==2){l.push(g);return l}return b(k[3],g,k[2]);case ".":if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;k=f[3].match(a);if(k!=null){if(g.className==null||g.className.match("(\\s|^)"+k[1]+"(\\s|$)")==null)continue;j=b(k[3],g,k[2]);l=l.concat(j)}else if(g.className!=null&&g.className.match("(\\s|^)"+f[3]+"(\\s|$)")!=null)l.push(g)}return l;case ">":if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;if(!o(g,f[1]))continue;j=b(f[3],g,">");l=l.concat(j)}return l;case "`":h=m(d,f[1]);for(i=0,n=h.length;i<n;i++){g=h[i];j=b(f[3],g,"`");l=l.concat(j)}return l;default:if(e!=">")h=m(d,f[1]);else h=d.childNodes;for(i=0,n=h.length;i<n;i++){g=h[i];if(g.nodeType!=1)continue;if(!o(g,f[1]))continue;l.push(g)}return l}}function m(d,o){if(o=="*"&&d.all!=null)return d.all;return d.getElementsByTagName(o)}function o(p,q){return q=="*"?true:p.nodeName.toLowerCase().replace("html:", "")==q.toLowerCase()}return r}();var sIFR=function(){var a="http://www.w3.org/1999/xhtml";var b=false;var c=false;var d;var ah=[];var al=document;var ak=al.documentElement;var am=window;var au=al.addEventListener;var av=am.addEventListener;var f=function(){var g=navigator.userAgent.toLowerCase();var f={a:g.indexOf("applewebkit")>-1,b:g.indexOf("safari")>-1,c:navigator.product!=null&&navigator.product.toLowerCase().indexOf("konqueror")>-1,d:g.indexOf("opera")>-1,e:al.contentType!=null&&al.contentType.indexOf("xml")>-1,f:true,g:true,h:null,i:null,j:null,k:null};f.l=f.a||f.c;f.m=!f.a&&navigator.product!=null&&navigator.product.toLowerCase()=="gecko";if(f.m&&g.match(/.*gecko\/(\d{8}).*/))f.j=new Number(g.match(/.*gecko\/(\d{8}).*/)[1]);f.n=g.indexOf("msie")>-1&&!f.d&&!f.l&&!f.m;f.o=f.n&&g.match(/.*mac.*/)!=null;if(f.d&&g.match(/.*opera(\s|\/)(\d+\.\d+)/))f.i=new Number(g.match(/.*opera(\s|\/)(\d+\.\d+)/)[2]);if(f.n||(f.d&&f.i<7.6))f.g=false;if(f.a&&g.match(/.*applewebkit\/(\d+).*/))f.k=new Number(g.match(/.*applewebkit\/(\d+).*/)[1]);if(am.hasFlash&&(!f.n||f.o)){var aj=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description;f.h=parseInt(aj.charAt(aj.indexOf(".")-1))}if(g.match(/.*(windows|mac).*/)==null||f.o||f.c||(f.d&&(g.match(/.*mac.*/)!=null||f.i<7.6))||(f.b&&f.h<7)||(!f.b&&f.a&&f.k<312)||(f.m&&f.j<20020523))f.f=false;if(!f.o&&!f.m&&al.createElementNS)try{al.createElementNS(a,"i").innerHTML=""}catch(e){f.e=true}f.p=f.c||(f.a&&f.k<312);return f}();function at(){return{bIsWebKit:f.a,bIsSafari:f.b,bIsKonq:f.c,bIsOpera:f.d,bIsXML:f.e,bHasTransparencySupport:f.f,bUseDOM:f.g,nFlashVersion:f.h,nOperaVersion:f.i,nGeckoBuildDate:f.j,nWebKitVersion:f.k,bIsKHTML:f.l,bIsGecko:f.m,bIsIE:f.n,bIsIEMac:f.o,bUseInnerHTMLHack:f.p}}if(am.hasFlash==false||!al.getElementsByTagName||!al.getElementById||(f.e&&(f.p||f.n)))return{UA:at()};function af(e){if((!k.bAutoInit&&(am.event||e)!=null)||!l(e))return;b=true;for(var i=0,h=ah.length;i<h;i++)j.apply(null,ah[i]);ah=[]}var k=af;function l(e){if(c==false||k.bIsDisabled==true||((f.e&&f.m||f.l)&&e==null&&b==false)||(al.body==null||al.getElementsByTagName("body").length==0))return false;return true}function m(n){if(f.n)return n.replace(new RegExp("%\d{0}","g"),"%25");return n.replace(new RegExp("%(?!\d)","g"),"%25")}function as(p,q){return q=="*"?true:p.nodeName.toLowerCase().replace("html:", "")==q.toLowerCase()}function o(p,q,r,s,t){var u="";var v=p.firstChild;var w,x,y,z;if(s==null)s=0;if(t==null)t="";while(v){if(v.nodeType==3){z=v.nodeValue.replace("<","&lt;");switch(r){case "lower":u+=z.toLowerCase();break;case "upper":u+=z.toUpperCase();break;default:u+=z}}else if(v.nodeType==1){if(as(v,"a")&&!v.getAttribute("href")==false){if(v.getAttribute("target"))t+="&sifr_url_"+s+"_target="+v.getAttribute("target");t+="&sifr_url_"+s+"="+m(v.getAttribute("href")).replace(/&/g,"%26");u+='<a href="asfunction:_root.launchURL,'+s+'">';s++}else if(as(v,"br"))u+="<br/>";if(v.hasChildNodes()){y=o(v,null,r,s,t);u+=y.u;s=y.s;t=y.t}if(as(v,"a"))u+="</a>"}w=v;v=v.nextSibling;if(q!=null){x=w.parentNode.removeChild(w);q.appendChild(x)}}return{"u":u,"s":s,"t":t}}function A(B){if(al.createElementNS&&f.g)return al.createElementNS(a,B);return al.createElement(B)}function C(D,E,z){var p=A("param");p.setAttribute("name",E);p.setAttribute("value",z);D.appendChild(p)}function F(p,G){var H=p.className;if(H==null)H=G;else H=H.normalize()+(H==""?"":" ")+G;p.className=H}function aq(ar){var a=ak;if(k.bHideBrowserText==false)a=al.getElementsByTagName("body")[0];if((k.bHideBrowserText==false||ar)&&a)if(a.className==null||a.className.match(/\bsIFR\-hasFlash\b/)==null)F(a, "sIFR-hasFlash")}function j(I,J,K,L,M,N,O,P,Q,R,S,r,T){if(!l())return ah.push(arguments);aq();named.extract(arguments,{sSelector:function(ap){I=ap},sFlashSrc:function(ap){J=ap},sColor:function(ap){K=ap},sLinkColor:function(ap){L=ap},sHoverColor:function(ap){M=ap},sBgColor:function(ap){N=ap},nPaddingTop:function(ap){O=ap},nPaddingRight:function(ap){P=ap},nPaddingBottom:function(ap){Q=ap},nPaddingLeft:function(ap){R=ap},sFlashVars:function(ap){S=ap},sCase:function(ap){r=ap},sWmode:function(ap){T=ap}});var U=parseSelector(I);if(U.length==0)return false;if(S!=null)S="&"+S.normalize();else S="";if(K!=null)S+="&textcolor="+K;if(M!=null)S+="&hovercolor="+M;if(M!=null||L!=null)S+="&linkcolor="+(L||K);if(O==null)O=0;if(P==null)P=0;if(Q==null)Q=0;if(R==null)R=0;if(N==null)N="#FFFFFF";if(T=="transparent")if(!f.f)T="opaque";else N="transparent";if(T==null)T="";var p,V,W,X,Y,Z,aa,ab,ac;var ad=null;for(var i=0,h=U.length;i<h;i++){p=U[i];if(p.className!=null&&p.className.match(/\bsIFR\-replaced\b/)!=null)continue;V=p.offsetWidth-R-P;W=p.offsetHeight-O-Q;aa=A("span");aa.className="sIFR-alternate";ac=o(p,aa,r);Z="txt="+m(ac.u).replace(/\+/g,"%2B").replace(/&/g,"%26").replace(/\"/g, "%22").normalize() + S + "&w=" + V + "&h=" + W + ac.t;F(p,"sIFR-replaced");if(ad==null||!f.g){if(!f.g){if(!f.n)p.innerHTML=['<embed class="sIFR-flash" type="application/x-shockwave-flash" src="',J,'" quality="best" wmode="',T,'" bgcolor="',N,'" flashvars="',Z,'" width="',V,'" height="',W,'" sifr="true"></embed>'].join("");else p.innerHTML=['<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" sifr="true" width="',V,'" height="',W,'" class="sIFR-flash"><param name="movie" value="',J,"?",Z,'"></param><param name="quality" value="best"></param><param name="wmode" value="',T,'"></param><param name="bgcolor" value="',N,'"></param> </object>'].join('')}else{if(f.d){ab=A("object");ab.setAttribute("data",J);C(ab,"quality","best");C(ab,"wmode",T);C(ab,"bgcolor",N)}else{ab=A("embed");ab.setAttribute("src",J);ab.setAttribute("quality","best");ab.setAttribute("flashvars",Z);ab.setAttribute("wmode",T);ab.setAttribute("bgcolor",N)}ab.setAttribute("sifr","true");ab.setAttribute("type","application/x-shockwave-flash");ab.className="sIFR-flash";if(!f.l||!f.e)ad=ab.cloneNode(true)}}else ab=ad.cloneNode(true);if(f.g){if(f.d)C(ab,"flashvars",Z);else ab.setAttribute("flashvars",Z);ab.setAttribute("width",V);ab.setAttribute("height",W);ab.style.width=V+"px";ab.style.height=W+"px";p.appendChild(ab)}p.appendChild(aa);if(f.p)p.innerHTML+=""}if(f.n&&k.bFixFragIdBug)setTimeout(function(){al.title=d},0)}function ai(){d=al.title}function ae(){if(k.bIsDisabled==true)return;c=true;if(k.bHideBrowserText)aq(true);if(am.attachEvent)am.attachEvent("onload",af);else if(!f.c&&(al.addEventListener||am.addEventListener)){if(f.a&&f.k>=132&&am.addEventListener)am.addEventListener("load",function(){setTimeout("sIFR({})",1)},false);else{if(al.addEventListener)al.addEventListener("load",af,false);if(am.addEventListener)am.addEventListener("load",af,false)}}else if(typeof am.onload=="function"){var ag=am.onload;am.onload=function(){ag();af()}}else am.onload=af;if(!f.n||am.location.hash=="")k.bFixFragIdBug=false;else ai()}k.UA=at();k.bAutoInit=true;k.bFixFragIdBug=true;k.replaceElement=j;k.updateDocumentTitle=ai;k.appendToClassName=F;k.setup=ae;k.debug=function(){aq(true)};k.debug.replaceNow=function(){ae();k()};k.bIsDisabled=false;k.bHideBrowserText=true;return k}();
+
+if(typeof sIFR == "function" && !sIFR.UA.bIsIEMac){
+	sIFR.setup();
+};
\ No newline at end of file


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/_sifr/sifr.js
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bottom.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bottom.gif
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet_hover.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_bullet_hover.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_tile.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_tile.gif
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_top.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/feed_list_top.gif
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/foaf.png
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/foaf.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/footer_bg.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/footer_bg.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/opml.png
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/opml.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/planet_logo.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/planet_logo.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss10.png
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss20.png
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss20.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss_feed_list.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/rss_feed_list.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/top_link.gif
===================================================================
(Binary files differ)


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/images/top_link.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/planet.openmoko.org/space_www_planet.openmoko.org/style.css
===================================================================
--- trunk/planet.openmoko.org/space_www_planet.openmoko.org/style.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/planet.openmoko.org/space_www_planet.openmoko.org/style.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,207 @@
+body,html {
+	margin: 0px;
+	padding: 0px;
+	font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Tahoma, Arial, Helvetica, sans-serif;
+	font-size: 0.9em;
+	 background:#FFFFFF;
+}
+
+* html body {
+	font-size: 0.87em;
+}
+
+img {
+	border: none;
+}
+
+a {
+	color: #333;
+}
+
+a:hover {
+	color: #ff6600;
+}
+
+#main_wrapper {
+	margin: 0px auto;
+	width: 950px;
+	padding: 35px 0px 0px 0px;
+}
+
+#footer {
+	border-top: 1px solid #cccccc;
+	background:#fafafa url(images/footer_bg.gif) no-repeat bottom left;
+	text-align: center;
+	color: #666666;
+	font-size: smaller;
+	padding: 20px 0px;
+	margin-bottom: 50px;
+}
+
+#footer a {
+	color: #666666;
+}
+
+#footer .last_updated {
+	color: #999999;
+}
+
+#footer p {
+	margin: 0px;
+	padding: 10px 0px;
+}
+
+#left_column {
+	width: 269px;
+	padding-left: 13px;
+	padding-bottom: 20px;
+	float: left;
+	padding-top: 4px;
+}
+
+#planet_logo {
+	margin-bottom: 80px;
+	display:block;
+}
+
+.feed_list {
+	margin: 0px;
+	padding: 0px;
+	list-style: none;
+	width: 205px;
+}
+
+.sidebox {
+	width: 239px;
+	background:#FFF url(images/feed_list_tile.gif) repeat-y top left;
+}
+
+.sidebox_inner {
+	background:url(images/feed_list_top.gif) no-repeat top left;
+}
+
+.sidebox_inner2 {
+	background:url(images/feed_list_bottom.gif) no-repeat bottom left;
+	padding: 15px 17px 11px 17px;
+}
+
+.sidebox h3 {
+	margin: 0px;
+	padding: 0px;
+	font-weight: bold;
+	font-size: 1em;
+	margin-bottom: 10px;
+}
+
+.feed_list .feed {
+	text-decoration: none;
+	white-space: nowrap;
+	background: url(images/feed_list_bullet.gif) no-repeat 0px 5px;
+	padding: 0px 0px 0px 10px;
+}
+
+.feed_list .feed_author {
+	text-decoration: none;
+	white-space: nowrap;
+	background: url(images/feed_list_bullet.gif) no-repeat 0px 5px;
+	padding: 0px 0px 0px 10px;
+}
+
+.feed_list li {
+	white-space: nowrap;
+	margin-bottom: 4px;
+}
+
+.feed_list .feed_author:hover {
+	background: url(images/feed_list_bullet_hover.gif) no-repeat 0px 5px;
+}
+
+#right_column {
+	margin-left: 292px;
+	width: 650px;
+	padding-bottom: 20px;
+}
+
+.post {
+	color: #333333;
+	line-height: 140%;
+	margin: 0px 0px 40px 45px;
+}
+
+.post blockquote {
+	color: #676767;
+	margin: 17px 0px 17px 60px;
+}
+
+.post p{
+	margin: 17px 0px;
+}
+
+.post a {
+	color: #ff6600;
+	text-decoration: none;
+}
+
+.post a:hover {
+	text-decoration: underline;
+}
+
+.post .author {
+	margin-top: 7px !important;
+	margin-bottom: 24px !important;
+	font-size: 0.9em;
+}
+
+.post .author a {
+	color: #999;
+	font-weight: bold;
+	text-decoration: none;
+}
+
+.post .author a:hover {
+	text-decoration: underline;
+}
+
+* html .post .author{
+	font-size: 0.88em !important;
+}
+
+.date_container {
+	border-bottom: 1px solid #cccccc;
+	padding-bottom: 1px;
+	margin-bottom: 10px;
+}
+
+.post ul li {
+	margin-bottom: 7px;
+}
+
+.post ol li {
+	margin-bottom: 7px;
+}
+
+.top_link {
+	height: 11px;
+	display:block;
+	background:url(images/top_link.gif) no-repeat top left;
+}
+
+.top_link:hover {
+	background-position: bottom left;
+}
+
+.top_link span {
+	display: none;
+}
+
+h2.sifr_headline {
+	font-size: 18px;
+	margin: 0px;
+	padding: 3px 0px 3px 0px;
+}
+
+h3.sifr_headline {
+	font-size: 15px;
+	margin: 0px;
+	padding: 2px 0px 2px 0px;
+}


Property changes on: trunk/planet.openmoko.org/space_www_planet.openmoko.org/style.css
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// Chick.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once('includes/SkinTemplate.php');
+require_once('MonoBook.php');
+?>
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/** */
+require_once('MonoBook.php');
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinChick extends SkinTemplate {
+	function initPage( &$out ) {
+		SkinTemplate::initPage( $out );
+		$this->skinname  = 'chick';
+		$this->stylename = 'chick';
+		$this->template  = 'MonoBookTemplate';
+	}
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,318 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinCologneBlue extends Skin {
+
+	function getStylesheet() {
+		return "common/cologneblue.css?1";
+	}
+	function getSkinName() {
+		return "cologneblue";
+	}
+
+	function doBeforeContent() {
+		global $wgOut, $wgTitle;
+
+		$s = "";
+		$qb = $this->qbSetting();
+		$mainPageObj = Title::newMainPage();
+
+		$s .= "\n<div id='content'>\n<div id='topbar'>" .
+		  "<table width='100%' border='0' cellspacing='0' cellpadding='8'><tr>";
+
+		$s .= "<td class='top' align='left' valign='middle' nowrap='nowrap'>";
+		$s .= "<a href=\"" . $mainPageObj->escapeLocalURL() . "\">";
+		$s .= "<span id='sitetitle'>" . wfMsg( "sitetitle" ) . "</span></a>";
+
+		$s .= "</td><td class='top' align='right' valign='bottom' width='100%'>";
+		$s .= $this->sysLinks();
+		$s .= "</td></tr><tr><td valign='top'>";
+
+		$s .= "<font size='-1'><span id='sitesub'>";
+		$s .= htmlspecialchars( wfMsg( "sitesubtitle" ) ) . "</span></font>";
+		$s .= "</td><td align='right'>" ;
+
+		$s .= "<font size='-1'><span id='langlinks'>" ;
+		$s .= str_replace ( "<br />" , "" , $this->otherLanguages() );
+		$cat = $this->getCategoryLinks();
+		if( $cat ) $s .= "<br />$cat\n";
+		$s .= "<br />" . $this->pageTitleLinks();
+		$s .= "</span></font>";
+
+		$s .= "</td></tr></table>\n";
+
+		$s .= "\n</div>\n<div id='article'>";
+
+		$notice = wfGetSiteNotice();
+		if( $notice ) {
+			$s .= "\n<div id='siteNotice'>$notice</div>\n";
+		}
+		$s .= $this->pageTitle();
+		$s .= $this->pageSubtitle() . "\n";
+		return $s;
+	}
+
+	function doAfterContent()
+	{
+		global $wgOut;
+
+		$s = "\n</div><br clear='all' />\n";
+
+		$s .= "\n<div id='footer'>";
+		$s .= "<table width='98%' border='0' cellspacing='0'><tr>";
+
+		$qb = $this->qbSetting();
+		if ( 1 == $qb || 3 == $qb ) { # Left
+			$s .= $this->getQuickbarCompensator();
+		}
+		$s .= "<td class='bottom' align='center' valign='top'>";
+
+		$s .= $this->bottomLinks();
+		$s .= "\n<br />" . $this->makeKnownLink( wfMsgForContent( "mainpage" ) ) . " | "
+		  . $this->aboutLink() . " | "
+		  . $this->searchForm( wfMsg( "qbfind" ) );
+
+		$s .= "\n<br />" . $this->pageStats();
+
+		$s .= "</td>";
+		if ( 2 == $qb ) { # Right
+			$s .= $this->getQuickbarCompensator();
+		}
+		$s .= "</tr></table>\n</div>\n</div>\n";
+
+		if ( 0 != $qb ) { $s .= $this->quickBar(); }
+		return $s;
+	}
+
+	function doGetUserStyles() {
+		global $wgOut, $wgStyleSheetPath;
+		$s = parent::doGetUserStyles();
+		$qb = $this->qbSetting();
+
+		if ( 2 == $qb ) { # Right
+			$s .= "#quickbar { position: absolute; right: 4px; }\n" .
+			  "#article { margin-left: 4px; margin-right: 148px; }\n";
+		} else if ( 1 == $qb ) {
+			$s .= "#quickbar { position: absolute; left: 4px; }\n" .
+			  "#article { margin-left: 148px; margin-right: 4px; }\n";
+		} else if ( 3 == $qb ) { # Floating left
+			$s .= "#quickbar { position:absolute; left:4px } \n" .
+			  "#topbar { margin-left: 148px }\n" .
+			  "#article { margin-left:148px; margin-right: 4px; } \n" .
+			  "body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;} \n"; # Hides from IE
+		} else if ( 4 == $qb ) { # Floating right
+			$s .= "#quickbar { position: fixed; right: 4px; } \n" .
+			  "#topbar { margin-right: 148px }\n" .
+			  "#article { margin-right: 148px; margin-left: 4px; } \n" .
+			  "body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto ;bottom:4px;} \n"; # Hides from IE
+		}
+		return $s;
+	}
+
+	function sysLinks() {
+		global $wgUser, $wgContLang, $wgTitle;
+		$li = $wgContLang->specialPage("Userlogin");
+		$lo = $wgContLang->specialPage("Userlogout");
+
+		$rt = $wgTitle->getPrefixedURL();
+		if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
+			$q = "";
+		} else {
+			$q = "returnto={$rt}";
+		}
+
+		$s = "" .
+		  $this->makeKnownLink( wfMsgForContent( "mainpage" ), wfMsg( "mainpage" ) )
+		  . " | " .
+		  $this->makeKnownLink( wfMsgForContent( "aboutpage" ), wfMsg( "about" ) )
+		  . " | " .
+		  $this->makeKnownLink( wfMsgForContent( "helppage" ), wfMsg( "help" ) )
+		  . " | " .
+		  $this->makeKnownLink( wfMsgForContent( "faqpage" ), wfMsg("faq") )
+		  . " | " .
+		  $this->specialLink( "specialpages" ) . " | ";
+
+		if ( $wgUser->isLoggedIn() ) {
+			$s .=  $this->makeKnownLink( $lo, wfMsg( "logout" ), $q );
+		} else {
+			$s .=  $this->makeKnownLink( $li, wfMsg( "login" ), $q );
+		}
+
+		/* show links to different language variants */
+		global $wgDisableLangConversion;
+		$variants = $wgContLang->getVariants();
+		if( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
+			$actstr = '';
+			foreach( $variants as $code ) {
+				$varname = $wgContLang->getVariantname( $code );
+				if( $varname == 'disable' )
+					continue;
+				$s .= ' | <a href="' . $wgTitle->getLocalUrl( 'variant=' . $code ) . '">' . $varname . '</a>';
+			}
+		}
+
+
+
+		return $s;
+	}
+
+	/**
+	 * Compute the sidebar
+	 * @access private
+	 */
+	function quickBar()
+	{
+		global $wgOut, $wgTitle, $wgUser, $wgLang, $wgContLang, $wgEnableUploads;
+
+		$tns=$wgTitle->getNamespace();
+
+		$s = "\n<div id='quickbar'>";
+
+		$sep = "<br />";
+		$s .= $this->menuHead( "qbfind" );
+		$s .= $this->searchForm();
+
+		$s .= $this->menuHead( "qbbrowse" );
+
+		# Use the first heading from the Monobook sidebar as the "browse" section
+		$bar = $this->buildSidebar();
+		$browseLinks = reset( $bar );
+
+		foreach ( $browseLinks as $link ) {
+			if ( $link['text'] != '-' ) {
+				$s .= "<a href=\"{$link['href']}\">" .
+					htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+			}
+		}
+
+		if ( $wgOut->isArticle() ) {
+			$s .= $this->menuHead( "qbedit" );
+			$s .= "<strong>" . $this->editThisPage() . "</strong>";
+
+			$s .= $sep . $this->makeKnownLink( wfMsgForContent( "edithelppage" ), wfMsg( "edithelp" ) );
+
+			if( $wgUser->isLoggedIn() ) {
+				$s .= $sep . $this->moveThisPage();
+			}
+			if ( $wgUser->isAllowed('delete') ) {
+				$dtp = $this->deleteThisPage();
+				if ( "" != $dtp ) {
+					$s .= $sep . $dtp;
+				}
+			}
+			if ( $wgUser->isAllowed('protect') ) {
+				$ptp = $this->protectThisPage();
+				if ( "" != $ptp ) {
+					$s .= $sep . $ptp;
+				}
+			}
+			$s .= $sep;
+
+			$s .= $this->menuHead( "qbpageoptions" );
+			$s .= $this->talkLink()
+			  . $sep . $this->commentLink()
+			  . $sep . $this->printableLink();
+			if ( $wgUser->isLoggedIn() ) {
+				$s .= $sep . $this->watchThisPage();
+			}
+
+			$s .= $sep;
+
+			$s .= $this->menuHead("qbpageinfo")
+			  . $this->historyLink()
+			  . $sep . $this->whatLinksHere()
+			  . $sep . $this->watchPageLinksLink();
+
+			if( $tns == NS_USER || $tns == NS_USER_TALK ) {
+				$id=User::idFromName($wgTitle->getText());
+				if ($id != 0) {
+					$s .= $sep . $this->userContribsLink();
+					if( $this->showEmailUser( $id ) ) {
+						$s .= $sep . $this->emailUserLink();
+					}
+				}
+			}
+			$s .= $sep;
+		}
+
+		$s .= $this->menuHead( "qbmyoptions" );
+		if ( $wgUser->isLoggedIn() ) {
+			$name = $wgUser->getName();
+			$tl = $this->makeKnownLinkObj( $wgUser->getTalkPage(),
+				wfMsg( 'mytalk' ) );
+			if ( $wgUser->getNewtalk() ) {
+				$tl .= " *";
+			}
+
+			$s .= $this->makeKnownLinkObj( $wgUser->getUserPage(),
+				wfMsg( "mypage" ) )
+			  . $sep . $tl
+			  . $sep . $this->specialLink( "watchlist" )
+			  . $sep . $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, "Contributions" ),
+			  	wfMsg( "mycontris" ), "target=" . wfUrlencode($wgUser->getName() ) )
+		  	  . $sep . $this->specialLink( "preferences" )
+		  	  . $sep . $this->specialLink( "userlogout" );
+		} else {
+			$s .= $this->specialLink( "userlogin" );
+		}
+
+		$s .= $this->menuHead( "qbspecialpages" )
+		  . $this->specialLink( "newpages" )
+		  . $sep . $this->specialLink( "imagelist" )
+		  . $sep . $this->specialLink( "statistics" )
+		  . $sep . $this->bugReportsLink();
+		if ( $wgUser->isLoggedIn() && $wgEnableUploads ) {
+			$s .= $sep . $this->specialLink( "upload" );
+		}
+		global $wgSiteSupportPage;
+		if( $wgSiteSupportPage) {
+			$s .= $sep."<a href=\"".htmlspecialchars($wgSiteSupportPage)."\" class =\"internal\">"
+			      .wfMsg( "sitesupport" )."</a>";
+		}
+
+		$s .= $sep . $this->makeKnownLinkObj(
+			Title::makeTitle( NS_SPECIAL, 'Specialpages' ),
+			wfMsg( 'moredotdotdot' ) );
+
+		$s .= $sep . "\n</div>\n";
+		return $s;
+	}
+
+	function menuHead( $key )
+	{
+		$s = "\n<h6>" . wfMsg( $key ) . "</h6>";
+		return $s;
+	}
+
+	function searchForm( $label = "" )
+	{
+		global $wgRequest;
+
+		$search = $wgRequest->getText( 'search' );
+		$action = $this->escapeSearchLink();
+		$s = "<form id=\"search\" method=\"get\" class=\"inline\" action=\"$action\">";
+		if ( "" != $label ) { $s .= "{$label}: "; }
+
+		$s .= "<input type='text' name=\"search\" size='14' value=\""
+		  . htmlspecialchars(substr($search,0,256)) . "\" />"
+		  . "<br /><input type='submit' name=\"go\" value=\"" . htmlspecialchars( wfMsg( "go" ) ) . "\" /> <input type='submit' name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( "search" ) ) . "\" /></form>";
+
+		return $s;
+	}
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// MonoBook.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once('includes/SkinTemplate.php');
+?>
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,275 @@
+<?php
+/**
+ * MonoBook nouveau
+ *
+ * Translated from gwicke's previous TAL template version to remove
+ * dependency on PHPTAL.
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/** */
+require_once('includes/SkinTemplate.php');
+
+/**
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinMonoBook extends SkinTemplate {
+	/** Using monobook. */
+	function initPage( &$out ) {
+		SkinTemplate::initPage( $out );
+		$this->skinname  = 'monobook';
+		$this->stylename = 'monobook';
+		$this->template  = 'MonoBookTemplate';
+	}
+}
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class MonoBookTemplate extends QuickTemplate {
+	/**
+	 * Template filter callback for MonoBook skin.
+	 * Takes an associative array of data set from a SkinTemplate-based
+	 * class, and a wrapper for MediaWiki's localization database, and
+	 * outputs a formatted page.
+	 *
+	 * @access private
+	 */
+	function execute() {
+		// Suppress warnings to prevent notices about missing indexes in $this->data
+		wfSuppressWarnings();
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
+	<head>
+		<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
+		<?php $this->html('headlinks') ?>
+		<title><?php $this->text('pagetitle') ?></title>
+		<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css?7"; /*]]>*/</style>
+		<link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css" />
+		<!--[if lt IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE50Fixes.css";</style><![endif]-->
+		<!--[if IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE55Fixes.css";</style><![endif]-->
+		<!--[if IE 6]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE60Fixes.css";</style><![endif]-->
+		<!--[if IE 7]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE70Fixes.css?1";</style><![endif]-->
+		<!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js"></script>
+		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+		<script type="<?php $this->text('jsmimetype') ?>">var skin = '<?php $this->text('skinname')?>';var stylepath = '<?php $this->text('stylepath')?>';</script>
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js"><!-- wikibits js --></script>
+<?php	if($this->data['jsvarurl'  ]) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl'  ) ?>"><!-- site js --></script>
+<?php	} ?>
+<?php	if($this->data['pagecss'   ]) { ?>
+		<style type="text/css"><?php $this->html('pagecss'   ) ?></style>
+<?php	}
+		if($this->data['usercss'   ]) { ?>
+		<style type="text/css"><?php $this->html('usercss'   ) ?></style>
+<?php	}
+		if($this->data['userjs'    ]) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
+<?php	}
+		if($this->data['userjsprev']) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
+<?php	}
+		if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
+		<!-- Head Scripts -->
+		<?php $this->html('headscripts') ?>
+	</head>
+<body <?php if($this->data['body_ondblclick']) { ?>ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
+<?php if($this->data['body_onload'    ]) { ?>onload="<?php     $this->text('body_onload')     ?>"<?php } ?>
+ class="<?php $this->text('nsclass') ?> <?php $this->text('dir') ?>">
+	<div id="globalWrapper">
+		<div id="column-content">
+	<div id="content">
+		<a name="top" id="top"></a>
+		<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+		<h1 class="firstHeading"><?php $this->text('title') ?></h1>
+		<div id="bodyContent">
+			<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
+			<div id="contentSub"><?php $this->html('subtitle') ?></div>
+			<?php if($this->data['undelete']) { ?><div id="contentSub2"><?php     $this->html('undelete') ?></div><?php } ?>
+			<?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk')  ?></div><?php } ?>
+			<?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
+			<!-- start content -->
+			<?php $this->html('bodytext') ?>
+			<?php if($this->data['catlinks']) { ?><div id="catlinks"><?php       $this->html('catlinks') ?></div><?php } ?>
+			<!-- end content -->
+			<div class="visualClear"></div>
+		</div>
+	</div>
+		</div>
+		<div id="column-one">
+	<div id="p-cactions" class="portlet">
+		<h5><?php $this->msg('views') ?></h5>
+		<ul>
+<?php			foreach($this->data['content_actions'] as $key => $tab) { ?>
+				 <li id="ca-<?php echo htmlspecialchars($key) ?>"<?php
+				 	if($tab['class']) { ?> class="<?php echo htmlspecialchars($tab['class']) ?>"<?php }
+				 ?>><a href="<?php echo htmlspecialchars($tab['href']) ?>"><?php
+				 echo htmlspecialchars($tab['text']) ?></a></li>
+<?php			 } ?>
+		</ul>
+	</div>
+	<div class="portlet" id="p-personal">
+		<h5><?php $this->msg('personaltools') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php 			foreach($this->data['personal_urls'] as $key => $item) { ?>
+				<li id="pt-<?php echo htmlspecialchars($key) ?>"<?php
+					if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
+				echo htmlspecialchars($item['href']) ?>"<?php
+				if(!empty($item['class'])) { ?> class="<?php
+				echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
+				echo htmlspecialchars($item['text']) ?></a></li>
+<?php			} ?>
+			</ul>
+		</div>
+	</div>
+	<div class="portlet" id="p-logo">
+		<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
+			?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>" <?php
+			?>title="<?php $this->msg('mainpage') ?>"></a>
+	</div>
+	<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
+	<?php foreach ($this->data['sidebar'] as $bar => $cont) { ?>
+	<div class='portlet' id='p-<?php echo htmlspecialchars($bar) ?>'>
+		<h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
+		<div class='pBody'>
+			<ul>
+<?php 			foreach($cont as $key => $val) { ?>
+				<li id="<?php echo htmlspecialchars($val['id']) ?>"<?php
+					if ( $val['active'] ) { ?> class="active" <?php }
+				?>><a href="<?php echo htmlspecialchars($val['href']) ?>"><?php echo htmlspecialchars($val['text']) ?></a></li>
+<?php			} ?>
+			</ul>
+		</div>
+	</div>
+	<?php } ?>
+	<div id="p-search" class="portlet">
+		<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+		<div id="searchBody" class="pBody">
+			<form action="<?php $this->text('searchaction') ?>" id="searchform"><div>
+				<input id="searchInput" name="search" type="text" <?php
+					if($this->haveMsg('accesskey-search')) {
+						?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
+					if( isset( $this->data['search'] ) ) {
+						?> value="<?php $this->text('search') ?>"<?php } ?> />
+				<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="<?php $this->msg('go') ?>" />&nbsp;
+				<input type='submit' name="fulltext" class="searchButton" value="<?php $this->msg('search') ?>" />
+			</div></form>
+		</div>
+	</div>
+	<div class="portlet" id="p-tb">
+		<h5><?php $this->msg('toolbox') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php
+		if($this->data['notspecialpage']) { ?>
+				<li id="t-whatlinkshere"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
+				?>"><?php $this->msg('whatlinkshere') ?></a></li>
+<?php
+			if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
+				<li id="t-recentchangeslinked"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
+				?>"><?php $this->msg('recentchangeslinked') ?></a></li>
+<?php 		}
+		}
+		if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
+			<li id="t-trackbacklink"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
+				?>"><?php $this->msg('trackbacklink') ?></a></li>
+<?php 	}
+		if($this->data['feeds']) { ?>
+			<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
+					?><span id="feed-<?php echo htmlspecialchars($key) ?>"><a href="<?php
+					echo htmlspecialchars($feed['href']) ?>"><?php echo htmlspecialchars($feed['text'])?></a>&nbsp;</span>
+					<?php } ?></li><?php
+		}
+
+		foreach( array('contributions', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
+
+			if($this->data['nav_urls'][$special]) {
+				?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
+				?>"><?php $this->msg($special) ?></a></li>
+<?php		}
+		}
+
+		if(!empty($this->data['nav_urls']['print']['href'])) { ?>
+				<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
+				?>"><?php $this->msg('printableversion') ?></a></li><?php
+		}
+
+		if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
+				<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
+				?>"><?php $this->msg('permalink') ?></a></li><?php
+		} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
+				<li id="t-ispermalink"><?php $this->msg('permalink') ?></li><?php
+		}
+
+		wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
+?>
+			</ul>
+		</div>
+	</div>
+<?php
+		if( $this->data['language_urls'] ) { ?>
+	<div id="p-lang" class="portlet">
+		<h5><?php $this->msg('otherlanguages') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php		foreach($this->data['language_urls'] as $langlink) { ?>
+				<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
+				?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php		} ?>
+			</ul>
+		</div>
+	</div>
+<?php	} ?>
+		</div><!-- end of the left (by default at least) column -->
+			<div class="visualClear"></div>
+			<div id="footer">
+<?php
+		if($this->data['poweredbyico']) { ?>
+				<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
+<?php 	}
+		if($this->data['copyrightico']) { ?>
+				<div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
+<?php	}
+
+		// Generate additional footer links
+?>
+			<ul id="f-list">
+<?php
+		$footerlinks = array(
+			'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
+			'privacy', 'about', 'disclaimer', 'tagline',
+		);
+		foreach( $footerlinks as $aLink ) {
+			if( $this->data[$aLink] ) {
+?>				<li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
+<?php 		}
+		}
+?>
+			</ul>
+		</div>
+	<script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
+</div>
+<?php $this->html('reporttime') ?>
+
+</body></html>
+<?php
+	wfRestoreWarnings();
+	} // end of execute() method
+} // end of class
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{lang}" lang="{lang}" dir="{dir}">
+<head>
+	<meta http-equiv="Content-Type" content="{~ mimetype}; charset={~ charset}" />
+	{headlinks}
+	{headscripts}
+	<title>{pagetitle}</title>
+	<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "{~ stylepath}/{~ stylename}/main.css?5"; /*]]>*/</style>
+	<link rel="stylesheet" type="text/css" {if notprintable {media="print"}} href="{~ stylepath}/common/commonPrint.css" />
+	<!--[if lt IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE50Fixes.css";</style><![endif]-->
+	<!--[if IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE55Fixes.css";</style><![endif]-->
+	<!--[if IE 6]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE60Fixes.css";</style><![endif]-->
+	<!--[if IE 7]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE70Fixes.css?1";</style><![endif]-->
+	<!--[if lt IE 7]><script type="{jsmimetype}" src="{~ stylepath}/common/IEFixes.js"></script>
+	<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+	<script type="{jsmimetype}" src="{~ stylepath}/common/wikibits.js"><!-- wikibits js --></script>
+	{if jsvarurl {<script type="{jsmimetype}" src="{jsvarurl}"><!-- site js --></script>}}
+	{if pagecss {<style type="text/css">{pagecss}</style>}}
+	{usercss}
+	{sitecss}
+	{gencss}
+	{if userjs {<script type="{jsmimetype}" src="{userjs}"></script>}}
+	{if userjsprev {<script type="{jsmimetype}">{userjsprev}</script>}}
+	{trackbackhtml}
+</head>
+<body {if body_ondblclick {ondblclick="{body_ondblclick}"}} {if body_onload {onload="{body_onload}" }} class="{~ nsclass} {~ dir}">
+<div id="globalWrapper">
+	<div id="column-content">
+		<div id="content">
+			<a name="top" id="top"></a>
+			{if sitenotice {<div id="siteNotice">{sitenotice}</div> }}
+			<h1 class="firstHeading">{title}</h1>
+			<div id="bodyContent">
+				<h3 id="siteSub">{msg {tagline}}</h3>
+				<div id="contentSub">{subtitle}</div>
+				{if undelete {<div id="contentSub2"><span class="subpages">{undelete}</span></div> }}
+				{if newtalk {<div class="usermessage">{newtalk}</div> }}
+				{if showjumplinks {
+					<div id="jump-to-nav">{msg {jumpto}} <a href="#column-one">{msg {jumptonavigation}}</a>, 
+					<a href="#searchInput">{msg {jumptosearch}}</a></div> 
+				}}
+				<!-- start content -->
+				{bodytext}
+				{if catlinks {<div id="catlinks">{catlinks}</div> }}
+				<!-- end content -->
+				<div class="visualClear"></div>
+			</div>
+		</div>
+	</div>
+	<div id="column-one">
+		<div id="p-cactions" class="portlet">
+			<h5>{msg {views}}</h5>
+			<ul>
+				{if is_special {
+					<li id="ca-article" class="selected"><a href="{request_url}">{msg {specialpage}}</a></li>
+				} {
+					<li id="ca-{nskey}" {selecttab {subject} subject_newclass}><a href="{subject_url}">{msg nskey}</a></li>
+					<li id="ca-talk" {selecttab {talk} talk_newclass}><a href="{talk_url}">{msg {talk}}</a></li>
+					{if can_edit {
+						{if is_talk {
+							<li id="ca-edit" {selecttab {edit} {istalk}}><a href="{edit_url}">{msg {edit}}</a></li>
+							<li id="ca-addsection" {selecttab {addsection}}><a href="{localurl {action=edit&section=new}}">{msg {addsection}}</a></li>
+						} {
+							<li id="ca-edit" {selecttab {edit}}><a href="{edit_url}">{msg {edit}}</a></li>
+						}}
+					} {
+						<li id="ca-viewsource" {selecttab {edit}}><a href="{edit_url}">{msg {viewsource}}</a></li>
+					}}
+
+					{if article_exists {
+						<li id="ca-history" {selecttab {history}}><a href="{localurl {action=history}}">{msg {history_short}}</a></li>
+						{if {{ is_allowed {protect} }} {
+							{if is_ns_mediawiki {} {
+								{if is_protected {
+									<li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=unprotect}}">{msg {unprotect}}</a></li>
+								} {
+									<li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=protect}}">{msg {protect}}</a></li>
+								}}
+							}}
+						}}
+						
+						{if {{ is_allowed {delete} }} {
+								<li id="ca-delete" {selecttab {delete}}><a href="{localurl {action=delete}}">{msg {delete}}</a></li>
+						}}
+						{if {{ is_allowed {move} }} {
+							{if can_move {
+									<li id="ca-move" {selecttab {move}}><a href="{move_url}">{msg {move}}</a></li>
+							}}
+						}}
+						{if is_loggedin {
+							{if is_watching {
+								<li id="ca-unwatch" {selecttab {watch}}><a href="{localurl {action=unwatch}}">{msg {unwatch}}</a></li>
+							} {
+								<li id="ca-watch" {selecttab {watch}}><a href="{localurl {action=watch}}">{msg {watch}}</a></li>
+							}}
+						}}
+					}}
+				}}
+				{extratabs {<li id="ca-$id" $class><a href="$href">$text</a></li>}}
+			</ul>
+		</div>
+		<div class="portlet" id="p-personal">
+			<h5>{msg {personaltools}}</h5>
+			<div class="pBody">
+				<ul>						
+					{personal_urls { <li id="pt-$key" $classactive ><a href="$href" $class>$text</a></li> }}
+				</ul>
+			</div>
+		</div>
+		<div class="portlet" id="p-logo">
+			<a style="background-image: url({~ logopath});" href="{mainpage}" title="{msg {mainpage}}"></a>
+		</div>
+		<script type="{jsmimetype}"> if (window.isMSIE55) fixalpha(); </script>
+		{sidebar {
+			<div class='portlet' id="p-$bar">
+				<h5>$barname</h5>
+				<div class='pBody'>
+				<ul>
+		} {
+				</ul>
+				</div>
+			</div>
+		} {<li id="$id" $classactive><a href="$href">$text</a></li>
+			}
+		}
+
+		<div id="p-search" class="portlet">
+			<h5><label for="searchInput">{msg {search}}</label></h5>
+			<div id="searchBody" class="pBody">
+				<form action="{searchaction}" id="searchform"><div>
+					<input id="searchInput" name="search" type="text" {
+						}{if {{fallbackmsg {accesskey-search} {} }} {accesskey="{fallbackmsg {accesskey-search} {} }"}}{
+						}{if search { value="{search}"}} />
+					<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="{msg {go}}" />&nbsp;
+					<input type='submit' name="fulltext" class="searchButton" value="{msg {search}}" />
+				</div></form>
+			</div>
+		</div>
+		<div class="portlet" id="p-tb">
+			<h5>{msg {toolbox}}</h5>
+			<div class="pBody">
+				<ul>
+					{if notspecialpage    {<li id="t-whatlinkshere"><a href="{nav_whatlinkshere}">{msg {whatlinkshere}}</a></li> }}
+					{if article_exists {<li id="t-recentchangeslinked"><a href="{nav_recentchangeslinked}">{msg {recentchangeslinked}}</a></li> }}
+					{if nav_trackbacklink {<li id="t-trackbacklink"><a href="{nav_trackbacklink}">{msg {trackbacklink}}</a></li>}}
+					{if feeds
+						{<li id="feedlinks">{feeds {<span id="feed-$key"><a href="$href">$text</a>&nbsp;</span>}}
+					</li>}}
+					{if is_userpage {
+						<li id="t-contributions"><a href="{nav_contributions}">{msg {contributions}}</a></li>
+						{if {{is_allowed {block}}} {<li id="t-blockip"><a href="{nav_blockip}">{msg {blockip}}</a></li>}}
+						{if is_loggedin     {<li id="t-emailuser"><a href="{nav_emailuser}">{msg {emailuser}}</a></li>}}
+					}}
+					{if nav_upload        {<li id="t-upload"><a href="{nav_upload}">{msg {upload}}</a></li>}}
+					{if nav_specialpages  {<li id="t-specialpages"><a href="{nav_specialpages}">{msg {specialpages}}</a></li>}}
+					{if nav_print         {<li id="t-print"><a href="{nav_print}">{msg {printableversion}}</a></li>}}
+					{if nav_permalink     {<li id="t-permalink"><a href="{nav_permalink}">{msg {permalink}}</a></li>}}
+					{if is_permalink      {<li id="t-ispermalink">{msg {permalink}}</li>}}
+
+					{toolboxend}
+				</ul>
+			</div>
+		</div>
+		{language_urls {
+			<div id="p-lang" class="portlet">
+				<h5>{msg {otherlanguages}}</h5>
+				<div class="pBody">
+					<ul>
+						$body
+					</ul>
+				</div>
+			</div>
+		} {
+			<li class="$class"><a href="$href">$text</a></li>
+		}}	
+	</div><!-- end of the left (by default at least) column -->
+	<div class="visualClear"></div>
+	<div id="footer">
+		{if poweredbyico { <div id="f-poweredbyico">{poweredbyico}</div> }}
+		{if copyrightico { <div id="f-copyrightico">{copyrightico}</div> }}
+
+		<ul id="f-list">
+			{if lastmod                {  <li id="lastmod">{lastmod}</li> }}
+			{if viewcount              {  <li id="viewcount">{viewcount}</li> }}
+			{if numberofwatchingusers  {  <li id="numberofwatchingusers">{numberofwatchingusers}</li> }}
+			{if credits                {  <li id="credits">{credits}</li> }}
+			{if is_currentview         {  <li id="copyright">{normalcopyright}</li> }}
+			{if usehistorycopyright    {  <li id="copyright">{historycopyright}</li> }}
+			{if privacy                {  <li id="privacy">{privacy}</li> }}
+			{if about                  {  <li id="about">{about}</li> }}
+			{if disclaimer             {  <li id="disclaimer">{disclaimer}</li> }}
+			{if tagline                {  <li id="tagline">{tagline}</li> }}
+		</ul>
+	</div>
+	<script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
+</div>
+{reporttime}
+{if {} { vim: set syn=html ts=2 : }}
+</body></html>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// MySkin.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once('includes/SkinTemplate.php');
+require_once('MonoBook.php');
+?>
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,30 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/** */
+require_once('MonoBook.php');
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinMySkin extends SkinTemplate {
+	function initPage( &$out ) {
+		SkinTemplate::initPage( $out );
+		$this->skinname  = 'myskin';
+		$this->stylename = 'myskin';
+		$this->template  = 'MonoBookTemplate';
+	}
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,94 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinNostalgia extends Skin {
+
+	function getStylesheet() {
+		return 'common/nostalgia.css?1';
+	}
+	function getSkinName() {
+		return "nostalgia";
+	}
+
+	function doBeforeContent() {
+		global $wgUser, $wgOut, $wgTitle;
+
+		$s = "\n<div id='content'>\n<div id='topbar'>";
+		$s .= $this->logoText( "right" );
+
+		$s .= $this->pageTitle();
+		$s .= $this->pageSubtitle() . "\n";
+
+		$s .= $this->topLinks() . "\n<br />";
+
+		$notice = wfGetSiteNotice();
+		if( $notice ) {
+			$s .= "\n<div id='siteNotice'>$notice</div>\n";
+		}
+		$s .= $this->pageTitleLinks();
+
+		$ol = $this->otherLanguages();
+		if($ol) $s .= "<br />" . $ol;
+
+		$cat = $this->getCategoryLinks();
+		if($cat) $s .= "<br />" . $cat;
+
+		$s .= "<br clear='all' /><hr />\n</div>\n";
+		$s .= "\n<div id='article'>";
+
+		return $s;
+	}
+
+	function topLinks() {
+		global $wgOut, $wgUser;
+		$sep = " |\n";
+
+		$s = $this->mainPageLink() . $sep
+		  . $this->specialLink( "recentchanges" );
+
+		if ( $wgOut->isArticle() ) {
+			$s .=  $sep . $this->editThisPage()
+			  . $sep . $this->historyLink();
+		}
+		if ( $wgUser->isAnon() ) {
+			$s .= $sep . $this->specialLink( "userlogin" );
+		} else {
+			$s .= $sep . $this->specialLink( "userlogout" );
+		}
+		$s .= $sep . $this->specialPagesList();
+
+		return $s;
+	}
+
+	function doAfterContent() {
+		$s = "\n</div><br clear='all' />\n";
+
+		$s .= "\n<div id='footer'><hr />";
+
+		$s .= $this->bottomLinks();
+		$s .= "\n<br />" . $this->pageStats();
+		$s .= "\n<br />" . $this->mainPageLink()
+		  . " | " . $this->aboutLink()
+		  . " | " . $this->searchForm();
+
+		$s .= "\n</div>\n</div>\n";
+
+		return $s;
+	}
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// Simple.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once('includes/SkinTemplate.php');
+require_once('MonoBook.php');
+?>
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/** */
+require_once('MonoBook.php');
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinSimple extends SkinTemplate {
+	function initPage( &$out ) {
+		SkinTemplate::initPage( $out );
+		$this->skinname  = 'simple';
+		$this->stylename = 'simple';
+		$this->template  = 'MonoBookTemplate';
+	}
+
+	function reallyDoGetUserStyles() {
+		global $wgUser;
+		$s = '';
+		if (($undopt = $wgUser->getOption("underline")) != 2) {
+			$underline = $undopt ? 'underline' : 'none';
+			$s .= "a { text-decoration: $underline; }\n";
+		}
+		if ($wgUser->getOption('highlightbroken')) {
+			$s .= "a.new, #quickbar a.new { text-decoration: line-through; }\n";
+		} else {
+			$s .= <<<END
+a.new, #quickbar a.new,
+a.stub, #quickbar a.stub {
+	color: inherit;
+	text-decoration: inherit;
+}
+a.new:after, #quickbar a.new:after {
+	content: "?";
+	color: #CC2200;
+	text-decoration: $underline;
+}
+a.stub:after, #quickbar a.stub:after {
+	content: "!";
+	color: #772233;
+	text-decoration: $underline;
+}
+END;
+		}
+		if ($wgUser->getOption('justify')) {
+			$s .= "#article, #bodyContent { text-align: justify; }\n";
+		}
+		if (!$wgUser->getOption('showtoc')) {
+			$s .= "#toc { display: none; }\n";
+		}
+		if (!$wgUser->getOption('editsection')) {
+			$s .= ".editsection { display: none; }\n";
+		}
+		return $s;
+	}
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Skin.sample
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Skin.sample	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Skin.sample	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,19 @@
+<?php
+# Your class extension is defined there.
+#
+# Do NOT use PHPTal with this sample, if you want PHPTal support have a look at
+# the other sample : SkinPHPTal.sample.
+#
+# The class name MUST begin with 'Skin' and the rest is the name of the file
+# excluding '.php'
+# This file is named Skin.sample (but it should end with php). So the
+# class name will be 'Skin' . 'Skin'
+
+class SkinSkin extends Skin {
+# Override method below
+#
+
+}
+
+}
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/SkinPHPTal.sample
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/SkinPHPTal.sample	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/SkinPHPTal.sample	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,28 @@
+<?php
+require_once('includes/SkinPHPTal.php');
+
+# Test if PHPTal is enabled. If not MediaWiki will load the 'standard' skin
+# which doesnt use PHPTal
+if( class_exists( 'SkinPHPTal' ) ) {
+	
+	# Your class extension is defined there.
+	#
+	# The class name MUST begin with 'Skin' and the rest is the name of the file
+	# excluding '.php'
+	# This file is named SkinPHPTal.sample (but it should end with php). So the
+	# class name will be 'Skin' . 'SkinPHPTal'
+	
+	class SkinSkinPHPTal extends SkinPHPTal {
+		function initPage( &$out ) {
+			SkinPHPTal::initPage( $out );
+			$this->skinname = 'name of your skin all lower case';
+			$this->template = 'phptal template used do not put the .pt';
+		}
+	
+	# Override method below
+	#
+	
+	}
+
+}
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,291 @@
+<?php
+/**
+ * See skin.txt
+ *
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinStandard extends Skin {
+
+	/**
+	 *
+	 */
+	function getHeadScripts() {
+		global $wgStylePath, $wgJsMimeType;
+
+		$s = parent::getHeadScripts();
+		if ( 3 == $this->qbSetting() ) { # Floating left
+			$s .= "<script language='javascript' type='$wgJsMimeType' " .
+			  "src='{$wgStylePath}/common/sticky.js'></script>\n";
+		}
+		return $s;
+	}
+
+	/**
+	 *
+	 */
+	function getUserStyles() {
+		global $wgStylePath;
+		$s = '';
+		if ( 3 == $this->qbSetting() ) { # Floating left
+			$s .= "<style type='text/css'>\n" .
+			  "@import '{$wgStylePath}/common/quickbar.css';\n</style>\n";
+		} else if ( 4 == $this->qbSetting() ) { # Floating right
+			$s .= "<style type='text/css'>\n" .
+			  "@import '{$wgStylePath}/common/quickbar-right.css';\n</style>\n";
+		}
+		$s .= parent::getUserStyles();
+		return $s;
+	}
+
+	/**
+	 *
+	 */
+	function doGetUserStyles() {
+		global $wgUser, $wgOut, $wgStylePath;
+
+		$s = parent::doGetUserStyles();
+		$qb = $this->qbSetting();
+
+		if ( 2 == $qb ) { # Right
+			$s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
+			  "border-left: 2px solid #000000; }\n" .
+			  "#article { margin-left: 4px; margin-right: 152px; }\n";
+		} else if ( 1 == $qb || 3 == $qb ) {
+			$s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
+			  "border-right: 1px solid gray; }\n" .
+			  "#article { margin-left: 152px; margin-right: 4px; }\n";
+		} else if ( 4 == $qb) {
+			$s .= "#quickbar { border-right: 1px solid gray; }\n" .
+			  "#article { margin-right: 152px; margin-left: 4px; }\n";
+		}
+		return $s;
+	}
+
+	/**
+	 *
+	 */
+	function getBodyOptions() {
+		$a = parent::getBodyOptions();
+
+		if ( 3 == $this->qbSetting() ) { # Floating left
+			$qb = "setup(\"quickbar\")";
+			if($a["onload"]) {
+				$a["onload"] .= ";$qb";
+			} else {
+				$a["onload"] = $qb;
+			}
+		}
+		return $a;
+	}
+
+	function doAfterContent() {
+		global $wgUser, $wgOut, $wgContLang;
+		$fname =  'SkinStandard::doAfterContent';
+		wfProfileIn( $fname );
+		wfProfileIn( $fname.'-1' );
+
+		$s = "\n</div><br style=\"clear:both\" />\n";
+		$s .= "\n<div id='footer'>";
+		$s .= '<table border="0" cellspacing="0"><tr>';
+
+		wfProfileOut( $fname.'-1' );
+		wfProfileIn( $fname.'-2' );
+
+		$qb = $this->qbSetting();
+		$shove = ($qb != 0);
+		$left = ($qb == 1 || $qb == 3);
+		if($wgContLang->isRTL()) $left = !$left;
+
+		if ( $shove && $left ) { # Left
+				$s .= $this->getQuickbarCompensator();
+		}
+		wfProfileOut( $fname.'-2' );
+		wfProfileIn( $fname.'-3' );
+		$l = $wgContLang->isRTL() ? 'right' : 'left';
+		$s .= "<td class='bottom' align='$l' valign='top'>";
+
+		$s .= $this->bottomLinks();
+		$s .= "\n<br />" . $this->mainPageLink()
+		  . ' | ' . $this->aboutLink()
+		  . ' | ' . $this->specialLink( 'recentchanges' )
+		  . ' | ' . $this->searchForm()
+		  . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
+
+		$s .= "</td>";
+		if ( $shove && !$left ) { # Right
+			$s .= $this->getQuickbarCompensator();
+		}
+		$s .= "</tr></table>\n</div>\n</div>\n";
+
+		wfProfileOut( $fname.'-3' );
+		wfProfileIn( $fname.'-4' );
+		if ( 0 != $qb ) { $s .= $this->quickBar(); }
+		wfProfileOut( $fname.'-4' );
+		wfProfileOut( $fname );
+		return $s;
+	}
+
+	function quickBar() {
+		global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang;
+		global $wgEnableUploads, $wgRemoteUploads;
+
+		$fname =  'Skin::quickBar';
+		wfProfileIn( $fname );
+
+		$action = $wgRequest->getText( 'action' );
+		$wpPreview = $wgRequest->getBool( 'wpPreview' );
+		$tns=$wgTitle->getNamespace();
+
+		$s = "\n<div id='quickbar'>";
+		$s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
+
+		$sep = "\n<br />";
+
+		# Use the first heading from the Monobook sidebar as the "browse" section
+		$bar = $this->buildSidebar();
+		$browseLinks = reset( $bar );
+
+		foreach ( $browseLinks as $link ) {
+			if ( $link['text'] != '-' ) {
+				$s .= "<a href=\"{$link['href']}\">" .
+					htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+			}
+		}
+
+		if( $wgUser->isLoggedIn() ) {
+			$s.= $this->specialLink( 'watchlist' ) ;
+			$s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ),
+				wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
+		}
+		// only show watchlist link if logged in
+		$s .= "\n<hr class='sep' />";
+		$articleExists = $wgTitle->getArticleId();
+		if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
+			if($wgOut->isArticle()) {
+				$s .= '<strong>' . $this->editThisPage() . '</strong>';
+			} else { # backlink to the article in edit or history mode
+				if($articleExists){ # no backlink if no article
+					switch($tns) {
+						case 0:
+						$text = wfMsg('articlepage');
+						break;
+						case 1:
+						$text = wfMsg('viewtalkpage');
+						break;
+						case 2:
+						$text = wfMsg('userpage');
+						break;
+						case 3:
+						$text = wfMsg('viewtalkpage');
+						break;
+						case 4:
+						$text = wfMsg('wikipediapage');
+						break;
+						case 5:
+						$text = wfMsg('viewtalkpage');
+						break;
+						case 6:
+						$text = wfMsg('imagepage');
+						break;
+						case 7:
+						$text = wfMsg('viewtalkpage');
+						break;
+						default:
+						$text= wfMsg('articlepage');
+					}
+
+					$link = $wgTitle->getText();
+					if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary
+						$link = $nstext . ':' . $link ;
+					}
+
+					$s .= $this->makeLink( $link, $text );
+				} elseif( $wgTitle->getNamespace() != NS_SPECIAL ) {
+					# we just throw in a "New page" text to tell the user that he's in edit mode,
+					# and to avoid messing with the separator that is prepended to the next item
+					$s .= '<strong>' . wfMsg('newpage') . '</strong>';
+				}
+
+			}
+
+
+			if( $tns%2 && $action!='edit' && !$wpPreview) {
+				$s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit&section=new');
+			}
+
+			/*
+			watching could cause problems in edit mode:
+			if user edits article, then loads "watch this article" in background and then saves
+			article with "Watch this article" checkbox disabled, the article is transparently
+			unwatched. Therefore we do not show the "Watch this page" link in edit mode
+			*/
+			if ( $wgUser->isLoggedIn() && $articleExists) {
+				if($action!='edit' && $action != 'submit' )
+				{
+					$s .= $sep . $this->watchThisPage();
+				}
+				if ( $wgTitle->userCanEdit() )
+					$s .= $sep . $this->moveThisPage();
+			}
+			if ( $wgUser->isAllowed('delete') and $articleExists ) {
+				$s .= $sep . $this->deleteThisPage() .
+				$sep . $this->protectThisPage();
+			}
+			$s .= $sep . $this->talkLink();
+			if ($articleExists && $action !='history') {
+				$s .= $sep . $this->historyLink();
+			}
+			$s.=$sep . $this->whatLinksHere();
+
+			if($wgOut->isArticleRelated()) {
+				$s .= $sep . $this->watchPageLinksLink();
+			}
+
+			if ( NS_USER == $wgTitle->getNamespace()
+				|| $wgTitle->getNamespace() == NS_USER_TALK ) {
+
+				$id=User::idFromName($wgTitle->getText());
+				$ip=User::isIP($wgTitle->getText());
+
+				if($id||$ip) {
+					$s .= $sep . $this->userContribsLink();
+				}
+				if( $this->showEmailUser( $id ) ) {
+					$s .= $sep . $this->emailUserLink();
+				}
+			}
+			$s .= "\n<br /><hr class='sep' />";
+		}
+
+		if ( $wgUser->isLoggedIn() && ( $wgEnableUploads || $wgRemoteUploads ) ) {
+			$s .= $this->specialLink( 'upload' ) . $sep;
+		}
+		$s .= $this->specialLink( 'specialpages' )
+		  . $sep . $this->bugReportsLink();
+
+		global $wgSiteSupportPage;
+		if( $wgSiteSupportPage ) {
+			$s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
+			  '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
+		}
+
+		$s .= "\n<br /></div>\n";
+		wfProfileOut( $fname );
+		return $s;
+	}
+
+
+}
+
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE50Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE50Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE50Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,67 @@
+/*
+** IE5.0 Fix Stylesheet
+*/
+
+#column-content {
+    margin: 0 !important;
+    float: none;
+}
+#column-content #content { 
+    margin-top: 3em; 
+    height: 1%;
+}
+#column-one {
+    position: absolute;
+    overflow: visible;
+    top: 0;
+    left: 0;
+    z-index: 3;
+}
+#footer {
+    margin: 0 0 0 13.6em;
+}
+
+/* IE 5 & 5.5 interpret keyword sizes one off */
+body { font-size: xx-small; }
+/*
+** the edit tabs
+*/
+#p-cactions li {
+    float: left;
+    padding-top: 0;
+    padding-bottom: 0 !important;
+    height: 0.9em;
+}
+#p-cactions li a {
+    display: block;
+    padding-bottom: 0.045em;
+}
+#p-cactions li.selected a {
+    padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+    padding-bottom: 0.17em;
+}
+/* 5.0 doesn't like the background icon for external links and user */
+.link-external,
+.external {
+    background: none;
+    padding: 0;
+}
+#p-personal ul { float: right }
+#p-personal li { float: left }
+li#pt-userpage,
+li#pt-anonuserpage,
+li#pt-login,
+li#pt-logout {
+    background: none;
+    padding-left: none;
+}
+.visualClear {
+    width:100%;
+    height: 0px;
+    padding:0;
+    margin:0;
+}
+.firstHeading { margin-bottom: 0.3em; }
+/*div{ border:1px solid Red !important;}*/

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE55Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE55Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE55Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,81 @@
+/* IE5.5/win- only fixes */
+
+#column-content { 
+    float: none; 
+    margin-left: 0;
+    height: 1%;
+}
+#column-content #content {
+    position: relative;
+    z-index: 5;
+    margin-left: 12.2em;
+    margin-top: 3em;
+    height: 1%;
+}
+#column-one {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 4;
+    width: 100%;
+}
+#footer {
+    margin-left: 13.6em;
+    border-left: 1px solid #fabd23;
+}
+
+/*#bodyContent div,
+#bodyContent pre { overflow: auto; }*/
+
+#p-personal { padding-bottom: 0.1em; }
+
+body { font-size: xx-small; }
+
+#p-cactions {
+    width: 76% !important;
+    z-index: 3 !important;
+    float: none;
+}
+#p-cactions li {
+    padding-bottom: 0 !important;
+    border: none;
+    background-color: transparent;
+    cursor: default;
+    float: none !important;
+}
+#p-cactions li a {
+    display: inline-block !important;
+    vertical-align: top;
+    padding-bottom: 0;
+    border: solid #aaa;
+    border-width: 1px 1px 0;
+}
+#p-cactions li.selected a {
+    border-color: #fabd23;
+    padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+    padding-bottom: 0.17em;
+}
+.portlet {
+    overflow:hidden;
+}
+#bodyContent a.external {
+    background: url(external.png) center right no-repeat;
+    padding-right: 13px;
+}
+/* show the hand */
+#p-logo a,
+#p-logo a:hover {
+    cursor: pointer;
+}
+.visualClear {
+    width:90%;
+    height: 1px;
+    padding:0;
+    margin:0;
+}
+
+#editform {
+    width: 100%;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE60Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE60Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/chick/IE60Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,79 @@
+/* 6.0 - only fixes */
+/* content area */ 
+/* workaround for various ie float bugs */
+#column-content { 
+    float: none; 
+    margin-left: 0;
+    height: 1%;
+}
+#column-content #content {
+    margin-left: 12.2em;
+    margin-top: 3em;
+    height: 1%;
+}
+#column-one {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 4;
+}
+#footer {
+    margin-left: 13.6em;
+    border-left: 1px solid #fabd23;
+}
+
+/* the tabs */
+
+#p-cactions {
+    z-index: 3;
+}
+
+#p-cactions li {
+    padding-bottom: 0 !important;
+    border: none;
+    background-color: transparent;
+    cursor: default;
+    float: none !important;
+}
+#p-cactions li a {
+    display: inline-block !important;
+    vertical-align: top;
+    padding-bottom: 0;
+    border: solid #aaa;
+    border-width: 1px 1px 0;
+}
+#p-cactions li.selected a {
+    border-color: #fabd23;
+    padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+    padding-bottom: 0.17em;
+}
+#portal-personaltools {
+    padding-bottom: 0.1em;
+}
+#bodyContent a.external {
+    background: url(external.png) center right no-repeat;
+    padding-right: 13px;
+}
+
+/* show the hand */
+#p-logo a,
+#p-logo a:hover {
+    cursor: pointer;
+}
+div.visualClear {
+    width:100%;
+    line-height: 0;
+}
+textarea {
+    width: 96%;
+}
+
+div.editsection,
+#catlinks,
+div.tright,
+div.tleft {
+    position: relative;
+}
+/*{ border:1px solid Red !important;}*/

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,481 @@
+/*
+** MediaWiki 'chick' style sheet for PDAs or other small-screen devices.
+** Copyright Timwi
+** License: GPL (http://www.gnu.org/copyleft/gpl.html)
+**
+** Loosely based on Monobook by Gabriel Wicke
+*/
+
+body {
+    font-family: sans-serif;
+    color: Black;
+    margin: 0;
+    padding: 0.3em;
+}
+
+a { color: #002bb8; }
+a:visited { color: #5a3696; }
+a:active { color: #ffa500; }
+a.stub { color: #772233; }
+a.new,
+#p-personal a.new { color:#ba0000; }
+a.new:visited,
+#p-personal a.new:visited { color:#a55858; }
+
+img {
+    border: none;
+    vertical-align: middle;
+}
+p {
+    margin: 0.4em 0em 0.5em 0em;
+    line-height: 1.5em;
+}
+
+p img { margin: 0; }
+
+hr {
+    height: 1px;
+    color: #aaaaaa;
+    background-color: #aaaaaa;
+    border: 0;
+    margin: 0.2em 0 0.2em 0;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    color: Black;
+    background: none;
+    font-weight: normal;
+    margin: 0;
+    padding-top: 0.5em;
+    padding-bottom: 0.17em;
+    border-bottom: 1px solid #aaaaaa;
+}
+h1 { font-size: 188%; }
+h2 { font-size: 150%; }
+h3, h4, h5, h6 {
+    border-bottom: none;
+    font-weight: bold;
+}
+h3 { font-size: 132%; }
+h4 { font-size: 116%; }
+h5 { font-size: 100%; }
+h6 { font-size: 80%;  }
+
+ul {
+    line-height: 1.5em;
+    margin: 0.3em 0 0 1.5em;
+    padding:0;
+}
+ol {
+    line-height: 1.5em;
+    margin: 0.3em 0 0 3.2em;
+    padding:0;
+    list-style-image: none;
+}
+li { margin-bottom: 0.1em; }
+dt {
+    font-weight: bold;
+    margin-bottom: 0.1em;
+}
+dl{
+    margin-top: 0.2em;
+    margin-bottom: 0.5em;
+}
+dd {
+    line-height: 1.5em;
+    margin-left: 2em;
+    margin-bottom: 0.1em;
+}
+
+fieldset {
+    border: 1px solid #2f6fab;
+    margin: 1em 0em 1em 0em;
+    padding: 0em 1em 1em 1em;
+    line-height: 1.5em;
+}
+legend {
+    background: White;
+    padding: 0.5em;
+    font-size: 95%;
+}
+form {
+    border: none;
+    margin: 0;
+}
+
+textarea {
+    border: 1px solid #2f6fab;
+    color: Black;
+    background-color: white;
+    width: 100%;
+    padding: 0.1em;
+    overflow: auto;
+}
+/* hide this from ie/mac and konq2.2 */
+ at media All {
+    head:first-child+body input {
+        visibility: visible;
+        border: 1px solid #2f6fab;
+        color: Black;
+        background-color: white;
+        vertical-align: middle;
+        padding: 0.2em;
+    }
+}
+input.historysubmit {
+    padding: 0 0.3em 0.3em 0.3em !important;
+    font-size: 94%;
+    cursor: pointer;
+    height: 1.7em !important;
+    margin-left: 1.6em;
+}
+input[type="radio"],
+input[type="checkbox"] { border:none; }
+select {
+    border: 1px solid #2f6fab;
+    color: Black;
+    vertical-align: top;
+}
+abbr, acronym, .explain {
+    border-bottom: 1px dotted Black;
+    color: Black;
+    background: none;
+    cursor: help;
+}
+q {
+    font-family: Times, "Times New Roman", serif;
+    font-style: italic;
+}
+code { background-color: #f9f9f9; }
+pre {
+    padding: 1em;
+    border: 1px dashed #2f6fab;
+    color: Black;
+    background-color: #f9f9f9;
+    line-height: 1.1em;
+}
+
+/*
+** the main content area
+*/
+
+span.subpages { display: block; }
+
+/* Some space under the headers in the content area */
+#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; }
+#bodyContent h3,
+#bodyContent h4,
+#bodyContent h5 {
+    margin-bottom: 0.3em;
+}
+.firstHeading { margin-bottom:0.1em; }
+
+/* user notification thing */
+.usermessage {
+    background-color: #ffce7b;
+    border: 1px solid #ffa500;
+    color: Black;
+    font-weight: bold;
+    margin: 0.1em 0 0 0;
+    padding: 2px 5px;
+    vertical-align: middle;
+}
+#siteNotice {
+    text-align: center;
+    font-size: 95%;
+    padding: 0 0.9em 0 0.9em;
+}
+#siteNotice p { margin: 0; padding: 0; }
+.error {
+    color: red;
+    font-size: larger;
+}
+#catlinks {
+    border:1px solid #aaaaaa;
+    background-color:#f9f9f9;
+    padding: 2px 5px;
+    margin: 0.1em 0 0 0;
+    clear: both;
+}
+p.catlinks { margin: 0; padding: 0; }
+
+
+/* currently unused, intended to be used by a metadata box
+in the bottom-right corner of the content area */
+.documentDescription {
+    /* The summary text describing the document */
+    font-weight: bold;
+    display: block;
+    margin: 1em 0em;
+    line-height: 1.5em;
+}
+.documentByLine {
+    text-align: right;
+    font-size: 90%;
+    clear: both;
+    font-weight: normal;
+    color: #76797c;
+}
+
+/* emulate center */
+.center {
+    width: 100%;
+    text-align: center;
+}
+*.center * {
+    margin-left: auto;
+    margin-right: auto;
+}
+/* small for tables and similar */
+.small, .small * { font-size: 94%; }
+table.small { font-size: 100% }
+
+/*
+** content styles
+*/
+
+#toc {
+    /*border:1px solid #2f6fab;*/
+    border:1px solid #aaaaaa;
+    background-color:#f9f9f9;
+    padding:5px;
+    font-size: 95%;
+}
+#toc ul { margin-left: 2em; }
+#toc .toctoggle { font-size: 94%; }
+#toc .editsection {
+    margin-top: 0.7em;
+    font-size: 94%;
+}
+
+/* images */
+div.floatright, table.floatright {
+    clear: right;
+    float: right;
+    margin: 0;
+    position: relative;
+    border: 0.5em solid White;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+    float: left;
+    margin: 0.3em 0.5em 0.5em 0;
+    position: relative;
+    border: 0.5em solid White;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+div.floatleft p { font-style: italic; }
+/* thumbnails */
+div.thumb {
+    margin-bottom: 0.5em;
+    border-style: solid; border-color: White;
+    width: auto;
+}
+div.thumb div {
+    border:1px solid #cccccc;
+    padding: 3px !important;
+    background-color:#f9f9f9;
+    font-size: 94%;
+    text-align: center;
+    overflow: hidden;
+}
+div.thumb div a img {
+    border:1px solid #cccccc;
+}
+div.thumb div div.thumbcaption {
+    border: none;
+    text-align: left;
+    line-height: 1.4em;
+    padding: 0.3em 0 0.1em 0;
+}
+div.magnify {
+    float: right;
+    border: none !important;
+    background: none !important;
+}
+div.magnify a, div.magnify img {
+    display: block;
+    border: none !important;
+    background: none !important;
+}
+div.tright {
+    clear: right;
+    float: right;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.tleft {
+    float: left;
+    margin-right:0.5em;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+
+.hiddenStructure {
+    display: none;
+}
+img.tex { vertical-align: middle; }
+span.texhtml { font-family: serif; }
+
+/*
+** classes for special content elements like town boxes
+** intended to be referenced directly from the wiki src
+*/
+
+/*
+** User styles
+*/
+/* table standards */
+table.rimage {
+    float:right;
+    position:relative;
+    margin-left:1em;
+    margin-bottom:1em;
+    text-align:center;
+}
+.toccolours {
+    border:1px solid #aaaaaa;
+    background-color:#f9f9f9;
+    padding:5px;
+    font-size: 95%;
+}
+div.townBox {
+    position:relative;
+    float:right;
+    background:White;
+    margin-left:1em;
+    border: 1px solid gray;
+    padding:0.3em;
+    width: 200px;
+    overflow: hidden;
+    clear: right;
+}
+div.townBox dl {
+    padding: 0;
+    margin: 0 0 0.3em 0;
+    font-size: 96%;
+}
+div.townBox dl dt {
+    background: none;
+    margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+    margin: 0.1em 0 0 1.1em;
+    background-color: #f3f3f3;
+}
+
+/*
+** edit views etc
+*/
+.special li {
+    line-height: 1.4em;
+    margin: 0;
+    padding: 0;
+}
+
+/* Page history styling */
+/* the auto-generated edit comments */
+.autocomment { color: gray; }
+#pagehistory span.user {
+    margin-left: 1.4em;
+    margin-right: 0.4em;
+}
+#pagehistory span.minor { font-weight: bold; }
+#pagehistory li { border: 1px solid White; }
+#pagehistory li.selected {
+    background-color:#f9f9f9;
+    border:1px dashed #aaaaaa;
+}
+/*
+** Diff rendering
+*/
+table.diff { background:white; }
+td.diff-otitle { background:#ffffff; }
+td.diff-ntitle { background:#ffffff; }
+td.diff-addedline {
+    background:#ccffcc;
+    font-size: smaller;
+}
+td.diff-deletedline {
+    background:#ffffaa;
+    font-size: smaller;
+}
+td.diff-context {
+    background:#eeeeee;
+    font-size: smaller;
+}
+span.diffchange { color: red; }
+
+a.external { color: #3366bb; }
+
+div#footer { text-align: center; }
+
+ul#f-list li { list-style: none;  text-align: center; }
+
+div.portlet { margin: 0.5em 0; }
+
+.redirectText {
+	font-size:150%;
+	margin:5px;
+}
+
+ul.special li.not-patrolled, ol.special li.not-patrolled {
+	background-color: #ffa;
+}
+div.patrollink {
+	font-size: 75%;
+	text-align: right;
+}
+span.newpage, span.minor {
+	font-weight: bold;
+}
+
+span.updatedmarker {
+	color:black;
+	background-color:#00FF00;
+}
+span.newpageletter {
+	font-weight:bold;
+	color:black;
+	background-color:yellow;
+}
+span.minoreditletter {
+	color:black;
+	background-color:#C5FFE6;
+}
+
+table.gallery {
+        border:  1px solid #cccccc;
+        margin:  2px;
+        padding: 2px;
+        background-color:#ffffff;
+}
+
+table.gallery tr { 
+        vertical-align:top;
+}
+
+table.gallery td {
+      vertical-align:top;
+      background-color:#f9f9f9;
+      border: solid 2px white;
+}
+
+div.gallerybox {
+        margin: 2px;
+        width:  150px;
+}
+
+div.gallerybox div.thumb {
+        text-align: center;
+        border: 1px solid #cccccc;
+        margin: 2px;
+}       
+
+div.gallerytext {
+        font-size: 94%;
+        padding: 2px 4px;
+}       
+
+#jump-to-nav {
+  display: none;
+}
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,127 @@
+// IE fixes javascript
+
+var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
+var doneIETransform;
+var doneIEAlphaFix;
+
+if (document.attachEvent)
+  document.attachEvent('onreadystatechange', hookit);
+
+function hookit() {
+    if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
+        doneIETransform = true;
+        relativeforfloats();
+        fixalpha();
+    }
+}
+
+// png alpha transparency fixes
+function fixalpha() {
+    // bg
+    if (isMSIE55 && !doneIEAlphaFix)
+    {
+        var plogo = document.getElementById('p-logo');
+        if (!plogo) return;
+
+        var logoa = plogo.getElementsByTagName('a')[0];
+        if (!logoa) return;
+
+        var bg = logoa.currentStyle.backgroundImage;
+        var imageUrl = bg.substring(5, bg.length-2);
+
+        doneIEAlphaFix = true;
+
+        if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
+            var logospan = logoa.appendChild(document.createElement('span'));
+           
+            logoa.style.backgroundImage = 'none';
+            logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
+            logospan.style.height = '100%';
+            logospan.style.position = 'absolute';
+            logospan.style.width = logoa.currentStyle.width;
+            logospan.style.cursor = 'hand';
+            // Center image with hack for IE5.5
+            if (document.documentElement.dir == "rtl") 
+            {
+              logospan.style.right = '50%';
+              logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
+            }
+            else
+            {
+              logospan.style.left = '50%';
+              logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
+            }
+            logospan.style.top = '50%';
+            logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
+ 
+            var linkFix = logoa.appendChild(logoa.cloneNode());
+            linkFix.style.position = 'absolute';
+            linkFix.style.height = '100%';
+            linkFix.style.width = '100%';
+        }
+    }
+}
+
+// fix ie6 disappering float bug
+function relativeforfloats() {
+    var bc = document.getElementById('bodyContent');
+    if (bc) {
+        var tables = bc.getElementsByTagName('table');
+        var divs = bc.getElementsByTagName('div');
+    }
+    setrelative(tables);
+    setrelative(divs);
+}
+function setrelative (nodes) {
+    var i = 0;
+    while (i < nodes.length) {
+        if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
+        (nodes[i].align && nodes[i].align != ('none'))) &&
+        (!nodes[i].style.position || nodes[i].style.position != 'relative'))) 
+        {
+            nodes[i].style.position = 'relative';
+        }
+        i++;
+    }
+}
+
+
+// Expand links for printing
+
+String.prototype.hasClass = function(classWanted)
+{
+    var classArr = this.split(/\s/);
+    for (var i=0; i<classArr.length; i++)
+      if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true;
+    return false;
+}
+
+var expandedURLs;
+
+onbeforeprint = function() { 
+    expandedURLs = [];
+
+    var contentEl = document.getElementById("content");
+
+    if (contentEl)
+    {
+      var allLinks = contentEl.getElementsByTagName("a");
+
+      for (var i=0; i < allLinks.length; i++) {
+          if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) {
+              var expandedLink = document.createElement("span");
+              var expandedText = document.createTextNode(" (" + allLinks[i].href + ")");
+              expandedLink.appendChild(expandedText);
+              allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling);
+              expandedURLs[i] = expandedLink;
+          }
+      }
+   }
+}
+
+onafterprint = function()
+{
+    for (var i=0; i < expandedURLs.length; i++)
+        if (expandedURLs[i])
+            expandedURLs[i].removeNode(true);
+}
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,177 @@
+// remote scripting library
+// (c) copyright 2005 modernmethod, inc
+var sajax_debug_mode = false;
+var sajax_request_type = "GET";
+
+var started;
+var typing;
+var memory=null;
+var body=null;
+var oldbody=null;
+
+function sajax_debug(text) {
+	if (sajax_debug_mode)
+		alert("RSD: " + text)
+}
+
+
+function sajax_init_object() {
+	sajax_debug("sajax_init_object() called..")
+	var A;
+	try {
+		A=new ActiveXObject("Msxml2.XMLHTTP");
+	} catch (e) {
+		try {
+			A=new ActiveXObject("Microsoft.XMLHTTP");
+		} catch (oc) {
+			A=null;
+		}
+	}
+	if(!A && typeof XMLHttpRequest != "undefined")
+		A = new XMLHttpRequest();
+	if (!A)
+		sajax_debug("Could not create connection object.");
+	return A;
+}
+
+
+function sajax_do_call(func_name, args) {
+	var i, x, n;
+	var uri;
+	var post_data;
+	uri = wgServer + "/" + wgScriptPath + "/index.php?action=ajax";
+	if (sajax_request_type == "GET") {
+		if (uri.indexOf("?") == -1)
+			uri = uri + "?rs=" + escape(func_name);
+		else
+			uri = uri + "&rs=" + escape(func_name);
+		for (i = 0; i < args.length-1; i++)
+			uri = uri + "&rsargs[]=" + escape(args[i]);
+		//uri = uri + "&rsrnd=" + new Date().getTime();
+		post_data = null;
+	} else {
+		post_data = "rs=" + escape(func_name);
+		for (i = 0; i < args.length-1; i++)
+			post_data = post_data + "&rsargs[]=" + escape(args[i]);
+	}
+	x = sajax_init_object();
+	x.open(sajax_request_type, uri, true);
+	if (sajax_request_type == "POST") {
+		x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
+		x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+	}
+	x.setRequestHeader("Pragma", "cache=yes");
+	x.setRequestHeader("Cache-Control", "no-transform");
+	x.onreadystatechange = function() {
+		if (x.readyState != 4)
+			return;
+		sajax_debug("received " + x.responseText);
+		var status;
+		var data;
+		status = x.responseText.charAt(0);
+		data = x.responseText.substring(2);
+		if (status == "-")
+			alert("Error: " + data);
+		else
+			args[args.length-1](data);
+	}
+	x.send(post_data);
+	sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
+	sajax_debug(func_name + " waiting..");
+	delete x;
+}
+
+// Remove the typing barrier to allow call() to complete
+function Search_doneTyping()
+{
+	typing=false;
+}
+
+// Wait 500ms to run call()
+function Searching_Go()
+{
+        setTimeout("Searching_Call()", 500);
+}
+
+// If the user is typing wait until they are done.
+function Search_Typing() {
+	started=true;
+	typing=true;
+	window.status = "Waiting until you're done typing...";
+	setTimeout("Search_doneTyping()", 500);
+
+	// I believe these are needed by IE for when the users press return?
+	if (window.event)
+	{
+		if (event.keyCode == 13)
+		{
+			event.cancelBubble = true;
+			event.returnValue = false;
+		}
+	}
+}
+
+// Set the body div to the results
+function Searching_SetResult(result)
+{
+        //body.innerHTML = result;
+	t = document.getElementById("searchTarget");
+	if ( t == null ) {
+		oldbody=body.innerHTML;
+		body.innerHTML= '<div id="searchTargetContainer"><div id="searchTarget" ></div></div>' ;
+		t = document.getElementById("searchTarget");
+	}
+	t.innerHTML = result;
+	t.style.display='block';
+}
+
+function Searching_Hide_Results()
+{
+	t = document.getElementById("searchTarget");
+	t.style.display='none';
+	body.innerHTML = oldbody;
+}
+
+
+// This will call the php function that will eventually
+// return a results table
+function Searching_Call()
+{
+	var x;
+	Searching_Go();
+
+	//Don't proceed if user is typing
+	if (typing)
+		return;
+
+	x = document.getElementById("searchInput").value;
+
+	// Don't search again if the query is the same
+	if (x==memory)
+		return;
+
+	memory=x;
+	if (started) {
+		// Don't search for blank or < 3 chars.
+		if ((x=="") || (x.length < 3))
+		{
+			return;
+		}
+		x_wfSajaxSearch(x, Searching_SetResult);
+	}
+}
+
+function x_wfSajaxSearch() {
+	sajax_do_call( "wfSajaxSearch", x_wfSajaxSearch.arguments );
+}
+
+	
+//Initialize
+function sajax_onload() {
+	x = document.getElementById( 'searchInput' );
+	x.onkeypress= function() { Search_Typing(); };
+	Searching_Go();
+	body = document.getElementById("content");
+}
+
+hookEvent("load", sajax_onload);

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,97 @@
+ at import url("common.css?1");
+
+body { margin: 0px; padding: 0px; color: black; }
+#specialform { display: inline; }
+#content { top: 0; margin: 0; padding: 0; }
+#topbar { padding: 0px; }
+#powersearch {
+  background: #DDEEFF; border-style: solid; border-width: 1px; padding: 2px;
+}
+#quickbar {
+ width: 140px; top: 18ex; padding: 2px; visibility: visible; z-index: 99;
+}
+#article, #article td, #article th, #article p {
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 10pt; color: black;
+}
+#article p {
+ padding-top: 0; padding-bottom: 0;
+ margin-top: 1ex; margin-bottom: 0;
+}
+p, pre, td, th, li, dd, dt { line-height: 12pt; }
+textarea { overflow: auto; }
+
+#footer { padding: 4px; }
+#footer form { display: inline; }
+#sitetitle {
+ font-family: Times, serif;
+ color: white;
+ font-weight: normal; font-size: 32pt;
+ line-height: 32pt;
+}
+td.top {
+ background-color: #6688AA; color: white;
+ margin-top: 4px; margin-bottom: 4px;
+ padding-top: 0; padding-bottom: 0;
+ text-transform: uppercase;
+ font-family: Verdana, Arial, sans-serif; font-size: 8pt;
+}
+td.top a {
+ font-family: Verdana, Arial, sans-serif;
+ background-color: #6688AA; color: white;
+ text-decoration: none; font-size: 10pt;
+}
+td.bottom {
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 10pt;
+ padding: 0;
+}
+#pagestats {
+ font-family: Verdana, Arial, sans-serif;
+ color: black;
+ font-size: 9pt;
+}
+#sitesub {
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 9pt; font-weight: bold;
+ color: black;
+ padding-top: 0;
+}
+#quickbar {
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 8pt; font-weight: bold; line-height: 9.5pt;
+ text-decoration: none;
+ color: black;
+ padding: 0; margin-top: 0;
+}
+#quickbar a { color: #446688; }
+
+#quickbar h6 {
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 10pt; font-weight: bold; line-height: 12pt;
+ text-decoration: none;
+ color: #666666;
+ padding: 0; margin-bottom: 2px; margin-top: 6px;
+}
+#quickbar form { padding: 0; margin-top: 0; }
+
+h1 {
+ color: #666666;
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 18pt; font-weight: bold; line-height: 21pt;
+}
+h1.pagetitle { padding-bottom: 0; margin-bottom: 0; }
+#article p.subtitle {
+ color: #666666; font-size: 11pt; font-weight: bold;
+ padding-top: 0; margin-top: 0; padding-bottom: 1ex;
+}
+
+a { color: #223366; }
+a.external { color: #336644; }
+a:visited { color: #8D0749; }
+a.printable { text-decoration: underline; }
+a.stub, #quickbar a.stub { color:#772233; text-decoration:none; }
+a.new, #quickbar a.new { color: #CC2200; }
+h2, h3, h4, h5, h6 { margin-bottom: 0; }
+small { font-size: 75%; }
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,381 @@
+/*
+ * common.css
+ * This file contains CSS settings common to Wikistandard, Nostalgia and CologneBlue
+ */
+#footer { clear: both }
+/* images */
+div.floatright { float: right; margin: 0 0 1em 1em; }
+div.floatright p { font-style: italic; }
+div.floatleft { float: left; margin: 0.3em 0.5em 0.5em 0; }
+div.floatleft p { font-style: italic; }
+
+
+/* Print-specific things to hide */
+.printfooter {
+        display: none;
+}
+
+/* table standards */
+table.rimage {
+        float:right;
+        margin-left:1em;
+        margin-bottom:1em;
+        text-align:center;
+        font-size:smaller;
+}
+
+/* thumbnails */
+div.thumb {
+    margin: 10px;
+    text-align: center;
+    width: auto;
+}
+div.thumb div {
+    border: 1px solid #8888aa;
+    background-color: #f7f8ff;
+    padding: 2px;
+    font-size: 94%;
+    text-align: center;
+    overflow: hidden;
+}
+div.thumb div * {
+    border: none;
+    background: none;
+}
+div.thumb img {
+    border:1px solid #8888AA;
+    margin-bottom:3px;
+    background:#FFFFFF;
+}
+div.thumbcaption,
+div.thumbcaption * {
+    border: none !important;
+    background: none !important;
+}
+div.thumbcaption {
+    padding: 0.2em 0 0.2em 0 !important;
+    text-align: left !important;
+}
+div.tright {
+    float: right;
+    margin-left:0.5em;
+}
+div.tleft {
+    float: left;
+    margin-right:0.5em;
+}
+
+/* Page history styling */
+/* the auto-generated edit comments */
+.autocomment { color: #4b4b4b; }
+#pagehistory span.user {
+    margin-left: 1.4em;
+    margin-right: 0.4em;
+}
+#pagehistory span.minor { font-weight: bold; }
+#pagehistory li { border: 1px solid White; }
+#pagehistory li.selected {
+    background-color:#f9f9f9;
+    border:1px dashed #aaaaaa;
+}
+
+table.diff { background:white; }
+td.diff-otitle { background:#cccccc; }
+td.diff-ntitle { background:#cccccc; }
+td.diff-addedline {
+    background:#ccffcc;
+    font-size: 94%;
+}
+td.diff-deletedline {
+    background:#ffffaa;
+    font-size: 94%;
+}
+td.diff-context {
+    background:#eeeeee;
+    font-size: 94%;
+}
+span.diffchange { color: red; font-weight: bold; }
+
+img { border: none; }
+img.tex { vertical-align: middle; }
+span.texhtml { font-family: serif; }
+
+
+#toc,
+.toc {
+	border: 1px solid #bba;
+	background-color: #f7f8ff;
+	padding: 5px;
+	font-size: 95%;
+	text-align: center;
+}
+#toc h2,
+.toc h2 {
+	display: inline;
+	border: none;
+	padding: 0;
+	font-size: 100%;
+	font-weight: bold;
+}
+#toc ul,
+.toc ul {
+	list-style-type: none;
+	list-style-image: none;
+	margin-left: 0;
+	padding-left: 0;
+	text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+	margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+	font-size: 94%;
+}
+
+
+.error {
+	color: red;
+	font-size: larger;
+}
+
+/* preference page with js-genrated toc */
+#preftoc {
+    float: left;
+    margin: 1em 1em 1em 1em;
+    width: 13em;
+}
+#preftoc li { border: 1px solid White; }
+#preftoc li.selected {
+    background-color:#f9f9f9;
+    border:1px dashed #aaaaaa;
+}
+#preftoc a,
+#preftoc a:active {
+    display: block;
+    color: #005189;
+}
+#prefcontrol {
+    clear: left;
+    float: left;
+    margin-top: 1em;
+}
+div.prefsectiontip {
+    font-size: 94%;
+    margin-top: 1em;
+}
+fieldset.prefsection { margin-top: 1em }
+fieldset.operaprefsection { margin-left: 15em }
+
+/* emulate center */
+.center {
+    width: 100%;
+    text-align: center;
+}
+*.center * {
+    margin-left: auto;
+    margin-right: auto;
+}
+/* small for tables and similar */
+.small, .small * { font-size: 94%; }
+table.small { font-size: 100% }
+
+div.townBox {
+    position:relative;
+    float:right;
+    background:White;
+    margin-left:1em;
+    border: 1px solid gray;
+    padding:0.3em;
+    width: 200px;
+    overflow: hidden;
+    clear: right;
+}
+div.townBox dl {
+    padding: 0;
+    margin: 0 0 0.3em 0;
+    font-size: 96%;
+}
+div.townBox dl dt {
+    background: none;
+    margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+    margin: 0.1em 0 0 1.1em;
+    background-color: #f3f3f3;
+}
+/* use this instead of #toc for page content */
+.toccolours {
+    border:1px solid #aaaaaa;
+    background-color:#f9f9f9;
+    padding:5px;
+    font-size: 95%;
+}
+#siteNotice {
+    border:1px solid #aaaaaa;
+    padding-left: 0.5em;
+    padding-right: 0.5em;
+}
+.redirectText {
+	font-size:150%;
+	margin:5px;
+}
+.searchmatch {
+	color: red;
+	font-weight: bold;
+}
+.sharedUploadNotice {
+	font-style: italic;
+}
+span.unpatrolled {
+	font-weight:bold;
+	color:red;
+}
+
+span.updatedmarker {
+	color:black;
+	background-color:#00FF00;
+}
+span.newpageletter {
+	font-weight:bold;
+	color:black;
+	background-color:yellow;
+}
+span.minoreditletter {
+	color:black;
+	background-color:#C5FFE6;
+}
+
+table.gallery {
+        border:  1px solid #cccccc;
+        margin:  2px;
+        padding: 2px;
+        background-color:#ffffff;
+}
+
+table.gallery tr {
+        vertical-align:top;
+}
+
+table.gallery td {
+      vertical-align:top;
+      background-color:#f9f9f9;
+      border: solid 2px white;
+}
+
+div.gallerybox {
+        margin: 2px;
+        width:  150px;
+}
+
+div.gallerybox div.thumb {
+        text-align: center;
+        border: 1px solid #cccccc;
+        margin: 2px;
+}
+
+div.gallerytext {
+        font-size: 94%;
+        padding: 2px 4px;
+}
+
+span.comment {
+	font-style: italic;
+}
+
+span.changedby {
+	font-size: 95%;
+}
+
+.previewnote {
+	text-align: center;
+	color: #cc0000;
+}
+.editExternally {
+        border-style:solid;
+        border-width:1px;
+        border-color:gray;
+        background: #ffffff;
+        padding:3px;
+        margin-top:0.5em;
+        float:left;
+        font-size:small;
+        text-align:center;
+}
+.editExternallyHelp {
+        font-style:italic;
+        color:gray;
+}
+
+li span.deleted {
+	text-decoration: line-through;
+	color: #888;
+	font-style: italic;
+}
+
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+	margin-left: 0.5em;
+}
+
+table.mw_metadata caption { font-weight: bold; }
+table.mw_metadata th { font-weight: normal; }
+table.mw_metadata td { padding: 0.1em; }
+
+table.mw_metadata {
+	border: none;
+	border-collapse: collapse;
+}
+table.mw_metadata td, table.mw_metadata th {
+	border: 1px solid #aaaaaa;
+	padding-left: 4px;
+	padding-right: 4px;
+}
+table.mw_metadata th {
+	background-color: #f9f9f9;
+}
+table.mw_metadata td {
+	background-color: #fcfcfc;
+}
+table.mw_metadata td.spacer {
+	background: inherit;
+	border-top: none;
+	border-bottom: none;
+}
+table.collapsed tr.collapsable {
+	display: none;
+}
+
+.visualClear {
+    clear: both;
+}
+
+#mw_trackbacks {
+	border: solid 1px #bbbbff;
+	background-color: #eeeeff;
+	padding: 0.2em;
+}
+
+/* Allmessages table */
+
+#allmessagestable th {
+	background-color: #b2b2ff;
+}
+
+#allmessagestable tr.orig {
+	background-color: #ffe2e2;
+}
+
+#allmessagestable tr.new {
+	background-color: #e2ffe2;
+}
+
+#allmessagestable tr.def {
+	background-color: #f0f0ff;
+}
+
+#jump-to-nav {
+  display: none;
+}
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,288 @@
+/*
+** MediaWiki Print style sheet for CSS2-capable browsers.
+** Copyright Gabriel Wicke, http://www.aulinx.de/
+**
+** Derived from the plone (http://plone.org/) styles
+** Copyright Alexander Limi
+*/
+
+/* Thanks to A List Apart (http://alistapart.com/) for useful extras */
+a.stub,
+a.new{ color:#ba0000; text-decoration:none; }
+
+#toc { 
+    /*border:1px solid #2f6fab;*/
+    border:1px solid #aaaaaa;
+    background-color:#f9f9f9;
+    padding:5px;
+}
+.tocindent {
+	margin-left: 2em;
+}
+.tocline {
+	margin-bottom: 0px;
+}
+.toctoggle, .editsection {
+	font-size: smaller;
+}
+
+/* images */
+div.floatright { 
+    float: right; 
+    margin: 0;
+    position:relative;
+    border: 0.5em solid White;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.floatright p { font-style: italic;} 
+div.floatleft { 
+    float: left; 
+    margin: 0.3em 0.5em 0.5em 0;
+    position:relative;
+    border: 0.5em solid White;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+div.floatleft p { font-style: italic; } 
+/* thumbnails */
+div.thumb {
+    margin-bottom: 0.5em;
+    border-style: solid; border-color: White;
+    width: auto;
+    overflow: hidden;
+}
+div.thumb div {
+    border:1px solid #cccccc;
+    padding: 3px !important;
+    background-color:#f9f9f9;
+    font-size: 94%;
+    text-align: center;
+}
+div.thumb div a img {
+    border:1px solid #cccccc;
+}
+div.thumb div div.thumbcaption {
+    border: none;
+    padding: 0.3em 0 0.1em 0;
+}
+div.magnify { display: none; }
+div.tright {
+    float: right;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.tleft {
+    float: left;
+    margin-right:0.5em;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+
+/* table standards */
+table.rimage {
+    float:right; 
+    width:1pt; 
+    position:relative;
+    margin-left:1em; 
+    margin-bottom:1em;
+    text-align:center;
+}
+
+body {
+    background: White;
+    /*font-size: 11pt !important;*/
+    color: Black;
+    margin: 0;
+    padding: 0;
+}
+
+.noprint,
+div#jump-to-nav,
+div.top,
+div#column-one,
+#colophon,
+.editsection,
+.toctoggle,
+.tochidden,
+div#f-poweredbyico,
+div#f-copyrightico,
+li#f-viewcount,
+li#f-about,
+li#f-disclaimer,
+li#f-privacy {
+    /* Hides all the elements irrelevant for printing */
+    display: none;
+}
+
+ul { 
+    list-style-type: square;
+}
+
+#content {
+    background: none;
+    border: none ! important;
+    font-size: 11pt;
+    padding: 0 ! important;
+    margin: 0 ! important;
+}
+#footer {
+	background : white;
+	color : black;
+    border-top: 1px solid black;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+    font-weight: bold;
+}
+
+p, .documentDescription {
+    margin: 1em 0 ! important;
+    line-height: 1.2em;    
+}
+
+.tocindent p {
+	margin: 0 0 0 0 ! important;
+}
+
+pre {
+    border: 1pt dashed black;
+    white-space: pre;
+    font-size: 8pt;
+    overflow: auto;
+    padding: 1em 0;
+	background : white;
+	color : black;
+}
+
+table.listing,
+table.listing td {
+    border: 1pt solid black;
+    border-collapse: collapse;
+}
+
+a {
+    color: Black !important;
+    padding: 0 !important
+}
+
+a:link, a:visited {
+    color: #520;
+    background: transparent;
+    text-decoration: underline;
+}
+
+#content a.external.text:after, #content a.external.autonumber:after {
+    /* Expand URLs for printing */
+    content: " (" attr(href) ") ";
+}
+
+#globalWrapper {
+    width: 100% !important;
+    min-width: 0 !important;
+}
+
+#content {
+	background : white;
+	color : black;
+}
+
+#column-content {
+    margin: 0 !important;
+}
+
+#column-content #content {
+    padding: 1em;
+    margin: 0 !important;
+}
+/* MSIE/Win doesn't understand 'inherit' */
+a, a.external, a.new, a.stub {
+	color: black ! important;
+	text-decoration: none ! important;
+}
+
+/* Continue ... */
+a, a.external, a.new, a.stub {
+	color: inherit ! important;
+	text-decoration: inherit ! important;
+}
+
+img { border: none; }
+img.tex { vertical-align: middle; }
+span.texhtml { font-family: serif; }
+
+div.townBox {
+    position:relative;
+    float:right;
+    background:White;
+    margin-left:1em;
+    border: 1px solid gray;
+    padding:0.3em;
+    width: 200px;
+    overflow: hidden;
+    clear: right;
+}
+div.townBox dl {
+    padding: 0;
+    margin: 0 0 0.3em 0; 
+    font-size: 96%;
+}
+div.townBox dl dt {
+    background: none;
+    margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+    margin: 0.1em 0 0 1.1em;
+    background-color: #f3f3f3;
+}
+
+#siteNotice { display: none; }
+
+table.gallery {
+        border:  1px solid #cccccc;
+        margin:  2px;
+        padding: 2px;
+        background-color:#ffffff;
+}
+
+table.gallery tr { 
+        vertical-align:top;
+}
+
+div.gallerybox {
+        border: 1px solid #cccccc;
+        margin: 2px;
+        background-color:#f9f9f9;
+        width:  150px;
+}
+
+div.gallerybox div.thumb {
+        text-align: center;
+        border: 1px solid #cccccc;
+        margin: 2px;
+}       
+
+div.gallerytext {
+        font-size: 94%;
+        padding: 2px 4px;
+}       
+
+/*
+** Diff rendering
+*/
+table.diff { background:white; }
+td.diff-otitle { background:#ffffff; }
+td.diff-ntitle { background:#ffffff; }
+td.diff-addedline {
+    background:#ccffcc;
+    font-size: smaller;
+    border: solid 2px black;
+}
+td.diff-deletedline {
+    background:#ffffaa;
+    font-size: smaller;
+    border: dotted 2px black;
+}
+td.diff-context {
+    background:#eeeeee;
+    font-size: smaller;
+}
+span.diffchange { color: silver; font-weight: bold; text-decoration: underline; }
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,15 @@
+/* js pref toc */
+#preftoc { float: right; }
+/* workaround for moz bug, displayed bullets on left side */
+#preftoc li { list-style: none; }
+#prefcontrol { float: right; }
+fieldset.prefsection,
+fieldset.operaprefsection { 
+    margin-left: 0;
+    margin-right: 18em;
+}
+/* page history */
+#pagehistory span.user { 
+    margin-right: 1.4em;
+    margin-left: 0.4em;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/feed.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/feed.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/feed.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,95 @@
+/*
+Make RSS and Atom feeds at least semi-legible to folk who accidentally
+load them in a browser...
+
+Compatibility:
+* Mozilla is fine.
+* Safari 1.2: the RSS <link> text isn't shown
+* Opera 7.5 uses the style sheet instead of its native RSS mode.
+* IE/Mac 5.2: none of the :before content works; doesn't get the charset right and displays garbage for non-ASCII.
+* IE/Win 6.0: No background color, borders, font size, font weight, or :before content.
+
+*/
+
+/* RSS: */ rss, channel, title, link, description, language, generator, lastBuildDate, item, pubDate, author, comments, creator,
+/* Atom: */ feed, id, modified, tagline, entry, issued, created, updated, summary, comment {
+	display: block;
+}
+
+rss, feed {
+	background: white;
+	color: black;
+	margin: 1em;
+	font-family: "Verdana", "Tahoma", "Arial", "Helvetica", sans-serif;
+	line-height: 1.5em;
+	font-size: 76%;
+}
+
+rss:before {
+	content: "This RSS feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
+}
+
+feed:before {
+	content: "This Atom feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
+}
+rss:before, feed:before {
+	color: red;
+	text-align: center;
+	line-height: 2em;
+}
+
+channel>title,
+item>title,
+feed>title,
+entry>title {
+	font-weight: bold;
+	border-bottom: solid 1px #aaa;
+	margin-left: -0.5em;
+}
+channel>title, feed>title {
+	font-size: larger;
+}
+item>title, entry>title {
+	font-size: large;
+}
+item, entry {
+	margin-top: 1em;
+	margin-left: 2em;
+}
+
+item>description, entry>summary {
+	white-space: pre;
+	overflow: auto;
+	background: #f8f8ff;
+}
+
+pubDate:before { content: "Date: " }
+link:before { content: "Link: " }
+author:before, creator:before { content: "Author: " }
+description:before { content: "Description: " }
+id:before { content: "Id: " }
+
+generator:before { content: "Generator: " }
+language:before { content: "Language: " }
+lastBuildDate:before { content: "Updated: " }
+comments:before { content: "Comments page: " }
+
+tagline:before { content: "Tagline: " }
+issued:before { content: "Issued: " }
+created:before { content: "Created: " }
+modified:before { content: "Modified: " }
+updated:before { content: "Updated: " }
+summary:before { content: "Summary: " }
+comment:before { content: "Comment: " }
+
+pubDate:before, link:before, author:before, description:before,
+language:before, generator:before, lastBuildDate:before, comments:before,
+tagline:before, issued:before, created:before, modified:before,
+summary:before, comment:before, creator:before, id:before, updated:before {
+	color: #224;
+	font-weight: bold;
+}
+
+feed link:after {
+	content: attr(href);
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_d.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_d.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_l.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_l.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.xcf
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_r.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Zoom_sans.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Zoom_sans.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/bullet.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/bullet.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_bold.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_bold.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_extlink.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_extlink.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_headline.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_headline.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_hr.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_hr.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_image.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_image.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_italic.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_italic.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_link.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_link.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_math.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_math.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_media.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_media.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_nowiki.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_nowiki.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_sig.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_sig.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_template.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/button_template.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/fileicon.xcf
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/fileicon.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.xcf
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/gnu-fdl.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/COPYING
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/COPYING	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/COPYING	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,43 @@
+The icons used here are derived from the crystalsvg icons in the the
+pics/crystalsvg/ directory of kdelibs-3.4.0 they were modified on 2005-05-15
+by Ævar Arnfjörð Bjarmason for use in MediaWiki.
+
+What follows is the contents of the LICENSE.crystalsvg file found in the pics/
+subdirectory of kdelibs-3.4.0:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+This copyright and license notice covers all CrystalSVG images.
+Note the license notice contains an add-on.
+********************************************************************************
+KDE Crystal theme icons.
+Copyright (C) 2002 and following years KDE Artists
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation,
+version 2.1 of the License.
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+    **** NOTE THIS ADD-ON ****
+The GNU Lesser General Public License or LGPL is written for software libraries
+in the first place. We expressly want the LGPL to be valid for this artwork
+library too.
+KDE Crystal theme icons is a special kind of software library, it is an
+artwork library, it's elements can be used in a Graphical User Interface, or
+GUI.
+Source code, for this library means:
+ - for vectors svg;
+ - for pixels, if applicable, the multi-layered formats xcf or psd, or
+otherwise png.
+The LGPL in some sections obliges you to make the files carry
+notices. With images this is in some cases impossible or hardly useful.
+With this library a notice is placed at a prominent place in the directory
+containing the elements. You may follow this practice.
+The exception in section 6 of the GNU Lesser General Public License covers
+the use of elements of this art library in a GUI.
+kde-artists [at] kde.org
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-c.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-c.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-cpp.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-cpp.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-deb.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-deb.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-dvi.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-dvi.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-exe.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-exe.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-h.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-h.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-html.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-html.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-iso.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-iso.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-java.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-java.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mid.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mid.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mov.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-mov.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-o.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-o.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.xcf
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-pdf.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-pdf.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ps.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ps.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rm.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rm.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rpm.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-rpm.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-svg.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-svg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tar.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tar.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tex.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-tex.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ttf.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ttf.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-txt.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-txt.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/link_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/link_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/magnify-clip.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/magnify-clip.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-small.xcf
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-small.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/poweredby_mediawiki_88x31.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/poweredby_mediawiki_88x31.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectltr.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectltr.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectrtl.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/redirectrtl.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki_moko.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/wiki_moko.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,49 @@
+// Exif metadata display for MediaWiki file uploads
+//
+// Add an expand/collapse link and collapse by default if set to
+// (with JS disabled, user will see all items)
+//
+// attachMetadataToggle("mw_metadata", "More...", "Fewer...");
+
+
+function attachMetadataToggle(tableId, showText, hideText) {
+	if (document.createTextNode) {
+		var box = document.getElementById(tableId);
+		if (!box)
+			return false;
+		
+		var tbody = box.getElementsByTagName('tbody')[0];
+		
+		var row = document.createElement('tr');
+		
+		var col = document.createElement('td');
+		col.colSpan = 2;
+		
+		var link = document.createElement('a');
+		link.href = '#';
+		
+		link.onclick = function() {
+			if (box.className == 'mw_metadata collapsed') {
+				changeText(link, hideText);
+				box.className = 'mw_metadata expanded';
+			} else {
+				changeText(link, showText);
+				box.className = 'mw_metadata collapsed';
+			}
+			return false;
+		}
+		
+		var text = document.createTextNode(hideText);
+		
+		link.appendChild(text);
+		col.appendChild(link);
+		row.appendChild(col);
+		tbody.appendChild(row);
+		
+		// And collapse!
+		link.onclick();
+		
+		return true;
+	}
+	return false;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,18 @@
+ at import url("common.css?1");
+body {
+	/* Background color is set separately on page type */
+	color: black;
+}
+#specialform { display: inline; }
+#powersearch {
+  background: #DDEEFF; border-style: solid; border-width: 1px; padding: 2px;
+}
+a.interwiki, a.external { color: #3366BB; }
+a.printable { text-decoration: underline; }
+a.stub { color:#772233; text-decoration:none; }
+h1.pagetitle { padding-top: 0; margin-top: 0; padding-bottom: 0; margin-bottom: 0; }
+h2, h3, h4, h5, h6 { margin-bottom: 0; }
+textarea { overflow: auto; }
+p.subtitle { padding-top: 0; margin-top: 0; }
+
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,53 @@
+// Live preview
+
+function openXMLHttpRequest() {
+	if( window.XMLHttpRequest ) {
+		return new XMLHttpRequest();
+	} else if( window.ActiveXObject && navigator.platform != 'MacPPC' ) {
+		// IE/Mac has an ActiveXObject but it doesn't work.
+		return new ActiveXObject("Microsoft.XMLHTTP");
+	} else {
+		return null;
+	}
+}
+
+/**
+ * Returns true if could open the request,
+ * false otherwise (eg no browser support).
+ */
+function livePreview(target, text, postUrl) {
+	prevTarget = target;
+	if( !target ) {
+		window.alert('Live preview failed!\nTry normal preview.');
+		var fallback = document.getElementById('wpPreview');
+		if ( fallback ) { fallback.style.display = 'inline'; }
+	}
+	prevReq = openXMLHttpRequest();
+	if( !prevReq ) return false;
+	
+	prevReq.onreadystatechange = updatePreviewText;
+	prevReq.open("POST", postUrl, true);
+	
+	var postData = 'wpTextbox1=' + encodeURIComponent(text);
+	prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+	prevReq.send(postData);
+	return true;
+}
+
+function updatePreviewText() {
+	if( prevReq.readyState != 4 ) {
+		return;
+	}
+	if( prevReq.status != 200 ) {
+		window.alert('Failed to connect: ' + prevReq.status +
+			' "' + prevReq.statusText + '"');
+		var fallback = document.getElementById('wpPreview');
+		if ( fallback ) { fallback.style.display = 'inline'; }
+		return;
+	}
+	prevTarget.innerHTML = prevReq.responseText;
+
+	/* Hide the active diff if it exists */
+	var diff = document.getElementById('wikiDiff');
+	if ( diff ) { diff.style.display = 'none'; }
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,126 @@
+function protectInitialize(tableId, labelText) {
+	if (document.createTextNode) {
+		var box = document.getElementById(tableId);
+		if (!box)
+			return false;
+		
+		var tbody = box.getElementsByTagName('tbody')[0];
+		var row = document.createElement('tr');
+		tbody.appendChild(row);
+		
+		row.appendChild(document.createElement('td'));
+		var col2 = document.createElement('td');
+		row.appendChild(col2);
+		
+		var check = document.createElement('input');
+		check.id = "mwProtectUnchained";
+		check.type = "checkbox";
+		check.onclick = protectChainUpdate;
+		col2.appendChild(check);
+		
+		var label = document.createElement('label');
+		label.setAttribute("for", "mwProtectUnchained");
+		label.appendChild(document.createTextNode(labelText));
+		col2.appendChild(label);
+		
+		if (protectAllMatch()) {
+			check.checked = false;
+			protectEnable(false);
+		} else {
+			check.checked = true;
+			protectEnable(true);
+		}
+		
+		return true;
+	}
+	return false;
+}
+
+function protectLevelsUpdate(source) {
+	if (!protectUnchained()) {
+		protectUpdateAll(source.selectedIndex);
+	}
+}
+
+function protectChainUpdate() {
+	if (protectUnchained()) {
+		protectEnable(true);
+	} else {
+		protectChain();
+		protectEnable(false);
+	}
+}
+
+
+function protectAllMatch() {
+	var values = new Array();
+	protectForSelectors(function(set) {
+		values[values.length] = set.selectedIndex;
+	});
+	for (var i = 1; i < values.length; i++) {
+		if (values[i] != values[0]) {
+			return false;
+		}
+	}
+	return true;
+}
+
+function protectUnchained() {
+	var unchain = document.getElementById("mwProtectUnchained");
+	if (!unchain) {
+		alert("This shouldn't happen");
+		return false;
+	}
+	return unchain.checked;
+}
+
+function protectChain() {
+	// Find the highest-protected action and bump them all to this level
+	var maxIndex = -1;
+	protectForSelectors(function(set) {
+		if (set.selectedIndex > maxIndex) {
+			maxIndex = set.selectedIndex;
+		}
+	});
+	protectUpdateAll(maxIndex);
+}
+
+function protectUpdateAll(index) {
+	protectForSelectors(function(set) {
+		if (set.selectedIndex != index) {
+			set.selectedIndex = index;
+		}
+	});
+}
+
+function protectForSelectors(func) {
+	var selectors = protectSelectors();
+	for (var i = 0; i < selectors.length; i++) {
+		func(selectors[i]);
+	}
+}
+
+function protectSelectors() {
+	var all = document.getElementsByTagName("select");
+	var ours = new Array();
+	for (var i = 0; i < all.length; i++) {
+		var set = all[i];
+		if (set.id.match(/^mwProtect-level-/)) {
+			ours[ours.length] = set;
+		}
+	}
+	return ours;
+}
+
+function protectEnable(val) {
+	// fixme
+	var first = true;
+	protectForSelectors(function(set) {
+		if (first) {
+			first = false;
+		} else {
+			set.disabled = !val;
+			set.style.visible = val ? "visible" : "hidden";
+		}
+	});
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar-right.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar-right.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar-right.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1 @@
+#quickbar { position: fixed; right: 0px; top: 0px; padding: 4px;}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/quickbar.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1 @@
+#quickbar { position: fixed; padding: 4px; }

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,124 @@
+// Make a layer that stays in the same place on screen when scrolling the browser window.
+// Version 1.2
+// See http://www.mark.ac/help for browser support.
+
+var mySticky;
+var theLayer;
+
+// Setup variables for sliding.
+// lastY and staticYOffset should match your CSS top definition.
+
+lastY=10;YOffset=0;staticYOffset=10;refreshMS=25;
+
+
+// Setup function that runs when the page loads.
+	function setup(eID){
+		bw=new checkBrowser;
+		if(bw.ns4||bw.opera){MM_reloadPage(true);}
+		var noFix=bw.ie4||bw.ns4||(bw.macie50)?true:false;
+		if (window.attachEvent){fix_bind()}
+		else if(noFix){	
+			if(bw.ns6){document.getElementById(eID).style.position="absolute";}
+			if(bw.macie50){document.getElementById(eID).style.position="absolute";document.getElementById(eID).style.backgroundColor="#ccffcc";}
+			if(bw.ns6&&YOffset==0){YOffset=-15}
+			mySticky=new makeLayerObj(eID);
+			layerSlide(eID)}
+		else{
+			mySticky=new makeLayerObj(eID);
+			mySticky.css.position="fixed";}
+
+		if(!mySticky){mySticky=new makeLayerObj(eID);}
+		//mySticky.css.visibility="visible";
+	}
+
+
+// -------------------------
+// emulate css 'position: fixed' in IE5+ Win
+// code by aclover at 1value.com
+	fix_elements = new Array();
+	
+	function fix_event(){
+		var i;
+		for (i=0; i < fix_elements.length; i++){
+			fix_elements[i].style.left = parseInt(fix_elements[i].fix_left)+document.getElementsByTagName('html')[0].scrollLeft+document.getElementsByTagName('body')[0].scrollLeft+'px';
+			fix_elements[i].style.top = parseInt(fix_elements[i].fix_top)+document.getElementsByTagName('html')[0].scrollTop+document.getElementsByTagName('body')[0].scrollTop+'px';
+		}
+	}
+
+	function fix_bind(){
+		var i;
+		for (i=0; i < document.all.length; i++){
+			if (document.all[i].currentStyle.position=='fixed'){
+				document.all[i].fix_left = document.all[i].currentStyle.left;
+				document.all[i].fix_top = document.all[i].currentStyle.top;
+				document.all[i].style.position = 'absolute';
+				fix_elements[fix_elements.length] = document.all[i];
+				window.attachEvent('onscroll', fix_event);
+				window.attachEvent('onresize', fix_event);
+			} 
+		}
+	}
+// -------------------------
+
+
+// -------------------------
+// DHTML menu sliding. Requires checkBrowser()
+// Based on source at http://www.simplythebest.net/
+	function layerSlide(layerID) {
+		if(bw.dhtml){
+			if(!mySticky){mySticky=new makeLayerObj(layerID);}
+			if (bw.ns) {winY = window.pageYOffset;}
+			else if (bw.ie) {winY = document.body.scrollTop;}
+			if (bw.ie||bw.ns) {
+				if (winY!=lastY&&winY>YOffset-staticYOffset){smooth = .3 * (winY - lastY - YOffset + staticYOffset);}
+				else if (YOffset-staticYOffset+lastY>YOffset-staticYOffset){smooth = .3 * (winY - lastY - (YOffset-(YOffset-winY)));}
+				else{smooth=0}
+				if(smooth > 0) {smooth = Math.ceil(smooth);}
+				else{smooth = Math.floor(smooth);}
+				if (bw.ie){mySticky.css.pixelTop+=smooth;}
+				else if (bw.ns){mySticky.css.top=parseInt(mySticky.css.top)+smooth;}
+				lastY = lastY+smooth;
+				top.window.status=new Date()
+				setTimeout('layerSlide("'+layerID+'")', refreshMS)}}}
+// -------------------------
+
+// Netscape 4.x browser resize fix
+	function MM_reloadPage(init) {
+  	if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
+    	document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; top.onresize=MM_reloadPage; }}
+  	else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) {location.reload();}}
+
+// Create browser-independent layer and browser objects
+	function makeLayerObj(eID){
+		if(document.getElementById){this.css=document.getElementById(eID).style}
+		else if(document.layers){this.css=document.layers[eID];}
+		else if(document.all){this.css=document.all[eID].style;}
+		return this
+	}
+	
+	function checkBrowser(){
+		this.ver=navigator.appVersion;
+		this.name=navigator.appName;
+		this.mac=(navigator.platform.toLowerCase().indexOf('mac')>-1)?true:false;
+		this.opera=(navigator.userAgent.toLowerCase().indexOf('opera')>-1)?true:false;
+		this.dom=document.getElementById?true:false;
+		this.ns=(this.name=='Netscape');
+		this.ie4=(document.all && !this.dom)?true:false;
+		this.ie=(this.name =='Microsoft Internet Explorer'&&!this.opera)?true:false;
+		this.ie5=(this.ie && (navigator.userAgent.indexOf("MSIE 5")!=-1))?true:false;
+		this.macie50=(this.mac&&this.ie5&&(navigator.userAgent.indexOf("MSIE 5.0")!=-1))?true:false
+		this.ns4=(this.ns && parseInt(this.ver) == 4)?true:false;
+		this.ns6=((this.name=="Netscape")&&(parseInt(this.ver)==5))?true:false
+		this.standards=document.getElementById?true:false;
+		this.dhtml=this.standards||this.ie4||this.ns4;
+	}
+	
+	function showMe(eID){
+		myFloater=new makeLayerObj(eID)
+		myFloater.css.visibility="visible";
+	}
+	
+	function hideMe(eID){
+		myFloater=new makeLayerObj(eID)
+		myFloater.css.visibility="hidden";
+	}
\ No newline at end of file

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,23 @@
+function licenseSelectorCheck() {
+	var selector = document.getElementById("wpLicense");
+	if (selector.selectedIndex > 0 &&
+		selector.options[selector.selectedIndex].value == "" ) {
+		// Browser is broken, doesn't respect disabled attribute on <option>
+		selector.selectedIndex = 0;
+	}
+}
+
+function licenseSelectorFixup() {
+	// for MSIE/Mac; non-breaking spaces cause the <option> not to render
+	// but, for some reason, setting the text to itself works
+	var selector = document.getElementById("wpLicense");
+	var ua = navigator.userAgent;
+	var isMacIe = (ua.indexOf("MSIE") != -1) && (ua.indexOf("Mac") != -1);
+	if (isMacIe) {
+		for (var i = 0; i < selector.options.length; i++) {
+			selector.options[i].text = selector.options[i].text;
+		}
+	}
+}
+
+addOnloadHook(licenseSelectorFixup);

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,711 @@
+// Wikipedia JavaScript support functions
+
+var clientPC = navigator.userAgent.toLowerCase(); // Get client info
+var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
+                && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
+var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
+var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
+if (clientPC.indexOf('opera') != -1) {
+	var is_opera = true;
+	var is_opera_preseven = (window.opera && !document.childNodes);
+	var is_opera_seven = (window.opera && document.childNodes);
+}
+
+// add any onload functions in this hook (please don't hard-code any events in the xhtml source)
+
+var doneOnloadHook;
+
+if (!window.onloadFuncts)
+	var onloadFuncts = [];
+
+function addOnloadHook(hookFunct) {
+	// Allows add-on scripts to add onload functions
+	onloadFuncts[onloadFuncts.length] = hookFunct;
+}
+
+function runOnloadHook() {
+	// don't run anything below this for non-dom browsers
+	if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName))
+		return;
+
+	histrowinit();
+	unhidetzbutton();
+	tabbedprefs();
+	akeytt();
+	scrollEditBox();
+	setupCheckboxShiftClick();
+
+	// Run any added-on functions
+	for (var i = 0; i < onloadFuncts.length; i++)
+		onloadFuncts[i]();
+
+	doneOnloadHook = true;
+}
+
+function hookEvent(hookName, hookFunct) {
+	if (window.addEventListener)
+		addEventListener(hookName, hookFunct, false);
+	else if (window.attachEvent)
+		attachEvent("on" + hookName, hookFunct);
+}
+
+hookEvent("load", runOnloadHook);
+
+// document.write special stylesheet links
+if (typeof stylepath != 'undefined' && typeof skin != 'undefined') {
+	if (is_opera_preseven) {
+		document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera6Fixes.css">');
+	} else if (is_opera_seven) {
+		document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera7Fixes.css">');
+	} else if (is_khtml) {
+		document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/KHTMLFixes.css">');
+	}
+}
+// Un-trap us from framesets
+if (window.top != window)
+	window.top.location = window.location;
+
+// for enhanced RecentChanges
+function toggleVisibility(_levelId, _otherId, _linkId) {
+	var thisLevel = document.getElementById(_levelId);
+	var otherLevel = document.getElementById(_otherId);
+	var linkLevel = document.getElementById(_linkId);
+	if (thisLevel.style.display == 'none') {
+		thisLevel.style.display = 'block';
+		otherLevel.style.display = 'none';
+		linkLevel.style.display = 'inline';
+	} else {
+		thisLevel.style.display = 'none';
+		otherLevel.style.display = 'inline';
+		linkLevel.style.display = 'none';
+	}
+}
+
+// page history stuff
+// attach event handlers to the input elements on history page
+function histrowinit() {
+	var hf = document.getElementById('pagehistory');
+	if (!hf)
+		return;
+	var lis = hf.getElementsByTagName('li');
+	for (i = 0; i < lis.length; i++) {
+		var inputs = historyRadios(lis[i]);
+		if (inputs[0] && inputs[1]) {
+			inputs[0].onclick = diffcheck;
+			inputs[1].onclick = diffcheck;
+		}
+	}
+	diffcheck();
+}
+
+function historyRadios(parent) {
+	var inputs = parent.getElementsByTagName('input');
+	var radios = [];
+	for (var i = 0; i < inputs.length; i++) {
+		if (inputs[i].name == "diff" || inputs[i].name == "oldid")
+			radios[radios.length] = inputs[i];
+	}
+	return radios;
+}
+
+// check selection and tweak visibility/class onclick
+function diffcheck() {
+	var dli = false; // the li where the diff radio is checked
+	var oli = false; // the li where the oldid radio is checked
+	var hf = document.getElementById('pagehistory');
+	if (!hf)
+		return;
+	var lis = hf.getElementsByTagName('li');
+	for (i=0;i<lis.length;i++) {
+		var inputs = historyRadios(lis[i]);
+		if (inputs[1] && inputs[0]) {
+			if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button
+				if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value)
+					return false;
+				if (oli) { // it's the second checked radio
+					if (inputs[1].checked) {
+						oli.className = "selected";
+						return false
+					}
+				} else if (inputs[0].checked) {
+					return false;
+				}
+				if (inputs[0].checked)
+					dli = lis[i];
+				if (!oli)
+					inputs[0].style.visibility = 'hidden';
+				if (dli)
+					inputs[1].style.visibility = 'hidden';
+				lis[i].className = "selected";
+				oli = lis[i];
+			}  else { // no radio is checked in this row
+				if (!oli)
+					inputs[0].style.visibility = 'hidden';
+				else
+					inputs[0].style.visibility = 'visible';
+				if (dli)
+					inputs[1].style.visibility = 'hidden';
+				else
+					inputs[1].style.visibility = 'visible';
+				lis[i].className = "";
+			}
+		}
+	}
+}
+
+// generate toc from prefs form, fold sections
+// XXX: needs testing on IE/Mac and safari
+// more comments to follow
+function tabbedprefs() {
+	var prefform = document.getElementById('preferences');
+	if (!prefform || !document.createElement)
+		return;
+	if (prefform.nodeName.toLowerCase() == 'a')
+		return; // Occasional IE problem
+	prefform.className = prefform.className + 'jsprefs';
+	var sections = new Array();
+	children = prefform.childNodes;
+	var seci = 0;
+	for (i = 0; i < children.length; i++) {
+		if (children[i].nodeName.toLowerCase() == 'fieldset') {
+			children[i].id = 'prefsection-' + seci;
+			children[i].className = 'prefsection';
+			if (is_opera || is_khtml)
+				children[i].className = 'prefsection operaprefsection';
+			legends = children[i].getElementsByTagName('legend');
+			sections[seci] = new Object();
+			legends[0].className = 'mainLegend';
+			if (legends[0] && legends[0].firstChild.nodeValue)
+				sections[seci].text = legends[0].firstChild.nodeValue;
+			else
+				sections[seci].text = '# ' + seci;
+			sections[seci].secid = children[i].id;
+			seci++;
+			if (sections.length != 1)
+				children[i].style.display = 'none';
+			else
+				var selectedid = children[i].id;
+		}
+	}
+	var toc = document.createElement('ul');
+	toc.id = 'preftoc';
+	toc.selectedid = selectedid;
+	for (i = 0; i < sections.length; i++) {
+		var li = document.createElement('li');
+		if (i == 0)
+			li.className = 'selected';
+		var a = document.createElement('a');
+		a.href = '#' + sections[i].secid;
+		a.onmousedown = a.onclick = uncoversection;
+		a.appendChild(document.createTextNode(sections[i].text));
+		a.secid = sections[i].secid;
+		li.appendChild(a);
+		toc.appendChild(li);
+	}
+	prefform.parentNode.insertBefore(toc, prefform.parentNode.childNodes[0]);
+	document.getElementById('prefsubmit').id = 'prefcontrol';
+}
+
+function uncoversection() {
+	oldsecid = this.parentNode.parentNode.selectedid;
+	newsec = document.getElementById(this.secid);
+	if (oldsecid != this.secid) {
+		ul = document.getElementById('preftoc');
+		document.getElementById(oldsecid).style.display = 'none';
+		newsec.style.display = 'block';
+		ul.selectedid = this.secid;
+		lis = ul.getElementsByTagName('li');
+		for (i = 0; i< lis.length; i++) {
+			lis[i].className = '';
+		}
+		this.parentNode.className = 'selected';
+	}
+	return false;
+}
+
+// Timezone stuff
+// tz in format [+-]HHMM
+function checkTimezone(tz, msg) {
+	var localclock = new Date();
+	// returns negative offset from GMT in minutes
+	var tzRaw = localclock.getTimezoneOffset();
+	var tzHour = Math.floor( Math.abs(tzRaw) / 60);
+	var tzMin = Math.abs(tzRaw) % 60;
+	var tzString = ((tzRaw >= 0) ? "-" : "+") + ((tzHour < 10) ? "0" : "") + tzHour + ((tzMin < 10) ? "0" : "") + tzMin;
+	if (tz != tzString) {
+		var junk = msg.split('$1');
+		document.write(junk[0] + "UTC" + tzString + junk[1]);
+	}
+}
+
+function unhidetzbutton() {
+	tzb = document.getElementById('guesstimezonebutton')
+	if (tzb)
+		tzb.style.display = 'inline';
+}
+
+// in [-]HH:MM format...
+// won't yet work with non-even tzs
+function fetchTimezone() {
+	// FIXME: work around Safari bug
+	var localclock = new Date();
+	// returns negative offset from GMT in minutes
+	var tzRaw = localclock.getTimezoneOffset();
+	var tzHour = Math.floor( Math.abs(tzRaw) / 60);
+	var tzMin = Math.abs(tzRaw) % 60;
+	var tzString = ((tzRaw >= 0) ? "-" : "") + ((tzHour < 10) ? "0" : "") + tzHour +
+		":" + ((tzMin < 10) ? "0" : "") + tzMin;
+	return tzString;
+}
+
+function guessTimezone(box) {
+	document.getElementsByName("wpHourDiff")[0].value = fetchTimezone();
+}
+
+function showTocToggle() {
+	if (document.createTextNode) {
+		// Uses DOM calls to avoid document.write + XHTML issues
+
+		var linkHolder = document.getElementById('toctitle')
+		if (!linkHolder)
+			return;
+
+		var outerSpan = document.createElement('span');
+		outerSpan.className = 'toctoggle';
+
+		var toggleLink = document.createElement('a');
+		toggleLink.id = 'togglelink';
+		toggleLink.className = 'internal';
+		toggleLink.href = 'javascript:toggleToc()';
+		toggleLink.appendChild(document.createTextNode(tocHideText));
+
+		outerSpan.appendChild(document.createTextNode('['));
+		outerSpan.appendChild(toggleLink);
+		outerSpan.appendChild(document.createTextNode(']'));
+
+		linkHolder.appendChild(document.createTextNode(' '));
+		linkHolder.appendChild(outerSpan);
+
+		var cookiePos = document.cookie.indexOf("hidetoc=");
+		if (cookiePos > -1 && document.cookie.charAt(cookiePos + 8) == 1)
+			toggleToc();
+	}
+}
+
+function changeText(el, newText) {
+	// Safari work around
+	if (el.innerText)
+		el.innerText = newText;
+	else if (el.firstChild && el.firstChild.nodeValue)
+		el.firstChild.nodeValue = newText;
+}
+
+function toggleToc() {
+	var toc = document.getElementById('toc').getElementsByTagName('ul')[0];
+	var toggleLink = document.getElementById('togglelink')
+
+	if (toc && toggleLink && toc.style.display == 'none') {
+		changeText(toggleLink, tocHideText);
+		toc.style.display = 'block';
+		document.cookie = "hidetoc=0";
+	} else {
+		changeText(toggleLink, tocShowText);
+		toc.style.display = 'none';
+		document.cookie = "hidetoc=1";
+	}
+}
+
+// this function generates the actual toolbar buttons with localized text
+// we use it to avoid creating the toolbar where javascript is not enabled
+function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
+	// Don't generate buttons for browsers which don't fully
+	// support it.
+	if (!document.selection && !is_gecko) {
+		return false;
+	}
+	imageFile = escapeQuotesHTML(imageFile);
+	speedTip = escapeQuotesHTML(speedTip);
+	tagOpen = escapeQuotes(tagOpen);
+	tagClose = escapeQuotes(tagClose);
+	sampleText = escapeQuotes(sampleText);
+	var mouseOver = "";
+
+	document.write("<a href=\"javascript:insertTags");
+	document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
+	document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
+	document.write("</a>");
+	return;
+}
+
+function escapeQuotes(text) {
+	var re = new RegExp("'","g");
+	text = text.replace(re,"\\'");
+	re = new RegExp("\\n","g");
+	text = text.replace(re,"\\n");
+	return escapeQuotesHTML(text);
+}
+
+function escapeQuotesHTML(text) {
+	var re = new RegExp('&',"g");
+	text = text.replace(re,"&amp;");
+	var re = new RegExp('"',"g");
+	text = text.replace(re,"&quot;");
+	var re = new RegExp('<',"g");
+	text = text.replace(re,"&lt;");
+	var re = new RegExp('>',"g");
+	text = text.replace(re,"&gt;");
+	return text;
+}
+
+// apply tagOpen/tagClose to selection in textarea,
+// use sampleText instead of selection if there is none
+// copied and adapted from phpBB
+function insertTags(tagOpen, tagClose, sampleText) {
+	if (document.editform)
+		var txtarea = document.editform.wpTextbox1;
+	else {
+		// some alternate form? take the first one we can find
+		var areas = document.getElementsByTagName('textarea');
+		var txtarea = areas[0];
+	}
+
+	// IE
+	if (document.selection  && !is_gecko) {
+		var theSelection = document.selection.createRange().text;
+		if (!theSelection)
+			theSelection=sampleText;
+		txtarea.focus();
+		if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
+			theSelection = theSelection.substring(0, theSelection.length - 1);
+			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
+		} else {
+			document.selection.createRange().text = tagOpen + theSelection + tagClose;
+		}
+
+	// Mozilla
+	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
+		var replaced = false;
+		var startPos = txtarea.selectionStart;
+		var endPos = txtarea.selectionEnd;
+		if (endPos-startPos)
+			replaced = true;
+		var scrollTop = txtarea.scrollTop;
+		var myText = (txtarea.value).substring(startPos, endPos);
+		if (!myText)
+			myText=sampleText;
+		if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
+			subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
+		} else {
+			subst = tagOpen + myText + tagClose;
+		}
+		txtarea.value = txtarea.value.substring(0, startPos) + subst +
+			txtarea.value.substring(endPos, txtarea.value.length);
+		txtarea.focus();
+		//set new selection
+		if (replaced) {
+			var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
+			txtarea.selectionStart = cPos;
+			txtarea.selectionEnd = cPos;
+		} else {
+			txtarea.selectionStart = startPos+tagOpen.length;
+			txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
+		}
+		txtarea.scrollTop = scrollTop;
+
+	// All other browsers get no toolbar.
+	// There was previously support for a crippled "help"
+	// bar, but that caused more problems than it solved.
+	}
+	// reposition cursor if possible
+	if (txtarea.createTextRange)
+		txtarea.caretPos = document.selection.createRange().duplicate();
+}
+
+function akeytt() {
+	if (typeof ta == "undefined" || !ta)
+		return;
+	var pref = 'alt-';
+	if (is_safari || navigator.userAgent.toLowerCase().indexOf('mac') + 1
+		|| navigator.userAgent.toLowerCase().indexOf('konqueror') + 1 )
+		pref = 'control-';
+	if (is_opera)
+		pref = 'shift-esc-';
+
+	for (var id in ta) {
+		var n = document.getElementById(id);
+		if (n) {
+			var a = null;
+			var ak = '';
+			// Are we putting accesskey in it
+			if (ta[id][0].length > 0) {
+				// Is this object a object? If not assume it's the next child.
+
+				if (n.nodeName.toLowerCase() == "a") {
+					a = n;
+				} else {
+					a = n.childNodes[0];
+				}
+
+				if (a) {
+					a.accessKey = ta[id][0];
+					ak = ' ['+pref+ta[id][0]+']';
+				}
+			} else {
+				// We don't care what type the object is when assigning tooltip
+				a = n;
+				ak = '';
+			}
+
+			if (a) {
+				a.title = ta[id][1]+ak;
+			}
+		}
+	}
+}
+
+function setupRightClickEdit() {
+	if (document.getElementsByTagName) {
+		var divs = document.getElementsByTagName('div');
+		for (var i = 0; i < divs.length; i++) {
+			var el = divs[i];
+			if(el.className == 'editsection') {
+				addRightClickEditHandler(el);
+			}
+		}
+	}
+}
+
+function addRightClickEditHandler(el) {
+	for (var i = 0; i < el.childNodes.length; i++) {
+		var link = el.childNodes[i];
+		if (link.nodeType == 1 && link.nodeName.toLowerCase() == 'a') {
+			var editHref = link.getAttribute('href');
+
+			// find the following a
+			var next = el.nextSibling;
+			while (next.nodeType != 1)
+				next = next.nextSibling;
+
+			// find the following header
+			next = next.nextSibling;
+			while (next.nodeType != 1)
+				next = next.nextSibling;
+
+			if (next && next.nodeType == 1 &&
+				next.nodeName.match(/^[Hh][1-6]$/)) {
+				next.oncontextmenu = function() {
+					document.location = editHref;
+					return false;
+				}
+			}
+		}
+	}
+}
+
+function setupCheckboxShiftClick() {
+	if (document.getElementsByTagName) {
+		var uls = document.getElementsByTagName('ul');
+		var len = uls.length;
+		for (var i = 0; i < len; ++i) {
+			addCheckboxClickHandlers(uls[i]);
+		}
+	}
+}
+
+function addCheckboxClickHandlers(ul, start, finish) {
+	if (ul.checkboxHandlersTimer) {
+		clearInterval(ul.checkboxHandlersTimer);
+	}
+	if ( !ul.childNodes ) {
+		return;
+	}
+	var len = ul.childNodes.length;
+	if (len < 2) {
+		return;
+	}
+	start = start || 0;
+	finish = finish || start + 250;
+	if ( finish > len ) { finish = len; }
+	ul.checkboxes = ul.checkboxes || [];
+	ul.lastCheckbox = ul.lastCheckbox || null;
+	for (var i = start; i<finish; ++i) {
+		var child = ul.childNodes[i];
+		if ( child && child.childNodes && child.childNodes[0] ) {
+			var cb = child.childNodes[0];
+			if ( !cb.nodeName || cb.nodeName.toLowerCase() != 'input' ||
+			     !cb.type || cb.type.toLowerCase() != 'checkbox' ) {
+				return;
+			}
+			cb.index = ul.checkboxes.push(cb) - 1;
+			cb.container = ul;
+			cb.onmouseup = checkboxMouseupHandler;
+		}
+	}
+	if (finish < len) {
+	  var f=function(){ addCheckboxClickHandlers(ul, finish, finish+250); };
+	  ul.checkboxHandlersTimer=setInterval(f, 200);
+	}
+}
+
+function checkboxMouseupHandler(e) {
+	if (typeof e == 'undefined') {
+		e = window.event;
+	}
+	if ( !e.shiftKey || this.container.lastCheckbox === null ) {
+		this.container.lastCheckbox = this.index;
+		return true;
+	}
+	var endState = !this.checked;
+	if ( is_opera ) { // opera has already toggled the checkbox by this point
+		endState = !endState;
+	}
+	var start, finish;
+	if ( this.index < this.container.lastCheckbox ) {
+		start = this.index + 1;
+		finish = this.container.lastCheckbox;
+	} else {
+		start = this.container.lastCheckbox;
+		finish = this.index - 1;
+	}
+	for (var i = start; i <= finish; ++i ) {
+		this.container.checkboxes[i].checked = endState;
+	}
+	this.container.lastCheckbox = this.index;
+	return true;
+}
+
+function fillDestFilename() {
+	if (!document.getElementById)
+		return;
+	var path = document.getElementById('wpUploadFile').value;
+	// Find trailing part
+	var slash = path.lastIndexOf('/');
+	var backslash = path.lastIndexOf('\\');
+	var fname;
+	if (slash == -1 && backslash == -1) {
+		fname = path;
+	} else if (slash > backslash) {
+		fname = path.substring(slash+1, 10000);
+	} else {
+		fname = path.substring(backslash+1, 10000);
+	}
+
+	// Capitalise first letter and replace spaces by underscores
+	fname = fname.charAt(0).toUpperCase().concat(fname.substring(1,10000)).replace(/ /g, '_');
+
+	// Output result
+	var destFile = document.getElementById('wpDestFile');
+	if (destFile)
+		destFile.value = fname;
+}
+
+
+function considerChangingExpiryFocus() {
+	if (!document.getElementById)
+		return;
+	var drop = document.getElementById('wpBlockExpiry');
+	if (!drop)
+		return;
+	var field = document.getElementById('wpBlockOther');
+	if (!field)
+		return;
+	var opt = drop.value;
+	if (opt == 'other')
+		field.style.display = '';
+	else
+		field.style.display = 'none';
+}
+
+function scrollEditBox() {
+	var editBoxEl = document.getElementById("wpTextbox1");
+	var scrollTopEl = document.getElementById("wpScrolltop");
+	var editFormEl = document.getElementById("editform");
+
+	if (editBoxEl && scrollTopEl) {
+		if (scrollTopEl.value) editBoxEl.scrollTop = scrollTopEl.value;
+		editFormEl.onsubmit = function() {
+			document.getElementById("wpScrolltop").value = document.getElementById("wpTextbox1").scrollTop;
+		}
+	}
+}
+
+hookEvent("load", scrollEditBox);
+
+function allmessagesfilter() {
+	text = document.getElementById('allmessagesinput').value;
+	k = document.getElementById('allmessagestable');
+	if (!k) { return;}
+
+	var items = k.getElementsByTagName('span');
+
+	if ( text.length > allmessages_prev.length ) {
+		for (var i = items.length-1, j = 0; i >= 0; i--) {
+			j = allmessagesforeach(items, i, j);
+		}
+	} else {
+		for (var i = 0, j = 0; i < items.length; i++) {
+			j = allmessagesforeach(items, i, j);
+		}
+	}
+	allmessages_prev = text;
+}
+
+function allmessagesforeach(items, i, j) {
+	var hItem = items[i].getAttribute('id');
+	if (hItem.substring(0,17) == 'sp-allmessages-i-') {
+		if (items[i].firstChild && items[i].firstChild.nodeName == '#text' && items[i].firstChild.nodeValue.indexOf(text) != -1) {
+			var itemA = document.getElementById( hItem.replace('i', 'r1') );
+			var itemB = document.getElementById( hItem.replace('i', 'r2') );
+			if ( itemA.style.display != '' ) {
+				var s = "allmessageshider(\"" + hItem.replace('i', 'r1') + "\", \"" + hItem.replace('i', 'r2') + "\", '')";
+				var k = window.setTimeout(s,j++*5);
+			}
+		} else {
+			var itemA = document.getElementById( hItem.replace('i', 'r1') );
+			var itemB = document.getElementById( hItem.replace('i', 'r2') );
+			if ( itemA.style.display != 'none' ) {
+				var s = "allmessageshider(\"" + hItem.replace('i', 'r1') + "\", \"" + hItem.replace('i', 'r2') + "\", 'none')";
+				var k = window.setTimeout(s,j++*5);
+			}
+		}
+	}
+	return j;
+}
+
+
+function allmessageshider(idA, idB, cstyle) {
+	var itemA = document.getElementById( idA );
+	var itemB = document.getElementById( idB );
+	if (itemA) { itemA.style.display = cstyle; }
+	if (itemB) { itemB.style.display = cstyle; }
+}
+
+function allmessagesmodified() {
+	allmessages_modified = !allmessages_modified;
+	k = document.getElementById('allmessagestable');
+	if (!k) { return;}
+	var items = k.getElementsByTagName('tr');
+	for (var i = 0, j = 0; i< items.length; i++) {
+		if (!allmessages_modified ) {
+			if ( items[i].style.display != '' ) {
+				var s = "allmessageshider(\"" + items[i].getAttribute('id') + "\", null, '')";
+				var k = window.setTimeout(s,j++*5);
+			}
+		} else if (items[i].getAttribute('class') == 'def' && allmessages_modified) {
+			if ( items[i].style.display != 'none' ) {
+				var s = "allmessageshider(\"" + items[i].getAttribute('id') + "\", null, 'none')";
+				var k = window.setTimeout(s,j++*5);
+			}
+		}
+	}
+}
+
+function allmessagesshow() {
+	k = document.getElementById('allmessagesfilter');
+	if (k) { k.style.display = ''; }
+
+	allmessages_prev = '';
+	allmessages_modified = false;
+}
+
+hookEvent("load", allmessagesshow);

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikiprintable.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikiprintable.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikiprintable.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,46 @@
+/* MediaWiki print stylesheet */
+
+body {
+	color: #000000; background: #ffffff;
+}
+
+
+/* MSIE/Win doesn't understand 'inherit' */
+a, a.external, a.new, a.stub {
+	color: black ! important;
+	text-decoration: none ! important;
+}
+#article {
+	margin: 0 ! important;
+}
+
+/* Continue ... */
+a, a.external, a.new, a.stub {
+	color: inherit ! important;
+	text-decoration: inherit ! important;
+}
+
+/* Hide ugly UI stuff */
+#quickbar, #topbar, #footer, #siteNotice,
+.editsection, .toctoggle {
+	display: none;
+}
+
+/* */
+#article {
+	position: relative;
+	margin: inherit ! important;
+}
+
+.printfooter {
+	border-top: solid 1px black;
+	display: block ! important;
+}
+
+/* Old stuff, fixme:
+a.CBlink { color: #0000AA; text-decoration: none; font-size: 12pt; }
+a.interwiki, a.external { color: #3333BB; text-decoration: none; }
+h1.pagetitle { padding-bottom: 0; margin-bottom: 0; }
+i.link, u.link { color: #000066; }
+p.subtitle { padding-top: 0; margin-top: 0; }
+*/

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,44 @@
+ at import url("common.css?1");
+
+#article { padding: 4px; }
+#content { margin: 0; padding: 0; }
+#footer { padding: 4px;font-size:95%;clear: both; }
+#pagestats { font-size: 9pt; }
+#powersearch {
+  background: #DDEEFF; border-style: solid; border-width: 1px; padding: 2px;
+}
+#quickbar { width: 140px; padding: 4px; visibility: visible; z-index:99;font-size:95%;}
+#topbar { padding: 4px;font-size:95%; }
+
+
+/* Table of contents */
+.toctoggle, .editsection { font-size: smaller; }
+
+/* ... */
+#toolbar { padding:0px; }
+#infobox { background:#eeeeff;color:black;}
+#editform { margin-top:1px; }
+a.interwiki, a.external { color: #3366BB; }
+a.printable { text-decoration: underline; }
+a.stub { color:#772233; text-decoration:none; }
+a:visited { color: #5A3696; }
+body { margin: 0px; padding: 4px; color: black; }
+form.inline { display: inline; }
+textarea { overflow: auto; }
+
+
+h1.pagetitle { padding-top: 0; margin-top: 0; padding-bottom: 0; margin-bottom: 0;
+font-size:150%; }
+h2 { font-size: 120%; }
+h2, h3, h4, h5, h6 { margin-bottom: 0;}
+h3 { font-size: 106.25%; }
+h4 { font-size: 103.125%; }
+h5 { font-size: 100%; }
+h6 { font-size: 95%; }
+hr.sep { color:gray;height:1px;background-color:gray;}
+p.subpages { font-size:small;}
+p.subtitle { padding-top: 0; margin-top: 0;}
+p.catlinks { font-size:small; margin-top:0; text-align:right;}
+td { empty-cells:show; }
+td.bottom { border-top: 1px solid gray; }
+td.top { border-bottom: 1px solid gray; }

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,228 @@
+<?php
+
+/**
+ * Default skin for HTML dumps, based on MonoBook.php
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/** */
+require_once( 'includes/SkinTemplate.php' );
+
+/**
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class SkinHTMLDump extends SkinTemplate {
+	/** Using monobook. */
+	function initPage( &$out ) {
+		SkinTemplate::initPage( $out );
+		$this->template  = 'HTMLDumpTemplate';
+	}
+
+	function buildSidebar() {
+		$sections = parent::buildSidebar();
+		$badMessages = array( 'recentchanges-url', 'randompage-url' );
+		$badUrls = array();
+		foreach ( $badMessages as $msg ) {
+			$badUrls[] = $this->makeInternalOrExternalUrl( wfMsgForContent( $msg ) );
+		}
+
+		foreach ( $sections as $heading => $section ) {
+			foreach ( $section as $index => $link ) {
+				if ( in_array( $link['href'], $badUrls ) ) {
+					unset( $sections[$heading][$index] );
+				}
+			}
+		}
+		return $sections;
+	}
+
+	function buildContentActionUrls() {
+		global $wgHTMLDump;
+
+		$content_actions = array();
+		$nskey = $this->getNameSpaceKey();
+		$content_actions[$nskey] = $this->tabAction(
+			$this->mTitle->getSubjectPage(),
+			$nskey,
+			!$this->mTitle->isTalkPage() );
+
+		$content_actions['talk'] = $this->tabAction(
+			$this->mTitle->getTalkPage(),
+			'talk',
+			$this->mTitle->isTalkPage(),
+			'',
+			true);
+
+		if ( isset( $wgHTMLDump ) ) {
+			$content_actions['current'] = array(
+				'text' => wfMsg( 'currentrev' ),
+				'href' => str_replace( '$1', wfUrlencode( $this->mTitle->getPrefixedDBkey() ),
+					$wgHTMLDump->oldArticlePath ),
+				'class' => false
+			);
+		}
+		return $content_actions;
+	}
+
+	function makeBrokenLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+		if ( !isset( $nt ) ) {
+			return "<!-- ERROR -->{$prefix}{$text}{$trail}";
+		}
+
+		if ( $nt->getNamespace() == NS_CATEGORY ) {
+			return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix );
+		}
+
+		if ( $text == '' ) {
+			$text = $nt->getPrefixedText();
+		}
+		return $prefix . $text . $trail;
+	}
+}
+
+/**
+ * @todo document
+ * @package MediaWiki
+ * @subpackage Skins
+ */
+class HTMLDumpTemplate extends QuickTemplate {
+	/**
+	 * Template filter callback for MonoBook skin.
+	 * Takes an associative array of data set from a SkinTemplate-based
+	 * class, and a wrapper for MediaWiki's localization database, and
+	 * outputs a formatted page.
+	 *
+	 * @access private
+	 */
+	function execute() {
+		wfSuppressWarnings();
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
+  <head>
+    <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
+    <?php $this->html('headlinks') ?>
+    <title><?php $this->text('pagetitle') ?></title>
+    <style type="text/css">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/htmldump/main.css"; /*]]>*/</style>
+    <link rel="stylesheet" type="text/css" media="print" href="<?php $this->text('stylepath') ?>/common/commonPrint.css" />
+    <!--[if lt IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE50Fixes.css";</style><![endif]-->
+    <!--[if IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE55Fixes.css";</style><![endif]-->
+    <!--[if IE 6]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE60Fixes.css";</style><![endif]-->
+    <!--[if IE]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js"></script>
+    <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+    <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js"></script>
+    <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/md5.js"></script>
+    <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/utf8.js"></script>
+    <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/lookup.js"></script>
+    <?php if($this->data['jsvarurl'  ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl'  ) ?>"></script><?php } ?>
+    <?php if($this->data['pagecss'   ]) { ?><style type="text/css"><?php              $this->html('pagecss'   ) ?></style><?php    } ?>
+    <?php if($this->data['usercss'   ]) { ?><style type="text/css"><?php              $this->html('usercss'   ) ?></style><?php    } ?>
+    <?php if($this->data['userjs'    ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs'    ) ?>"></script><?php } ?>
+    <?php if($this->data['userjsprev']) { ?><script type="<?php $this->text('jsmimetype') ?>"><?php      $this->html('userjsprev') ?></script><?php   } ?>
+  </head>
+  <body
+    <?php if($this->data['nsclass'        ]) { ?>class="<?php      $this->text('nsclass')         ?>"<?php } ?>>
+    <div id="globalWrapper">
+      <div id="column-content">
+	<div id="content">
+	  <a name="top" id="contentTop"></a>
+	  <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+	  <h1 class="firstHeading"><?php $this->text('title') ?></h1>
+	  <div id="bodyContent">
+	    <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
+	    <div id="contentSub"><?php $this->html('subtitle') ?></div>
+	    <?php if($this->data['undelete']) { ?><div id="contentSub"><?php     $this->html('undelete') ?></div><?php } ?>
+	    <?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk')  ?></div><?php } ?>
+	    <!-- start content -->
+	    <?php $this->html('bodytext') ?>
+	    <?php if($this->data['catlinks']) { ?><div id="catlinks"><?php       $this->html('catlinks') ?></div><?php } ?>
+	    <!-- end content -->
+	    <div class="visualClear"></div>
+	  </div>
+	</div>
+      </div>
+      <div id="column-one">
+	<div id="p-cactions" class="portlet">
+	  <h5>Views</h5>
+	  <ul>
+	    <?php foreach($this->data['content_actions'] as $key => $action) {
+	       ?><li id="ca-<?php echo htmlspecialchars($key) ?>"
+	       <?php if($action['class']) { ?>class="<?php echo htmlspecialchars($action['class']) ?>"<?php } ?>
+	       ><a href="<?php echo htmlspecialchars($action['href']) ?>"><?php
+	       echo htmlspecialchars($action['text']) ?></a></li><?php
+	     } ?>
+	  </ul>
+	</div>
+	<div class="portlet" id="p-logo">
+	  <a style="background-image: url(<?php $this->text('logopath') ?>);"
+	    href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"
+	    title="<?php $this->msg('mainpage') ?>"></a>
+	</div>
+	<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
+	<?php foreach ($this->data['sidebar'] as $bar => $cont) { ?>
+	<div class='portlet' id='p-<?php echo htmlspecialchars($bar) ?>'>
+	  <h5><?php $this->msg( $bar ) ?></h5>
+	  <div class='pBody'>
+	    <ul>
+	    <?php foreach($cont as $key => $val) { ?>
+	      <li id="<?php echo htmlspecialchars($val['id']) ?>"><a href="<?php echo htmlspecialchars($val['href']) ?>"><?php echo htmlspecialchars($val['text'])?></a></li>
+	     <?php } ?>
+	    </ul>
+	  </div>
+	</div>
+	<?php } ?>
+	<div id="p-search" class="portlet">
+	  <h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+	  <div class="pBody">
+	    <form action="javascript:goToStatic(3)" id="searchform"><div>
+	      <input id="searchInput" name="search" type="text"
+	        <?php if($this->haveMsg('accesskey-search')) {
+	          ?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
+	        if( isset( $this->data['search'] ) ) {
+	          ?> value="<?php $this->text('search') ?>"<?php } ?> />
+	      <input type='submit' name="go" class="searchButton" id="searchGoButton"
+	        value="<?php $this->msg('go') ?>" />
+	    </div></form>
+	  </div>
+	</div>
+	<?php if( $this->data['language_urls'] ) { ?><div id="p-lang" class="portlet">
+	  <h5><?php $this->msg('otherlanguages') ?></h5>
+	  <div class="pBody">
+	    <ul>
+	      <?php foreach($this->data['language_urls'] as $langlink) { ?>
+	      <li>
+	      <a href="<?php echo htmlspecialchars($langlink['href'])
+	        ?>"><?php echo $langlink['text'] ?></a>
+	      </li>
+	      <?php } ?>
+	    </ul>
+	  </div>
+	</div>
+	<?php } ?>
+      </div><!-- end of the left (by default at least) column -->
+      <div class="visualClear"></div>
+      <div id="footer">
+    <?php if($this->data['poweredbyico']) { ?><div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div><?php } ?>
+	<?php if($this->data['copyrightico']) { ?><div id="f-copyrightico"><?php $this->html('copyrightico') ?></div><?php } ?>
+	<ul id="f-list">
+	  <?php if($this->data['lastmod'   ]) { ?><li id="f-lastmod"><?php    $this->html('lastmod')    ?></li><?php } ?>
+	  <?php if($this->data['numberofwatchingusers' ]) { ?><li id="f-numberofwatchingusers"><?php  $this->html('numberofwatchingusers') ?></li><?php } ?>
+	  <?php if($this->data['credits'   ]) { ?><li id="f-credits"><?php    $this->html('credits')    ?></li><?php } ?>
+	  <?php if($this->data['copyright' ]) { ?><li id="f-copyright"><?php  $this->html('copyright')  ?></li><?php } ?>
+	  <?php if($this->data['about'     ]) { ?><li id="f-about"><?php      $this->html('about')      ?></li><?php } ?>
+	  <?php if($this->data['disclaimer']) { ?><li id="f-disclaimer"><?php $this->html('disclaimer') ?></li><?php } ?>
+	  <?php if($this->data['tagline']) { ?><li id="f-tagline"><?php echo $this->data['tagline'] ?></li><?php } ?>
+	</ul>
+      </div>
+    </div>
+  </body>
+</html>
+<?php
+		wfRestoreWarnings();
+	}
+}
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,1388 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+	die( "This file is part of MediaWiki, it is not a valid entry point\n" );
+}
+
+require_once( 'includes/cbt/CBTProcessor.php' );
+require_once( 'includes/cbt/CBTCompiler.php' );
+require_once( 'includes/SkinTemplate.php' );
+
+/**
+ * MonoBook clone using the new dependency-tracking template processor.
+ * EXPERIMENTAL - use only for testing and profiling at this stage
+ *
+ * The main thing that's missing is cache invalidation, on change of:
+ *   * messages
+ *   * user preferences
+ *   * source template
+ *   * source code and configuration files
+ *
+ * The other thing is that lots of dependencies that are declared in the callbacks
+ * are not intelligently handled. There's some room for improvement there.
+ *
+ * The class is derived from SkinTemplate, but that's only temporary. Eventually 
+ * it'll be derived from Skin, and I've avoided using SkinTemplate functions as 
+ * much as possible. In fact, the only SkinTemplate dependencies I know of at the 
+ * moment are the functions to generate the gen=css and gen=js files. 
+ * 
+ */
+class SkinMonoBookCBT extends SkinTemplate {
+	var $mOut, $mTitle;
+	var $mStyleName = 'monobook';
+	var $mCompiling = false;
+	var $mFunctionCache = array();
+
+	/******************************************************
+	 * General functions                                  *
+	 ******************************************************/
+	
+	/** Execute the template and write out the result */
+	function outputPage( &$out ) {
+		echo $this->execute( $out );
+	}
+
+	function execute( &$out ) {
+		global $wgTitle, $wgStyleDirectory, $wgParserCacheType;
+		$fname = 'SkinMonoBookCBT::execute';
+		wfProfileIn( $fname );
+		wfProfileIn( "$fname-setup" );
+		Skin::initPage( $out );
+		
+		$this->mOut =&	$out;
+		$this->mTitle =& $wgTitle;
+
+		$sourceFile = "$wgStyleDirectory/MonoBook.tpl";
+
+		wfProfileOut( "$fname-setup" );
+	
+		if ( $wgParserCacheType == CACHE_NONE ) {
+			$template = file_get_contents( $sourceFile );
+			$text = $this->executeTemplate( $template );
+		} else {
+			$compiled = $this->getCompiledTemplate( $sourceFile );
+			
+			wfProfileIn( "$fname-eval" );
+			$text = eval( $compiled );
+			wfProfileOut( "$fname-eval" );
+		}
+		wfProfileOut( $fname );
+		return $text;
+	}
+
+	function getCompiledTemplate( $sourceFile ) {
+		global $wgDBname, $wgMemc, $wgRequest, $wgUser, $parserMemc;
+		$fname = 'SkinMonoBookCBT::getCompiledTemplate';
+
+		$expiry = 3600;
+		
+		// Sandbox template execution
+		if ( $this->mCompiling ) {
+			return;
+		}
+		
+		wfProfileIn( $fname );
+
+		// Is the request an ordinary page view?
+		if ( $wgRequest->wasPosted() || 
+				count( array_diff( array_keys( $_GET ), array( 'title', 'useskin', 'recompile' ) ) ) != 0 ) 
+		{
+			$type = 'nonview';
+		} else {
+			$type = 'view';
+		}
+
+		// Per-user compiled template
+		// Put all logged-out users on the same cache key
+		$cacheKey = "$wgDBname:monobookcbt:$type:" . $wgUser->getId();
+
+		$recompile = $wgRequest->getVal( 'recompile' );
+		if ( $recompile == 'user' ) {
+			$recompileUser = true;
+			$recompileGeneric = false;
+		} elseif ( $recompile ) {
+			$recompileUser = true;
+			$recompileGeneric = true;
+		} else {
+			$recompileUser = false;
+			$recompileGeneric = false;
+		}
+		
+		if ( !$recompileUser ) { 
+			$php = $parserMemc->get( $cacheKey );
+		}
+		if ( $recompileUser || !$php ) {
+			if ( $wgUser->isLoggedIn() ) {
+				// Perform staged compilation
+				// First compile a generic template for all logged-in users
+				$genericKey = "$wgDBname:monobookcbt:$type:loggedin";
+				if ( !$recompileGeneric ) {
+					$template = $parserMemc->get( $genericKey );
+				}
+				if ( $recompileGeneric || !$template ) {
+					$template = file_get_contents( $sourceFile );
+					$ignore = array( 'loggedin', '!loggedin dynamic' );
+					if ( $type == 'view' ) {
+						$ignore[] = 'nonview dynamic';
+					}
+					$template = $this->compileTemplate( $template, $ignore );
+					$parserMemc->set( $genericKey, $template, $expiry );
+				}
+			} else {
+				$template = file_get_contents( $sourceFile );
+			}
+
+			$ignore = array( 'lang', 'loggedin', 'user' );
+			if ( $wgUser->isLoggedIn() ) {
+				$ignore[] = '!loggedin dynamic';
+			} else {
+				$ignore[] = 'loggedin dynamic';
+			}
+			if ( $type == 'view' ) {
+				$ignore[] = 'nonview dynamic';
+			}
+			$compiled = $this->compileTemplate( $template, $ignore );
+
+			// Reduce whitespace
+			// This is done here instead of in CBTProcessor because we can be 
+			// more sure it is safe here.
+			$compiled = preg_replace( '/^[ \t]+/m', '', $compiled );
+			$compiled = preg_replace( '/[\r\n]+/', "\n", $compiled );
+
+			// Compile to PHP
+			$compiler = new CBTCompiler( $compiled );
+			$ret = $compiler->compile();
+			if ( $ret !== true ) {
+				echo $ret;
+				wfErrorExit();
+			}
+			$php = $compiler->generatePHP( '$this' );
+
+			$parserMemc->set( $cacheKey, $php, $expiry );
+		}
+		wfProfileOut( $fname );
+		return $php;
+	}
+
+	function compileTemplate( $template, $ignore ) {
+		$tp = new CBTProcessor( $template, $this, $ignore );
+		$tp->mFunctionCache = $this->mFunctionCache;
+
+		$this->mCompiling = true;
+		$compiled = $tp->compile();
+		$this->mCompiling = false;
+
+		if ( $tp->getLastError() ) {
+			// If there was a compile error, don't save the template
+			// Instead just print the error and exit
+			echo $compiled;
+			wfErrorExit();
+		}
+		$this->mFunctionCache = $tp->mFunctionCache;
+		return $compiled;
+	}
+
+	function executeTemplate( $template ) {
+		$fname = 'SkinMonoBookCBT::executeTemplate';
+		wfProfileIn( $fname );
+		$tp = new CBTProcessor( $template, $this );
+		$tp->mFunctionCache = $this->mFunctionCache;
+		
+		$this->mCompiling = true;
+		$text = $tp->execute();
+		$this->mCompiling = false;
+
+		$this->mFunctionCache = $tp->mFunctionCache;
+		wfProfileOut( $fname );
+		return $text;
+	}
+	
+	/******************************************************
+	 * Callbacks                                          *
+	 ******************************************************/
+
+	function lang() { return $GLOBALS['wgContLanguageCode']; }
+
+	function dir() {
+		global $wgContLang;
+		return $wgContLang->isRTL() ? 'rtl' : 'ltr';
+	}
+	
+	function mimetype() { return $GLOBALS['wgMimeType']; }
+	function charset() { return $GLOBALS['wgOutputEncoding']; }
+	function headlinks() { 
+		return cbt_value( $this->mOut->getHeadLinks(), 'dynamic' );
+	}
+	function headscripts() { 
+		return cbt_value( $this->mOut->getScript(), 'dynamic' );
+	}
+	
+	function pagetitle() { 
+		return cbt_value( $this->mOut->getHTMLTitle(), array( 'title', 'lang' ) ); 
+	}
+	
+	function stylepath() { return $GLOBALS['wgStylePath']; }
+	function stylename() { return $this->mStyleName; }
+	
+	function notprintable() {
+		global $wgRequest;
+		return cbt_value( !$wgRequest->getBool( 'printable' ), 'nonview dynamic' );
+	}
+	
+	function jsmimetype() { return $GLOBALS['wgJsMimeType']; }
+	
+	function jsvarurl() {
+		global $wgUseSiteJs, $wgUser;
+		if ( !$wgUseSiteJs ) return '';
+		
+		if ( $wgUser->isLoggedIn() ) {
+			$url = $this->makeUrl('-','action=raw&smaxage=0&gen=js');
+		} else {
+			$url = $this->makeUrl('-','action=raw&gen=js');
+		}
+		return cbt_value( $url, 'loggedin' );
+	}
+	
+	function pagecss() {
+		global $wgHooks;
+		
+		$out = false;
+		wfRunHooks( 'SkinTemplateSetupPageCss', array( &$out ) );
+
+		// Unknown dependencies
+		return cbt_value( $out, 'dynamic' );
+	}
+	
+	function usercss() {
+		if ( $this->isCssPreview() ) {
+			global $wgRequest;
+			$usercss = $this->makeStylesheetCdata( $wgRequest->getText('wpTextbox1') );
+		} else {
+			$usercss = $this->makeStylesheetLink( $this->makeUrl($this->getUserPageText() . 
+				'/'.$this->mStyleName.'.css', 'action=raw&ctype=text/css' ) );
+		}
+
+		// Dynamic when not an ordinary page view, also depends on the username
+		return cbt_value( $usercss, array( 'nonview dynamic', 'user' ) );
+	}
+	
+	function sitecss() {
+		global $wgUseSiteCss;
+		if ( !$wgUseSiteCss ) {
+			return '';
+		}
+
+		global $wgSquidMaxage, $wgContLang, $wgStylePath;
+			
+		$query = "action=raw&ctype=text/css&smaxage=$wgSquidMaxage";
+		
+		$sitecss = '';
+		if ( $wgContLang->isRTL() ) {
+			$sitecss .= $this->makeStylesheetLink( $wgStylePath . '/' . $this->mStyleName . '/rtl.css' ) . "\n";
+		}
+
+		$sitecss .= $this->makeStylesheetLink( $this->makeNSUrl('Common.css', $query, NS_MEDIAWIKI) ) . "\n";
+		$sitecss .= $this->makeStylesheetLink( $this->makeNSUrl(
+			ucfirst($this->mStyleName) . '.css', $query, NS_MEDIAWIKI) ) . "\n";
+
+		// No deps
+		return $sitecss;
+	}
+
+	function gencss() {
+		global $wgUseSiteCss;
+		if ( !$wgUseSiteCss ) return '';
+		
+		global $wgSquidMaxage, $wgUser, $wgAllowUserCss;
+		if ( $this->isCssPreview() ) {
+			$siteargs = '&smaxage=0&maxage=0';
+		} else {
+			$siteargs = '&maxage=' . $wgSquidMaxage;
+		}
+		if ( $wgAllowUserCss && $wgUser->isLoggedIn() ) {
+			$siteargs .= '&ts={user_touched}';
+			$isTemplate = true;
+		} else {
+			$isTemplate = false;
+		}
+		
+		$link = $this->makeStylesheetLink( $this->makeUrl('-','action=raw&gen=css' . $siteargs) ) . "\n";
+
+		if ( $wgAllowUserCss ) {
+			$deps = 'loggedin';
+		} else { 
+			$deps = array();
+		}
+		return cbt_value( $link, $deps, $isTemplate );
+	}
+	
+	function user_touched() {
+		global $wgUser;
+		return cbt_value( $wgUser->mTouched, 'dynamic' );
+	}
+		
+	function userjs() {
+		global $wgAllowUserJs, $wgJsMimeType;
+		if ( !$wgAllowUserJs ) return '';
+		
+		if ( $this->isJsPreview() ) {
+			$url = '';
+		} else {
+			$url = $this->makeUrl($this->getUserPageText().'/'.$this->mStyleName.'.js', 'action=raw&ctype='.$wgJsMimeType.'&dontcountme=s');
+		}
+		return cbt_value( $url, array( 'nonview dynamic', 'user' ) );
+	}
+	
+	function userjsprev() {
+		global $wgAllowUserJs, $wgRequest;
+		if ( !$wgAllowUserJs ) return '';
+		if ( $this->isJsPreview() ) {
+			$js = '/*<![CDATA[*/ ' . $wgRequest->getText('wpTextbox1') . ' /*]]>*/';
+		} else {
+			$js = '';
+		}
+		return cbt_value( $js, array( 'nonview dynamic' ) );
+	}
+	
+	function trackbackhtml() {
+		global $wgUseTrackbacks;
+		if ( !$wgUseTrackbacks ) return '';
+
+		if ( $this->mOut->isArticleRelated() ) {
+			$tb = $this->mTitle->trackbackRDF();
+		} else {
+			$tb = '';
+		}
+		return cbt_value( $tb, 'dynamic' );
+	}
+	
+	function body_ondblclick() {
+		global $wgUser;
+		if( $this->isEditable() && $wgUser->getOption("editondblclick") ) {
+			$js = 'document.location = "' . $this->getEditUrl() .'";';
+		} else {
+			$js = '';
+		}
+
+		if ( User::getDefaultOption('editondblclick') ) {
+			return cbt_value( $js, 'user', 'title' );
+		} else {
+			// Optimise away for logged-out users
+			return cbt_value( $js, 'loggedin dynamic' );
+		}
+	}
+	
+	function body_onload() {
+		global $wgUser;
+		if ( $this->isEditable() && $wgUser->getOption( 'editsectiononrightclick' ) ) {
+			$js = 'setupRightClickEdit()';
+		} else {
+			$js = '';
+		}
+		return cbt_value( $js, 'loggedin dynamic' );
+	}
+	
+	function nsclass() {
+		return cbt_value( 'ns-' . $this->mTitle->getNamespace(), 'title' );
+	}
+	
+	function sitenotice() {
+		// Perhaps this could be given special dependencies using our knowledge of what 
+		// wfGetSiteNotice() depends on.
+		return cbt_value( wfGetSiteNotice(), 'dynamic' );
+	}
+	
+	function title() {
+		return cbt_value( $this->mOut->getPageTitle(), array( 'title', 'lang' ) );
+	}
+
+	function title_urlform() {
+		return cbt_value( $this->getThisTitleUrlForm(), 'title' );
+	}
+
+	function title_userurl() {
+		return cbt_value( urlencode( $this->mTitle->getDBkey() ), 'title' );
+	}
+
+	function subtitle() {
+		$subpagestr = $this->subPageSubtitle();
+		if ( !empty( $subpagestr ) ) {
+			$s = '<span class="subpages">'.$subpagestr.'</span>'.$this->mOut->getSubtitle();
+		} else {
+			$s = $this->mOut->getSubtitle();
+		}
+		return cbt_value( $s, array( 'title', 'nonview dynamic' ) );
+	}
+	
+	function undelete() {
+		return cbt_value( $this->getUndeleteLink(), array( 'title', 'lang' ) );
+	}
+	
+	function newtalk() {
+		global $wgUser, $wgDBname;
+		$newtalks = $wgUser->getNewMessageLinks();
+
+		if (count($newtalks) == 1 && $newtalks[0]["wiki"] === $wgDBname) {
+			$usertitle = $this->getUserPageTitle();
+			$usertalktitle = $usertitle->getTalkPage();
+			if( !$usertalktitle->equals( $this->mTitle ) ) {
+				$ntl = wfMsg( 'youhavenewmessages',
+					$this->makeKnownLinkObj(
+						$usertalktitle,
+						wfMsgHtml( 'newmessageslink' ),
+						'redirect=no'
+					),
+					$this->makeKnownLinkObj(
+						$usertalktitle,
+						wfMsgHtml( 'newmessagesdifflink' ),
+						'diff=cur'
+					)
+				);
+				# Disable Cache
+				$this->mOut->setSquidMaxage(0);
+			}
+		} else if (count($newtalks)) {
+			$sep = str_replace("_", " ", wfMsgHtml("newtalkseperator"));
+			$msgs = array();
+			foreach ($newtalks as $newtalk) {
+				$msgs[] = wfElement("a", 
+					array('href' => $newtalk["link"]), $newtalk["wiki"]);
+			}
+			$parts = implode($sep, $msgs);
+			$ntl = wfMsgHtml('youhavenewmessagesmulti', $parts);
+			$this->mOut->setSquidMaxage(0);
+		} else {
+			$ntl = '';
+		}
+		return cbt_value( $ntl, 'dynamic' );
+	}
+	
+	function showjumplinks() {
+		global $wgUser;
+		return cbt_value( $wgUser->getOption( 'showjumplinks' ) ? 'true' : '', 'user' );
+	}
+	
+	function bodytext() {
+		return cbt_value( $this->mOut->getHTML(), 'dynamic' );
+	}
+	
+	function catlinks() {
+		if ( !isset( $this->mCatlinks ) ) {
+			$this->mCatlinks = $this->getCategories();
+		}
+		return cbt_value( $this->mCatlinks, 'dynamic' );
+	}
+	
+	function extratabs( $itemTemplate ) {
+		global $wgContLang, $wgDisableLangConversion;
+		
+		$etpl = cbt_escape( $itemTemplate );
+
+		/* show links to different language variants */
+		$variants = $wgContLang->getVariants();
+		$s = '';
+		if ( !$wgDisableLangConversion && count( $wgContLang->getVariants() ) > 1 ) {
+			$vcount=0;
+			foreach ( $variants as $code ) {
+				$name = $wgContLang->getVariantname( $code );
+				if ( $name == 'disable' ) {
+					continue;
+				}
+				$code = cbt_escape( $code );
+				$name = cbt_escape( $name );
+				$s .= "{ca_variant {{$code}} {{$name}} {{$vcount}} {{$etpl}}}\n";
+				$vcount ++;
+			}
+		}
+		return cbt_value( $s, array(), true );
+	}
+
+	function is_special() { return cbt_value( $this->mTitle->getNamespace() == NS_SPECIAL, 'title' ); }
+	function can_edit() { return cbt_value( (string)($this->mTitle->userCanEdit()), 'dynamic' ); }
+	function can_move() { return cbt_value( (string)($this->mTitle->userCanMove()), 'dynamic' ); }
+	function is_talk() { return cbt_value( (string)($this->mTitle->isTalkPage()), 'title' ); }
+	function is_protected() { return cbt_value( (string)$this->mTitle->isProtected(), 'dynamic' ); }
+	function nskey() { return cbt_value( $this->mTitle->getNamespaceKey(), 'title' ); }
+
+	function request_url() {
+		global $wgRequest;
+		return cbt_value( $wgRequest->getRequestURL(), 'dynamic' );
+	}
+
+	function subject_url() { 
+		$title = $this->getSubjectPage();
+		if ( $title->exists() ) {
+			$url = $title->getLocalUrl();
+		} else {
+			$url = $title->getLocalUrl( 'action=edit' );
+		}
+		return cbt_value( $url, 'title' ); 
+	}
+
+	function talk_url() {
+		$title = $this->getTalkPage();
+		if ( $title->exists() ) {
+			$url = $title->getLocalUrl();
+		} else {
+			$url = $title->getLocalUrl( 'action=edit' );
+		}
+		return cbt_value( $url, 'title' );
+	}
+
+	function edit_url() {
+		return cbt_value( $this->getEditUrl(), array( 'title', 'nonview dynamic' ) );
+	}
+
+	function move_url() {
+		return cbt_value( $this->makeSpecialParamUrl( 'Movepage' ), array(), true );
+	}
+
+	function localurl( $query ) {
+		return cbt_value( $this->mTitle->getLocalURL( $query ), 'title' );
+	}
+
+	function selecttab( $tab, $extraclass = '' ) {
+		if ( !isset( $this->mSelectedTab ) ) {
+			$prevent_active_tabs = false ;
+			wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this , &$preventActiveTabs ) );
+
+			$actionTabs = array(
+				'edit' => 'edit',
+				'submit' => 'edit',
+				'history' => 'history',
+				'protect' => 'protect',
+				'unprotect' => 'protect',
+				'delete' => 'delete',
+				'watch' => 'watch',
+				'unwatch' => 'watch',
+			);
+			if ( $preventActiveTabs ) {
+				$this->mSelectedTab = false;
+			} else {
+				$action = $this->getAction();
+				$section = $this->getSection();
+				
+				if ( isset( $actionTabs[$action] ) ) {
+					$this->mSelectedTab = $actionTabs[$action];
+
+					if ( $this->mSelectedTab == 'edit' && $section == 'new' ) {
+						$this->mSelectedTab = 'addsection';
+					}
+				} elseif ( $this->mTitle->isTalkPage() ) {
+					$this->mSelectedTab = 'talk';
+				} else {
+					$this->mSelectedTab = 'subject';
+				}
+			}
+		}
+		if ( $extraclass ) {
+			if ( $this->mSelectedTab == $tab ) {
+				$s = 'class="selected ' . htmlspecialchars( $extraclass ) . '"';
+			} else {
+				$s = 'class="' . htmlspecialchars( $extraclass ) . '"';
+			}			
+		} else {
+			if ( $this->mSelectedTab == $tab ) {
+				$s = 'class="selected"';
+			} else {
+				$s = '';
+			}
+		}
+		return cbt_value( $s, array( 'nonview dynamic', 'title' ) );
+	}
+
+	function subject_newclass() {
+		$title = $this->getSubjectPage();
+		$class = $title->exists() ? '' : 'new';
+		return cbt_value( $class, 'dynamic' );
+	}
+
+	function talk_newclass() {
+		$title = $this->getTalkPage();
+		$class = $title->exists() ? '' : 'new';
+		return cbt_value( $class, 'dynamic' );
+	}	
+
+	function ca_variant( $code, $name, $index, $template ) {
+		global $wgContLang;
+		$selected = ($code == $wgContLang->getPreferredVariant());
+		$action = $this->getAction();
+		$actstr = '';
+		if( $action )
+			$actstr = 'action=' . $action . '&';
+		$s = strtr( $template, array( 
+			'$id' => htmlspecialchars( 'varlang-' . $index ),
+			'$class' => $selected ? 'class="selected"' : '',
+			'$text' => $name,
+			'$href' => htmlspecialchars( $this->mTitle->getLocalUrl( $actstr . 'variant=' . $code ) )
+		));
+		return cbt_value( $s, 'dynamic' );
+	}
+
+	function is_watching() {
+		return cbt_value( (string)$this->mTitle->userIsWatching(), array( 'dynamic' ) );
+	}
+
+	
+	function personal_urls( $itemTemplate ) {
+		global $wgShowIPinHeader, $wgContLang;
+
+		# Split this function up into many small functions, to obtain the
+		# best specificity in the dependencies of each one. The template below 
+		# has no dependencies, so its generation, and any static subfunctions,
+		# can be optimised away.
+		$etpl = cbt_escape( $itemTemplate );
+		$s = "
+			{userpage {{$etpl}}}
+			{mytalk {{$etpl}}}
+			{preferences {{$etpl}}}
+			{watchlist {{$etpl}}}
+			{mycontris {{$etpl}}}
+			{logout {{$etpl}}}
+		";
+
+		if ( $wgShowIPinHeader ) {
+			$s .= "
+				{anonuserpage {{$etpl}}}
+				{anontalk {{$etpl}}}
+				{anonlogin {{$etpl}}}
+			";
+		} else {
+			$s .= "{login {{$etpl}}}\n";
+		}
+		// No dependencies
+		return cbt_value( $s, array(), true /*this is a template*/ );
+	}
+
+	function userpage( $itemTemplate ) {
+		global $wgUser;
+		if ( $this->isLoggedIn() ) {
+			$userPage = $this->getUserPageTitle();
+			$s = $this->makeTemplateLink( $itemTemplate, 'userpage', $userPage, $wgUser->getName() );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, 'user' );
+	}
+	
+	function mytalk( $itemTemplate ) {
+		global $wgUser;
+		if ( $this->isLoggedIn() ) {
+			$userPage = $this->getUserPageTitle();
+			$talkPage = $userPage->getTalkPage();
+			$s = $this->makeTemplateLink( $itemTemplate, 'mytalk', $talkPage, wfMsg('mytalk') );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, 'user' );
+	}
+	
+	function preferences( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'preferences', 
+				'Preferences', wfMsg( 'preferences' ) );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, array( 'loggedin', 'lang' ) );
+	}
+	
+	function watchlist( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'watchlist', 
+				'Watchlist', wfMsg( 'watchlist' ) );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, array( 'loggedin', 'lang' ) );
+	}
+	
+	function mycontris( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			global $wgUser;
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'mycontris', 
+				"Contributions/" . $wgUser->getTitleKey(), wfMsg('mycontris') );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, 'user' );
+	}
+	
+	function logout( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'logout', 
+				'Userlogout', wfMsg( 'userlogout' ), 
+					$this->mTitle->getNamespace() === NS_SPECIAL && $this->mTitle->getText() === 'Preferences' 
+					? '' : "returnto=" . $this->mTitle->getPrefixedURL() );
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, 'loggedin dynamic' );
+	}
+	
+	function anonuserpage( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = '';
+		} else {
+			global $wgUser;
+			$userPage = $this->getUserPageTitle();
+			$s = $this->makeTemplateLink( $itemTemplate, 'userpage', $userPage, $wgUser->getName() );
+		}
+		return cbt_value( $s, '!loggedin dynamic' );
+	}
+	
+	function anontalk( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = '';
+		} else {
+			$userPage = $this->getUserPageTitle();
+			$talkPage = $userPage->getTalkPage();
+			$s = $this->makeTemplateLink( $itemTemplate, 'mytalk', $talkPage, wfMsg('anontalk') );
+		}
+		return cbt_value( $s, '!loggedin dynamic' );
+	}
+	
+	function anonlogin( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = '';
+		} else {
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'anonlogin', 'Userlogin', 
+				wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
+		}
+		return cbt_value( $s, '!loggedin dynamic' );
+	}
+	
+	function login( $itemTemplate ) {
+		if ( $this->isLoggedIn() ) {
+			$s = '';
+		} else {
+			$s = $this->makeSpecialTemplateLink( $itemTemplate, 'login', 'Userlogin', 
+				wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
+		}
+		return cbt_value( $s, '!loggedin dynamic' );
+	}
+	
+	function logopath() { return $GLOBALS['wgLogo']; }
+	function mainpage() { return $this->makeI18nUrl( 'mainpage' ); }
+	
+	function sidebar( $startSection, $endSection, $innerTpl ) {
+		$s = '';
+		$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
+		$firstSection = true;
+		foreach ($lines as $line) {
+			if (strpos($line, '*') !== 0)
+				continue;
+			if (strpos($line, '**') !== 0) {
+				$bar = trim($line, '* ');
+				$name = wfMsg( $bar ); 
+				if (wfEmptyMsg($bar, $name)) {
+					$name = $bar;
+				}
+				if ( $firstSection ) {
+					$firstSection = false;
+				} else {
+					$s .= $endSection;
+				}
+				$s .= strtr( $startSection,
+					array( 
+						'$bar' => htmlspecialchars( $bar ),
+						'$barname' => $name
+					) );
+			} else {
+				if (strpos($line, '|') !== false) { // sanity check
+					$line = explode( '|' , trim($line, '* '), 2 );
+					$link = wfMsgForContent( $line[0] );
+					if ($link == '-')
+						continue;
+					if (wfEmptyMsg($line[1], $text = wfMsg($line[1])))
+						$text = $line[1];
+					if (wfEmptyMsg($line[0], $link))
+						$link = $line[0];
+					$href = $this->makeInternalOrExternalUrl( $link );
+					
+					$s .= strtr( $innerTpl,
+						array(
+							'$text' => htmlspecialchars( $text ),
+							'$href' => htmlspecialchars( $href ),
+							'$id' => htmlspecialchars( 'n-' . strtr($line[1], ' ', '-') ),
+							'$classactive' => ''
+						) );
+				} else { continue; }
+			}
+		}
+		if ( !$firstSection ) {
+			$s .= $endSection;
+		}
+
+		// Depends on user language only
+		return cbt_value( $s, 'lang' );
+	}
+	
+	function searchaction() {
+		// Static link
+		return $this->getSearchLink();
+	}
+	
+	function search() {
+		global $wgRequest;
+		return cbt_value( trim( $this->getSearch() ), 'special dynamic' );
+	}
+	
+	function notspecialpage() {
+		return cbt_value( $this->mTitle->getNamespace() != NS_SPECIAL, 'special' );
+	}
+	
+	function nav_whatlinkshere() {
+		return cbt_value( $this->makeSpecialParamUrl('Whatlinkshere' ), array(), true );
+	}
+
+	function article_exists() {
+		return cbt_value( (string)($this->mTitle->getArticleId() !== 0), 'title' );
+	}
+	
+	function nav_recentchangeslinked() {
+		return cbt_value( $this->makeSpecialParamUrl('Recentchangeslinked' ), array(), true );
+	}
+	
+	function feeds( $itemTemplate = '' ) {
+		if ( !$this->mOut->isSyndicated() ) {
+			$feeds = '';
+		} elseif ( $itemTemplate == '' ) {
+			// boolean only required
+			$feeds = 'true';
+		} else {
+			$feeds = '';
+			global $wgFeedClasses, $wgRequest;
+			foreach( $wgFeedClasses as $format => $class ) {
+				$feeds .= strtr( $itemTemplate,
+					array( 
+						'$key' => htmlspecialchars( $format ),
+						'$text' => $format,
+						'$href' => $wgRequest->appendQuery( "feed=$format" )
+					) );
+			}
+		}
+		return cbt_value( $feeds, 'special dynamic' );
+	}
+
+	function is_userpage() {
+		list( $id, $ip ) = $this->getUserPageIdIp();
+		return cbt_value( (string)($id || $ip), 'title' );
+	}
+
+	function is_ns_mediawiki() {
+		return cbt_value( (string)$this->mTitle->getNamespace() == NS_MEDIAWIKI, 'title' );
+	}
+
+	function is_loggedin() {
+		global $wgUser;
+		return cbt_value( (string)($wgUser->isLoggedIn()), 'loggedin' );
+	}
+
+	function nav_contributions() {
+		$url = $this->makeSpecialParamUrl( 'Contributions', '', '{title_userurl}' );
+		return cbt_value( $url, array(), true );
+	}
+
+	function is_allowed( $right ) {
+		global $wgUser;
+		return cbt_value( (string)$wgUser->isAllowed( $right ), 'user' );
+	}
+	
+	function nav_blockip() {
+		$url = $this->makeSpecialParamUrl( 'Blockip', '', '{title_userurl}' );
+		return cbt_value( $url, array(), true );
+	}
+	
+	function nav_emailuser() {
+		global $wgEnableEmail, $wgEnableUserEmail, $wgUser;
+		if ( !$wgEnableEmail || !$wgEnableUserEmail ) return '';
+		
+		$url = $this->makeSpecialParamUrl( 'Emailuser', '', '{title_userurl}' );
+		return cbt_value( $url, array(), true );
+	}
+	
+	function nav_upload() {
+		global $wgEnableUploads, $wgUploadNavigationUrl;
+		if ( !$wgEnableUploads ) { 
+			return '';
+		} elseif ( $wgUploadNavigationUrl ) {
+			return $wgUploadNavigationUrl;
+		} else {
+			return $this->makeSpecialUrl('Upload');
+		}
+	}
+	
+	function nav_specialpages() {
+		return $this->makeSpecialUrl('Specialpages');
+	}
+	
+	function nav_print() {
+		global $wgRequest, $wgArticle;
+		$action = $this->getAction();
+		$url = '';
+		if( $this->mTitle->getNamespace() !== NS_SPECIAL 
+				&& ($action == '' || $action == 'view' || $action == 'purge' ) ) 
+		{
+			$revid = $wgArticle->getLatest();
+			if ( $revid != 0 ) {
+				$url = $wgRequest->appendQuery( 'printable=yes' );
+			}
+		}
+		return cbt_value( $url, array( 'nonview dynamic', 'title' ) );
+	}
+	
+	function nav_permalink() {
+		$url = (string)$this->getPermalink();
+		return cbt_value( $url, 'dynamic' );
+	}
+
+	function nav_trackbacklink() {
+		global $wgUseTrackbacks;
+		if ( !$wgUseTrackbacks ) return '';
+
+		return cbt_value( $this->mTitle->trackbackURL(), 'title' );
+	}
+	
+	function is_permalink() {
+		return cbt_value( (string)($this->getPermalink() === false), 'nonview dynamic' );
+	}
+	
+	function toolboxend() {
+		// This is where the MonoBookTemplateToolboxEnd hook went in the old skin
+		return '';
+	}
+	
+	function language_urls( $outer, $inner ) {
+		global $wgHideInterlanguageLinks, $wgOut, $wgContLang;
+		if ( $wgHideInterlanguageLinks ) return '';
+
+		$links = $wgOut->getLanguageLinks();
+		$s = '';
+		if ( count( $links ) ) {
+			foreach( $links as $l ) {
+				$tmp = explode( ':', $l, 2 );
+				$nt = Title::newFromText( $l );
+				$s .= strtr( $inner,
+					array(
+						'$class' => htmlspecialchars( 'interwiki-' . $tmp[0] ),
+						'$href' => htmlspecialchars( $nt->getFullURL() ),
+						'$text' => ($wgContLang->getLanguageName( $nt->getInterwiki() ) != ''?
+							$wgContLang->getLanguageName( $nt->getInterwiki() ) : $l ),
+					)
+				);
+			}
+			$s = str_replace( '$body', $s, $outer );
+		}
+		return cbt_value( $s, 'dynamic' );
+	}
+	
+	function poweredbyico() { return $this->getPoweredBy(); }
+	function copyrightico() { return $this->getCopyrightIcon(); }
+
+	function lastmod() { 
+		global $wgMaxCredits;
+		if ( $wgMaxCredits ) return '';
+
+		if ( !isset( $this->mLastmod ) ) {
+			if ( $this->isCurrentArticleView() ) {
+				$this->mLastmod = $this->lastModified(); 
+			} else {
+				$this->mLastmod = '';
+			}
+		}
+		return cbt_value( $this->mLastmod, 'dynamic' );
+	}
+	
+	function viewcount() {
+		global $wgDisableCounters;
+		if ( $wgDisableCounters ) return '';
+		
+		global $wgLang, $wgArticle;
+		if ( is_object( $wgArticle ) ) {
+			$viewcount = $wgLang->formatNum( $wgArticle->getCount() );
+			if ( $viewcount ) {
+				$viewcount = wfMsg( "viewcount", $viewcount );
+			} else {
+				$viewcount = '';
+			}
+		} else {
+			$viewcount = '';
+		}
+		return cbt_value( $viewcount, 'dynamic' );
+   	}
+	
+	function numberofwatchingusers() {
+		global $wgPageShowWatchingUsers;
+		if ( !$wgPageShowWatchingUsers ) return '';
+
+		$dbr =& wfGetDB( DB_SLAVE );
+		extract( $dbr->tableNames( 'watchlist' ) );
+		$sql = "SELECT COUNT(*) AS n FROM $watchlist
+			WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBKey()) .
+			"' AND  wl_namespace=" . $this->mTitle->getNamespace() ;
+		$res = $dbr->query( $sql, 'SkinTemplate::outputPage');
+		$row = $dbr->fetchObject( $res );
+		$num = $row->n;
+		if ($num > 0) {
+			$s = wfMsg('number_of_watching_users_pageview', $num);
+		} else {
+			$s = '';
+		}
+		return cbt_value( $s, 'dynamic' );
+	}
+	
+	function credits() {
+		global $wgMaxCredits;
+		if ( !$wgMaxCredits ) return '';
+		
+		if ( $this->isCurrentArticleView() ) {
+			require_once("Credits.php");
+			global $wgArticle, $wgShowCreditsIfMax;
+			$credits = getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax);
+		} else {
+			$credits = '';
+		}
+		return cbt_value( $credits, 'view dynamic' );
+	}
+	
+	function normalcopyright() {
+		return $this->getCopyright( 'normal' );
+	}
+
+	function historycopyright() {
+		return $this->getCopyright( 'history' );
+	}
+
+	function is_currentview() {
+		global $wgRequest;
+		return cbt_value( (string)$this->isCurrentArticleView(), 'view' );
+	}
+
+	function usehistorycopyright() {
+		global $wgRequest;
+		if ( wfMsgForContent( 'history_copyright' ) == '-' ) return '';
+		
+		$oldid = $this->getOldId();
+		$diff = $this->getDiff();
+		$use = (string)(!is_null( $oldid ) && is_null( $diff ));
+		return cbt_value( $use, 'nonview dynamic' );
+	}
+	
+	function privacy() {
+		return cbt_value( $this->privacyLink(), 'lang' );
+	}
+	function about() {
+		return cbt_value( $this->aboutLink(), 'lang' );
+	}
+	function disclaimer() {
+		return cbt_value( $this->disclaimerLink(), 'lang' );
+	}
+	function tagline() { 
+		# A reference to this tag existed in the old MonoBook.php, but the
+		# template data wasn't set anywhere
+		return ''; 
+	}
+	function reporttime() {
+		return cbt_value( $this->mOut->reportTime(), 'dynamic' );
+	}
+	
+	function msg( $name ) {
+		return cbt_value( wfMsg( $name ), 'lang' );
+	}
+	
+	function fallbackmsg( $name, $fallback ) {
+		$text = wfMsg( $name );
+		if ( wfEmptyMsg( $name, $text ) ) {
+			$text = $fallback;
+		}
+		return cbt_value( $text,  'lang' );
+	}
+
+	/******************************************************
+	 * Utility functions                                  *
+	 ******************************************************/
+
+	/** Return true if this request is a valid, secure CSS preview */
+	function isCssPreview() {
+		if ( !isset( $this->mCssPreview ) ) {
+			global $wgRequest, $wgAllowUserCss, $wgUser;
+			$this->mCssPreview = 
+				$wgAllowUserCss &&
+				$wgUser->isLoggedIn() &&
+				$this->mTitle->isCssSubpage() && 
+				$this->userCanPreview( $this->getAction() );
+		}
+		return $this->mCssPreview;
+	}
+
+	/** Return true if this request is a valid, secure JS preview */
+	function isJsPreview() {
+		if ( !isset( $this->mJsPreview ) ) {
+			global $wgRequest, $wgAllowUserJs, $wgUser;
+			$this->mJsPreview = 
+				$wgAllowUserJs &&
+				$wgUser->isLoggedIn() &&
+				$this->mTitle->isJsSubpage() && 
+				$this->userCanPreview( $this->getAction() );
+		}
+		return $this->mJsPreview;
+	}
+
+	/** Get the title of the $wgUser's user page */
+	function getUserPageTitle() {
+		if ( !isset( $this->mUserPageTitle ) ) {
+			global $wgUser;
+			$this->mUserPageTitle = $wgUser->getUserPage();
+		}
+		return $this->mUserPageTitle;
+	}
+
+	/** Get the text of the user page title */
+	function getUserPageText() {
+		if ( !isset( $this->mUserPageText ) ) {
+			$userPage = $this->getUserPageTitle();
+			$this->mUserPageText = $userPage->getPrefixedText();
+		}
+		return $this->mUserPageText;
+	}
+
+	/** Make an HTML element for a stylesheet link */
+	function makeStylesheetLink( $url ) {
+		return '<link rel="stylesheet" type="text/css" href="' . htmlspecialchars( $url ) . "\"/>";
+	}
+
+	/** Make an XHTML element for inline CSS */
+	function makeStylesheetCdata( $style ) {
+		return "<style type=\"text/css\"> /*<![CDATA[*/ {$style} /*]]>*/ </style>";
+	}
+
+	/** Get the edit URL for this page */
+	function getEditUrl() {
+		if ( !isset( $this->mEditUrl ) ) {
+			$this->mEditUrl = $this->mTitle->getLocalUrl( $this->editUrlOptions() );
+		}
+		return $this->mEditUrl;
+	}
+
+	/** Get the prefixed DB key for this page */
+	function getThisPDBK() {
+		if ( !isset( $this->mThisPDBK ) ) {
+			$this->mThisPDBK = $this->mTitle->getPrefixedDbKey();
+		}
+		return $this->mThisPDBK;
+	}
+
+	function getThisTitleUrlForm() {
+		if ( !isset( $this->mThisTitleUrlForm ) ) {
+			$this->mThisTitleUrlForm = $this->mTitle->getPrefixedURL();
+		}
+		return $this->mThisTitleUrlForm;
+	}
+
+	/** 
+	 * If the current page is a user page, get the user's ID and IP. Otherwise return array(0,false)
+	 */
+	function getUserPageIdIp() {
+		if ( !isset( $this->mUserPageId ) ) {
+			if( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
+				$this->mUserPageId = User::idFromName($this->mTitle->getText());
+				$this->mUserPageIp = User::isIP($this->mTitle->getText());
+			} else {
+				$this->mUserPageId = 0;
+				$this->mUserPageIp = false;
+			}
+		}
+		return array( $this->mUserPageId, $this->mUserPageIp );
+	}
+	
+	/**
+	 * Returns a permalink URL, or false if the current page is already a 
+	 * permalink, or blank if a permalink shouldn't be displayed
+	 */
+	function getPermalink() {
+		if ( !isset( $this->mPermalink ) ) {
+			global $wgRequest, $wgArticle;
+			$action = $this->getAction();
+			$oldid = $this->getOldId();
+			$url = '';
+			if( $this->mTitle->getNamespace() !== NS_SPECIAL 
+					&& $this->mTitle->getArticleId() != 0
+					&& ($action == '' || $action == 'view' || $action == 'purge' ) ) 
+			{
+				if ( !$oldid ) {
+					$revid = $wgArticle->getLatest();			
+					$url = $this->mTitle->getLocalURL( "oldid=$revid" );
+				} else {
+					$url = false;
+				}
+			} else {
+				$url = '';
+			}
+		}
+		return $url;
+	}
+
+	/**
+	 * Returns true if the current page is an article, not a special page,
+	 * and we are viewing a revision, not a diff
+	 */
+	function isArticleView() {
+		global $wgOut, $wgArticle, $wgRequest;
+		if ( !isset( $this->mIsArticleView ) ) {
+			$oldid = $this->getOldId();
+			$diff = $this->getDiff();
+			$this->mIsArticleView = $wgOut->isArticle() and 
+				(!is_null( $oldid ) or is_null( $diff )) and 0 != $wgArticle->getID();
+		}
+		return $this->mIsArticleView;
+	}
+
+	function isCurrentArticleView() {
+		if ( !isset( $this->mIsCurrentArticleView ) ) {
+			global $wgOut, $wgArticle, $wgRequest;
+			$oldid = $this->getOldId();
+			$this->mIsCurrentArticleView = $wgOut->isArticle() && is_null( $oldid ) && 0 != $wgArticle->getID();
+		}
+		return $this->mIsCurrentArticleView;
+	}
+
+
+	/**
+	 * Return true if the current page is editable; if edit section on right 
+	 * click should be enabled.
+	 */
+	function isEditable() {
+		global $wgRequest;
+		$action = $this->getAction();
+		return ($this->mTitle->getNamespace() != NS_SPECIAL and !($action == 'edit' or $action == 'submit'));
+	}
+
+	/** Return true if the user is logged in */
+	function isLoggedIn() {
+		global $wgUser;
+		return $wgUser->isLoggedIn();
+	}
+
+	/** Get the local URL of the current page */
+	function getPageUrl() {
+		if ( !isset( $this->mPageUrl ) ) {
+			$this->mPageUrl = $this->mTitle->getLocalURL();
+		} 
+		return $this->mPageUrl;
+	}
+
+	/** Make a link to a title using a template */
+	function makeTemplateLink( $template, $key, $title, $text ) {
+		$url = $title->getLocalUrl();
+		return strtr( $template, 
+			array( 
+				'$key' => $key,
+				'$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
+				'$class' => $title->getArticleID() == 0 ? 'class="new"' : '', 
+				'$href' => htmlspecialchars( $url ),
+				'$text' => $text
+			 ) );
+	}
+
+	/** Make a link to a URL using a template */
+	function makeTemplateLinkUrl( $template, $key, $url, $text ) {
+		return strtr( $template, 
+			array( 
+				'$key' => $key,
+				'$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
+				'$class' => '', 
+				'$href' => htmlspecialchars( $url ),
+				'$text' => $text
+			 ) );
+	}
+
+	/** Make a link to a special page using a template */
+	function makeSpecialTemplateLink( $template, $key, $specialName, $text, $query = '' ) {
+		$url = $this->makeSpecialUrl( $specialName, $query );
+		// Ignore the query when comparing
+		$active = ($this->mTitle->getNamespace() == NS_SPECIAL && $this->mTitle->getDBkey() == $specialName);
+		return strtr( $template, 
+			array( 
+				'$key' => $key,
+				'$classactive' => $active ? 'class="active"' : '',
+				'$class' => '', 
+				'$href' => htmlspecialchars( $url ),
+				'$text' => $text
+			 ) );
+	}
+
+	function loadRequestValues() {
+		global $wgRequest;
+		$this->mAction = $wgRequest->getText( 'action' );
+		$this->mOldId = $wgRequest->getVal( 'oldid' );
+		$this->mDiff = $wgRequest->getVal( 'diff' );
+		$this->mSection = $wgRequest->getVal( 'section' );
+		$this->mSearch = $wgRequest->getVal( 'search' );
+		$this->mRequestValuesLoaded = true;
+	}
+		
+
+
+	/** Get the action parameter of the request */
+	function getAction() {
+		if ( !isset( $this->mRequestValuesLoaded ) ) {
+			$this->loadRequestValues();
+		}
+		return $this->mAction;
+	}
+
+	/** Get the oldid parameter */
+	function getOldId() {
+		if ( !isset( $this->mRequestValuesLoaded ) ) {
+			$this->loadRequestValues();
+		}
+		return $this->mOldId;
+	}
+
+	/** Get the diff parameter */
+	function getDiff() {
+		if ( !isset( $this->mRequestValuesLoaded ) ) {
+			$this->loadRequestValues();
+		}
+		return $this->mDiff;
+	}
+
+	function getSection() {
+		if ( !isset( $this->mRequestValuesLoaded ) ) {
+			$this->loadRequestValues();
+		}
+		return $this->mSection;
+	}
+
+	function getSearch() {
+		if ( !isset( $this->mRequestValuesLoaded ) ) {
+			$this->loadRequestValues();
+		}
+		return $this->mSearch;
+	}
+
+	/** Make a special page URL of the form [[Special:Somepage/{title_urlform}]] */
+	function makeSpecialParamUrl( $name, $query = '', $param = '{title_urlform}' ) {
+		// Abuse makeTitle's lax validity checking to slip a control character into the URL
+		$title = Title::makeTitle( NS_SPECIAL, "$name/\x1a" );
+		$url = cbt_escape( $title->getLocalURL( $query ) );
+		// Now replace it with the parameter
+		return str_replace( '%1A', $param, $url );
+	}
+
+	function getSubjectPage() {
+		if ( !isset( $this->mSubjectPage ) ) {
+			$this->mSubjectPage = $this->mTitle->getSubjectPage();
+		}
+		return $this->mSubjectPage;
+	}
+
+	function getTalkPage() {
+		if ( !isset( $this->mTalkPage ) ) {
+			$this->mTalkPage = $this->mTitle->getTalkPage();
+		}
+		return $this->mTalkPage;
+	}
+}
+?>

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/lookup.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/lookup.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/lookup.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,91 @@
+/**
+ * "Go" function for static HTML dump
+ */
+function goToStatic(depth) {
+	var url = getStaticURL(document.getElementById("searchInput").value, depth);
+	if (url != "") {
+		location = url;
+	} else {
+		alert("Invalid title");
+	}
+}
+
+/**
+ * Determine relative path for a given non-canonical title
+ */
+function getStaticURL(text, depth) {
+	var pdbk = getPDBK(text);
+	if (pdbk == "") {
+		return "";
+	} else {
+		var i;
+		var path = getHashedDirectory(pdbk, depth) + "/" + getFriendlyName(pdbk) + ".html";
+		if (!/(index\.html|\/)$/.exec(location)) {
+			for (i = 0; i < depth; i++) {
+				path = "../" + path;
+			}
+		}
+		return path;
+	}
+}
+
+function getPDBK(text) {
+	// Spaces to underscores
+	text = text.replace(/ /g, "_");
+
+	// Trim leading and trailing space
+	text = text.replace(/^_+/g, "");
+	text = text.replace(/_+$/g, "");
+
+	// Capitalise first letter
+	return ucfirst(text);
+}
+
+function getHashedDirectory(pdbk, depth) {
+	// Find the first colon if there is one, use characters after it
+	var dbk = pdbk.replace(/^[^:]*:_*(.*)$/, "$1");
+	var i, c, dir = "";
+
+	for (i=0; i < depth; i++) {
+		if (i) {
+			dir += "/";
+		}
+		if (i >= dbk.length) {
+			dir += "_";
+		} else {
+			c = dbk.charAt(i);
+			cc = dbk.charCodeAt(i);
+			
+			if (cc >= 128 || /[a-zA-Z0-9!#$%&()+,[\]^_`{}-]/.exec(c)) {
+				dir += c.toLowerCase();
+			} else {
+				dir += binl2hex([cc]).substr(0,2).toUpperCase();
+			}
+		}
+	}
+	return dir;
+}
+
+function ucfirst(s) {
+	return s.charAt(0).toUpperCase() + s.substring(1, s.length);
+}
+
+function getFriendlyName(name) {
+	// Replace illegal characters for Windows paths with underscores
+	var friendlyName = name.replace(/[\/\\*?"<>|~]/g, "_");
+
+	// Work out lower case form. We assume we're on a system with case-insensitive
+	// filenames, so unless the case is of a special form, we have to disambiguate
+	var lowerCase = ucfirst(name.toLowerCase());
+
+	// Make it mostly unique
+	if (lowerCase != friendlyName) {
+		friendlyName += "_" + hex_md5(_to_utf8(name)).substring(0, 4);
+	}
+	// Handle colon specially by replacing it with tilde
+	// Thus we reduce the number of paths with hashes appended
+	friendlyName = friendlyName.replace(":", "~");
+
+	return friendlyName;
+}
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/main.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/main.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,9 @@
+ at import "../monobook/main.css";
+
+#footer li {
+	display: block;
+}
+head:first-child + body #footer li { white-space: normal; }
+.usermessage { display: none; }
+.editsection { display: none; }
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/md5.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/md5.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/md5.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,256 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
+var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
+var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+  /* append padding */
+  x[len >> 5] |= 0x80 << ((len) % 32);
+  x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+  var a =  1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+  var d =  271733878;
+
+  for(var i = 0; i < x.length; i += 16)
+  {
+    var olda = a;
+    var oldb = b;
+    var oldc = c;
+    var oldd = d;
+
+    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
+    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
+    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
+    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
+    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
+
+    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
+    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
+    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
+    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
+    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
+    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
+    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
+    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
+    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
+    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
+    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
+    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
+    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
+    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
+    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
+    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+    a = safe_add(a, olda);
+    b = safe_add(b, oldb);
+    c = safe_add(c, oldc);
+    d = safe_add(d, oldd);
+  }
+  return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+  var bkey = str2binl(key);
+  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+  var ipad = Array(16), opad = Array(16);
+  for(var i = 0; i < 16; i++)
+  {
+    ipad[i] = bkey[i] ^ 0x36363636;
+    opad[i] = bkey[i] ^ 0x5C5C5C5C;
+  }
+
+  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+  return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+  return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+  var bin = Array();
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < str.length * chrsz; i += chrsz)
+    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+  return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+  var str = "";
+  var mask = (1 << chrsz) - 1;
+  for(var i = 0; i < bin.length * 32; i += chrsz)
+    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i++)
+  {
+    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
+  }
+  return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  var str = "";
+  for(var i = 0; i < binarray.length * 4; i += 3)
+  {
+    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
+                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+    for(var j = 0; j < 4; j++)
+    {
+      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+    }
+  }
+  return str;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/utf8.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/utf8.js	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/utf8.js	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,72 @@
+/**
+ * Obtained from http://homepage3.nifty.com/aokura/jscript/index.html
+ * The webpage says, among other things:
+ *    * ソースコードの全てあるいは一部を使用したことにより生じた損害に関しては一切責任を負いません。
+ *    * ソースコードの使用、配布に制限はありません。ご自由にお使いください。
+ *    * 動作チェックが不充分な場合もありますので、注意してください。
+ * 
+ * Which, loosely translated, means:
+ *    * The author takes no responsibility for damage which occurs due to the use of this code.
+ *    * There is no restriction on the use and distribution of the source code. Please use freely.
+ *    * Please be careful, testing may have been insufficient.
+ */
+
+
+/**********************************************************************
+ *
+ *  Unicode ⇔ UTF-8
+ *
+ *  Copyright (c) 2005 AOK <soft at aokura.com>
+ *
+ **********************************************************************/
+
+function _to_utf8(s) {
+  var c, d = "";
+  for (var i = 0; i < s.length; i++) {
+    c = s.charCodeAt(i);
+    if (c <= 0x7f) {
+      d += s.charAt(i);
+    } else if (c >= 0x80 && c <= 0x7ff) {
+      d += String.fromCharCode(((c >> 6) & 0x1f) | 0xc0);
+      d += String.fromCharCode((c & 0x3f) | 0x80);
+    } else {
+      d += String.fromCharCode((c >> 12) | 0xe0);
+      d += String.fromCharCode(((c >> 6) & 0x3f) | 0x80);
+      d += String.fromCharCode((c & 0x3f) | 0x80);
+    }
+  }
+  return d;
+}
+
+function _from_utf8(s) {
+  var c, d = "", flag = 0, tmp;
+  for (var i = 0; i < s.length; i++) {
+    c = s.charCodeAt(i);
+    if (flag == 0) {
+      if ((c & 0xe0) == 0xe0) {
+        flag = 2;
+        tmp = (c & 0x0f) << 12;
+      } else if ((c & 0xc0) == 0xc0) {
+        flag = 1;
+        tmp = (c & 0x1f) << 6;
+      } else if ((c & 0x80) == 0) {
+        d += s.charAt(i);
+      } else {
+        flag = 0;
+      }
+    } else if (flag == 1) {
+      flag = 0;
+      d += String.fromCharCode(tmp | (c & 0x3f));
+    } else if (flag == 2) {
+      flag = 3;
+      tmp |= (c & 0x3f) << 6;
+    } else if (flag == 3) {
+      flag = 0;
+      d += String.fromCharCode(tmp | (c & 0x3f));
+    } else {
+      flag = 0;
+    }
+  }
+  return d;
+}
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE50Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE50Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE50Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,67 @@
+/*
+** IE5.0 Fix Stylesheet
+*/
+
+#column-content {
+	margin: 0 !important;
+	float: none;
+}
+#column-content #content { 
+	margin-top: 3em; 
+	height: 1%;
+}
+#column-one {
+	position: absolute;
+	overflow: visible;
+	top: 0;
+	left: 0;
+	z-index: 3;
+}
+#footer {
+	margin: 0 0 0 13.6em;
+}
+
+/* IE 5 & 5.5 interpret keyword sizes one off */
+body { font-size: xx-small; }
+/*
+** the edit tabs
+*/
+#p-cactions li {
+	float: left;
+	padding-top: 0;
+	padding-bottom: 0 !important;
+	height: 0.9em;
+}
+#p-cactions li a {
+	display: block;
+	padding-bottom: 0.045em;
+}
+#p-cactions li.selected a {
+	padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+	padding-bottom: 0.17em;
+}
+/* 5.0 doesn't like the background icon for external links and user */
+.link-external,
+.external {
+	background: none;
+	padding: 0;
+}
+#p-personal ul { float: right }
+#p-personal li { float: left }
+li#pt-userpage,
+li#pt-anonuserpage,
+li#pt-login,
+li#pt-logout {
+	background: none;
+	padding-left: none;
+}
+.visualClear {
+	width: 100%;
+	height: 0px;
+	padding:0;
+	margin: 0;
+}
+.firstHeading { margin-bottom: .3em; }
+/*div{ border:1px solid Red !important;}*/

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE55Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE55Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE55Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,85 @@
+/* IE5.5/win- only fixes */
+
+#column-content { 
+	float: none; 
+	margin-left: 0;
+	height: 1%;
+}
+#column-content #content {
+	position: relative;
+	z-index: 5;
+	margin-left: 12.2em;
+	margin-top: 3em;
+	height: 1%;
+}
+#column-one {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 4;
+	width: 100%;
+}
+#footer {
+	margin-left: 13.6em;
+	border-left: 1px solid #fabd23;
+}
+
+/*#bodyContent div,
+#bodyContent pre { overflow: auto; }*/
+
+#p-personal { padding-bottom: .1em; }
+
+body { font-size: xx-small; }
+
+#p-cactions {
+	width: 76% !important;
+	z-index: 3 !important;
+	float: none;
+}
+#p-cactions li {
+	padding-bottom: 0 !important;
+	border: none;
+	background-color: transparent;
+	cursor: default;
+	float: none !important;
+}
+#p-cactions li a {
+	display: inline-block !important;
+	vertical-align: top;
+	padding-bottom: 0;
+	border: solid #aaa;
+	border-width: 1px 1px 0;
+}
+#p-cactions li.selected a {
+	border-color: #fabd23;
+	padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+	padding-bottom: 0.17em;
+}
+#p-navigation a {
+	display: inline-block;
+	width: 100%;
+}
+.portlet {
+	overflow: hidden;
+}
+#bodyContent a.external {
+	background: url(external.png) center right no-repeat;
+	padding-right: 13px;
+}
+/* show the hand */
+#p-logo a,
+#p-logo a:hover {
+	cursor: pointer;
+}
+.visualClear {
+	width: 90%;
+	height: 1px;
+	padding: 0;
+	margin: 0;
+}
+
+#editform {
+	width: 100%;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,84 @@
+/* 6.0 - only fixes */
+/* content area */ 
+/* workaround for various ie float bugs */
+#column-content { 
+	float: none; 
+	margin-left: 0;
+	height: 1%;
+}
+#column-content #content {
+	margin-left: 12.2em;
+	margin-top: 3em;
+	height: 1%;
+}
+#column-one {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 4;
+}
+#footer {
+	margin-left: 13.6em;
+	border-left: 1px solid #fabd23;
+}
+
+/* the tabs */
+
+#p-cactions {
+	z-index: 3;
+}
+
+#p-cactions li {
+	padding-bottom: 0 !important;
+	border: none;
+	background-color: transparent;
+	cursor: default;
+	float: none !important;
+}
+#p-cactions li a {
+	display: inline-block !important;
+	vertical-align: top;
+	padding-bottom: 0;
+	border: solid #aaa;
+	border-width: 1px 1px 0;
+}
+#p-cactions li.selected a {
+	border-color: #fabd23;
+	padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+	padding-bottom: 0.17em;
+}
+#p-navigation a {
+	display: inline-block;
+	width: 100%;
+}
+#portal-personaltools {
+	padding-bottom: 0.1em;
+}
+#bodyContent a.external {
+	background: url(external.png) center right no-repeat;
+	padding-right: 13px;
+}
+
+/* show the hand */
+#p-logo a,
+#p-logo a:hover {
+	cursor: pointer;
+}
+div.visualClear {
+	width:100%;
+	line-height: 0;
+}
+textarea {
+	width: 96%;
+}
+
+div.editsection,
+#catlinks,
+div.tright,
+div.tleft {
+	position: relative;
+}
+/*{ border:1px solid Red !important;}*/
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,69 @@
+/* 7.0 - only fixes */
+/* content area */ 
+/* workaround for various ie float bugs */
+
+/* This bit is needed to make links clickable... WTF */
+#column-content #content {
+	margin-left: 12.2em;
+	margin-top: 3em;
+	height: 1%;
+}
+
+.rtl #column-one {
+	/* For some reason it tries to inherit the padding-top into every div,
+	 * and I can't figure out how to get it back off.
+	 */
+	padding-top: 0;
+}
+.rtl #column-one #p-navigation {
+	margin-top: 160px;
+}
+
+/* the tabs */
+
+#p-cactions {
+	z-index: 3;
+}
+
+
+#p-cactions li {
+	padding-bottom: 0 !important;
+	border: none;
+	background-color: transparent;
+	cursor: default;
+	float: none !important;
+}
+
+#p-cactions li a {
+	display: inline-block !important;
+	vertical-align: top;
+	padding-bottom: 0;
+	border: solid #aaa;
+	border-width: 1px 1px 0;
+}
+#p-cactions li.selected a {
+	border-color: #fabd23;
+	padding-bottom: 0.17em;
+}
+#p-cactions li a:hover {
+	padding-bottom: 0.17em;
+}
+#p-navigation a {
+	display: inline-block;
+	width: 100%;
+}
+#portal-personaltools {
+	padding-bottom: 0.1em;
+}
+textarea {
+	width: 96%;
+}
+
+/*
+div.editsection,
+#catlinks,
+div.tright,
+div.tleft {
+	position: relative;
+}
+*/

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IEMacFixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IEMacFixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IEMacFixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,44 @@
+/* IE/Mac only fix stylesheet, imported from main.css */
+#portal-column-content {
+	margin: 0 0 4.8em 0;
+	float: none;
+}
+#portal-column-content #content {
+	z-index: 0;
+}
+#portal-column-one {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 3;
+}
+#portal-footer {
+	margin-left: 12em; 
+}
+/*
+#portlet-contentViews {
+	top: 0.6em !important;
+	left: 14.5em !important;
+}
+*/
+#portlet-contentViews li,
+#portlet-contentViews .selected {
+	border: none !important;
+}
+#portlet-contentViews li a   {
+	border: 1px solid #aaaaaa;
+	border-bottom: none;
+}
+#portlet-contentViews li.selected a {
+	border: 1px solid #fabd23;
+	border-bottom: none;
+}
+/* no background images */
+li#personaltools-userpage,
+li#personaltools-login/* */ {
+	background: none;
+	padding-left: none;
+}
+#mactest {
+	color: green;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,3 @@
+/* KHTML fix stylesheet */
+/* work around the horizontal scrollbars */
+#column-content { margin-left: 0; }

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera6Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera6Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera6Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,14 @@
+/* opera 6 fixes */
+#column-one {
+	position: relative;
+	max-width: 11.7em;
+}
+#p-personal {
+	width: 45em;
+	margin-left: 8.6em;
+	right: 0;
+}
+#bodyContent a.external {
+	background: url(external.png) center right no-repeat;
+	padding-right: 13px;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera7Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera7Fixes.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/Opera7Fixes.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,11 @@
+/* small tweaks for opera seven */
+#p-cactions {
+	margin-top: .1em;
+}
+#p-cactions li a {
+	top: 2px;
+}
+#bodyContent a.external {
+	background: url(external.png) center right no-repeat;
+	padding-right: 13px;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/bullet.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/bullet.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/discussionitem_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/discussionitem_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/external.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/external.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/file_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/file_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/headbg.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/headbg.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/link_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/link_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/lock_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/lock_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/magnify-clip.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/magnify-clip.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/mail_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/mail_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,1443 @@
+/*
+** MediaWiki 'monobook' style sheet for CSS2-capable browsers.
+** Copyright Gabriel Wicke - http://wikidev.net/
+** License: GPL (http://www.gnu.org/copyleft/gpl.html)
+**
+** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
+** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
+** Michael Zeltner and Geir Bækholt)
+** All you guys rock :)
+*/
+
+#column-content {
+	width: 100%;
+	float: right;
+	margin: 0 0 .6em -12.2em;
+	padding: 0;
+}
+#content {
+	margin: 2.8em 0 0 12.2em;
+	padding: 0 1em 1.5em 1em;
+	background: white;
+	color: black;
+	border: 1px solid #aaa;
+	border-right: none;
+	line-height: 1.5em;
+	position: relative;
+	z-index: 2;
+}
+#column-one {
+	padding-top: 160px;
+}
+/* the left column width is specified in class .portlet */
+
+/* Font size:
+** We take advantage of keyword scaling- browsers won't go below 9px
+** More at http://www.w3.org/2003/07/30-font-size
+** http://style.cleverchimp.com/font_size_intervals/altintervals.html
+*/
+
+body {
+	font: x-small sans-serif;
+	background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
+	color: black;
+	margin: 0;
+	padding: 0;
+}
+
+/* scale back up to a sane default */
+#globalWrapper {
+	font-size: 127%;
+	width: 100%;
+	margin: 0;
+	padding: 0;
+}
+.visualClear {
+	clear: both;
+}
+
+/* general styles */
+
+table {
+	background: white;
+	font-size: 100%;
+	color: black;
+}
+a {
+	text-decoration: none;
+	color: #002bb8;
+	background: none;
+}
+a:visited {
+	color: #5a3696;
+}
+a:active {
+	color: #faa700;
+}
+a:hover {
+	text-decoration: underline;
+}
+a.stub {
+	color: #772233;
+}
+a.new, #p-personal a.new {
+	color: #ba0000;
+}
+a.new:visited, #p-personal a.new:visited {
+	color: #a55858;
+}
+
+img {
+	border: none;
+	vertical-align: middle;
+}
+p {
+	margin: .4em 0 .5em 0;
+	line-height: 1.5em;
+}
+p img {
+	margin: 0;
+}
+
+hr {
+	height: 1px;
+	color: #aaa;
+	background-color: #aaa;
+	border: 0;
+	margin: .2em 0 .2em 0;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	color: black;
+	background: none;
+	font-weight: normal;
+	margin: 0;
+	padding-top: .5em;
+	padding-bottom: .17em;
+	border-bottom: 1px solid #aaa;
+}
+h1 { font-size: 188%; }
+h2 { font-size: 150%; }
+h3, h4, h5, h6 {
+	border-bottom: none;
+	font-weight: bold;
+}
+h3 { font-size: 132%; }
+h4 { font-size: 116%; }
+h5 { font-size: 100%; }
+h6 { font-size: 80%;  }
+
+ul {
+	line-height: 1.5em;
+	list-style-type: square;
+	margin: .3em 0 0 1.5em;
+	padding: 0;
+	list-style-image: url(bullet.gif);
+}
+ol {
+	line-height: 1.5em;
+	margin: .3em 0 0 3.2em;
+	padding: 0;
+	list-style-image: none;
+}
+li {
+	margin-bottom: .1em;
+}
+dt {
+	font-weight: bold;
+	margin-bottom: .1em;
+}
+dl {
+	margin-top: .2em;
+	margin-bottom: .5em;
+}
+dd {
+	line-height: 1.5em;
+	margin-left: 2em;
+	margin-bottom: .1em;
+}
+
+fieldset {
+	border: 1px solid #2f6fab;
+	margin: 1em 0 1em 0;
+	padding: 0 1em 1em;
+	line-height: 1.5em;
+}
+legend {
+	background: white;
+	padding: .5em;
+	font-size: 95%;
+}
+form {
+	border: none;
+	margin: 0;
+}
+
+textarea {
+	width: 100%;
+	padding: .1em;
+}
+
+input.historysubmit {
+	padding: 0 .3em .3em .3em !important;
+	font-size: 94%;
+	cursor: pointer;
+	height: 1.7em !important;
+	margin-left: 1.6em;
+}
+select {
+	vertical-align: top;
+}
+abbr, acronym, .explain {
+	border-bottom: 1px dotted black;
+	color: black;
+	background: none;
+	cursor: help;
+}
+q {
+	font-family: Times, "Times New Roman", serif;
+	font-style: italic;
+}
+/* disabled for now
+blockquote {
+	font-family: Times, "Times New Roman", serif;
+	font-style: italic;
+}*/
+code {
+	background-color: #f9f9f9;
+}
+pre {
+	padding: 1em;
+	border: 1px dashed #2f6fab;
+	color: black;
+	background-color: #f9f9f9;
+	line-height: 1.1em;
+}
+
+/*
+** the main content area
+*/
+
+#siteSub {
+	display: none;
+}
+
+#jump-to-nav {
+	display: none;
+}
+
+#contentSub, #contentSub2 {
+	font-size: 84%;
+	line-height: 1.2em;
+	margin: 0 0 1.4em 1em;
+	color: #7d7d7d;
+	width: auto;
+}
+span.subpages {
+	display: block;
+}
+
+/* Some space under the headers in the content area */
+#bodyContent h1, #bodyContent h2 {
+	margin-bottom: .6em;
+}
+#bodyContent h3, #bodyContent h4, #bodyContent h5 {
+	margin-bottom: .3em;
+}
+.firstHeading {
+	margin-bottom: .1em;
+}
+
+/* user notification thing */
+.usermessage {
+	background-color: #ffce7b;
+	border: 1px solid #ffa500;
+	color: black;
+	font-weight: bold;
+	margin: 2em 0 1em;
+	padding: .5em 1em;
+	vertical-align: middle;
+}
+#siteNotice {
+	text-align: center;
+	font-size: 95%;
+	padding: 0 .9em;
+}
+#siteNotice p {
+	margin: 0;
+	padding: 0;
+}
+.error {
+	color: red;
+	font-size: larger;
+}
+.errorbox, .successbox {
+	font-size: larger;
+	border: 2px solid;
+	padding: .5em 1em;
+	float: left;
+	margin-bottom: 2em;
+	color: #000;
+}
+.errorbox {
+	border-color: red;
+	background-color: #fff2f2;
+}
+.successbox {
+	border-color: green;
+	background-color: #dfd;
+}
+.errorbox h2, .successbox h2 {
+	font-size: 1em;
+	font-weight: bold;
+	display: inline;
+	margin: 0 .5em 0 0;
+	border: none;
+}
+
+#catlinks {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	margin-top: 1em;
+	clear: both;
+}
+/* currently unused, intended to be used by a metadata box
+in the bottom-right corner of the content area */
+.documentDescription {
+	/* The summary text describing the document */
+	font-weight: bold;
+	display: block;
+	margin: 1em 0;
+	line-height: 1.5em;
+}
+.documentByLine {
+	text-align: right;
+	font-size: 90%;
+	clear: both;
+	font-weight: normal;
+	color: #76797c;
+}
+
+/* emulate center */
+.center {
+	width: 100%;
+	text-align: center;
+}
+*.center * {
+	margin-left: auto;
+	margin-right: auto;
+}
+/* small for tables and similar */
+.small, .small * {
+	font-size: 94%;
+}
+table.small {
+	font-size: 100%;
+}
+
+/*
+** content styles
+*/
+
+#toc,
+.toc,
+.mw-warning {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+}
+#toc h2,
+.toc h2 {
+	display: inline;
+	border: none;
+	padding: 0;
+	font-size: 100%;
+	font-weight: bold;
+}
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+	text-align: center;
+}
+#toc ul,
+.toc ul {
+	list-style-type: none;
+	list-style-image: none;
+	margin-left: 0;
+	padding-left: 0;
+	text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+	margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+	font-size: 94%;
+}
+
+.mw-warning {
+	margin-left: 50px;
+	margin-right: 50px;
+	text-align: center;
+}
+
+/* images */
+div.floatright, table.floatright {
+	clear: right;
+	float: right;
+	position: relative;
+	margin: 0 0 .5em .5em;
+	border: 0;
+/*
+	border: .5em solid white;
+	border-width: .5em 0 .8em 1.4em;
+*/
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+	float: left;
+	position: relative;
+	margin: 0 .5em .5em 0;
+	border: 0;
+/*
+	margin: .3em .5em .5em 0;
+	border: .5em solid white;
+	border-width: .5em 1.4em .8em 0;
+*/
+}
+div.floatleft p { font-style: italic; }
+/* thumbnails */
+div.thumb {
+	margin-bottom: .5em;
+	border-style: solid;
+	border-color: white;
+	width: auto;
+}
+div.thumb div {
+	border: 1px solid #ccc;
+	padding: 3px !important;
+	background-color: #f9f9f9;
+	font-size: 94%;
+	text-align: center;
+	overflow: hidden;
+}
+div.thumb div a img {
+	border: 1px solid #ccc;
+}
+div.thumb div div.thumbcaption {
+	border: none;
+	text-align: left;
+	line-height: 1.4em;
+	padding: .3em 0 .1em 0;
+}
+div.magnify {
+	float: right;
+	border: none !important;
+	background: none !important;
+}
+div.magnify a, div.magnify img {
+	display: block;
+	border: none !important;
+	background: none !important;
+}
+div.tright {
+	clear: right;
+	float: right;
+	border-width: .5em 0 .8em 1.4em;
+}
+div.tleft {
+	float: left;
+	margin-right: .5em;
+	border-width: .5em 1.4em .8em 0;
+}
+
+.hiddenStructure {
+	display: none;
+	speak: none;
+}
+img.tex {
+	vertical-align: middle;
+}
+span.texhtml {
+	font-family: serif;
+}
+
+/*
+** classes for special content elements like town boxes
+** intended to be referenced directly from the wiki src
+*/
+
+/*
+** User styles
+*/
+/* table standards */
+table.rimage {
+	float: right;
+	position: relative;
+	margin-left: 1em;
+	margin-bottom: 1em;
+	text-align: center;
+}
+.toccolours {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+}
+div.townBox {
+	position: relative;
+	float: right;
+	background: white;
+	margin-left: 1em;
+	border: 1px solid gray;
+	padding: .3em;
+	width: 200px;
+	overflow: hidden;
+	clear: right;
+}
+div.townBox dl {
+	padding: 0;
+	margin: 0 0 .3em;
+	font-size: 96%;
+}
+div.townBox dl dt {
+	background: none;
+	margin: .4em 0 0;
+}
+div.townBox dl dd {
+	margin: .1em 0 0 1.1em;
+	background-color: #f3f3f3;
+}
+
+/*
+** edit views etc
+*/
+.special li {
+	line-height: 1.4em;
+	margin: 0;
+	padding: 0;
+}
+
+/* Page history styling */
+/* the auto-generated edit comments */
+.autocomment {
+	color: gray;
+}
+#pagehistory span.user {
+	margin-left: 1.4em;
+	margin-right: .4em;
+}
+#pagehistory span.minor {
+	font-weight: bold;
+}
+#pagehistory li {
+	border: 1px solid white;
+}
+#pagehistory li.selected {
+	background-color: #f9f9f9;
+	border: 1px dashed #aaa;
+}
+
+/*
+** Diff rendering
+*/
+table.diff, td.diff-otitle, td.diff-ntitle {
+	background-color: white;
+}
+td.diff-addedline {
+	background: #cfc;
+	font-size: smaller;
+}
+td.diff-deletedline {
+	background: #ffa;
+	font-size: smaller;
+}
+td.diff-context {
+	background: #eee;
+	font-size: smaller;
+}
+span.diffchange {
+	color: red;
+	font-weight: bold;
+}
+
+/*
+** keep the whitespace in front of the ^=, hides rule from konqueror
+** this is css3, the validator doesn't like it when validating as css2
+*/
+#bodyContent a.external,
+#bodyContent a[href ^="gopher://"] {
+	background: url(external.png) center right no-repeat;
+	padding-right: 13px;
+}
+#bodyContent a[href ^="https://"],
+.link-https {
+	background: url(lock_icon.gif) center right no-repeat;
+	padding-right: 16px;
+}
+#bodyContent a[href ^="mailto:"],
+.link-mailto {
+	background: url(mail_icon.gif) center right no-repeat;
+	padding-right: 18px;
+}
+#bodyContent a[href ^="news://"] {
+	background: url(news_icon.png) center right no-repeat;
+	padding-right: 18px;
+}
+#bodyContent a[href ^="ftp://"],
+.link-ftp {
+	background: url(file_icon.gif) center right no-repeat;
+	padding-right: 18px;
+}
+#bodyContent a[href ^="irc://"],
+.link-irc {
+	background: url(discussionitem_icon.gif) center right no-repeat;
+	padding-right: 18px;
+}
+/* disable interwiki styling */
+#bodyContent a.extiw,
+#bodyContent a.extiw:active {
+	color: #36b;
+	background: none;
+	padding: 0;
+}
+#bodyContent a.external {
+	color: #36b;
+}
+/* this can be used in the content area to switch off
+special external link styling */
+#bodyContent .plainlinks a {
+	background: none !important;
+	padding: 0 !important;
+}
+/*
+** Structural Elements
+*/
+
+/*
+** general portlet styles (elements in the quickbar)
+*/
+.portlet {
+	border: none;
+	margin: 0 0 .5em;
+	padding: 0;
+	float: none;
+	width: 11.6em;
+	overflow: hidden;
+}
+.portlet h4 {
+	font-size: 95%;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.portlet h5 {
+	background: transparent;
+	padding: 0 1em 0 .5em;
+	display: inline;
+	height: 1em;
+	text-transform: lowercase;
+	font-size: 91%;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.portlet h6 {
+	background: #ffae2e;
+	border: 1px solid #2f6fab;
+	border-style: solid solid none solid;
+	padding: 0 1em 0 1em;
+	text-transform: lowercase;
+	display: block;
+	font-size: 1em;
+	height: 1.2em;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.pBody {
+	font-size: 95%;
+	background-color: white;
+	color: black;
+	border-collapse: collapse;
+	border: 1px solid #aaa;
+	padding: 0 .8em .3em .5em;
+}
+.portlet h1,
+.portlet h2,
+.portlet h3,
+.portlet h4 {
+	margin: 0;
+	padding: 0;
+}
+.portlet ul {
+	line-height: 1.5em;
+	list-style-type: square;
+	list-style-image: url(bullet.gif);
+	font-size: 95%;
+}
+.portlet li {
+	padding: 0;
+	margin: 0;
+}
+
+/*
+** Logo properties
+*/
+
+#p-logo {
+	z-index: 3;
+	position: absolute; /*needed to use z-index */
+	top: 0;
+	left: 0;
+	height: 155px;
+	width: 12em;
+	overflow: visible;
+}
+#p-logo h5 {
+	display: none;
+}
+#p-logo a,
+#p-logo a:hover {
+	display: block;
+	height: 155px;
+	width: 12.2em;
+	background-repeat: no-repeat;
+	background-position: 35% 50% !important;
+	text-decoration: none;
+}
+
+/*
+** the navigation portlet
+*/
+
+#p-navigation {
+	position: relative;
+	z-index: 3;
+}
+
+#p-navigation .pBody {
+	padding-right: 0;
+}
+
+#p-navigation a {
+	display: block;
+}
+
+#p-navigation li.active a, #p-navigation li.active a:hover {
+	text-decoration: none;
+	display: inline;
+	font-weight: bold;
+}
+
+
+/*
+** Search portlet
+*/
+#p-search {
+	position: relative;
+	z-index: 3;
+}
+input.searchButton {
+	margin-top: 1px;
+	font-size: 95%;
+}
+#searchGoButton {
+	padding-left: .5em;
+	padding-right: .5em;
+	font-weight: bold;
+}
+#searchInput {
+	width: 10.9em;
+	margin: 0;
+	font-size: 95%;
+}
+#p-search .pBody {
+	padding: .5em .4em .4em .4em;
+	text-align: center;
+}
+
+/*
+** the personal toolbar
+*/
+
+#p-personal {
+	width: 100%;
+	white-space: nowrap;
+	padding: 0;
+	margin: 0;
+	position: absolute;
+	left: 0;
+	top: 0;
+	z-index: 0;
+	border: none;
+	background: none;
+	overflow: visible;
+	line-height: 1.2em;
+}
+
+#p-personal h5 {
+	display: none;
+}
+#p-personal .portlet,
+#p-personal .pBody {
+	padding: 0;
+	margin: 0;
+	border: none;
+	z-index: 0;
+	overflow: visible;
+	background: none;
+}
+/* this is the ul contained in the portlet */
+#p-personal ul {
+	border: none;
+	line-height: 1.4em;
+	color: #2f6fab;
+	padding: 0 2em 0 3em;
+	margin: 0;
+	text-align: right;
+	text-transform: lowercase;
+	list-style: none;
+	z-index: 0;
+	background: none;
+	cursor: default;
+}
+#p-personal li {
+	z-index: 0;
+	border: none;
+	padding: 0;
+	display: inline;
+	color: #2f6fab;
+	margin-left: 1em;
+	line-height: 1.2em;
+	background: none;
+}
+#p-personal li.active {
+	font-weight: bold;
+}
+#p-personal li a {
+	text-decoration: none;
+	color: #005896;
+	padding-bottom: .2em;
+	background: none;
+}
+#p-personal li a:hover {
+	background-color: white;
+	padding-bottom: .2em;
+	text-decoration: none;
+}
+#p-personal li.active a:hover {
+	background-color: transparent;
+}
+/* the icon in front of the user name, single quotes
+in bg url to hide it from iemac */
+li#pt-userpage,
+li#pt-anonuserpage,
+li#pt-login {
+	background: url(user.gif) top left no-repeat;
+	padding-left: 20px;
+	text-transform: none;
+}
+
+/*
+** the page-related actions- page/talk, edit etc
+*/
+#p-cactions {
+	position: absolute;
+	top: 1.3em;
+	left: 11.5em;
+	margin: 0;
+	white-space: nowrap;
+	width: 76%;
+	line-height: 1.1em;
+	overflow: visible;
+	background: none;
+	border-collapse: collapse;
+	padding-left: 1em;
+	list-style: none;
+	font-size: 95%;
+}
+#p-cactions .hiddenStructure {
+	display: none;
+}
+#p-cactions ul {
+	list-style: none;
+}
+#p-cactions li {
+	display: inline;
+	border: 1px solid #aaa;
+	border-bottom: none;
+	padding: 0 0 .1em 0;
+	margin: 0 .3em 0 0;
+	overflow: visible;
+	background: white;
+}
+#p-cactions li.selected {
+	border-color: #fabd23;
+	padding: 0 0 .2em 0;
+	font-weight: bold;
+}
+#p-cactions li a {
+	background-color: #fbfbfb;
+	color: #002bb8;
+	border: none;
+	padding: 0 .8em .3em;
+	text-decoration: none;
+	text-transform: lowercase;
+	position: relative;
+	z-index: 0;
+	margin: 0;
+}
+#p-cactions li.selected a {
+	z-index: 3;
+		background-color: #fff;
+	padding: 0 1em .2em!important;
+}
+#p-cactions .new a {
+	color: #ba0000;
+}
+#p-cactions li a:hover {
+	z-index: 3;
+	text-decoration: none;
+		background-color: #fff;
+}
+#p-cactions h5 {
+	display: none;
+}
+#p-cactions li.istalk {
+	margin-right: 0;
+}
+#p-cactions li.istalk a {
+	padding-right: .5em;
+}
+#p-cactions #ca-addsection a {
+	padding-left: .4em;
+	padding-right: .4em;
+}
+/* offsets to distinguish the tab groups */
+li#ca-talk {
+	margin-right: 1.6em;
+}
+li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
+	margin-left: 1.6em;
+}
+
+/*
+** the remaining portlets
+*/
+#p-tbx,
+#p-lang {
+	position: relative;
+	z-index: 3;
+}
+
+/* TODO: #t-iscite is only used by the Cite extension, come up with some
+ * system which allows extensions to add to this file on the fly
+ */
+#t-ispermalink, #t-iscite {
+	color: #999;
+}
+/*
+** footer
+*/
+#footer {
+	background-color: white;
+	border-top: 1px solid #fabd23;
+	border-bottom: 1px solid #fabd23;
+	margin: .6em 0 1em 0;
+	padding: .4em 0 1.2em 0;
+	text-align: center;
+	font-size: 90%;
+}
+#footer li {
+	display: inline;
+	margin: 0 1.3em;
+}
+/* hide from incapable browsers */
+head:first-child+body #footer li { white-space: nowrap; }
+#f-poweredbyico, #f-copyrightico {
+	margin: 0 8px;
+	position: relative;
+	top: -2px; /* Bump it up just a tad */
+}
+#f-poweredbyico {
+	float: right;
+	height: 1%;
+}
+#f-copyrightico {
+	float: left;
+	height: 1%;
+}
+
+/* js pref toc */
+#preftoc {
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	clear: both;
+}
+#preftoc li {
+	margin: 1px -2px 1px 2px;
+	float: left;
+	padding: 2px 0 3px 0;
+	background-color: #f0f0f0;
+	color: #000;
+	border: 1px solid #fff;
+	border-right-color: #716f64;
+	border-bottom: 0;
+	position: relative;
+	white-space: nowrap;
+	list-style-type: none;
+	list-style-image: none;
+	z-index: 3;
+}
+#preftoc li.selected {
+	font-weight: bold;
+	background-color: #f9f9f9;
+	border: 1px solid #aaa;
+	border-bottom: none;
+	cursor: default;
+	top: 1px;
+	padding-top: 2px;
+	margin-right: -3px;
+}
+#preftoc > li.selected {
+	top: 2px;
+}
+#preftoc a,
+#preftoc a:active {
+	display: block;
+	color: #000;
+	padding: 0 .7em;
+	position: relative;
+	text-decoration: none;
+}
+#preftoc li.selected a {
+	cursor: default;
+	text-decoration: none;
+}
+#prefcontrol {
+	padding-top: 2em;
+	clear: both;
+}
+#preferences {
+	margin: 0;
+	border: 1px solid #aaa;
+	clear: both;
+	padding: 1.5em;
+	background-color: #F9F9F9;
+}
+.prefsection {
+	border: none;
+	padding: 0;
+	margin: 0;
+}
+.prefsection fieldset {
+	border: 1px solid #aaa;
+	float: left;
+	margin-right: 2em;
+}
+.prefsection legend {
+	font-weight: bold;   
+}
+.prefsection table, .prefsection legend {
+	background-color: #F9F9F9;
+}
+.mainLegend {
+	display: none;
+}
+div.prefsectiontip {
+	font-size: 95%;
+	margin-top: 0;
+	background-color: #FFC1C1;
+	padding: .2em .7em;
+	clear: both;
+}
+.btnSavePrefs {
+	font-weight: bold;
+	padding-left: .3em;
+	padding-right: .3em;
+}
+
+.preferences-login {
+	clear: both;
+	margin-bottom: 1.5em;
+}
+
+.prefcache {
+	font-size: 90%;
+	margin-top: 2em;
+}
+
+div#userloginForm form,
+div#userlogin form#userlogin2 {
+	margin: 0 3em 1em 0;
+	border: 1px solid #aaa;
+	clear: both;
+	padding: 1.5em 2em;
+	background-color: #f9f9f9;
+	float: left;
+}
+
+div#userloginForm table,
+div#userlogin form#userlogin2 table {
+	background-color: #f9f9f9;
+}
+
+div#userloginForm h2,
+div#userlogin form#userlogin2 h2 {
+	padding-top: 0;
+}
+
+div#userlogin .captcha {
+	border: 1px solid #bbb;
+	padding: 1.5em 2em;
+	width: 400px;
+	background-color: white;
+}
+
+
+#userloginprompt {
+	font-size: 85%;
+}
+
+#login-emailforlost {
+	font-size: 85%;
+	line-height: 1.2;
+	padding-top: 2em;
+}
+
+#userlogin .loginText, #userlogin .loginPassword {
+	width: 12em;
+}
+
+#userloginlink a, #wpLoginattempt, #wpCreateaccount {
+	font-weight: bold;
+}
+
+/*
+** IE/Mac fixes, hope to find a validating way to move this
+** to a separate stylesheet. This would work but doesn't validate:
+** @import("IEMacFixes.css");
+*/
+/* tabs: border on the a, not the div */
+* > html #p-cactions li { border: none; }
+* > html #p-cactions li a {
+	border: 1px solid #aaa;
+	border-bottom: none;
+}
+* > html #p-cactions li.selected a { border-color: #fabd23; }
+/* footer icons need a fixed width */
+* > html #f-poweredbyico,
+* > html #f-copyrightico { width: 88px; }
+* > html #bodyContent,
+* > html #bodyContent pre {
+	overflow-x: auto;
+	width: 100%;
+	padding-bottom: 25px;
+}
+
+/* more IE fixes */
+/* float/negative margin brokenness */
+* html #footer {margin-top: 0;}
+* html #column-content {
+	display: inline;
+	margin-bottom: 0;
+}
+* html div.editsection { font-size: smaller; }
+#pagehistory li.selected { position: relative; }
+
+/* Mac IE 5.0 fix; floated content turns invisible */
+* > html #column-content {
+	float: none;
+}
+* > html #column-one {
+	position: absolute;
+	left: 0;
+	top: 0;
+}
+* > html #footer {
+	margin-left: 13.2em;
+}
+.redirectText {
+	font-size: 150%;
+	margin: 5px;
+}
+
+.printfooter {
+	display: none;
+}
+
+.not-patrolled {
+	background-color: #ffa;
+}
+div.patrollink {
+	font-size: 75%;
+	text-align: right;
+}
+span.newpage, span.minor, span.searchmatch {
+	font-weight: bold;
+}
+span.unpatrolled {
+	font-weight: bold;
+	color: red;
+}
+
+span.searchmatch {
+	color: red;
+}
+.sharedUploadNotice {
+	font-style: italic;
+}
+
+span.updatedmarker {
+	color: black;
+	background-color: #0f0;
+}
+span.newpageletter {
+	font-weight: bold;
+	color: black;
+	background-color: yellow;
+}
+span.minoreditletter {
+	color: black;
+	background-color: #c5ffe6;
+}
+
+table.gallery {
+	border: 1px solid #ccc;
+	margin: 2px;
+	padding: 2px;
+	background-color: white;
+}
+
+table.gallery tr {
+	vertical-align: top;
+}
+
+table.gallery td {
+	vertical-align: top;
+	background-color: #f9f9f9;
+	border: solid 2px white;
+}
+
+div.gallerybox {
+	margin: 2px;
+	width:  150px;
+}
+
+div.gallerybox div.thumb {
+	text-align: center;
+	border: 1px solid #ccc;
+	margin: 2px;
+}
+
+div.gallerytext {
+	font-size: 94%;
+	padding: 2px 4px;
+}
+
+span.comment {
+	font-style: italic;
+}
+
+span.changedby {
+	font-size: 95%;
+}
+
+.previewnote {
+	text-indent: 3em;
+	color: #c00;
+	border-bottom: 1px solid #aaa;
+	padding-bottom: 1em;
+	margin-bottom: 1em;
+}
+
+.previewnote p {
+	margin: 0;
+	padding: 0;
+}
+
+.editExternally {
+	border: 1px solid gray;
+	background-color: #ffffff;
+	padding: 3px;
+	margin-top: 0.5em;
+	float: left;
+	font-size: small;
+	text-align: center;
+}
+.editExternallyHelp {
+	font-style: italic;
+	color: gray;
+}
+
+li span.deleted, span.history-deleted {
+	text-decoration: line-through;
+	color: #888;
+	font-style: italic;
+}
+
+.toggle {
+	margin-left: 2em;
+	text-indent: -2em;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+	font-size: 0.8em;
+	margin-left: 0.5em;
+	margin-bottom: 0.5em;
+	width: 300px;
+}
+
+table.mw_metadata caption {
+	font-weight: bold;
+}
+
+table.mw_metadata th {
+	font-weight: normal;
+}
+
+table.mw_metadata td {
+	padding: 0.1em;
+}
+
+table.mw_metadata {
+	border: none;
+	border-collapse: collapse;
+}
+
+table.mw_metadata td, table.mw_metadata th {
+	text-align: center;
+	border: 1px solid #aaaaaa;
+	padding-left: 0.1em;
+	padding-right: 0.1em;
+}
+
+table.mw_metadata th {
+	background-color: #f9f9f9;
+}
+
+table.mw_metadata td {
+	background-color: #fcfcfc;
+}
+
+table.collapsed tr.collapsable {
+	display: none;
+}
+
+
+/* filetoc */
+ul#filetoc {
+	text-align: center;
+	border: 1px solid #aaaaaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+	margin-bottom: 0.5em;
+	margin-left: 0;
+	margin-right: 0;
+}
+
+#filetoc li {
+	display: inline;
+	list-style-type: none;
+	padding-right: 2em;
+}
+
+/* @bug 1714 */
+input#wpSave, input#wpDiff {
+	margin-right: 0.33em;
+}
+
+#editform .editOptions {
+	display: inline;
+}
+
+#wpSave {
+	font-weight: bold;
+}
+
+/* Classes for article validation */
+
+table.revisionform_default {
+	border: 1px solid #000000;
+}
+
+table.revisionform_focus {
+	border: 1px solid #000000;
+	background-color:#00BBFF;
+}
+
+tr.revision_tr_default {
+	background-color:#EEEEEE;
+}
+
+tr.revision_tr_first {
+	background-color:#DDDDDD;
+}
+
+p.revision_saved {
+	color: green;
+	font-weight:bold;
+}
+
+#mw_trackbacks {
+	border: solid 1px #bbbbff;
+	background-color: #eeeeff;
+	padding: 0.2em;
+}
+
+
+/* Allmessages table */
+
+#allmessagestable th {
+	background-color: #b2b2ff;
+}
+
+#allmessagestable tr.orig {
+	background-color: #ffe2e2;
+}
+
+#allmessagestable tr.new {
+	background-color: #e2ffe2;
+}
+
+#allmessagestable tr.def {
+	background-color: #f0f0ff;
+}
+
+
+/* noarticletext */
+div.noarticletext {
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: .2em 1em;
+	color: #000;
+}
+
+div#searchTargetContainer {
+	left:       10px;
+	top:        10px;
+	width:      90%;
+	background: white;
+}
+
+div#searchTarget {
+	padding:    3px;
+	margin:     5px;
+	background: #F0F0F0;
+	border:     solid 1px blue;
+}
+
+div#searchTarget ul li {
+	list-style: none;
+}
+
+div#searchTarget ul li:before {
+	color: orange;
+	content: "\00BB \0020";
+}
+

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/news_icon.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/news_icon.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/required.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/required.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,212 @@
+/*
+Right-to-left fixes for MonoBook.
+Places sidebar on right, tweaks various alignment issues.
+
+Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
+
+Safari bugs (1.2.1):
+* Tabs are still appearing in left-to-right order. (Try after localizing)
+
+Opera bugs (7.23 linux):
+* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
+
+IE/mac bugs:
+* The thing barfs on Hebrew and Arabic anyway, so no point testing.
+
+Missing features due to lack of support:
+* external link icons
+
+To test:
+* Opera6
+* IE 5.0
+* etc
+
+*/
+body {
+	direction: rtl;
+/*    unicode-bidi: bidi-override;*/
+	unicode-bidi: embed;
+}
+#column-content {
+	margin: 0 -12.2em 0 0;
+	float: left;
+}
+#column-content #content{
+	margin-left: 0;
+	margin-right: 12.2em;
+	border-right: 1px solid #aaaaaa;
+	border-left: none;
+}
+html>body .portlet {
+	float: right;
+	clear: right;
+}
+/* recover IEMac (might be fine with the float, but usually it's close to IE */
+*>body .portlet {
+	float: none;
+	clear: none;
+}
+.pBody {
+	padding-right: 0.8em;
+	padding-left: 0.5em;
+}
+
+/* Fix alignment */
+.documentByLine,
+.portletDetails,
+.portletMore,
+#p-personal {
+	text-align: left;
+}
+
+div div.thumbcaption {
+	text-align: right;
+}
+
+div.magnify,
+#div.townBox,
+#p-logo {
+	left: auto;
+	right: 0;
+}
+#p-personal {
+	left: auto;
+	right: 0;
+}
+
+#p-cactions {
+	left: auto;
+	right: 11.5em;
+	padding-left: 0;
+	padding-right: 1em;
+}
+#p-cactions li {
+	margin-left: 0.3em;
+	margin-right: 0;
+	float: right;
+}
+* html #p-cactions li a {
+	display: block;
+	padding-bottom: 0;
+}
+* html #p-cactions li a:hover {
+	padding-bottom: 0.2em;
+}
+/* offsets to distinguish the tab groups */
+li#ca-talk {
+	margin-right: auto;
+	margin-left: 1.6em;
+}
+li#ca-watch,li#ca-unwatch {
+	margin-right: 1.6em !important;
+}
+
+/* Fix margins for non-css2 browsers */
+/* top right bottom left */
+
+ul {
+	margin-left: 0;
+	margin-right: 1.5em;
+}
+ol {
+	margin-left: 0;
+	margin-right: 2.4em;
+}
+dd {
+	margin-left: 0;
+	margin-right: 1.6em;
+}
+#contentSub {
+	margin-right: 1em;
+	margin-left: 0;
+}
+.tocindent {
+	margin-left: 0;
+	margin-right: 2em;
+}
+div.tright, div.floatright, table.floatright {
+	clear: none;
+}
+div.tleft, div.floatleft, table.floatleft {
+	clear: left;
+}
+div.townBox {
+	margin-left: 0;
+	margin-right: 1em;
+}
+div.townBox dl dd {
+	margin-left: 0;
+	margin-right: 1.1em;
+}
+#p-personal li {
+	margin-left: 0;
+	margin-right: 1em;
+}
+
+li#ca-talk,
+li#ca-watch {
+	margin-right: auto;
+	margin-left: 1.6em;
+}
+
+#p-personal li {
+	float: left;
+}
+/* Fix link icons */
+.external {
+	padding: 0 !important;
+	background: none !important;
+}
+#footer {
+	clear: both;
+}
+* html #footer {
+	margin-left: 0;
+	margin-right: 13.6em;
+	border-left: 0;
+	border-right: 1px solid #fabd23;
+} 
+* html #column-content { 
+	float: none;
+	margin-left: 0;
+	margin-right: 0;
+}
+* html #column-content #content {
+	margin-left: 0;
+	margin-top: 3em;
+}
+* html #column-one { right: 0; }
+
+/* js pref toc */
+
+#preftoc {
+	margin-right: 1em;
+}
+
+.errorbox, .successbox, #preftoc li, .prefsection fieldset {
+	float: right;
+}
+
+.prefsection {
+	padding-right: 2em;
+}
+
+/* workaround for moz bug, displayed bullets on left side */
+
+#toc ul {
+	text-align: right;
+}
+
+#toc ul ul {
+	margin: 0 2em 0 0;
+}
+
+input#wpSave, input#wpDiff {
+	margin-right: 0;
+	margin-left: .33em;
+}
+
+#userlogin {
+	float: right;
+	margin: 0 0 1em 3em;
+}

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/user.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/user.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki-indexed.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki-indexed.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/wiki.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/myskin/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/myskin/main.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/myskin/main.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1 @@
+/* this file must be empty */

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/discussionitem_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/discussionitem_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/external.png
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/external.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/file_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/file_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/link_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/link_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/lock_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/lock_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/mail_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/mail_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css	2007-02-12 15:30:39 UTC (rev 1)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css	2007-02-12 15:31:04 UTC (rev 2)
@@ -0,0 +1,404 @@
+#toolbar {
+  display: none;
+}
+
+div.center {
+  text-align: center;
+}
+
+#contentSub {
+  padding-left: 2em;
+}
+
+a {
+  text-decoration: none;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+#column-content {
+  width: 100%;
+  float: right;
+  margin: 0 0 0.6em -12.2em;
+  padding:0;
+}
+
+#content {
+    margin: 0em 0 0 12.2em;
+    padding: 0em 1em 1.5em 1em;
+    border-left: 1px solid #959595;
+    line-height: 1.5em;
+}
+
+#column-one {
+  position: absolute;
+  top: 0px; left: 0px;
+}
+
+#footer {
+	display: none;
+}
+
+body {
+    margin: 0;
+    padding: 0;
+}
+
+#globalWrapper {
+  width: 100%;
+  height: 100%;
+  margin: 0;
+  padding: 0;
+}
+.visualClear { clear: both; }
+
+img {
+    border: none;
+}
+p {
+    margin: 0.4em 0em 0.5em 0em;
+    line-height: 1.5em;
+}
+p img { margin: 0; }
+
+h1, h2, h3, h4, h5, h6 {
+    margin: 0;
+    padding-top: 0.5em;
+    padding-bottom: 0.17em;
+}
+fieldset {
+    margin: 1em 0em 1em 0em;
+    padding: 0em 1em 1em 1em;
+}
+.usermessage {
+    background-color: #ffce7b;
+    border: 1px solid #ffa500;
+    color: Black;
+    font-weight: bold;
+    margin: 2em 0em 1em 0em;
+    padding: 0.5em 1em;
+    vertical-align: middle;
+}
+.error {
+    color: red;
+    font-size: larger;
+}
+
+table.rimage {
+    float:right;
+    position:relative;
+    margin-left:1em;
+    margin-bottom:1em;
+    text-align:center;
+}
+
+div.townBox {
+    position:relative;
+    float:right;
+    margin-left:1em;
+    padding:0.3em;
+    width: 200px;
+    overflow: hidden;
+    clear: right;
+}
+div.townBox dl {
+    padding: 0;
+    margin: 0 0 0.3em 0;
+}
+div.townBox dl dt {
+    background: none;
+    margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+    margin: 0.1em 0 0 1.1em;
+}
+.portlet {
+    border: none;
+    float: none;
+    padding: 0;
+    width: 11.8em;
+    overflow: hidden;
+}
+.portlet h4 {
+    font-weight: normal;
+    white-space: nowrap;
+}
+.portlet h5 {
+  padding: 0em 1em 0em 0.5em;
+  display: inline;
+  height: 1em;
+  font-weight: normal;
+  white-space: nowrap;
+}
+.portlet h6 {
+    padding: 0em 1em 0em 1em;
+    display: block;
+    height: 1.2em;
+    font-weight: normal;
+    white-space: nowrap;
+}
+.pBody {
+    border-collapse: collapse;
+    padding: 0 0.8em 0.3em 0.5em;
+}
+.portlet h1,
+.portlet h2,
+.portlet h3,
+.portlet h4 {
+  margin: 0;
+  padding: 0;
+  font-size: small;
+}
+
+#p-search .pBody {
+    text-align: center;
+}
+
+#searchInput {
+  width: 100%;
+  clear: both;
+  margin: 0 0 0 0;
+}
+
+input.searchButton {
+    margin-top:1px;
+    padding: 0 0.4em;
+    cursor: pointer;
+}
+
+#p-search .pBody {
+    padding: 0.5em 0.4em 0.4em 0.4em;
+}
+
+textarea {
+  width: 100%;
+}
+
+#p-personal li, #p-personal ul,
+#p-tb li, #p-tb ul,
+#p-navigation li, #p-navigation ul,
+#p-cactions li, #p-cactions ul,
+#p-newlinks li, #p-newlinks ul {
+  padding-left: 0em;
+  margin-left: 0.5em;
+}
+
+#p-cactions li, #p-cactions ul {
+  margin-left: 0.7em;
+}
+
+pre {
+  margin: 2em;
+  border: solid 1px black;
+}
+
+h1.firstHeading, h2 {
+  border-bottom: solid 1px black;
+}
+#bodyContent a[href ^="http://"],
+#bodyContent a[href ^="gopher://"] {
+    background: url("external.png") center right no-repeat;
+    padding-right: 13px;
+}
+#bodyContent a[href ^="https://"],
+.link-https {
+    background: url("lock_icon.gif") center right no-repeat;
+    padding-right: 16px;
+}
+#bodyContent a[href ^="mailto:"],
+.link-mailto {
+    background: url("mail_icon.gif") center right no-repeat;
+    padding-right: 18px;
+}
+#bodyContent a[href ^="news://"] {
+    background: url("news_icon.png") center right no-repeat;
+    padding-right: 18px;
+}
+#bodyContent a[href ^="ftp://"],
+.link-ftp {
+    background: url("file_icon.gif") center right no-repeat;
+    padding-right: 18px;
+}
+#bodyContent a[href ^="irc://"],
+.link-irc {
+    background: url("discussionitem_icon.gif")  center right no-repeat;
+    padding-right: 18px;
+}
+
+#bodyContent a.extiw,
+#bodyContent a.extiw:active {
+  color: #5E7CFF;
+  background: none;
+  padding: 0;
+}
+
+td.diff-addedline {
+    background-color: #B9FFB0;
+}
+
+td.diff-deletedline {
+    background-color: #f8ffaa;
+}
+
+span.diffchange { background-color: #FFCDF3; }
+.autocomment { color:  grey; }
+#pagehistory span.user {
+    margin-left: 1.4em;
+    margin-right: 0.4em;
+}
+#pagehistory span.minor { font-weight: bold; }
+#pagehistory li.selected {
+    background-color:#f9f9f9;
+    border:1px dashed #aaaaaa;
+}
+span.urlexpansion {
+  display: none;
+}
+
+div.tocindent {
+  margin-left: 2em;
+}
+#toc {
+  text-align: left;
+  border-top: solid 1px black;
+  border-bottom: solid 1px black;
+}
+
+div.floatright, table.floatright {
+    clear: right;
+    float: right;
+    margin: 0;
+    position: relative;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+    float: left;
+    margin: 0.3em 0.5em 0.5em 0;
+    position: relative;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+div.floatleft p { font-style: italic; }
+/* thumbnails */
+div.thumb {
+    margin-bottom: 0.5em;
+    width: auto;
+}
+div.thumb div {
+    padding: 3px !important;
+    text-align: center;
+    overflow: hidden;
+}
+
+div.thumb div div.thumbcaption {
+    border: none;
+    text-align: left;
+    line-height: 1.4;
+    padding: 0.3em 0 0.1em 0;
+}
+div.magnify {
+    float: right;
+    border: none !important;
+    background: none !important;
+}
+div.magnify a, div.magnify img {
+    display: block;
+    border: none !important;
+    background: none !important;
+}
+div.tright {
+    clear: right;
+    float: right;
+    border-width: 0.5em 0 0.8em 1.4em;
+}
+div.tleft {
+    float: left;
+    margin-right:0.5em;
+    border-width: 0.5em 1.4em 0.8em 0;
+}
+
+a.stub { color: #772233; }
+a.new,
+#p-personal a.new {
+	text-decoration: line-through;
+}
+li.new {
+	text-decoration: line-through;
+}
+p.catlinks {
+  text-align: center;
+  width: 80%;
+  margin-left: auto;
+  margin-right: auto;
+  padding: 3px;
+}
+
+#mytabs {
+  background-color: inherit;
+}
+#p-cactions {
+  background-color: inherit;
+}
+div.printfooter {
+  display: none;
+}
+
+
+#ca-addsection a:before {
+  content: "Add section";
+  font-size: 10pt;
+}
+
+#ca-addsection a {
+  font-size: 0px;
+}
+
+#n-portal,
+#n-currentevents,
+#n-help,
+#n-sitesupport {
+  display: none;
+}
+
+span.searchmatch {
+  font-weight: bold;
+}
+
+#preftoc {
+    float: left;
+    margin: 1em;
+    width: 13em;
+}
+#preftoc li {
+}
+#preftoc li.selected {
+    border: 1px dashed #aaa;
+}
+#preftoc a,
+#preftoc a:active {
+    display: block;
+}
+#prefcontrol {
+    clear: both;
+    float: left;
+    margin-top: 1em;
+}
+div.prefsectiontip {
+    font-size: 95%;
+    margin-top: 1em;
+}
+
+#mw_trackbacks {
+	border-style: groove;
+	padding: 0.2em;
+}
+
+#jump-to-nav {
+  display: none;
+}
+
+table.collapsed tr.collapsable {
+	display: none;
+}





More information about the webdesign-commitlog mailing list