kamishibai 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,170 @@
1
+ /*!
2
+ License: refer to LICENSE file
3
+ */
4
+
5
+ // function to format the hash to object
6
+ // example: #book=abc.zip&page=7 -> $['book']='abc.zip', $['page']=7
7
+ function getHashParams() {
8
+ var hashParams = {};
9
+ var e,
10
+ a = /\+/g, // Regex for replacing addition symbol with a space
11
+ r = /([^&;=]+)=?([^&;]*)/g,
12
+ // d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
13
+ d = function (s) { return decodeURIComponent(s); },
14
+ q = window.location.hash.substring(1);
15
+
16
+ while (e = r.exec(q))
17
+ hashParams[d(e[1])] = d(e[2]);
18
+
19
+ return hashParams;
20
+ }
21
+
22
+ // return fully formatted hash
23
+ function fullhash(page) {
24
+ return 'book=' + getHashParams()['book'] + '&page=' + page;
25
+ }
26
+
27
+ // a queue that will make the browser run more responsively
28
+ // renamed $.queue to $.jobqueue, because of name conflict with scrollTo jquery plug-in
29
+ $.jobqueue = {
30
+ _timer: null,
31
+ _queue: [],
32
+ add: function(fn, context, time) {
33
+ var setTimer = function(time) {
34
+ $.jobqueue._timer = setTimeout(function() {
35
+ time = $.jobqueue.add();
36
+ if ($.jobqueue._queue.length) {
37
+ setTimer(time);
38
+ }
39
+ }, time || 2);
40
+ }
41
+
42
+ if (fn) {
43
+ $.jobqueue._queue.push([fn, context, time]);
44
+ if ($.jobqueue._queue.length == 1) {
45
+ setTimer(time);
46
+ }
47
+ return;
48
+ }
49
+
50
+ var next = $.jobqueue._queue.shift();
51
+ if (!next) {
52
+ return 0;
53
+ }
54
+ next[0].call(next[1] || window);
55
+ return next[2];
56
+ },
57
+ clear: function() {
58
+ clearTimeout($.jobqueue._timer);
59
+ $.jobqueue._queue = [];
60
+ }
61
+ };
62
+
63
+ function reload_locale() {
64
+ // load the text localization for corresponding language i18n
65
+ var opts = { pathPrefix: "/lang" };
66
+ $("[data-localize]").localize("k", opts);
67
+ }
68
+
69
+ // set screen resolution on the session
70
+ function setScreenSize() {
71
+ $.post('/screen', { width: window.innerWidth, height: window.innerHeight }, function(json) {
72
+ if (json.outcome == 'success') {
73
+ // do something with the knowledge possibly?
74
+ } else {
75
+ alert('Unable to let server know what the screen resolution is!');
76
+ }
77
+ },'json');
78
+ }
79
+
80
+ function uport() {
81
+ // get the url port
82
+ var port = window.location.port || '80';
83
+ return port;
84
+ }
85
+
86
+
87
+ /*
88
+ full screen functions
89
+ */
90
+ function goFullScreen(i) {
91
+ var elem;
92
+
93
+ // if out what i is
94
+ if (typeof i == 'object' || i instanceof Object) {
95
+ // i is a DOM element
96
+ elem = i;
97
+ }
98
+ else if (typeof i == 'string' || i instanceof String) {
99
+ // i is an ID of DOM element
100
+ elem = document.getElementById(i);
101
+ }
102
+ else {
103
+ alert('goFullScreen(): unknown i');
104
+ }
105
+
106
+ // go full screen
107
+ if (elem.mozRequestFullScreen) {
108
+ elem.mozRequestFullScreen();
109
+ }
110
+ else if (elem.webkitRequestFullScreen) {
111
+ elem.webkitRequestFullScreen();
112
+ }
113
+ else {
114
+ alert('cannot go full screen');
115
+ }
116
+ }
117
+
118
+ function exitFullScreen() {
119
+ if (document.mozCancelFullScreen) {
120
+ document.mozCancelFullScreen();
121
+ }
122
+ else if (document.webkitCancelFullScreen) {
123
+ document.webkitCancelFullScreen();
124
+ }
125
+ else {
126
+ alert('cannot exit full screen');
127
+ }
128
+ }
129
+
130
+ function toggleFullScreen(id) {
131
+ if (isFullScreen()) {
132
+ exitFullScreen();
133
+ }
134
+ else {
135
+ goFullScreen(id);
136
+ }
137
+ }
138
+
139
+ function isFullScreen() {
140
+ if (typeof document.mozFullScreen != 'undefined') {
141
+ return document.mozFullScreen;
142
+ }
143
+ else if (typeof document.webkitIsFullScreen != 'undefined') {
144
+ return document.webkitIsFullScreen;
145
+ }
146
+ else if (screen.width == window.innerWidth && screen.height == window.innerHeight) {
147
+ return true;
148
+ }
149
+ else {
150
+ return false;
151
+ }
152
+ }
153
+
154
+ function isImageCached(src) {
155
+ var image = new Image();
156
+ image.src = src;
157
+
158
+ return image.complete;
159
+ }
160
+
161
+ function updateBatteryLevel() {
162
+ if (navigator.battery) {
163
+ // firefox support
164
+ battery_level = Math.floor(navigator.battery.level * 100) + '%';
165
+ }
166
+ else if (navigator.getBattery()) {
167
+ // chrome support
168
+ navigator.getBattery().then(function(battery) { battery_level = Math.floor(battery.level * 100) + '%' });
169
+ }
170
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "Kamishibai": "Kamishibai",
3
+ "yes": "是",
4
+ "no": "否",
5
+ "username": "用戶名",
6
+ "password": "密碼",
7
+ "cancel": "取消",
8
+ "save": "儲存",
9
+ "close": "關閉",
10
+ "orderby": "排序方式",
11
+ "filename": "檔案名",
12
+ "filesize": "檔案大小",
13
+ "filedate": "檔案日期",
14
+ "folder": "文件夾",
15
+ "folders": "文件夾",
16
+ "preferences": "設定",
17
+ "toggleFullScreen": "全屏切換",
18
+
19
+ "login": {
20
+ "header": "Kamishibai 登錄",
21
+ "LogIn": "登錄"
22
+ },
23
+
24
+ "browse":
25
+ {
26
+ "Path": "路徑",
27
+ "All": "全",
28
+ "New": "新",
29
+ "Reading": "閱讀中",
30
+ "Finished": "閱讀完",
31
+ "Author": "作者",
32
+ "Search": "搜索",
33
+ "Action": "動作",
34
+ "Bookmarks": "書籤",
35
+ "Menu": "菜單",
36
+ "SimpleMode": "簡單模式",
37
+ "Preferences": "設定",
38
+ "Restart": "重啟程序",
39
+ "RestartMsg": "重啟中。請稍候。",
40
+ "LogOut": "登出",
41
+ "Edit": "編輯",
42
+ "Delete": "刪除",
43
+ "DeleteDisable": "刪除結束"
44
+ },
45
+
46
+ "reader":
47
+ {
48
+ "Single": "單頁(s)",
49
+ "Double": "雙頁",
50
+ "ReadToLeft": "L←R (e)",
51
+ "ReadToRight": "L→R",
52
+ "Normal": "norm<u>a</u>l",
53
+ "Full": "full",
54
+ "NoBlackBar": "no <u>b</u>lack bar",
55
+ "BlackBar": "black bar",
56
+ "Even": "e<u>v</u>en",
57
+ "Odd": "odd",
58
+ "Home": "Home (&#9243;)",
59
+ "Close": "Close (&crarr;)"
60
+ },
61
+
62
+ "config":
63
+ {
64
+ "Browse": "瀏覽",
65
+ "SaveFolders": "Save Folders",
66
+ "Path": "Path",
67
+ "AddFolder": "Add Folder",
68
+ "RemoveFolder": "X",
69
+ "Action": "Action",
70
+ "Books": "Books",
71
+ "Port": "Port",
72
+ "NewBookDays": "新書(天)",
73
+ "ResizeImage": "Resize Image",
74
+ "ImageQuality": "Image Quality (%)",
75
+ "SavePreferences": "Save Preferences",
76
+ "alertPort": "端口只能在1025和65535之間",
77
+ "alertImageQuality": "Image quality can only be between 0 and 100",
78
+ "Saving": "Saving",
79
+ "SavingMsg": "Saving preferences/folders...",
80
+ "Statistics": "統計"
81
+ }
82
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "Kamishibai": "Kamishibai",
3
+ "yes": "yes",
4
+ "no": "no",
5
+ "username": "Username",
6
+ "password": "Password",
7
+ "cancel": "Cancel",
8
+ "save": "Save",
9
+ "close": "Close",
10
+ "orderby": "Order By",
11
+ "filename": "Name",
12
+ "filesize": "Size",
13
+ "filedate": "Date",
14
+ "folder": "Folder",
15
+ "folders": "Folders",
16
+ "preferences": "Preferences",
17
+ "toggleFullScreen": "Toggle Full Screen",
18
+
19
+ "login": {
20
+ "header": "Kamishibai log in",
21
+ "LogIn": "Log In"
22
+ },
23
+
24
+ "browse":
25
+ {
26
+ "Path": "Path",
27
+ "All": "All",
28
+ "New": "New",
29
+ "Reading": "Reading",
30
+ "Finished": "Finished",
31
+ "Author": "Author",
32
+ "Search": "Search",
33
+ "Action": "Action",
34
+ "Bookmarks": "Bookmarks",
35
+ "Menu": "Menu",
36
+ "SimpleMode": "Simple Mode",
37
+ "Preferences": "Preferences",
38
+ "Restart": "Restart",
39
+ "RestartMsg": "Restarting... Please wait, the page will auto refresh in few seconds.",
40
+ "LogOut": "Log out",
41
+ "Edit": "Edit",
42
+ "Delete": "Delete",
43
+ "DeleteDisable": "Disable Delete"
44
+ },
45
+
46
+ "reader":
47
+ {
48
+ "Single": "<u>s</u>ingle",
49
+ "Double": "double",
50
+ "ReadToLeft": "L&larr;R (e)",
51
+ "ReadToRight": "L&rarr;R",
52
+ "Normal": "norm<u>a</u>l",
53
+ "Full": "full",
54
+ "NoBlackBar": "no <u>b</u>lack bar",
55
+ "BlackBar": "black bar",
56
+ "Even": "e<u>v</u>en",
57
+ "Odd": "odd",
58
+ "Home": "Home (&#9243;)",
59
+ "Close": "Close (&crarr;)"
60
+ },
61
+
62
+ "config":
63
+ {
64
+ "Browse": "Browse",
65
+ "SaveFolders": "Save Folders",
66
+ "Path": "Path",
67
+ "AddFolder": "Add Folder",
68
+ "RemoveFolder": "X",
69
+ "Action": "Action",
70
+ "Books": "Books",
71
+ "Port": "Port",
72
+ "NewBookDays": "New Book (Days)",
73
+ "ResizeImage": "Resize Image",
74
+ "ImageQuality": "Image Quality (%)",
75
+ "SavePreferences": "Save Preferences",
76
+ "alertPort": "Port number can only be between 1025 and 65535",
77
+ "alertImageQuality": "Image quality can only be between 0 and 100",
78
+ "Saving": "Saving",
79
+ "SavingMsg": "Saving preferences/folders...",
80
+ "Statistics": "Statistics"
81
+ }
82
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "Kamishibai": "カミシバイ",
3
+ "yes": "はい",
4
+ "no": "いいえ",
5
+ "username": "ユーザ",
6
+ "password": "パスワード",
7
+ "cancel": "キャンセル",
8
+ "save": "セーブ",
9
+ "close": "閉じる",
10
+ "orderby": "並び",
11
+ "filename": "名",
12
+ "filesize": "サイズ",
13
+ "filedate": "日付",
14
+ "folder": "フォルダ",
15
+ "folders": "フォルダ",
16
+ "preferences": "設定",
17
+ "toggleFullScreen": "フルスクリーン",
18
+
19
+ "login": {
20
+ "header": "カミシバイ ログイン",
21
+ "LogIn": "ログイン"
22
+ },
23
+
24
+ "browse":
25
+ {
26
+ "Path": "フォルダ",
27
+ "All": "全",
28
+ "New": "新",
29
+ "Reading": "読む中",
30
+ "Finished": "既読",
31
+ "Author": "作家",
32
+ "Search": "捜索",
33
+ "Action": "行動",
34
+ "Bookmarks": "ブックマーク",
35
+ "Menu": "メニュー",
36
+ "SimpleMode": "簡単モード",
37
+ "Preferences": "設定",
38
+ "Restart": "再起動",
39
+ "RestartMsg": "再起動中、少々お待ちください。",
40
+ "LogOut": "ログアウト",
41
+ "Edit": "編集",
42
+ "Delete": "削除",
43
+ "DeleteDisable": "削除終了"
44
+ },
45
+
46
+ "reader":
47
+ {
48
+ "Single": "単ページ(s)",
49
+ "Double": "双ページ",
50
+ "ReadToLeft": "左&larr;右(e)",
51
+ "ReadToRight": "左&rarr;右",
52
+ "Normal": "普通(a)",
53
+ "Full": "フルスクリーン",
54
+ "NoBlackBar": "黒バー無し(b)",
55
+ "BlackBar": "黒バー有り",
56
+ "Even": "偶数頁(v)",
57
+ "Odd": "奇数頁",
58
+ "Home": "戻る (&#9243;)",
59
+ "Close": "閉じる (&crarr;)"
60
+ },
61
+
62
+ "config":
63
+ {
64
+ "Browse": "戻る",
65
+ "SaveFolders": "セーブ",
66
+ "Path": "ディレクトリ",
67
+ "AddFolder": "フォルダ追加",
68
+ "RemoveFolder": "外す",
69
+ "Action": "行動",
70
+ "Books": "本",
71
+ "Port": "ポート",
72
+ "NewBookDays": "新刊(日付)",
73
+ "ResizeImage": "画像再圧縮",
74
+ "ImageQuality": "画質(%)",
75
+ "SavePreferences": "セーブ",
76
+ "alertPort": "ポートの有効な設定は1025-65535です。",
77
+ "alertImageQuality": "画質の有効な設定は0-100です。",
78
+ "Saving": "セーブ",
79
+ "SavingMsg": "セーブ中、少々お待ちください。",
80
+ "Statistics": "統計"
81
+ }
82
+ }
@@ -0,0 +1,252 @@
1
+ /*! =========================================================
2
+ * bootstrap-slider.js
3
+ *
4
+ * Maintainers:
5
+ * Kyle Kemp
6
+ * - Twitter: @seiyria
7
+ * - Github: seiyria
8
+ * Rohit Kalkur
9
+ * - Twitter: @Rovolutionary
10
+ * - Github: rovolution
11
+ *
12
+ * =========================================================
13
+ *
14
+ * Licensed under the Apache License, Version 2.0 (the "License");
15
+ * you may not use this file except in compliance with the License.
16
+ * You may obtain a copy of the License at
17
+ *
18
+ * http://www.apache.org/licenses/LICENSE-2.0
19
+ *
20
+ * Unless required by applicable law or agreed to in writing, software
21
+ * distributed under the License is distributed on an "AS IS" BASIS,
22
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
+ * See the License for the specific language governing permissions and
24
+ * limitations under the License.
25
+ * ========================================================= */
26
+ .slider {
27
+ display: inline-block;
28
+ vertical-align: middle;
29
+ position: relative;
30
+ }
31
+ .slider.slider-horizontal {
32
+ width: 210px;
33
+ height: 20px;
34
+ }
35
+ .slider.slider-horizontal .slider-track {
36
+ height: 10px;
37
+ width: 100%;
38
+ margin-top: -5px;
39
+ top: 50%;
40
+ left: 0;
41
+ }
42
+ .slider.slider-horizontal .slider-selection,
43
+ .slider.slider-horizontal .slider-track-low,
44
+ .slider.slider-horizontal .slider-track-high {
45
+ height: 100%;
46
+ top: 0;
47
+ bottom: 0;
48
+ }
49
+ .slider.slider-horizontal .slider-tick,
50
+ .slider.slider-horizontal .slider-handle {
51
+ margin-left: -10px;
52
+ margin-top: -5px;
53
+ }
54
+ .slider.slider-horizontal .slider-tick.triangle,
55
+ .slider.slider-horizontal .slider-handle.triangle {
56
+ border-width: 0 10px 10px 10px;
57
+ width: 0;
58
+ height: 0;
59
+ border-bottom-color: #0480be;
60
+ margin-top: 0;
61
+ }
62
+ .slider.slider-horizontal .slider-tick-label-container {
63
+ white-space: nowrap;
64
+ margin-top: 20px;
65
+ }
66
+ .slider.slider-horizontal .slider-tick-label-container .slider-tick-label {
67
+ padding-top: 4px;
68
+ display: inline-block;
69
+ text-align: center;
70
+ }
71
+ .slider.slider-vertical {
72
+ height: 210px;
73
+ width: 20px;
74
+ }
75
+ .slider.slider-vertical .slider-track {
76
+ width: 10px;
77
+ height: 100%;
78
+ margin-left: -5px;
79
+ left: 50%;
80
+ top: 0;
81
+ }
82
+ .slider.slider-vertical .slider-selection {
83
+ width: 100%;
84
+ left: 0;
85
+ top: 0;
86
+ bottom: 0;
87
+ }
88
+ .slider.slider-vertical .slider-track-low,
89
+ .slider.slider-vertical .slider-track-high {
90
+ width: 100%;
91
+ left: 0;
92
+ right: 0;
93
+ }
94
+ .slider.slider-vertical .slider-tick,
95
+ .slider.slider-vertical .slider-handle {
96
+ margin-left: -5px;
97
+ margin-top: -10px;
98
+ }
99
+ .slider.slider-vertical .slider-tick.triangle,
100
+ .slider.slider-vertical .slider-handle.triangle {
101
+ border-width: 10px 0 10px 10px;
102
+ width: 1px;
103
+ height: 1px;
104
+ border-left-color: #0480be;
105
+ margin-left: 0;
106
+ }
107
+ .slider.slider-vertical .slider-tick-label-container {
108
+ white-space: nowrap;
109
+ }
110
+ .slider.slider-vertical .slider-tick-label-container .slider-tick-label {
111
+ padding-left: 4px;
112
+ }
113
+ .slider.slider-disabled .slider-handle {
114
+ background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
115
+ background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
116
+ background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%);
117
+ background-repeat: repeat-x;
118
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0);
119
+ }
120
+ .slider.slider-disabled .slider-track {
121
+ background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
122
+ background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%);
123
+ background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%);
124
+ background-repeat: repeat-x;
125
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0);
126
+ cursor: not-allowed;
127
+ }
128
+ .slider input {
129
+ display: none;
130
+ }
131
+ .slider .tooltip.top {
132
+ margin-top: -36px;
133
+ }
134
+ .slider .tooltip-inner {
135
+ white-space: nowrap;
136
+ }
137
+ .slider .hide {
138
+ display: none;
139
+ }
140
+ .slider-track {
141
+ position: absolute;
142
+ cursor: pointer;
143
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
144
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%);
145
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%);
146
+ background-repeat: repeat-x;
147
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
148
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
149
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
150
+ border-radius: 4px;
151
+ }
152
+ .slider-selection {
153
+ position: absolute;
154
+ background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
155
+ background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
156
+ background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
157
+ background-repeat: repeat-x;
158
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
159
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
160
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
161
+ -webkit-box-sizing: border-box;
162
+ -moz-box-sizing: border-box;
163
+ box-sizing: border-box;
164
+ border-radius: 4px;
165
+ }
166
+ .slider-selection.tick-slider-selection {
167
+ background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);
168
+ background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);
169
+ background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);
170
+ background-repeat: repeat-x;
171
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);
172
+ }
173
+ .slider-track-low,
174
+ .slider-track-high {
175
+ position: absolute;
176
+ background: transparent;
177
+ -webkit-box-sizing: border-box;
178
+ -moz-box-sizing: border-box;
179
+ box-sizing: border-box;
180
+ border-radius: 4px;
181
+ }
182
+ .slider-handle {
183
+ position: absolute;
184
+ width: 20px;
185
+ height: 20px;
186
+ background-color: #337ab7;
187
+ background-image: -webkit-linear-gradient(top, #149bdf 0%, #0480be 100%);
188
+ background-image: -o-linear-gradient(top, #149bdf 0%, #0480be 100%);
189
+ background-image: linear-gradient(to bottom, #149bdf 0%, #0480be 100%);
190
+ background-repeat: repeat-x;
191
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
192
+ filter: none;
193
+ -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
194
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
195
+ border: 0px solid transparent;
196
+ }
197
+ .slider-handle.round {
198
+ border-radius: 50%;
199
+ }
200
+ .slider-handle.triangle {
201
+ background: transparent none;
202
+ }
203
+ .slider-handle.custom {
204
+ background: transparent none;
205
+ }
206
+ .slider-handle.custom::before {
207
+ line-height: 20px;
208
+ font-size: 20px;
209
+ content: '\2605';
210
+ color: #726204;
211
+ }
212
+ .slider-tick {
213
+ position: absolute;
214
+ width: 20px;
215
+ height: 20px;
216
+ background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
217
+ background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
218
+ background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
219
+ background-repeat: repeat-x;
220
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
221
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
222
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
223
+ -webkit-box-sizing: border-box;
224
+ -moz-box-sizing: border-box;
225
+ box-sizing: border-box;
226
+ filter: none;
227
+ opacity: 0.8;
228
+ border: 0px solid transparent;
229
+ }
230
+ .slider-tick.round {
231
+ border-radius: 50%;
232
+ }
233
+ .slider-tick.triangle {
234
+ background: transparent none;
235
+ }
236
+ .slider-tick.custom {
237
+ background: transparent none;
238
+ }
239
+ .slider-tick.custom::before {
240
+ line-height: 20px;
241
+ font-size: 20px;
242
+ content: '\2605';
243
+ color: #726204;
244
+ }
245
+ .slider-tick.in-selection {
246
+ background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%);
247
+ background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%);
248
+ background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%);
249
+ background-repeat: repeat-x;
250
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0);
251
+ opacity: 1;
252
+ }