kamishibai 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/LICENSE +29 -0
  4. data/README.md +91 -0
  5. data/bin/kamishibai +59 -0
  6. data/changelogs.txt +6 -0
  7. data/images/reading.jpg +0 -0
  8. data/images/settings.jpg +0 -0
  9. data/images/view_browse.jpg +0 -0
  10. data/images/view_dir.jpg +0 -0
  11. data/kamishibai.gemspec +31 -0
  12. data/lib/kamishibai.rb +35 -0
  13. data/lib/kamishibai/book.rb +97 -0
  14. data/lib/kamishibai/config.rb +90 -0
  15. data/lib/kamishibai/database.rb +330 -0
  16. data/lib/kamishibai/functions.rb +332 -0
  17. data/lib/kamishibai/patches.rb +58 -0
  18. data/lib/kamishibai/version.rb +7 -0
  19. data/lib/kamishibai/webserver.rb +502 -0
  20. data/lib/kamishibai/webserver_cmds.rb +26 -0
  21. data/lib/kamishibai/webserver_config.rb +91 -0
  22. data/lib/kamishibai/webserver_filemanager.rb +29 -0
  23. data/lib/kamishibai/webserver_tablet.rb +259 -0
  24. data/lib/kamishibai/workers.rb +39 -0
  25. data/public/css/browse.css +390 -0
  26. data/public/css/config.css +3 -0
  27. data/public/css/reader.css +119 -0
  28. data/public/css/styles.css +30 -0
  29. data/public/css/tablet_browse.css +247 -0
  30. data/public/css/tablet_reader.css +323 -0
  31. data/public/css/tablet_reader_input.css +191 -0
  32. data/public/images/ajax-loader.gif +0 -0
  33. data/public/images/delete.png +0 -0
  34. data/public/images/folder-mini-up.png +0 -0
  35. data/public/images/folder-mini.png +0 -0
  36. data/public/images/spinner.gif +0 -0
  37. data/public/images/trash-empty-mini.png +0 -0
  38. data/public/images/trash-full-mini.png +0 -0
  39. data/public/js/browse.js +391 -0
  40. data/public/js/config.js +190 -0
  41. data/public/js/reader.js +497 -0
  42. data/public/js/swipeview-k.js +478 -0
  43. data/public/js/tablet3.js +241 -0
  44. data/public/js/tablet3_browse.js +173 -0
  45. data/public/js/tablet3_reader.js +534 -0
  46. data/public/js/utilities.js +170 -0
  47. data/public/lang/k-cn.json +82 -0
  48. data/public/lang/k-en.json +82 -0
  49. data/public/lang/k-ja.json +82 -0
  50. data/public/vendor/css/bootstrap-slider.css +252 -0
  51. data/public/vendor/css/bootstrap-theme.css +476 -0
  52. data/public/vendor/css/bootstrap-theme.css.map +1 -0
  53. data/public/vendor/css/bootstrap-theme.min.css +5 -0
  54. data/public/vendor/css/bootstrap.css +6584 -0
  55. data/public/vendor/css/bootstrap.css.map +1 -0
  56. data/public/vendor/css/bootstrap.min.css +5 -0
  57. data/public/vendor/css/jquery-ui-1.10.0.custom.css +1614 -0
  58. data/public/vendor/css/jquery.mobile-1.3.1.min.css +3 -0
  59. data/public/vendor/css/jqueryFileTree.css +91 -0
  60. data/public/vendor/fonts/glyphicons-halflings-regular.eot +0 -0
  61. data/public/vendor/fonts/glyphicons-halflings-regular.svg +288 -0
  62. data/public/vendor/fonts/glyphicons-halflings-regular.ttf +0 -0
  63. data/public/vendor/fonts/glyphicons-halflings-regular.woff +0 -0
  64. data/public/vendor/fonts/glyphicons-halflings-regular.woff2 +0 -0
  65. data/public/vendor/images/application.png +0 -0
  66. data/public/vendor/images/code.png +0 -0
  67. data/public/vendor/images/css.png +0 -0
  68. data/public/vendor/images/db.png +0 -0
  69. data/public/vendor/images/dim.png +0 -0
  70. data/public/vendor/images/directory.png +0 -0
  71. data/public/vendor/images/doc.png +0 -0
  72. data/public/vendor/images/file.png +0 -0
  73. data/public/vendor/images/film.png +0 -0
  74. data/public/vendor/images/flash.png +0 -0
  75. data/public/vendor/images/folder_open.png +0 -0
  76. data/public/vendor/images/grey.png +0 -0
  77. data/public/vendor/images/html.png +0 -0
  78. data/public/vendor/images/icons-18-black.png +0 -0
  79. data/public/vendor/images/icons-18-white.png +0 -0
  80. data/public/vendor/images/icons-36-black.png +0 -0
  81. data/public/vendor/images/icons-36-white.png +0 -0
  82. data/public/vendor/images/java.png +0 -0
  83. data/public/vendor/images/linux.png +0 -0
  84. data/public/vendor/images/music.png +0 -0
  85. data/public/vendor/images/pdf.png +0 -0
  86. data/public/vendor/images/php.png +0 -0
  87. data/public/vendor/images/picture.png +0 -0
  88. data/public/vendor/images/ppt.png +0 -0
  89. data/public/vendor/images/psd.png +0 -0
  90. data/public/vendor/images/ruby.png +0 -0
  91. data/public/vendor/images/script.png +0 -0
  92. data/public/vendor/images/spinner.gif +0 -0
  93. data/public/vendor/images/txt.png +0 -0
  94. data/public/vendor/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  95. data/public/vendor/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  96. data/public/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  97. data/public/vendor/images/ui-bg_flat_10_000000_40x100.png +0 -0
  98. data/public/vendor/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
  99. data/public/vendor/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  100. data/public/vendor/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  101. data/public/vendor/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  102. data/public/vendor/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  103. data/public/vendor/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  104. data/public/vendor/images/ui-bg_glass_20_555555_1x400.png +0 -0
  105. data/public/vendor/images/ui-bg_glass_40_0078a3_1x400.png +0 -0
  106. data/public/vendor/images/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  107. data/public/vendor/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  108. data/public/vendor/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  109. data/public/vendor/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  110. data/public/vendor/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  111. data/public/vendor/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  112. data/public/vendor/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  113. data/public/vendor/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  114. data/public/vendor/images/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
  115. data/public/vendor/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  116. data/public/vendor/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  117. data/public/vendor/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  118. data/public/vendor/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  119. data/public/vendor/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  120. data/public/vendor/images/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  121. data/public/vendor/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  122. data/public/vendor/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  123. data/public/vendor/images/ui-bg_inset-soft_25_000000_1x100.png +0 -0
  124. data/public/vendor/images/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
  125. data/public/vendor/images/ui-icons_217bc0_256x240.png +0 -0
  126. data/public/vendor/images/ui-icons_222222_256x240.png +0 -0
  127. data/public/vendor/images/ui-icons_228ef1_256x240.png +0 -0
  128. data/public/vendor/images/ui-icons_2e83ff_256x240.png +0 -0
  129. data/public/vendor/images/ui-icons_454545_256x240.png +0 -0
  130. data/public/vendor/images/ui-icons_469bdd_256x240.png +0 -0
  131. data/public/vendor/images/ui-icons_4b8e0b_256x240.png +0 -0
  132. data/public/vendor/images/ui-icons_6da8d5_256x240.png +0 -0
  133. data/public/vendor/images/ui-icons_888888_256x240.png +0 -0
  134. data/public/vendor/images/ui-icons_a83300_256x240.png +0 -0
  135. data/public/vendor/images/ui-icons_cccccc_256x240.png +0 -0
  136. data/public/vendor/images/ui-icons_cd0a0a_256x240.png +0 -0
  137. data/public/vendor/images/ui-icons_d8e7f3_256x240.png +0 -0
  138. data/public/vendor/images/ui-icons_ef8c08_256x240.png +0 -0
  139. data/public/vendor/images/ui-icons_f9bd01_256x240.png +0 -0
  140. data/public/vendor/images/ui-icons_ffd27a_256x240.png +0 -0
  141. data/public/vendor/images/ui-icons_ffffff_256x240.png +0 -0
  142. data/public/vendor/images/xls.png +0 -0
  143. data/public/vendor/images/zip.png +0 -0
  144. data/public/vendor/js/bootstrap-slider.js +1550 -0
  145. data/public/vendor/js/bootstrap.js +2317 -0
  146. data/public/vendor/js/bootstrap.min.js +7 -0
  147. data/public/vendor/js/jquery-2.1.4.js +9210 -0
  148. data/public/vendor/js/jquery-2.1.4.min.js +4 -0
  149. data/public/vendor/js/jquery-2.1.4.min.map +1 -0
  150. data/public/vendor/js/jquery-ui-1.10.2.custom.min.js +7 -0
  151. data/public/vendor/js/jquery.cookie.js +72 -0
  152. data/public/vendor/js/jquery.hammer.min.js +7 -0
  153. data/public/vendor/js/jquery.lazyload.min.js +15 -0
  154. data/public/vendor/js/jquery.localize.js +180 -0
  155. data/public/vendor/js/jquery.mobile-1.3.1.min.js +7 -0
  156. data/public/vendor/js/jquery.scrollTo-1.4.3.1.js +218 -0
  157. data/public/vendor/js/jqueryFileTree.js +95 -0
  158. data/public/vendor/js/swipeview.js +471 -0
  159. data/views/browse.haml +97 -0
  160. data/views/config.haml +115 -0
  161. data/views/layout.haml +12 -0
  162. data/views/login.haml +51 -0
  163. data/views/reader.haml +70 -0
  164. data/views/statistics.haml +108 -0
  165. data/views/tablet3.haml +80 -0
  166. metadata +334 -0
