1
0
mirror of https://github.com/lrsjng/h5ai.git synced 2025-09-02 02:12:43 +02:00

Compare commits

..

298 Commits

Author SHA1 Message Date
Lars Jung
c612fbcfb7 Push version. 2015-12-19 18:12:31 +01:00
Lars Jung
11c86c7031 Update deps. 2015-12-19 17:52:36 +01:00
Lars Jung
e2ffb09ed1 Merge pull request #478 from m0vie/php-tar-dir-mtime
php-tar: store mtime of directories
2015-12-19 17:09:11 +01:00
Lars Jung
77f1a073a7 Merge pull request #457 from Kleofass/patch-1
Update lv.json
2015-12-19 17:07:51 +01:00
Lars Jung
168ead7ed5 Update package. 2015-12-19 17:07:17 +01:00
Lars Jung
0e5b463acf Update deps. Fix version string. 2015-12-19 17:01:45 +01:00
Lars Jung
2e8ae301c5 Remove stamp. 2015-12-13 22:23:40 +01:00
Lars Jung
ab622d5cd2 Update deps. 2015-12-11 23:13:00 +01:00
Lars Jung
a6e6cf96d6 Update readme. 2015-11-19 00:07:25 +01:00
Lars Jung
58b4d20185 Update readme. 2015-11-18 23:39:28 +01:00
Lars Jung
39ea94daa8 Fix a lot eslint errors. 2015-11-18 23:16:58 +01:00
Lars Jung
0c6143704a Switch to ghu and eslint. 2015-11-18 17:27:16 +01:00
Lars Jung
5d0770ca36 Update. 2015-10-24 20:04:44 +02:00
Lars Jung
1ae45f6cbb Breaking changes. 2015-10-24 19:20:31 +02:00
m0vie
eb69d73190 php-tar: store mtime of directories 2015-10-14 21:00:04 +02:00
Lars Jung
2b2656b7e1 Minor. 2015-07-01 23:56:20 +02:00
Lars Jung
6c7e3e8c5d Update test desc. 2015-06-14 16:04:11 +02:00
Lars Jung
063049ec8e Fix tests. 2015-06-14 15:32:01 +02:00
Lars Jung
787eae7a80 Update tests. 2015-06-14 15:24:05 +02:00
Kleofass
5b1b8e0b2d Update lv.json 2015-06-05 10:21:31 +03:00
Lars Jung
18a62ca831 Revert. 2015-05-31 21:21:32 +02:00
Lars Jung
de0b2eedc9 Test. 2015-05-31 21:03:33 +02:00
Lars Jung
d7b389e407 Refactor IE check. 2015-05-30 20:26:38 +02:00
Lars Jung
14825ebe29 Update lodash to 3.9.3, use modern build. 2015-05-29 16:12:22 +02:00
Lars Jung
34aeac9787 Replace modernizr with custom setup. 2015-05-29 15:27:44 +02:00
Lars Jung
fc3f84da6e Clean code. 2015-05-29 12:08:43 +02:00
Lars Jung
6ed6819cef Maintenance. 2015-05-23 02:45:15 +02:00
Lars Jung
370bb3b068 Update readme. 2015-05-21 02:41:27 +02:00
Lars Jung
570431e39c Fix fseek filesize. 2015-05-21 00:33:54 +02:00
Lars Jung
efc4623a0b Minor changes. 2015-05-20 22:44:08 +02:00
Lars Jung
65d8aab429 Clean code. 2015-05-20 22:13:04 +02:00
Lars Jung
6c9d480736 Start filesize refactoring. 2015-05-20 18:41:48 +02:00
Lars Jung
9fde25fc8e Tweaks. 2015-05-20 03:25:15 +02:00
Lars Jung
e6a59ae6d0 Update readme. 2015-05-20 02:54:55 +02:00
Lars Jung
5b68fe731a Reorganize file structure. 2015-05-20 02:54:01 +02:00
Lars Jung
c8eff2d313 Reorganize file structure. 2015-05-20 01:53:56 +02:00
Lars Jung
74745a8603 Tweaks. 2015-05-20 00:45:43 +02:00
Lars Jung
0aadd1add9 Tweaks. 2015-05-20 00:12:29 +02:00
Lars Jung
b3f61f81e2 Add icons. 2015-05-18 00:17:17 +02:00
Lars Jung
90befd2b8e Add txt-pdf icon. 2015-05-17 20:22:07 +02:00
Lars Jung
bf5483950c Update types. 2015-05-17 18:52:40 +02:00
Lars Jung
bd7e005c91 Update crumb styles. 2015-05-17 18:08:57 +02:00
Lars Jung
e08cbb4c96 Merge pull request #442 from jerryjacobs/type-add-golang
Add golang syntax highlight.
2015-05-17 18:07:04 +02:00
Lars Jung
c93df78f1d Merge pull request #446 from bskim45/patch-2
Updated ko.json
2015-05-17 18:06:34 +02:00
Lars Jung
bfb1be8aa5 Fix fallback styles. Update fallback and favicons. 2015-05-17 17:15:06 +02:00
Lars Jung
86466f072b Fix preview label issue. 2015-05-17 16:31:15 +02:00
Lars Jung
b33599f4f2 Fix preview label issue. 2015-05-17 16:27:53 +02:00
Lars Jung
d0f29ec3cf New default theme. New theme comity. 2015-05-17 16:20:06 +02:00
Bumsoo Kim
be7626b698 Updated ko.json 2015-05-17 18:08:28 +09:00
Lars Jung
01b1a8e029 Update text preview. 2015-05-17 02:28:39 +02:00
Lars Jung
09fa3acc4d Update text preview. 2015-05-17 00:16:31 +02:00
Lars Jung
04d9296733 Update tests. 2015-05-16 22:15:54 +02:00
Lars Jung
0b57b1cbd2 Clean code. 2015-05-16 21:48:27 +02:00
Lars Jung
0a843a0b1f Refactor browser check. 2015-05-16 21:36:05 +02:00
Lars Jung
8d3611e30c Update changelog. 2015-05-16 15:34:11 +02:00
Lars Jung
76c226c57b Add ignorecase option to tree. 2015-05-16 14:28:54 +02:00
Lars Jung
673afead73 Update styles. 2015-05-16 05:17:08 +02:00
Lars Jung
8e5b874490 Update styles. 2015-05-16 05:05:22 +02:00
Lars Jung
d9ea66ef85 Clean font css. Add font options. 2015-05-16 04:39:19 +02:00
Lars Jung
fbd9db897e Add extensions dir. 2015-05-16 03:11:09 +02:00
Lars Jung
1995acab95 Add improved PHP JSON parsing. Add option to add resources. 2015-05-16 03:03:17 +02:00
Lars Jung
fe9c7587d8 Add maxIconSize option. 2015-05-15 01:17:00 +02:00
Lars Jung
9eb29b5707 Fix theme. 2015-05-14 22:11:57 +02:00
Lars Jung
99462d0ae0 Add gm support for PDF thumbs. 2015-05-14 19:00:10 +02:00
Lars Jung
89d56b3ae4 Update mode toggle. 2015-05-14 18:04:39 +02:00
Lars Jung
a61dea8c40 Update tests. 2015-05-14 17:37:35 +02:00
Lars Jung
cc4bb962a6 Add non-public cache. 2015-05-14 17:33:54 +02:00
Lars Jung
0a3d085c5a Update readme and changelog. 2015-05-14 15:32:51 +02:00
Lars Jung
17b5d4dfaa Remove version from settings. 2015-05-14 14:50:51 +02:00
Lars Jung
95f087cfd6 Refactor info page. 2015-05-14 14:22:40 +02:00
Lars Jung
9090c28f04 Clean jade markup. 2015-05-14 13:41:13 +02:00
Lars Jung
fe5723f75d Minor changes. 2015-05-14 01:27:32 +02:00
Lars Jung
9637c89b1b Clean code. 2015-05-14 00:33:27 +02:00
Lars Jung
4db158e8d9 Replace appHref with publicHref. 2015-05-14 00:13:22 +02:00
Lars Jung
05547c2685 Update readme. 2015-05-13 23:42:35 +02:00
Lars Jung
4f9a298273 Fix some edge case. 2015-05-13 22:30:38 +02:00
Lars Jung
2a7b1b1f0d Refactor code. 2015-05-13 21:44:56 +02:00
Lars Jung
21014ff788 Clean markup. 2015-05-13 19:04:20 +02:00
Lars Jung
9611aed707 Make Bootstrap static again. 2015-05-13 17:33:43 +02:00
Lars Jung
ae677a2194 Refactor pages. 2015-05-13 16:13:21 +02:00
Lars Jung
f19d9b9419 Fix fatal request error. 2015-05-13 14:11:22 +02:00
Lars Jung
fe6830cd83 Update tests. 2015-05-13 14:09:30 +02:00
Lars Jung
4932dda11c Move passhass to options. 2015-05-13 14:07:21 +02:00
Lars Jung
37fbca2ead Minor changes. 2015-05-13 02:34:11 +02:00
Lars Jung
093296dbac Update tests. 2015-05-13 02:19:39 +02:00
Lars Jung
4f83c95d20 Use own location as API href. 2015-05-13 01:16:21 +02:00
Lars Jung
0f72db1961 Fix image href. 2015-05-13 00:30:35 +02:00
Lars Jung
7063b26a5f Fix some info page styles. 2015-05-13 00:28:32 +02:00
Lars Jung
4889290d3e Minor tweaks. 2015-05-12 22:25:59 +02:00
Lars Jung
b1f88f28f4 Merge index and info routing. 2015-05-12 18:21:30 +02:00
Lars Jung
ee241e7e3f Restructure file base. 2015-05-12 16:08:20 +02:00
Lars Jung
057a5f05a5 Rename app to context. 2015-05-12 14:03:49 +02:00
Lars Jung
06b9232552 Refactor PHP code. 2015-05-12 13:36:29 +02:00
Lars Jung
6258c40a24 Clean PHP code. 2015-05-12 03:26:44 +02:00
Lars Jung
9f53ddd3f3 Clean PHP code. 2015-05-12 02:04:58 +02:00
Lars Jung
e199be6363 Clean PHP code. 2015-05-12 01:18:14 +02:00
Lars Jung
788f4f047c Clean PHP code. 2015-05-12 01:00:45 +02:00
Lars Jung
34f86997cb Clean code. 2015-05-11 23:55:31 +02:00
Lars Jung
291f4e28d8 Refactor PHP. 2015-05-11 23:54:46 +02:00
Lars Jung
8f921c8a1f Refactor PHP. 2015-05-11 23:34:02 +02:00
Lars Jung
8c810a1818 Clean code. 2015-05-11 17:56:01 +02:00
Lars Jung
d07850b6ef Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 13:00:10 +02:00
Lars Jung
cb9b8c6244 Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:47:38 +02:00
Lars Jung
1e11b804ab Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:40:33 +02:00
Lars Jung
0719eeeb90 Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:32:34 +02:00
Lars Jung
f363e78601 Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:27:24 +02:00
Lars Jung
b340fe3569 Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:20:09 +02:00
Lars Jung
429a2b7749 Refactor PHP. Switch to explicit string literals where possible. 2015-05-11 12:14:25 +02:00
Lars Jung
c18b09c658 Refactor PHP. Remove almost all defines. 2015-05-11 11:55:48 +02:00
Lars Jung
7bcb52214b Minor changes. 2015-05-10 16:10:03 +02:00
Lars Jung
34e6c2c381 Minor changes. 2015-05-10 16:09:11 +02:00
Lars Jung
b6b84a541b Refactor code. 2015-05-10 15:09:10 +02:00
Lars Jung
76186e513f Tweaks. 2015-05-10 14:59:08 +02:00
Lars Jung
5930681095 Refactor code. 2015-05-10 13:24:41 +02:00
Lars Jung
1d7457a4a2 Refactor code. 2015-05-10 13:05:39 +02:00
Lars Jung
7503d79c06 Refactor view and viewmode. 2015-05-10 10:58:18 +02:00
Lars Jung
24319e1c49 Refactor PHP. 2015-05-10 02:37:12 +02:00
Lars Jung
48b788eaef Refactor PHP. 2015-05-10 01:39:18 +02:00
Lars Jung
6b071fc1e7 Change test description to make it work standalone. 2015-05-09 20:44:02 +02:00
Lars Jung
942f4696e2 Add tests. 2015-05-09 20:40:30 +02:00
Lars Jung
022f715b98 Add tests. 2015-05-09 20:34:39 +02:00
Lars Jung
7311cc8e4b Add tests for escapePattern and parsePattern. 2015-05-09 19:30:17 +02:00
Jerry Jacobs
7f6755b5de * Add golang syntax highlight 2015-05-09 18:27:29 +02:00
Lars Jung
a482529fdc Refactor code. 2015-05-09 17:33:03 +02:00
Lars Jung
5798529fe2 Refactor code. 2015-05-09 17:27:15 +02:00
Lars Jung
a362356a72 Improve view, filter and search. 2015-05-09 16:29:26 +02:00
Lars Jung
4896d9a101 Update l10n and sort l10n entries. 2015-05-09 02:15:36 +02:00
Lars Jung
d244ab9fca Update l10n and sot l10n entries. 2015-05-09 02:10:55 +02:00
Lars Jung
570599c19d Add debounce option to search. 2015-05-09 01:18:56 +02:00
Lars Jung
a9f6f157fa Fix tests. 2015-05-08 22:13:06 +02:00
Lars Jung
c35abad20a Add search frontend extension, plus refactorings to make it work. 2015-05-08 22:09:12 +02:00
Lars Jung
7f687e0a84 Refactor PHP. 2015-05-07 01:27:02 +02:00
Lars Jung
ea24ae3b5f Refactor PHP. 2015-05-06 23:51:12 +02:00
Lars Jung
55597ae1ba Refactor PHP. 2015-05-06 20:57:18 +02:00
Lars Jung
6ee0ed3444 Refactor code. 2015-05-06 19:12:28 +02:00
Lars Jung
d5a1a829e3 Refactor API. 2015-05-06 18:58:07 +02:00
Lars Jung
5c72378b39 Refactor API, add search. 2015-05-06 17:18:08 +02:00
Lars Jung
e3603cfec1 Change version info. 2015-05-06 14:17:44 +02:00
Lars Jung
90d337a51f Change hash algo to sha512. 2015-05-06 14:12:17 +02:00
Lars Jung
1975715dbd Refactor bootstrap. 2015-05-06 13:11:37 +02:00
Lars Jung
85be66886a Add fast PHP version check and exit. 2015-05-06 12:28:50 +02:00
Lars Jung
d4e349f260 Refactor PHP, 5.3 => 5.4. 2015-05-05 23:58:11 +02:00
Lars Jung
059e166402 Refactor PHP, 5.3 => 5.4. 2015-05-05 23:55:35 +02:00
Lars Jung
1d7c2f3b80 Clean code. 2015-05-05 23:20:37 +02:00
Lars Jung
11c3750690 Refactor custom API. 2015-05-05 21:53:23 +02:00
Lars Jung
808b1bf657 Update thumbnail requests. 2015-05-05 21:01:30 +02:00
Lars Jung
7c4f9d574c Refactor API. 2015-05-05 01:58:50 +02:00
Lars Jung
e31028f5a9 Refactor API. 2015-05-05 00:01:25 +02:00
Lars Jung
0f1ca4e85b Refactor item. 2015-05-03 23:52:49 +02:00
Lars Jung
003b3f3edb Refactor. 2015-05-03 22:11:31 +02:00
Lars Jung
69cc1bd281 Refactor getThumbHref return object. 2015-05-03 21:05:04 +02:00
Lars Jung
31fe4d1591 Clean l10n code. 2015-05-03 20:44:05 +02:00
Lars Jung
675efd6cd3 Refactor url to href, to be more consistent. 2015-05-03 19:36:17 +02:00
Lars Jung
0f0d97dab5 Remove unused definitions. 2015-05-03 17:33:42 +02:00
Lars Jung
4b19239f6f Remove CURRENT_* definitions. 2015-05-03 16:48:53 +02:00
Lars Jung
a74e849faf Reduce CURRENT_PATH deps. 2015-05-03 04:05:42 +02:00
Lars Jung
d0f7f586e8 Clean code. 2015-05-03 03:10:33 +02:00
Lars Jung
3b9e87e11b Refactor code. 2015-05-03 01:52:26 +02:00
Lars Jung
46b335eb9f Refactor code. 2015-05-02 23:38:47 +02:00
Lars Jung
9bdf86fc24 Refactor PHP, restrict setup info. 2015-05-02 22:29:26 +02:00
Lars Jung
167e30dee1 Refactor code. 2015-05-02 20:16:48 +02:00
Lars Jung
16186811a4 Clean code. 2015-05-02 19:45:01 +02:00
Lars Jung
d2031d57d2 Refactor PHP. 2015-05-02 18:01:03 +02:00
Lars Jung
6e54ba2f73 Refactor PHP setup. 2015-05-02 16:52:50 +02:00
Lars Jung
77d6da3a24 Refactor PHP code. 2015-05-02 03:59:22 +02:00
Lars Jung
65caa0fe9d Clean PHP code. 2015-05-02 03:27:24 +02:00
Lars Jung
d6040b028e Clean up and fix. 2015-05-02 02:07:22 +02:00
Lars Jung
509074c263 Add safety check on PHP options lookup. 2015-05-02 01:44:50 +02:00
Lars Jung
6ad53ec2aa Refactor PHP request handling and return codes. 2015-05-01 20:29:36 +02:00
Lars Jung
e275ecac07 Set minimum PHP version to 5.4.0 2015-05-01 18:26:46 +02:00
Lars Jung
2d0cc10e44 Change quotes. 2015-05-01 16:48:20 +02:00
Lars Jung
af6c715a5b Switch API to react to POST only. 2015-05-01 16:16:31 +02:00
Lars Jung
3360e4d167 Minor changes. 2015-05-01 12:33:37 +02:00
Lars Jung
2331f21f90 Refactor code. 2015-04-30 23:30:28 +02:00
Lars Jung
58bf1a3091 Refactor view. 2015-04-30 23:01:54 +02:00
Lars Jung
3cf135b670 Clean code. 2015-04-30 13:01:17 +02:00
Lars Jung
5ce0541937 Add view/viewmode tests. 2015-04-30 00:32:43 +02:00
Lars Jung
19aa32feb4 Add view/viewmode tests. 2015-04-30 00:18:14 +02:00
Lars Jung
aedf75b9f8 Add view/viewmode tests. 2015-04-30 00:15:09 +02:00
Lars Jung
8b7e0b57c5 Add view/item tests. 2015-04-29 23:47:39 +02:00
Lars Jung
3dfd912266 Clean code. 2015-04-29 23:17:54 +02:00
Lars Jung
5bd767d744 Clean code. 2015-04-29 23:15:37 +02:00
Lars Jung
b39ba9cd00 Clean code. 2015-04-29 23:15:16 +02:00
Lars Jung
07ffb9d995 Clean code. 2015-04-29 23:13:51 +02:00
Lars Jung
2479aa597b Clean code. 2015-04-29 23:11:45 +02:00
Lars Jung
8c34337136 Refactor view/content. 2015-04-29 23:08:38 +02:00
Lars Jung
0faf399abd Fix content scroll. 2015-04-29 20:02:57 +02:00
Lars Jung
7704a00d7b Rename mainrow. 2015-04-29 19:47:37 +02:00
Lars Jung
96b6ff7fff Update tests. 2015-04-29 18:55:36 +02:00
Lars Jung
3dedb6b0f6 Minor changes. 2015-04-29 17:56:44 +02:00
Lars Jung
13457f8a6a Minor changes. 2015-04-29 17:14:04 +02:00
Lars Jung
bc966c46c6 Relax test. 2015-04-29 16:37:06 +02:00
Lars Jung
a5d04198dc Update viewmode. 2015-04-29 16:23:24 +02:00
Lars Jung
c3803b2e84 Add viewmode tests. 2015-04-29 14:54:59 +02:00
Lars Jung
aa8b9789f7 Clean tests. 2015-04-29 14:28:27 +02:00
Lars Jung
70c8364349 Add integration test. 2015-04-29 14:23:15 +02:00
Lars Jung
ea306c7d0c Minor visual tweak. 2015-04-29 11:56:41 +02:00
Lars Jung
33bc45d179 Add simple toggle. 2015-04-29 02:16:29 +02:00
Lars Jung
f7d0f7d5eb Refactor type tests. 2015-04-29 01:48:11 +02:00
Lars Jung
f181c52d13 Minor changes. 2015-04-29 01:25:32 +02:00
Lars Jung
f7e3f4da79 Minor changes. 2015-04-29 01:18:11 +02:00
Lars Jung
2365c23af7 Refactor notifications. 2015-04-29 01:13:30 +02:00
Lars Jung
73496c6b7c Refactor notifications. 2015-04-29 00:57:58 +02:00
Lars Jung
6500b624f5 Refactor location module. 2015-04-29 00:44:10 +02:00
Lars Jung
2525ad8393 Adds onpopstate tests. 2015-04-29 00:39:22 +02:00
Lars Jung
344c61bd23 Refactor forceEncoding. 2015-04-28 21:46:49 +02:00
Lars Jung
248e7efdb0 Refactor test runner. 2015-04-28 13:03:52 +02:00
Lars Jung
530e9c3859 Clean code. 2015-04-28 01:24:26 +02:00
Lars Jung
594653a753 Update. 2015-04-28 01:04:51 +02:00
Lars Jung
cb5c197994 Clean test code. 2015-04-28 00:25:48 +02:00
Lars Jung
c8bffa006b Refactor test runner 2015-04-27 23:55:25 +02:00
Lars Jung
df76ca0807 Update test styles. 2015-04-27 23:04:34 +02:00
Lars Jung
1e00e2b733 Remove ready event. 2015-04-27 21:48:56 +02:00
Lars Jung
2b834f0233 Refactor test runner. 2015-04-27 12:51:25 +02:00
Lars Jung
af34531ee0 Update test styles. 2015-04-27 12:05:22 +02:00
Lars Jung
b5049ea855 Update test styles. 2015-04-27 02:13:26 +02:00
Lars Jung
785f4632c7 Update test runner code. 2015-04-27 02:06:46 +02:00
Lars Jung
fcaddbbd3b Clean code. 2015-04-27 01:53:34 +02:00
Lars Jung
ddf23d1ea5 Clean and refactor styles. 2015-04-27 00:49:50 +02:00
Lars Jung
dabc9e3c93 Clean and refactor styles. 2015-04-27 00:19:46 +02:00
Lars Jung
f89010bd98 Refactor styles. 2015-04-26 23:41:07 +02:00
Lars Jung
cf84bd74f1 Fix some jshint issues. 2015-04-26 21:41:05 +02:00
Lars Jung
b95aa583a9 Refactor test code. 2015-04-26 21:37:41 +02:00
Lars Jung
21c976bb3d Update test runner. 2015-04-26 20:02:23 +02:00
Lars Jung
63fe57731e Update font styles. 2015-04-26 19:00:08 +02:00
Lars Jung
668f316465 Refactor tests. 2015-04-26 18:10:31 +02:00
Lars Jung
55fa4a1bcd Remove stylesheet types. 2015-04-26 16:37:12 +02:00
Lars Jung
bdeac2533f Clean styles. 2015-04-26 16:27:56 +02:00
Lars Jung
2ed333ab82 Clean contextmenu. 2015-04-26 16:16:47 +02:00
Lars Jung
8d11090f7d Update fallback styles. 2015-04-26 14:15:19 +02:00
Lars Jung
336e9ac0bd Clean styles. 2015-04-26 13:55:27 +02:00
Lars Jung
0a4fd4ee2c Clean styles. 2015-04-26 02:59:49 +02:00
Lars Jung
b90b164552 Clean styles. 2015-04-26 01:12:58 +02:00
Lars Jung
b7a77797f6 Refactor styles. 2015-04-26 00:33:36 +02:00
Lars Jung
ebcf431363 Refactor styles. 2015-04-25 21:44:34 +02:00
Lars Jung
ba315be9e5 Refactor topbar and crumb. 2015-04-25 21:13:25 +02:00
Lars Jung
d5a0dce27a Clean code. 2015-04-25 17:29:15 +02:00
Lars Jung
1a47a2aa3b Refactor code. 2015-04-25 17:10:47 +02:00
Lars Jung
d5221c0d17 Refactor view. 2015-04-25 13:24:34 +02:00
Lars Jung
0be36ea9e8 Rename smartBrowsing to fastBrowsing. 2015-04-24 22:22:15 +02:00
Lars Jung
c03fd20bae Add tests. 2015-04-24 20:37:19 +02:00
Lars Jung
c632cc6dea Add tests. 2015-04-24 19:59:51 +02:00
Lars Jung
908c49c584 Clean code. Add tests. 2015-04-24 18:03:10 +02:00
Lars Jung
d591dbc0cd Clean code. 2015-04-24 15:39:59 +02:00
Lars Jung
945703952b Clean code. 2015-04-24 15:34:06 +02:00
Lars Jung
9102b6d1c3 Clean code. 2015-04-24 15:17:54 +02:00
Lars Jung
4daab5d77b Remove force arg from content update method. 2015-04-24 03:42:25 +02:00
Lars Jung
5e8baf027e Clean code. 2015-04-24 02:32:03 +02:00
Lars Jung
34525afe56 Clean code. 2015-04-24 00:51:26 +02:00
Lars Jung
c73bc83f7d Clean code. 2015-04-24 00:01:56 +02:00
Lars Jung
ce11fcffbc Update mocha code. 2015-04-23 23:52:59 +02:00
Lars Jung
239157df30 Update test styles. 2015-04-23 13:41:20 +02:00
Lars Jung
e7d97d4b66 Update test styles. 2015-04-23 02:33:40 +02:00
Lars Jung
b2c4802310 Clean code. 2015-04-23 00:31:29 +02:00
Lars Jung
60b366a7f4 Clean code. 2015-04-23 00:08:43 +02:00
Lars Jung
c732fbb363 Clean code. 2015-04-22 23:50:16 +02:00
Lars Jung
41b199c578 Clean strings. 2015-04-22 23:45:23 +02:00
Lars Jung
88854ad451 Add tests. 2015-04-22 23:21:48 +02:00
Lars Jung
3882f1483b Add tests. 2015-04-22 21:30:29 +02:00
Lars Jung
882bf8ae11 Clean code. 2015-04-22 19:34:35 +02:00
Lars Jung
c396800dfa Publish tests. 2015-04-22 17:12:45 +02:00
Lars Jung
5a8ecd593d Sort module deps. 2015-04-22 17:10:49 +02:00
Lars Jung
84693e6404 Sort module deps. 2015-04-22 05:03:28 +02:00
Lars Jung
476df8219f Update build file. 2015-04-22 01:02:33 +02:00
Lars Jung
448c889e56 Clean code. 2015-04-19 23:23:34 +02:00
Lars Jung
52ca5275b1 Update JSCS config. 2015-04-19 20:35:54 +02:00
Lars Jung
0fd6e2c878 Update build file. 2015-04-18 13:53:05 +02:00
Lars Jung
85599f8a33 Refactor. 2015-04-18 01:11:48 +02:00
Lars Jung
5f2a7985d8 Refactor js init sequence. 2015-04-18 00:38:28 +02:00
Lars Jung
b1b5e37ab6 Remove #settings div. 2015-04-17 23:58:56 +02:00
Lars Jung
2f26146228 Remove #settings div. 2015-04-17 23:51:48 +02:00
Lars Jung
6bfbebc51e Clean code. 2015-04-17 20:29:17 +02:00
Lars Jung
762fd54788 Clean code. 2015-04-17 17:50:27 +02:00
Lars Jung
57ab18355d Clean code. 2015-04-17 17:46:44 +02:00
Lars Jung
8d9a2f505f Clean code. 2015-04-17 15:34:27 +02:00
Lars Jung
c20da80bda Clean store module. Publish test build commands. 2015-04-17 03:16:04 +02:00
Lars Jung
e99bd06370 Clean code. 2015-04-17 03:02:48 +02:00
Lars Jung
6f5446f218 Update build file. 2015-04-14 04:21:05 +02:00
Lars Jung
c1c25f0e28 Update build file. 2015-04-14 03:19:50 +02:00
Lars Jung
cdca37e59d Clean code. 2015-04-14 01:38:49 +02:00
Lars Jung
6137120b2e Update deps. 2015-04-13 00:13:38 +02:00
Lars Jung
f0912f9e9d Add JSCS rules and clean code. 2015-04-12 23:23:05 +02:00
Lars Jung
1623d0f60a Refactor preview extension. 2015-04-11 23:01:24 +02:00
Lars Jung
96db9677c6 Clean deps. 2015-04-11 18:35:42 +02:00
Lars Jung
bcfdec87c9 Remove Moment.js. 2015-04-11 17:38:49 +02:00
Lars Jung
488e321613 Update modulejs to 1.5.0. 2015-04-11 02:11:26 +02:00
Lars Jung
90fcae1932 Clean code. 2015-04-11 01:19:48 +02:00
Lars Jung
271c5fd9d2 Update build file. 2015-04-10 20:48:26 +02:00
Lars Jung
bd2b564876 Update mkr. 2015-04-10 16:12:05 +02:00
Lars Jung
99a45ab56e Fix preview bottom bar for small screen widths. 2015-04-10 03:55:21 +02:00
Lars Jung
18d12b6746 Update build process. 2015-04-09 23:22:37 +02:00
Lars Jung
90013da52c Updates h5bp CSS and normalize.css. 2015-04-09 02:23:33 +02:00
Lars Jung
ce6680ae19 Add fquery-autoprefixer. 2015-04-09 01:50:20 +02:00
Lars Jung
bdbaf26e9b Fix some IE10 styles. 2015-04-08 01:14:17 +02:00
Lars Jung
c487eaa846 Use wide links in tree. 2015-04-08 01:08:06 +02:00
Lars Jung
69318824f6 Compress release packages. 2015-04-07 18:33:20 +02:00
Lars Jung
fc918f1e3c Remove jscs file. 2015-04-07 00:38:59 +02:00
Lars Jung
04c574c6f9 Back to develop. 2015-04-06 21:01:40 +02:00
317 changed files with 28405 additions and 5747 deletions

