--- /dev/null
+# Copyright 2015 Paul Hänsch
+#
+# This file is part of Confetti.
+#
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Confetti 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti. If not, see <http://www.gnu.org/licenses/>.
+
+cat_listing(){
+ list_categories | while read cat; do
+ cat <<-END
+ <li>${cat}<button type="submit" name="remove" value="${cat}">$(l10n cat_remove)</button></li>
+ END
+ done
+}
+
+list_catsel(){
+ card="$1"
+ cats="$(get_categories $card)"
+
+ list_categories |while read cat; do
+ cat <<-END
+ <li><label><input type="checkbox" name="$card" value="$cat"
+ $(printf %s "$cats" |grep -qF "$cat" && printf %s 'checked="checked"')>${cat}</label></li>
+ END
+ done
+}
+
+display_catsel(){
+ card="$1"
+ cat <<-END
+ <li><h2>$(get_name "$card")</h2><ul>$(list_catsel "$card")</ul></li>
+ END
+}
+
+cat <<EOF
+<form class="categories" action="?action=edit_categories" method="POST">
+ <h1>$(l10n categories_label)</h1>
+ <input type="hidden" name="page" value="categories"/>
+ <ul>
+ $(cat_listing)
+ <li>
+ <input type="text" name="newcat" placeholder="$(l10n cat_newlabel)">
+ <button type="submit" name="add" value="add">$(l10n cat_add)</button>
+ </li>
+ </ul>
+</form>
+
+<form class="namelist" action="?action=update_categories" method="POST">
+ <fieldset>
+ <button type="submit" name="submit" value="submit">$(l10n cat_update)</button>
+ </fieldset>
+ <ul class="namelist">
+ $(listcards |while read card; do display_catsel "$card"; done )
+ </ul>
+ <fieldset>
+ <button type="submit" name="submit" value="submit">$(l10n cat_update)</button>
+ </fieldset>
+</form>
+
+EOF
+