[Top Page][Discussion][Edit History][All Pages][Recent Changes][->Japanese]

WiLiKi/Hack/discussion

Category of Hack

対話ページ

MediaWikiのような対話用のリンクを生成します。 後から追加されるコメントによって元の話題が把握しづらくなることを防ぐと同時に、 意見の相違によるページの消し合いを抑止する効果もあるのではないかと思います。

(define (discussion-link page)
  (let* ((key (ref page 'key))
         (art-label (case (wiliki:lang)
                      ((jp) "[本文]")
                      (else "[Article]")))
         (disc-label (case (wiliki:lang)
                       ((jp) "[ノート]")
                       (else "[Discussion]"))))
    (and (ref (wiliki) 'editable?)
         (wiliki:persistent-page? page)
         (if (#/^Note:.*/ key)
             `(a (@ (href
                     ,(wiliki:self-url "~a"
                                       (regexp-replace #/^Note:(.*)/ key "\\1"))))
                 ,art-label)
             `(a (@ (href
                     ,(wiliki:self-url "~a"
                                       (string-append "Note:" key))))
                 ,disc-label)))))

もしWiLiKi/Blogと併用するなら、

(define (discussion-link page)
  (let* ((key (ref page 'key))
         (art-label (case (wiliki:lang)
                      ((jp) "[本文]")
                      (else "[Article]")))
         (disc-label (case (wiliki:lang)
                       ((jp) "[ノート]")
                       (else "[Discussion]"))))
    (and ;; (ref (wiliki) 'editable?)
         (wiliki:persistent-page? page)
         (if (#/\d\d\d\d\/\d\d\/\d\d\/Note:/ key)
             `(a (@ (href
                     ,(wiliki:self-url "~a"
                                       (regexp-replace #/(\d\d\d\d\/\d\d\/\d\d\/)Note:(.*)/ key "\\1\\2"))))
                 ,art-label)
             `(a (@ (href
                     ,(wiliki:self-url "~a"
                                       (regexp-replace #/(\d\d\d\d\/\d\d\/\d\d\/)(.*)/ key "\\1Note:\\2"))))
                 ,disc-label)))))

これをwiliki.cgiの適当なところに貼って、my-page-headerを

(define (my-page-header page opts)
  `((div (@ (style "font-size:80%;text-align:right"))
         ,@(cond-list
            ((wiliki:top-link page))
            ((wiliki:edit-link page))
            ((discussion-link page))
            ((wiliki:history-link page))
            ((wiliki:all-link page))
            ((wiliki:recent-link page))
            ((wiliki:language-link page))))))

のように書きかえればヘッダ部分に対話用ページへのリンクが作成されます。

HSPWiki:でも使用していますが、うまく機能しているようです。

参考