Technischer Hintergrund

Als Wiki Software wird Oddmuse verwendet.

Backup

HTML: Man klickt am Ende der Seite auf Administration und dann auf Export HTML. Das Resultat ist ein Archiv mit allen Dateien, so dass man die Seiten offline lesen kann.

Text: Man klickt am Ende der Seite auf Administration und dann auf Export Text. Das Resultat ist ein Archiv mit allen Seiteninhalten, ideal für ein Backup.

Die Archive werden jeweils gelöscht, wenn der Wartungsjob läuft.

Wiki mit Daten aus Google Docs befüllen

Das hat Alex mit Emacs und Oddmuse Curl gemacht. Das Google Document muss als “Tab Separated Values” (.tsv) abgespeichert werden.

(add-to-list 'oddmuse-wikis '("Rollenspiele" "http://www.campaignwiki.org/wiki/Rollenspiele"
                              utf-8 "frodo" "Alex"))

(defun rollenspiele-update (file)
  "Lädt die Info in FILE auf den Wiki."
  (interactive "fTAB Separated File: ")
  (with-temp-buffer
    (insert-file-contents file)
    (goto-char (point-min))
    (forward-line 1)
    (let ((headers (split-string
                    (buffer-substring
                     (point) (line-end-position))
                    "\t")))
      (while (and (forward-line 1)
                  (not (eobp)))
        (let ((cells (split-string
                       (buffer-substring
                        (point) (line-end-position))
                       "\t")))
          (save-excursion
            (when (string= "" (car cells))
              (error "No name at line %d" (line-number-at-pos)))
            (find-file (concat oddmuse-directory "/Rollenspiele/"
                               (let ((name (car cells)))
                                 (dolist (rule '((" " . "_")
                                                 ("'" . "’")
                                                 ("[!:]+" . "")))
                                   (setq name (replace-regexp-in-string
                                               (car rule) (cdr rule) name)))
                                 name)))
            (erase-buffer)
            (dotimes (i (1- (length headers)))
              (insert "|" (nth (1+ i) headers)
                      " |" (nth (1+ i) cells) " |\n"))
            (insert "\nTags: [[tag:Spiel]]\n")
            (oddmuse-post "Update aus Google Docs")
            (sit-for 2)))))))