5
.babelrc Normal file
View File

@@ -0,0 +1,5 @@
{
"presets": [
"es2015"
]
}

View File

@@ -12,21 +12,11 @@ insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
[package.json] [{package.json,.travis.yml,.eslintrc,.babelrc}]
indent_style = space
indent_size = 2 indent_size = 2
[.travis.yml] [{*.md,*.jade}]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[*.jade]
trim_trailing_whitespace = false trim_trailing_whitespace = false

3
.eslintignore Normal file
View File

@@ -0,0 +1,3 @@
**/build/**
**/node_modules/**
**/vendor/**

207
.eslintrc Normal file
View File

@@ -0,0 +1,207 @@
---
root: true
parser: babel-eslint
env:
es6: true
node: true
ecmaFeatures:
arrowFunctions: true
binaryLiterals: true
blockBindings: true
classes: false
defaultParams: true
destructuring: true
forOf: true
generators: true
globalReturn: true
jsx: false
modules: true
objectLiteralComputedProperties: true
objectLiteralDuplicateProperties: true
objectLiteralShorthandMethods: true
objectLiteralShorthandProperties: true
octalLiterals: true
regexUFlag: true
regexYFlag: true
spread: true
superInFunctions: false
templateStrings: true
unicodeCodePointEscapes: true
rules:
array-bracket-spacing: [2, never]
arrow-parens: [2, as-needed]
arrow-spacing: 2
block-scoped-var: 2
brace-style: [2, 1tbs, {allowSingleLine: true}]
camelcase: 0
comma-dangle: [2, never]
comma-spacing: [2, {before: false, after: true}]
comma-style: [2, last]
complexity: [1, 25] ###
computed-property-spacing: [2, never]
consistent-return: 2
consistent-this: [2, self]
constructor-super: 2
curly: [2, multi-line]
default-case: 2
dot-location: [2, property]
dot-notation: [2, {allowKeywords: true}]
eol-last: 2
eqeqeq: 2
func-names: 2
func-style: [2, declaration, {allowArrowFunctions: true}]
generator-star-spacing: [2, after]
guard-for-in: 2
handle-callback-err: 2
indent: [2, 4]
key-spacing: [2, {beforeColon: false, afterColon: true}]
linebreak-style: [2, unix]
max-depth: [1, 4]
max-len: [0, 80, 4]
max-nested-callbacks: [1, 3]
max-params: [1, 5] ###
max-statements: [1, 80] ###
new-cap: 0
new-parens: 2
newline-after-var: 0
no-alert: 2
no-array-constructor: 2
no-bitwise: 2
no-caller: 2
no-catch-shadow: 2
no-class-assign: 2
no-cond-assign: 2
no-console: 0 ###
no-const-assign: 2
no-constant-condition: 1
no-continue: 0
no-control-regex: 2
no-debugger: 2
no-delete-var: 2
no-div-regex: 2
no-dupe-args: 2
no-dupe-class-members: 2
no-dupe-keys: 2
no-duplicate-case: 2
no-else-return: 1
no-empty: 2
no-empty-character-class: 2
no-empty-label: 2
no-empty-pattern: 2
no-eq-null: 2
no-eval: 2
no-ex-assign: 2
no-extend-native: 1
no-extra-bind: 2
no-extra-boolean-cast: 2
no-extra-parens: 1
no-extra-semi: 2
no-fallthrough: 2
no-floating-decimal: 2
no-func-assign: 2
no-implicit-coercion: [2, {boolean: false, number: true, string: true}]
no-implied-eval: 2
no-inline-comments: 0
no-inner-declarations: [2, functions]
no-invalid-regexp: 2
no-invalid-this: 2
no-irregular-whitespace: 2
no-iterator: 2
no-label-var: 2
no-labels: 2
no-lone-blocks: 2
no-lonely-if: 2
no-loop-func: 1
no-magic-numbers: 0
no-mixed-requires: [2, false]
no-mixed-spaces-and-tabs: [2, false]
no-multi-spaces: 2
no-multi-str: 2
no-multiple-empty-lines: [2, {max: 4}]
no-native-reassign: 1
no-negated-in-lhs: 2
no-nested-ternary: 0
no-new: 2
no-new-func: 2
no-new-object: 2
no-new-require: 2
no-new-wrappers: 2
no-obj-calls: 2
no-octal: 2
no-octal-escape: 2
no-param-reassign: 0
no-path-concat: 2
no-plusplus: 2
no-process-env: 2
no-process-exit: 2
no-proto: 2
no-redeclare: 2
no-regex-spaces: 2
no-restricted-modules: 2
no-return-assign: 2
no-script-url: 2
no-self-compare: 2
no-sequences: 2
no-shadow: 2
no-shadow-restricted-names: 2
no-spaced-func: 2
no-sparse-arrays: 2
no-sync: 0
no-ternary: 0
no-this-before-super: 2
no-throw-literal: 1
no-trailing-spaces: 2
no-undef: 2
no-undef-init: 2
no-undefined: 0
no-underscore-dangle: 0
no-unexpected-multiline: 2
no-unneeded-ternary: 2
no-unreachable: 2
no-useless-call: 2
no-useless-concat: 2
no-unused-expressions: 2
no-unused-vars: [1, {vars: all, args: after-used}]
no-use-before-define: 2
no-var: 2
no-void: 2
no-warning-comments: [1, {terms: [todo, fixme, xxx], location: start}]
no-with: 2
object-curly-spacing: [2, never]
object-shorthand: [2, always]
one-var: [2, never]
operator-assignment: [2, always]
operator-linebreak: [2, after]
padded-blocks: [2, never]
prefer-arrow-callback: 2
prefer-const: 1
prefer-reflect: 1
prefer-spread: 2
prefer-template: 0 ###
quote-props: [2, as-needed]
quotes: [2, single, avoid-escape]
radix: 2
require-yield: 2
semi: 2
semi-spacing: [2, {before: false, after: true}]
sort-vars: 0
space-after-keywords: [2, always]
space-before-blocks: [2, always]
space-before-function-paren: [2, {anonymous: always, named: never}]
space-in-parens: [2, never]
space-infix-ops: 2
space-return-throw-case: 2
space-unary-ops: [2, {words: true, nonwords: false}]
spaced-comment: [2, always]
strict: [2, never]
use-isnan: 2
valid-jsdoc: 2
valid-typeof: 2
vars-on-top: 0
wrap-iife: [2, outside]
wrap-regex: 2
yoda: [2, never, {exceptRange: true}]

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
build build
local local
node_modules node_modules
test npm-debug.log

View File

@@ -1,2 +0,0 @@
{
}

View File

@@ -1,6 +1,34 @@
# Changelog # Changelog
## v0.28.0 - *2015-12-19*
* now requires PHP 5.5.0+
* changes index path to `/_h5ai/public/index.php`
* now only `/_h5ai/public/` needs to be accessable from web
* adds support for custom script and style additions
* adds options to set font families
* adds search
* adds ignorecase sorting option to tree
* adds wide links in tree view
* adds IE edge mode
* adds frontend tests
* fixes some styles in IE10
* fixes preview bottom bar for small screen widths
* lots of code cleanup and refactorings
* changes API
* updates build process, now uses [ghu](https://larsjung.de/ghu/)
* switches from jshint and jscs to [eslint](http://eslint.org/)
* updates `jQuery` to 2.1.4
* updates `lodash` to 3.9.3 (adds debounce and trim)
* updates `marked` to 0.3.5
* updates `modulejs` to 1.13.0
* updates `prism` to 2015-12-19
* updates h5bp styles to 5.2.0
* updates `normalize.css` to 3.0.3
* removes `Moment.js`
## v0.27.0 - *2015-04-06* ## v0.27.0 - *2015-04-06*
* new layout * new layout
@@ -20,7 +48,7 @@
* improves drag-select * improves drag-select
* improves image preview * improves image preview
* prevents listing `_h5ai` folder and subfolders * prevents listing `_h5ai` folder and subfolders
* updates build process, now uses [mkr](http://larsjung.de/mkr/) and [fQuery](http://larsjung.de/fquery/) * updates build process, now uses [mkr](https://larsjung.de/mkr/) and [fQuery](https://larsjung.de/fquery/)
* updates `jQuery` to 2.1.3 * updates `jQuery` to 2.1.3
* updates `jQuery.qrcode` to 0.11.0 * updates `jQuery.qrcode` to 0.11.0
* updates `Lo-Dash` to 3.6.0 * updates `Lo-Dash` to 3.6.0
@@ -202,9 +230,9 @@
* changes language code `gr` to `el` * changes language code `gr` to `el`
* adds localization for filter placeholder * adds localization for filter placeholder
* adds `hu` translation by [Rodolffo](https://github.com/Rodolffo) * adds `hu` translation by [Rodolffo](https://github.com/Rodolffo)
* updates to [jQuery.qrcode](http://larsjung.de/qrcode/) 0.2 * updates to [jQuery.qrcode](https://larsjung.de/qrcode/) 0.2
* updates to [jQuery.scrollpanel](http://larsjung.de/scrollpanel/) 0.1 * updates to [jQuery.scrollpanel](https://larsjung.de/scrollpanel/) 0.1
* updates to [modulejs](http://larsjung.de/modulejs/) 0.2 * updates to [modulejs](https://larsjung.de/modulejs/) 0.2
* updates to [Moment.js](http://momentjs.com) 1.7.0 * updates to [Moment.js](http://momentjs.com) 1.7.0
* updates to [Underscore.js](http://underscorejs.org) 1.3.3 * updates to [Underscore.js](http://underscorejs.org) 1.3.3

View File

@@ -5,6 +5,9 @@
A modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee. A modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee.
For bug reports and feature requests please use [issues][github-issues]. For bug reports and feature requests please use [issues][github-issues].
There was a [security flaw][cve] in versions 0.22.0 - 0.24.1 that was fixed in
0.25.0. If you are still using one of these versions you are advised to
upgrade.
## Install ## Install
@@ -12,25 +15,31 @@ Do **not** install any files from the `src` folder, they need to be
preprocessed to work correctly! Find a preprocessed package and detailed preprocessed to work correctly! Find a preprocessed package and detailed
install instructions on the [project page][web]. install instructions on the [project page][web].
In short you have to take the following two steps:
* place folder `_h5ai` in the document root folder of the web server
* append `/_h5ai/public/index.php` to the end of the default index-file list
## Build ## Build
There are installation ready packages for the latest [releases][release] and There are installation ready packages for the latest [releases][release] and
[dev builds][develop]. But to clone and build **h5ai** yourself run the [dev builds][develop]. But to build **h5ai** yourself either `git clone` or
following commands to find a fresh zipball in folder `build` (tested on linux download the repository. From within the root folder run the following
only, requires [`git`][git] and [`npm`][npm] to be installed). commands to find a fresh zipball in folder `build` (tested on linux only,
requires [`node 4.0+`][node] to be installed).
> git clone git://github.com/lrsjng/h5ai.git ~~~sh
> cd h5ai > npm install
> npm install > npm run build
> npm run build ~~~
## License ## License
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2015 Lars Jung (http://larsjung.de) Copyright (c) 2015 Lars Jung (https://larsjung.de)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -54,18 +63,19 @@ THE SOFTWARE.
## References ## References
**h5ai** profits from other projects, all of them licensed under the MIT license **h5ai** profits from other projects, all of them licensed under the MIT license
too. Exceptions are the [Material Design icons][material-design-icons] (CC BY 4.0). too. Exceptions are some [Material Design icons][material-design-icons] (CC BY 4.0).
[web]: http://larsjung.de/h5ai/ [web]: https://larsjung.de/h5ai/
[github]: https://github.com/lrsjng/h5ai [github]: https://github.com/lrsjng/h5ai
[github-issues]: https://github.com/lrsjng/h5ai/issues [github-issues]: https://github.com/lrsjng/h5ai/issues
[release]: http://release.larsjung.de/h5ai/ [release]: https://release.larsjung.de/h5ai/
[develop]: http://release.larsjung.de/h5ai/develop/ [develop]: https://release.larsjung.de/h5ai/develop/
[git]: http://git-scm.com [node]: https://nodejs.org
[npm]: https://www.npmjs.org
[material-design-icons]: https://github.com/google/material-design-icons [material-design-icons]: https://github.com/google/material-design-icons
[license-img]: http://img.shields.io/badge/license-MIT-a0a060.svg?style=flat-square [license-img]: https://img.shields.io/badge/license-MIT-a0a060.svg?style=flat-square
[web-img]: http://img.shields.io/badge/web-larsjung.de/h5ai-a0a060.svg?style=flat-square [web-img]: https://img.shields.io/badge/web-larsjung.de/h5ai-a0a060.svg?style=flat-square
[github-img]: http://img.shields.io/badge/github-lrsjng/h5ai-a0a060.svg?style=flat-square [github-img]: https://img.shields.io/badge/github-lrsjng/h5ai-a0a060.svg?style=flat-square
[cve]: https://larsjung.de/h5ai/cve-2015-3203.txt

2
ghu Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env sh
node -r babel-core/register ghu.js "$@"

161
ghu.js Normal file
View File

@@ -0,0 +1,161 @@
const {resolve, join} = require('path');
const {
ghu,
autoprefixer, cssmin, each, ife, includeit, jade, jszip,
less, mapfn, newerThan, read, remove, run, uglify, watch, wrap, write
} = require('ghu');
const ROOT = resolve(__dirname);
const SRC = join(ROOT, 'src');
const TEST = join(ROOT, 'test');
const BUILD = join(ROOT, 'build');
const mapper = mapfn.p(SRC, BUILD).s('.less', '.css').s('.jade', '');
ghu.defaults('release');
ghu.before(runtime => {
runtime.pkg = Object.assign({}, require('./package.json'));
const res = run.sync(`git rev-list v${runtime.pkg.version}..HEAD`, {silent: true});
if (res.code === 0) {
const hashes = res.stdout.split(/\r?\n/).filter(x => x);
if (hashes.length) {
const counter = ('000' + hashes.length).substr(-3);
const hash = hashes[0].substr(0, 7);
runtime.pkg.version += `+${counter}~${hash}`;
}
}
runtime.comment = `${runtime.pkg.name} v${runtime.pkg.version} - ${runtime.pkg.homepage}`;
runtime.commentJs = `/* ${runtime.comment} */\n`;
runtime.commentHtml = `<!-- ${runtime.comment} -->`;
console.log(runtime.comment);
});
ghu.task('force-production', 'ensure :production flag is set', runtime => {
if (!runtime.args.production) {
runtime.args.production = true;
console.log('forcing production mode');
}
});
ghu.task('clean', 'delete build folder', () => {
return remove(BUILD);
});
ghu.task('lint', 'lint all JavaScript files with eslint', () => {
return run('eslint .', {stdio: 'inherit'});
});
ghu.task('build:scripts', runtime => {
return read(`${SRC}/_h5ai/public/js/*.js`)
.then(newerThan(mapper, `${SRC}/_h5ai/public/js/**`))
.then(includeit())
.then(ife(() => runtime.args.production, uglify()))
.then(wrap(runtime.commentJs))
.then(write(mapper, {overwrite: true}));
});
ghu.task('build:styles', runtime => {
return read(`${SRC}/_h5ai/public/css/*.less`)
.then(newerThan(mapper, `${SRC}/_h5ai/public/css/**`))
.then(includeit())
.then(less())
.then(autoprefixer())
.then(ife(() => runtime.args.production, cssmin()))
.then(wrap(runtime.commentJs))
.then(write(mapper, {overwrite: true}));
});
ghu.task('build:pages', runtime => {
return read(`${SRC}: **/*.jade, ! **/*.tpl.jade`)
.then(newerThan(mapper, `${SRC}/**/*.tpl.jade`))
.then(jade({pkg: runtime.pkg}))
.then(wrap('', runtime.commentHtml))
.then(write(mapper, {overwrite: true}));
});
ghu.task('build:copy', runtime => {
const mapperRoot = mapfn.p(ROOT, join(BUILD, '_h5ai'));
return Promise.all([
read(`${SRC}/**/conf/*.json`)
.then(newerThan(mapper))
.then(wrap(runtime.commentJs))
.then(write(mapper, {overwrite: true, cluster: true})),
read(`${SRC}: **, ! **/*.js, ! **/*.less, ! **/*.jade, ! **/conf/*.json`)
.then(newerThan(mapper))
.then(each(obj => {
if (/index\.php$/.test(obj.source)) {
obj.content = obj.content.replace('{{VERSION}}', runtime.pkg.version);
}
}))
.then(write(mapper, {overwrite: true, cluster: true})),
read(`${ROOT}/*.md`)
.then(newerThan(mapperRoot))
.then(write(mapperRoot, {overwrite: true, cluster: true}))
]);
});
ghu.task('build:tests', ['build:scripts', 'build:styles'], 'build the test suite', runtime => {
return Promise.all([
read(`${TEST}/scripts.js`)
.then(newerThan(`${BUILD}/test/scripts.js`))
.then(includeit())
.then(write(`${BUILD}/test/scripts.js`, {overwrite: true})),
read(`${TEST}/styles.less`)
.then(newerThan(`${BUILD}/test/styles.css`))
.then(includeit())
.then(less())
.then(autoprefixer())
.then(write(`${BUILD}/test/styles.css`, {overwrite: true})),
read(`${TEST}/index.html.jade`)
.then(newerThan(`${BUILD}/test/index.html`))
.then(jade({pkg: runtime.pkg}))
.then(write(`${BUILD}/test/index.html`, {overwrite: true})),
read(`${BUILD}/_h5ai/public/js/scripts.js`)
.then(newerThan(`${BUILD}/test/h5ai-scripts.js`))
.then(write(`${BUILD}/test/h5ai-scripts.js`, {overwrite: true})),
read(`${BUILD}/_h5ai/public/css/styles.css`)
.then(newerThan(`${BUILD}/test/h5ai-styles.css`))
.then(write(`${BUILD}/test/h5ai-styles.css`, {overwrite: true}))
]).then(() => {
console.log(`browse to file://${BUILD}/test/index.html to run the test suite`);
});
});
ghu.task('build', ['build:scripts', 'build:styles', 'build:pages', 'build:copy', 'build:tests'],
'build all updated files, optionally use :production');
ghu.task('deploy', ['build'], 'deploy to a specified path with :dest=/some/path', runtime => {
if (typeof runtime.args.dest !== 'string') {
throw new Error('no destination path (e.g. :dest=/some/path)');
}
console.log(`deploy to ${runtime.args.dest}`);
const mapperDeploy = mapfn.p(BUILD, resolve(runtime.args.dest));
return read(`${BUILD}/_h5ai/**`)
.then(newerThan(mapperDeploy))
.then(write(mapperDeploy, {overwrite: true, cluster: true}));
});
ghu.task('watch', runtime => {
return watch([SRC, TEST], () => ghu.run(runtime.sequence.filter(x => x !== 'watch'), runtime.args, true));
});
ghu.task('release', ['force-production', 'clean', 'build'], 'create a zipball', runtime => {
const target = join(BUILD, `${runtime.pkg.name}-${runtime.pkg.version}.zip`);
return read(`${BUILD}/_h5ai/**`)
.then(jszip({dir: BUILD, level: 9}))
.then(write(target, {overwrite: true}));
});

View File

@@ -1,208 +0,0 @@
/*jshint node: true */
'use strict';
var path = require('path');
var $ = require('fquery');
var pkg = require('./package.json');
var root = path.resolve(__dirname);
var src = path.join(root, 'src');
var build = path.join(root, 'build');
var mapSrc = $.map.p(src, build).s('.less', '.css').s('.jade', '');
var mapRoot = $.map.p(root, path.join(build, '_h5ai'));
function getBuildSuffix(callback) {
require('child_process').exec('git rev-list v' + pkg.version + '..HEAD', {cwd: root}, function (err, out) {
try {
var lines = out.trim().split(/\r?\n/);
callback('+' + ('000' + lines.length).substr(-3) + '~' + lines[0].substring(0, 7));
} catch (e) {
callback('+X');
}
});
}
$.fn.autoprefixer = function (options) {
var autoprefixer = require('autoprefixer-core');
var options = {browsers: ['last 2 versions']};
return this.edit(function (blob) {
try {
blob.content = autoprefixer.process(blob.content, options).css;
} catch (e) {
$.report({
type: 'err',
method: 'autoprefixer',
message: e.message,
fquery: this,
blob: blob,
err: e
});
}
});
};
$.plugin('fquery-cssmin');
$.plugin('fquery-handlebars');
$.plugin('fquery-includeit');
$.plugin('fquery-jade');
$.plugin('fquery-jshint');
$.plugin('fquery-jszip');
$.plugin('fquery-less');
$.plugin('fquery-uglifyjs');
module.exports = function (suite) {
suite.defaults('release');
suite.target('check-version', [], 'add git info to dev builds').task(function (done) {
if (!pkg.develop) {
done();
return;
}
getBuildSuffix(function (result) {
pkg.version += result;
$.report({type: 'info', method: 'check-version', message: 'version set to ' + pkg.version});
done();
});
});
suite.target('clean', [], 'delete build folder').task(function () {
$(build, {dirs: true}).delete();
});
suite.target('lint', [], 'lint all JavaScript files with JSHint').task(function () {
var jshint = {
// Enforcing Options
bitwise: true,
curly: true,
eqeqeq: true,
forin: true,
latedef: true,
newcap: true,
noempty: true,
plusplus: true,
trailing: true,
undef: true,
// Environments
browser: true
};
var globals = {
modulejs: true
};
$(src + '/_h5ai/client/js: **/*.js, ! lib/**')
.jshint(jshint, globals);
});
suite.target('build', ['check-version', 'lint'], 'build all updated files').task(function () {
var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.homepage + ' */\n';
var env = {pkg: pkg};
$(src + ': _h5ai/client/js/*.js')
.newerThan(mapSrc, $(src + ': _h5ai/client/js/**'))
.includeit()
.uglifyjs()
.wrap(header)
.write(mapSrc, true);
$(src + ': _h5ai/client/css/*.less')
.newerThan(mapSrc, $(src + ': _h5ai/client/css/**'))
.less()
.autoprefixer()
.cssmin()
.wrap(header)
.write(mapSrc, true);
$(src + ': _h5ai/client/css/fonts/**')
.newerThan(mapSrc)
.write(mapSrc, true);
$(src + ': **/*.jade')
.newerThan(mapSrc)
.jade(env)
.write(mapSrc, true);
$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
.newerThan(mapSrc)
.handlebars(env)
.write(mapSrc, true);
$(root + ': *.md')
.newerThan(mapRoot)
.write(mapRoot, true);
});
suite.target('build-uncompressed', ['check-version', 'lint'], 'build all updated files').task(function () {
var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.homepage + ' */\n';
var env = {pkg: pkg};
$(src + ': _h5ai/client/js/*.js')
.newerThan(mapSrc, $(src + ': _h5ai/client/js/**'))
.includeit()
// .uglifyjs()
.wrap(header)
.write(mapSrc, true);
$(src + ': _h5ai/client/css/*.less')
.newerThan(mapSrc, $(src + ': _h5ai/client/css/**'))
.less()
.autoprefixer()
// .cssmin()
.wrap(header)
.write(mapSrc, true);
$(src + ': _h5ai/client/css/fonts/**')
.newerThan(mapSrc)
.write(mapSrc, true);
$(src + ': **/*.jade')
.newerThan(mapSrc)
.jade(env)
.write(mapSrc, true);
$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
.newerThan(mapSrc)
.handlebars(env)
.write(mapSrc, true);
$(root + ': *.md')
.newerThan(mapRoot)
.write(mapRoot, true);
});
suite.target('release', ['clean', 'build'], 'create a zipball').task(function () {
var target = path.join(build, pkg.name + '-' + pkg.version + '.zip');
$(build + ': **')
.jszip({dir: build})
.write(target, true);
});
};