@@ -0,0 +1,97 @@
1
+ !!!5
2
+ %html
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %meta(name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0")
6
+ %meta(name="apple-mobile-web-app-capable" content="yes")
7
+ %meta(name="apple-mobile-web-app-status-bar-style" content="black")
8
+ %title Kamishibai
9
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/bootstrap.css')
10
+ %link(rel='stylesheet' type='text/css' href='/css/browse.css')
11
+ %script(src='/vendor/js/jquery-2.1.4.js')
12
+ %script(src='/vendor/js/jquery.localize.js')
13
+ %script(src='/vendor/js/jquery.cookie.js')
14
+ %script(src='/vendor/js/bootstrap.js')
15
+ %script(src='/js/utilities.js')
16
+ %script(src='/js/browse.js')
17
+ %script(src='/vendor/js/jquery.scrollTo-1.4.3.1.js')
18
+ %script(src='/vendor/js/jquery.lazyload.min.js')
19
+ %body
20
+ %nav.navbar.navbar-default#navtop
21
+ %div.container-fluid
22
+
23
+ %div.navbar-header
24
+ %a.navbar-brand(data-localize="browse.Path")
25
+ %ol.breadcrumb.pull-left#path
26
+
27
+ %button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#navcollapse")
28
+ %span.sr-only Toggle Navigation
29
+ %span.icon-bar
30
+ %span.icon-bar
31
+ %span.icon-bar
32
+
33
+ %div.collapse.navbar-collapse#navcollapse
34
+ %form.navbar-form.navbar-right(role="search")
35
+ %div.form-group
36
+ %input.form-control#searchbox(type="text" placeholder="" data-localize="browse.Search")
37
+
38
+ %ul.nav.navbar-nav
39
+ %li.dropdown
40
+ %a.dropdown-toggle(href="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false")
41
+ %span(data-localize="browse.Bookmarks")
42
+ %span.caret
43
+ %ul#ul-sources.dropdown-menu(role="menu" aria-labelledby="dropdownMenu")
44
+ %li
45
+ %a(tabindex="-1" href="#") blank
46
+
47
+ %li.dropdown
48
+ %a.dropdown-toggle(href="#" data-toggle="dropdown")
49
+ %span(data-localize="browse.Menu")
50
+ %span.caret
51
+ %ul.dropdown-menu(role="menu" aria-labelledby="dropdownMenu")
52
+ %li
53
+ %a(tabindex="-1" href="/tablet")
54
+ %span.glyphicon.glyphicon-book  
55
+ %span(data-localize="browse.SimpleMode")
56
+ %li
57
+ %a(tabindex="-1" href="/config")
58
+ %span.glyphicon.glyphicon-wrench  
59
+ %span(data-localize="browse.Preferences")
60
+ %li
61
+ %a(tabindex="-1" href="#" onclick="toggleFullScreen(document.documentElement); $('.nav-collapse').collapse('toggle'); return false;")
62
+ %span.glyphicon.glyphicon-fullscreen  
63
+ %span(data-localize="toggleFullScreen")
64
+
65
+ %li.dropdown
66
+ %a.dropdown-toggle(href="#" data-toggle="dropdown")
67
+ %span(data-localize="orderby")
68
+ %span.caret
69
+ %ul.dropdown-menu(role="menu" aria-labelledby="dropdownMenu")
70
+ %li
71
+ %a(tabindex="-1" href="#" onclick="exe_order_by('name'); return false;")
72
+ %span.glyphicon.glyphicon-font  
73
+ %span(data-localize="filename")
74
+ %li
75
+ %a(tabindex="-1" href="#" onclick="exe_order_by('size'); return false;")
76
+ %span.glyphicon.glyphicon-file  
77
+ %span(data-localize="filesize")
78
+ %li
79
+ %a(tabindex="-1" href="#" onclick="exe_order_by('date'); return false;")
80
+ %span.glyphicon.glyphicon-time  
81
+ %span(data-localize="filedate")
82
+
83
+ %li.dropdown
84
+ %a.dropdown-toggle(href="#" data-toggle="dropdown")
85
+ %span(data-localize="browse.Edit")
86
+ %span.caret
87
+ %ul.dropdown-menu(role="menu" aria-labelledby="dropdownMenu")
88
+ %li
89
+ %a(tabindex="-1" href="#" onclick="delete_enable(); return false;")
90
+ %span.glyphicon.glyphicon-remove  
91
+ %span(data-localize="browse.Delete")
92
+
93
+ %div
94
+ %a.btn.hidden.btn-danger.pull-right#btnDeleteDisable(data-localize="browse.DeleteDisable" onclick="delete_disable(); return false;")
95
+
96
+ %div.container-fluid#container
97
+ %div#dir_lists
@@ -0,0 +1,115 @@
1
+ !!!5
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Kamishibai
6
+ %link(rel='stylesheet' type='text/css' href='/css/config.css')
7
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/bootstrap.css')
8
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/jqueryFileTree.css')
9
+ %script(src='/vendor/js/jquery-2.1.4.js')
10
+ %script(src='/vendor/js/bootstrap.js')
11
+ %script(src='/vendor/js/jquery.localize.js')
12
+ %script(src='/vendor/js/jqueryFileTree.js')
13
+ %script(src='/js/config.js')
14
+ %script(src='/js/utilities.js')
15
+ %body
16
+ %script
17
+ var drives = eval(#{available_drives});
18
+ %div.container
19
+ %div.page-header
20
+ %h2(data-localize="Kamishibai")
21
+ %a(href="/")
22
+ %span.btn.btn-link(data-localize="config.Browse")
23
+ %a(href="/statistics")
24
+ %span.btn.btn-link(data-localize="config.Statistics")
25
+
26
+ %div.tabbable
27
+ %ul.nav.nav-tabs
28
+ %li.active
29
+ %a(href="#tab1" data-toggle="tab" data-localize="folders")
30
+ %li
31
+ %a(href="#tab2" data-toggle="tab" onclick="pref_load(); return false;" data-localize="preferences")
32
+
33
+ %div.tab-content
34
+ %div.tab-pane.active#tab1
35
+ %p.text-right
36
+ %button.btn.btn-primary#btn_sf(href="#modal-saving" data-toggle="modal" onclick="save_dirs();" data-localize="config.SaveFolders")
37
+ %button.btn#btn_af(href="#modal-add-folder" data-toggle="modal" onclick="load_dir('/');" data-localize="config.AddFolder")
38
+
39
+ %table.table.table-bordered.table-striped#dirtable
40
+ %thead
41
+ %tr
42
+ %th.c1(data-localize="folder")
43
+ %th.c2(data-localize="config.Action")
44
+ %tbody
45
+ %tfoot
46
+ %tr
47
+ %td(colspan=2)
48
+ %span.pull-right(data-localize="config.Books")
49
+ %span.pull-right#total_books ? 
50
+
51
+ %div.tab-pane#tab2
52
+ %form.form-horizontal
53
+ %div.control-group
54
+ %label.control-label(for="port" data-localize="config.Port")
55
+ %div.controls
56
+ %input(type="text" name="port" id="port" value="loading..." disabled="")
57
+ %div.control-group
58
+ %label.control-label(for="new_book_days" data-localize="config.NewBookDays")
59
+ %div.controls
60
+ %input(type="text" name="new_book_days" id="new_book_days" value="loading..." disabled="")
61
+ %div.control-group
62
+ %label.control-label(for="username" data-localize="username")
63
+ %div.controls
64
+ %input(type="text" name="username" id="username" value="loading..." disabled="")
65
+ %div.control-group
66
+ %label.control-label(for="password" data-localize="password")
67
+ %div.controls
68
+ %input(type="text" name="password" id="password" value="loading..." disabled="")
69
+ %div.control-group
70
+ %label.control-label(for="img_resize" data-localize="config.ResizeImage")
71
+ %div.controls
72
+ %select(name="img_resize" id="img_resize" data-role="slider" disabled="")
73
+ %option(value="on" data-localize="yes")
74
+ %option(value="off" data-localize="no")
75
+ %div.control-group
76
+ %label.control-label(for="img_quality" data-localize="config.ImageQuality")
77
+ %div.controls
78
+ %input(type="text" name="img_quality" id="img_quality" value="loading..." disabled="")
79
+ %div#pref-buttons
80
+ %div.controls
81
+ %button.btn#pref-cancel(onclick="pref_load(); return false;" data-localize="cancel")
82
+ %button.btn.btn-primary#pref-save(href="#modal-saving" data-toggle="modal" onclick="pref_save(); return false;" disabled="" data-localize="config.SavePreferences")
83
+ %div.text-center
84
+
85
+
86
+ %div.modal.fade#modal-saving
87
+ %div.modal-dialog
88
+ %div.modal-content
89
+ %div.modal-header
90
+ %h3(data-localize="config.Saving")
91
+ %div.modal-body
92
+ %p(data-localize="config.SavingMsg")
93
+ %div.modal-footer
94
+ %p
95
+
96
+ %div.modal.fade#modal-add-folder
97
+ %div.modal-dialog
98
+ %div.modal-content
99
+ %div.modal-header
100
+ %button.close(type="button" data-dismiss="modal" aria-hidden="true") x
101
+ %h3.modal-title(data-localize="config.AddFolder")
102
+ %div
103
+ %div#drives
104
+ %label.span1(data-localize="config.Path")
105
+ %input.span5.input-small(type="text" name="path" id="path" value="/")
106
+ %div.modal-body
107
+ %div#af-dirnav
108
+ %div.modal-footer
109
+ %button.btn(data-dismiss="modal" aria-hiden="true" data-localize="cancel")
110
+ %button.btn.btn-primary#af-save(data-dismiss="modal" aria-hiden="true" onclick="af_add_dir( $('#path').val() );" data-localize="config.AddFolder")
111
+
112
+ %div(style="display: none;")
113
+ / error messages, hack for localization
114
+ %span#alertPort(data-localize="config.alertPort")
115
+ %span#alertImageQuality(data-localize="config.alertImageQuality")
@@ -0,0 +1,12 @@
1
+ !!!5
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Kamishibai
6
+ %link(rel='stylesheet' type='text/css' href='/css/bootstrap.css')
7
+ %script(src='/vendor/js/jquery-2.1.4.js')
8
+ %script(src='/vendor/js/bootstrap.js')
9
+ %script(src='/vendor/js/jquery.localize.js')
10
+ %script(src='/js/utilities.js')
11
+ %body
12
+ = yield
@@ -0,0 +1,51 @@
1
+ :css
2
+ body {
3
+ padding-top: 40px;
4
+ padding-bottom: 40px;
5
+ background-color: #f5f5f5;
6
+ }
7
+
8
+ .form-signin {
9
+ max-width: 300px;
10
+ padding: 19px 29px 29px;
11
+ margin: 0 auto 20px;
12
+ background-color: #fff;
13
+ border: 1px solid #e5e5e5;
14
+ -webkit-border-radius: 5px;
15
+ -moz-border-radius: 5px;
16
+ border-radius: 5px;
17
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
18
+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
19
+ box-shadow: 0 1px 2px rgba(0,0,0,.05);
20
+ }
21
+ .form-signin .form-signin-heading,
22
+ .form-signin .checkbox {
23
+ margin-bottom: 10px;
24
+ }
25
+ .form-signin input[type="text"],
26
+ .form-signin input[type="password"] {
27
+ font-size: 16px;
28
+ height: auto;
29
+ margin-bottom: 15px;
30
+ padding: 7px 9px;
31
+ }
32
+ %div.container
33
+ %form.form-signin(action="/login" method="post")
34
+ %h2.form-signin-heading(data-localize="login.header")
35
+ %input.input-block-level(type="text" name="username" placeholder="Username")
36
+ %input.input-block-level(name="password" type="password" placeholder="Password")
37
+ %input#url_redirect(type="hidden" name="url_redirect" value="")
38
+ %button.btn.btn-primary(type="submit" data-localize="login.LogIn")
39
+ :javascript
40
+ $(function(e) {
41
+ // on page init
42
+
43
+ // load the text localization
44
+ reload_locale();
45
+
46
+ // load redirect details
47
+ var el = document.location;
48
+ var url = el.href.replace(el.protocol + '//' + el.host + el.pathname, '');
49
+ url = url.replace('?redirect=', '');
50
+ $('#url_redirect').val( url );
51
+ });
@@ -0,0 +1,70 @@
1
+ !!!5
2
+ %html
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Kamishibai
6
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/jquery-ui-1.10.0.custom.css')
7
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/bootstrap.css')
8
+ %link(rel='stylesheet' type='text/css' href='/css/reader.css')
9
+ %script(src='/vendor/js/jquery-2.1.4.js')
10
+ %script(src='/vendor/js/bootstrap.js')
11
+ %script(src='/vendor/js/jquery.localize.js')
12
+ %script(src='/vendor/js/jquery-ui-1.10.2.custom.min.js')
13
+ %script(src='/vendor/js/jquery.cookie.js')
14
+ %script(src='/js/utilities.js')
15
+ %script(src='/js/reader.js')
16
+ %body
17
+ %div#container
18
+ %div#cleft
19
+ %a(onclick="goPrevPages()")
20
+ %div#cright
21
+ %a(onclick="goNextPages()")
22
+ %div#cbutton
23
+ %a(onclick="showmenu()")
24
+ %div#icontainer
25
+ %img#ileft
26
+ %div#ibar
27
+ %img#iright
28
+ %div(style="100px")
29
+ %div#menu
30
+ %div.control
31
+ %div#booktitle
32
+ %span#pagemode(data-toggle="buttons-radio")
33
+ %input#singlepage(type="radio" name="pagemode")
34
+ %label(for="singlepage" data-localize="reader.Single")
35
+ %input#doublepage(type="radio" name="pagemode" checked="checked")
36
+ %label(for="doublepage" data-localize="reader.Double")
37
+
38
+ %span#readdirection(data-toggle="buttons-radio")
39
+ %input#readtoleft(type="radio" name="readdirection" checked="checked")
40
+ %label(for="readtoleft" data-localize="reader.ReadToLeft")
41
+ %input#readtoright(type="radio" name="readdirection")
42
+ %label(for="readtoright" data-localize="reader.ReadToRight")
43
+
44
+ %span#itemsheight(data-toggle="buttons-radio")
45
+ %input#normalheight(type="radio" name="itemsheight" checked="checked")
46
+ %label(for="normalheight" data-localize="reader.Normal")
47
+ %input#fullheight(type="radio" name="itemsheight")
48
+ %label(for="fullheight" data-localize="reader.Full")
49
+
50
+ %span#barmode(data-toggle="buttons-radio")
51
+ %input#nobar(type="radio" name="barmode" checked="checked")
52
+ %label(for="nobar" data-localize="reader.NoBlackBar")
53
+ %input#yesbar(type="radio" name="barmode")
54
+ %label(for="yesbar" data-localize="reader.BlackBar")
55
+
56
+ %span#primarypage(data-toggle="buttons-radio")
57
+ %input#pageeven(type="radio" name="primarypage")
58
+ %label(for="pageeven" data-localize="reader.Even")
59
+ %input#pageodd(type="radio" name="primarypage")
60
+ %label(for="pageodd" data-localize="reader.Odd")
61
+
62
+ %button#gohome(data-localize="reader.Home")
63
+
64
+ %button#closemenu(data-localize="reader.Close")
65
+
66
+ %div.d_row
67
+ %div.ps.ps-1
68
+ %input#pageslider-value(disabled)
69
+ %div.ps.ps-2
70
+ %div#pageslider
@@ -0,0 +1,108 @@
1
+ :ruby
2
+ test = 1234
3
+ !!!5
4
+ %html
5
+ %head
6
+ %meta(charset="utf-8")
7
+ %title Kamishibai
8
+ %link(rel='stylesheet' type='text/css' href='/vendor/css/bootstrap.css')
9
+ %script(src='/vendor/js/jquery-2.1.4.js')
10
+ %script(src='/vendor/js/bootstrap.js')
11
+ %script(src='/vendor/js/jquery.localize.js')
12
+ %script(src='/vendor/js/jquery.cookie.js')
13
+ %script(src='/js/utilities.js')
14
+ :css
15
+ p {
16
+ background-color: gold;
17
+ width: 150px;
18
+ }
19
+ :javascript
20
+ function test() {
21
+ alert('hi');
22
+ }
23
+ %body
24
+ %div
25
+ %h3
26
+ Total books
27
+ %p
28
+ #{ $db.books.length }
29
+ %div
30
+ %h3
31
+ Total pages
32
+ %p
33
+ #{ $db.books.collect { |bc, b| b.pages }.reduce( :+ ) }
34
+ %div
35
+ %h3
36
+ Total pages read
37
+ %p
38
+ #{ $db.books.collect { |bc, b| b.page if b.page }.compact.reduce( :+ ) }
39
+ %div
40
+ %h3
41
+ Total books read
42
+ %p
43
+ #{ $db.books.collect { |bc, b| b.page if b.page }.compact.length }
44
+ %div
45
+ %h3
46
+ Unfinished books
47
+ %p
48
+ #{ $db.books.collect { |bc, b| true if b.page && b.page < b.pages }.compact.length }
49
+ %div
50
+ %h3
51
+ Time spent reading
52
+ %p
53
+ ? hours ? minutes
54
+ %div
55
+ %h3
56
+ Average stint
57
+ %p
58
+ ? hours ? minutes
59
+ %div
60
+ %h3
61
+ Quickest record
62
+ %p
63
+ ? pages / hour
64
+ %div
65
+ %h3
66
+ Longest stint
67
+ %p
68
+ ? hours ? minutes
69
+ %div
70
+ %h3
71
+ Last books read
72
+ %p
73
+ titles...
74
+ %div
75
+ %h3
76
+ Favourite Authors
77
+ %p
78
+ name...
79
+ %div
80
+ %h3
81
+ Logins
82
+ %p
83
+ ?
84
+ %div
85
+ %h3
86
+ Last login
87
+ %p
88
+ time
89
+ %div
90
+ %h3
91
+ Last IP
92
+ %p
93
+ ip
94
+ %div
95
+ %h3
96
+ Times started up
97
+ %p
98
+ ?
99
+ %div
100
+ %h3
101
+ Uptime
102
+ %p
103
+ ? hours ? minutes
104
+ %div
105
+ %h3
106
+ Total uptime
107
+ %p
108
+ ? hours ? minutes