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,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
+ }