View File

@@ -1,31 +1,28 @@
{ {
"name": "h5ai", "name": "h5ai",
"version": "0.27.0", "version": "0.28.0",
"develop": false, "description": "Modern HTTP web server index.",
"description": "a modern HTTP web server index", "homepage": "https://larsjung.de/h5ai/",
"homepage": "http://larsjung.de/h5ai/",
"bugs": "https://github.com/lrsjng/h5ai/issues", "bugs": "https://github.com/lrsjng/h5ai/issues",
"author": "Lars Jung <lrsjng@gmail.com> (http://larsjung.de)", "author": "Lars Jung <lrsjng@gmail.com> (https://larsjung.de)",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/lrsjng/h5ai.git" "url": "https://github.com/lrsjng/h5ai.git"
}, },
"scripts": { "scripts": {
"build": "mkr release", "lint": "eslint .",
"test": "mocha --recursive test" "ghu": "node -r babel-core/register ghu.js",
"build": "npm run -s ghu release"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer-core": "~5.1.8", "babel-core": "6.3.21",
"fquery": "~0.16.2", "babel-eslint": "5.0.0-beta6",
"fquery-cssmin": "~0.3.0", "babel-preset-es2015": "6.3.13",
"fquery-handlebars": "~0.2.0", "eslint": "1.10.3",
"fquery-includeit": "~0.2.0", "ghu": "0.4.0"
"fquery-jade": "~0.3.0", },
"fquery-jshint": "~0.2.0", "engines": {
"fquery-jszip": "~0.4.0", "node": ">=4.0.0"
"fquery-less": "~0.2.0",
"fquery-uglifyjs": "~0.2.1",
"mkr": "~0.6.1"
} }
} }

43
src/.eslintrc Normal file
View File

@@ -0,0 +1,43 @@
---
env:
es6: false
node: false
browser: true
mocha: false
globals:
modulejs: false
ecmaFeatures:
arrowFunctions: false
binaryLiterals: false
blockBindings: false
classes: false
defaultParams: false
destructuring: false
forOf: false
generators: false
globalReturn: false
jsx: false
modules: false
objectLiteralComputedProperties: false
objectLiteralDuplicateProperties: false
objectLiteralShorthandMethods: false
objectLiteralShorthandProperties: false
octalLiterals: false
regexUFlag: false
regexYFlag: false
spread: false
superInFunctions: false
templateStrings: false
unicodeCodePointEscapes: false
rules:
consistent-this: 0
func-names: 0
max-params: [1, 10]
no-invalid-this: 0
no-var: 0
object-shorthand: 0
prefer-arrow-callback: 0
prefer-reflect: 0

View File

@@ -1,46 +1,3 @@
Satisfy all
DirectoryIndex index.html Order deny,allow
Deny from all
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
AddDefaultCharset utf-8
<IfModule mod_mime.c>
AddCharset utf-8 .css .js .json .svg
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 week"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 week"
# Media
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>

View File

@@ -1,77 +0,0 @@
.cm-overlay {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: hidden;
z-index: 200;
// background: rgba(0,0,0,0.1);
// background: rgba(255,255,255,0.6);
}
.cm-panel {
.popup();
.rounded();
display: block;
position: absolute;
left: 100px;
top: 100px;
background: #fff;
color: @col;
z-index: 10;
overflow: auto;
min-width: 200px;
ul {
margin: 0;
padding: 0;
list-style: none;
text-align: left;
.cm-label {
padding: 8px 16px;
white-space: nowrap;
font-weight: bold;
}
.cm-entry {
padding: 8px 16px;
white-space: nowrap;
cursor: pointer;
&:hover {
color: @col-hover;
background: @col-darkgray;
}
.cm-icon {
position: relative;
top: -2px;
img {
width: 20px;
height: 20px;
}
&.no-icon {
opacity: 0;
}
}
.cm-text {
margin: 0 0 0 12px;
}
}
.cm-sep {
height: 1px;
margin: 8px 0;
padding: 0;
border-top: 1px solid rgba(0,0,0,0.08);
}
}
}

View File

@@ -1,8 +0,0 @@
#download {
display: none;
&.failed {
background-color: @col-error;
}
}

View File

@@ -1,190 +0,0 @@
@col-blue-200: #90caf9;
@col-blue-400: #42a5f5;
@col-blue-500: #2196F3;
@col-blue-700: #1976D2;
@col-blue-900: #0D47A1;
@col-green: #4caf50;
@col-red: #f44336;
@col-pink-a200: #ff4081;
@col-light: #ffffff;
@col-lightgray: #fafafa;
// @col-darkgray: #eeeeee;
@col-darkgray: #f3f3f3;
// @col-dark: #333;
@col-dark: #212121;
@col-text-primary-black: rgba(0,0,0,0.87);
@col-text-secondary-black: rgba(0,0,0,0.54);
@col-text-disabled-black: rgba(0,0,0,0.26);
@col-divider-black: rgba(0,0,0,0.12);
@col-text-primary-white: rgba(255,255,255,1.0);
@col-text-secondary-white: rgba(255,255,255,0.7);
@col-text-disabled-white: rgba(255,255,255,0.3);
@col-divider-white: rgba(255,255,255,0.12);
@col-text-selected: @col-text-primary-white;
@col-back-selected: @col-blue-400;
@col-text-highlight: #111111;
@col-font-light: @col-light;
@col-font-dark: @col-dark;
@col-back-light: @col-lightgray;
@col-back-dark: @col-darkgray;
@col: @col-text-primary-black;
@col-back: @col-back-dark;
@col-hover: @col-blue-400;
@col-border: rgba(0,0,0,0.05);
@col-border-strong: rgba(0,0,0,0.15);
@col-border-stronger: rgba(0,0,0,0.3);
@col-okay: @col-green;
@col-error: @col-red;
@col-link: @col-blue-400;
@col-link-hover: @col-blue-400;
@col-widget-back: rgb(245,245,245);
@col-widget-back-highlight: rgba(255,255,255,0.8);
@col-widget-back-hover: rgba(255,255,255,0.8);
@col-widget-back-sel: rgba(255,255,255,0.8);
@col-widget-sep: @col-border;
@col-sb-back: rgba(0,0,0,0.08);
@col-sb-thumb: rgba(0,0,0,0.15);
@col-sb-thumb-active: rgba(0,0,0,0.25);
@col-range-back: rgb(224,224,224);
@col-range-thumb: #555;
@border-widget: 1px solid @col-border;
@border-widget-sep: 1px solid @col-widget-sep;
@font-family: Roboto, Helvetica, Arial, sans-serif;
@font-weight: normal;
@font-size: 13px;
@font-family-mono: monospace;
// @max-icon-size: 24px;
@max-icon-size: 32px;
// @max-icon-size: 48px;
::-moz-selection { background: @col-pink-a200; color: @col-text-primary-white; text-shadow: none; }
::selection { background: @col-pink-a200; color: @col-text-primary-white; text-shadow: none; }
.transition (@transition) {
-webkit-transition: @transition;
transition: @transition;
}
.transform (@transform) {
-webkit-transform: @transform;
-ms-transform: @transform;
transform: @transform;
zoom: 1;
}
.card() {
box-shadow: 0 1px 1px 0 rgba(0,0,0,0.2);
}
.raised() {
box-shadow: 0 1px 10px 0 rgba(0,0,0,0.5);
}
.popup() {
box-shadow: 0 1px 20px 0 rgba(0,0,0,0.5);
}
.rounded() {
// overflow: hidden;
border-radius: 2px;
}
.el-button() {
.card();
.rounded();
.transition(all 0.2s ease-in-out);
color: @col-text-primary-white;
background: @col-blue-400;
border-radius: 2px;
cursor: pointer;
text-decoration: none;
&:hover {
.raised();
}
}
.el-input() {
.card();
.rounded();
-moz-appearance: none;
-ms-appearance: none;
-webkit-appearance: none;
font-family: @font-family;
font-weight: @font-weight;
color: @col-text-primary-black;
background: @col-light;
border: none;
outline: none;
}
html {
min-height: 100%;
overflow: auto;
&.js .noJsMsg {
display: none;
}
&.browser .noBrowserMsg {
display: none;
}
}
body {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
font-family: @font-family;
font-size: @font-size;
font-weight: @font-weight;
color: @col-text-primary-black;
background: @col-back;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: flex-start;
align-content: flex-start;
align-items: stretch;
}
#main-row {
flex: 1 1 auto;
order: 50;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-content: flex-start;
align-items: stretch;
// non-webkit fix;
height: 0;
}
*:focus {
// outline: 1px solid @col-pink-a200;
outline: none;
}

