Fossil

Hex Artifact Content
Login

Artifact 3165161ccf7cab7a1bf1b30af260dd7c3db6ee317005e828661825683d9bbc3f:


0000: 3c 64 69 76 20 63 6c 61 73 73 3d 22 68 65 61 64  <div class="head
0010: 65 72 22 3e 0a 20 20 3c 64 69 76 20 63 6c 61 73  er">.  <div clas
0020: 73 3d 22 6c 6f 67 6f 22 3e 0a 20 20 20 20 3c 74  s="logo">.    <t
0030: 68 31 3e 0a 20 20 20 20 23 23 0a 20 20 20 20 23  h1>.    ##.    #
0040: 23 20 4e 4f 54 45 3a 20 54 68 65 20 70 75 72 70  # NOTE: The purp
0050: 6f 73 65 20 6f 66 20 74 68 69 73 20 70 72 6f 63  ose of this proc
0060: 65 64 75 72 65 20 69 73 20 74 6f 20 74 61 6b 65  edure is to take
0070: 20 74 68 65 20 62 61 73 65 20 55 52 4c 20 6f 66   the base URL of
0080: 20 74 68 65 0a 20 20 20 20 23 23 20 20 20 20 20   the.    ##     
0090: 20 20 46 6f 73 73 69 6c 20 70 72 6f 6a 65 63 74    Fossil project
00a0: 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20   and return the 
00b0: 72 6f 6f 74 20 6f 66 20 74 68 65 20 65 6e 74 69  root of the enti
00c0: 72 65 20 77 65 62 20 73 69 74 65 20 75 73 69 6e  re web site usin
00d0: 67 0a 20 20 20 20 23 23 20 20 20 20 20 20 20 74  g.    ##       t
00e0: 68 65 20 73 61 6d 65 20 55 52 49 20 73 63 68 65  he same URI sche
00f0: 6d 65 20 61 73 20 74 68 65 20 62 61 73 65 20 55  me as the base U
0100: 52 4c 20 28 65 2e 67 2e 20 68 74 74 70 20 6f 72  RL (e.g. http or
0110: 20 68 74 74 70 73 29 2e 0a 20 20 20 20 23 23 0a   https)..    ##.
0120: 20 20 20 20 70 72 6f 63 20 67 65 74 4c 6f 67 6f      proc getLogo
0130: 55 72 6c 20 7b 20 62 61 73 65 75 72 6c 20 7d 20  Url { baseurl } 
0140: 7b 0a 20 20 20 20 20 20 73 65 74 20 69 64 78 28  {.      set idx(
0150: 66 69 72 73 74 29 20 5b 73 74 72 69 6e 67 20 66  first) [string f
0160: 69 72 73 74 20 2f 2f 20 24 62 61 73 65 75 72 6c  irst // $baseurl
0170: 5d 0a 20 20 20 20 20 20 69 66 20 7b 24 69 64 78  ].      if {$idx
0180: 28 66 69 72 73 74 29 20 21 3d 20 2d 31 7d 20 7b  (first) != -1} {
0190: 0a 20 20 20 20 20 20 20 20 23 23 0a 20 20 20 20  .        ##.    
01a0: 20 20 20 20 23 23 20 4e 4f 54 45 3a 20 53 6b 69      ## NOTE: Ski
01b0: 70 20 73 65 63 6f 6e 64 20 73 6c 61 73 68 2e 0a  p second slash..
01c0: 20 20 20 20 20 20 20 20 23 23 0a 20 20 20 20 20          ##.     
01d0: 20 20 20 73 65 74 20 69 64 78 28 66 69 72 73 74     set idx(first
01e0: 2b 31 29 20 5b 65 78 70 72 20 7b 24 69 64 78 28  +1) [expr {$idx(
01f0: 66 69 72 73 74 29 20 2b 20 32 7d 5d 0a 20 20 20  first) + 2}].   
0200: 20 20 20 20 20 23 23 0a 20 20 20 20 20 20 20 20       ##.        
0210: 23 23 20 4e 4f 54 45 3a 20 28 70 61 72 74 20 31  ## NOTE: (part 1
0220: 29 20 54 68 65 20 5b 73 74 72 69 6e 67 20 66 69  ) The [string fi
0230: 72 73 74 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 65  rst] command doe
0240: 73 20 4e 4f 54 20 61 63 74 75 61 6c 6c 79 0a 20  s NOT actually. 
0250: 20 20 20 20 20 20 20 23 23 20 20 20 20 20 20 20         ##       
0260: 73 75 70 70 6f 72 74 20 74 68 65 20 6f 70 74 69  support the opti
0270: 6f 6e 61 6c 20 73 74 61 72 74 49 6e 64 65 78 20  onal startIndex 
0280: 61 72 67 75 6d 65 6e 74 20 61 73 20 73 70 65 63  argument as spec
0290: 69 66 69 65 64 0a 20 20 20 20 20 20 20 20 23 23  ified.        ##
02a0: 20 20 20 20 20 20 20 69 6e 20 74 68 65 20 54 48         in the TH
02b0: 31 20 73 75 70 70 6f 72 74 20 6d 61 6e 75 61 6c  1 support manual
02c0: 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65 20  ; therefore, we 
02d0: 66 61 6b 65 20 69 74 20 62 79 0a 20 20 20 20 20  fake it by.     
02e0: 20 20 20 23 23 20 20 20 20 20 20 20 75 73 69 6e     ##       usin
02f0: 67 20 74 68 65 20 5b 73 74 72 69 6e 67 20 72 61  g the [string ra
0300: 6e 67 65 5d 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  nge] command and
0310: 20 74 68 65 6e 20 61 64 64 69 6e 67 20 74 68 65   then adding the
0320: 0a 20 20 20 20 20 20 20 20 23 23 20 20 20 20 20  .        ##     
0330: 20 20 6e 65 63 65 73 73 61 72 79 20 6f 66 66 73    necessary offs
0340: 65 74 20 74 6f 20 74 68 65 20 72 65 73 75 6c 74  et to the result
0350: 69 6e 67 20 69 6e 64 65 78 20 6d 61 6e 75 61 6c  ing index manual
0360: 6c 79 0a 20 20 20 20 20 20 20 20 23 23 20 20 20  ly.        ##   
0370: 20 20 20 20 28 62 65 6c 6f 77 29 2e 20 20 49 6e      (below).  In
0380: 20 54 63 6c 2c 20 77 65 20 63 6f 75 6c 64 20 75   Tcl, we could u
0390: 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  se the following
03a0: 20 69 6e 73 74 65 61 64 3a 0a 20 20 20 20 20 20   instead:.      
03b0: 20 20 23 23 0a 20 20 20 20 20 20 20 20 23 23 20    ##.        ## 
03c0: 20 20 20 20 20 20 73 65 74 20 69 64 78 28 6e 65        set idx(ne
03d0: 78 74 29 20 5b 73 74 72 69 6e 67 20 66 69 72 73  xt) [string firs
03e0: 74 20 2f 20 24 62 61 73 65 75 72 6c 20 24 69 64  t / $baseurl $id
03f0: 78 28 66 69 72 73 74 2b 31 29 5d 0a 20 20 20 20  x(first+1)].    
0400: 20 20 20 20 23 23 0a 20 20 20 20 20 20 20 20 73      ##.        s
0410: 65 74 20 69 64 78 28 6e 65 78 74 52 61 6e 67 65  et idx(nextRange
0420: 29 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20  ) [string range 
0430: 24 62 61 73 65 75 72 6c 20 24 69 64 78 28 66 69  $baseurl $idx(fi
0440: 72 73 74 2b 31 29 20 65 6e 64 5d 0a 20 20 20 20  rst+1) end].    
0450: 20 20 20 20 73 65 74 20 69 64 78 28 6e 65 78 74      set idx(next
0460: 29 20 5b 73 74 72 69 6e 67 20 66 69 72 73 74 20  ) [string first 
0470: 2f 20 24 69 64 78 28 6e 65 78 74 52 61 6e 67 65  / $idx(nextRange
0480: 29 5d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 24  )].        if {$
0490: 69 64 78 28 6e 65 78 74 29 20 21 3d 20 2d 31 7d  idx(next) != -1}
04a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 23 23 0a   {.          ##.
04b0: 20 20 20 20 20 20 20 20 20 20 23 23 20 4e 4f 54            ## NOT
04c0: 45 3a 20 28 70 61 72 74 20 32 29 20 41 64 64 20  E: (part 2) Add 
04d0: 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 6f 66  the necessary of
04e0: 66 73 65 74 20 74 6f 20 74 68 65 20 72 65 73 75  fset to the resu
04f0: 6c 74 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20  lt of.          
0500: 23 23 20 20 20 20 20 20 20 74 68 65 20 73 65 61  ##       the sea
0510: 72 63 68 20 66 6f 72 20 74 68 65 20 6e 65 78 74  rch for the next
0520: 20 73 6c 61 73 68 20 28 69 2e 65 2e 20 74 68 65   slash (i.e. the
0530: 20 6f 6e 65 20 61 66 74 65 72 0a 20 20 20 20 20   one after.     
0540: 20 20 20 20 20 23 23 20 20 20 20 20 20 20 74 68       ##       th
0550: 65 20 69 6e 69 74 69 61 6c 20 73 65 61 72 63 68  e initial search
0560: 20 66 6f 72 20 74 68 65 20 74 77 6f 20 73 6c 61   for the two sla
0570: 73 68 65 73 29 2e 0a 20 20 20 20 20 20 20 20 20  shes)..         
0580: 20 23 23 0a 20 20 20 20 20 20 20 20 20 20 73 65   ##.          se
0590: 74 20 69 64 78 28 6e 65 78 74 29 20 5b 65 78 70  t idx(next) [exp
05a0: 72 20 7b 24 69 64 78 28 6e 65 78 74 29 20 2b 20  r {$idx(next) + 
05b0: 24 69 64 78 28 66 69 72 73 74 2b 31 29 7d 5d 0a  $idx(first+1)}].
05c0: 20 20 20 20 20 20 20 20 20 20 23 23 0a 20 20 20            ##.   
05d0: 20 20 20 20 20 20 20 23 23 20 4e 4f 54 45 3a 20         ## NOTE: 
05e0: 42 61 63 6b 20 75 70 20 6f 6e 65 20 63 68 61 72  Back up one char
05f0: 61 63 74 65 72 20 66 72 6f 6d 20 74 68 65 20 6e  acter from the n
0600: 65 78 74 20 73 6c 61 73 68 2e 0a 20 20 20 20 20  ext slash..     
0610: 20 20 20 20 20 23 23 0a 20 20 20 20 20 20 20 20       ##.        
0620: 20 20 73 65 74 20 69 64 78 28 6e 65 78 74 2d 31    set idx(next-1
0630: 29 20 5b 65 78 70 72 20 7b 24 69 64 78 28 6e 65  ) [expr {$idx(ne
0640: 78 74 29 20 2d 20 31 7d 5d 0a 20 20 20 20 20 20  xt) - 1}].      
0650: 20 20 20 20 23 23 0a 20 20 20 20 20 20 20 20 20      ##.         
0660: 20 23 23 20 4e 4f 54 45 3a 20 45 78 74 72 61 63   ## NOTE: Extrac
0670: 74 20 74 68 65 20 55 52 49 20 73 63 68 65 6d 65  t the URI scheme
0680: 20 61 6e 64 20 68 6f 73 74 20 66 72 6f 6d 20 74   and host from t
0690: 68 65 20 62 61 73 65 20 55 52 4c 2e 0a 20 20 20  he base URL..   
06a0: 20 20 20 20 20 20 20 23 23 0a 20 20 20 20 20 20         ##.      
06b0: 20 20 20 20 73 65 74 20 73 63 68 65 6d 65 20 5b      set scheme [
06c0: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 62 61  string range $ba
06d0: 73 65 75 72 6c 20 30 20 24 69 64 78 28 66 69 72  seurl 0 $idx(fir
06e0: 73 74 29 5d 0a 20 20 20 20 20 20 20 20 20 20 73  st)].          s
06f0: 65 74 20 68 6f 73 74 20 5b 73 74 72 69 6e 67 20  et host [string 
0700: 72 61 6e 67 65 20 24 62 61 73 65 75 72 6c 20 24  range $baseurl $
0710: 69 64 78 28 66 69 72 73 74 2b 31 29 20 24 69 64  idx(first+1) $id
0720: 78 28 6e 65 78 74 2d 31 29 5d 0a 20 20 20 20 20  x(next-1)].     
0730: 20 20 20 20 20 23 23 0a 20 20 20 20 20 20 20 20       ##.        
0740: 20 20 23 23 20 4e 4f 54 45 3a 20 54 72 79 20 74    ## NOTE: Try t
0750: 6f 20 73 74 61 79 20 69 6e 20 53 53 4c 20 6d 6f  o stay in SSL mo
0760: 64 65 20 69 66 20 77 65 20 61 72 65 20 74 68 65  de if we are the
0770: 72 65 20 6e 6f 77 2e 0a 20 20 20 20 20 20 20 20  re now..        
0780: 20 20 23 23 0a 20 20 20 20 20 20 20 20 20 20 69    ##.          i
0790: 66 20 7b 5b 73 74 72 69 6e 67 20 63 6f 6d 70 61  f {[string compa
07a0: 72 65 20 24 73 63 68 65 6d 65 20 68 74 74 70 3a  re $scheme http:
07b0: 2f 5d 20 3d 3d 20 30 7d 20 7b 0a 20 20 20 20 20  /] == 0} {.     
07c0: 20 20 20 20 20 20 20 73 65 74 20 73 63 68 65 6d         set schem
07d0: 65 20 68 74 74 70 3a 2f 2f 0a 20 20 20 20 20 20  e http://.      
07e0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
07f0: 20 20 20 20 20 20 20 20 20 73 65 74 20 73 63 68           set sch
0800: 65 6d 65 20 68 74 74 70 73 3a 2f 2f 0a 20 20 20  eme https://.   
0810: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
0820: 20 20 20 73 65 74 20 6c 6f 67 6f 75 72 6c 20 24     set logourl $
0830: 73 63 68 65 6d 65 24 68 6f 73 74 2f 0a 20 20 20  scheme$host/.   
0840: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
0850: 20 20 20 20 20 20 20 20 73 65 74 20 6c 6f 67 6f          set logo
0860: 75 72 6c 20 24 62 61 73 65 75 72 6c 0a 20 20 20  url $baseurl.   
0870: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 20 65       }.      } e
0880: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 73 65  lse {.        se
0890: 74 20 6c 6f 67 6f 75 72 6c 20 24 62 61 73 65 75  t logourl $baseu
08a0: 72 6c 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20  rl.      }.     
08b0: 20 72 65 74 75 72 6e 20 24 6c 6f 67 6f 75 72 6c   return $logourl
08c0: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 6c  .    }.    set l
08d0: 6f 67 6f 75 72 6c 20 5b 67 65 74 4c 6f 67 6f 55  ogourl [getLogoU
08e0: 72 6c 20 24 62 61 73 65 75 72 6c 5d 0a 20 20 20  rl $baseurl].   
08f0: 20 3c 2f 74 68 31 3e 0a 20 20 20 20 3c 61 20 68   </th1>.    <a h
0900: 72 65 66 3d 22 24 6c 6f 67 6f 75 72 6c 22 3e 0a  ref="$logourl">.
0910: 20 20 20 20 20 20 3c 69 6d 67 20 73 72 63 3d 22        <img src="
0920: 24 6c 6f 67 6f 5f 69 6d 61 67 65 5f 75 72 6c 22  $logo_image_url"
0930: 20 62 6f 72 64 65 72 3d 22 30 22 20 61 6c 74 3d   border="0" alt=
0940: 22 24 70 72 6f 6a 65 63 74 5f 6e 61 6d 65 22 3e  "$project_name">
0950: 0a 20 20 20 20 3c 2f 61 3e 0a 20 20 3c 2f 64 69  .    </a>.  </di
0960: 76 3e 0a 20 20 3c 64 69 76 20 63 6c 61 73 73 3d  v>.  <div class=
0970: 22 74 69 74 6c 65 22 3e 24 3c 74 69 74 6c 65 3e  "title">$<title>
0980: 3c 2f 64 69 76 3e 0a 20 20 3c 64 69 76 20 63 6c  </div>.  <div cl
0990: 61 73 73 3d 22 73 74 61 74 75 73 22 3e 3c 6e 6f  ass="status"><no
09a0: 62 72 3e 3c 74 68 31 3e 0a 20 20 20 20 20 69 66  br><th1>.     if
09b0: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6c   {[info exists l
09c0: 6f 67 69 6e 5d 7d 20 7b 0a 20 20 20 20 20 20 20  ogin]} {.       
09d0: 70 75 74 73 20 22 4c 6f 67 67 65 64 20 69 6e 20  puts "Logged in 
09e0: 61 73 20 24 6c 6f 67 69 6e 22 0a 20 20 20 20 20  as $login".     
09f0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
0a00: 70 75 74 73 20 22 4e 6f 74 20 6c 6f 67 67 65 64  puts "Not logged
0a10: 20 69 6e 22 0a 20 20 20 20 20 7d 0a 20 20 3c 2f   in".     }.  </
0a20: 74 68 31 3e 3c 2f 6e 6f 62 72 3e 3c 73 6d 61 6c  th1></nobr><smal
0a30: 6c 3e 3c 64 69 76 20 69 64 3d 22 63 6c 6f 63 6b  l><div id="clock
0a40: 22 3e 3c 2f 64 69 76 3e 3c 2f 73 6d 61 6c 6c 3e  "></div></small>
0a50: 3c 2f 64 69 76 3e 0a 3c 2f 64 69 76 3e 0a 3c 73  </div>.</div>.<s
0a60: 63 72 69 70 74 3e 0a 66 75 6e 63 74 69 6f 6e 20  cript>.function 
0a70: 75 70 64 61 74 65 43 6c 6f 63 6b 28 29 7b 0a 20  updateClock(){. 
0a80: 20 76 61 72 20 65 20 3d 20 64 6f 63 75 6d 65 6e   var e = documen
0a90: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
0aa0: 28 22 63 6c 6f 63 6b 22 29 3b 0a 20 20 69 66 28  ("clock");.  if(
0ab0: 65 29 7b 0a 20 20 20 20 76 61 72 20 64 20 3d 20  e){.    var d = 
0ac0: 6e 65 77 20 44 61 74 65 28 29 3b 0a 20 20 20 20  new Date();.    
0ad0: 66 75 6e 63 74 69 6f 6e 20 66 28 6e 29 20 7b 0a  function f(n) {.
0ae0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 20 3c        return n <
0af0: 20 31 30 20 3f 20 27 30 27 20 2b 20 6e 20 3a 20   10 ? '0' + n : 
0b00: 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 2e 69  n;.    }.    e.i
0b10: 6e 6e 65 72 48 54 4d 4c 20 3d 20 64 2e 67 65 74  nnerHTML = d.get
0b20: 55 54 43 46 75 6c 6c 59 65 61 72 28 29 2b 20 27  UTCFullYear()+ '
0b30: 2d 27 20 2b 0a 20 20 20 20 20 20 66 28 64 2e 67  -' +.      f(d.g
0b40: 65 74 55 54 43 4d 6f 6e 74 68 28 29 20 2b 20 31  etUTCMonth() + 1
0b50: 29 20 2b 20 27 2d 27 20 2b 0a 20 20 20 20 20 20  ) + '-' +.      
0b60: 66 28 64 2e 67 65 74 55 54 43 44 61 74 65 28 29  f(d.getUTCDate()
0b70: 29 20 20 20 20 20 20 2b 20 27 20 27 20 2b 0a 20  )      + ' ' +. 
0b80: 20 20 20 20 20 66 28 64 2e 67 65 74 55 54 43 48       f(d.getUTCH
0b90: 6f 75 72 73 28 29 29 20 20 20 20 20 2b 20 27 3a  ours())     + ':
0ba0: 27 20 2b 0a 20 20 20 20 20 20 66 28 64 2e 67 65  ' +.      f(d.ge
0bb0: 74 55 54 43 4d 69 6e 75 74 65 73 28 29 29 3b 0a  tUTCMinutes());.
0bc0: 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 28 22      setTimeout("
0bd0: 75 70 64 61 74 65 43 6c 6f 63 6b 28 29 3b 22 2c  updateClock();",
0be0: 28 36 30 2d 64 2e 67 65 74 55 54 43 53 65 63 6f  (60-d.getUTCSeco
0bf0: 6e 64 73 28 29 29 2a 31 30 30 30 29 3b 0a 20 20  nds())*1000);.  
0c00: 7d 0a 7d 0a 75 70 64 61 74 65 43 6c 6f 63 6b 28  }.}.updateClock(
0c10: 29 3b 0a 3c 2f 73 63 72 69 70 74 3e 0a 3c 64 69  );.</script>.<di
0c20: 76 20 63 6c 61 73 73 3d 22 6d 61 69 6e 6d 65 6e  v class="mainmen
0c30: 75 22 3e 0a 3c 74 68 31 3e 0a 70 72 6f 63 20 6d  u">.<th1>.proc m
0c40: 65 6e 75 6c 69 6e 6b 20 7b 75 72 6c 20 6e 61 6d  enulink {url nam
0c50: 65 7d 20 7b 0a 20 20 75 70 76 61 72 20 68 6f 6d  e} {.  upvar hom
0c60: 65 20 68 6f 6d 65 0a 20 20 68 74 6d 6c 20 22 3c  e home.  html "<
0c70: 61 20 68 72 65 66 3d 27 24 68 6f 6d 65 24 75 72  a href='$home$ur
0c80: 6c 27 3e 24 6e 61 6d 65 3c 2f 61 3e 5c 6e 22 0a  l'>$name</a>\n".
0c90: 7d 0a 6d 65 6e 75 6c 69 6e 6b 20 24 69 6e 64 65  }.menulink $inde
0ca0: 78 5f 70 61 67 65 20 48 6f 6d 65 0a 6d 65 6e 75  x_page Home.menu
0cb0: 6c 69 6e 6b 20 2f 68 65 6c 70 20 48 65 6c 70 0a  link /help Help.
0cc0: 69 66 20 7b 5b 61 6e 79 63 61 70 20 6a 6f 72 5d  if {[anycap jor]
0cd0: 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69 6e 6b 20 2f  } {.  menulink /
0ce0: 74 69 6d 65 6c 69 6e 65 20 54 69 6d 65 6c 69 6e  timeline Timelin
0cf0: 65 0a 7d 0a 69 66 20 7b 5b 61 6e 6f 6e 63 61 70  e.}.if {[anoncap
0d00: 20 6f 68 5d 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69   oh]} {.  menuli
0d10: 6e 6b 20 2f 64 69 72 3f 63 69 3d 74 69 70 20 46  nk /dir?ci=tip F
0d20: 69 6c 65 73 0a 7d 0a 69 66 20 7b 5b 61 6e 6f 6e  iles.}.if {[anon
0d30: 63 61 70 20 6f 5d 7d 20 7b 0a 20 20 6d 65 6e 75  cap o]} {.  menu
0d40: 6c 69 6e 6b 20 2f 62 72 6c 69 73 74 20 42 72 61  link /brlist Bra
0d50: 6e 63 68 65 73 0a 20 20 6d 65 6e 75 6c 69 6e 6b  nches.  menulink
0d60: 20 2f 74 61 67 6c 69 73 74 20 54 61 67 73 0a 7d   /taglist Tags.}
0d70: 0a 69 66 20 7b 5b 61 6e 6f 6e 63 61 70 20 72 5d  .if {[anoncap r]
0d80: 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69 6e 6b 20 2f  } {.  menulink /
0d90: 74 69 63 6b 65 74 20 54 69 63 6b 65 74 73 0a 7d  ticket Tickets.}
0da0: 0a 69 66 20 7b 5b 61 6e 6f 6e 63 61 70 20 6a 5d  .if {[anoncap j]
0db0: 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69 6e 6b 20 2f  } {.  menulink /
0dc0: 77 69 6b 69 20 57 69 6b 69 0a 7d 0a 6d 65 6e 75  wiki Wiki.}.menu
0dd0: 6c 69 6e 6b 20 2f 73 69 74 65 6d 61 70 20 4d 6f  link /sitemap Mo
0de0: 72 65 2e 2e 2e 0a 69 66 20 7b 5b 68 61 73 63 61  re....if {[hasca
0df0: 70 20 73 5d 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69  p s]} {.  menuli
0e00: 6e 6b 20 2f 73 65 74 75 70 20 41 64 6d 69 6e 0a  nk /setup Admin.
0e10: 7d 20 65 6c 73 65 69 66 20 7b 5b 68 61 73 63 61  } elseif {[hasca
0e20: 70 20 61 5d 7d 20 7b 0a 20 20 6d 65 6e 75 6c 69  p a]} {.  menuli
0e30: 6e 6b 20 2f 73 65 74 75 70 5f 75 6c 69 73 74 20  nk /setup_ulist 
0e40: 55 73 65 72 73 0a 7d 0a 69 66 20 7b 5b 69 6e 66  Users.}.if {[inf
0e50: 6f 20 65 78 69 73 74 73 20 6c 6f 67 69 6e 5d 7d  o exists login]}
0e60: 20 7b 0a 20 20 6d 65 6e 75 6c 69 6e 6b 20 2f 6c   {.  menulink /l
0e70: 6f 67 69 6e 20 4c 6f 67 6f 75 74 0a 7d 20 65 6c  ogin Logout.} el
0e80: 73 65 20 7b 0a 20 20 6d 65 6e 75 6c 69 6e 6b 20  se {.  menulink 
0e90: 2f 6c 6f 67 69 6e 20 4c 6f 67 69 6e 0a 7d 0a 3c  /login Login.}.<
0ea0: 2f 74 68 31 3e 3c 2f 64 69 76 3e 0a              /th1></div>.