16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
+
+
+
+
+
+
+
+
|
;; * Pics [pic X Y[picname.jpg]]
;; * Move twiki parsing/expanding to mattsutils as loadable module
;; Routines intended to be overridden by end users
;; (twiki:access keys wiki-name user-id)
;; search the code for "override" for more.
;; twiki css
;; =========
;; Block tag
;; ----- ---
;; twiki twiki
;; twiki body div twiki-node
;; twiki main menu twiki-main-menu
;; This is the currently supported mechanism. Postgres will be added later -mrw- 7/26/2009
;;
(define (twiki:open-db key . create-not-ok)
;; (s:log "Got to twiki:open-db with key: " key)
(let* ((create-ok (if (null? create-not-ok) #t (car create-not-ok)))
(fdat (twiki:key->fname key))
(basepath (slot-ref s:session 'twikidir))
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
|
;; (define-inline (twiki:tiddler-set-owner_id! vec val)(vector-set! vec 5 val))
;;======================================================================
;; Routines for displaying, editing, browsing etc. tiddlers
;;======================================================================
;; should change this to take a tiddler structure?
;; This is the display of a single tiddler
(define (twiki:view dat tkey wid tiddler wiki) ;; close, close others, edit, more
(let ((is-not-main (not (equal? "MainMenu" (twiki:tiddler-get-name tiddler))))
(edit-allowed (member 'w (twiki:wiki-get-perms wiki))))
(s:div 'class "node" ;; "node"
(s:div 'class "tiddler"
;; (s:hr " ")
;; (s:p 'class (if is-not-main "float-left" "float-left-menu")
;; (s:p 'class (if is-not-main "float-left" "float-right")
;; (if is-not-main
;; (s:big (s:b (twiki:tiddler-get-name tiddler)))
;; (s:small ;; (s:b "Menu")
;; (if edit-allowed
;; (list "("
;; (s:a "edit" 'href
;; (s:link-to (twiki:get-link-back-to-current)
;; 'edit_tiddler (twiki:tiddler-get-id tiddler))) ")")
;; '()))))
(s:div 'class "tiddler"
(s:div 'class "tiddler-menu"
(s:p 'class "tiddlercommands"
(if (equal? "MainMenu" (twiki:tiddler-get-name tiddler))
(if edit-allowed
(list (s:a "edit" 'href
(s:link-to (twiki:get-link-back-to-current)
'edit_tiddler (twiki:tiddler-get-id tiddler))))
'())
(if (equal? "MainMenu" (twiki:tiddler-get-name tiddler))
(if edit-allowed
(list (s:a "edit" 'href
(s:link-to (twiki:get-link-back-to-current)
'edit_tiddler (twiki:tiddler-get-id tiddler))))
'())
(list
(s:a "close" 'href (s:link-to (twiki:get-link-back-to-current) 'close_tiddler (twiki:tiddler-get-id tiddler))) "."
(s:a "close others" 'href (s:link-to (twiki:get-link-back-to-current) 'close_other_tiddlers (twiki:tiddler-get-id tiddler))) "."
(if edit-allowed
(s:a "edit" 'href (s:link-to (twiki:get-link-back-to-current) 'edit_tiddler (twiki:tiddler-get-id tiddler)))
'()))))
(s:div 'class "tiddler-menu-internal"
(s:a "close" 'href (s:link-to (twiki:get-link-back-to-current) 'close_tiddler (twiki:tiddler-get-id tiddler))) "."
(s:a "close others" 'href (s:link-to (twiki:get-link-back-to-current) 'close_other_tiddlers (twiki:tiddler-get-id tiddler))) "."
(if edit-allowed
(s:a "edit" 'href (s:link-to (twiki:get-link-back-to-current) 'edit_tiddler (twiki:tiddler-get-id tiddler)))
'()))))
;; (s:p 'class "tiddler-skip-par" "-")
;; (s:p ".")
;; (s:p (twiki:dat->html dat wiki) (s:br))))))
(s:p (twiki:dat->html dat wiki))))))
(s:p (twiki:dat->html dat wiki)))))
;; (let ((twhtml (twiki:dat->html dat wiki))) ;; let's try to force a minimum of one paragraph
;; (if (< (length twhtml) 2)
;; (s:p twhtml (s:br))
;; twhtml))))))
(define (twiki:view-tiddler db tkey wid tiddler wiki)
(let* ((dat-id (twiki:tiddler-get-dat-id tiddler))
(dat (twiki:get-dat db dat-id))
(tnum (twiki:tiddler-get-id tiddler)))
;; (s:log "twid: " dat-id " dat: " dat)
(twiki:view dat tkey wid tiddler wiki)))
|
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
|
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
|
-
+
|
(else (vector-ref res 0)))
#f)))
#f))
(define (twiki:maint_area tdb wid tkey wiki)
(let ((maint (s:get-param 'twiki_maint))
(write-perm (member 'w (twiki:wiki-get-perms wiki))))
(s:div ;; 'class "node"
(s:div 'class "twiki-menu-internal"
(if write-perm
(list (s:a "Orphans" 'href (s:link-to (twiki:get-link-back-to-current) 'twiki_maint 1))(s:br)
(s:a "Pics" 'href (s:link-to (twiki:get-link-back-to-current) 'twiki_maint 2))(s:br)
(s:a "Help" 'href (s:link-to (twiki:get-link-back-to-current) 'twiki_maint 4))(s:br))
'())
(s:a "Search" 'href (s:link-to (twiki:get-link-back-to-current) 'twiki_maint 3))(s:br)
(case maint
|
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
|
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
|
-
+
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
|
(if (null? lmenu)
(begin
(twiki:save-tiddler tdb "MainMenu" "" "" wid (twiki:get-id))
(set! lmenu (twiki:get-tiddlers tdb wid (list "MainMenu")))))
;; get the tiddlers from the db now
(set! result
(s:table
(s:div 'class "twiki"
;; ;; A header row MainMenu WikiName Other
;; (s:tr
;; float to the right the control menu
;; (s:td
;; (let ((main-menu-tnum (twiki:tiddler-name->id tdb "MainMenu")))
(s:div 'class "twiki-main-menu" (twiki:maint_area tdb wid tkey wikidat))
;; (if edit-tmenu-id
;; "MainMenu"
;; (s:a "MainMenu" 'href (s:link-to (twiki:get-link-back-to-current) 'edit_tmenu main-menu-tnum)))))
;; (s:td (twiki:key->fname tkey))
;; (s:td ""))
(s:tr
;; The menu column (must do all this with css some time)
;; July 5, 2010, attempting to switch to a top menu
;; (s:td 'class "col1-tiddler" (twiki:view-tiddler tdb tkey wid (car lmenu) wikidat))
(twiki:view-tiddler tdb tkey wid (car lmenu) wikidat)
(s:td 'class "col2-tiddler" (twiki:view-tiddler tdb tkey wid (car lmenu) wikidat) 'colspan "2"))
(s:tr
(s:td 'class "col2-tiddler"
;; this is probably not needed as there is no reason to create tiddlers this way
;; (if (eq? tnumedit -1)(twiki:edit-tiddler tdb tkey wid tnumedit) '())
;; insert the picture editor window if enabled
(if (equal? (s:get-param "twiki_maint") "2")(twiki:pic_mgmt tdb wid tkey) '())
(if (equal? (s:get-param "twiki_maint") "4")(twiki:help 1) '())
(if (not (null? tdlrs))
(map (lambda (tdlr)
(let ((tnum (twiki:tiddler-get-id tdlr)))
(s:log "tnum: " tnum " tnumedit: " tnumedit)
(if (and tnumedit (not tedited) (equal? tnumedit tnum))
(begin
(set! tedited #t) ;; only allow editing one tiddler at a time
(twiki:edit-tiddler tdb tkey wid tnum))
(twiki:view-tiddler tdb tkey wid tdlr wikidat))))
tdlrs)
'()))
;; this is probably not needed as there is no reason to create tiddlers this way
;; (if (eq? tnumedit -1)(twiki:edit-tiddler tdb tkey wid tnumedit) '())
;; insert the picture editor window if enabled
(if (equal? (s:get-param "twiki_maint") "2")(twiki:pic_mgmt tdb wid tkey) '())
(if (equal? (s:get-param "twiki_maint") "4")(twiki:help 1) '())
(if (not (null? tdlrs))
(map (lambda (tdlr)
(let ((tnum (twiki:tiddler-get-id tdlr)))
(s:log "tnum: " tnum " tnumedit: " tnumedit)
(if (and tnumedit (not tedited) (equal? tnumedit tnum))
(begin
(set! tedited #t) ;; only allow editing one tiddler at a time
(twiki:edit-tiddler tdb tkey wid tnum))
(twiki:view-tiddler tdb tkey wid tdlr wikidat))))
tdlrs)
'())))
(s:td 'valign "top" 'class "tiddler-top" (twiki:maint_area tdb wid tkey wikidat)))))
(dbi:close tdb)
result))
;; should do a single more efficient query but this is good enough
(define (twiki:get-tiddlers db wid tnames)
(apply twiki:get-tiddlers-by-name db wid tnames))
;; (let* ((tdlrs '())
|