View File

@@ -1,127 +0,0 @@
#topbar {
overflow: hidden;
flex: 0 0 auto;
order: 1;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-content: flex-start;
align-items: stretch;
background: @col-lightgray;
box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);
z-index: 1;
}
#backlink {
overflow: hidden;
flex: 0 0 auto;
order: 99;
text-align: center;
padding: 6px 12px;
max-width: 80px;
overflow: hidden;
height: 36px;
.transition(all 0.2s ease-in-out);
&, &:active, &:visited {
color: @col-text-disabled-black;
cursor: pointer;
text-decoration: none;
}
&:hover {
color: @col-hover;
background: rgba(0,0,0,0.03);
}
&:focus {
outline: 0;
}
div {
line-height: 18px;
white-space: nowrap;
}
}
#toolbar {
overflow: hidden;
flex: 0 0 auto;
order: 1;
height: 48px;
.tool {
display: inline-block;
cursor: pointer;
img {
display: inline-block;
width: 24px;
height: 24px;
padding: 12px;
.transition(all 0.2s ease-in-out);
}
&:hover img {
background: rgba(0,0,0,0.03);
}
}
}
#crumbbar {
overflow: hidden;
flex: 1 1 auto;
order: 2;
height: 48px;
font-size: 16px;
padding: 0 8px;
// border-left: 1px solid rgba(0,0,0,0.05);
a, a:active, a:visited {
color: @col;
cursor: pointer;
text-decoration: none;
&.active {
font-weight: bold;
color: @col-text-highlight;
}
&:hover {
color: @col-hover;
}
&:focus {
outline: 0;
}
}
.crumb {
display: inline-block;
.transition(all 0.2s ease-in-out);
}
.sep {
width: 24px;
height: 24px;
padding: 12px 0;
line-height: 48px;
display: inline-block;
vertical-align: top;
}
.label {
line-height: 48px;
display: inline-block;
vertical-align: top;
padding: 0 8px;
}
.hint {
width: 16px;
height: 16px;
padding: 16px 4px 16px 0;
line-height: 48px;
display: inline-block;
vertical-align: top;
}
}

View File

@@ -1,149 +0,0 @@
html.drag-select, html.drag-select * {
cursor: move !important;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#selection-rect {
display: none;
position: absolute;
left: 0;
top: 0;
z-index: 2;
border: 1px dashed @col-border-strong;
background: rgba(0,0,0,0.1);
}
#view {
display: none;
a, a:active, a:visited {
display: block;
color: inherit;
cursor: pointer;
text-decoration: none;
}
ul {
margin: 0;
padding: 0;
list-style: none;
}
.header {
display: none;
}
.item {
position: relative;
white-space: nowrap;
background: #fff;
&:hover {
color: @col-hover;
background: @col-lightgray;
border-color: @col-border;
.selector {
display: block;
}
}
&.selected:not(.selecting), &.selecting:not(.selected) {
color: @col-text-selected;
background: @col-back-selected;
&:hover {
color: @col-text-selected;
background: @col-back-selected;
}
.selector {
display: block;
opacity: 1;
}
}
}
.folder-parent {
.date, .size {
display: none;
}
}
.icon {
display: none;
text-align: center;
img {
max-width: @max-icon-size;
max-height: @max-icon-size;
position: relative;
top: 50%;
transform: translateY(-50%);
}
.thumb {
max-width: none;
max-height: none;
}
}
.label {
display: block;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
}
.date {
text-align: right;
width: 130px;
}
.size {
text-align: right;
width: 80px;
}
.selector {
display: none;
position: absolute;
left: 0;
top: 0;
width: 22px;
height: 22px;
background: @col-back-selected;
cursor: pointer;
border-radius: 0 0 2px 0;
opacity: 0.6;
&:hover {
opacity: 0.8;
}
img {
width: 100%;
height: 100%;
}
}
.empty, .no-match {
display: none;
margin-top: 36px;
text-align: center;
color: @col-border;
font-size: 5em;
font-weight: bold;
}
}

View File

