Collection of themes/skins for the Fossil SCM

⌈⌋ ⎇ branch:  Fossil Skins Extra


Hex Artifact Content

Artifact e2914854f4ab538cb8a46b07017e8dbe21a39c2a:

  • File features/file_link.th1 — part of check-in [0499e95f66] at 2021-10-14 11:14:32 on branch trunk — Generate link meta for file pages (complements fx_meta), could still be shortened; maybe should include info/CHKIN pages too (user: mario size: 1721)

0000: 23 20 6f 75 74 70 75 74 20 3c 6c 69 6e 6b 3e 20  # output <link> 
0010: 66 6f 72 20 22 66 69 6c 65 22 20 70 61 67 65 73  for "file" pages
0020: 0a 70 72 6f 63 20 66 69 6c 65 5f 6c 69 6e 6b 20  .proc file_link 
0030: 7b 7d 20 7b 0a 20 20 20 20 75 70 76 61 72 20 31  {} {.    upvar 1
0040: 20 63 75 72 72 65 6e 74 5f 70 61 67 65 20 63 75   current_page cu
0050: 72 72 65 6e 74 5f 70 61 67 65 0a 20 20 20 20 73  rrent_page.    s
0060: 65 74 20 6e 61 6d 65 20 5b 67 65 74 50 61 72 61  et name [getPara
0070: 6d 65 74 65 72 20 6e 61 6d 65 5d 0a 20 20 20 20  meter name].    
0080: 73 65 74 20 63 69 20 5b 67 65 74 50 61 72 61 6d  set ci [getParam
0090: 65 74 65 72 20 63 69 5d 25 0a 20 20 20 20 73 65  eter ci]%.    se
00a0: 74 20 74 6f 70 20 5b 67 6c 6f 62 61 6c 53 74 61  t top [globalSta
00b0: 74 65 20 74 6f 70 5d 0a 20 20 20 20 73 65 74 20  te top].    set 
00c0: 73 71 6c 5f 62 79 6e 61 6d 65 20 20 7b 0a 20 20  sql_byname  {.  
00d0: 20 20 20 20 20 53 45 4c 45 43 54 20 75 75 69 64       SELECT uuid
00e0: 20 20 20 20 20 20 20 20 20 46 52 4f 4d 20 62 6c           FROM bl
00f0: 6f 62 20 4c 45 46 54 20 4a 4f 49 4e 20 6d 6c 69  ob LEFT JOIN mli
0100: 6e 6b 20 4f 4e 20 62 6c 6f 62 2e 72 69 64 3d 6d  nk ON blob.rid=m
0110: 6c 69 6e 6b 2e 66 69 64 20 20 20 20 20 20 20 20  link.fid        
0120: 20 4c 45 46 54 20 4a 4f 49 4e 20 66 69 6c 65 6e   LEFT JOIN filen
0130: 61 6d 65 20 4f 4e 20 6d 6c 69 6e 6b 2e 66 6e 69  ame ON mlink.fni
0140: 64 3d 66 69 6c 65 6e 61 6d 65 2e 66 6e 69 64 0a  d=filename.fnid.
0150: 20 20 20 20 20 20 20 20 57 48 45 52 45 20 6e 61          WHERE na
0160: 6d 65 20 3d 20 24 6e 61 6d 65 20 20 20 20 20 20  me = $name      
0170: 20 20 4f 52 44 45 52 20 42 59 20 72 69 64 20 44    ORDER BY rid D
0180: 45 53 43 20 4c 49 4d 49 54 20 31 0a 20 20 20 20  ESC LIMIT 1.    
0190: 7d 0a 20 20 20 20 73 65 74 20 73 71 6c 5f 62 79  }.    set sql_by
01a0: 6e 61 6d 65 63 69 20 7b 0a 20 20 20 20 20 20 20  nameci {.       
01b0: 53 45 4c 45 43 54 20 75 75 69 64 20 46 52 4f 4d  SELECT uuid FROM
01c0: 20 62 6c 6f 62 0a 20 20 20 20 20 20 20 20 57 48   blob.        WH
01d0: 45 52 45 20 72 69 64 20 49 4e 20 28 0a 20 20 20  ERE rid IN (.   
01e0: 20 20 20 20 20 20 20 20 20 20 20 53 45 4c 45 43             SELEC
01f0: 54 20 66 69 64 0a 20 20 20 20 20 20 20 20 20 20  T fid.          
0200: 20 20 20 20 20 20 46 52 4f 4d 20 62 6c 6f 62 20        FROM blob 
0210: 4c 45 46 54 20 4a 4f 49 4e 20 6d 6c 69 6e 6b 20  LEFT JOIN mlink 
0220: 4f 4e 20 6d 69 64 3d 62 6c 6f 62 2e 72 69 64 0a  ON mid=blob.rid.
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 4c 45 46 54 20 4a 4f 49 4e 20 66 69 6c 65 6e 61  LEFT JOIN filena
0250: 6d 65 20 6f 6e 20 6d 6c 69 6e 6b 2e 66 6e 69 64  me on mlink.fnid
0260: 3d 66 69 6c 65 6e 61 6d 65 2e 66 6e 69 64 0a 20  =filename.fnid. 
0270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 48                WH
0280: 45 52 45 20 75 75 69 64 20 4c 49 4b 45 20 24 63  ERE uuid LIKE $c
0290: 69 20 41 4e 44 20 6e 61 6d 65 20 3d 20 24 6e 61  i AND name = $na
02a0: 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  me.             
02b0: 20 20 4f 52 44 45 52 20 42 59 20 72 69 64 20 44    ORDER BY rid D
02c0: 45 53 43 0a 20 20 20 20 20 20 20 20 29 0a 20 20  ESC.        ).  
02d0: 20 20 7d 0a 20 20 20 20 68 74 6d 6c 20 22 3c 21    }.    html "<!
02e0: 2d 2d 20 46 4c 28 24 63 75 72 72 65 6e 74 5f 70  -- FL($current_p
02f0: 61 67 65 2c 6e 61 6d 65 3d 24 6e 61 6d 65 2c 63  age,name=$name,c
0300: 69 3d 24 63 69 29 20 2d 2d 3e 5c 6e 22 0a 20 20  i=$ci) -->\n".  
0310: 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 20 22    if {[regexp  "
0320: 5e 64 6f 63 2f 28 74 69 70 7c 74 72 75 6e 6b 29  ^doc/(tip|trunk)
0330: 2f 2e 2b 22 20 24 63 75 72 72 65 6e 74 5f 70 61  /.+" $current_pa
0340: 67 65 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 23  ge]} {.        #
0350: 20 64 6f 63 2f 74 69 70 2f 66 69 6c 65 2e 74 78   doc/tip/file.tx
0360: 74 0a 20 20 20 20 20 20 20 20 73 65 74 20 73 71  t.        set sq
0370: 6c 20 24 73 71 6c 5f 62 79 6e 61 6d 65 0a 20 20  l $sql_byname.  
0380: 20 20 7d 20 65 6c 73 65 69 66 20 7b 22 24 63 75    } elseif {"$cu
0390: 72 72 65 6e 74 5f 70 61 67 65 22 20 65 71 20 22  rrent_page" eq "
03a0: 66 69 6e 66 6f 22 7d 20 7b 0a 20 20 20 20 20 20  finfo"} {.      
03b0: 20 20 69 66 20 7b 22 24 63 69 22 20 6e 65 20 22    if {"$ci" ne "
03c0: 25 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20  %"} {.          
03d0: 20 20 23 20 66 69 6e 66 6f 3f 6e 61 6d 65 3d 66    # finfo?name=f
03e0: 69 6c 65 2e 74 78 74 26 63 69 3d 31 32 33 34 66  ile.txt&ci=1234f
03f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
0400: 20 73 71 6c 20 24 73 71 6c 5f 62 79 6e 61 6d 65   sql $sql_byname
0410: 63 69 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73  ci.        } els
0420: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
0430: 23 20 66 69 6e 66 6f 3f 6e 61 6d 65 3d 66 69 6c  # finfo?name=fil
0440: 65 2e 74 78 74 0a 20 20 20 20 20 20 20 20 20 20  e.txt.          
0450: 20 20 73 65 74 20 73 71 6c 20 22 24 73 71 6c 5f    set sql "$sql_
0460: 62 79 6e 61 6d 65 22 0a 20 20 20 20 20 20 20 20  byname".        
0470: 20 20 20 20 23 63 69 20 4c 49 4d 49 54 20 31 22      #ci LIMIT 1"
0480: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d  .        }.    }
0490: 20 65 6c 73 65 69 66 20 7b 5b 72 65 67 65 78 70   elseif {[regexp
04a0: 20 20 22 5e 64 6f 63 2f 5c 5c 77 2b 2f 2e 2b 22    "^doc/\\w+/.+"
04b0: 20 24 63 75 72 72 65 6e 74 5f 70 61 67 65 5d 7d   $current_page]}
04c0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 7b 22   {.        if {"
04d0: 24 63 69 22 20 6e 65 20 22 25 22 7d 20 7b 0a 20  $ci" ne "%"} {. 
04e0: 20 20 20 20 20 20 20 20 20 20 20 23 20 64 6f 63             # doc
04f0: 2f 31 32 33 34 66 2f 66 69 6c 65 2e 74 78 74 0a  /1234f/file.txt.
0500: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
0510: 73 71 6c 20 24 73 71 6c 5f 62 79 6e 61 6d 65 63  sql $sql_bynamec
0520: 69 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65  i.        } else
0530: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 23   {.            #
0540: 20 2f 69 6e 66 6f 2f 31 32 33 34 66 20 20 23 20   /info/1234f  # 
0550: 73 68 6f 75 6c 64 20 61 73 73 65 72 74 20 74 68  should assert th
0560: 61 74 20 69 74 20 72 65 66 65 72 73 20 74 6f 20  at it refers to 
0570: 61 20 66 69 6c 65 20 62 6c 6f 62 3f 0a 20 20 20  a file blob?.   
0580: 20 20 20 20 20 20 20 20 20 73 65 74 20 6e 61 6d           set nam
0590: 65 20 22 24 6e 61 6d 65 25 22 0a 20 20 20 20 20  e "$name%".     
05a0: 20 20 20 20 20 20 20 73 65 74 20 73 71 6c 20 7b         set sql {
05b0: 53 45 4c 45 43 54 20 75 75 69 64 20 46 52 4f 4d  SELECT uuid FROM
05c0: 20 62 6c 6f 62 20 77 68 65 72 65 20 75 75 69 64   blob where uuid
05d0: 20 4c 49 4b 45 20 24 6e 61 6d 65 7d 0a 20 20 20   LIKE $name}.   
05e0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73       }.    } els
05f0: 65 20 7b 20 68 74 6d 6c 20 22 3c 21 2d 2d 6e 6f  e { html "<!--no
0600: 6d 61 74 63 68 2d 2d 3e 22 20 7d 0a 20 20 20 20  match-->" }.    
0610: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
0620: 20 73 71 6c 5d 7d 20 7b 0a 20 20 20 20 20 20 20   sql]} {.       
0630: 20 68 74 6d 6c 20 22 3c 21 2d 2d 20 3d 20 24 73   html "<!-- = $s
0640: 71 6c 20 2d 2d 3e 22 0a 20 20 20 20 20 20 20 20  ql -->".        
0650: 71 75 65 72 79 20 24 73 71 6c 20 7b 0a 20 20 20  query $sql {.   
0660: 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 22 3c           html "<
0670: 6c 69 6e 6b 20 72 65 6c 3d 27 61 6c 74 65 72 6e  link rel='altern
0680: 61 74 69 76 65 20 76 63 73 20 72 61 77 27 20 68  ative vcs raw' h
0690: 72 65 66 3d 27 24 74 6f 70 2f 72 61 77 2f 24 75  ref='$top/raw/$u
06a0: 75 69 64 27 3e 22 0a 20 20 20 20 20 20 20 20 7d  uid'>".        }
06b0: 0a 20 20 20 20 7d 0a 7d 0a                       .    }.}.