+void
+InitModule_ROOMOPS
+(void)
+{
+ RegisterPreference("roomlistview",
+ _("Room list view"),
+ PRF_STRING,
+ NULL);
+ RegisterPreference("emptyfloors", _("Show empty floors"), PRF_YESNO, NULL);
+
+ RegisterNamespace("ROOMNAME", 0, 1, tmplput_RoomName, NULL, CTX_NONE);
+
+ WebcitAddUrlHandler(HKEY("knrooms"), "", 0, knrooms, 0);
+ WebcitAddUrlHandler(HKEY("dotgoto"), "", 0, dotgoto, NEED_URL);
+ WebcitAddUrlHandler(HKEY("dotskip"), "", 0, dotskip, NEED_URL);
+ WebcitAddUrlHandler(HKEY("display_private"), "", 0, _display_private, 0);
+ WebcitAddUrlHandler(HKEY("goto_private"), "", 0, goto_private, NEED_URL);
+ WebcitAddUrlHandler(HKEY("zapped_list"), "", 0, zapped_list, 0);
+ WebcitAddUrlHandler(HKEY("display_zap"), "", 0, display_zap, 0);
+ WebcitAddUrlHandler(HKEY("zap"), "", 0, zap, 0);
+ WebcitAddUrlHandler(HKEY("display_entroom"), "", 0, display_entroom, 0);
+ WebcitAddUrlHandler(HKEY("entroom"), "", 0, entroom, 0);
+ WebcitAddUrlHandler(HKEY("display_whok"), "", 0, display_whok, 0);
+ WebcitAddUrlHandler(HKEY("do_invt_kick"), "", 0, do_invt_kick, 0);
+ WebcitAddUrlHandler(HKEY("display_editroom"), "", 0, display_editroom, 0);
+ WebcitAddUrlHandler(HKEY("netedit"), "", 0, netedit, 0);
+ WebcitAddUrlHandler(HKEY("editroom"), "", 0, editroom, 0);
+ WebcitAddUrlHandler(HKEY("delete_room"), "", 0, delete_room, 0);
+ WebcitAddUrlHandler(HKEY("set_room_policy"), "", 0, set_room_policy, 0);
+ WebcitAddUrlHandler(HKEY("changeview"), "", 0, change_view, 0);
+ WebcitAddUrlHandler(HKEY("toggle_self_service"), "", 0, toggle_self_service, 0);
+ RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, NULL, CTX_NONE);
+
+ RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PERMANENT"), 0, ConditionalRoomHas_QR_PERMANENT, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_INUSE"), 0, ConditionalRoomHas_QR_INUSE, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PRIVATE"), 0, ConditionalRoomHas_QR_PRIVATE, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PASSWORDED"), 0, ConditionalRoomHas_QR_PASSWORDED, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_GUESSNAME"), 0, ConditionalRoomHas_QR_GUESSNAME, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_DIRECTORY"), 0, ConditionalRoomHas_QR_DIRECTORY, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_UPLOAD"), 0, ConditionalRoomHas_QR_UPLOAD, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_DOWNLOAD"), 0, ConditionalRoomHas_QR_DOWNLOAD, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_VISIDIR"), 0, ConditionalRoomHas_QR_VISDIR, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_ANONONLY"), 0, ConditionalRoomHas_QR_ANONONLY, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_ANONOPT"), 0, ConditionalRoomHas_QR_ANONOPT, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_NETWORK"), 0, ConditionalRoomHas_QR_NETWORK, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PREFONLY"), 0, ConditionalRoomHas_QR_PREFONLY, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_READONLY"), 0, ConditionalRoomHas_QR_READONLY, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_MAILBOX"), 0, ConditionalRoomHas_QR_MAILBOX, CTX_NONE);
+
+ RegisterConditional(HKEY("COND:UNGOTO"), 0, ConditionalHaveUngoto, CTX_NONE);
+ RegisterConditional(HKEY("COND:ROOM:EDITACCESS"), 0, ConditionalHaveRoomeditRights, CTX_NONE);
+
+ RegisterNamespace("ROOM:UNGOTO", 0, 0, tmplput_ungoto, NULL, CTX_NONE);
+ RegisterIterator("FLOORS", 0, NULL, GetFloorListHash, NULL, NULL, CTX_FLOORS, CTX_NONE, IT_NOFLAG);