@@ -1,527 +0,0 @@
/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
*/
audio,
canvas,
video {
display: inline-block;
*display: inline;
*zoom: 1;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
* Known issue: no IE 6 support.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
* `em` units.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-size: 100%; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Address `font-family` inconsistency between `textarea` and other form
* elements.
*/
html,
button,
input,
select,
textarea {
font-family: sans-serif;
}
/**
* Address margins handled incorrectly in IE 6/7.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address font sizes and margins set differently in IE 6/7.
* Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
* and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
h2 {
font-size: 1.5em;
margin: 0.83em 0;
}
h3 {
font-size: 1.17em;
margin: 1em 0;
}
h4 {
font-size: 1em;
margin: 1.33em 0;
}
h5 {
font-size: 0.83em;
margin: 1.67em 0;
}
h6 {
font-size: 0.67em;
margin: 2.33em 0;
}
/**
* Address styling not present in IE 7/8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
blockquote {
margin: 1em 40px;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
* Known issue: no IE 6/7 normalization.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 6/7/8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Address margins set differently in IE 6/7.
*/
p,
pre {
margin: 1em 0;
}
/**
* Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
_font-family: 'courier new', monospace;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
/**
* Address CSS quotes not supported in IE 6/7.
*/
q {
quotes: none;
}
/**
* Address `quotes` property not supported in Safari 4.
*/
q:before,
q:after {
content: '';
content: none;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Lists
========================================================================== */
/**
* Address margins set differently in IE 6/7.
*/
dl,
menu,
ol,
ul {
margin: 1em 0;
}
dd {
margin: 0 0 0 40px;
}
/**
* Address paddings set differently in IE 6/7.
*/
menu,
ol,
ul {
padding: 0 0 0 40px;
}
/**
* Correct list images handled incorrectly in IE 7.
*/
nav ul,
nav ol {
list-style: none;
list-style-image: none;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
* 2. Improve image quality when scaled in IE 7.
*/
img {
border: 0; /* 1 */
-ms-interpolation-mode: bicubic; /* 2 */
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Correct margin displayed oddly in IE 6/7.
*/
form {
margin: 0;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct color not being inherited in IE 6/7/8/9.
* 2. Correct text not wrapping in Firefox 3.
* 3. Correct alignment displayed oddly in IE 6/7.
*/
legend {
border: 0; /* 1 */
padding: 0;
white-space: normal; /* 2 */
*margin-left: -7px; /* 3 */
}
/**
* 1. Correct font size not being inherited in all browsers.
* 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
* and Chrome.
* 3. Improve appearance and consistency in all browsers.
*/
button,
input,
select,
textarea {
font-size: 100%; /* 1 */
margin: 0; /* 2 */
vertical-align: baseline; /* 3 */
*vertical-align: middle; /* 3 */
}
/**
* Address Firefox 3+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
* 4. Remove inner spacing in IE 7 without affecting normal text inputs.
* Known issue: inner spacing remains in IE 6.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
*overflow: visible; /* 4 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to content-box in IE 8/9.
* 2. Remove excess padding in IE 8/9.
* 3. Remove excess padding in IE 7.
* Known issue: excess padding remains in IE 6.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
*height: 13px; /* 3 */
*width: 13px; /* 3 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 3+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 6/7/8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}

View File

@@ -1,33 +0,0 @@
@import "lib/h5bp-normalize";
@import "lib/h5bp-main-header";
@import "inc/general";
@import "inc/topbar";
@import "inc/sidebar";
@import "inc/download";
@import "inc/filter";
@import "inc/tree";
@import "inc/info";
@import "inc/preview";
@import "inc/preview-aud";
@import "inc/preview-img";
@import "inc/preview-txt";
@import "inc/preview-vid";
@import "inc/notify";
@import "inc/content";
@import "inc/view";
@import "inc/view-details";
@import "inc/view-icons";
@import "inc/view-grid";
@import "inc/contextmenu";
@import "inc/fallback";
@import "inc/responsive";
@import "inc/h5ai-info";
@import "lib/h5bp-main-footer";
@import url(//fonts.googleapis.com/css?family=Roboto:300,400,700);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M5 3C3.9 3 3 3.9 3 5L3 19C3 20.1 3.9 21 5 21L19 21C20.1 21 21 20.1 21 19L21 5C21 3.9 20.1 3 19 3L5 3zM10 5L14 5 14 11 10 11 10 5z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 299 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M6 2C4.9 2 4 2.9 4 4L4 20C4 21.1 4.9 22 6 22L18 22C19.1 22 20 21.1 20 20L20 4C20 2.9 19.1 2 18 2L6 2zM13.1 7.1C15.4 7.6 17 9.6 17 12 17 14.4 15.4 16.4 13.1 16.9L13.1 15.7C14.7 15.2 15.9 13.8 15.9 12 15.9 10.2 14.7 8.8 13.1 8.3L13.1 7.1zM12 7.6L12 16.4 9.2 13.7 7 13.7 7 10.3 9.2 10.3 12 7.6zM13.1 9.8C13.9 10.2 14.5 11 14.5 12 14.5 13 13.9 13.8 13.1 14.2L13.1 9.8z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 534 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M5 3C3.9 3 3 3.9 3 5L3 19C3 20.1 3.9 21 5 21L19 21C20.1 21 21 20.1 21 19L21 5C21 3.9 20.1 3 19 3L5 3zM10.8 6L13.2 6C13.4 6 13.5 6.1 13.5 6.3L13.8 7.8C14.1 8 14.4 8.2 14.7 8.4L16.2 7.8C16.4 7.8 16.5 7.8 16.6 8L17.8 10C17.9 10.2 17.8 10.3 17.7 10.4L16.5 11.4C16.5 11.6 16.5 11.8 16.5 12 16.5 12.2 16.5 12.4 16.5 12.6L17.7 13.6C17.8 13.7 17.9 13.8 17.8 14L16.6 16C16.5 16.2 16.4 16.3 16.2 16.2L14.7 15.6C14.4 15.8 14.1 16 13.8 16.2L13.5 17.8C13.5 17.9 13.4 18 13.2 18L10.8 18C10.6 18 10.5 17.9 10.5 17.8L10.3 16.2C9.9 16 9.6 15.8 9.3 15.6L7.8 16.2C7.6 16.2 7.5 16.2 7.4 16L6.2 14C6.1 13.8 6.2 13.7 6.3 13.6L7.6 12.6C7.5 12.4 7.5 12.2 7.5 12 7.5 11.8 7.5 11.6 7.6 11.4L6.3 10.4C6.2 10.3 6.1 10.2 6.2 10L7.4 8C7.5 7.8 7.6 7.7 7.8 7.8L9.3 8.4C9.6 8.2 9.9 8 10.3 7.8L10.5 6.3C10.5 6.1 10.6 6 10.8 6zM12 9.9C10.8 9.9 9.9 10.8 9.9 12 9.9 13.2 10.8 14.1 12 14.1 13.2 14.1 14.1 13.2 14.1 12 14.1 10.8 13.2 9.9 12 9.9z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="m14 2-8 0c-1.1 0-2 0.9-2 2L4 20c0 1.1 0.9 2 2 2L18 22c1.1 0 2-0.9 2-2L20 8zm-1 7 0-5.5 5.5 5.5z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 265 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M4 4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20L20 20C21.1 20 22 19.1 22 18L22 8C22 6.9 21.1 6 20 6L12 6 10 4 4 4zM19 9L19 17 11 17C11 12.6 14.6 9 19 9z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 319 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" version="1.1">
<path d="m10 4-6 6 6 6 1.4-1.4L7.8 11 15 11c1.6 0 3 1.3 3 3 0 1.7-1.4 3-3 3l0 2c2.6 0 5-2.2 5-5 0-2.8-2.4-5-5-5l-7.2 0 3.6-3.6z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 288 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M4 4C2.9 4 2 4.9 2 6l0 2 0 1 0 9c0 1.1 0.9 2 2 2l16 0c1.1 0 2-0.9 2-2L22 8C22 6.9 21.1 6 20 6L12 6 10 4z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 274 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M4 4C2.9 4 2 4.9 2 6l0 12c0 1.1 0.9 2 2 2l16 0c1.1 0 2-0.9 2-2L22 6C22 4.9 21.1 4 20 4zm5 6 4 5 3-2 3 4-14 0z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 279 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M14 2H6c-1.1 0-2 0.9-2 2L4 20c0 1.1 0.9 2 2 2H18c1.1 0 2-0.9 2-2V8l-6-6zM16 18H8v-2h8v2zm0-4H8v-2h8v2zM13 9v-5.5l5.5 5.5H13z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 294 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="M4 4C2.9 4 2 4.9 2 6l0 12c0 1.1 0.9 2 2 2l16 0c1.1 0 2-0.9 2-2L22 6C22 4.9 21.1 4 20 4zM4 7 6 7 6 9 4 9zm14 0 2 0 0 2-2 0zm-14 4 2 0 0 2-2 0zm14 0 2 0 0 2-2 0zm-14 4 2 0 0 2-2 0zm14 0 2 0 0 2-2 0z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 366 B

View File

@@ -1,3 +0,0 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" version="1.1">
<path d="m14 2-8 0c-1.1 0-2 0.9-2 2L4 20c0 1.1 0.9 2 2 2L18 22c1.1 0 2-0.9 2-2L20 8zm-1 7 0-5.5 5.5 5.5z" fill="#555"/>
</svg>

Before

Width:  |  Height:  |  Size: 265 B

View File

@@ -1,57 +0,0 @@
modulejs.define('core/format', ['_', 'moment'], function (_, moment) {
var decimalMetric = {
t: 1000.0,
k: 1000.0,
u: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
};
var binaryMetric = {
t: 1024.0,
k: 1024.0,
u: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
};
var defaultMetric = decimalMetric;
var defaultDateFormat = 'YYYY-MM-DD HH:mm';
function setDefaultMetric(useBinaryMetric) {
defaultMetric = useBinaryMetric ? binaryMetric : decimalMetric;
}
function formatSize(size, metric) {
metric = metric || defaultMetric;
if (!_.isNumber(size) || size < 0) {
return '';
}
var i = 0;
var maxI = metric.u.length - 1;
while (size >= metric.t && i < maxI) {
size /= metric.k;
i += 1;
}
return (i <= 1 ? Math.round(size) : size.toFixed(1)).toString() + ' ' + metric.u[i];
}
function setDefaultDateFormat(dateFormat) {
defaultDateFormat = dateFormat;
}
function formatDate(millis) {
return _.isNumber(millis) && millis ? moment(millis).format(defaultDateFormat) : '';
}
return {
setDefaultMetric: setDefaultMetric,
formatSize: formatSize,
setDefaultDateFormat: setDefaultDateFormat,
formatDate: formatDate
};
});

View File

@@ -1,4 +0,0 @@
modulejs.define('core/langs', ['config', '_'], function (config, _) {
return _.extend({}, config.langs);
});

View File

@@ -1,19 +0,0 @@
modulejs.define('core/notify', ['$'], function ($) {
var template = '<div id="notify"/>';
function set(content) {
if (content) {
$('#notify').stop(true, true).html(content).fadeIn(400);
} else {
$('#notify').stop(true, true).fadeOut(400);
}
}
$(template).hide().appendTo('body');
return {
set: set
};
});

View File

@@ -1,55 +0,0 @@
modulejs.define('core/server', ['$', '_', 'config', 'core/location'], function ($, _, config, location) {
var hasApi = config.setup.API === true;
function request(data, callback) {
if (hasApi) {
$.ajax({
url: location.getAbsHref(),
data: data,
type: 'POST',
dataType: 'json'
})
.done(function (json) {
callback(json);
})
.fail(function () {
callback();
});
} else {
callback();
}
}
function formRequest(data) {
if (hasApi) {
var $form = $('<form method="post" style="display:none;"/>')
.attr('action', location.getAbsHref());
_.each(data, function (val, key) {
$('<input type="hidden"/>')
.attr('name', key)
.attr('value', val)
.appendTo($form);
});
$form.appendTo('body').submit().remove();
}
}
return {
backend: config.setup.BACKEND,
api: hasApi,
name: config.setup.SERVER_NAME,
version: config.setup.SERVER_VERSION,
request: request,
formRequest: formRequest
};
});

View File

@@ -1,8 +0,0 @@
modulejs.define('core/settings', ['config', '_'], function (config, _) {
return _.extend({}, config.options, {
appHref: config.setup.APP_HREF,
rootHref: config.setup.ROOT_HREF,
currentHref: config.setup.CURRENT_HREF
});
});

View File

@@ -1,41 +0,0 @@
modulejs.define('core/store', ['modernizr'], function (modernizr) {
var store = modernizr.localstorage ? window.localStorage : null;
var key = '_h5ai';
function load() {
if (store) {
try {
return JSON.parse(store[key]);
} catch (e) {}
}
return {};
}
function save(obj) {
if (store) {
store[key] = JSON.stringify(obj);
}
}
function put(key, value) {
var obj = load();
obj[key] = value;
return save(obj);
}
function get(key) {
return load()[key];
}
return {
put: put,
get: get
};
});

View File

@@ -1,86 +0,0 @@
modulejs.define('ext/crumb', ['_', '$', 'core/settings', 'core/resource', 'core/event', 'core/location'], function (_, $, allsettings, resource, event, location) {
var settings = _.extend({
enabled: false
}, allsettings.crumb);
var template =
'<a class="crumb">' +
'<img class="sep" src="' + resource.image('crumb') + '" alt=">"/>' +
'<span class="label"/>' +
'</a>';
var pageHintTemplate = '<img class="hint" src="' + resource.icon('folder-page') + '" alt="has index page"/>';
function update(item, force) {
if (!force && item.$crumb) {
return item.$crumb;
}
var $html = $(template);
$html
.addClass(item.isFolder() ? 'folder' : 'file')
.data('item', item);
location.setLink($html, item);
$html.find('.label').text(item.label).end();
if (item.isDomain() || item.isRoot()) {
$html.find('.sep').width(0);
}
if (item.isCurrentFolder()) {
$html.addClass('active');
}
if (!item.isManaged) {
$html.append($(pageHintTemplate));
}
if (item.$crumb) {
item.$crumb.replaceWith($html);
}
item.$crumb = $html;
return $html;
}
function onLocationChanged(item) {
var crumb = item.getCrumb();
var $crumbbar = $('#crumbbar');
var found = false;
$crumbbar.find('.crumb').each(function () {
var $html = $(this);
if ($html.data('item') === item) {
found = true;
$html.addClass('active');
} else {
$html.removeClass('active');
}
});
if (!found) {
$crumbbar.find('.crumb').remove();
_.each(crumb, function (e) {
$crumbbar.append(update(e, true));
});
}
}
function init() {
if (!settings.enabled) {
return;
}
event.sub('location.changed', onLocationChanged);
}
init();
});

View File

@@ -1,61 +0,0 @@
modulejs.define('ext/custom', ['_', '$', 'marked', 'core/settings', 'core/server', 'core/event', 'core/resource'], function (_, $, marked, allsettings, server, event, resource) {
var settings = _.extend({
enabled: false
}, allsettings.custom);
var $header, $footer;
var duration = 200;
function onLocationChanged(item) {
server.request({action: 'get', custom: true, customHref: item.absHref}, function (response) {
var has_header, has_footer, data, content;
if (response) {
data = response.custom;
if (data.header) {
content = data.header;
if (data.header_type === 'md') {
content = marked(content);
}
$header.html(content).stop().slideDown(duration);
has_header = true;
}
if (data.footer) {
content = data.footer;
if (data.footer_type === 'md') {
content = marked(content);
}
$footer.html(content).stop().slideDown(duration);
has_footer = true;
}
}
if (!has_header) {
$header.stop().slideUp(duration);
}
if (!has_footer) {
$footer.stop().slideUp(duration);
}
});
}
function init() {
if (!settings.enabled) {
return;
}
$header = $('<div id="content-header"/>').hide().prependTo('#content');
$footer = $('<div id="content-footer"/>').hide().appendTo('#content');
event.sub('location.changed', onLocationChanged);
}
init();
});

View File

@@ -1,110 +0,0 @@
modulejs.define('ext/filter', ['_', '$', 'core/settings', 'core/resource', 'core/event'], function (_, $, allsettings, resource, event) {
var settings = _.extend({
enabled: false
}, allsettings.filter);
var template =
'<div id="filter" class="tool">' +
'<img src="' + resource.image('filter') + '" alt="filter"/>' +
'<input type="text" value="" placeholder="filter"/>' +
'</div>';
var noMatchTemplate = '<div class="no-match l10n-noMatch"/>';
var inputIsVisible = false;
var $filter, $input, $noMatch;
function filter(re) {
var match = [];
var noMatch = [];
var duration = 200;
if (re) {
$('#items .item').not('.folder-parent').each(function () {
var label = $(this).find('.label').text();
if (label.match(re)) {
match.push(this);
} else {
noMatch.push(this);
}
});
} else {
match = $('#items .item').not('.folder-parent');
}
if (match.length) {
$noMatch.hide();
} else if (noMatch.length) {
setTimeout(function () { $noMatch.show(); }, duration);
}
$(match).fadeIn(duration);
$(noMatch).fadeOut(duration);
}
function escapeRegExp(sequence) {
return sequence.replace(/[\-\[\]{}()*+?.,\\$\^|#\s]/g, '\\$&');
}
function parseFilterSequence(sequence) {
if (sequence.substr(0, 3) === 're:') {
return new RegExp(sequence.substr(3));
}
sequence = $.map($.trim(sequence).split(/\s+/), function (part) {
return _.map(part.split(''), function (character) {
return escapeRegExp(character);
}).join('.*?');
}).join('|');
return new RegExp(sequence, 'i');
}
function update() {
if (inputIsVisible) {
var val = $input.val();
filter(parseFilterSequence(val));
$filter.addClass('active');
$input.focus();
} else {
filter();
$filter.removeClass('active');
}
}
function toggle() {
inputIsVisible = !inputIsVisible;
update();
}
function reset() {
$input.val('');
update();
}
function init() {
if (!settings.enabled) {
return;
}
$filter = $(template).appendTo('#toolbar');
$input = $filter.find('input');
$noMatch = $(noMatchTemplate).appendTo('#view');
$filter.on('click', 'img', toggle);
$input.on('keyup', update);
event.sub('location.changed', reset);
}
init();
});

View File

@@ -1,48 +0,0 @@
modulejs.define('ext/google-analytics-ua', ['_', 'core/settings', 'core/event'], function (_, allsettings, event) {
var settings = _.extend({
enabled: false,
id: 'UA-000000-0'
}, allsettings['google-analytics-ua']);
var win = window;
var doc = document;
var scriptLiteral = 'script';
var id = 'h5ai-ga';
function init() {
if (!settings.enabled) {
return;
}
var el, firstScriptElement;
win.GoogleAnalyticsObject = id;
win[id] = win[id] || function () {
(win[id].q = win[id].q || []).push(arguments);
};
win[id].l = 1 * new Date();
el = doc.createElement(scriptLiteral);
el.async = true;
el.src = '//www.google-analytics.com/analytics.js';
firstScriptElement = doc.getElementsByTagName(scriptLiteral)[0];
firstScriptElement.parentNode.insertBefore(el, firstScriptElement);
win[id]('create', settings.id, 'auto');
event.sub('location.changed', function (item) {
var loc = win.location;
win[id]('send', 'pageview', {
location: loc.protocol + '//' + loc.host + item.absHref,
title: _.pluck(item.getCrumb(), 'label').join(' > ')
});
});
}
init();
});

View File

@@ -1,123 +0,0 @@
modulejs.define('ext/preview-audio', ['_', '$', 'moment', 'core/settings', 'core/event', 'ext/preview'], function (_, $, moment, allsettings, event, preview) {
var settings = _.extend({
enabled: false,
types: []
}, allsettings['preview-aud']);
function preloadAudio(src, callback) {
var $audio = $('<audio/>')
.one('loadedmetadata', function () {
callback($audio);
// setTimeout(function () { callback($img); }, 1000); // for testing
})
.attr('autoplay', 'autoplay')
.attr('controls', 'controls')
.attr('src', src);
}
function onEnter(items, idx) {
var currentItems = items;
var currentIdx = idx;
var currentItem = items[idx];
function onAdjustSize() {
var $content = $('#pv-content');
var $audio = $('#pv-aud-audio');
if ($audio.length) {
$audio.css({
'left': '' + (($content.width()-$audio.width())*0.5) + 'px',
'top': '' + (($content.height()-$audio.height())*0.5) + 'px'
});
preview.setLabels([
currentItem.label,
moment(0).add('seconds', $audio[0].duration).format('m:ss')
]);
}
}
function onIdxChange(rel) {
currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
currentItem = currentItems[currentIdx];
var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200);
if ($('#pv-aud-audio').length) {
$('#pv-aud-audio')[0].pause();
}
preloadAudio(currentItem.absHref, function ($preloaded_audio) {
clearTimeout(spinnerTimeout);
preview.showSpinner(false);
$('#pv-content').fadeOut(100, function () {
$('#pv-content').empty().append($preloaded_audio.attr('id', 'pv-aud-audio')).fadeIn(200);
// small timeout, so $preloaded_audio is visible and therefore $preloaded_audio.width is available
setTimeout(function () {
onAdjustSize();
preview.setIndex(currentIdx + 1, currentItems.length);
preview.setRawLink(currentItem.absHref);
}, 10);
});
});
}
onIdxChange(0);
preview.setOnIndexChange(onIdxChange);
preview.setOnAdjustSize(onAdjustSize);
preview.enter();
}
function initItem(item) {
if (item.$view && _.indexOf(settings.types, item.type) >= 0) {
item.$view.find('a').on('click', function (event) {
event.preventDefault();
var matchedEntries = _.compact(_.map($('#items .item'), function (item) {
item = $(item).data('item');
return _.indexOf(settings.types, item.type) >= 0 ? item : null;
}));
onEnter(matchedEntries, _.indexOf(matchedEntries, item));
});
}
}
function onLocationChanged(item) {
_.each(item.content, initItem);
}
function onLocationRefreshed(item, added, removed) {
_.each(added, initItem);
}
function init() {
if (!settings.enabled) {
return;
}
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
}
init();
});

View File

@@ -1,172 +0,0 @@
modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/event', 'core/server', 'ext/preview'], function (_, $, allsettings, event, server, preview) {
var settings = _.extend({
enabled: false,
size: null,
types: []
}, allsettings['preview-img']);
var templateLoading = '<img id="pv-img-image" class="loading"/>';
var spinnerThreshold = 200;
var currentItems, currentIdx, currentItem;
function requestSample(href, callback) {
if (!settings.size) {
callback(href);
return;
}
server.request({
action: 'getThumbHref',
type: 'img',
href: href,
width: settings.size,
height: 0
}, function (json) {
callback(json && json.code === 0 ? json.absHref : null);
});
}
function showSpinner(item) {
var timeoutId;
function start() {
$('#pv-content')
.empty()
.append($(templateLoading).attr('src', item.thumbSquare))
.show();
onAdjustSize();
preview.setLabels([item.label]);
preview.showSpinner(true);
}
function stop() {
clearTimeout(timeoutId);
preview.showSpinner(false);
}
timeoutId = setTimeout(start, spinnerThreshold);
return stop;
}
function preloadImg(item, callback) {
var hide = showSpinner(item);
requestSample(item.absHref, function (src) {
$('<img/>')
.one('load', function (ev) {
hide();
callback(item, ev.target);
// for testing
// setTimeout(function () { hide(); callback(item, ev.target); }, 1000);
})
.attr('src', src);
});
}
function onAdjustSize() {
var $content = $('#pv-content');
var $img = $('#pv-img-image');
if ($img.length === 0) {
return;
}
$img.css({
left: ($content.width() - $img.width()) * 0.5,
top: ($content.height() - $img.height()) * 0.5
});
var labels = [currentItem.label];
if (!settings.size) {
labels.push('' + $img[0].naturalWidth + 'x' + $img[0].naturalHeight);
labels.push('' + (100 * $img.width() / $img[0].naturalWidth).toFixed(0) + '%');
}
preview.setLabels(labels);
}
function onIdxChange(rel) {
currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
currentItem = currentItems[currentIdx];
preview.setIndex(currentIdx + 1, currentItems.length);
preview.setRawLink(currentItem.absHref);
preloadImg(currentItem, function (item, preloaded_img) {
if (item !== currentItem) {
return;
}
$('#pv-content')
.empty()
.append($(preloaded_img).attr('id', 'pv-img-image'))
.show();
onAdjustSize();
});
}
function onEnter(items, idx) {
currentItems = items;
currentIdx = idx;
onIdxChange(0);
preview.setOnIndexChange(onIdxChange);
preview.setOnAdjustSize(onAdjustSize);
preview.enter();
}
function initItem(item) {
if (item.$view && _.indexOf(settings.types, item.type) >= 0) {
item.$view.find('a').on('click', function (ev) {
ev.preventDefault();
var matchedEntries = _.compact(_.map($('#items .item'), function (item) {
item = $(item).data('item');
return _.indexOf(settings.types, item.type) >= 0 ? item : null;
}));
onEnter(matchedEntries, _.indexOf(matchedEntries, item));
});
}
}
function onLocationChanged(item) {
_.each(item.content, initItem);
}
function onLocationRefreshed(item, added, removed) {
_.each(added, initItem);
}
function init() {
if (!settings.enabled) {
return;
}
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
}
init();
});

View File

@@ -1,138 +0,0 @@
modulejs.define('ext/preview-txt', ['_', '$', 'marked', 'prism', 'core/settings', 'core/event', 'ext/preview'], function (_, $, marked, prism, allsettings, event, preview) {
var settings = _.extend({
enabled: false,
types: {}
}, allsettings['preview-txt']);
var templateText = '<pre id="pv-txt-text" class="highlighted"/>';
var templateMarkdown = '<div id="pv-txt-text" class="markdown"/>';
function preloadText(absHref, callback) {
$.ajax({
url: absHref,
dataType: 'text'
})
.done(function (content) {
callback(content);
// setTimeout(function () { callback(content); }, 1000); // for testing
})
.fail(function (jqXHR, textStatus, errorThrown) {
callback('[ajax error] ' + textStatus);
});
}
function onEnter(items, idx) {
var currentItems = items;
var currentIdx = idx;
var currentItem = items[idx];
function onAdjustSize() {
var $content = $('#pv-content');
var $text = $('#pv-txt-text');
if ($text.length) {
$text.height($content.height() - 16);
}
}
function onIdxChange(rel) {
currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
currentItem = currentItems[currentIdx];
var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200);
preloadText(currentItem.absHref, function (textContent) {
clearTimeout(spinnerTimeout);
preview.showSpinner(false);
$('#pv-content').fadeOut(100, function () {
var type = settings.types[currentItem.type];
var $text, $code;
if (type === 'none') {
$text = $(templateMarkdown).text(textContent);
} else if (type === 'fixed') {
$text = $(templateText).text(textContent);
} else if (type === 'markdown') {
$text = $(templateMarkdown).html(marked(textContent));
} else {
$text = $(templateText);
$code = $('<code/>').appendTo($text);
if (textContent.length < 20000) {
$code.empty().html(prism.highlight(textContent, prism.languages[type]));
} else {
$code.empty().text(textContent);
setTimeout(function () { $code.empty().html(prism.highlight(textContent, prism.languages[type])); }, 300);
}
}
$('#pv-content').empty().append($text).fadeIn(200);
onAdjustSize();
preview.setIndex(currentIdx + 1, currentItems.length);
preview.setLabels([
currentItem.label,
'' + currentItem.size + ' bytes'
]);
preview.setRawLink(currentItem.absHref);
});
});
}
onIdxChange(0);
preview.setOnIndexChange(onIdxChange);
preview.setOnAdjustSize(onAdjustSize);
preview.enter();
}
function initItem(item) {
if (item.$view && _.indexOf(_.keys(settings.types), item.type) >= 0) {
item.$view.find('a').on('click', function (event) {
event.preventDefault();
var matchedEntries = _.compact(_.map($('#items .item'), function (item) {
item = $(item).data('item');
return _.indexOf(_.keys(settings.types), item.type) >= 0 ? item : null;
}));
onEnter(matchedEntries, _.indexOf(matchedEntries, item));
});
}
}
function onLocationChanged(item) {
_.each(item.content, initItem);
}
function onLocationRefreshed(item, added, removed) {
_.each(added, initItem);
}
function init() {
if (!settings.enabled) {
return;
}
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
}
init();
});

View File

@@ -1,124 +0,0 @@
modulejs.define('ext/preview-vid', ['_', '$', 'core/settings', 'core/event', 'ext/preview'], function (_, $, allsettings, event, preview) {
var settings = _.extend({
enabled: false,
types: []
}, allsettings['preview-vid']);
function preloadVid(src, callback) {
var $video = $('<video/>')
.one('loadedmetadata', function () {
callback($video);
// setTimeout(function () { callback($video); }, 1000); // for testing
})
.attr('autoplay', 'autoplay')
.attr('controls', 'controls')
.attr('src', src);
}
function onEnter(items, idx) {
var currentItems = items;
var currentIdx = idx;
var currentItem = items[idx];
function onAdjustSize() {
var $content = $('#pv-content'),
$vid = $('#pv-vid-video');
if ($vid.length) {
$vid.css({
'left': '' + (($content.width()-$vid.width())*0.5) + 'px',
'top': '' + (($content.height()-$vid.height())*0.5) + 'px'
});
preview.setLabels([
currentItem.label,
'' + $vid[0].videoWidth + 'x' + $vid[0].videoHeight,
'' + (100 * $vid.width() / $vid[0].videoWidth).toFixed(0) + '%'
]);
}
}
function onIdxChange(rel) {
currentIdx = (currentIdx + rel + currentItems.length) % currentItems.length;
currentItem = currentItems[currentIdx];
var spinnerTimeout = setTimeout(function () { preview.showSpinner(true); }, 200);
if ($('#pv-vid-video').length) {
$('#pv-vid-video')[0].pause();
}
preloadVid(currentItem.absHref, function ($preloaded_vid) {
clearTimeout(spinnerTimeout);
preview.showSpinner(false);
$('#pv-content').fadeOut(100, function () {
$('#pv-content').empty().append($preloaded_vid.attr('id', 'pv-vid-video')).fadeIn(200);
// small timeout, so $preloaded_vid is visible and therefore $preloaded_vid.width is available
setTimeout(function () {
onAdjustSize();
preview.setIndex(currentIdx + 1, currentItems.length);
preview.setRawLink(currentItem.absHref);
}, 10);
});
});
}
onIdxChange(0);
preview.setOnIndexChange(onIdxChange);
preview.setOnAdjustSize(onAdjustSize);
preview.enter();
}
function initItem(item) {
if (item.$view && _.indexOf(settings.types, item.type) >= 0) {
item.$view.find('a').on('click', function (event) {
event.preventDefault();
var matchedEntries = _.compact(_.map($('#items .item'), function (item) {
item = $(item).data('item');
return _.indexOf(settings.types, item.type) >= 0 ? item : null;
}));
onEnter(matchedEntries, _.indexOf(matchedEntries, item));
});
}
}
function onLocationChanged(item) {
_.each(item.content, initItem);
}
function onLocationRefreshed(item, added, removed) {
_.each(added, initItem);
}
function init() {
if (!settings.enabled) {
return;
}
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
}
init();
});

View File

@@ -1,91 +0,0 @@
modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/server', 'core/resource'], function (_, allsettings, event, server, resource) {
var settings = _.extend({
enabled: false,
img: ['img-bmp', 'img-gif', 'img-ico', 'img-jpg', 'img-png'],
mov: ['vid-avi', 'vid-flv', 'vid-mkv', 'vid-mov', 'vid-mp4', 'vid-mpg', 'vid-webm'],
doc: ['x-pdf', 'x-ps'],
delay: 1,
size: 100,
exif: true
}, allsettings.thumbnails);
function requestThumb(type, href, ratio, callback) {
server.request({
action: 'getThumbHref',
type: type,
href: href,
width: Math.round(settings.size * ratio),
height: settings.size
}, function (json) {
callback(json && json.code === 0 ? json.absHref : null);
});
}
function checkItem(item) {
var type = null;
if (_.contains(settings.img, item.type)) {
type = 'img';
} else if (_.contains(settings.mov, item.type)) {
type = 'mov';
} else if (_.contains(settings.doc, item.type)) {
type = 'doc';
}
if (type) {
if (item.thumbSquare) {
item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
} else {
requestThumb(type, item.absHref, 1, function (src) {
if (src && item.$view) {
item.thumbSquare = src;
item.$view.find('.icon.square img').addClass('thumb').attr('src', src);
}
});
}
if (item.thumbRational) {
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', item.thumbRational);
} else {
requestThumb(type, item.absHref, 4/3, function (src) {
if (src && item.$view) {
item.thumbRational = src;
item.$view.find('.icon.landscape img').addClass('thumb').attr('src', src);
}
});
}
}
}
function onLocationChanged(item) {
setTimeout(function () {
_.each(item.content, checkItem);
}, settings.delay);
}
function onLocationRefreshed(item, added, removed) {
_.each(added, checkItem);
}
function init() {
if (!settings.enabled || !server.api) {
return;
}
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
}
init();
});

View File

@@ -1,16 +0,0 @@
modulejs.define('main', ['_', 'core/event'], function (_, event) {
modulejs.require('view/ensure');
modulejs.require('view/items');
modulejs.require('view/sidebar');
modulejs.require('view/viewmode');
_.each(modulejs.state(), function (state, id) {
if (id.indexOf('ext/') === 0) {
modulejs.require(id);
}
});
event.pub('ready');
});

View File

@@ -1,31 +0,0 @@
modulejs.define('view/ensure', ['$', 'config', 'core/event'], function ($, config, event) {
var templateTopbar =
'<div id="topbar">' +
'<div id="toolbar"/>' +
'<div id="crumbbar"/>' +
'</div>';
var templateMainRow =
'<div id="main-row">' +
'<div id="sidebar">' +
'<div id="settings"/>' +
'</div>' +
'</div>';
var templateBacklink =
'<a id="backlink" href="http://larsjung.de/h5ai/" title="powered by h5ai ' + config.setup.VERSION + '">' +
'<div>powered</div>' +
'<div>by h5ai</div>' +
'</a>';
function init() {
$('#fallback, #fallback-hints').remove();
$(templateTopbar).appendTo('body');
$(templateMainRow).appendTo('body');
$(templateBacklink).appendTo('#topbar');
}
init();
});

View File

@@ -1,169 +0,0 @@
modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core/format', 'core/event', 'core/location'], function (_, $, allsettings, resource, format, event, location) {
var settings = _.extend({
binaryPrefix: false,
hideFolders: false,
hideParentFolder: false,
setParentFolderLabels: false
}, allsettings.view);
var itemTemplate =
'<li class="item">' +
'<a>' +
'<span class="icon square"><img/></span>' +
'<span class="icon landscape"><img/></span>' +
'<span class="label"/>' +
'<span class="date"/>' +
'<span class="size"/>' +
'</a>' +
'</li>';
var hintTemplate = '<span class="hint"/>';
var contentTemplate =
'<div id="content">' +
'<div id="view">' +
'<ul id="items" class="clearfix">' +
'<li class="header">' +
'<a class="icon"/>' +
'<a class="label" href="#"><span class="l10n-name"/></a>' +
'<a class="date" href="#"><span class="l10n-lastModified"/></a>' +
'<a class="size" href="#"><span class="l10n-size"/></a>' +
'</li>' +
'</ul>' +
'<div class="empty l10n-empty"/>' +
'</div>' +
'</div>';
function update(item, force) {
if (!force && item.$view) {
return item.$view;
}
var $html = $(itemTemplate);
var $a = $html.find('a');
var $iconImg = $html.find('.icon img');
var $label = $html.find('.label');
var $date = $html.find('.date');
var $size = $html.find('.size');
$html
.addClass(item.isFolder() ? 'folder' : 'file')
.data('item', item);
location.setLink($a, item);
$label.text(item.label).attr('title', item.label);
$date.data('time', item.time).text(format.formatDate(item.time));
$size.data('bytes', item.size).text(format.formatSize(item.size));
item.icon = resource.icon(item.type);
if (item.isFolder() && !item.isManaged) {
$html.addClass('page');
item.icon = resource.icon('folder-page');
}
if (item.isCurrentParentFolder()) {
item.icon = resource.icon('folder-parent');
if (!settings.setParentFolderLabels) {
$label.addClass('l10n-parentDirectory');
}
$html.addClass('folder-parent');
}
$iconImg.attr('src', item.icon).attr('alt', item.type);
if (item.$view) {
item.$view.replaceWith($html);
}
item.$view = $html;
return $html;
}
function onMouseenter() {
var item = $(this).closest('.item').data('item');
event.pub('item.mouseenter', item);
}
function onMouseleave() {
var item = $(this).closest('.item').data('item');
event.pub('item.mouseleave', item);
}
function onLocationChanged(item) {
var $items = $('#items');
var $empty = $('#view').find('.empty');
$items.find('.item').remove();
if (item.parent && !settings.hideParentFolder) {
$items.append(update(item.parent, true));
}
_.each(item.content, function (e) {
if (!(e.isFolder() && settings.hideFolders)) {
$items.append(update(e, true));
}
});
if (item.isEmpty()) {
$empty.show();
} else {
$empty.hide();
}
$('html,body').scrollLeft(0).scrollTop(0);
}
function onLocationRefreshed(item, added, removed) {
var $items = $('#items');
var $empty = $('#view').find('.empty');
_.each(added, function (item) {
if (!(item.isFolder() && settings.hideFolders)) {
update(item, true).hide().appendTo($items).fadeIn(400);
}
});
_.each(removed, function (item) {
item.$view.fadeOut(400, function () {
item.$view.remove();
});
});
if (item.isEmpty()) {
setTimeout(function () { $empty.show(); }, 400);
} else {
$empty.hide();
}
}
function init() {
var $content = $(contentTemplate);
var $view = $content.find('#view');
var $items = $view.find('#items');
var $emtpy = $view.find('.empty').hide();
format.setDefaultMetric(settings.binaryPrefix);
$items
.on('mouseenter', '.item a', onMouseenter)
.on('mouseleave', '.item a', onMouseleave);
event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed);
// $content.appendTo('body');
$content.appendTo('#main-row');
}
init();
});

View File

@@ -1,48 +0,0 @@
modulejs.define('view/sidebar', ['$', 'core/resource', 'core/store'], function ($, resource, store) {
var storekey = 'sidebarIsVisible';
var toggleTemplate =
'<div id="sidebar-toggle" class="tool">' +
'<img alt="settings"/>' +
'</div>';
function update(toggle) {
var $toggle = $('#sidebar-toggle');
var $img = $toggle.find('img');
var $sidebar = $('#sidebar');
var isVisible = store.get(storekey);
if (toggle) {
isVisible = !isVisible;
store.put(storekey, isVisible);
}
if (isVisible) {
$toggle.addClass('current');
$img.attr('src', resource.image('back'));
$sidebar.show();
} else {
$toggle.removeClass('current');
$img.attr('src', resource.image('settings'));
$sidebar.hide();
}
}
function init() {
$(toggleTemplate)
.appendTo('#toolbar')
.on('click', function (ev) {
update(true);
ev.preventDefault();
});
update(false);
}
init();
});

View File

@@ -1,147 +0,0 @@
modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'core/store', 'core/event'], function (_, $, allsettings, resource, store, event) {
var modes = ['details', 'grid', 'icons'];
var settings = _.extend({}, {
modes: modes,
sizes: [20, 40, 60, 80, 100, 150, 200],
}, allsettings.view);
var storekey = 'viewmode';
var modeTemplate =
'<div id="view-[MODE]" class="button view">' +
'<img src="' + resource.image('view-[MODE]') + '" alt="view-[MODE]"/>' +
'</div>';
var sizeTemplate =
'<input id="view-size" type="range" min="0" max="0" value="0">';
var sortedSizes = settings.sizes.sort(function (a, b) { return a-b; });
var dynamicStyleTag = null;
function adjustSpacing() {
// kept here for later use
}
function applyCss(rules) {
if (dynamicStyleTag) {
document.head.removeChild(dynamicStyleTag);
}
dynamicStyleTag = document.createElement('style');
dynamicStyleTag.appendChild(document.createTextNode('')); // fix webkit
document.head.appendChild(dynamicStyleTag);
_.each(rules, function (rule, i) {
dynamicStyleTag.sheet.insertRule(rule, i);
});
}
function cropSize(size, min, max) {
return Math.min(max, Math.max(min, size));
}
function applyCssSizes(size) {
var dsize = cropSize(size, 20, 80);
var gsize = cropSize(size, 40, 150);
var isize = cropSize(size, 80, 2000);
var ilsize = Math.round(isize*4/3);
var rules = [
'#view.view-details .item .label { line-height: ' + (dsize+14) + 'px !important; }',
'#view.view-details .item .date { line-height: ' + (dsize+14) + 'px !important; }',
'#view.view-details .item .size { line-height: ' + (dsize+14) + 'px !important; }',
'#view.view-details .square { width: ' + dsize + 'px !important; height: ' + dsize + 'px !important; }',
'#view.view-details .square img { width: ' + dsize + 'px !important; height: ' + dsize + 'px !important; }',
'#view.view-details .label { margin: 0 246px 0 ' + (dsize+32) + 'px !important; }',
'#view.view-grid .item .label { line-height: ' + gsize + 'px !important; }',
'#view.view-grid .square { width: ' + gsize + 'px !important; height: ' + gsize + 'px !important; }',
'#view.view-grid .square img { width: ' + gsize + 'px !important; height: ' + gsize + 'px !important; }',
'#view.view-icons .item { width: ' + ilsize + 'px !important; }',
'#view.view-icons .landscape { width: ' + ilsize + 'px !important; height: ' + isize + 'px !important; }',
'#view.view-icons .landscape img { width: ' + isize + 'px !important; height: ' + isize + 'px !important; }',
'#view.view-icons .landscape .thumb { width: ' + ilsize + 'px !important; }'
];
applyCss(rules);
}
function update(mode, size) {
var $view = $('#view');
var stored = store.get(storekey);
mode = mode || stored && stored.mode;
size = size || stored && stored.size;
mode = _.contains(settings.modes, mode) ? mode : settings.modes[0];
size = _.contains(settings.sizes, size) ? size : settings.sizes[0];
store.put(storekey, {mode: mode, size: size});
_.each(modes, function (m) {
if (m === mode) {
$('#view-' + m).addClass('active');
$view.addClass('view-' + m).show();
} else {
$('#view-' + m).removeClass('active');
$view.removeClass('view-' + m);
}
});
applyCssSizes(size);
$('#view-size').val(_.indexOf(sortedSizes, size));
adjustSpacing();
}
function addViewSettings() {
if (settings.modes.length < 2 && settings.sizes.length < 2) {
return;
}
var $viewBlock = $('<div class="block"><h1 class="l10n-view">View</h1></div>');
var max;
settings.modes = _.intersection(settings.modes, modes);
if (settings.modes.length > 1) {
_.each(modes, function (mode) {
if (_.contains(settings.modes, mode)) {
$(modeTemplate.replace(/\[MODE\]/g, mode))
.appendTo($viewBlock)
.on('click', function (ev) {
update(mode);
ev.preventDefault();
});
}
});
}
if (settings.sizes.length > 1) {
max = settings.sizes.length-1;
$(sizeTemplate)
.prop('max', max).attr('max', max)
.on('input change', function (ev) {
update(null, settings.sizes[parseInt(ev.target.value, 10)]);
})
.appendTo($viewBlock);
}
$viewBlock.appendTo('#settings');
}
function init() {
addViewSettings();
update();
event.sub('location.changed', adjustSpacing);
$(window).on('resize', adjustSpacing);
}
init();
});

File diff suppressed because one or more lines are too long

View File

@@ -1,33 +0,0 @@
/**
* @license
* lodash 3.6.0 (Custom Build) lodash.com/license | Underscore.js 1.8.2 underscorejs.org/LICENSE
* Build: `lodash exports="global" include="compact,contains,difference,each,extend,filter,indexOf,intersection,isFunction,isNumber,isString,keys,map,pluck,sortBy,values,without"`
*/
;(function(){function n(n,r,t){if(r!==r){n:{for(r=n.length,t+=-1;++t<r;){var e=n[t];if(e!==e){n=t;break n}}n=-1}return n}for(t-=1,e=n.length;++t<e;)if(n[t]===r)return t;return-1}function r(n){return typeof n=="function"||false}function t(n,r){var t;n:{t=n.a;var e=r.a;if(t!==e){var u=t===t,o=e===e;if(t>e||!u||typeof t=="undefined"&&o){t=1;break n}if(t<e||!o||typeof e=="undefined"&&u){t=-1;break n}}t=0}return t||n.b-r.b}function e(n){return!!n&&typeof n=="object"}function u(){}function o(n){var r=n?n.length:0;
for(this.data={hash:tt(null),set:new Qr};r--;)this.push(n[r])}function c(n,r){var t=n.data;return(typeof r=="string"||G(r)?t.set.has(r):t.hash[r])?0:-1}function f(n,r){var t=-1,e=n.length;for(r||(r=Array(e));++t<e;)r[t]=n[t];return r}function a(n,r){for(var t=-1,e=n.length;++t<e&&false!==r(n[t],t,n););return n}function i(n,r){for(var t=-1,e=n.length,u=-1,o=[];++t<e;){var c=n[t];r(c,t,n)&&(o[++u]=c)}return o}function l(n,r){for(var t=-1,e=n.length,u=Array(e);++t<e;)u[t]=r(n[t],t,n);return u}function s(n,r,t){t||(t=r,r={});
for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function p(n,r,t){var e=typeof n;return"function"==e?typeof r=="undefined"?n:O(n,r,t):null==n?tr:"object"==e?A(n):typeof r=="undefined"?x(n+""):w(n+"",r)}function y(n,r,t,e,u,o,c){var i;if(t&&(i=u?t(n,e,u):t(n)),typeof i!="undefined")return i;if(!G(n))return n;if(e=jt(n)){if(i=F(n),!r)return f(n,i)}else{var l=qr.call(n),p=l==sr;if(l!=yr&&l!=cr&&(!p||u))return Fr[l]?T(n,l,r):u?n:{};if(Br(n))return u?n:{};if(i=U(p?{}:n),!r)return s(n,i,xt(n))
}for(o||(o=[]),c||(c=[]),u=o.length;u--;)if(o[u]==n)return c[u];return o.push(n),c.push(i),(e?a:b)(n,function(e,u){i[u]=y(e,r,t,u,n,o,c)}),i}function h(r,t){var e=r?r.length:0,u=[];if(!e)return u;var o=-1,f=P(),a=f==n,i=a&&200<=t.length?vt(t):null,l=t.length;i&&(f=c,a=false,t=i);n:for(;++o<e;)if(i=r[o],a&&i===i){for(var s=l;s--;)if(t[s]===i)continue n;u.push(i)}else 0>f(t,i,0)&&u.push(i);return u}function g(n,r){var t=[];return ht(n,function(n,e,u){r(n,e,u)&&t.push(n)}),t}function v(n,r,t){for(var u=-1,o=n.length,c=-1,f=[];++u<o;){var a=n[u];
if(e(a)&&$(a.length)&&(jt(a)||z(a))){r&&(a=v(a,r,t));var i=-1,l=a.length;for(f.length+=l;++i<l;)f[++c]=a[i]}else t||(f[++c]=a)}return f}function b(n,r){return gt(n,r,xt)}function d(n,r,t,e,u,o){if(n===r)return 0!==n||1/n==1/r;var c=typeof n,f=typeof r;return"function"!=c&&"object"!=c&&"function"!=f&&"object"!=f||null==n||null==r?n!==n&&r!==r:m(n,r,d,t,e,u,o)}function m(n,r,t,e,u,o,c){var f=jt(n),a=jt(r),i=fr,l=fr;f||(i=qr.call(n),i==cr?i=yr:i!=yr&&(f=K(n))),a||(l=qr.call(r),l==cr?l=yr:l!=yr&&K(r));
var s=(i==yr||u&&i==sr)&&!Br(n),a=(l==yr||u&&l==sr)&&!Br(r);if((l=i==l)&&!f&&!s)return I(n,r,i);if(u){if(!(l||s&&a))return false}else{if(i=s&&Yr.call(n,"__wrapped__"),a=a&&Yr.call(r,"__wrapped__"),i||a)return t(i?n.value():n,a?r.value():r,e,u,o,c);if(!l)return false}for(o||(o=[]),c||(c=[]),i=o.length;i--;)if(o[i]==n)return c[i]==r;return o.push(n),c.push(r),n=(f?k:_)(n,r,t,e,u,o,c),o.pop(),c.pop(),n}function j(n,r){var t=[];return ht(n,function(n,e,u){t.push(r(n,e,u))}),t}function A(n){var r=xt(n),t=r.length;
if(!t)return rr(true);if(1==t){var e=r[0],u=n[e];if(B(u))return function(n){return null!=n&&n[e]===u&&(typeof u!="undefined"||e in L(n))}}for(var o=Array(t),c=Array(t);t--;)u=n[r[t]],o[t]=u,c[t]=B(u);return function(n){var t;if(t=null!=n)n:{n=L(n),t=-1;for(var e=r.length;++t<e;)if(c[t]?o[t]!==n[r[t]]:!(r[t]in n)){t=false;break n}for(t=-1;++t<e;){var u=r[t],f=n[u],a=o[t];if(c[t]?u=typeof f!="undefined"||u in n:(u=ur,typeof u=="undefined"&&(u=d(a,f,void 0,true))),!u){t=false;break n}}t=true}return t}}function w(n,r){return B(r)?function(t){return null!=t&&t[n]===r&&(typeof r!="undefined"||n in L(t))
}:function(t){return null!=t&&d(r,t[n],null,true)}}function x(n){return function(r){return null==r?ur:r[n]}}function E(n,r){var t=n.length;for(n.sort(r);t--;)n[t]=n[t].c;return n}function O(n,r,t){if(typeof n!="function")return tr;if(typeof r=="undefined")return n;switch(t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)};case 5:return function(t,e,u,o,c){return n.call(r,t,e,u,o,c)}}return function(){return n.apply(r,arguments)
}}function S(n){return Hr.call(n,0)}function k(n,r,t,e,u,o,c){var f=-1,a=n.length,i=r.length,l=true;if(a!=i&&(!u||i<=a))return false;for(;l&&++f<a;){var s=n[f],p=r[f],l=ur;if(e&&(l=u?e(p,s,f):e(s,p,f)),typeof l=="undefined")if(u)for(var y=i;y--&&(p=r[y],!(l=s&&s===p||t(s,p,e,u,o,c))););else l=s&&s===p||t(s,p,e,u,o,c)}return!!l}function I(n,r,t){switch(t){case ar:case ir:return+n==+r;case lr:return n.name==r.name&&n.message==r.message;case pr:return n!=+n?r!=+r:0==n?1/n==1/r:n==+r;case hr:case gr:return n==r+""
}return false}function _(n,r,t,e,u,o,c){var f=xt(n),a=f.length,i=xt(r).length;if(a!=i&&!u)return false;for(var i=u,l=-1;++l<a;){var s=f[l],p=u?s in r:Yr.call(r,s);if(p){var y=n[s],h=r[s],p=ur;e&&(p=u?e(h,y,s):e(y,h,s)),typeof p=="undefined"&&(p=y&&y===h||t(y,h,e,u,o,c))}if(!p)return false;i||(i="constructor"==s)}return i||(t=n.constructor,e=r.constructor,!(t!=e&&"constructor"in n&&"constructor"in r)||typeof t=="function"&&t instanceof t&&typeof e=="function"&&e instanceof e)?true:false}function M(n,r,t){var e=u.callback||nr,e=e===nr?p:e;
return t?e(n,r,t):e}function P(r,t,e){var o=u.indexOf||D,o=o===D?n:o;return r?o(r,t,e):o}function F(n){var r=n.length,t=new n.constructor(r);return r&&"string"==typeof n[0]&&Yr.call(n,"index")&&(t.index=n.index,t.input=n.input),t}function U(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Object),new n}function T(n,r,t){var e=n.constructor;switch(r){case vr:return S(n);case ar:case ir:return new e(+n);case br:case dr:case mr:case jr:case Ar:case wr:case xr:case Er:case Or:return e instanceof e&&(e=st[r]),r=n.buffer,new e(t?S(r):r,n.byteOffset,n.length);
case pr:case gr:return new e(n);case hr:var u=new e(n.source,Sr.exec(n));u.lastIndex=n.lastIndex}return u}function N(n,r){return n=+n,r=null==r?lt:r,-1<n&&0==n%1&&n<r}function R(n,r,t){if(!G(t))return false;var e=typeof r;return"number"==e?(e=t.length,e=$(e)&&N(r,e)):e="string"==e&&r in t,e?(r=t[r],n===n?n===r:r!==r):false}function $(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=lt}function B(n){return n===n&&(0===n?0<1/n:!G(n))}function C(n){for(var r=Q(n),t=r.length,e=t&&n.length,o=u.support,o=e&&$(e)&&(jt(n)||o.nonEnumStrings&&J(n)||o.nonEnumArgs&&z(n)),c=-1,f=[];++c<t;){var a=r[c];
(o&&N(a,e)||Yr.call(n,a))&&f.push(a)}return f}function L(n){if(u.support.unindexedChars&&J(n)){for(var r=-1,t=n.length,e=Object(n);++r<t;)e[r]=n.charAt(r);return e}return G(n)?n:Object(n)}function D(r,t,e){var u=r?r.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?ut(u+e,0):e;else if(e){if(e=0,u=r?r.length:e,typeof t!="number"||t!==t||u>at){u=tr,e=u(t);for(var o=0,c=r?r.length:0,f=e!==e,a=typeof e=="undefined";o<c;){var i=Jr((o+c)/2),l=u(r[i]),s=l===l;(f?s:a?s&&typeof l!="undefined":l<e)?o=i+1:c=i
}e=ot(c,ft)}else{for(;e<u;){var o=e+u>>>1;r[o]<t?e=o+1:u=o}e=u}return r=r[e],(t===t?t===r:r!==r)?e:-1}return n(r,t,e||0)}function W(n,r,t){var e=jt(n)?i:g;return r=M(r,t,3),e(n,r)}function V(n,r,t,e){var u=n?n.length:0;return $(u)||(n=X(n),u=n.length),u?(t=typeof t!="number"||e&&R(r,t,e)?0:0>t?ut(u+t,0):t||0,typeof n=="string"||!jt(n)&&J(n)?t<u&&-1<n.indexOf(r,t):-1<P(n,r,t)):false}function Y(n,r,t){var e=jt(n)?l:j;return r=M(r,t,3),e(n,r)}function q(n,r){if(typeof n!="function")throw new TypeError(or);
return r=ut(typeof r=="undefined"?n.length-1:+r||0,0),function(){for(var t=arguments,e=-1,u=ut(t.length-r,0),o=Array(u);++e<u;)o[e]=t[r+e];switch(r){case 0:return n.call(this,o);case 1:return n.call(this,t[0],o);case 2:return n.call(this,t[0],t[1],o)}for(u=Array(r+1),e=-1;++e<r;)u[e]=t[e];return u[r]=o,n.apply(this,u)}}function z(n){var r=e(n)?n.length:ur;return $(r)&&qr.call(n)==cr}function G(n){var r=typeof n;return"function"==r||!!n&&"object"==r}function H(n){return null==n?false:qr.call(n)==sr?zr.test(Vr.call(n)):e(n)&&(Br(n)?zr:kr).test(n)
}function J(n){return typeof n=="string"||e(n)&&qr.call(n)==gr}function K(n){return e(n)&&$(n.length)&&!!Pr[qr.call(n)]}function Q(n){if(null==n)return[];G(n)||(n=Object(n));for(var r=n.length,t=u.support,r=r&&$(r)&&(jt(n)||t.nonEnumStrings&&J(n)||t.nonEnumArgs&&z(n))&&r||0,e=n.constructor,o=-1,e=At(e)&&e.prototype||Dr,c=e===n,f=Array(r),a=0<r,i=t.enumErrorProps&&(n===Lr||n instanceof Error),l=t.enumPrototypes&&At(n);++o<r;)f[o]=o+"";for(var s in n)l&&"prototype"==s||i&&("message"==s||"name"==s)||a&&N(s,r)||"constructor"==s&&(c||!Yr.call(n,s))||f.push(s);
if(t.nonEnumShadows&&n!==Dr)for(r=n===Wr?gr:n===Lr?lr:qr.call(n),t=pt[r]||pt[yr],r==yr&&(e=Dr),r=Mr.length;r--;)s=Mr[r],o=t[s],c&&o||(o?!Yr.call(n,s):n[s]===e[s])||f.push(s);return f}function X(n){for(var r=xt(n),t=-1,e=r.length,u=Array(e);++t<e;)u[t]=n[r[t]];return u}function Z(n){return typeof n!="string"&&(n=null==n?"":n+""),n&&_r.test(n)?n.replace(Ir,"\\$&"):n}function nr(n,r,t){return t&&R(n,r,t)&&(r=null),e(n)?er(n):p(n,r)}function rr(n){return function(){return n}}function tr(n){return n}function er(n){return A(y(n,true))
}var ur,or="Expected a function",cr="[object Arguments]",fr="[object Array]",ar="[object Boolean]",ir="[object Date]",lr="[object Error]",sr="[object Function]",pr="[object Number]",yr="[object Object]",hr="[object RegExp]",gr="[object String]",vr="[object ArrayBuffer]",br="[object Float32Array]",dr="[object Float64Array]",mr="[object Int8Array]",jr="[object Int16Array]",Ar="[object Int32Array]",wr="[object Uint8Array]",xr="[object Uint8ClampedArray]",Er="[object Uint16Array]",Or="[object Uint32Array]",Sr=/\w*$/,kr=/^\[object .+?Constructor\]$/,Ir=/[.*+?^${}()|[\]\/\\]/g,_r=RegExp(Ir.source),Mr="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Pr={};
Pr[br]=Pr[dr]=Pr[mr]=Pr[jr]=Pr[Ar]=Pr[wr]=Pr[xr]=Pr[Er]=Pr[Or]=true,Pr[cr]=Pr[fr]=Pr[vr]=Pr[ar]=Pr[ir]=Pr[lr]=Pr[sr]=Pr["[object Map]"]=Pr[pr]=Pr[yr]=Pr[hr]=Pr["[object Set]"]=Pr[gr]=Pr["[object WeakMap]"]=false;var Fr={};Fr[cr]=Fr[fr]=Fr[vr]=Fr[ar]=Fr[ir]=Fr[br]=Fr[dr]=Fr[mr]=Fr[jr]=Fr[Ar]=Fr[pr]=Fr[yr]=Fr[hr]=Fr[gr]=Fr[wr]=Fr[xr]=Fr[Er]=Fr[Or]=true,Fr[lr]=Fr[sr]=Fr["[object Map]"]=Fr["[object Set]"]=Fr["[object WeakMap]"]=false;var Ur={"function":true,object:true},Tr=Ur[typeof module]&&module&&!module.nodeType&&module,Nr=Ur[typeof self]&&self&&self.Object&&self,Rr=Ur[typeof window]&&window&&window.Object&&window,$r=Ur[typeof exports]&&exports&&!exports.nodeType&&exports&&Tr&&typeof global=="object"&&global||Rr!==(this&&this.window)&&Rr||Nr||this,Br=function(){try{Object({toString:0}+"")
}catch(n){return function(){return false}}return function(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}}(),Cr=Array.prototype,Lr=Error.prototype,Dr=Object.prototype,Wr=String.prototype,Vr=Function.prototype.toString,Yr=Dr.hasOwnProperty,qr=Dr.toString,zr=RegExp("^"+Z(qr).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Gr=H(Gr=$r.ArrayBuffer)&&Gr,Hr=H(Hr=Gr&&new Gr(0).slice)&&Hr,Jr=Math.floor,Kr=Dr.propertyIsEnumerable,Qr=H(Qr=$r.Set)&&Qr,Xr=Cr.splice,Zr=H(Zr=$r.Uint8Array)&&Zr,nt=function(){try{var n=H(n=$r.Float64Array)&&n,r=new n(new Gr(10),0,1)&&n
}catch(t){}return r}(),rt=H(rt=Array.isArray)&&rt,tt=H(tt=Object.create)&&tt,et=H(et=Object.keys)&&et,ut=Math.max,ot=Math.min,ct=Math.pow(2,32)-1,ft=ct-1,at=ct>>>1,it=nt?nt.BYTES_PER_ELEMENT:0,lt=Math.pow(2,53)-1,st={};st[br]=$r.Float32Array,st[dr]=$r.Float64Array,st[mr]=$r.Int8Array,st[jr]=$r.Int16Array,st[Ar]=$r.Int32Array,st[wr]=$r.Uint8Array,st[xr]=$r.Uint8ClampedArray,st[Er]=$r.Uint16Array,st[Or]=$r.Uint32Array;var pt={};pt[fr]=pt[ir]=pt[pr]={constructor:true,toLocaleString:true,toString:true,valueOf:true},pt[ar]=pt[gr]={constructor:true,toString:true,valueOf:true},pt[lr]=pt[sr]=pt[hr]={constructor:true,toString:true},pt[yr]={constructor:true},a(Mr,function(n){for(var r in pt)if(Yr.call(pt,r)){var t=pt[r];
t[n]=Yr.call(t,n)}});var yt=u.support={};!function(n){var r=function(){this.x=1},t={0:1,length:1},e=[];r.prototype={valueOf:1,y:1};for(var u in new r)e.push(u);yt.argsTag=qr.call(arguments)==cr,yt.enumErrorProps=Kr.call(Lr,"message")||Kr.call(Lr,"name"),yt.enumPrototypes=Kr.call(r,"prototype"),yt.funcDecomp=/\bthis\b/.test(function(){return this}),yt.funcNames=typeof Function.name=="string",yt.nonEnumStrings=!Kr.call("x",0),yt.nonEnumShadows=!/valueOf/.test(e),yt.spliceObjects=(Xr.call(t,0,1),!t[0]),yt.unindexedChars="xx"!="x"[0]+Object("x")[0];
try{yt.nonEnumArgs=!Kr.call(arguments,1)}catch(o){yt.nonEnumArgs=true}}(0,0);var ht=function(n,r){return function(t,e){var u=t?t.length:0;if(!$(u))return n(t,e);for(var o=r?u:-1,c=L(t);(r?o--:++o<u)&&false!==e(c[o],o,c););return t}}(b),gt=function(n){return function(r,t,e){var u=L(r);e=e(r);for(var o=e.length,c=n?o:-1;n?c--:++c<o;){var f=e[c];if(false===t(u[f],f,u))break}return r}}();Hr||(S=Gr&&Zr?function(n){var r=n.byteLength,t=nt?Jr(r/it):0,e=t*it,u=new Gr(r);if(t){var o=new nt(u,0,t);o.set(new nt(n,0,t))
}return r!=e&&(o=new Zr(u,e),o.set(new Zr(n,e))),u}:rr(null));var vt=tt&&Qr?function(n){return new o(n)}:rr(null),bt=q(function(n,r){return jt(n)||z(n)?h(n,v(r,false,true)):[]}),dt=q(function(n,r){return jt(n)||z(n)?h(n,r):[]}),mt=function(n,r){return function(t,e,u){return typeof e=="function"&&typeof u=="undefined"&&jt(t)?n(t,e):r(t,O(e,u,3))}}(a,ht);yt.argsTag||(z=function(n){var r=e(n)?n.length:ur;return $(r)&&Yr.call(n,"callee")&&!Kr.call(n,"callee")});var jt=rt||function(n){return e(n)&&$(n.length)&&qr.call(n)==fr
},At=r(/x/)||Zr&&!r(Zr)?function(n){return qr.call(n)==sr}:r,wt=function(n){return function(){var r=arguments,t=r.length,e=r[0];if(2>t||null==e)return e;var u=r[t-2],o=r[t-1],c=r[3];for(3<t&&typeof u=="function"?(u=O(u,o,5),t-=2):(u=2<t&&typeof o=="function"?o:null,t-=u?1:0),c&&R(r[1],r[2],c)&&(u=3==t?null:u,t=2),o=0;++o<t;)(c=r[o])&&n(e,c,u);return e}}(function(n,r,t){var e=xt(r);if(!t)return s(r,n,e);for(var u=-1,o=e.length;++u<o;){var c=e[u],f=n[c],a=t(f,r[c],c,n,r);(a===a?a===f:f!==f)&&(typeof f!="undefined"||c in n)||(n[c]=a)
}return n}),xt=et?function(n){if(n)var r=n.constructor,t=n.length;return typeof r=="function"&&r.prototype===n||(typeof n=="function"?u.support.enumPrototypes:t&&$(t))?C(n):G(n)?et(n):[]}:C;o.prototype.push=function(n){var r=this.data;typeof n=="string"||G(n)?r.set.add(n):r.hash[n]=true},u.assign=wt,u.callback=nr,u.compact=function(n){for(var r=-1,t=n?n.length:0,e=-1,u=[];++r<t;){var o=n[r];o&&(u[++e]=o)}return u},u.constant=rr,u.difference=bt,u.filter=W,u.forEach=mt,u.intersection=function(){for(var r=[],t=-1,e=arguments.length,u=[],o=P(),f=o==n;++t<e;){var a=arguments[t];
(jt(a)||z(a))&&(r.push(a),u.push(f&&120<=a.length?vt(t&&a):null))}var e=r.length,f=r[0],i=-1,l=f?f.length:0,s=[],p=u[0];n:for(;++i<l;)if(a=f[i],0>(p?c(p,a):o(s,a,0))){for(t=e;--t;){var y=u[t];if(0>(y?c(y,a):o(r[t],a,0)))continue n}p&&p.push(a),s.push(a)}return s},u.keys=xt,u.keysIn=Q,u.map=Y,u.matches=er,u.pluck=function(n,r){return Y(n,x(r))},u.restParam=q,u.sortBy=function(n,r,e){if(null==n)return[];var u=-1,o=n.length,c=$(o)?Array(o):[];return e&&R(n,r,e)&&(r=null),r=M(r,e,3),ht(n,function(n,t,e){c[++u]={a:r(n,t,e),b:u,c:n}
}),E(c,t)},u.values=X,u.without=dt,u.collect=Y,u.each=mt,u.extend=wt,u.iteratee=nr,u.select=W,u.escapeRegExp=Z,u.identity=tr,u.includes=V,u.indexOf=D,u.isArguments=z,u.isArray=jt,u.isFunction=At,u.isNative=H,u.isNumber=function(n){return typeof n=="number"||e(n)&&qr.call(n)==pr},u.isObject=G,u.isString=J,u.isTypedArray=K,u.contains=V,u.include=V,u.VERSION="3.6.0",$r._=u}).call(this);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +0,0 @@
/* modulejs 1.4.0 - http://larsjung.de/modulejs/ */
!function(n){"use strict";function r(n){return function(r){return h.toString.call(r)==="[object "+n+"]"}}function t(n){return n===new Object(n)}function e(n,r){return h.hasOwnProperty.call(n,r)}function i(n,r,t){if(v&&n.forEach===v)n.forEach(r,t);else if(n.length===+n.length)for(var i=0,o=n.length;o>i;i+=1)r.call(t,n[i],i,n);else for(var u in n)e(n,u)&&r.call(t,n[u],u,n)}function o(n,r){for(var t=0,e=n.length;e>t;t+=1)if(n[t]===r)return!0;return!1}function u(n){var r={},t=[];return i(n,function(n){e(r,n)||(t.push(n),r[n]=1)}),t}function c(n,r,t){if(n)throw{code:r,msg:t,toString:function(){return p+" error "+r+": "+t}}}function f(r,t,a){if(c(!g(r),31,'id must be a string "'+r+'"'),!t&&e(q,r))return q[r];var s=j[r];c(!s,32,'id not defined "'+r+'"'),a=(a||[]).slice(0),a.push(r);var d=[];if(i(s.deps,function(n){c(o(a,n),33,"circular dependencies: "+a+" & "+n),t?(d=d.concat(f(n,t,a)),d.push(n)):d.push(f(n,t,a))}),t)return u(d);var l=s.fn.apply(n,d);return q[r]=l,l}function a(n,r,e){void 0===e&&(e=r,r=[]),c(!g(n),11,'id must be a string "'+n+'"'),c(j[n],12,'id already defined "'+n+'"'),c(!b(r),13,'dependencies for "'+n+'" must be an array "'+r+'"'),c(!t(e)&&!y(e),14,'arg for "'+n+'" must be object or function "'+e+'"'),j[n]={id:n,deps:r,fn:y(e)?e:function(){return e}}}function s(n){return f(n)}function d(){var n={};return i(j,function(r,t){n[t]={deps:r.deps.slice(0),reqs:f(t,!0),init:e(q,t)}}),i(j,function(r,t){var e=[];i(j,function(r,i){o(n[i].reqs,t)&&e.push(i)}),n[t].reqd=e}),n}function l(n){var r="\n";return i(d(),function(t,e){var i=n?t.reqd:t.reqs;r+=(t.init?"* ":" ")+e+" -> [ "+i.join(", ")+" ]\n"}),r}var p="modulejs",h=Object.prototype,v=Array.prototype.forEach,g=r("String"),y=r("Function"),b=Array.isArray||r("Array"),j={},q={};n[p]={define:a,require:s,state:d,log:l,_private:{isString:g,isFunction:y,isArray:b,isObject:t,has:e,each:i,contains:o,uniq:u,err:c,definitions:j,instances:q,resolve:f}}}(this);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,52 +0,0 @@
// @include "lib/modernizr-*.js"
// @include "lib/jquery-*.js"
// @include "lib/jquery.*.js"
// @include "lib/lodash-*.js"
// @include "lib/marked-*.js"
// @include "lib/modulejs-*.js"
// @include "lib/moment-*.js"
// @include "lib/prism-*.js"
(function () {
'use strict';
/*global jQuery, marked, Modernizr, moment, Prism, _ */
modulejs.define('$', function () { return jQuery; });
modulejs.define('marked', function () { return marked; });
modulejs.define('modernizr', function () { return Modernizr; });
modulejs.define('moment', function () { return moment; });
modulejs.define('prism', function () { return Prism; });
modulejs.define('_', function () { return _; });
// @include "inc/**/*.js"
var $ = jQuery;
if ($('html').hasClass('no-browser')) {
return;
}
var module = $('script[data-module]').data('module');
var data = {action: 'get', setup: true, options: true, types: true, theme: true, langs: true};
var url;
if (module === 'main') {
url = '.';
} else if (module === 'info') {
data.updatecmds = true;
url = 'server/php/index.php';
} else {
return;
}
$.ajax({
url: url,
data: data,
type: 'POST',
dataType: 'json'
}).done(function (config) {
modulejs.define('config', config);
$(function () { modulejs.require(module); });
});
}());

View File

@@ -1,39 +0,0 @@
doctype html
<!--[if lt IE 10]><html class="no-js no-browser" lang="en"><![endif]-->
<!--[if gt IE 9]><!--><html class="no-js browser" lang="en"><!--<![endif]-->
head
meta( charset="utf-8" )
title #{pkg.name} #{pkg.version} Server Setup
meta( name="description", content="#{pkg.name} #{pkg.version} Server Setup" )
meta( name="viewport", content="width=device-width, initial-scale=1" )
link( rel="shortcut icon", href="client/images/favicon/favicon-16-32.ico" )
link( rel="apple-touch-icon-precomposed", type="image/png", href="client/images/favicon/favicon-152.png" )
link( rel="stylesheet", href="client/css/styles.css" )
script( src="client/js/scripts.js", data-module="info" )
body#h5ai-info
div#fallback-hints
span.noJsMsg
| Works best with JavaScript enabled!
span.noBrowserMsg
| Works best in
a( href="http://browsehappy.com" ) modern browsers
| !
span.backlink
a( href="#{pkg.homepage}", title="#{pkg.name} #{pkg.version} · #{pkg.description}" ) powered by #{pkg.name}
div#content
h1#header
a( href="#{pkg.homepage}" ) #{pkg.name}
div#support
| Show your support with a donation!
div.paypal
form( action="https://www.paypal.com/cgi-bin/webscr", method="post", target="_top" )
input( type="hidden", name="cmd", value="_s-xclick" )
input( type="hidden", name="hosted_button_id", value="8WSPKWT7YBTSQ" )
input( type="image", src="client/images/ui/paypal.svg", width="100px", border="0", name="submit", alt="PayPal - The safer, easier way to pay online!" )
</html>

View File

@@ -0,0 +1,3 @@
Satisfy all
Order deny,allow
Deny from all

9
src/_h5ai/private/cache/README.md vendored Normal file
View File

@@ -0,0 +1,9 @@
# Cache
Private cache.
This directory is used for server side caching. To use caching make this
directory writable for your webserver.
There is no critical data in here. You can savely remove any content. This
will clear the cache.

View File

@@ -1,19 +1,18 @@
{ {
"lang": "afrikaans", "lang": "afrikaans",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "besonderhede", "details": "besonderhede",
"list": "lys", "download": "aflaai",
"empty": "leeg",
"files": "lêers",
"filter": "filter",
"folders": "gidse",
"grid": "rooster", "grid": "rooster",
"icons": "ikone", "icons": "ikone",
"name": "Naam",
"lastModified": "Laas verander", "lastModified": "Laas verander",
"size": "Grootte", "name": "Naam",
"parentDirectory": "Hoër Vlak",
"empty": "leeg",
"folders": "gidse",
"files": "lêers",
"download": "aflaai",
"noMatch": "geen resultaat", "noMatch": "geen resultaat",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "Hoër Vlak",
"filter": "filter", "size": "Grootte"
"delete": "verwyder"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "български", "lang": "български",
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "детайли", "details": "детайли",
"download": "изтегляне",
"empty": "празна",
"files": "файлове",
"filter": "филтър",
"folders": "директории",
"grid": "мрежа", "grid": "мрежа",
"icons": "икони", "icons": "икони",
"name": "Име",
"lastModified": "Последна промяна", "lastModified": "Последна промяна",
"size": "Размер", "name": "Име",
"parentDirectory": "Предходна директория",
"empty": "празна",
"folders": "директории",
"files": "файлове",
"download": "изтегляне",
"noMatch": "няма съвпадение", "noMatch": "няма съвпадение",
"dateFormat": "DD-MM-YYYY HH:mm", "parentDirectory": "Предходна директория",
"filter": "филтър" "size": "Размер"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "čeština", "lang": "čeština",
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "Podrobnosti", "details": "Podrobnosti",
"download": "Stáhnout",
"empty": "Prázdná složka",
"files": "souborů",
"filter": "Filtr",
"folders": "složek",
"grid": "Seznam", "grid": "Seznam",
"icons": "Velké ikony", "icons": "Velké ikony",
"name": "Název",
"lastModified": "Datum změny", "lastModified": "Datum změny",
"size": "Velikost", "name": "Název",
"parentDirectory": "Nadřazený adresář",
"empty": "Prázdná složka",
"folders": "složek",
"files": "souborů",
"download": "Stáhnout",
"noMatch": "Žádná shoda", "noMatch": "Žádná shoda",
"dateFormat": "DD.MM.YYYY HH:mm", "parentDirectory": "Nadřazený adresář",
"filter": "Filtr" "size": "Velikost"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "dansk", "lang": "dansk",
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "detaljer", "details": "detaljer",
"download": "download",
"empty": "tom",
"files": "filer",
"filter": "filter",
"folders": "mapper",
"grid": "grid", "grid": "grid",
"icons": "ikoner", "icons": "ikoner",
"name": "Navn",
"lastModified": "Sidst ændret", "lastModified": "Sidst ændret",
"size": "Størrelse", "name": "Navn",
"parentDirectory": "Overordnet mappe",
"empty": "tom",
"folders": "mapper",
"files": "filer",
"download": "download",
"noMatch": "ingen match", "noMatch": "ingen match",
"dateFormat": "DD-MM-YYYY HH:mm", "parentDirectory": "Overordnet mappe",
"filter": "filter" "size": "Størrelse"
} }

View File

@@ -1,19 +1,22 @@
{ {
"lang": "deutsch", "lang": "deutsch",
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "Details", "details": "Details",
"download": "Download",
"empty": "leer",
"files": "Dateien",
"filter": "filtern",
"folders": "Ordner",
"grid": "Gitter", "grid": "Gitter",
"icons": "Icons", "icons": "Icons",
"name": "Name", "language": "Sprache",
"lastModified": "Geändert", "lastModified": "Geändert",
"size": "Größe", "name": "Name",
"parentDirectory": "Übergeordnetes Verzeichnis",
"empty": "leer",
"folders": "Ordner",
"files": "Dateien",
"download": "Download",
"noMatch": "keine Treffer", "noMatch": "keine Treffer",
"dateFormat": "DD.MM.YYYY HH:mm", "parentDirectory": "Übergeordnetes Verzeichnis",
"filter": "Filter", "search": "suchen",
"view": "Ansicht", "size": "Größe",
"language": "Sprache" "tree": "Baum",
"view": "Ansicht"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "ελληνικά", "lang": "ελληνικά",
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "λεπτομέρειες", "details": "λεπτομέρειες",
"download": "μεταμόρφωση",
"empty": "κενό",
"files": "αρχεία",
"filter": "φίλτρο",
"folders": "φάκελοι",
"grid": "πλέγμα", "grid": "πλέγμα",
"icons": "εικονίδια", "icons": "εικονίδια",
"name": "Όνομα",
"lastModified": "Τελευταία τροποποίηση", "lastModified": "Τελευταία τροποποίηση",
"size": "Μέγεθος", "name": "Όνομα",
"parentDirectory": "Προηγούμενος Κατάλογος",
"empty": "κενό",
"folders": "φάκελοι",
"files": "αρχεία",
"download": "μεταμόρφωση",
"noMatch": "κανένα αποτέλεσμα", "noMatch": "κανένα αποτέλεσμα",
"dateFormat": "DD/MM/YYYY HH:mm", "parentDirectory": "Προηγούμενος Κατάλογος",
"filter": "φίλτρο" "size": "Μέγεθος"
} }

View File

@@ -1,20 +1,23 @@
/* only here as a reference, these values are the hardcoded defaults */ /* only here as a reference, these values are the hardcoded defaults */
{ {
"lang": "english", "lang": "english",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "details", "details": "details",
"download": "download",
"empty": "empty",
"files": "files",
"filter": "filter",
"folders": "folders",
"grid": "grid", "grid": "grid",
"icons": "icons", "icons": "icons",
"name": "Name", "language": "Language",
"lastModified": "Last modified", "lastModified": "Last modified",
"size": "Size", "name": "Name",
"parentDirectory": "Parent Directory",
"empty": "empty",
"folders": "folders",
"files": "files",
"download": "download",
"noMatch": "no match", "noMatch": "no match",
"dateFormat": "YYYY-MM-DD HH:mm", /* syntax as specified on http://momentjs.com */ "parentDirectory": "Parent Directory",
"filter": "filter", "search": "search",
"view": "View", "size": "Size",
"language": "Language" "tree": "Tree",
"view": "View"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "español", "lang": "español",
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "Detalles", "details": "Detalles",
"download": "Descargar",
"empty": "vacío",
"files": "Archivos",
"filter": "Filtar",
"folders": "Directorios",
"grid": "Cuadrícula", "grid": "Cuadrícula",
"icons": "Íconos", "icons": "Íconos",
"name": "Nombre",
"lastModified": "Última modificación", "lastModified": "Última modificación",
"size": "Tamaño", "name": "Nombre",
"parentDirectory": "Directorio superior",
"empty": "vacío",
"folders": "Directorios",
"files": "Archivos",
"download": "Descargar",
"noMatch": "Sin coincidencias", "noMatch": "Sin coincidencias",
"dateFormat": "DD/MM/YYYY HH:mm", "parentDirectory": "Directorio superior",
"filter": "Filtar" "size": "Tamaño"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "finnish", "lang": "finnish",
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "tiedot", "details": "tiedot",
"download": "lataa",
"empty": "tyhjä",
"files": "tiedostoa",
"filter": "suodata",
"folders": "hakemistoa",
"grid": "ruudukko", "grid": "ruudukko",
"icons": "ikonit", "icons": "ikonit",
"name": "Nimi",
"lastModified": "Viimeksi muokattu", "lastModified": "Viimeksi muokattu",
"size": "Koko", "name": "Nimi",
"parentDirectory": "Ylähakemisto",
"empty": "tyhjä",
"folders": "hakemistoa",
"files": "tiedostoa",
"download": "lataa",
"noMatch": "ei osumia", "noMatch": "ei osumia",
"dateFormat": "DD.MM.YYYY HH:mm", "parentDirectory": "Ylähakemisto",
"filter": "suodata" "size": "Koko"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "français", "lang": "français",
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "détails", "details": "détails",
"download": "télécharger",
"empty": "vide",
"files": "Fichiers",
"filter": "filtre",
"folders": "Répertoires",
"grid": "grille", "grid": "grille",
"icons": "icônes", "icons": "icônes",
"name": "Nom",
"lastModified": "Dernière modification", "lastModified": "Dernière modification",
"size": "Taille", "name": "Nom",
"parentDirectory": "Dossier parent",
"empty": "vide",
"folders": "Répertoires",
"files": "Fichiers",
"download": "télécharger",
"noMatch": "rien trouvé", "noMatch": "rien trouvé",
"dateFormat": "DD/MM/YYYY HH:mm", "parentDirectory": "Dossier parent",
"filter": "filtre" "size": "Taille"
} }

View File

@@ -1,16 +1,17 @@
{ {
"lang": "עברית", "lang": "עברית",
"details": "פרטים",
"icons": "צלמיות",
"name": "שם",
"lastModified": "שינוי אחרון",
"size": "גודל",
"parentDirectory": "תיקיית הורה",
"empty": "ריק",
"folders": "תיקיות",
"files": "קבצים",
"download": "הורדה",
"noMatch": "אין תוצאות",
"dateFormat": "DD.MM.YYYY HH:mm", "dateFormat": "DD.MM.YYYY HH:mm",
"filter": "סינון" "details": "פרטים",
"download": "הורדה",
"empty": "ריק",
"files": "קבצים",
"filter": "סינון",
"folders": "תיקיות",
"icons": "צלמיות",
"lastModified": "שינוי אחרון",
"name": "שם",
"noMatch": "אין תוצאות",
"parentDirectory": "תיקיית הורה",
"size": "גודל"
} }

View File

@@ -1,18 +1,18 @@
{ {
"lang": "हिंदी", "lang": "हिंदी",
"details": "विस्तार",
"icons": "आइकॉन",
"name": "नाम",
"lastModified": "पिछला परिवर्तन",
"size": "माप",
"parentDirectory": "मूल डायरेक्टरी",
"empty": "खाली",
"folders": "फोल्डर",
"files": "फ़ाइलें",
"download": "डाउनलोड",
"list": "सूची",
"grid": "ग्रिड",
"noMatch": "कोई समानता नहीं",
"dateFormat": "DD.MM.YYYY HH:mm", "dateFormat": "DD.MM.YYYY HH:mm",
"filter": "फ़िल्टर" "details": "विस्तार",
"download": "डाउनलोड",
"empty": "खाली",
"files": "फ़ाइलें",
"filter": "फ़िल्टर",
"folders": "फोल्डर",
"grid": "ग्रिड",
"icons": "आइकॉन",
"lastModified": "पिछला परिवर्तन",
"name": "नाम",
"noMatch": "कोई समानता नहीं",
"parentDirectory": "मूल डायरेक्टरी",
"size": "माप"
} }

View File

@@ -1,19 +1,18 @@
{ {
"lang": "hrvatski", "lang": "hrvatski",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "detalji", "details": "detalji",
"list": "lista", "download": "preuzmi",
"empty": "prazno",
"files": "datoteka",
"filter": "filter",
"folders": "direktorij(a)",
"grid": "mreža", "grid": "mreža",
"icons": "ikone", "icons": "ikone",
"name": "Naziv",
"lastModified": "Posljednja izmjena", "lastModified": "Posljednja izmjena",
"size": "Veličina", "name": "Naziv",
"parentDirectory": "Natrag",
"empty": "prazno",
"folders": "direktorij(a)",
"files": "datoteka",
"download": "preuzmi",
"noMatch": "nema rezultata", "noMatch": "nema rezultata",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "Natrag",
"filter": "filter", "size": "Veličina"
"delete": "obriši"
} }

View File

@@ -1,15 +1,16 @@
{ {
"lang": "magyar", "lang": "magyar",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "részletek", "details": "részletek",
"icons": "ikonok",
"name": "Név",
"lastModified": "Utoljára módosítva",
"size": "Méret",
"parentDirectory": "Szülő könyvtár",
"empty": "üres",
"folders": "mappák",
"files": "fájlok",
"download": "letöltés", "download": "letöltés",
"empty": "üres",
"files": "fájlok",
"folders": "mappák",
"icons": "ikonok",
"lastModified": "Utoljára módosítva",
"name": "Név",
"noMatch": "nincs találat", "noMatch": "nincs találat",
"dateFormat": "YYYY-MM-DD HH:mm" "parentDirectory": "Szülő könyvtár",
"size": "Méret"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "italiano", "lang": "italiano",
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "dettagli", "details": "dettagli",
"download": "download",
"empty": "vuota",
"files": "file",
"filter": "filtra",
"folders": "cartelle",
"grid": "griglia", "grid": "griglia",
"icons": "icone", "icons": "icone",
"name": "Nome",
"lastModified": "Ultima modifica", "lastModified": "Ultima modifica",
"size": "Dimensione", "name": "Nome",
"parentDirectory": "Cartella Superiore",
"empty": "vuota",
"folders": "cartelle",
"files": "file",
"download": "download",
"noMatch": "nessun risultato", "noMatch": "nessun risultato",
"dateFormat": "DD-MM-YYYY HH:mm", "parentDirectory": "Cartella Superiore",
"filter": "filtra" "size": "Dimensione"
} }

View File

@@ -1,19 +1,20 @@
{ {
"lang": "日本語", "lang": "日本語",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "詳細", "details": "詳細",
"download": "ダウンロード",
"empty": "(空)",
"files": "ファイル",
"filter": "フィルター",
"folders": "フォルダー",
"grid": "グリッド", "grid": "グリッド",
"icons": "アイコン", "icons": "アイコン",
"name": "名前", "language": "言語",
"lastModified": "最終変更日時", "lastModified": "最終変更日時",
"size": "サイズ", "name": "名前",
"parentDirectory": "親ディレクトリへ",
"empty": "(空)",
"folders": "フォルダー",
"files": "ファイル",
"download": "ダウンロード",
"noMatch": "一致する項目が見つかりません", "noMatch": "一致する項目が見つかりません",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "親ディレクトリへ",
"filter": "フィルター", "size": "サイズ",
"view": "ビュー", "view": "ビュー"
"language": "言語"
} }

View File

@@ -1,19 +1,22 @@
{ {
"lang": "한국어", "lang": "한국어",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "자세히", "details": "자세히",
"download": "다운로드",
"empty": "빈 폴더",
"files": "파일",
"filter": "필터",
"folders": "폴더",
"grid": "그리드", "grid": "그리드",
"icons": "아이콘", "icons": "아이콘",
"name": "파일명", "language": "언어",
"lastModified": "최근 수정일", "lastModified": "최근 수정일",
"size": "크기", "name": "파일명",
"parentDirectory": "상위폴더",
"empty": "빈폴더",
"folders": "폴더",
"files": "파일",
"download": "다운로드",
"noMatch": "해당파일이 없습니다.", "noMatch": "해당파일이 없습니다.",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "상위폴더",
"filter": "필터", "search": "검색",
"view": "기", "size": "기",
"language": "언어" "tree": "트리",
"view": "보기"
} }

View File

@@ -1,19 +1,22 @@
{ {
"lang": "latviešu", "lang": "latviešu",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "detaļas", "details": "detaļas",
"download": "lejupielādēt",
"empty": "tukšs",
"files": "faili",
"filter": "filtrēt",
"folders": "mapes",
"grid": "režģis", "grid": "režģis",
"icons": "ikonas", "icons": "ikonas",
"name": "Nosaukums", "language": "Valoda",
"lastModified": "Pēdējoreiz modificēts", "lastModified": "Pēdējoreiz modificēts",
"size": "Izmērs", "name": "Nosaukums",
"parentDirectory": "Vecākdirektorijs",
"empty": "tukšs",
"folders": "mapes",
"files": "faili",
"download": "lejupielādēt",
"noMatch": "nav sakritības", "noMatch": "nav sakritības",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "Vecākdirektorijs",
"filter": "filtrēt", "search": "meklēt",
"view": "Skats", "size": "Izmērs",
"language": "Valoda" "tree": "Koks",
"view": "Skats"
} }

View File

@@ -1,14 +1,15 @@
{ {
"lang": "norwegian", "lang": "norwegian",
"details": "detaljer", "details": "detaljer",
"icons": "ikoner",
"name": "Navn",
"lastModified": "Sist endret",
"size": "Størrelse",
"parentDirectory": "Overordnet mappe",
"empty": "tom",
"folders": "mapper",
"files": "filer",
"download": "last ned", "download": "last ned",
"noMatch": "ingen treff" "empty": "tom",
"files": "filer",
"folders": "mapper",
"icons": "ikoner",
"lastModified": "Sist endret",
"name": "Navn",
"noMatch": "ingen treff",
"parentDirectory": "Overordnet mappe",
"size": "Størrelse"
} }

View File

@@ -1,10 +1,11 @@
{ {
"lang": "nederlands", "lang": "nederlands",
"details": "details", "details": "details",
"empty": "lege",
"icons": "iconen", "icons": "iconen",
"name": "Naam",
"lastModified": "Laatste wijziging", "lastModified": "Laatste wijziging",
"size": "Grootte", "name": "Naam",
"parentDirectory": "Bovenliggende map", "parentDirectory": "Bovenliggende map",
"empty": "lege" "size": "Grootte"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "polski", "lang": "polski",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "szczegóły", "details": "szczegóły",
"download": "pobierz",
"empty": "pusty",
"files": "plików",
"filter": "filtr",
"folders": "folderów",
"grid": "kafelki", "grid": "kafelki",
"icons": "ikony", "icons": "ikony",
"name": "Nazwa",
"lastModified": "Ostatnia modyfikacja", "lastModified": "Ostatnia modyfikacja",
"size": "Rozmiar", "name": "Nazwa",
"parentDirectory": "Katalog nadrzędny",
"empty": "pusty",
"folders": "folderów",
"files": "plików",
"download": "pobierz",
"noMatch": "nie znaleziono", "noMatch": "nie znaleziono",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "Katalog nadrzędny",
"filter": "filtr" "size": "Rozmiar"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "português", "lang": "português",
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "detalhes", "details": "detalhes",
"download": "descarregar",
"empty": "vazio",
"files": "arquivos",
"filter": "filtro",
"folders": "pastas",
"grid": "grelha", "grid": "grelha",
"icons": "ícones", "icons": "ícones",
"name": "Nome",
"lastModified": "última modificação", "lastModified": "última modificação",
"size": "Tamanho", "name": "Nome",
"parentDirectory": "diretório acima",
"empty": "vazio",
"folders": "pastas",
"files": "arquivos",
"download": "descarregar",
"noMatch": "sem resultados", "noMatch": "sem resultados",
"dateFormat": "DD-MM-YYYY HH:mm", "parentDirectory": "diretório acima",
"filter": "filtro" "size": "Tamanho"
} }

View File

@@ -1,14 +1,15 @@
{ {
"lang": "română", "lang": "română",
"details": "detalii", "details": "detalii",
"icons": "pictograme",
"name": "nume",
"lastModified": "ultima modificare",
"size": "mărime",
"parentDirectory": "dosar părinte",
"empty": "gol",
"folders": "dosar",
"files": "fişiere",
"download": "descarcă", "download": "descarcă",
"noMatch": "0 rezultate" "empty": "gol",
"files": "fişiere",
"folders": "dosar",
"icons": "pictograme",
"lastModified": "ultima modificare",
"name": "nume",
"noMatch": "0 rezultate",
"parentDirectory": "dosar părinte",
"size": "mărime"
} }

View File

@@ -1,19 +1,20 @@
{ {
"lang": "русский", "lang": "русский",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "Детали", "details": "Детали",
"download": "Скачать",
"empty": "Пусто",
"files": "Файлы",
"filter": "Фильтр",
"folders": "Папки",
"grid": "Сетка", "grid": "Сетка",
"icons": "Иконки", "icons": "Иконки",
"name": "Имя",
"lastModified": "Последние изменения",
"size": "Размер",
"parentDirectory": "Главная директория",
"empty": "Пусто",
"folders": "Папки",
"files": "Файлы",
"download": "Скачать",
"noMatch": "Нет совпадений",
"dateFormat": "YYYY-MM-DD HH:mm",
"view": "Вид",
"language": "Язык", "language": "Язык",
"filter": "Фильтр" "lastModified": "Последние изменения",
"name": "Имя",
"noMatch": "Нет совпадений",
"parentDirectory": "Главная директория",
"size": "Размер",
"view": "Вид"
} }

View File

@@ -1,12 +1,13 @@
{ {
"lang": "slovenčina", "lang": "slovenčina",
"details": "podrobnosti", "details": "podrobnosti",
"icons": "ikony",
"name": "Názov",
"lastModified": "Upravené",
"size": "Velkosť",
"parentDirectory": "Nadriadený priečinok",
"empty": "prázdny", "empty": "prázdny",
"files": "súborov",
"folders": "priečinkov", "folders": "priečinkov",
"files": "súborov" "icons": "ikony",
"lastModified": "Upravené",
"name": "Názov",
"parentDirectory": "Nadriadený priečinok",
"size": "Velkosť"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "slovenščina", "lang": "slovenščina",
"dateFormat": "DD. MM. YYYY HH:mm",
"details": "podrobnosti", "details": "podrobnosti",
"download": "prenesi",
"empty": "prazno",
"files": "datoteke",
"filter": "filter",
"folders": "mape",
"grid": "mreža", "grid": "mreža",
"icons": "ikone", "icons": "ikone",
"name": "Ime",
"lastModified": "Zadnja sprememba", "lastModified": "Zadnja sprememba",
"size": "Velikost", "name": "Ime",
"parentDirectory": "Nadrejena mapa",
"empty": "prazno",
"folders": "mape",
"files": "datoteke",
"download": "prenesi",
"noMatch": "ni zadetkov", "noMatch": "ni zadetkov",
"dateFormat": "DD. MM. YYYY HH:mm", "parentDirectory": "Nadrejena mapa",
"filter": "filter" "size": "Velikost"
} }

View File

@@ -1,14 +1,15 @@
{ {
"lang": "srpski", "lang": "srpski",
"details": "detalji", "details": "detalji",
"icons": "ikone",
"name": "Ime",
"lastModified": "Poslednja modifikacija",
"size": "Veličina",
"parentDirectory": "Roditeljski direktorijum",
"empty": "prazno",
"folders": "direktorijum",
"files": "fajlovi",
"download": "download", "download": "download",
"noMatch": "bez poklapanja" "empty": "prazno",
"files": "fajlovi",
"folders": "direktorijum",
"icons": "ikone",
"lastModified": "Poslednja modifikacija",
"name": "Ime",
"noMatch": "bez poklapanja",
"parentDirectory": "Roditeljski direktorijum",
"size": "Veličina"
} }

View File

@@ -1,15 +1,16 @@
{ {
"lang": "svenska", "lang": "svenska",
"details": "detaljerad", "details": "detaljerad",
"download": "ladda ner",
"empty": "tom",
"files": "filer",
"folders": "kataloger",
"grid": "rutnät", "grid": "rutnät",
"icons": "ikoner", "icons": "ikoner",
"name": "Filnamn",
"lastModified": "Senast ändrad", "lastModified": "Senast ändrad",
"size": "Filstorlek", "name": "Filnamn",
"noMatch": "ingen matchning",
"parentDirectory": "Till överordnad mapp", "parentDirectory": "Till överordnad mapp",
"empty": "tom", "size": "Filstorlek"
"folders": "kataloger",
"files": "filer",
"download": "ladda ner",
"noMatch": "ingen matchning"
} }

View File

@@ -1,13 +1,14 @@
{ {
"lang": "türkçe", "lang": "türkçe",
"details": "detaylar", "details": "detaylar",
"icons": "ikonlar", "download": "indir",
"name": "İsim",
"lastModified": "Son Düzenleme",
"size": "Boyut",
"parentDirectory": "Üst Dizin",
"empty": "boş", "empty": "boş",
"folders": "klasörler",
"files": "dosyalar", "files": "dosyalar",
"download": "indir" "folders": "klasörler",
"icons": "ikonlar",
"lastModified": "Son Düzenleme",
"name": "İsim",
"parentDirectory": "Üst Dizin",
"size": "Boyut"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "українська", "lang": "українська",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "Деталі", "details": "Деталі",
"download": "Завантажити",
"empty": "Порожньо",
"files": "Файли(ів)",
"filter": "Фільтр",
"folders": "Тек(и)",
"grid": "Гратка", "grid": "Гратка",
"icons": "Піктограми", "icons": "Піктограми",
"name": "Ім'я",
"lastModified": "Останні зміни", "lastModified": "Останні зміни",
"size": "Розмір", "name": "Ім'я",
"parentDirectory": "Головна тека",
"empty": "Порожньо",
"folders": "Тек(и))",
"files": "Файли(ів)",
"download": "Завантажити",
"noMatch": "Немає співпадінь", "noMatch": "Немає співпадінь",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "Головна тека",
"filter": "Фільтр" "size": "Розмір"
} }

View File

@@ -1,19 +1,20 @@
{ {
"lang": "简体中文", "lang": "简体中文",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "详情", "details": "详情",
"download": "下载",
"empty": "空文件夹",
"files": "文件",
"filter": "查找",
"folders": "文件夹",
"grid": "网格", "grid": "网格",
"icons": "图标", "icons": "图标",
"name": "文件名", "language": "语言",
"lastModified": "修改时间", "lastModified": "修改时间",
"size": "大小", "name": "文件名",
"parentDirectory": "父文件夹",
"empty": "空文件夹",
"folders": "文件夹",
"files": "文件",
"download": "下载",
"noMatch": "无匹配项", "noMatch": "无匹配项",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "父文件夹",
"filter": "查找", "size": "大小",
"view": "视图", "view": "视图"
"language": "语言"
} }

View File

@@ -1,17 +1,18 @@
{ {
"lang": "正體中文", "lang": "正體中文",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "詳細資料", "details": "詳細資料",
"download": "下載",
"empty": "空資料夾",
"files": "檔案",
"filter": "過濾",
"folders": "資料夾",
"grid": "網格", "grid": "網格",
"icons": "圖示", "icons": "圖示",
"name": "檔名",
"lastModified": "上次修改", "lastModified": "上次修改",
"size": "大小", "name": "檔名",
"parentDirectory": "上層目錄",
"empty": "空資料夾",
"folders": "資料夾",
"files": "檔案",
"download": "下載",
"noMatch": "沒有符合的檔案", "noMatch": "沒有符合的檔案",
"dateFormat": "YYYY-MM-DD HH:mm", "parentDirectory": "上層目錄",
"filter": "過濾" "size": "大小"
} }

Some files were not shown because too many files have changed in this diff Show More