6 * \defgroup Wiki Wiki; Functions pertaining to rooms with a wiki view
7 * \ingroup WebcitDisplayItems
17 * \brief Convert a string to something suitable as a wiki index
19 * \param s The string to be converted.
21 void str_wiki_index(char *s)
25 if (s == NULL) return;
27 /* First remove all non-alphanumeric characters */
28 for (i=0; i<strlen(s); ++i) {
30 strcpy(&s[i], &s[i+1]);
34 /* Then make everything lower case */
35 for (i=0; i<strlen(s); ++i) {
41 * \brief Display a specific page from a wiki room
43 void display_wiki_page(void)
50 safestrncpy(roomname, bstr("room"), sizeof roomname);
51 safestrncpy(pagename, bstr("page"), sizeof pagename);
52 str_wiki_index(pagename);
54 if (strlen(roomname) > 0) {
56 /* If we're not in the correct room, try going there. */
57 if (strcasecmp(roomname, WC->wc_roomname)) {
61 /* If we're still not in the correct room, it doesn't exist. */
62 if (strcasecmp(roomname, WC->wc_roomname)) {
63 snprintf(errmsg, sizeof errmsg,
64 _("There is no room called '%s'."),
66 convenience_page("FF0000", _("Error"), errmsg);
72 if (WC->wc_view != VIEW_WIKI) {
73 snprintf(errmsg, sizeof errmsg,
74 _("'%s' is not a Wiki room."),
76 convenience_page("FF0000", _("Error"), errmsg);
80 if (strlen(pagename) == 0) {
81 strcpy(pagename, "home");
84 /* Found it! Now read it. */
85 msgnum = locate_message_by_uid(pagename);
87 output_headers(1, 1, 1, 0, 0, 0);
88 read_message(msgnum, 0, "");
93 output_headers(1, 1, 1, 0, 0, 0);
94 wprintf("<br /><br />"
95 "<div align=\"center\">"
96 "<table border=\"0\" bgcolor=\"#ffffff\" cellpadding=\"10\">"
97 "<tr><td align=\"center\">"
100 wprintf(_("There is no page called '%s' here."), pagename);
101 wprintf("</b><br><br>");
102 wprintf(_("Select the 'Edit this page' link in the room banner "
103 "if you would like to create this page."));
105 wprintf("</td></tr></table></div>\n");