clwiki 3.1.2 → 3.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/cl_wiki/shortcuts.js +20 -7
  3. data/app/assets/stylesheets/cl_wiki/application.css +9 -1
  4. data/app/views/cl_wiki/page/edit.html.erb +2 -0
  5. data/app/views/cl_wiki/page/find.html.erb +2 -0
  6. data/app/views/cl_wiki/page/recent.html.erb +3 -1
  7. data/app/views/cl_wiki/page/show.html.erb +3 -1
  8. data/app/views/layouts/cl_wiki/application.html.erb +2 -1
  9. data/lib/cl_wiki/page.rb +15 -10
  10. data/lib/cl_wiki/version.rb +1 -1
  11. data/test/dummy/log/development.log +985 -0
  12. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-Q/-QrlvZDPx0kTJ7iBiefCyHzm9hc2A40POD20lYm_Y3Q.cache +0 -0
  13. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-U/-UIUaQcw8ruh3n1TyhuYf3EQxUawno5uPVozFubmVjo.cache +1 -0
  14. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-h/-hCQn6WxeYww0dx4OiACt0n2reI3JHoDAK2Lundgq-4.cache +2 -0
  15. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/01/01i9An-LWB1vGu-rbv-Tka1bXELfHDl1qcEg-XQYUk4.cache +0 -0
  16. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/05/05U3nfNxrXRsqvbY0FPdE4JJ34O04u3OYRMiNSsSd2U.cache +1 -0
  17. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/09/09RB5CdPnRT7YC7_DG_XoRaLSpiJ0GlOH6knOkQkUo4.cache +1 -0
  18. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1n/1nPT8txF9k-opf1dt28LkyoNOAlggHQesiYDvlCEVmQ.cache +2 -0
  19. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2A/2AzOvZfD_jYRqSBY29p-2cORsUcKmOfaq_38rWRfEjE.cache +3 -0
  20. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2U/2U_6bLA7ljBIutiP5PVOsdKS1OfQDEPB6mHbgLi5SpM.cache +0 -0
  21. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4-/4-BfRACTK6aXqpi830uiN-QNvgPwbixbE9nXM05TxUk.cache +1 -0
  22. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4_/4_wkhRjt0QVRoLVmsXNi4IEUeDiH08UX7efec-F4fYw.cache +2 -0
  23. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6B/6BvKDKEIrocAfhwJU6z7mndgYE2E7Dpp6E5gaR0yYvk.cache +0 -0
  24. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7K/7K5ejOFl-4MBCbt_JXZJAbh39RzZPUUdf-NSqsmv7e8.cache +1 -0
  25. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7a/7a_VMKQuKo9q_d3UHXIPSCB7dMre79Z8YkU11YklKoY.cache +1 -0
  26. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8Q/8Q0QXegrzL0PoQKNEhDkYXKTO3akpZ7IYus-uS_wOaM.cache +0 -0
  27. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9J/9jAisp-FSNQBcXXrK8yEGiAJ_oFL50rTnxwfZzelUAE.cache +2 -0
  28. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/A9/A9QuECTOD8njTuzaYdgWqbYgTyKfjlgSqzCliAvHu5A.cache +2 -0
  29. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AH/AHLFtMsaZIwQ9D7HfZOQ_wPQN6hBufktyQvGW9TKGgk.cache +0 -0
  30. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ab/AbbE15U_tHRAeTIQFtGwjPfgAFNpIqa3ryKY6BIrmX0.cache +3 -0
  31. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BQ/bqKSqZNgRPYNmUhKLdqlMv-3ohwmHwlv1TtmR_zSfL0.cache +0 -0
  32. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CY/CYd_T0Mvsv0u_iIAhbkRe7Wi2P5GKYoZ6AoMPeK5Z5c.cache +0 -0
  33. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CY/CYvhT4BEOao6J9kCEPL_WeozFKmgkLv2X1g6Udj8XHc.cache +1 -0
  34. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0GDwU5cvMJG1tuoNF3MGq-gJdkmxp3PTbDQNYvjSzU.cache +0 -0
  35. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/FM/FMcfInXyKmR8QAsJzeE6sdWEDsljKC8TRClGNolz2XQ.cache +1 -0
  36. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fo/Fo--qUNG1V_CyADMhU5vH86pJnx1m2d-k2qaPAjXBIQ.cache +1 -0
  37. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Gr/gROHyyXEc3EKOwe5kyTirwO1YCKz5Z4BLhTBgVL-jUs.cache +0 -0
  38. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Gw/GWwA-JgBnAGHqassR-NZ_iatnnmcVDaBtfI9uAW12CI.cache +1 -0
  39. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HT/HT1X1Z5HXatJ54RNBEDc__MlRQ79yRN5aI5-ilXyW14.cache +0 -0
  40. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Hl/HLO6rWqb_p-4NcepBAe1BlRRS_hkR-9AIn21Nw2AqNw.cache +0 -0
  41. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/I7/I7KyprvSwemyBLH7tmm82My-j0czehx3QD84naPwErU.cache +0 -0
  42. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ix/IXidDpGu_Xcz4nrNSwUyy0LBDLKaPaFFRALPqytCCB4.cache +3 -0
  43. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/LT/LTH3NeNw8IFVbydk839Ob0XiwEQZtIyixMltWtIzg5o.cache +0 -0
  44. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/O4/o4XO8Qo3fNsMwcTk5-pEF4_buoB_KtsqHF1HzpJrvHY.cache +1 -0
  45. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/OV/ovgywySuV5Tfoz9t5e75MyUdHMAH8-tCpbiERJpI17I.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tq/TqGmJcFnTC2OBFRpbbitnuMVy5MaYfbbTFPzSD9UZVQ.cache +0 -0
  47. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/W-/W-c1zXG8NVoBep4tU5rSNtJ6sdS2hecGiWvqmwTmUFo.cache +1 -0
  48. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WB/WBhsfU7i0q82Za9XoUsXItOZvN3f2SfL-A4ZKQc3ZiY.cache +2 -0
  49. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WH/WHjGFRPXuo5lOzRP-4ecNErP9JyVXBqeTUqheALqmFE.cache +0 -0
  50. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WI/WIYTnjcHGdTAekEFTac3gY30yw_cQZamsv5pGOzyLRk.cache +0 -0
  51. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WZ/WZBILEsCv3gfXqzu7AlVz6-c0WlVID5rmTWc2mkwef8.cache +0 -0
  52. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XJ/XJW03g9Y7klNG_PgtprTmtZO6tUUiZ2BJDRYZEhGjeg.cache +0 -0
  53. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YB/ybfb2NUYWF4r8SWqemYRZCheTxFxljytKX_ZzDG9Cao.cache +1 -0
  54. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yk/YkKs4x9pJIGW0sqbyPkliIdVcN6uKL62XPrUFg8jL4I.cache +0 -0
  55. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Z7/Z7YZsX5vjifzHOnn5rVrF6QxTbC1_WS1NgONXCo2Zkg.cache +1 -0
  56. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_B/_BurnlQSvcVTJoLvsN6ZLkmAWZWpfICRBwpUq79cs8E.cache +1 -0
  57. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_F/_f5XKF_5JYLUPPJJLJ1l5UbghZsyKIZ4Pro7Tlh1bKw.cache +0 -0
  58. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_n/_nA5OJaRRtUVV371yIgohHgOLJAipwwlurV3Vp1-fWA.cache +3 -0
  59. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/d9/d9n-22PYG-8MqJicPbbJ2r3ip0cFQeugk5HtU-5ueZ4.cache +1 -0
  60. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/db/dBIMLCZq8Y4TneD8CzU_5XvyC361SZGR0gNEvsUFvTc.cache +1 -0
  61. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/do/doeYUKrK0jpgmu8QFGRN5oaanpBO1bfAMfZoUu9fzkA.cache +1 -0
  62. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/f2/f2U7Jaa67dTPefREUU-gUKLmCAmL8K3g-quaZL2hlMU.cache +1 -0
  63. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fT/fTdm-tLa9Pyc2nqUTmLUDEm0giso93iPqf77_qZ3FaI.cache +2 -0
  64. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fY/fY6sHkmHXWdqeiMd49J3tbVJS2lzGwr0vMm-WwXwGG8.cache +1 -0
  65. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hv/HvGUR1YSVraG2rlOgzyLGRjtcjsvT_nPwL9bu1MDT2s.cache +0 -0
  66. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hv/hv587XCGGz_OGkqGHUtYLcKChMAAwMTHoFbUn7i8dnA.cache +2 -0
  67. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iA/iAciOlZzHgnrRy0J1K2G-CiSY2yARH3zLW9s1JbbvbY.cache +1 -0
  68. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iY/iY3diBg4uMfN1L4VJb6CGm5CV6cdZBpXxaFkR3zrGnQ.cache +1 -0
  69. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ih/ihSlxRh2LCTS9Wt0-Z_qZPgczK5zpo9R5oeO3NzzvP0.cache +0 -0
  70. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jM/jMuaKlFw9chBDcGV_09Gq063OSWFfvF8nyJPFvB7cCc.cache +1 -0
  71. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jR/jRCq7tZxhTNC3tjAsGBnonoPbhxrVFB-TKVlsrdyIwY.cache +1 -0
  72. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jj/JJ40HreVDhPHlRcNCwcPr3wqNy8tZJrOkCN_SkWVSA0.cache +0 -0
  73. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/mn/mn9OLBkSayoOkY18BStpHNkHAETou2ibayF6qRw4a3c.cache +1 -0
  74. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/of/ofTR3ryaY_aFwPv-0Ttg7rd1myQRCO4-nTdEyGkLp4k.cache +2 -0
  75. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pA/PaWZ-fSLvbCy3iBNmjPOgLSdaF6Yzpf5UH8C_NNywsE.cache +1 -0
  76. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pA/PaliGYbeZm3-9CI7VfvlDqVisjaoxTAMvPr3j-PMWak.cache +1 -0
  77. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rD/rDXlwIJ2QsZfT3ZaxA1c3KzxowRPN1AXbkycmPBzTKs.cache +3 -0
  78. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rR/RrHv3qPf8P-3PtaBeBKmyzXqOG9sDqzY61RZF4i7rlg.cache +2 -0
  79. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ro/roxzrp3PgxlSNJfroZsddAPRC5zG86rEnOjHjt5DjRw.cache +0 -0
  80. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rq/rq3ETES_VvoE6s8GESZ4C6oXle-RCD3jOo6APXYob5k.cache +0 -0
  81. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/s-/s-0rt_PpC5XEdujc00gxhq1YUOOObFFa3zdTBCszAdc.cache +2 -0
  82. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sC/sChvf7VT4EpYuf_hpbPTF5QD3mfP_cKg8CpEX8CrNeI.cache +1 -0
  83. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sS/sSDPbGK3qCRs-iiWuTb8fnPIYC3TgoyZdkR6gbOFoqE.cache +1 -0
  84. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sh/SHzYooqr9p4JBI5xqicitaryaroAdKmATarDQRLxmTA.cache +0 -0
  85. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sv/SvcBJc32bzU_2iyjQHmHgS9hZdccRl0jYEmkUnAxgGY.cache +1 -0
  86. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tC/tCmWoTEfDF5a-KtGD6pdWUz0Pdktg4ffD2KQ5kkEq0o.cache +1 -0
  87. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tN/TnD5E-mUkyMg_VMVJmtgN6e6HpVq8esdQitMD7mOKCU.cache +1 -0
  88. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tX/TxrxP9lIdrKMdXQPfXBM7BUSDlENag_NhpecG225YZI.cache +1 -0
  89. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tX/tXXG79Waa89ejxAWj_XiXdX2acBibYEV-HeZYmQjpS8.cache +0 -0
  90. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/uy/uy18jVI8AK9AdRNN8F7YN2T37SpELKdH1_sZoD7sQvs.cache +1 -0
  91. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vh/vhQ4BTVt1aVRwAo6Vmm18VR5ag7FJSKAdA6_ON-BzN0.cache +0 -0
  92. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wC/WcTw1nv0vnpYnoFQSTrf-JRWyAcNSAEkoikgWpPfg08.cache +1 -0
  93. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x-/x-VsE08a7JWeIBppfMr0Q9llND6WFLINVeFOr7K1SG4.cache +1 -0
  94. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xU/XUyD48xmo9zdYW7O_nT38UuXmUFHoPntgxs00vNjpC4.cache +0 -0
  95. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xt/xTF89fxfBL2O3D3oJAG-Umx68WUgcpCHVnk6P3tMagE.cache +3 -0
  96. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yo/YOyzkwU8mqw0mRoVXcOxjx6Zap67RYNBzJYfM2WUUDk.cache +1 -0
  97. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/z4/z4nGWAyv5nfOdl3HYCnII81-DMIu5-3pClB-iDVnDgE.cache +0 -0
  98. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zM/ZM2Wg9t0wlPVFkCT0K9VlVPTITkoK9d3EaGJ3bJqRr0.cache +0 -0
  99. metadata +176 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df273686960aca123965a8df7958ef2bd854c74f5a7170e7402342afe9b89e2f
