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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/LICENSE +29 -0
- data/README.md +91 -0
- data/bin/kamishibai +59 -0
- data/changelogs.txt +6 -0
- data/images/reading.jpg +0 -0
- data/images/settings.jpg +0 -0
- data/images/view_browse.jpg +0 -0
- data/images/view_dir.jpg +0 -0
- data/kamishibai.gemspec +31 -0
- data/lib/kamishibai.rb +35 -0
- data/lib/kamishibai/book.rb +97 -0
- data/lib/kamishibai/config.rb +90 -0
- data/lib/kamishibai/database.rb +330 -0
- data/lib/kamishibai/functions.rb +332 -0
- data/lib/kamishibai/patches.rb +58 -0
- data/lib/kamishibai/version.rb +7 -0
- data/lib/kamishibai/webserver.rb +502 -0
- data/lib/kamishibai/webserver_cmds.rb +26 -0
- data/lib/kamishibai/webserver_config.rb +91 -0
- data/lib/kamishibai/webserver_filemanager.rb +29 -0
- data/lib/kamishibai/webserver_tablet.rb +259 -0
- data/lib/kamishibai/workers.rb +39 -0
- data/public/css/browse.css +390 -0
- data/public/css/config.css +3 -0
- data/public/css/reader.css +119 -0
- data/public/css/styles.css +30 -0
- data/public/css/tablet_browse.css +247 -0
- data/public/css/tablet_reader.css +323 -0
- data/public/css/tablet_reader_input.css +191 -0
- data/public/images/ajax-loader.gif +0 -0
- data/public/images/delete.png +0 -0
- data/public/images/folder-mini-up.png +0 -0
- data/public/images/folder-mini.png +0 -0
- data/public/images/spinner.gif +0 -0
- data/public/images/trash-empty-mini.png +0 -0
- data/public/images/trash-full-mini.png +0 -0
- data/public/js/browse.js +391 -0
- data/public/js/config.js +190 -0
- data/public/js/reader.js +497 -0
- data/public/js/swipeview-k.js +478 -0
- data/public/js/tablet3.js +241 -0
- data/public/js/tablet3_browse.js +173 -0
- data/public/js/tablet3_reader.js +534 -0
- data/public/js/utilities.js +170 -0
- data/public/lang/k-cn.json +82 -0
- data/public/lang/k-en.json +82 -0
- data/public/lang/k-ja.json +82 -0
- data/public/vendor/css/bootstrap-slider.css +252 -0
- data/public/vendor/css/bootstrap-theme.css +476 -0
- data/public/vendor/css/bootstrap-theme.css.map +1 -0
- data/public/vendor/css/bootstrap-theme.min.css +5 -0
- data/public/vendor/css/bootstrap.css +6584 -0
- data/public/vendor/css/bootstrap.css.map +1 -0
- data/public/vendor/css/bootstrap.min.css +5 -0
- data/public/vendor/css/jquery-ui-1.10.0.custom.css +1614 -0
- data/public/vendor/css/jquery.mobile-1.3.1.min.css +3 -0
- data/public/vendor/css/jqueryFileTree.css +91 -0
- data/public/vendor/fonts/glyphicons-halflings-regular.eot +0 -0
- data/public/vendor/fonts/glyphicons-halflings-regular.svg +288 -0
- data/public/vendor/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/public/vendor/fonts/glyphicons-halflings-regular.woff +0 -0
- data/public/vendor/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/public/vendor/images/application.png +0 -0
- data/public/vendor/images/code.png +0 -0
- data/public/vendor/images/css.png +0 -0
- data/public/vendor/images/db.png +0 -0
- data/public/vendor/images/dim.png +0 -0
- data/public/vendor/images/directory.png +0 -0
- data/public/vendor/images/doc.png +0 -0
- data/public/vendor/images/file.png +0 -0
- data/public/vendor/images/film.png +0 -0
- data/public/vendor/images/flash.png +0 -0
- data/public/vendor/images/folder_open.png +0 -0
- data/public/vendor/images/grey.png +0 -0
- data/public/vendor/images/html.png +0 -0
- data/public/vendor/images/icons-18-black.png +0 -0
- data/public/vendor/images/icons-18-white.png +0 -0
- data/public/vendor/images/icons-36-black.png +0 -0
- data/public/vendor/images/icons-36-white.png +0 -0
- data/public/vendor/images/java.png +0 -0
- data/public/vendor/images/linux.png +0 -0
- data/public/vendor/images/music.png +0 -0
- data/public/vendor/images/pdf.png +0 -0
- data/public/vendor/images/php.png +0 -0
- data/public/vendor/images/picture.png +0 -0
- data/public/vendor/images/ppt.png +0 -0
- data/public/vendor/images/psd.png +0 -0
- data/public/vendor/images/ruby.png +0 -0
- data/public/vendor/images/script.png +0 -0
- data/public/vendor/images/spinner.gif +0 -0
- data/public/vendor/images/txt.png +0 -0
- data/public/vendor/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/public/vendor/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/public/vendor/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/vendor/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/public/vendor/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
- data/public/vendor/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
- data/public/vendor/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/public/vendor/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/vendor/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_20_555555_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_40_0078a3_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_40_ffc73d_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/public/vendor/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/vendor/images/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
- data/public/vendor/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/public/vendor/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/public/vendor/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/public/vendor/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/vendor/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/public/vendor/images/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
- data/public/vendor/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/public/vendor/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/public/vendor/images/ui-bg_inset-soft_25_000000_1x100.png +0 -0
- data/public/vendor/images/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
- data/public/vendor/images/ui-icons_217bc0_256x240.png +0 -0
- data/public/vendor/images/ui-icons_222222_256x240.png +0 -0
- data/public/vendor/images/ui-icons_228ef1_256x240.png +0 -0
- data/public/vendor/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/vendor/images/ui-icons_454545_256x240.png +0 -0
- data/public/vendor/images/ui-icons_469bdd_256x240.png +0 -0
- data/public/vendor/images/ui-icons_4b8e0b_256x240.png +0 -0
- data/public/vendor/images/ui-icons_6da8d5_256x240.png +0 -0
- data/public/vendor/images/ui-icons_888888_256x240.png +0 -0
- data/public/vendor/images/ui-icons_a83300_256x240.png +0 -0
- data/public/vendor/images/ui-icons_cccccc_256x240.png +0 -0
- data/public/vendor/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/vendor/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/public/vendor/images/ui-icons_ef8c08_256x240.png +0 -0
- data/public/vendor/images/ui-icons_f9bd01_256x240.png +0 -0
- data/public/vendor/images/ui-icons_ffd27a_256x240.png +0 -0
- data/public/vendor/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/vendor/images/xls.png +0 -0
- data/public/vendor/images/zip.png +0 -0
- data/public/vendor/js/bootstrap-slider.js +1550 -0
- data/public/vendor/js/bootstrap.js +2317 -0
- data/public/vendor/js/bootstrap.min.js +7 -0
- data/public/vendor/js/jquery-2.1.4.js +9210 -0
- data/public/vendor/js/jquery-2.1.4.min.js +4 -0
- data/public/vendor/js/jquery-2.1.4.min.map +1 -0
- data/public/vendor/js/jquery-ui-1.10.2.custom.min.js +7 -0
- data/public/vendor/js/jquery.cookie.js +72 -0
- data/public/vendor/js/jquery.hammer.min.js +7 -0
- data/public/vendor/js/jquery.lazyload.min.js +15 -0
- data/public/vendor/js/jquery.localize.js +180 -0
- data/public/vendor/js/jquery.mobile-1.3.1.min.js +7 -0
- data/public/vendor/js/jquery.scrollTo-1.4.3.1.js +218 -0
- data/public/vendor/js/jqueryFileTree.js +95 -0
- data/public/vendor/js/swipeview.js +471 -0
- data/views/browse.haml +97 -0
- data/views/config.haml +115 -0
- data/views/layout.haml +12 -0
- data/views/login.haml +51 -0
- data/views/reader.haml +70 -0
- data/views/statistics.haml +108 -0
- data/views/tablet3.haml +80 -0
- metadata +334 -0
data/public/js/config.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
License: refer to LICENSE file
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* On page load functions
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// global variables
|
|
10
|
+
var g_prefs = new Object();
|
|
11
|
+
var hasFocus = false;
|
|
12
|
+
|
|
13
|
+
$(function(e) {
|
|
14
|
+
// on page init
|
|
15
|
+
|
|
16
|
+
// load the text localization
|
|
17
|
+
reload_locale();
|
|
18
|
+
|
|
19
|
+
// load drives
|
|
20
|
+
for (i in drives) {
|
|
21
|
+
var c = "load_dir('" + drives[i] + "/')";
|
|
22
|
+
$('#drives').append("<button class='btn' onclick=\"" + c + ";\">" + drives[i] + "</span>");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
load_dirs();
|
|
26
|
+
|
|
27
|
+
// refresh # of books every 6 seconds
|
|
28
|
+
interval_total_books = setInterval( function() { total_books(); }, 6000 );
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// know if browser tab is focused or not
|
|
32
|
+
$(window).focus(function() {
|
|
33
|
+
hasFocus = true;
|
|
34
|
+
})
|
|
35
|
+
.blur(function() {
|
|
36
|
+
hasFocus = false;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
function load_dirs() {
|
|
40
|
+
$.getScript("/config?get=srcs", function(data) {
|
|
41
|
+
var dirs = eval(data);
|
|
42
|
+
|
|
43
|
+
for (i in dirs) {
|
|
44
|
+
af_add_dir( dirs[i] );
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function total_books() {
|
|
50
|
+
if (hasFocus) {
|
|
51
|
+
$.get("/config?get=total_books", function(data) {
|
|
52
|
+
$('#total_books').html(data + ' ');
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Preference functions
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
function pref_load() {
|
|
63
|
+
$.getScript("/config?get=prefs", function(data) {
|
|
64
|
+
if (data != "") {
|
|
65
|
+
$('#new_book_days').val( g_prefs['new_book_days'] ).prop('disabled',false);
|
|
66
|
+
$('#port').val( g_prefs['port'] ).prop('disabled',false);
|
|
67
|
+
$('#username').val( g_prefs['user'] ).prop('disabled',false);
|
|
68
|
+
$('#password').val( g_prefs['pass'] ).prop('disabled',false);
|
|
69
|
+
$('#img_quality').val( g_prefs['quality'] ).prop('disabled',false);
|
|
70
|
+
|
|
71
|
+
if ( g_prefs['resize'] ) {
|
|
72
|
+
$('[name=img_resize]').val('on');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
$('[name=img_resize]').val('off');
|
|
76
|
+
}
|
|
77
|
+
$('#img_resize').prop('disabled',false);
|
|
78
|
+
|
|
79
|
+
$('#pref-save').prop('disabled',false);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function pref_save() {
|
|
85
|
+
var port = $('#port').val();
|
|
86
|
+
if ( port < 1024 || port >= 65535 ) {
|
|
87
|
+
alert( $('#alertPort').text() );
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var quality = $('#img_quality').val();
|
|
92
|
+
if ( quality < 0 || quality > 100 ) {
|
|
93
|
+
alert( $('#alertImageQuality').text() );
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// redirect page if port is different
|
|
98
|
+
if ( parseInt( g_prefs['port'] ) != parseInt( $('#port').val() ) ) {
|
|
99
|
+
var wdl = window.document.location;
|
|
100
|
+
setTimeout( function() {
|
|
101
|
+
// window.location.href = wdl.protocol + '//' + wdl.hostname + ':' + nport + wdl.pathname;
|
|
102
|
+
window.location.href = wdl.protocol + '//' + wdl.hostname + ':' + nport + '/';
|
|
103
|
+
}, 1500);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// go back to browse
|
|
107
|
+
setTimeout(function() {
|
|
108
|
+
window.location.href = '/';
|
|
109
|
+
}, 1600);
|
|
110
|
+
|
|
111
|
+
$.post("/config", {
|
|
112
|
+
set: 'prefs',
|
|
113
|
+
port: port,
|
|
114
|
+
user: $('#username').val(),
|
|
115
|
+
pass: $('#password').val(),
|
|
116
|
+
resize: $('#img_resize').val(),
|
|
117
|
+
quality: quality,
|
|
118
|
+
new_book_days: $('#new_book_days').val()
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* Add Folder Dialog functions
|
|
124
|
+
*/
|
|
125
|
+
function af_close() {
|
|
126
|
+
$('#addfolder').css('display','none');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function load_dir(dir) {
|
|
130
|
+
$('#af-dirnav').fileTree(
|
|
131
|
+
{
|
|
132
|
+
root: dir,
|
|
133
|
+
script: '/jqueryFileTree',
|
|
134
|
+
expandSpeed: 1,
|
|
135
|
+
collapseSpeed: 1,
|
|
136
|
+
multiFolder: false
|
|
137
|
+
}, function(file) {
|
|
138
|
+
alert(file);
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// dir selected from filetree
|
|
144
|
+
function selected_dir(dir) {
|
|
145
|
+
$('#path').val(dir);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Add Folder
|
|
149
|
+
function af_add_dir(dir) {
|
|
150
|
+
var elem = $('<tr/>');
|
|
151
|
+
|
|
152
|
+
$('<td/>',{
|
|
153
|
+
'class': 'c1 srcdir',
|
|
154
|
+
'text': dir
|
|
155
|
+
}).appendTo(elem);
|
|
156
|
+
|
|
157
|
+
$('<td/>',{
|
|
158
|
+
'class': 'c2',
|
|
159
|
+
'html': '<a href="#" onclick="af_rm_dir(this);" data-localize="config.RemoveFolder"></a>'
|
|
160
|
+
}).appendTo(elem);
|
|
161
|
+
|
|
162
|
+
elem.appendTo('tbody');
|
|
163
|
+
|
|
164
|
+
reload_locale();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Remove Folders
|
|
168
|
+
function af_rm_dir(elem) {
|
|
169
|
+
$( $(elem) ).parent().parent().remove();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Save Folders (to SRCS)
|
|
173
|
+
function save_dirs() {
|
|
174
|
+
var elems = $('.srcdir');
|
|
175
|
+
var dirs = '';
|
|
176
|
+
|
|
177
|
+
for (var i=0; i < elems.length; i++) {
|
|
178
|
+
dirs += elems.eq(i).text() + '||||';
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// go back to browse
|
|
182
|
+
setTimeout(function() {
|
|
183
|
+
window.location.href = '/';
|
|
184
|
+
}, 1600);
|
|
185
|
+
|
|
186
|
+
$.post("/config", {
|
|
187
|
+
set: 'srcs',
|
|
188
|
+
srcs: dirs
|
|
189
|
+
});
|
|
190
|
+
}
|
data/public/js/reader.js
ADDED
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
License: refer to LICENSE file
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// bookcode
|
|
6
|
+
var bookcode = getHashParams()['book'];
|
|
7
|
+
|
|
8
|
+
// initialize book variables
|
|
9
|
+
var maxpage;
|
|
10
|
+
var booktitle;
|
|
11
|
+
|
|
12
|
+
// load bookinfo
|
|
13
|
+
document.write("<script src=\"/bookinfo/" + bookcode + "\"><\/script>");
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
// record the cookie
|
|
17
|
+
$.cookie('lastbook' + uport(), bookcode, { path: '/' });
|
|
18
|
+
|
|
19
|
+
// get the hash for the page
|
|
20
|
+
function getpage() {
|
|
21
|
+
var i = parseInt( getHashParams()['page'] );
|
|
22
|
+
|
|
23
|
+
if (typeof i == "number" && ! isNaN(i) ) {
|
|
24
|
+
return i;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return -1;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
$(window).bind('hashchange', function(e) {
|
|
32
|
+
$('#pageslider').slider('value', getpage());
|
|
33
|
+
reload_images();
|
|
34
|
+
preload_images();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
var $slider_flag = false;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
$(function() {
|
|
42
|
+
// page init
|
|
43
|
+
|
|
44
|
+
// setup book variable
|
|
45
|
+
maxpage = book.pages;
|
|
46
|
+
booktitle = book.title;
|
|
47
|
+
|
|
48
|
+
// load the text localization
|
|
49
|
+
reload_locale();
|
|
50
|
+
|
|
51
|
+
// set book title on menu
|
|
52
|
+
$('#booktitle').html('<h2>' + booktitle + '</h2>');
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// set even/odd tab and min value
|
|
56
|
+
if (getpage() == -1 || getpage() % 2 == 0) {
|
|
57
|
+
$('#pageeven').click();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
$('#pageodd').click();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
// setup page slider
|
|
65
|
+
$('#pageslider').slider({
|
|
66
|
+
range: 'min',
|
|
67
|
+
min: 0,
|
|
68
|
+
max: maxpage,
|
|
69
|
+
step: 2,
|
|
70
|
+
value: getpage(),
|
|
71
|
+
slide: function(event,ui) {
|
|
72
|
+
$('#pageslider-value').val( ui.value );
|
|
73
|
+
},
|
|
74
|
+
start: function(event,ui) {
|
|
75
|
+
$slider_flag = true
|
|
76
|
+
},
|
|
77
|
+
stop: function(event,ui) {
|
|
78
|
+
window.location.hash = fullhash( ui.value );
|
|
79
|
+
$slider_flag = false;
|
|
80
|
+
},
|
|
81
|
+
change: function(event,ui) {
|
|
82
|
+
$('#pageslider-value').val( $('#pageslider').slider('value') );
|
|
83
|
+
|
|
84
|
+
if ($slider_flag) return false;
|
|
85
|
+
window.location.hash = fullhash( ui.value );
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
$('#pageslider-value').val( $('#pageslider').slider('value') );
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if (getpage() == -1) {
|
|
92
|
+
window.location.hash = fullhash( 0 );
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// wait until jquery ui fully loaded, then setup page, or some stuff isn't displayed properly
|
|
96
|
+
reload_images();
|
|
97
|
+
preload_images();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
/* setup button functions */
|
|
102
|
+
$('#pagemode')
|
|
103
|
+
.buttonset()
|
|
104
|
+
.change(function(e) {
|
|
105
|
+
/* setting using mouse function and a time delay, or it won't work
|
|
106
|
+
* bug is probably cause by double trigger and transition time, if it is responded immediately, the called radio will still be stuck at previous selection
|
|
107
|
+
*/
|
|
108
|
+
var elem = $('#pageslider');
|
|
109
|
+
if (isSinglePageMode()) {
|
|
110
|
+
// set slider step by 1
|
|
111
|
+
elem.slider('option', 'step', 1);
|
|
112
|
+
|
|
113
|
+
// disable set of buttons
|
|
114
|
+
disable_buttons();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// set slider step by 2
|
|
118
|
+
elem.slider('option', 'step', 2);
|
|
119
|
+
|
|
120
|
+
// enable set of buttons
|
|
121
|
+
enable_buttons();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// load images
|
|
125
|
+
reload_images();
|
|
126
|
+
});
|
|
127
|
+
$('#itemsheight')
|
|
128
|
+
.buttonset()
|
|
129
|
+
.change(function(e) {
|
|
130
|
+
if (isNormalHeight()) {
|
|
131
|
+
/* change to normal height */
|
|
132
|
+
$('#pagemode').buttonset('enable');
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
/* change to full height */
|
|
136
|
+
$('#singlepage').click();
|
|
137
|
+
$('#pagemode').buttonset('disable');
|
|
138
|
+
}
|
|
139
|
+
reload_images();
|
|
140
|
+
});
|
|
141
|
+
$('#readdirection')
|
|
142
|
+
.buttonset()
|
|
143
|
+
.change(function(e) {
|
|
144
|
+
reload_images();
|
|
145
|
+
});
|
|
146
|
+
$('#primarypage')
|
|
147
|
+
.buttonset()
|
|
148
|
+
.change(function(e) {
|
|
149
|
+
console.log('primary change');
|
|
150
|
+
|
|
151
|
+
// making the page even or odd page primary
|
|
152
|
+
if (isEvenPage()) {
|
|
153
|
+
$('#pageslider').slider('option', 'min', 0);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
$('#pageslider').slider('option', 'min', 1);
|
|
157
|
+
}
|
|
158
|
+
reload_images();
|
|
159
|
+
});
|
|
160
|
+
$('#barmode')
|
|
161
|
+
.buttonset()
|
|
162
|
+
.change(function(e) {
|
|
163
|
+
reload_images();
|
|
164
|
+
});
|
|
165
|
+
$('#closemenu')
|
|
166
|
+
.button()
|
|
167
|
+
.click( function(e) {
|
|
168
|
+
window.setTimeout( function() { hidemenu(); }, 50 );
|
|
169
|
+
});
|
|
170
|
+
$('#gohome')
|
|
171
|
+
.button()
|
|
172
|
+
.click( function(e) {
|
|
173
|
+
window.setTimeout( function() { goHomepage(); }, 50 );
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
function reload_images() {
|
|
179
|
+
window.setTimeout( function() { exec_reload_images(); }, 50 );
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function exec_reload_images() {
|
|
183
|
+
// change title
|
|
184
|
+
document.title = "(" + getpage() + "/" + maxpage + ")";
|
|
185
|
+
|
|
186
|
+
// set bookmark
|
|
187
|
+
setbookmark();
|
|
188
|
+
|
|
189
|
+
// set pageslider's min base on page
|
|
190
|
+
if (isEvenPage()) {
|
|
191
|
+
$('#pageslider').slider('option', 'min', 0);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
$('#pageslider').slider('option', 'min', 1);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// set the page to make slider call changes and set the appropriate page
|
|
198
|
+
$('#pageslider').slider('value', getpage());
|
|
199
|
+
|
|
200
|
+
// remove image first then add, instead of changing image source ( otherwise image resize won't work)
|
|
201
|
+
$('#ileft').remove();
|
|
202
|
+
$('#ibar').remove();
|
|
203
|
+
$('#iright').remove();
|
|
204
|
+
|
|
205
|
+
// set icontainer height
|
|
206
|
+
if (isNormalHeight()) {
|
|
207
|
+
$('#icontainer').addClass('icontainer-normal_height');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
$('#icontainer').removeClass('icontainer-normal_height');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// add left page
|
|
214
|
+
if (isSinglePageMode()) {
|
|
215
|
+
//** single page mode **//
|
|
216
|
+
$('<img />').attr('id','ileft').appendTo('#icontainer');
|
|
217
|
+
$('#ileft').css('display','none');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
//** dual page mode **//
|
|
221
|
+
if (isEasternBook()) {
|
|
222
|
+
$('<img />').attr('id','ileft').attr("src", "/cbz/" + bookcode + "/" + (getpage() + 1) ).appendTo('#icontainer');
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
$('<img />').attr('id','ileft').attr("src", "/cbz/" + bookcode + "/" + getpage() ).appendTo('#icontainer');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// set the left image height
|
|
229
|
+
if (isNormalHeight()) $('#ileft').addClass('normal_height');
|
|
230
|
+
|
|
231
|
+
// black bar mode
|
|
232
|
+
if (isBlackBared()) {
|
|
233
|
+
// with black bar
|
|
234
|
+
$('<div></div>').attr('id','ibar').css('display','inline-block').appendTo('#icontainer');
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// without black bar
|
|
238
|
+
$('<div></div>').attr('id','ibar').css('display','none').appendTo('#icontainer');
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// add right image
|
|
242
|
+
if (isEasternBook()) {
|
|
243
|
+
$('<img />').attr('id','iright').attr("src", "/cbz/" + bookcode + "/" + getpage() ).appendTo('#icontainer');
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
$('<img />').attr('id','iright').attr("src", "/cbz/" + bookcode + "/" + (getpage() + 1) ).appendTo('#icontainer');
|
|
247
|
+
}
|
|
248
|
+
// set the right image height
|
|
249
|
+
if (isNormalHeight()) {
|
|
250
|
+
$('#iright').addClass('normal_height');
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
$('#iright').addClass('full_height');
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
// adjust image dimention to compesate the single or dual page mode
|
|
258
|
+
if (isSinglePageMode()) {
|
|
259
|
+
// single page
|
|
260
|
+
$('#iright').css('width','100%');
|
|
261
|
+
$('#iright').css('height','100%');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// adjust image width to compensate the bar
|
|
265
|
+
if (isBlackBared()) {
|
|
266
|
+
$('#ileft').css('width','49%');
|
|
267
|
+
$('#iright').css('width','49%');
|
|
268
|
+
}
|
|
269
|
+
*/
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
function isEasternBook() {
|
|
273
|
+
return ( $('#readdirection :radio:checked').attr('id') == 'readtoleft' ) ? true : false;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function isNormalHeight() {
|
|
277
|
+
return ( $('#itemsheight :radio:checked').attr('id') == 'normalheight' ) ? true : false;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
function isEvenPage() {
|
|
281
|
+
return ( $('#primarypage :radio:checked').attr('id') == 'pageeven' ) ? true : false;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
function isOddPage() {
|
|
285
|
+
return ( $('#primarypage :radio:checked').attr('id') == 'pageodd' ) ? true : false;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function isSinglePageMode() {
|
|
289
|
+
return ( $('#pagemode :radio:checked').attr('id') == 'singlepage' ) ? true : false;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function isBlackBared() {
|
|
293
|
+
return ( $('#barmode :radio:checked').attr('id') == 'yesbar' ) ? true : false;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
function disable_buttons() {
|
|
297
|
+
// reset and disable black bar
|
|
298
|
+
$('#nobar').click();
|
|
299
|
+
$('#barmode').buttonset('disable');
|
|
300
|
+
|
|
301
|
+
// disable page even / odd mode
|
|
302
|
+
$("#primarypage").buttonset('disable');
|
|
303
|
+
|
|
304
|
+
// disable read direction
|
|
305
|
+
$("#readdirection").buttonset('disable');
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function enable_buttons() {
|
|
309
|
+
// enable black bar
|
|
310
|
+
$('#barmode').buttonset('enable');
|
|
311
|
+
|
|
312
|
+
// enable page even / odd mode
|
|
313
|
+
$('#primarypage').buttonset('enable');
|
|
314
|
+
|
|
315
|
+
// enable readdirection
|
|
316
|
+
$('#readdirection').buttonset('enable');
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
// keyboard commands
|
|
322
|
+
document.onkeydown = function(e) {
|
|
323
|
+
e = e || window.event;
|
|
324
|
+
|
|
325
|
+
switch (e.keyCode) {
|
|
326
|
+
case 39:
|
|
327
|
+
// right key, next page
|
|
328
|
+
goNextPages();
|
|
329
|
+
break;
|
|
330
|
+
case 32:
|
|
331
|
+
// space key, next page
|
|
332
|
+
goNextPages();
|
|
333
|
+
break;
|
|
334
|
+
case 37:
|
|
335
|
+
// left key, previous page
|
|
336
|
+
goPrevPages();
|
|
337
|
+
break;
|
|
338
|
+
case 49:
|
|
339
|
+
// 1 key, previous page
|
|
340
|
+
goPrevPages();
|
|
341
|
+
break;
|
|
342
|
+
case 27:
|
|
343
|
+
// escape key
|
|
344
|
+
goHomepage();
|
|
345
|
+
// catch this key, stopping the use of escape key from other function/program
|
|
346
|
+
return false;
|
|
347
|
+
break;
|
|
348
|
+
case 192:
|
|
349
|
+
// ` key, show/hide menu
|
|
350
|
+
if (($('#menu').css('display')) == 'none') {
|
|
351
|
+
showmenu();
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
hidemenu();
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
case 13:
|
|
358
|
+
// enter key, show/hide menu
|
|
359
|
+
if (($('#menu').css('display')) == 'none') {
|
|
360
|
+
showmenu();
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
hidemenu();
|
|
364
|
+
}
|
|
365
|
+
break;
|
|
366
|
+
case 65:
|
|
367
|
+
// a key, normal or full height image
|
|
368
|
+
if (isNormalHeight()) {
|
|
369
|
+
/* change to full height */
|
|
370
|
+
$('#fullheight').click();
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
/* change to normal height */
|
|
374
|
+
$('#normalheight').click();
|
|
375
|
+
}
|
|
376
|
+
break;
|
|
377
|
+
case 83:
|
|
378
|
+
// s key, single or double page mode
|
|
379
|
+
if (isSinglePageMode()) {
|
|
380
|
+
$('#doublepage').click();
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
$('#singlepage').click();
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
case 69:
|
|
387
|
+
// e key, eastern or western book mode
|
|
388
|
+
if (isSinglePageMode()) break;
|
|
389
|
+
|
|
390
|
+
if (isEasternBook()) {
|
|
391
|
+
$('#readtoright').click();
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
$('#readtoleft').click();
|
|
395
|
+
}
|
|
396
|
+
break;
|
|
397
|
+
case 66:
|
|
398
|
+
// b key, with or without black bar
|
|
399
|
+
if (isSinglePageMode()) break;
|
|
400
|
+
|
|
401
|
+
if (isBlackBared()) {
|
|
402
|
+
$('#nobar').click();
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
$('#yesbar').click();
|
|
406
|
+
}
|
|
407
|
+
break;
|
|
408
|
+
case 86:
|
|
409
|
+
// v key, even or odd page as primary page
|
|
410
|
+
if (isSinglePageMode()) break;
|
|
411
|
+
|
|
412
|
+
if (isEvenPage()) {
|
|
413
|
+
$('#pageodd').click();
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
$('#pageeven').click();
|
|
417
|
+
}
|
|
418
|
+
break;
|
|
419
|
+
}
|
|
420
|
+
// catch/disable all other keys
|
|
421
|
+
//return false;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
function goHomepage() {
|
|
426
|
+
var page = $.cookie('lastbrowse' + uport());
|
|
427
|
+
|
|
428
|
+
if (page == undefined) {
|
|
429
|
+
page = '/';
|
|
430
|
+
}
|
|
431
|
+
window.location.href = page;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function goNextPages() {
|
|
435
|
+
if (getpage() < maxpage) {
|
|
436
|
+
// set increment by 1 or 2 base on page mode
|
|
437
|
+
var i = isSinglePageMode() ? 1 : 2;
|
|
438
|
+
|
|
439
|
+
// change page by changing the slider, otherwise the navigation will have unpredictable or buggy behaviour
|
|
440
|
+
$('#pageslider').slider('value', getpage() + i );
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function goPrevPages() {
|
|
445
|
+
if (getpage() > 1) {
|
|
446
|
+
// set increment by 1 or 2 base on page mode
|
|
447
|
+
var i = isSinglePageMode() ? 1 : 2;
|
|
448
|
+
|
|
449
|
+
// change page by changing the slider, otherwise the navigation will have unpredictable or buggy behaviour
|
|
450
|
+
$('#pageslider').slider('value', getpage() - i );
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
function showmenu() {
|
|
455
|
+
$('#menu').css('display','block');
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
function hidemenu() {
|
|
459
|
+
$('#menu').css('display','none');
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// function to preload images
|
|
463
|
+
function preload(arrayOfImages) {
|
|
464
|
+
// remove old element
|
|
465
|
+
$('.pl_image').remove();
|
|
466
|
+
|
|
467
|
+
// append new hidden image element
|
|
468
|
+
$(arrayOfImages).each( function() {
|
|
469
|
+
$('<img />').attr('src',this).appendTo('body').css('display','none').addClass('pl_image');
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
function preload_images() {
|
|
474
|
+
// precaching images for fast loading
|
|
475
|
+
|
|
476
|
+
var images = [
|
|
477
|
+
"/cbz/" + bookcode + "/" + (getpage() + 2),
|
|
478
|
+
"/cbz/" + bookcode + "/" + (getpage() + 3)
|
|
479
|
+
];
|
|
480
|
+
|
|
481
|
+
preload(images);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// set the bookmark
|
|
485
|
+
function setbookmark() {
|
|
486
|
+
$.ajax({
|
|
487
|
+
url: "/setbookmark/" + bookcode + "/" + getpage(),
|
|
488
|
+
beforeSend: function ( xhr ) {
|
|
489
|
+
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
|
490
|
+
}
|
|
491
|
+
}).done(function ( data ) {
|
|
492
|
+
if( 1==2 && console && console.log ) {
|
|
493
|
+
console.log("Sample of data:", data);
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
|