対話ページ
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:でも使用していますが、うまく機能しているようです。
参考