4
- data.tar.gz: 6f1afd2d68f930f6e8a0dd76c4d5e3703d27f0dc417ad3e8c5823404296a30c4
3
+ metadata.gz: f1975a9e3a84db8cc346f59c0a7aaf4f939c5c1258daa412b334ff141de7064d
4
+ data.tar.gz: dc58f70d9676c805b0b8a102be3566c01e27d56c25d4d75a087c0ade31ab4ed6
5
5
  SHA512:
6
- metadata.gz: 40782fd3ab86140a6f4a59ef36270de05a9699ba30c224e6e39be3d986ab8ce53f271904879b7be00e14186e2c0782933efe274fc06fc0545fd3f8b6c2319705
7
- data.tar.gz: 92db3ec80e448c3cefa6f5562a150ec467c5f23675d3d89f60a855bbabc2d2d1d73c0efe2ae8c53bb368b91484cb43c92130b5d37dab2de84c0723dd18a9728f
6
+ metadata.gz: a367e719902afa6212605f5b7096f4a6f18328a3a4a12b0de0d023d081d5ece9dcfa721ef9eabe7e464e63e71dfac4bbc3340fd5ea8fce059e9285eec47b18d0
7
+ data.tar.gz: 6a6047ee69812183548c3480fc436b0642714aa88112bc9187853d3d15d0fe7b953d90eb89d4bcdebfc14d64a19622b81383dc2a86ed616ae977d94a1a7ea987
@@ -1,23 +1,36 @@
1
- function navigateToFind() {
1
+ function navigateToPage(page) {
2
2
  let url = new URL(window.location.href).href;
3
- window.location.href = url.substring(0, url.lastIndexOf('/')) + '/find';
3
+ window.location.href = url.substring(0, url.lastIndexOf('/')) + '/' + page;
4
+ }
5
+
6
+ function commonShortcuts(e) {
7
+ if (e.key === "f") {
8
+ navigateToPage('find');
9
+ } else if (e.key === "h") {
10
+ navigateToPage('FrontPage');
11
+ } else if (e.key === "r") {
12
+ navigateToPage('recent');
13
+ }
4
14
  }
5
15
 
6
16
  $(document).keydown(function (e) {
17
+ const anyModifiers = (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey);
18
+ if (anyModifiers) {
19
+ return;
20
+ }
21
+
7
22
  if (window.location.href.endsWith("/edit")) {
8
23
  } else if (window.location.href.endsWith("/find")) {
9
24
  } else if (window.location.href.endsWith("/login")) {
10
25
  // this is important otherwise typing `e` while logging in refreshes the
11
26
  // page - doh!
12
27
  } else if (window.location.href.endsWith("/recent")) {
13
- if (e.key === "f") {
14
- navigateToFind();
15
- }
28
+ commonShortcuts(e);
16
29
  } else {
17
30
  if (e.key === "e") {
18
31
  window.location.href = window.location.href + "/edit";
19
- } else if (e.key === "f") {
20
- navigateToFind();
32
+ } else {
33
+ commonShortcuts(e);
21
34
  }
22
35
  }
23
36
  });
@@ -68,10 +68,18 @@ a:active {
68
68
 
69
69
  .wikiFooter li {
70
70
  display: inline;
71
- /*font-size: 90%;*/
71
+ font-size: 90%;
72
72
  padding-right: 10px;
73
73
  }
74
74
 
75
+ .wikiFooterFloat {
76
+ float: right;
77
+ }
78
+
79
+ .wikiFooterFloat ul {
80
+ margin-top: 0px;
81
+ }
82
+
75
83
  .findInput {
76
84
  width: 40%;
77
85
  margin: 0 auto;
@@ -1,3 +1,5 @@
1
+ <% content_for :title, "ClWiki: #{@page.name} (edit)" %>
2
+
1
3
  <%= form_tag(page_show_path(:page_name => @page.page_name)) do %>
2
4
  <%= hidden_field_tag 'client_mod_time', @page.mtime.to_i.to_s %>
3
5
 
@@ -1,3 +1,5 @@
1
+ <% content_for :title, "ClWiki: Find" %>
2
+
1
3
  <%= @formatter.header("Find").html_safe %>
2
4
 
3
5
  <div class='findInput'>
@@ -1,6 +1,8 @@
1
+ <% content_for :title, "ClWiki: Recent" %>
2
+
1
3
  <% @pages.each do |page| %>
2
4
  <div class='wikiHeader'>
3
5
  <span class='pageName'><%= @formatter.convert_to_link(page.name).html_safe %></span>
4
6
  </div>
5
7
  <%= page.content.html_safe %>
6
- <% end %>
8
+ <% end %>
@@ -1 +1,3 @@
1
- <%= @page.content.html_safe %>
1
+ <% content_for :title, "ClWiki: #{@page.name}" %>
2
+
3
+ <%= @page.content.html_safe %>
@@ -1,10 +1,11 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>ClWiki</title>
4
+ <title><%= yield(:title) %></title>
5
5
  <%= stylesheet_link_tag "cl_wiki/application", media: "all", "data-turbolinks-track" => true %>
6
6
  <%= javascript_include_tag "cl_wiki/application", "data-turbolinks-track" => true %>
7
7
  <%= csrf_meta_tags %>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
9
  </head>
9
10
  <body>
10
11
 
data/lib/cl_wiki/page.rb CHANGED
@@ -6,7 +6,7 @@ require 'singleton'
6
6
  module ClWiki
7
7
  class Page
8
8
  attr_reader :content, :mtime, :name, :page_name, :raw_content,
9
- :file_full_path_and_name
9
+ :file_full_path_and_name
10
10
 
11
11
  def initialize(page_name, wiki_path: $wiki_conf.wiki_path, owner: PublicUser.new)
12
12
  raise "Fix this - no slashes! #{page_name}" if %r{/}.match?(page_name)
@@ -177,13 +177,14 @@ module ClWiki
177
177
  dirs = page_path.split('/')
178
178
  dirs = dirs[1..-1] if !dirs.empty? && dirs[0].empty?
179
179
  full_dirs = (0..dirs.length - 1).each { |i| full_dirs[i] = ('/' + dirs[0..i].join('/')) }
180
- head = String.new('<div class=\'wikiHeader\'>')
180
+ head = String.new("<div class='wikiHeader'>")
181
+ head << core_footer_links(full_page_name, -1).sub('wikiFooter', 'wikiFooter wikiFooterFloat')
181
182
  if [FIND_PAGE_NAME, FIND_RESULTS_NAME].include?(full_page_name)
182
183
  head << "<span class='pageName'>#{full_page_name}</span>"
183
184
  else
184
185
  head << "<span class='pageName'><a href='find?search_text=#{search_text}'>#{page_name}</a></span><br/>"
185
186
  full_dirs.each do |dir|
186
- head << '<span class=\'pageTag\'>'
187
+ head << "'<span class='pageTag'>'"
187
188
  head << "<a href=#{cgifn}?page=#{dir}>#{File.split(dir)[-1]}</a></span>"
188
189
  end
189
190
  head << '<br/>'
@@ -212,23 +213,27 @@ module ClWiki
212
213
 
213
214
  def footer(page)
214
215
  return String.new unless page.is_a? ClWiki::Page
215
-
216
216
  custom_footer = process_custom_footers(page)
217
+ custom_footer << core_footer_links(page.page_name)
218
+ end
217
219
 
218
- wiki_name = page.page_name
219
-
220
+ def core_footer_links(wiki_name, tab_index=0)
220
221
  # refactor string constants
221
222
  footer = String.new("<div class='wikiFooter'>")
222
223
  footer << '<ul>'
223
224
  if $wiki_conf.editable
224
225
  unless [FIND_PAGE_NAME, FIND_RESULTS_NAME].include?(wiki_name)
225
- footer << "<li><span class='wikiAction'><a href='#{wiki_name}/edit'>Edit</a></span></li>"
226
+ footer << "<li><span class='wikiAction'><a href='#{wiki_name}/edit' tabindex=#{tab_index}>Edit</a></span></li>"
226
227
  end
227
228
  end
228
- footer << "<li><span class='wikiAction'><a href='find'>Find</a></span></li>"
229
- footer << "<li><span class='wikiAction'><a href='recent'>Recent</a></span></li>"
229
+ footer << "<li><span class='wikiAction'><a href='find' tabindex=#{tab_index}>Find</a></span></li>"
230
+ if $wiki_conf.publishTag
231
+ footer << "<li><span class='wikiAction'><a href='recent' tabindex=#{tab_index}>Recent</a></span></li>"
232
+ else
233
+ footer << "<li><span class='wikiAction'><a href='FrontPage' tabindex=#{tab_index}>Home</a></span></li>"
234
+ end
230
235
  footer << '</ul></div>'
231
- custom_footer << footer
236
+ footer
232
237
  end
233
238
 
234
239
  def src_url
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClWiki
4
- VERSION = '3.1.2'
4
+ VERSION = '3.1.4'
5
5
  end