Compare commits

...

879 Commits

Author SHA1 Message Date
5abdd39d5f Tidy up .srt files in safe_delete 2026-03-21 12:02:56 +00:00
bf2575c696 Hide ugly transmode on mux list when not non-standard 2026-03-10 16:59:18 +00:00
7a156004ef Ease running API scripts interactively 2026-03-08 23:40:13 +00:00
e33713fa87 Convert queue item runtime to integer before writing to queue database 2026-03-08 22:26:12 +00:00
a2a7351928 Add SMART testing state to API 2026-02-26 00:10:25 +00:00
7706488ff2 Add SMART short/long tests to Disk Diagnostics page 2026-02-25 19:58:39 +00:00
483d6e6c96 Add system SMART test functions 2026-02-25 18:41:13 +00:00
13c337e67c Report 'correct' kernel version for 3.15 2026-02-12 01:37:36 +00:00
bc14f41e1f Fix invalid opt in rpc.jim 2026-01-28 17:11:20 +00:00
d15b08754d Add shutdown state to API 2026-01-27 18:49:09 +00:00
29d4cc066a Add more error checking to EPG operations 2026-01-25 00:10:19 +00:00
6a5d925023 Allow "S1 E2" format for Series/Episode numbers 2026-01-16 14:42:43 +00:00
f9d77291b2 Add mux list to API
Add tsid to services list API
Rename API files for consistency
2025-12-30 01:47:00 +00:00
10cae4abda Update to 1.5.4-4 2025-12-29 14:27:27 +00:00
901f7b392a Output to webif-error.log correctly now 2025-12-29 14:09:59 +00:00
032d7e3fe2 Add timestamps to webif-error.log 2025-12-29 12:50:32 +00:00
04c75a9dac Increase editor/log viewer size/line limits 2025-12-27 22:19:57 +00:00
a1011632f2 Add service ID to service list API 2025-12-27 00:01:54 +00:00
9c135a7ca9 Add package list to API 2025-12-24 20:21:10 +00:00
55bad86f8d Update to 1.5.4-3 2025-12-08 23:12:35 +00:00
219179d015 Update HMT series/episodes from EPG synopsis when not using TheTVDB 2025-12-08 23:11:00 +00:00
c15e20b103 Update to 1.5.4-2 2025-11-29 16:39:35 +00:00
85ea4f7c92 Extend schedule padding options 2025-11-29 16:38:50 +00:00
f8cb229085 Update to 1.5.4-1 2025-11-23 13:05:47 +00:00
677b93c0ce Add timestamp to api JSON data 2025-11-23 12:56:31 +00:00
766d9cee14 More abending prevention on channel database SQL errors 2025-09-10 09:23:31 +01:00
f753bb1ceb Prevent abending on channel database SQL errors 2025-09-10 01:07:00 +01:00
87585c7c69 Fix 'at' daemon - permissions on /mod/var 2025-09-06 20:31:38 +01:00
47e0a30117 Remove more Twitter clutter 2025-09-01 16:30:16 +01:00
0acdf6ee4d Upgrade to 1.5.4 2025-09-01 11:12:32 +01:00
d5501a76c8 Add -del option to mp3 processing to delete original recording file set 2025-09-01 11:11:02 +01:00
9ad7d280eb Tidy preinst/postinst/prerm and resurrect resetnew action 2025-08-31 21:53:30 +01:00
c629e76bb8 Tweak file browser action button order to be more logical 2025-08-31 21:49:28 +01:00
946caafcd8 Add natural sort order to file browser 2025-08-31 21:48:18 +01:00
179f31df6c Add service and favourite lists to API 2025-08-31 21:44:29 +01:00
5bf8d6ec23 Check for ISO6937 properly in [system strip]; efficiency tweak 2025-08-31 21:43:16 +01:00
d7f00f1aff Fix [system strip] decode order 2025-08-30 20:22:12 +01:00
724ffec815 Fix timezone problems 2025-08-28 01:10:02 +01:00
ec68e61f39 More capitalisation tweaks 2025-07-23 18:20:47 +01:00
9acea5e0af Capitalisation tweaks 2025-07-23 17:46:45 +01:00
43c9ec6dd5 Fix unquoted links 2025-06-18 11:54:26 +01:00
656ab71196 Replace [concat] with [json::encode] 2025-03-13 14:49:22 +00:00
67dea79532 Replace [concat] with [string cat] 2025-03-13 14:48:31 +00:00
3c3a641196 Change Unscheduled to Descheduled 2025-03-10 22:48:16 +00:00
206614e999 Make ".nts files" singular 2025-03-04 13:29:41 +00:00
e6ff7ea8f6 Update to 1.5.3-5 2025-03-02 21:48:52 +00:00
be609eb878 Make .nts regeneration after crop optional
Improve estimated crop times
2025-03-02 21:46:43 +00:00
2e07b4517f Remove (disabled) Twitter feed clutter 2025-03-01 14:32:40 +00:00
753e935e1e Add customencryptionkey to api JSON data 2025-03-01 14:03:19 +00:00
b19ab10da7 Move etc/modservice.d/epg to epg package 2025-02-12 19:07:40 +00:00
7e5d65ffbe Update to 1.5.3-4 2025-02-12 18:58:08 +00:00
70f0b4ca3c Move S60parseepg to epg package 2025-02-12 18:56:22 +00:00
7293ae2c87 Add heartbeat to API 2025-01-28 20:08:49 +00:00
8da619ded7 Add "system isotime" proc 2025-01-28 20:07:14 +00:00
82b929f9f7 Update to 1.5.3-3 2025-01-12 12:06:34 +00:00
a7ac34d642 Move system qexec/qpids to queue exec/pids 2024-12-23 12:52:07 +00:00
eace314520 Fix URL quoting when playing from file browser 2024-12-22 23:47:51 +00:00
0e3e18c137 Fix incorrect decodeURIComponent() calls in file browser 2024-12-22 23:46:49 +00:00
2cbbf77d30 Add encryption key to api JSON data 2024-12-22 23:45:06 +00:00
64aea91d9d Test sidecar for executable-ness rather than existance when cropping 2024-12-02 12:37:41 +00:00
dfb38bbd99 system diskstats proc now uses key/value pairs 2024-11-29 19:47:50 +00:00
b5e01ca97a Update to 1.5.3-2 2024-11-28 12:06:20 +00:00
895abbb832 Run sidecar after crop to regenerate .nts file 2024-11-28 12:05:09 +00:00
4340200a9d Add "system diskstats" proc 2024-11-28 12:04:05 +00:00
798fefde20 Add RESTful API info 2024-11-28 12:03:13 +00:00
ad97f90e27 Fix regexp for disk self-test result log parsing 2024-11-22 01:21:45 +00:00
8fff8ef98a Fix more poor HTML 2024-11-19 01:56:04 +00:00
6c07dee696 Fix stupid typos 2024-11-19 01:54:26 +00:00
240a7a21d5 Update to 1.5.3-1 2024-11-18 23:50:48 +00:00
0c72849596 Prevent page crashes on missing .ts files and fix poor HTML 2024-11-18 23:49:43 +00:00
e7421875ba Prevent crop errors from disappearing immediately when also saving bookmarks 2024-11-18 23:47:19 +00:00
42dffb40cf Remove COM7 from Mux Info Diagnostics 2024-09-16 02:01:25 +01:00
5cf5b24a06 Add signal strength/quality note to Mux Info diagnostics page 2024-09-16 01:59:16 +01:00
e669605930 Update to 1.5.3 2024-09-15 02:07:07 +01:00
b1e950951b Update content type names to match DTT list better 2024-09-15 02:03:00 +01:00
ad950424f8 Allow searching for content type 0 (Unclassified) 2024-09-15 02:01:38 +01:00
72cca9737b Fix spurious newline when loading file in file editor 2024-08-24 09:11:10 +01:00
28d3499032 Remove seconds and year from Programme Details, Start time display 2024-08-11 18:39:07 +01:00
ece91ad655 Update to 1.5.2-14 2024-07-26 10:42:11 +01:00
4ec126a2cb Add {svc count} procedure 2024-07-22 14:32:21 +01:00
2cd6973178 Automatically hold killed tasks 2024-05-12 15:00:21 +01:00
57d00270f5 Update to 1.5.2-13 2024-05-04 23:45:50 +01:00
26438fd501 Add "Kill Running" to Decrypt and Shrink 2024-05-04 23:41:00 +01:00
0b54972756 Add "Kill Running" to queue processing 2024-05-04 23:27:53 +01:00
49549cd83f Allow PID tracking for queue processing 2024-05-04 12:30:12 +01:00
9ccb535b29 Update to 1.5.2-12 2024-04-14 01:56:23 +01:00
578b0ec551 Fix deferred cleanup of copied setup.db when locked 2024-04-08 17:42:16 +01:00
0fe6bfc482 Clear File Editor window on page refresh 2024-04-07 21:09:54 +01:00
db67239313 Enhance robustness against poor/corrupt installed package data 2024-04-07 14:32:29 +01:00
0ee83fa950 Update to 1.5.2-11 2024-03-28 19:23:28 +00:00
bb64837e79 Fix more DST problems with the schedule display 2024-03-28 19:17:35 +00:00
95c9471b51 Fix expression in expression errors 2024-03-28 18:58:07 +00:00
345b9ab706 Disable Twitter feed, as it no longer works 2024-03-16 21:38:49 +00:00
bf2f95fdfc Simplify catch and expr statements 2024-03-10 21:16:35 +00:00
fdb7ed4007 Update to 1.5.2-10 2024-03-10 14:02:33 +00:00
244b3e46cf Fix erroneous ffprobe output when .ts file not DLNA indexed 2024-03-10 14:01:22 +00:00
a4d7dfaea6 Filter non-info output from ffprobe output 2024-03-10 14:00:02 +00:00
81940fa4a8 Minor optimisation in "ts fetch" 2024-03-10 13:59:21 +00:00
5a1b0fe2b2 Tidy up HTML 2024-02-21 19:45:00 +00:00
ac21373095 Handle database error better 2024-02-12 20:46:42 +00:00
9b40cae0be Update to 1.5.2-9 2024-02-12 12:09:35 +00:00
ba8786f0db Allow backup file name prefix to be specified via command line arg. 2024-02-12 11:32:45 +00:00
788652b289 Add setting for schedule backups max. age 2024-02-12 11:31:20 +00:00
3bf7a9ee6c Merge pull request 'Add -w flag to lsof so that it doesn't fail if there is an non accesible cifs filesystem mounted' (#50) from MymsMan/webif:Fix_system_inuse into master
Reviewed-on: #50
2024-02-05 19:21:43 +00:00
52c698587d Fix missing <div> 2024-02-05 19:11:14 +00:00
4cf9d0e102 Simplify expressions 2024-02-05 19:10:36 +00:00
d7f7928d79 Add -w -f flags to lsof so that it doesn't fail if there is an non accesible cifs filesystem mounted
Note performance is still impacted - about 10s
2024-02-05 16:44:24 +00:00
19bfc162a6 Fix poor html 2024-02-05 15:25:19 +00:00
fd9188c8f6 Update to 1.5.2-8 2024-01-31 22:25:35 +00:00
f9877ae35e Flush buffered socket output due to Jim behaviour change 2024-01-31 22:23:19 +00:00
e0fd42c929 Tweak formatting 2024-01-27 00:52:02 +00:00
93c266fa2d Remove duplicate </span> tag 2024-01-27 00:51:16 +00:00
b0d965e4c8 Remove duplicate Rendered line and simplify expression 2024-01-27 00:49:34 +00:00
78cebd9099 Update extension list and make common 2024-01-27 00:45:00 +00:00
4c4fbe6a2b Fix escaping for literal \ also 2024-01-26 09:50:21 +00:00
f07f2486ee Update to 1.5.2-7 2024-01-25 22:43:46 +00:00
230491ca76 Fix escaping on Jim critical characters - {}[]; 2024-01-25 22:43:11 +00:00
f85e83f1df Add button for quick access to auto.log (from /df) 2024-01-13 11:40:58 +00:00
d5f21d0ef5 Simplify expression 2023-12-26 23:48:22 +00:00
c0ed6a65d9 Remove out directory (webif-channelicons) 2023-12-12 00:41:16 +00:00
3deb1cedff Remove duplicate code 2023-12-03 10:28:34 +00:00
1a67bc68ca Update to 1.5.2-6 2023-11-22 15:59:31 +00:00
114550d540 Fix regexp parsing whilst SMART test in progress 2023-11-22 15:58:13 +00:00
e1b038d161 Update to 1.5.2-5 2023-11-20 16:04:57 +00:00
3e3f50b501 Fix return code decode from smartctl on self-test logs 2023-11-20 16:04:03 +00:00
504fbc89f8 Update to 1.5.2-4 2023-11-02 11:09:11 +00:00
33c2400cfc Tweak debug code formatting 2023-11-02 11:05:26 +00:00
8e80e86d70 Merge pull request 'Change slotid of dummy entry to -1 in checkconfilcts to prevent confusion with real recording slot 0' (#49) from MymsMan/webif:fixIncorrectConflicts into master
Reviewed-on: #49
2023-11-02 11:00:38 +00:00
67b3f61303 Change slotid of dummy entry to -1 in checkconfilcts to prevent confusion with real recording slot 0 2023-11-01 21:25:42 +00:00
c5358a9299 Update to 1.5.2-3 2023-10-28 16:05:23 +01:00
88ab54ad96 Fix info display for lone .hmt files, and make Play/Download work correctly in all cases 2023-10-28 16:04:17 +01:00
043865aa00 Add fetchhmt function to support lone .htm file operation 2023-10-28 16:01:41 +01:00
72c7e6e3b1 Fix null string length match 2023-10-07 02:12:09 +01:00
bbd1c50b38 Prevent trying to Play a .hmt file 2023-10-07 02:00:41 +01:00
46e4bddd56 Fix string match variable 2023-10-07 00:03:39 +01:00
15c3fcb239 Prevent trying to run ffprobe on .hmt files 2023-10-06 23:53:07 +01:00
dc65836cd4 Update to 1.5.2-2 2023-09-29 23:23:03 +01:00
129c190b84 Refresh status bar every minute 2023-09-29 23:22:13 +01:00
c3992e1a17 Set watched flag on .ts files played from file browser 2023-09-21 21:50:44 +01:00
8bd653b84b Update to 1.5.2-1 2023-07-26 21:42:46 +01:00
bed05f0820 Log schedule operations correctly 2023-07-26 21:42:11 +01:00
c60ac50c43 Simplify string format 2023-07-13 13:15:46 +01:00
275dc62d26 Update to 1.5.2 2023-07-13 12:32:25 +01:00
d22735af68 Protect log rotation operations by lock 2023-07-12 02:25:51 +01:00
fb9fb6ca85 Use manage_logs to rotate log file 2023-07-12 02:11:13 +01:00
1d243c989b Correctly display minute/minutes 2023-07-02 10:37:26 +01:00
44c52143a7 Fix divide by 0 error 2023-07-02 10:27:43 +01:00
7bd5bbc3c0 Log unschedule operation correctly 2023-07-01 22:14:33 +01:00
9c5b1a5641 Sanity check Recording start/end fields 2023-07-01 12:36:52 +01:00
90b69d0d21 Remove mux database 2023-07-01 00:02:48 +01:00
8713ea9495 Fix URL encoding for CRIDs containing IMIs 2023-06-28 02:12:46 +01:00
7c3021e320 Fix JSON formatting 2023-06-28 02:11:55 +01:00
0108d87c1c Update to 1.5.1-5 2023-06-13 10:54:15 +01:00
9b5c9553f0 Fix reverse sorts to keep folders first 2023-06-13 10:53:47 +01:00
2ea56fd045 Add Type (Extension) sort and tidy selection options 2023-06-13 01:37:00 +01:00
ac13c730a8 Add front panel software reboot reason 2023-06-07 00:33:52 +01:00
3de96080c2 Update to 1.5.1-4 2023-06-06 01:49:30 +01:00
1def3cc520 Overwrite files from previous shrink failure 2023-06-06 01:48:53 +01:00
d3f83f6f42 Update to 1.5.1-3 2023-06-05 13:47:04 +01:00
0711f9b226 Fix syntax error 2023-06-05 13:46:51 +01:00
a7b7e589e1 Update to 1.5.1-2 2023-06-04 21:30:59 +01:00
0a5f9a95c4 Revert bafa8fcfd3 2023-06-04 20:58:52 +01:00
a1adcb7033 Add front panel software reboot reason 2023-06-04 16:13:16 +01:00
32a32d2ad3 Widen window 2023-06-03 01:56:31 +01:00
7bac247e48 Remove white space before testing length 2023-05-30 00:40:08 +01:00
bafa8fcfd3 Stop epg jumping when page load has finished 2023-05-28 20:06:04 +01:00
39d18b4ff0 Fix missing pathname when scanning for .ts files
Don't abort on safe_delete error
2023-05-28 19:24:53 +01:00
c9100acf66 Don't overwrite instance variable defaults if .hmt file corrupt 2023-05-28 19:22:03 +01:00
0ab8fb125d Don't crash if file doesn't exist 2023-05-28 19:21:06 +01:00
b24ade080f Don't alert with null string 2023-05-19 01:43:15 +01:00
62d63b2f84 Fix visual schedule off by 1 day 2023-03-26 17:45:01 +01:00
f5b43f7ea1 Update to 1.5.1 2023-03-10 00:19:37 +00:00
640e81bda0 Add alternative a7.31 loader detection 2023-03-10 00:18:35 +00:00
7a00ea84ed Correct status when copying between local drives. 2023-02-17 20:37:50 +00:00
d3d1755e98 Expire lone .hmt files from failed recordings 2023-01-23 14:18:09 +00:00
b63a268dac Revert ce9e32977d - large can of worms. 2023-01-04 19:40:34 +00:00
ce9e32977d Rename class variables to match change from 12 years ago! 2023-01-04 00:59:54 +00:00
29e560b11b Reverse sign of duration calculation 2022-12-30 19:26:43 +00:00
30a006b971 Add "system isrestartpending" 2022-12-27 17:02:23 +00:00
aa24f100fa Allow application/xml* as editable types.
Tidy error messages.
2022-12-05 15:11:34 +00:00
f9825002eb Update to 1.5.0-9 2022-10-27 11:56:43 +01:00
47f413b55d Fix off by 1 hour 2022-10-27 11:56:00 +01:00
b0ba26918a Update to 1.5.0-8 2022-10-27 11:27:23 +01:00
3f756a78f4 Fix double Sunday display around DST change 2022-10-27 11:26:43 +01:00
80464c8342 Update to 1.5.0-7 2022-10-16 15:28:40 +01:00
a587278586 Delay refresh on UI interaction 2022-10-16 15:27:33 +01:00
00e8a342c0 Ignore TSR buffer size when disabled 2022-10-15 22:07:34 +01:00
203430c224 Update to 1.5.0-6 2022-09-25 17:01:24 +01:00
8c2a33b54d More fixes for expr weirdness 2022-09-25 16:59:39 +01:00
3f1832387a Revert expr modification 2022-09-25 02:08:56 +01:00
cb78e4bc1d Update to 1.5.0-4 2022-09-22 02:04:01 +01:00
f17adb764b Update expr commands to remove deprecated syntax 2022-09-22 02:02:32 +01:00
c73a940bae Ignore errors from invalid directories 2022-09-15 01:39:13 +01:00
805b9ba2dc Check for null last boot reason 2022-09-14 11:03:49 +01:00
66bd753689 Update to 1.5.0-3 2022-09-13 01:16:19 +01:00
c1358ef72f Update to 1.5.0-2 2022-09-10 15:33:33 +01:00
25bb62f622 Improve lock handling of /var/lib/humaxtv/setup.db 2022-09-10 15:31:33 +01:00
aab63aa8cc Fix filename escaping in file editor 2022-09-10 14:24:10 +01:00
5e941b889c Update to 1.5.0-1 2022-04-24 17:39:03 +01:00
b6c0ff80b6 Don't error on null SMART status 2022-04-24 17:37:13 +01:00
97b24da0ed Allow HD to collect disk stats. 2022-04-24 17:36:35 +01:00
a34a951a33 Handle errors from Smartctl 2022-04-24 17:33:49 +01:00
12ecc32e44 Update version and dependencies 2022-04-21 18:59:25 +01:00
b44f5c3678 Fix clipboard paste for .ts files without sidecars 2022-04-21 18:00:39 +01:00
bdfae19796 Add error check 2022-04-21 18:00:04 +01:00
5cb9bdd6dd Remove redundant calls 2022-04-21 17:58:44 +01:00
9b8e6763af Handle SMART error counters more intelligently 2022-04-20 12:17:06 +01:00
1e53bc1b37 Update version and dependencies 2022-04-15 14:57:22 +01:00
cfa77051e5 Change loglevel 2022-04-15 14:56:15 +01:00
08de047d91 Add prefix to logging 2022-04-15 14:55:07 +01:00
da24fc6b20 (Re-)Create settings table if missing. 2022-04-11 01:00:40 +01:00
f4357b87db Update to 1.4.9-8 2022-03-28 00:00:50 +01:00
9fb761a38e Revert 567d142613 2022-03-27 23:59:32 +01:00
a79addc543 Remove redundant rename/comments 2022-03-25 23:46:52 +00:00
5edd63b2af Fix for "system dlnaurl" reversion 2022-03-25 23:43:51 +00:00
7f1d68bf3a Remove .orig files 2022-03-25 23:40:03 +00:00
0d7ba4744f Revert e79e85af81 2022-03-25 23:34:40 +00:00
c5c4091cf6 Update to 1.4.9-7 2022-03-25 23:17:12 +00:00
778c328a79 Improve disk check functionality and layout 2022-03-25 23:07:58 +00:00
99f22c6a28 Use 24h clock when adding manual scheduled event 2022-03-25 23:06:02 +00:00
51719420ba Add Power cycle reason 2022-03-25 23:04:06 +00:00
e5a8f12a15 Join files with names containing ampersand 2022-03-25 23:02:14 +00:00
3dc3404327 Merge pull request 'Play file in browser or with external helper application' (#34) from df/webif:df-playmedia-patch into master
Reviewed-on: #34
2022-03-25 22:58:12 +00:00
67fe7e655c Merge pull request 'Improve processing and display of custom encryption key' (#48) from df/webif:df-cryptokey-patch into master
Reviewed-on: #48
2022-03-25 22:57:51 +00:00
4f55ea1b9f Merge pull request 'Fixes and improvements for bookmark viewer' (#47) from df/webif:df-bookmarkviewer-patch into master
Reviewed-on: #47
2022-03-25 22:57:15 +00:00
4f5ba6f14f Merge pull request 'Fix incorrectly constructed query list, restore purging completed entries' (#46) from df/webif:df-queue-safer-patchv2 into master
Reviewed-on: #46
2022-03-25 22:54:02 +00:00
df
a7a4067a7f Improve processing and display of custom encryption key 2021-10-07 21:11:56 +01:00
df
4d9fa6b961 Don't show Generate Thumbnails for ODEncrypted file 2021-06-03 00:38:46 +01:00
df
55ea14864c Merge branch 'master' of https://git.hpkg.tv/hummypkg/webif into df-bookmarkviewer-patch 2021-05-30 12:57:17 +01:00
df
de1b690f36 Rework scripting for bookmark page; move presentation to CSS 2021-05-30 11:50:04 +01:00
df
caafde56c8 Correctly end the HTML page with closing tags etc 2021-05-28 15:26:48 +01:00
df
cb549b4995 Name ad-hoc attributes with data- prefix 2021-05-28 15:26:48 +01:00
HummyPkg
d04c094543 Update to 1.4.9-6 2021-05-28 15:26:48 +01:00
HummyPkg
2b51358c63 Update to 1.4.9-5 2021-05-28 15:26:48 +01:00
df
033eff6fcc Ensure , is escaped in ::js::escape 2021-05-28 15:26:47 +01:00
df
d5b34ed2c3 Fix unquoted string; add genre check; errors to stderr 2021-05-28 15:26:47 +01:00
HummyPkg
541318fbba Update to 1.4.9-4 2021-05-28 15:26:46 +01:00
df
eab635cab6 Improve error trapping, actually make it work 2021-05-28 15:26:46 +01:00
df
e4aa241351 Make use of unique element IDs for img consistent 2021-05-28 15:26:45 +01:00
HummyPkg
760f6db560 Revert "Work around uclibc getaddrinfo()"
This reverts commit f206766191.
2021-05-28 15:26:45 +01:00
HummyPkg
d5fd97a83a Fix bookmark script.js 2021-05-28 15:26:44 +01:00
HummyPkg
d4fbdd149e Update version 2021-05-28 15:26:43 +01:00
HummyPkg
3a1d398874 Add option to automatically remove unused dependency packages 2021-05-28 15:26:43 +01:00
4b925199e5 Add Failed and Pending select buttons, reorder buttons 2021-05-28 15:26:43 +01:00
599bb9b5bc Move favicon.ico to prevent errors during install 2021-05-28 15:26:42 +01:00
cdeea09dab Work around uclibc getaddrinfo() 2021-05-28 15:26:42 +01:00
710162a654 Fix crash when genre is null 2021-05-28 15:26:42 +01:00
8347713f55 Fix overflowing conflict warning 2021-05-28 15:26:41 +01:00
df
afee47b6bc Improve status, adding more possible outputs
- check for copying vs playing: the same file.ext is open twice
 - check for playing DLNA: localhost:n->host:9000
 - on HDR, distinguish Playing a show vs streaming it over DLNA
 - distinguish between Watching, Watching (delayed) (timeshift),
   and Not Watching (eg Portal).
2021-05-28 15:26:41 +01:00
df
318d088fff Support setting the seriesnum, episodenum, episodetot attributes in "rename" 2021-05-28 15:26:41 +01:00
df
08ec7643f7 Add thumbnail viewer to Manage Bookmarks 2021-05-28 15:26:34 +01:00
HummyPkg
0e66340b42 Fix problems pointed out by tclCheck and frink 2021-05-28 15:20:51 +01:00
6c3c1f3423 Restrict matching epsiodes search to same channel 2021-05-28 15:20:51 +01:00
df
a748870195 Add test for matching key for DLNA; fallback to direct; fail if no key matches 2021-05-28 15:20:51 +01:00
df
5c8a573382 Correct the maximum length enforced for guidance text (74 vs 48) 2021-05-28 15:20:51 +01:00
df
db477e5d42 Add missing $ for certain variable references
Missing $s invalidated attempts to check the length of title, synopsis, guidance.
2021-05-28 15:20:50 +01:00
df
7c4d359aec Reduce (or apply) maximum lengths for title and synopsis, allowing for character set prefix byte 2021-05-28 15:20:50 +01:00
df
88d3274241 Error protect database access; re-create corrupt queue DB. 2021-05-28 15:20:49 +01:00
df
00689a2036 Make 127.0.0.1 the default host for system dlnahelper
In all the cases where `system dlnahelper` is called, no host/IP part is specified, and those cases are creating a URL that only needs to be accessible from the same machine, where the loopback address should be the default.

Should fix eg https://hummy.tv/forum/threads/detectads-not-always-succesful.9936/post-147241.
2021-05-28 15:20:49 +01:00
df
39dae95f28 Set maximum width for File column
Add title attribute to display possibly truncated File as tooltip.

Will this work well for mobile/touchscreen use?
2021-05-28 15:20:49 +01:00
df
0c1bb71520 exists -proc -> exists -command
`exists -command` subsumes `exists -proc`

This test is generally checking whether the command exists, rather than some proc that is overriding it.

Currently `class` is a proc but this may not always be so.
2021-05-28 15:20:48 +01:00
df
763abda557 Remove unwanted padding before programme divs in EPG to avoid cumulative positioning error. 2021-05-28 15:20:48 +01:00
df
3f75333542 Display raw programme times, not clipped to the display period. 2021-05-28 15:20:48 +01:00
df
11cfa40d78 Fix typo and < vs <= in dbfetch -trange option: avoids missing channels in EPG. 2021-05-28 15:20:47 +01:00
df
e884a2ebad Also use non-breaking spaces in file name display 2021-05-28 15:20:47 +01:00
df
fac0dee693 Fix quoting of replacement text, avoiding "unmatched ]" 2021-05-28 15:20:47 +01:00
df
2f28b0a66e Improve listing of directories with special characters, especially spaces. 2021-05-28 15:20:47 +01:00
df
ad9b48b0d2 Remove unnecessary exec
Jim supports the pwd command since at least 6461e8bf6d, so no need to exec it.
2021-05-28 15:20:46 +01:00
df
0e6a67d24a Ensure cut plan segments are aligned left 2021-05-28 15:20:46 +01:00
df
eb7f9667ba Avoid negative CSS widths 2021-05-28 15:20:46 +01:00
df
b8964c8017 Check that bookmark save succeeded
If not, enable the old "Save new bookmarks" button.

Also
* add icons for buttons
* simplify invert URL handling.
2021-05-28 15:20:46 +01:00
df
1a08892868 Allow minimum width for cut plan
Also
* add ID for estimated time row
* make the <label> for the Save Bookmarks checkbox actually be its label.
2021-05-28 15:20:45 +01:00
HummyPkg
42619e6555 Add to episode parsing tests 2021-05-28 15:20:45 +01:00
HummyPkg
eac4849326 Update version 2021-05-28 15:20:45 +01:00
HummyPkg
0d99a7b24d Update tvdb XML parsing utility 2021-05-28 15:20:44 +01:00
df
6d0b1deebe Banish extraneous ) 2021-05-28 15:20:44 +01:00
df
959aa9f8e6 Avoid displaying negative free space 2021-05-28 15:20:43 +01:00
df
6814880b40 Understand Part/Pt. as a synonym for episode 2021-05-28 15:20:43 +01:00
HummyPkg
569bff9d60 Release 1.4.8-11 2021-05-28 15:20:43 +01:00
df
b9787a0a9f Retry access in case the settings database is locked 2021-05-28 15:20:42 +01:00
df
42d03e25c6 Change to 0.5s, doubling for 4 tries 2021-05-28 15:20:42 +01:00
df
13f3b1ccce Raise the "database locked" error from caller context 2021-05-28 15:20:42 +01:00
df
3981bbd37e Retry access in case the settings database is locked 2021-05-28 15:20:41 +01:00
df
67e71691eb Retry access in case the settings database is locked
Create `settings::_safer_query` class proc to allow 5 tries with 1s delay; use it for `_nval_setting` and `_tval_setting` methods
2021-05-28 15:20:41 +01:00
567d142613 Prevent raw utf8 display
https://hummy.tv/forum/threads/webif-web-interface-1-4-x.7712/post-135917
2021-05-28 15:20:41 +01:00
1b11be6827 Fix the ****ing formatting in this stupid editor 2021-05-28 15:20:41 +01:00
519f771859 Fix thumbnail generation 2021-05-28 15:20:40 +01:00
df
49a7e430cf Fix incorrectly constructed query list to restore purging completed entries
A constant list included an item that needed to be evaluated.
2021-05-19 13:06:28 +01:00
df
da7d07a891 Add Download button 2021-04-17 14:13:04 +00:00
df
bf838ed5e4 Add Download button 2021-04-17 13:42:50 +00:00
df
8b795a0a7d Fix quoting and escaping of JS fragments 2021-04-17 12:09:25 +00:00
df
243dfdd595 Fix quoting and escaping of JS fragments
NB jQuery $('#id') in a string looks like an [expr ...] to Jim!
2021-04-17 01:55:33 +00:00
df
8bbc28d3c2 Add Download button 2021-04-16 10:32:20 +00:00
df
c8f51adfaa Add Download button 2021-04-16 10:29:27 +00:00
df
4845a4b0cf Add Download button 2021-04-13 12:58:20 +00:00
HummyPkg
ee4c121a54 Update to 1.4.9-6 2021-04-10 09:53:33 +01:00
HummyPkg
8f340c9a3b Update to 1.4.9-5 2021-04-10 09:53:13 +01:00
67504198ec Merge pull request 'Ensure , is escaped in ::js::escape' (#45) from df/webif:df-listdirs-patch-v2 into master
Reviewed-on: #45
2021-04-10 08:52:31 +00:00
df
ba0f505e34 Ensure , is escaped in ::js::escape 2021-04-10 01:05:19 +01:00
33e2f705c3 Merge pull request 'df-seriesnum-patchv2' (#44) from df/webif:df-seriesnum-patch into master
Reviewed-on: #44
2021-03-22 21:57:07 +00:00
df
a26526b047 Fix unquoted string; add genre check; errors to stderr 2021-03-21 00:14:35 +00:00
HummyPkg
04e4fd1083 Update to 1.4.9-4 2021-03-20 19:33:27 +00:00
6e3b5114be Merge pull request 'df-decryptq-testkey-patchv2' (#43) from df/webif:df-decryptq-testkey-patch into master
Reviewed-on: #43
2021-03-20 19:31:28 +00:00
df
6c40da165d Improve error trapping, actually make it work 2021-03-20 01:22:48 +00:00
df
7964145677 Don't play HTML5 media in the WebIf Browse Files window 2021-03-15 17:26:36 +00:00
df
f032f8b469 Play file in browser or with external helper application
Create a new `play.jim` in html/browse. The `/play` subtree is now obsolete and can be removed.

Fix DLNA playback on HDR

`urlbase` is the host name

Remove typos (missing }s, $)

Make new file 'play.jim' executable
2021-03-15 17:26:27 +00:00
df
e79e85af81 Make {system dlnaurl} handle any valid pathname for a file 2021-03-15 16:08:47 +00:00
df
68d9d7f5b5 Add webm to displayed file types
Also handle files with no "definition" as not ts.
2021-03-15 16:08:47 +00:00
df
3454302a98 Use dicts for httpheader 2021-03-15 16:08:46 +00:00
df
75b32ad3e0 Make 127.0.0.1 the default host for DLNA functions (pt 2) 2021-03-15 16:08:46 +00:00
df
20c035873e Remove invalid use of video/ts MIME type 2021-03-15 16:08:46 +00:00
df
346ed469c8 Make use of unique element IDs for img consistent 2021-03-04 19:31:09 +00:00
HummyPkg
029b115628 Revert "Work around uclibc getaddrinfo()"
This reverts commit f206766191.
2021-02-26 23:04:57 +00:00
HummyPkg
c7a91766af Fix bookmark script.js 2021-02-24 18:39:52 +00:00
HummyPkg
d00f925e58 Update version 2021-02-24 18:14:44 +00:00
HummyPkg
fc3b28e978 Add option to automatically remove unused dependency packages 2021-02-24 18:14:44 +00:00
c4afa7ac60 Add Failed and Pending select buttons, reorder buttons 2021-02-24 15:13:35 +00:00
3c3b0af49f Move favicon.ico to prevent errors during install 2021-02-24 14:54:59 +00:00
f206766191 Work around uclibc getaddrinfo() 2021-02-24 14:47:11 +00:00
67afb37f27 Fix crash when genre is null 2021-02-24 14:46:37 +00:00
ad150143a8 Fix overflowing conflict warning 2021-02-24 14:44:55 +00:00
df
5d3b046c70 Improve status, adding more possible outputs
- check for copying vs playing: the same file.ext is open twice
 - check for playing DLNA: localhost:n->host:9000
 - on HDR, distinguish Playing a show vs streaming it over DLNA
 - distinguish between Watching, Watching (delayed) (timeshift),
   and Not Watching (eg Portal).
2021-02-24 13:58:46 +00:00
df
18bed926b3 Support setting the seriesnum, episodenum, episodetot attributes in "rename" 2021-02-24 13:39:35 +00:00
df
1c868ae201 Add thumbnail viewer to Manage Bookmarks 2021-02-24 13:33:35 +00:00
HummyPkg
4820ade1f5 Fix problems pointed out by tclCheck and frink 2021-02-24 13:21:19 +00:00
bc2e6c1a85 Restrict matching epsiodes search to same channel 2021-02-24 13:15:06 +00:00
df
6f45884f94 Add test for matching key for DLNA; fallback to direct; fail if no key matches 2021-02-24 13:13:01 +00:00
a1cf871a84 Merge pull request 'Correctly manage maximum lengths of certain HMT fields' (#30) from df/webif:df-hmtfieldlength-patch into master
Reviewed-on: #30
2021-02-24 13:04:14 +00:00
df
7834dae075 Error protect database access; re-create corrupt queue DB. 2021-02-24 12:55:52 +00:00
15cba14cc3 Merge pull request 'df-dlnahelper-patch' (#23) from df/webif:df-dlnahelper-patch into master
Reviewed-on: #23
2021-02-24 12:48:31 +00:00
3f74654ea2 Merge pull request 'df-queuetablewidth-patch' (#24) from df/webif:df-queuetablewidth-patch into master
Reviewed-on: #24
2021-02-24 12:46:50 +00:00
df
f16399ec2f exists -proc -> exists -command
`exists -command` subsumes `exists -proc`

This test is generally checking whether the command exists, rather than some proc that is overriding it.

Currently `class` is a proc but this may not always be so.
2021-02-24 12:45:30 +00:00
df
0060e47db5 Remove unwanted padding before programme divs in EPG to avoid cumulative positioning error. 2021-02-24 12:40:45 +00:00
df
8bdb1233e8 Display raw programme times, not clipped to the display period. 2021-02-24 12:40:45 +00:00
df
2642b190b0 Fix typo and < vs <= in dbfetch -trange option: avoids missing channels in EPG. 2021-02-24 12:40:44 +00:00
df
8975cbd71d Also use non-breaking spaces in file name display 2021-02-24 12:38:39 +00:00
df
32ac3c8421 Fix quoting of replacement text, avoiding "unmatched ]" 2021-02-24 12:38:39 +00:00
df
f5180dc144 Improve listing of directories with special characters, especially spaces. 2021-02-24 12:38:39 +00:00
df
dac3ea8698 Remove unnecessary exec
Jim supports the pwd command since at least 6461e8bf6d, so no need to exec it.
2021-02-24 12:38:38 +00:00
df
4ae8ea85f7 Ensure cut plan segments are aligned left 2021-02-24 12:24:33 +00:00
df
47495e7b8d Avoid negative CSS widths 2021-02-24 12:24:33 +00:00
df
73d25247f0 Check that bookmark save succeeded
If not, enable the old "Save new bookmarks" button.

Also
* add icons for buttons
* simplify invert URL handling.
2021-02-24 12:24:32 +00:00
df
f7c37e83ae Allow minimum width for cut plan
Also
* add ID for estimated time row
* make the <label> for the Save Bookmarks checkbox actually be its label.
2021-02-24 12:15:33 +00:00
df
cf407f9a80 Correct the maximum length enforced for guidance text (74 vs 48) 2021-02-22 19:31:20 +00:00
df
d98217b679 Merge branch 'master' into df-hmtfieldlength-patch 2021-02-22 16:35:49 +00:00
HummyPkg
269f844f43 Add to episode parsing tests 2021-01-18 23:10:16 +00:00
HummyPkg
488961c600 Update version 2021-01-18 23:00:37 +00:00
HummyPkg
a5f0734201 Update tvdb XML parsing utility 2021-01-18 22:59:58 +00:00
94849c51e7 Merge pull request 'Avoid displaying negative free space' (#28) from df/webif:df-freespace-patch into master
Reviewed-on: #28
2021-01-14 21:04:15 +00:00
907d9d8dcf Merge pull request 'Understand Part/Pt. as a synonym for episode' (#31) from df/webif:df-partasepisode-patch into master
Reviewed-on: #31
2021-01-14 21:03:22 +00:00
df
6641b6f458 Understand Part/Pt. as a synonym for episode 2021-01-01 22:33:14 +00:00
df
98ef6a876f Add missing $ for certain variable references
Missing $s invalidated attempts to check the length of title, synopsis, guidance.
2020-12-31 15:22:42 +00:00
df
d05f841bb4 Reduce (or apply) maximum lengths for title and synopsis, allowing for character set prefix byte 2020-12-31 15:18:03 +00:00
df
4da3bb0209 Banish extraneous ) 2020-12-31 12:13:52 +00:00
HummyPkg
2e471129b8 Release 1.4.8-11 2020-12-13 23:24:12 +00:00
df
0ad1491634 Avoid displaying negative free space 2020-12-11 11:18:58 +00:00
df
da32aa0a72 Set maximum width for File column
Add title attribute to display possibly truncated File as tooltip.

Will this work well for mobile/touchscreen use?
2020-11-14 13:31:08 +00:00
df
f6117a4ec0 Make 127.0.0.1 the default host for system dlnahelper
In all the cases where `system dlnahelper` is called, no host/IP part is specified, and those cases are creating a URL that only needs to be accessible from the same machine, where the loopback address should be the default.

Should fix eg https://hummy.tv/forum/threads/detectads-not-always-succesful.9936/post-147241.
2020-11-14 13:21:26 +00:00
df
580ecb8c75 Add thumbnail viewer to Manage Bookmarks
Finally eliminate end in favour of curval
2020-11-14 13:19:06 +00:00
df
3c8ea907de Add thumbnail viewer to Manage Bookmarks
Refactor script to handle UI interaction between Bookmarks, Slider and Thumbnail generation.
2020-11-14 13:19:06 +00:00
df
8e68fb10ad Add Crop shortcut button 2020-11-14 13:19:05 +00:00
df
c9d7299092 Add Crop shortcut button 2020-11-14 13:19:05 +00:00
df
0b6f6fccb1 Add tooltips to slider handles 2020-11-14 13:19:05 +00:00
df
6937f2b7fb Add thumbnail viewer to Manage Bookmarks 2020-11-14 13:19:05 +00:00
df
086814cafa Add thumbnail viewer to Manage Bookmarks 2020-11-14 13:19:05 +00:00
8021455a94 Merge pull request 'df-lockedsettings-patch' (#18) from df/webif:df-lockedsettings-patch into master
Reviewed-on: #18
2020-11-14 11:16:55 +00:00
c995f2232e Merge pull request 'prpr-patch-fix-thumbnail' (#25) from prpr/webif:prpr-patch-fix-thumbnail into master
Reviewed-on: #25
2020-11-14 11:12:14 +00:00
6dc47f2b96 Merge branch 'master' into prpr-patch-fix-thumbnail 2020-11-14 01:29:38 +00:00
af74503b99 Fix the ****ing formatting in this stupid editor 2020-11-14 01:25:46 +00:00
58ecd41952 Fix thumbnail generation 2020-11-14 01:17:07 +00:00
df
e579c8dd24 Merge branch 'master' into df-lockedsettings-patch 2020-10-23 11:45:30 +00:00
df
7c600be77e Retry access in case the settings database is locked 2020-10-20 18:34:19 +00:00
e3f7a2b738 Merge pull request 'prpr-patch-rename-utf8' (#20) from prpr/webif:prpr-patch-rename-utf8 into master
Reviewed-on: #20
2020-10-19 22:02:38 +00:00
a90f49b324 Prevent raw utf8 display
https://hummy.tv/forum/threads/webif-web-interface-1-4-x.7712/post-135917
2020-10-19 16:05:12 +00:00
df
3e9ecc8a7c Change to 0.5s, doubling for 4 tries 2020-10-19 11:44:53 +00:00
df
7bb66de5f2 Raise the "database locked" error from caller context 2020-10-18 19:19:26 +00:00
df
9b64128c92 Retry access in case the settings database is locked 2020-10-18 15:48:07 +00:00
df
6822c833be Retry access in case the settings database is locked
Create `settings::_safer_query` class proc to allow 5 tries with 1s delay; use it for `_nval_setting` and `_tval_setting` methods
2020-10-18 14:53:23 +00:00
df
cefe60c722 Merge pull request 'Resync master' (#5) from hummypkg/webif:master into master
Reviewed-on: df/webif#5
2020-10-18 14:06:40 +00:00
ee885a173c Merge pull request 'master' (#1) from hummypkg/webif:master into master
Reviewed-on: prpr/webif#1
2020-10-16 21:05:30 +00:00
HummyPkg
d7c15163e1 Update release version 2020-10-16 14:28:17 +01:00
879c458256 Merge pull request 'df-auto-deq-patch' (#14) from df/webif:df-auto-deq-patch into master
Reviewed-on: #14
2020-10-16 13:27:15 +00:00
df
1a25e2a3f1 Fix potential format error with queue item containing %
If an item is in the queue whose file name contains a %, the following error occurs, causing the item never to be dequeued:
```in procedure '::auto::dumpq' called at file "/mod/webif/lib/auto/deq", line 167
at file "/mod/webif/lib/auto/deq", line 118
/mod/webif/lib/auto/deq:118: Error: not enough arguments for all format specifiers```
The file name needs to be passed to `format` as a parameter with format `%s` rather than embedding it in the format string, or else ```log "[format ...][$q get file]"```
2020-10-16 14:26:30 +01:00
006a04683a Merge pull request 'df-autolast-future-patch' (#13) from df/webif:df-autolast-future-patch into master
Reviewed-on: #13
2020-10-16 13:25:41 +00:00
df
3623a26a08 Correct autolast in the future
Fixing issue in <https://hummy.tv/forum/threads/recursive-auto-shrink-auto-decrypt-no-longer-working.9399/post-134718>.
2020-10-16 14:25:15 +01:00
c428a367a1 Merge pull request 'Use service ids to map to mux names' (#12) from prpr/webif:master into master
Reviewed-on: #12
2020-10-16 13:18:00 +00:00
480108f3a2 Merge pull request 'Schedule all epsiodes of series' (#11) from MymsMan/webif:SeriesSched into master
Reviewed-on: #11
2020-10-16 13:16:25 +00:00
2884a82dbf Schedule all epsiodes of series 2020-10-16 14:16:15 +01:00
ac4b392db8 Merge pull request 'Rotate auto.log to auto_<timestamp>.log when it excedes settings logsize' (#16) from MymsMan/webif:Rotate_auto.log into master
Reviewed-on: #16
2020-10-16 13:14:11 +00:00
c3d360fa63 Rotate auto.log to auto_<timestamp>.log when it excedes settings logsize 2020-10-16 14:13:16 +01:00
df
2d06ec7811 Resync master from hummypkg/webif:master
Reviewed-on: df/webif#4
2020-07-14 11:49:50 +00:00
3f199f32ab Update 'webif/html/diag/mux.jim' 2020-07-14 00:29:02 +00:00
HummyPkg
1994d99294 Relocate sort_size.gif 2020-06-18 01:05:28 +01:00
HummyPkg
cbc62f4903 Update version 2020-06-18 00:58:55 +01:00
f40a82df57 Merge pull request 'df-browse-sizesort-patch' (#9) from df/webif:df-browse-sizesort-patch into master 2020-06-17 23:58:33 +00:00
HummyPkg
0ef47da7b6 Remove trailing whitespace, restore last blank line 2020-06-18 00:57:22 +01:00
df
42cf8bf238 Add tooltips for sort orders
Also generalise the file sort function to allow sorting by any quantity returned by `[file stat]`
2020-06-18 00:50:55 +01:00
df
9cf915e5f7 Avoid sort order build-up in sort URL parameter string
Fixes behaviour where each new sort added &order=n to the query string.
2020-06-18 00:50:55 +01:00
df
478d9db2e2 Add sort by size (icon) 2020-06-18 00:50:55 +01:00
df
b824882eb2 Add sort by size
Implementing https://hummy.tv/forum/threads/webif-web-interface-1-4-x.7712/post-142116.

The sort line is reorganised to allow for two more sort orders.
2020-06-18 00:50:55 +01:00
HummyPkg
4b3efc2e72 Fix missing continuation 2020-06-16 10:52:14 +01:00
HummyPkg
abf121bba4 Fix rsv::find_hsvc by channel 2020-06-14 14:31:25 +01:00
HummyPkg
c1bc10eca8 Fix schedule restore 2020-06-14 13:40:38 +01:00
df
0e09258bfa Merge pull request 'Fix extraneous $' (#2) from svc.class into master 2020-06-07 12:35:55 +00:00
HummyPkg
3b7a573600 Bump version 2020-06-06 22:23:11 +01:00
HummyPkg
c68b6a17db Merge branch 'master' of https://git.hpkg.tv/hummypkg/webif 2020-06-06 22:22:33 +01:00
e767f28a8f Merge pull request 'Fix extraneous $' (#8) from df/webif:svc.class into master 2020-06-06 21:22:22 +00:00
df
ddb163ab5c Fix extraneous $
Should fix `modinit.log` error report:
```in procedure 'rsv' called at file "/mod/sbin/autoschedule", line 22
at file "/mod/webif/lib/rsv.class", line 1374```
2020-06-05 16:44:29 +00:00
HummyPkg
4194bf627c Increase rsvsync dependency 2020-06-03 13:12:53 +01:00
HummyPkg
e3de677046 Bump version, require latest jim-cgi 2020-06-03 13:02:16 +01:00
d69ee1e97a Merge pull request 'TVDB char entity fix (Update 'webif/lib/xml.class')' (#2) from df/webif:tvdb-entity-decode into master 2020-06-03 11:01:13 +00:00
HummyPkg
3ddc898553 Whitespace and indentation cleanup 2020-06-03 12:00:43 +01:00
df
1dfb66c576 Update 'webif/lib/xml.class' 2020-06-03 12:00:43 +01:00
96e53bec56 Merge pull request 'df-progressbar-tooltip-patch' (#3) from df/webif:df-progressbar-tooltip-patch into master 2020-06-03 10:43:54 +00:00
df
18aee67607 Make percentage visible in progressbar image 2020-06-03 11:43:30 +01:00
c416e5f39d Merge pull request 'colourXepg' (#7) from MymsMan/webif:colourXepg into master 2020-06-03 10:39:29 +00:00
61df972bde colour code skipped and already recorded programmes in the extended epg view 2020-06-03 11:38:56 +01:00
a67f5a9b70 Merge pull request 'Updates to rsv.class and epg,class to support the new schedchk package' (#6) from MymsMan/webif:schedchk into master 2020-06-03 10:36:22 +00:00
HummyPkg
022e6459fc Adjust whitespace and indentation to match project 2020-06-03 11:35:27 +01:00
cd9e9924f6 add issplit method to rsv.class 2020-06-03 11:01:10 +01:00
e3da17ca6c use s-crid:e-crid as key for recorded programmes 2020-06-03 11:01:09 +01:00
b99327a562 Updates to rsv.class and epg.class to support schedchk package 2020-06-03 11:01:09 +01:00
1b5472a141 Merge pull request 'Change schedule list to use svc.class instead of get_channel_attr_byhsvc' (#4) from MymsMan/webif:schedlist into master 2020-06-03 09:59:31 +00:00
8586483474 Change scedule list to use svc.class instead of get_channel_attr_byhsvc 2020-06-03 10:57:50 +01:00
df
dd3e4cb358 Make percentage visible in progressbar image
Add title attribute for tooltip since % value isn't actually displayed otherwise.
2020-05-11 11:40:14 +00:00
HummyPkg
a3cb0a6693 Add svc.class 2020-04-19 12:00:49 +01:00
HummyPkg
7b53d0b549 Update version 2020-04-02 19:09:07 +01:00
79785362ae Merge pull request 'Add -nocase to epg dbfetch method to allow case insensitive searches' (#1) from MymsMan/webif:nocase into master 2020-04-02 18:08:08 +00:00
38cde695e4 add -nocase option to epg dpftech method 2020-04-02 19:06:07 +01:00
HummyPkg
3080f9786d Add CFW 3.14 kernel versions 2020-03-29 16:49:09 +01:00
xyz321
1363fd2f22 Fix problem with EPG v
iew shortly after midnight
2020-02-24 14:53:12 +00:00
HummyPkg
7cc8518779 Increase version number 2020-02-22 10:36:37 +00:00
MymsMan
487ff500ab Catch call to du to prevent errors if remote folder unreadable 2020-02-22 10:34:46 +00:00
MymsMan
d2e4e10919 Don't move files on other devices to Dustbin 2020-02-20 22:43:22 +00:00
HummyPkg
8994d016ef Add missing wget dependency 2020-02-07 13:46:40 +00:00
d14ccef3bf Catch errors from stat that might cause automatic processing to stall 2020-01-25 17:02:12 +00:00
f77d11f3fc Restore thetvdb functionality following site changes 2019-11-27 15:51:43 +00:00
38aca0d740 Crop is failing due to double URL encode 2019-11-17 16:08:16 +00:00
/df
249af1b4fa Make entire toolbar cell clickable 2019-11-17 16:07:56 +00:00
9fe8b3a067 bump version 2019-11-10 21:06:36 +00:00
0f55145586 Sort queue by date (after priority) 2019-11-10 21:06:14 +00:00
ede9ef3171 Upgrade jquery.scrollto to version 2.1.2 2019-11-10 21:05:44 +00:00
Matthew
dfde94c384 Automatic edit point bookmarks following crop 2019-11-10 21:04:11 +00:00
0c7dd2b31f Bump version 2019-05-08 14:20:22 +01:00
59bbcc09fb Better way of determining midnight (does not require jim patch) 2019-05-08 14:20:07 +01:00
789950858d Bump version, require updated jim 2019-05-08 14:03:30 +01:00
69d0e6597d Revert to using clock scan to determine midnight 2019-05-08 14:02:51 +01:00
prpr
9c80bb0601 Properly handle CRIDs containing / 2019-05-08 14:02:14 +01:00
92f9e5ca60 Use eSystem for DVB-T/T2 detection.
Transmission mode 1 has been seen in the wild.
2019-04-25 14:38:49 +01:00
917d47e1c6 bump version 2019-02-05 14:04:09 +00:00
b9bf4fc5d3 Fix calculation for midnight today 2019-02-05 14:03:36 +00:00
e595c6b17b Bump version 2019-02-04 19:54:26 +00:00
xyz321
6eb6f49fea Make {system usbmounts} more generic . 2019-02-04 19:52:42 +00:00
f5a205a2af Support flag file to disable nugget-recordings 2019-01-31 13:14:17 +00:00
773a33f960 Add new flag to failed image 2019-01-19 12:56:25 +00:00
03e1c7340e Add option to disable underscore indicator 2019-01-19 12:56:25 +00:00
db4655e29b Update nugget dependency 2019-01-19 12:56:25 +00:00
042f729006 Show icon for folders containing _ items 2019-01-19 12:56:24 +00:00
a68df32ac0 Increase rsvsync dependency 2019-01-18 10:19:36 +00:00
da865f3e85 Support automatically removing old log files after a number of days 2019-01-17 12:13:06 +00:00
06188094bf Clearing old logs should remove the file 2019-01-17 11:50:22 +00:00
a4fe3dcaed Bump version 2019-01-17 11:40:51 +00:00
22b6892b2d Favourite groups could appear in the wrong order 2019-01-17 11:26:16 +00:00
132afd3ca7 Fix favourite group selection 2019-01-17 11:15:45 +00:00
ba3db5eb59 Bump dependency version for channel icons 2019-01-06 23:45:18 +00:00
0f3ba2655a Use [nugget recordings] for status 2018-12-20 11:30:11 +00:00
ea4feec008 Keep legacy and current restore behaviour separate 2018-12-19 08:38:43 +00:00
9de13741c8 Allow favourites to be inserted manually into the sequence within a backup file 2018-12-09 21:59:05 +00:00
f3fc621de1 Updates for queued URIs 2018-10-10 22:18:55 +01:00
6745b88fb9 Allow generic files to be added to queue 2018-10-08 22:26:28 +01:00
da9f328316 Completing initial decryption key functions 2018-04-30 22:59:55 +01:00
5d03bedfac Enable decryption for HD model and in the absence of a DLNA server.
Support decryption via dropdown menu for files not yet indexed.
2018-04-26 22:26:14 +01:00
c15859ed30 Bump version 2018-04-18 18:04:36 +01:00
9fdf3017f0 Add {system encryptionkey} 2018-04-18 18:04:08 +01:00
89e61f669b Check for key in genrelist 2018-03-12 23:50:17 +00:00
83abd2a5cd De-couple mux database 2018-03-12 23:41:25 +00:00
db273a8502 bump version 2018-02-26 00:24:50 +00:00
93b32a7796 Handle split events with multi-character IMIs 2018-02-26 00:24:25 +00:00
4d3b134fe7 Do not attempt to display an icon for unclassified 2018-02-12 00:11:05 +00:00
7477fe1956 Fix notify log display (from prpr) 2018-02-11 13:46:00 +00:00
26150bda5a Fix {ts genrelist} 2018-01-31 00:09:02 +00:00
3193ca00ab re-instate {ts genrelist} 2018-01-30 01:10:46 +00:00
437fed841b bump version 2018-01-28 11:43:56 +00:00
165b1de49e Centralise genre table and use the same one for EPG & TS.
Add missing 'Drama' genre.
Show genre in recording-details popup.
2018-01-28 11:38:28 +00:00
df05e23415 tweak syntax highlighting 2018-01-28 10:44:00 +00:00
133a9ffd46 Version 1.4.2-8 2017-12-08 09:09:53 +00:00
ff846fb6d0 Add reverse sort by date 2017-12-08 09:09:46 +00:00
b6eceebc26 use static local variable for units 2017-09-03 22:02:14 +01:00
61582251c7 trap negative numbers 2017-08-31 21:11:10 +01:00
4ce3759902 Optimise pretty_size function using log() 2017-08-31 21:04:49 +01:00
ebf7d1312e require new stripts 2017-08-25 20:20:30 +01:00
07b16a4efb allow subclasses to use {rsv list} 2017-08-25 20:20:09 +01:00
0da04b5aed only use "at" if installed 2017-08-25 20:19:52 +01:00
87ff52dd03 Provide bi-directional dependency information and improve layout 2017-06-20 23:37:31 +01:00
641b43d8a0 experimenting with xhr 2017-06-20 23:37:00 +01:00
31f4b53f68 bump version 2017-06-14 20:38:56 +01:00
7e0de7889e If DLNA download fails completely, defer rather than error 2017-06-14 20:38:42 +01:00
87440918e0 remove delay in status when redring is installed 2017-06-14 20:38:36 +01:00
07a6f990bd bump version 2017-06-02 20:03:44 +01:00
5075d638e5 replace {system diskdev} with better version 2017-06-02 20:03:28 +01:00
909f9cad31 remove unecessary new lines 2017-06-02 20:02:15 +01:00
71dcd3960a Set specific page title for queue screen 2017-06-02 20:01:44 +01:00
0dda2fa11a Stop action losing args after first file 2017-06-02 20:01:13 +01:00
9a5fe4394b Update version 2017-05-05 23:40:41 +01:00
51311e74ba Tweak wording 2017-05-05 23:39:41 +01:00
63f9906526 Add support for backing up/restoring skiplists 2017-05-05 23:39:30 +01:00
0fa233afce Add xconv test 2017-05-05 23:39:15 +01:00
c79b890985 re-work skip behaviour 2017-05-03 23:38:40 +01:00
9529cd2071 make classdump binary-safe 2017-05-03 23:35:30 +01:00
ab1f04fe8e honour filters in schedule display 2017-05-02 22:20:05 +01:00
f28a048bd9 Add support for persistent episode skips 2017-05-02 20:17:47 +01:00
45d1cdd2d1 add kernel versions for 3.13 2017-04-26 20:24:22 +01:00
5dc2405068 defer decryption instead of failing it if DLNA helper is not immediately available (DLNA database may be locked) 2017-03-31 01:36:43 +01:00
37c6876e28 bump version 2017-03-24 19:20:07 +00:00
524a97ef0d add VFD images, release 1.4.1-4 2017-03-24 19:19:52 +00:00
10227c6928 Add true VFD colour (commented out) 2017-03-23 23:44:18 +00:00
e8d75bcb20 Add CFW 3.12 kernels 2017-03-23 23:44:00 +00:00
5ccd378fc0 bump version 2017-03-18 14:30:15 +00:00
eb0a23d82c Use new redring API for retrieving VFD text 2017-03-18 10:42:17 +00:00
2c9a386e25 Defer shrink operations if there is a pending decrypt 2017-03-18 10:41:49 +00:00
4bb5fd3a30 fix {queue check} default argument 2017-03-18 10:41:23 +00:00
4a840d89d8 bump version 2017-03-14 22:00:47 +00:00
7bfabc825a convert ISO6937 characters in recording synopses 2017-03-14 22:00:11 +00:00
73aa90c2db bump version 2017-03-13 18:18:17 +00:00
3cee225331 Deprecate {epg fetch} for {epg dbfetch} 2017-03-13 18:18:08 +00:00
98dc8bdfd1 Do not continually try to decrypt zero byte recordings 2017-03-13 18:17:13 +00:00
1725bce452 Prevent subst from processing commands or variables in filenames 2017-03-13 18:15:55 +00:00
d4a0117fab Add HTML5 charset tag 2017-03-13 18:15:25 +00:00
74b744aa02 update to version 1.4.1, require updated jim-sqlite3 package 2017-03-12 19:36:12 +00:00
03d526549c more UTF-8 fixes 2017-03-12 19:35:47 +00:00
be1b26378e Expand \x sequences from lsof to UTF-8 2017-03-12 17:34:14 +00:00
a5fa577099 Convert ISO6937 strings to UTF-8 whilst stripping prefix 2017-03-12 12:24:57 +00:00
76691eedd0 flag .class files as TCL 2017-03-09 22:13:24 +00:00
c447922233 revert modeline 2017-03-09 22:12:25 +00:00
hummypkg
13e561277c Update rsv.class 2017-03-09 22:11:21 +00:00
hummypkg
22dfc27130 Update .gitattributes 2017-03-09 22:09:06 +00:00
5f1745ef27 add .gitattributes 2017-03-09 22:06:31 +00:00
hummypkg
c02d776466 Create README.md 2017-03-09 21:51:32 +00:00
19a2eaf8db Centralise code for mp3 & mpg generation. Update to ffmpeg 2.8 2017-02-22 07:26:58 +00:00
40c54af482 Allow re-submission of completed jobs 2017-02-22 07:26:20 +00:00
55528cf3d1 Add .gitignore 2017-02-22 07:26:02 +00:00
403281e489 add empty directories 2017-03-09 21:26:30 +00:00
hummypkg
7b6866cdb0 auto fixes, webif queueactions can take parameters
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3886 2a923420-c742-0410-a762-8d5b09965624
2017-03-05 19:35:40 +00:00
hummypkg
20b4fe2f66 add nospecial to ts iterate, centralise is-specialdir logic
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3882 2a923420-c742-0410-a762-8d5b09965624
2017-03-05 10:21:58 +00:00
hummypkg
92a0cbd01b tweaking VFD
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3876 2a923420-c742-0410-a762-8d5b09965624
2017-03-02 23:43:18 +00:00
hummypkg
44814fb791 adding VFD
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3874 2a923420-c742-0410-a762-8d5b09965624
2017-03-01 20:54:28 +00:00
hummypkg
14f4eb0371 attempt to auto-fix package upgrade problem
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3864 2a923420-c742-0410-a762-8d5b09965624
2017-03-01 00:01:50 +00:00
hummypkg
9a874d65d2 add VFD to status
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3857 2a923420-c742-0410-a762-8d5b09965624
2017-02-28 20:39:45 +00:00
hummypkg
c8c2cc3c9c attempt to fix skip next episode in EPG which is also the last in EPG
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3827 2a923420-c742-0410-a762-8d5b09965624
2017-02-26 11:14:38 +00:00
hummypkg
e758b99f55 Add switchlabel/sliderlabel CSS classes to settings
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3823 2a923420-c742-0410-a762-8d5b09965624
2017-02-24 19:16:48 +00:00
hummypkg
e9fd4f4110 fix favourites restore
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3791 2a923420-c742-0410-a762-8d5b09965624
2017-02-20 21:32:02 +00:00
hummypkg
1b3aad52d1 add autoskipbin. Improve bin directory derivation
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3736 2a923420-c742-0410-a762-8d5b09965624
2017-02-12 14:48:46 +00:00
hummypkg
1f98b627d7 update tablesorter, improve queue.js, fix safe_delete
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3732 2a923420-c742-0410-a762-8d5b09965624
2017-02-11 00:51:10 +00:00
hummypkg
bd5bb64b13 remove chunked header from opkg. Fix chunking in Google Chrome. queue top refresh button
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3708 2a923420-c742-0410-a762-8d5b09965624
2017-02-04 22:33:55 +00:00
hummypkg
8e7d14efc4 fix htdigest generation
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3692 2a923420-c742-0410-a762-8d5b09965624
2017-02-02 22:29:57 +00:00
hummypkg
e71419b7e5 rename p_adv
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3675 2a923420-c742-0410-a762-8d5b09965624
2017-02-01 21:19:27 +00:00
hummypkg
3d979a292e remove debug lines
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3674 2a923420-c742-0410-a762-8d5b09965624
2017-02-01 17:43:33 +00:00
hummypkg
40a1a42433 package screen overhaul
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3673 2a923420-c742-0410-a762-8d5b09965624
2017-02-01 17:43:05 +00:00
hummypkg
f19dfe65eb allow removing non-repository packages
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3672 2a923420-c742-0410-a762-8d5b09965624
2017-01-31 23:31:19 +00:00
hummypkg
2bb88ac84d use .hmt as key file when loading .ts
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3670 2a923420-c742-0410-a762-8d5b09965624
2017-01-30 21:12:32 +00:00
hummypkg
d6129ebd28 1.4.0 beta 2
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3609 2a923420-c742-0410-a762-8d5b09965624
2017-01-23 22:49:50 +00:00
hummypkg
3fa95419ce 1.4.0
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3572 2a923420-c742-0410-a762-8d5b09965624
2017-01-17 22:34:02 +00:00
hummypkg
034e9c1598 more tweaks
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3568 2a923420-c742-0410-a762-8d5b09965624
2017-01-16 22:23:00 +00:00
hummypkg
fa013cec91 1.3.5-8
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3549 2a923420-c742-0410-a762-8d5b09965624
2017-01-15 15:27:16 +00:00
hummypkg
aa91b5a865 switch to new spinner filename
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3548 2a923420-c742-0410-a762-8d5b09965624
2017-01-15 15:27:02 +00:00
hummypkg
4ecb91a6b5 detect CFW 3.11 kernel
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3547 2a923420-c742-0410-a762-8d5b09965624
2017-01-15 15:26:46 +00:00
hummypkg
9a6e3ccc39 fix parsing of manually installed packages
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3546 2a923420-c742-0410-a762-8d5b09965624
2017-01-15 15:26:35 +00:00
hummypkg
8b021ec4b7 fix backup/restore of favourites, fix notify bug
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3521 2a923420-c742-0410-a762-8d5b09965624
2017-01-12 14:36:41 +00:00
hummypkg
5104dbd387 add catch to decrypt wget
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3516 2a923420-c742-0410-a762-8d5b09965624
2017-01-12 10:16:30 +00:00
hummypkg
c21504b43f updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3513 2a923420-c742-0410-a762-8d5b09965624
2017-01-11 17:18:24 +00:00
hummypkg
efd7544b8c fix queue
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3512 2a923420-c742-0410-a762-8d5b09965624
2017-01-10 22:56:51 +00:00
hummypkg
92a5c27401 1.3.5-3 + new scanner
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3510 2a923420-c742-0410-a762-8d5b09965624
2017-01-10 19:57:33 +00:00
hummypkg
caeabd15d0 1.3.5-2
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3507 2a923420-c742-0410-a762-8d5b09965624
2017-01-09 19:23:13 +00:00
hummypkg
26ceff2ad2 add next return field to defer response. Use more intelligent defer times for decrypt. Support mkdir.hook
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3503 2a923420-c742-0410-a762-8d5b09965624
2017-01-08 14:29:22 +00:00
hummypkg
53edb41250 remove in-use check from decrypt scan
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3483 2a923420-c742-0410-a762-8d5b09965624
2017-01-06 20:34:59 +00:00
hummypkg
e910472fa6 1.3.5 second draft
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3479 2a923420-c742-0410-a762-8d5b09965624
2017-01-06 20:28:13 +00:00
hummypkg
0dd9641e76 move plugins, fix cron, add queue upgrade
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3470 2a923420-c742-0410-a762-8d5b09965624
2017-01-05 22:58:05 +00:00
hummypkg
d58ebd684a 1.3.5
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3469 2a923420-c742-0410-a762-8d5b09965624
2017-01-05 22:36:00 +00:00
hummypkg
6516f47f56 fix some bugs
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3460 2a923420-c742-0410-a762-8d5b09965624
2017-01-04 19:13:44 +00:00
hummypkg
fce45667fc re-hash browse buttons
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3459 2a923420-c742-0410-a762-8d5b09965624
2017-01-03 19:04:58 +00:00
hummypkg
1c8a3d87da -12, fix pkgver
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3450 2a923420-c742-0410-a762-8d5b09965624
2016-12-30 12:20:24 +00:00
hummypkg
09dd487b60 -11
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3449 2a923420-c742-0410-a762-8d5b09965624
2016-12-30 11:55:29 +00:00
hummypkg
fadca6e8c5 release 1.3.4-10
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3447 2a923420-c742-0410-a762-8d5b09965624
2016-12-28 08:38:07 +00:00
hummypkg
4a9c5cda27 symlink json
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3445 2a923420-c742-0410-a762-8d5b09965624
2016-12-22 00:38:08 +00:00
hummypkg
daa312c162 remove escape from require list
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3444 2a923420-c742-0410-a762-8d5b09965624
2016-12-21 20:25:44 +00:00
hummypkg
ba0c2ca311 fix default autofreq
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3443 2a923420-c742-0410-a762-8d5b09965624
2016-12-21 18:12:23 +00:00
hummypkg
d0cb142952 auto now runs every minute, checking for time to run
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3442 2a923420-c742-0410-a762-8d5b09965624
2016-12-21 12:58:25 +00:00
hummypkg
88c7f8cef9 updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3440 2a923420-c742-0410-a762-8d5b09965624
2016-12-19 11:50:12 +00:00
hummypkg
097ed2d74c fix error with non-ts files
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3439 2a923420-c742-0410-a762-8d5b09965624
2016-12-19 11:05:19 +00:00
hummypkg
4adc26d2f2 1.3.4-3
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3437 2a923420-c742-0410-a762-8d5b09965624
2016-12-19 10:14:19 +00:00
hummypkg
4f8c5a7b46 improve run-hour selection
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3435 2a923420-c742-0410-a762-8d5b09965624
2016-12-19 01:26:25 +00:00
hummypkg
1fc426cb1a fixes/improvements
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3434 2a923420-c742-0410-a762-8d5b09965624
2016-12-19 00:56:03 +00:00
hummypkg
759b96e764 fix queue cron job
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3433 2a923420-c742-0410-a762-8d5b09965624
2016-12-17 23:56:30 +00:00
hummypkg
d1ccf7b2d1 beta 1.3.4
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3431 2a923420-c742-0410-a762-8d5b09965624
2016-12-17 23:33:14 +00:00
hummypkg
ddeab2831e more tidying up on diag disk page
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3380 2a923420-c742-0410-a762-8d5b09965624
2016-11-22 22:34:31 +00:00
hummypkg
bb80ba1b83 fix disk page
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3379 2a923420-c742-0410-a762-8d5b09965624
2016-11-22 20:28:45 +00:00
hummypkg
1c9d1c75f3 fix button padding on EPG; show rec for chaseplay+op
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3372 2a923420-c742-0410-a762-8d5b09965624
2016-11-21 22:32:49 +00:00
hummypkg
825b377a78 fix thread
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3361 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 16:57:52 +00:00
hummypkg
35785a7387 remove padding override for buttons due to Jquery UI upgrade
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3360 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 15:52:20 +00:00
hummypkg
03459caabc remove old strip-update task
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3359 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 15:46:50 +00:00
hummypkg
e4809de977 fix typo
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3358 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 15:42:32 +00:00
hummypkg
dc5795f8ae 1.3.3
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3354 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 15:40:09 +00:00
hummypkg
3dadba3556 add support for beta testing
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3352 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 15:27:57 +00:00
hummypkg
0c0ea08f09 allow multiple ops for ad-hoc jobs. Some escaping cleanups. Add op for join
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3351 2a923420-c742-0410-a762-8d5b09965624
2016-11-20 12:25:56 +00:00
hummypkg
7b7651b5f8 fix startop -multiple
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3343 2a923420-c742-0410-a762-8d5b09965624
2016-11-15 22:50:22 +00:00
hummypkg
7edf787c28 fix recording icon, use pid in multiple status
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3342 2a923420-c742-0410-a762-8d5b09965624
2016-11-14 19:20:40 +00:00
hummypkg
9e685245b9 allow multiple operations of the same type. Leave recording in the list if file size is changing
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3341 2a923420-c742-0410-a762-8d5b09965624
2016-11-11 20:49:39 +00:00
hummypkg
8710cb0480 fix status.hook
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3340 2a923420-c742-0410-a762-8d5b09965624
2016-11-10 19:22:41 +00:00
hummypkg
8cd924c8ac improve status with centralised operation tracking and plugin support
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3339 2a923420-c742-0410-a762-8d5b09965624
2016-11-09 16:39:24 +00:00
hummypkg
46a539c739 close rsv DB prior to RTS commit
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3337 2a923420-c742-0410-a762-8d5b09965624
2016-11-09 11:54:29 +00:00
hummypkg
de8af8c4ad add EPG service file
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3333 2a923420-c742-0410-a762-8d5b09965624
2016-11-01 20:46:06 +00:00
hummypkg
b89b9cd5c9 add L7.26 loader. Restart parseEPG on failure
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3330 2a923420-c742-0410-a762-8d5b09965624
2016-10-31 21:28:04 +00:00
hummypkg
482e1fb597 fix schedule restore
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3319 2a923420-c742-0410-a762-8d5b09965624
2016-10-13 19:05:04 +00:00
hummypkg
84fdeabd6d fix size.jim and rsv.class for event skip
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3317 2a923420-c742-0410-a762-8d5b09965624
2016-10-02 20:36:14 +00:00
hummypkg
e19cf1998e tweaks
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3260 2a923420-c742-0410-a762-8d5b09965624
2016-09-07 22:25:23 +00:00
hummypkg
3cbf0649ad bump nugget requirement
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3247 2a923420-c742-0410-a762-8d5b09965624
2016-09-01 16:49:12 +00:00
hummypkg
ddde3ecc4e 1.3.2-5
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3246 2a923420-c742-0410-a762-8d5b09965624
2016-09-01 16:49:01 +00:00
hummypkg
eda5ab7656 fix rsv deferred
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3233 2a923420-c742-0410-a762-8d5b09965624
2016-08-30 17:12:13 +00:00
hummypkg
c865d8b1a1 bump version
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3226 2a923420-c742-0410-a762-8d5b09965624
2016-08-26 20:56:38 +00:00
hummypkg
eeba46c703 bump version
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3212 2a923420-c742-0410-a762-8d5b09965624
2016-08-25 19:04:46 +00:00
hummypkg
b13337653d scheduling updates + AR in progress
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3210 2a923420-c742-0410-a762-8d5b09965624
2016-08-25 19:02:11 +00:00
hummypkg
8ed615459f improve in-progress check to accommodate padding
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3197 2a923420-c742-0410-a762-8d5b09965624
2016-08-21 18:32:48 +00:00
hummypkg
f72cf64cce 1.3.2-1, add nugget dependency
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3196 2a923420-c742-0410-a762-8d5b09965624
2016-08-21 14:18:55 +00:00
hummypkg
a6f35d4fdb updates for RT scheduling
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3187 2a923420-c742-0410-a762-8d5b09965624
2016-08-19 18:26:23 +00:00
hummypkg
daa345cac9 disallow unschedule active
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3178 2a923420-c742-0410-a762-8d5b09965624
2016-08-15 20:23:19 +00:00
hummypkg
0d3e33330e mux fixes
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3176 2a923420-c742-0410-a762-8d5b09965624
2016-08-14 18:26:59 +00:00
hummypkg
950051032e hide buttons until dialogue has loaded
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3169 2a923420-c742-0410-a762-8d5b09965624
2016-08-14 12:33:53 +00:00
hummypkg
0bd1f610d1 check size of pending list before showing pending panel
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3156 2a923420-c742-0410-a762-8d5b09965624
2016-08-14 08:52:49 +00:00
hummypkg
5fe06b267c fix visual weekday
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3118 2a923420-c742-0410-a762-8d5b09965624
2016-07-09 18:01:46 +00:00
hummypkg
d7fc82e292 1.3.1
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@3109 2a923420-c742-0410-a762-8d5b09965624
2016-07-05 15:53:50 +00:00
hummypkg
0de011e28d set wakeup timer when rebooting
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2960 2a923420-c742-0410-a762-8d5b09965624
2016-05-23 20:41:47 +00:00
hummypkg
e3e1fb618a fix backup file sorting
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2942 2a923420-c742-0410-a762-8d5b09965624
2016-05-16 16:01:18 +00:00
hummypkg
bcc93e0e9f allow pending cancel from visual screen
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2927 2a923420-c742-0410-a762-8d5b09965624
2016-05-07 08:54:06 +00:00
hummypkg
8238571064 swap MP3 icon hover over, remove epg -nosort
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2904 2a923420-c742-0410-a762-8d5b09965624
2016-05-04 21:14:29 +00:00
hummypkg
638219fd45 1.3.0-2
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2903 2a923420-c742-0410-a762-8d5b09965624
2016-05-04 21:00:25 +00:00
hummypkg
417f1aed61 1.3.0-1
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2890 2a923420-c742-0410-a762-8d5b09965624
2016-05-03 20:59:27 +00:00
hummypkg
7d06c3afbc update thread link
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2887 2a923420-c742-0410-a762-8d5b09965624
2016-05-01 09:32:06 +00:00
hummypkg
4b7509fedd 1.3.0
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2885 2a923420-c742-0410-a762-8d5b09965624
2016-05-01 09:28:10 +00:00
hummypkg
a2a1a54913 1.2.9-7
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2880 2a923420-c742-0410-a762-8d5b09965624
2016-04-29 19:27:18 +00:00
hummypkg
8592bddc0d secondary visual sort
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2876 2a923420-c742-0410-a762-8d5b09965624
2016-04-28 17:53:53 +00:00
hummypkg
d3a352748a add option to hide OTA
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2875 2a923420-c742-0410-a762-8d5b09965624
2016-04-28 17:46:32 +00:00
hummypkg
bd69b981a7 1.2.9-4
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2874 2a923420-c742-0410-a762-8d5b09965624
2016-04-27 16:04:54 +00:00
hummypkg
203813b7ec 1.2.9-2
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2872 2a923420-c742-0410-a762-8d5b09965624
2016-04-26 22:23:01 +00:00
hummypkg
58da098a11 1.2.9 beta
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2871 2a923420-c742-0410-a762-8d5b09965624
2016-04-26 19:54:56 +00:00
hummypkg
9ce18af5cf improve locking
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2845 2a923420-c742-0410-a762-8d5b09965624
2016-04-10 13:24:16 +00:00
hummypkg
7bbfa758c1 improve locking
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2844 2a923420-c742-0410-a762-8d5b09965624
2016-04-09 23:11:43 +00:00
hummypkg
17f5cf5e7e add at + fixpkg
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2824 2a923420-c742-0410-a762-8d5b09965624
2016-03-29 22:16:07 +00:00
hummypkg
6bd6c33e70 adding refresh
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2823 2a923420-c742-0410-a762-8d5b09965624
2016-03-29 22:03:25 +00:00
hummypkg
b044418869 Use szsttime if populated
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2820 2a923420-c742-0410-a762-8d5b09965624
2016-03-28 16:58:56 +00:00
hummypkg
76308b9489 fix transaction
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2811 2a923420-c742-0410-a762-8d5b09965624
2016-03-22 22:53:13 +00:00
hummypkg
e6ed9e9822 update schedule backend, support episode skip
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2806 2a923420-c742-0410-a762-8d5b09965624
2016-03-21 19:38:42 +00:00
hummypkg
c6e933999b fix diag screen error on HD model
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2749 2a923420-c742-0410-a762-8d5b09965624
2016-03-16 10:08:41 +00:00
hummypkg
32774754a4 update inc new CFW versions + initial conflict detection
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2735 2a923420-c742-0410-a762-8d5b09965624
2016-03-12 19:39:34 +00:00
hummypkg
8fd5cdb062 more generic drive detection
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2698 2a923420-c742-0410-a762-8d5b09965624
2016-02-22 23:03:31 +00:00
hummypkg
347f7989ec add exfat to drive types
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2696 2a923420-c742-0410-a762-8d5b09965624
2016-02-22 22:42:27 +00:00
hummypkg
d09e2f2432 switch to flash smartctl
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2691 2a923420-c742-0410-a762-8d5b09965624
2016-02-21 23:59:57 +00:00
hummypkg
055458ed46 fix apostrophe problem in file info, support gpt-driveX
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2680 2a923420-c742-0410-a762-8d5b09965624
2016-02-21 00:22:34 +00:00
hummypkg
03164c8b4c bump
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2662 2a923420-c742-0410-a762-8d5b09965624
2016-02-17 22:03:50 +00:00
hummypkg
59c4e7ad1f add tcpfix, chunked mode for pkg/diag output
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2646 2a923420-c742-0410-a762-8d5b09965624
2016-02-14 18:24:30 +00:00
hummypkg
687fc606a1 fix go with trailing /, tweak pkg to sort final list rather than interim, improve maintenance mode wording
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2624 2a923420-c742-0410-a762-8d5b09965624
2016-02-11 18:30:18 +00:00
hummypkg
879d672a62 sort package list
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2617 2a923420-c742-0410-a762-8d5b09965624
2016-02-11 00:10:25 +00:00
hummypkg
e1a5bb3998 pkg improvements
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2615 2a923420-c742-0410-a762-8d5b09965624
2016-02-10 23:41:02 +00:00
hummypkg
f4afecf77c fix diagnostic output
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2612 2a923420-c742-0410-a762-8d5b09965624
2016-02-10 19:37:25 +00:00
hummypkg
b092b571e2 updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2606 2a923420-c742-0410-a762-8d5b09965624
2016-02-09 23:07:47 +00:00
hummypkg
f29532b481 fix scheduling bug, add diagnostic confirmation, fix 404 page
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2603 2a923420-c742-0410-a762-8d5b09965624
2016-02-09 00:37:53 +00:00
hummypkg
943009252b add 404 page, fix typo
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2602 2a923420-c742-0410-a762-8d5b09965624
2016-02-08 18:31:45 +00:00
hummypkg
131b8980ac updated diagnostics page, jquery 1.12
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2598 2a923420-c742-0410-a762-8d5b09965624
2016-02-08 15:32:17 +00:00
hummypkg
e316ad3a5a fix disk temperature check
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2594 2a923420-c742-0410-a762-8d5b09965624
2016-02-06 13:57:05 +00:00
hummypkg
971d074f3c checkpoint
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2590 2a923420-c742-0410-a762-8d5b09965624
2016-02-06 00:13:44 +00:00
hummypkg
4886a5f191 bump version
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2582 2a923420-c742-0410-a762-8d5b09965624
2016-01-31 19:58:45 +00:00
hummypkg
21de0e6d5a radio icon rather than SD/HD for radio programmes.
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2580 2a923420-c742-0410-a762-8d5b09965624
2016-01-31 19:58:12 +00:00
hummypkg
95bc11d2f1 add epgenc class
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2567 2a923420-c742-0410-a762-8d5b09965624
2016-01-17 12:02:11 +00:00
hummypkg
4d3fa4a268 bump version
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2566 2a923420-c742-0410-a762-8d5b09965624
2016-01-04 19:50:52 +00:00
hummypkg
15befb403e fix content mgmt test
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2565 2a923420-c742-0410-a762-8d5b09965624
2016-01-04 19:50:41 +00:00
hummypkg
e3a0d1ec96 fix status when decrypting
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2564 2a923420-c742-0410-a762-8d5b09965624
2016-01-04 02:19:31 +00:00
hummypkg
e5c01f19d3 display Enc icon for protected EPG entries
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2562 2a923420-c742-0410-a762-8d5b09965624
2016-01-03 22:29:55 +00:00
hummypkg
4bdd52307c add m4a, report log change time
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2558 2a923420-c742-0410-a762-8d5b09965624
2015-12-18 23:13:13 +00:00
hummypkg
1579763bb2 allow unstripped settings (for dedup_template)
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2557 2a923420-c742-0410-a762-8d5b09965624
2015-11-29 23:36:03 +00:00
hummypkg
19ae94cd2c support untrimmed settings
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2556 2a923420-c742-0410-a762-8d5b09965624
2015-11-29 23:35:49 +00:00
hummypkg
debb7c0da8 fix channel change + no DLNA server running message
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2555 2a923420-c742-0410-a762-8d5b09965624
2015-11-29 22:49:49 +00:00
hummypkg
47b23d76cf allow dummy setting of flags (for dryruns)
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2554 2a923420-c742-0410-a762-8d5b09965624
2015-11-26 00:33:26 +00:00
hummypkg
bb2496a8a7 update dedup settings
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2551 2a923420-c742-0410-a762-8d5b09965624
2015-11-25 22:28:32 +00:00
hummypkg
57a2523b1c two-digit series number
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2550 2a923420-c742-0410-a762-8d5b09965624
2015-11-25 22:08:03 +00:00
hummypkg
5f04fbdf01 more tvdb work
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2542 2a923420-c742-0410-a762-8d5b09965624
2015-11-18 23:46:47 +00:00
hummypkg
f34872a4c4 tvdb update
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2534 2a923420-c742-0410-a762-8d5b09965624
2015-11-06 18:50:27 +00:00
hummypkg
b373ccb3dc tvdb improvements
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2533 2a923420-c742-0410-a762-8d5b09965624
2015-11-02 23:17:11 +00:00
hummypkg
79dadbec68 more disk attributes
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2519 2a923420-c742-0410-a762-8d5b09965624
2015-10-22 19:28:12 +00:00
hummypkg
96eea155da fix disk usage in the presence of hard links
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2501 2a923420-c742-0410-a762-8d5b09965624
2015-10-16 21:24:25 +00:00
hummypkg
2b6e29b1c2 add tooltip plugin
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2499 2a923420-c742-0410-a762-8d5b09965624
2015-10-14 20:43:49 +00:00
hummypkg
6b8933634b update tvdb support
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2494 2a923420-c742-0410-a762-8d5b09965624
2015-10-12 21:14:34 +00:00
hummypkg
e7ca1d7742 improve rmdir_if_empty, 1.2.5
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2488 2a923420-c742-0410-a762-8d5b09965624
2015-10-05 14:51:09 +00:00
hummypkg
c24374c4c0 fix inuse
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2474 2a923420-c742-0410-a762-8d5b09965624
2015-09-30 18:42:49 +00:00
hummypkg
42f83f1040 commit
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2473 2a923420-c742-0410-a762-8d5b09965624
2015-09-30 18:30:16 +00:00
hummypkg
8a6bc41b4d bug fixes
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2468 2a923420-c742-0410-a762-8d5b09965624
2015-09-16 21:33:15 +00:00
hummypkg
cffa6cca1b ts flag hook
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2467 2a923420-c742-0410-a762-8d5b09965624
2015-09-16 21:07:39 +00:00
hummypkg
dfdb9c5a27 add setflags, unsetflags
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2464 2a923420-c742-0410-a762-8d5b09965624
2015-09-06 18:56:06 +00:00
hummypkg
9b5498af1c browse plugins
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2460 2a923420-c742-0410-a762-8d5b09965624
2015-09-04 20:49:26 +00:00
hummypkg
1b698dbb2d update disk diags
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2457 2a923420-c742-0410-a762-8d5b09965624
2015-08-19 21:27:06 +00:00
hummypkg
a9f7ba3ff2 1.2.4
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2451 2a923420-c742-0410-a762-8d5b09965624
2015-08-14 19:33:25 +00:00
hummypkg
427aa42ace dlnahelper lock fix
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2446 2a923420-c742-0410-a762-8d5b09965624
2015-07-19 20:49:22 +00:00
hummypkg
91a7f66d9c fix newlines in synopsis
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2444 2a923420-c742-0410-a762-8d5b09965624
2015-07-07 19:32:01 +00:00
hummypkg
0c3af11f45 mux updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2439 2a923420-c742-0410-a762-8d5b09965624
2015-06-25 22:19:05 +00:00
hummypkg
eb80167e31 allow editing new files
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2433 2a923420-c742-0410-a762-8d5b09965624
2015-06-19 22:24:56 +00:00
hummypkg
23438a6122 remove integrated flatten
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2429 2a923420-c742-0410-a762-8d5b09965624
2015-06-18 20:58:48 +00:00
hummypkg
bc682f4bef New guidance icon, early abort from automatic processing on flag disappearance, show recording icon instead of failed
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2425 2a923420-c742-0410-a762-8d5b09965624
2015-06-15 17:33:32 +00:00
hummypkg
2ce27624ce recmon update
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2413 2a923420-c742-0410-a762-8d5b09965624
2015-05-19 22:38:18 +00:00
hummypkg
37e979787e updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2408 2a923420-c742-0410-a762-8d5b09965624
2015-04-23 19:45:00 +00:00
hummypkg
547f825f54 add catch and retries around dlna url
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2406 2a923420-c742-0410-a762-8d5b09965624
2015-04-21 22:08:41 +00:00
hummypkg
677bc95882 1.2.2-6 with autotrigger enhancements
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2401 2a923420-c742-0410-a762-8d5b09965624
2015-04-19 22:00:19 +00:00
hummypkg
c54dd07563 dayfilter
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2395 2a923420-c742-0410-a762-8d5b09965624
2015-04-14 21:15:20 +00:00
hummypkg
1d6d1c972c delete js
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2394 2a923420-c742-0410-a762-8d5b09965624
2015-04-14 20:42:15 +00:00
hummypkg
b136b61893 JQuery UI upgrade
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2392 2a923420-c742-0410-a762-8d5b09965624
2015-04-14 20:09:04 +00:00
hummypkg
0a91878fd5 manual scheduling
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2384 2a923420-c742-0410-a762-8d5b09965624
2015-04-14 00:09:47 +00:00
hummypkg
2e3ce0aed1 1.2.2-4 - faster decrypt
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2383 2a923420-c742-0410-a762-8d5b09965624
2015-04-10 22:01:51 +00:00
hummypkg
bf1bd66bbe tvdb integration
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2382 2a923420-c742-0410-a762-8d5b09965624
2015-03-09 22:19:12 +00:00
hummypkg
9b9032eee8 fix restart icon
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2365 2a923420-c742-0410-a762-8d5b09965624
2015-02-24 20:18:38 +00:00
hummypkg
9b30a9b0b6 update icons
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2359 2a923420-c742-0410-a762-8d5b09965624
2015-02-22 16:42:26 +00:00
hummypkg
e26298cab0 rollup to 1.2.2
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2355 2a923420-c742-0410-a762-8d5b09965624
2015-02-22 16:13:36 +00:00
hummypkg
8f7f20b83d 1.2.1-8
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2346 2a923420-c742-0410-a762-8d5b09965624
2015-02-17 20:44:16 +00:00
hummypkg
217b08922f fix minor bugs
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2332 2a923420-c742-0410-a762-8d5b09965624
2015-02-09 21:59:14 +00:00
hummypkg
03002d4b60 width fix
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2327 2a923420-c742-0410-a762-8d5b09965624
2015-02-08 17:32:49 +00:00
hummypkg
1cd5fbe6fe fix dedup!
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2326 2a923420-c742-0410-a762-8d5b09965624
2015-02-07 21:43:04 +00:00
hummypkg
8334746a5c fixes
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2324 2a923420-c742-0410-a762-8d5b09965624
2015-02-07 21:22:59 +00:00
hummypkg
b9e6ad6881 fix dedup
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2319 2a923420-c742-0410-a762-8d5b09965624
2015-02-07 10:58:11 +00:00
hummypkg
4e8d9f5b88 schedule updates
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2313 2a923420-c742-0410-a762-8d5b09965624
2015-02-06 22:23:53 +00:00
hummypkg
675139500a fix
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2312 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 23:19:20 +00:00
hummypkg
46de6718c3 update version
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2311 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 23:15:09 +00:00
hummypkg
05b8383fb3 update for 0.76 glob fix
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2310 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 23:14:52 +00:00
hummypkg
529fccd4fd update lint
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2309 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 19:46:25 +00:00
hummypkg
97bf8cf820 update lint
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2302 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 16:14:15 +00:00
hummypkg
8f7476a369 1.2.1
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2300 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 00:27:36 +00:00
hummypkg
9e9ffd9c44 more code cleanups
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2299 2a923420-c742-0410-a762-8d5b09965624
2015-02-05 00:23:08 +00:00
hummypkg
157c1c3979 change heuristic arg
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2284 2a923420-c742-0410-a762-8d5b09965624
2015-02-01 01:36:46 +00:00
hummypkg
f9bc928250 Jim code cleanups (for 0.76)
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2283 2a923420-c742-0410-a762-8d5b09965624
2015-02-01 01:28:03 +00:00
hummypkg
35ed1a5db5 update
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2258 2a923420-c742-0410-a762-8d5b09965624
2015-01-28 00:08:09 +00:00
hummypkg
38fdd3aaa6 auto fixencflags
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2220 2a923420-c742-0410-a762-8d5b09965624
2015-01-24 21:52:30 +00:00
hummypkg
73f6fd5519 add media rescan
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2217 2a923420-c742-0410-a762-8d5b09965624
2015-01-22 23:21:19 +00:00
hummypkg
db75c29143 improve wifiscan, enable by default
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2216 2a923420-c742-0410-a762-8d5b09965624
2015-01-21 22:44:10 +00:00
hummypkg
2c2c434fec add network settings (beta)
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2212 2a923420-c742-0410-a762-8d5b09965624
2015-01-19 21:16:52 +00:00
hummypkg
24e1ee5210 fix ualeventinfo handling
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2202 2a923420-c742-0410-a762-8d5b09965624
2015-01-15 23:51:58 +00:00
hummypkg
ede9be2693 mass pkg relocation
git-svn-id: file:///root/webif/svn/pkg/webif/trunk@2151 2a923420-c742-0410-a762-8d5b09965624
2015-01-12 22:40:00 +00:00
hummypkg
3ca87e1285 update webif
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2114 2a923420-c742-0410-a762-8d5b09965624
2015-01-05 21:59:36 +00:00
hummypkg
777ff469b9 bump version
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2100 2a923420-c742-0410-a762-8d5b09965624
2015-01-04 21:07:08 +00:00
hummypkg
86ab612ea3 fix content_code
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2099 2a923420-c742-0410-a762-8d5b09965624
2015-01-04 21:06:44 +00:00
hummypkg
2744a91ec7 use dbfetch for consistent order
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2094 2a923420-c742-0410-a762-8d5b09965624
2014-12-30 19:48:40 +00:00
hummypkg
85fed3247a show usb disk space. Clickable log viewer
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2093 2a923420-c742-0410-a762-8d5b09965624
2014-12-30 19:00:15 +00:00
hummypkg
51aded3d2d fix usb eject with virtual-disk2
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2092 2a923420-c742-0410-a762-8d5b09965624
2014-12-30 14:56:45 +00:00
hummypkg
5d0939d8de Add eject, more context icons, fix some HTML issues, update jquery
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2090 2a923420-c742-0410-a762-8d5b09965624
2014-12-29 22:28:51 +00:00
hummypkg
fcb036801e fixes
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2089 2a923420-c742-0410-a762-8d5b09965624
2014-12-21 23:33:22 +00:00
hummypkg
d962ada7e5 fix log ack
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2088 2a923420-c742-0410-a762-8d5b09965624
2014-12-18 22:33:50 +00:00
hummypkg
3f52c3063a services update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2087 2a923420-c742-0410-a762-8d5b09965624
2014-12-17 23:55:31 +00:00
hummypkg
bf94690223 new log viewer
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2084 2a923420-c742-0410-a762-8d5b09965624
2014-12-17 23:02:55 +00:00
hummypkg
8516f21c18 add tablesorter2 plugin
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2083 2a923420-c742-0410-a762-8d5b09965624
2014-12-17 19:37:17 +00:00
hummypkg
9d69328615 re-add
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2078 2a923420-c742-0410-a762-8d5b09965624
2014-12-05 22:57:49 +00:00
hummypkg
14fb5f7c76 rm
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2077 2a923420-c742-0410-a762-8d5b09965624
2014-12-05 22:56:15 +00:00
hummypkg
788f613a5b sortable disk utilisation page. Better pie chart click handling
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2075 2a923420-c742-0410-a762-8d5b09965624
2014-12-05 22:36:03 +00:00
hummypkg
1c9da2f52f update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2068 2a923420-c742-0410-a762-8d5b09965624
2014-11-29 11:39:24 +00:00
hummypkg
37efb8d633 tweaks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2064 2a923420-c742-0410-a762-8d5b09965624
2014-11-27 22:26:36 +00:00
hummypkg
294598faf6 misc updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2062 2a923420-c742-0410-a762-8d5b09965624
2014-11-09 20:24:44 +00:00
hummypkg
1116a3f050 diskspace tweaks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2056 2a923420-c742-0410-a762-8d5b09965624
2014-10-18 21:43:02 +00:00
hummypkg
67ffdc8105 new pie chart
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2055 2a923420-c742-0410-a762-8d5b09965624
2014-10-15 19:31:43 +00:00
hummypkg
04fe30145d updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2054 2a923420-c742-0410-a762-8d5b09965624
2014-10-14 22:08:31 +00:00
hummypkg
61f3868c42 minor tweaks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2053 2a923420-c742-0410-a762-8d5b09965624
2014-10-13 12:32:02 +00:00
hummypkg
987425b22a change connectivity test
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2047 2a923420-c742-0410-a762-8d5b09965624
2014-10-08 00:25:31 +00:00
hummypkg
c886f6afd2 versioned backups + change folder for pending
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2044 2a923420-c742-0410-a762-8d5b09965624
2014-10-07 21:23:15 +00:00
hummypkg
e6d7af1fc4 1.0.17 RC
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2041 2a923420-c742-0410-a762-8d5b09965624
2014-10-07 00:49:22 +00:00
hummypkg
0691577b96 fix mkdir
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2035 2a923420-c742-0410-a762-8d5b09965624
2014-09-13 09:00:17 +00:00
hummypkg
876d5b5e8a add force dedup process
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2033 2a923420-c742-0410-a762-8d5b09965624
2014-09-04 22:34:30 +00:00
hummypkg
4d895e464d check connectivity
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2030 2a923420-c742-0410-a762-8d5b09965624
2014-08-28 18:44:42 +00:00
hummypkg
252d6bf7f6 revert iphone-style-checkboxes and re-patch for actual width calculations
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2023 2a923420-c742-0410-a762-8d5b09965624
2014-07-23 19:16:58 +00:00
hummypkg
ea03a67b4a adding
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2021 2a923420-c742-0410-a762-8d5b09965624
2014-07-21 22:01:10 +00:00
hummypkg
3adbeb987a 1.0.16
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2020 2a923420-c742-0410-a762-8d5b09965624
2014-07-21 21:55:28 +00:00
hummypkg
23fdc62b81 fix icon paths with spaces
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2018 2a923420-c742-0410-a762-8d5b09965624
2014-07-09 21:34:50 +00:00
hummypkg
b88691c9e5 add channelicons, fix status, show more actions
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2017 2a923420-c742-0410-a762-8d5b09965624
2014-07-08 18:30:02 +00:00
hummypkg
3c4b907091 pass processed file list to plugins
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2016 2a923420-c742-0410-a762-8d5b09965624
2014-07-07 22:06:57 +00:00
hummypkg
1c00e63f48 fix bookmarks, add serial number
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2012 2a923420-c742-0410-a762-8d5b09965624
2014-07-06 20:11:59 +00:00
hummypkg
59006ff474 ladd
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1986 2a923420-c742-0410-a762-8d5b09965624
2014-06-25 19:51:30 +00:00
hummypkg
616c0afff1 updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1983 2a923420-c742-0410-a762-8d5b09965624
2014-06-23 20:14:23 +00:00
hummypkg
84899871e1 1.0.15-3
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1981 2a923420-c742-0410-a762-8d5b09965624
2014-06-19 21:34:48 +00:00
hummypkg
ed042ee230 bug fixes
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1979 2a923420-c742-0410-a762-8d5b09965624
2014-06-19 18:50:53 +00:00
hummypkg
3c44ec33f9 fix dedup inuse problem
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1975 2a923420-c742-0410-a762-8d5b09965624
2014-06-17 08:49:04 +00:00
hummypkg
02d7bc3f33 bookmark management
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1974 2a923420-c742-0410-a762-8d5b09965624
2014-06-16 21:14:37 +00:00
hummypkg
492b37be41 1.0.15 & improved status
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1968 2a923420-c742-0410-a762-8d5b09965624
2014-06-14 09:21:09 +00:00
hummypkg
c237f228a8 restructure tdelete
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1954 2a923420-c742-0410-a762-8d5b09965624
2014-06-12 17:43:19 +00:00
hummypkg
7a523a9ddb fix TSR bug
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1953 2a923420-c742-0410-a762-8d5b09965624
2014-06-11 21:18:19 +00:00
hummypkg
972366de14 update status
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1950 2a923420-c742-0410-a762-8d5b09965624
2014-06-10 22:01:42 +00:00
hummypkg
aeb96c2c8a update to new lsof and fix things
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1949 2a923420-c742-0410-a762-8d5b09965624
2014-06-10 17:12:06 +00:00
hummypkg
68f98c8a65 add inuse
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1947 2a923420-c742-0410-a762-8d5b09965624
2014-06-09 22:22:33 +00:00
hummypkg
61b09db04b updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1946 2a923420-c742-0410-a762-8d5b09965624
2014-06-09 20:54:52 +00:00
hummypkg
de2035e1e0 fix bugs
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1944 2a923420-c742-0410-a762-8d5b09965624
2014-06-06 23:24:32 +00:00
hummypkg
b4bd45566e fix jconfirmaction
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1938 2a923420-c742-0410-a762-8d5b09965624
2014-06-05 21:10:01 +00:00
hummypkg
692488a11f tweak diskspace check again
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1935 2a923420-c742-0410-a762-8d5b09965624
2014-06-04 20:35:38 +00:00
hummypkg
bd27200ba8 add resume
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1932 2a923420-c742-0410-a762-8d5b09965624
2014-06-03 22:33:24 +00:00
hummypkg
7e30a4272e webif 1.0.14
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1928 2a923420-c742-0410-a762-8d5b09965624
2014-06-03 22:03:36 +00:00
hummypkg
945007f73d add nav buttons + browse hooks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1927 2a923420-c742-0410-a762-8d5b09965624
2014-06-03 22:03:23 +00:00
hummypkg
fc9c912f99 improve disk space calculation
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1924 2a923420-c742-0410-a762-8d5b09965624
2014-05-31 14:50:12 +00:00
hummypkg
bf67161898 various
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1922 2a923420-c742-0410-a762-8d5b09965624
2014-05-28 21:29:10 +00:00
hummypkg
f029ab1ce6 improve diskspace check
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1920 2a923420-c742-0410-a762-8d5b09965624
2014-05-28 18:10:58 +00:00
hummypkg
bfd099a82e update auto-expiry with new options
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1919 2a923420-c742-0410-a762-8d5b09965624
2014-05-21 22:10:22 +00:00
hummypkg
d9a284994e reintroduce mongoose dependency
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1899 2a923420-c742-0410-a762-8d5b09965624
2014-05-11 16:42:42 +00:00
hummypkg
e6df0ae3af update for 1.0.13 - switch web server software
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1894 2a923420-c742-0410-a762-8d5b09965624
2014-05-11 14:05:00 +00:00
hummypkg
e14ccce2cc update dependencies
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1883 2a923420-c742-0410-a762-8d5b09965624
2014-05-03 22:26:19 +00:00
hummypkg
60111cd8b1 update conffiles for new layout
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1873 2a923420-c742-0410-a762-8d5b09965624
2014-05-02 22:18:44 +00:00
hummypkg
fb81a7e954 defer shrink until after decryption if both are pending
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1872 2a923420-c742-0410-a762-8d5b09965624
2014-05-02 11:25:25 +00:00
hummypkg
218221c069 1.0.12 update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1870 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 21:57:44 +00:00
hummypkg
a001241c5d remove unecessary css files
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1869 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 21:17:23 +00:00
hummypkg
a8a9f041f0 Upgrade jquery mobile
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1868 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 21:15:31 +00:00
hummypkg
67df756156 add mongoose symlink
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1864 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 14:45:44 +00:00
hummypkg
a73afaf951 relocate var/mongoose
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1863 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 14:44:57 +00:00
hummypkg
fe439ec25a remove webif symlink
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1862 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 14:43:49 +00:00
hummypkg
2fa55d3c90 fix automatic backups and slidedown menu
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1861 2a923420-c742-0410-a762-8d5b09965624
2014-04-30 14:39:25 +00:00
hummypkg
c76e6638a4 fix modversion.jim
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1856 2a923420-c742-0410-a762-8d5b09965624
2014-04-27 14:49:46 +00:00
hummypkg
cd3cbf186c fix mobile interface, settings
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1851 2a923420-c742-0410-a762-8d5b09965624
2014-04-23 12:59:30 +00:00
hummypkg
38956e2669 fix scheduled check
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1850 2a923420-c742-0410-a762-8d5b09965624
2014-04-23 11:56:55 +00:00
hummypkg
62a13e18cc version 1.0.11
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1848 2a923420-c742-0410-a762-8d5b09965624
2014-04-22 00:03:29 +00:00
hummypkg
52d05a7f48 update jquery
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1839 2a923420-c742-0410-a762-8d5b09965624
2014-04-14 23:00:15 +00:00
hummypkg
612a61a5b1 removing legacy directories
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1838 2a923420-c742-0410-a762-8d5b09965624
2014-04-14 22:56:06 +00:00
hummypkg
17ba0bb00e remove SSI
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1837 2a923420-c742-0410-a762-8d5b09965624
2014-04-14 22:54:01 +00:00
hummypkg
5f473c9e72 add ts iterate
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1833 2a923420-c742-0410-a762-8d5b09965624
2014-04-03 20:21:40 +00:00
hummypkg
e0ac834c78 preserve more timestamps
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1832 2a923420-c742-0410-a762-8d5b09965624
2014-04-02 21:14:23 +00:00
hummypkg
604ac65172 fix grid problem
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1828 2a923420-c742-0410-a762-8d5b09965624
2014-03-27 21:34:27 +00:00
hummypkg
dad2a630c7 fix strip et al. with no thumbnail
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1827 2a923420-c742-0410-a762-8d5b09965624
2014-03-26 21:48:09 +00:00
hummypkg
2bf876262f checkbox fixes, glob removal
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1825 2a923420-c742-0410-a762-8d5b09965624
2014-03-24 21:07:32 +00:00
hummypkg
972eab191c fix pretty size
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1819 2a923420-c742-0410-a762-8d5b09965624
2014-03-03 17:30:17 +00:00
hummypkg
9fd84a8938 use file size over file stat, add mp3 type preference
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1814 2a923420-c742-0410-a762-8d5b09965624
2014-03-03 14:00:46 +00:00
hummypkg
ceccfd9c1d update to Jim 0.75
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1811 2a923420-c742-0410-a762-8d5b09965624
2014-03-02 18:44:41 +00:00
hummypkg
c948926cc2 fix typo
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1806 2a923420-c742-0410-a762-8d5b09965624
2014-02-24 19:46:44 +00:00
hummypkg
a087581573 fix scroll position
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1805 2a923420-c742-0410-a762-8d5b09965624
2014-02-23 22:47:01 +00:00
hummypkg
3416d4e9e2 fixes
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1804 2a923420-c742-0410-a762-8d5b09965624
2014-02-23 22:22:07 +00:00
hummypkg
b4af9b62fc fix URL
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1802 2a923420-c742-0410-a762-8d5b09965624
2014-02-21 23:22:19 +00:00
hummypkg
68fdfcc4d5 1.0.9
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1800 2a923420-c742-0410-a762-8d5b09965624
2014-02-21 23:09:19 +00:00
hummypkg
7c181557a1 re-adding synlinks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1790 2a923420-c742-0410-a762-8d5b09965624
2014-02-21 21:27:03 +00:00
hummypkg
0f1bbed6b9 migrating
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1789 2a923420-c742-0410-a762-8d5b09965624
2014-02-21 21:25:33 +00:00
hummypkg
8c4449ee36 new service screen
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1788 2a923420-c742-0410-a762-8d5b09965624
2014-02-20 00:51:02 +00:00
hummypkg
23cc31a02a foreign characters
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1786 2a923420-c742-0410-a762-8d5b09965624
2014-02-18 21:34:44 +00:00
hummypkg
98c4182a1f fix mkdir
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1785 2a923420-c742-0410-a762-8d5b09965624
2014-02-10 23:21:26 +00:00
hummypkg
1984d7151b restructure restartpending, create folder, cancel restartpending once nothing pending
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1784 2a923420-c742-0410-a762-8d5b09965624
2014-02-10 23:03:36 +00:00
hummypkg
97289969f1 more package management tweaks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1781 2a923420-c742-0410-a762-8d5b09965624
2014-02-03 23:06:38 +00:00
hummypkg
0cfc8f233a package management improvements
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1778 2a923420-c742-0410-a762-8d5b09965624
2014-02-03 21:42:20 +00:00
hummypkg
ea2f231ad8 fix duplicate check
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1775 2a923420-c742-0410-a762-8d5b09965624
2014-02-02 23:37:50 +00:00
hummypkg
13af77c1e4 various updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1768 2a923420-c742-0410-a762-8d5b09965624
2014-01-22 21:18:12 +00:00
hummypkg
d08475daaa pkg management updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1760 2a923420-c742-0410-a762-8d5b09965624
2014-01-18 00:26:33 +00:00
hummypkg
26981ebb2d fix mux display
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1741 2a923420-c742-0410-a762-8d5b09965624
2013-12-11 00:16:01 +00:00
hummypkg
fe7de23c67 fix service restore
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1733 2a923420-c742-0410-a762-8d5b09965624
2013-12-04 20:16:48 +00:00
hummypkg
fbd469ffec restore to LCN if channel name not found
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1726 2a923420-c742-0410-a762-8d5b09965624
2013-11-26 22:53:35 +00:00
hummypkg
2c62699f00 update hexdump and fix dict merge problem
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1723 2a923420-c742-0410-a762-8d5b09965624
2013-11-26 21:47:58 +00:00
hummypkg
2a4ec43ef6 work around missing event IDs in the future
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1716 2a923420-c742-0410-a762-8d5b09965624
2013-11-06 22:13:25 +00:00
hummypkg
7080242ff8 update depends, pgrep -n
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1715 2a923420-c742-0410-a762-8d5b09965624
2013-11-05 17:39:48 +00:00
hummypkg
e2c099668e add decrypted file touch
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1713 2a923420-c742-0410-a762-8d5b09965624
2013-10-29 20:51:10 +00:00
hummypkg
d801e71bf3 update version
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1711 2a923420-c742-0410-a762-8d5b09965624
2013-10-29 20:05:27 +00:00
hummypkg
66a7fcec9c fix hostname setting
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1710 2a923420-c742-0410-a762-8d5b09965624
2013-10-29 20:05:15 +00:00
hummypkg
8dc232646b modularise schedule/backup restore. Fix bug in reset new
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1709 2a923420-c742-0410-a762-8d5b09965624
2013-10-26 11:05:47 +00:00
hummypkg
a505022d39 tweaks
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1708 2a923420-c742-0410-a762-8d5b09965624
2013-10-23 20:38:25 +00:00
hummypkg
4fc05273e1 fix hostname in settings screen
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1704 2a923420-c742-0410-a762-8d5b09965624
2013-10-13 15:23:15 +00:00
hummypkg
d81037aa5f update to 1.0.7
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1700 2a923420-c742-0410-a762-8d5b09965624
2013-10-07 20:18:42 +00:00
hummypkg
abc7d0655e add schedule cleanup button
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1699 2a923420-c742-0410-a762-8d5b09965624
2013-10-07 20:17:22 +00:00
hummypkg
f7ab52698d allow customisation of the fav icons
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1698 2a923420-c742-0410-a762-8d5b09965624
2013-10-07 19:45:09 +00:00
hummypkg
f5ff9cbf67 update jquery.mobile
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1697 2a923420-c742-0410-a762-8d5b09965624
2013-09-25 22:41:40 +00:00
hummypkg
009eb100b6 update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1695 2a923420-c742-0410-a762-8d5b09965624
2013-09-21 20:50:58 +00:00
hummypkg
e6366df3c8 update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1692 2a923420-c742-0410-a762-8d5b09965624
2013-09-18 17:54:33 +00:00
hummypkg
7a767e5443 update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1691 2a923420-c742-0410-a762-8d5b09965624
2013-09-18 17:38:08 +00:00
hummypkg
0e2bc599a5 updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1665 2a923420-c742-0410-a762-8d5b09965624
2013-09-09 19:38:56 +00:00
hummypkg
10e9ef191e update version
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1664 2a923420-c742-0410-a762-8d5b09965624
2013-09-08 20:47:40 +00:00
hummypkg
9b826e8f95 resetnew on delete
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1663 2a923420-c742-0410-a762-8d5b09965624
2013-09-08 20:46:11 +00:00
hummypkg
8a802e5c1d Upgrade JQuery, JQuery UI. Accordian on settings screen
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1662 2a923420-c742-0410-a762-8d5b09965624
2013-09-08 20:41:01 +00:00
hummypkg
61a8b537e6 upgrading jquery
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1661 2a923420-c742-0410-a762-8d5b09965624
2013-09-08 19:48:26 +00:00
hummypkg
f7de940e51 fix EPG calendar. Leave Now ungrayed.
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1660 2a923420-c742-0410-a762-8d5b09965624
2013-09-08 19:15:54 +00:00
hummypkg
27c7818da8 updates for 1.0.6
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1658 2a923420-c742-0410-a762-8d5b09965624
2013-09-07 22:13:03 +00:00
hummypkg
9fb84443cd add rmdir_if_empty
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1654 2a923420-c742-0410-a762-8d5b09965624
2013-09-05 18:52:13 +00:00
hummypkg
0ae9a07cce update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1651 2a923420-c742-0410-a762-8d5b09965624
2013-09-04 23:52:40 +00:00
hummypkg
ed20eec408 update
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1646 2a923420-c742-0410-a762-8d5b09965624
2013-08-30 21:22:30 +00:00
hummypkg
c095cc7913 1.0.5
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1632 2a923420-c742-0410-a762-8d5b09965624
2013-07-30 20:07:13 +00:00
hummypkg
b379bb64dc update for new channel icons
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1611 2a923420-c742-0410-a762-8d5b09965624
2013-07-11 22:13:36 +00:00
hummypkg
e82d303c95 update version
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1574 2a923420-c742-0410-a762-8d5b09965624
2013-06-24 21:42:11 +00:00
hummypkg
84a03f49bf webif updates
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1573 2a923420-c742-0410-a762-8d5b09965624
2013-06-24 21:34:46 +00:00
hummypkg
e0fea797bb update mongoose dependency
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1560 2a923420-c742-0410-a762-8d5b09965624
2013-05-16 21:02:24 +00:00
hummypkg
102ae13acb 1.0.2
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1545 2a923420-c742-0410-a762-8d5b09965624
2013-04-17 18:05:12 +00:00
hummypkg
0bca853384 1.0.1
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1534 2a923420-c742-0410-a762-8d5b09965624
2013-04-10 21:49:11 +00:00
hummypkg
38a079b0ba 1.0.0-2
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1524 2a923420-c742-0410-a762-8d5b09965624
2013-04-05 20:07:42 +00:00
1221 changed files with 30324 additions and 19068 deletions

3
.gitattributes vendored Normal file
View File

@@ -0,0 +1,3 @@
*.jim linguist-language=tcl
*.class linguist-language=tcl

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
ignore:*

6
CONTROL/conffiles Normal file
View File

@@ -0,0 +1,6 @@
webif/html/css/EXTRA.css
webif/html/favicon.ico
webif/html/img/fav/57.png
webif/html/img/fav/72.png
webif/html/img/fav/114.png
webif/html/img/fav/144.png

View File

@@ -1,9 +1,10 @@
Package: webif
Priority: optional
Section: web
Version: 1.0.0
Version: 1.5.4-4
Architecture: mipsel
Maintainer: af123@hummypkg.org.uk
Depends: webif-channelicons(>=1.0.5),mongoose(>=3.0-7),jim(>=0.73-1),jim-oo,jim-sqlite3(>=0.73-1),jim-cgi(>=0.7),jim-binary,service-control(>=1.2),busybox(>=1.20.2-1),lsof,epg(>=1.0.13),hmt(>=1.1.13),ssmtp,anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.0.2),webif-charts(>=1.2),stripts(>=1.1.2),smartmontools,tmenu(>=1.05),ffmpeg,id3v2
Maintainer: prpr
Depends: tcpfix,webif-channelicons(>=1.2.4),lighttpd(>=1.4.39-1),jim(>=0.82-5),jim-cgi(>=0.7-2),service-control(>=2.3),busybox(>=1.20.2-1),lsof(>=4.87),epg(>=1.3.0-1),hmt(>=2.0.12),ssmtp,cron-daemon(>=1.18.3-3),at(>=3.1.18),anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.1.13),webif-charts(>=1.2-1),stripts(>=1.4.2),tmenu(>=1.21-2),ffmpeg(>=2.8),id3v2,multienv(>=1.6),tcpping(>=1.1),e2fsprogs,wireless-tools(>=29-1),dbupdate,recmon(>=2.0.7),hwctl,nugget(>=0.98),sqlite3(>=3.15.1),jim-xconv,zip(>=3.0-1),wget
Suggests:
Description: An evolving web interface for the Humax.
Tags: https://hummy.tv/forum/threads/10760/

View File

@@ -1,43 +1,85 @@
#!/bin/sh
echo "Postinstall $*"
# At daemon doesn't work properly with 700
[ -d /mod/var ] && chmod 755 /mod/var
export tmpf=/tmp/cronf.$$
# Relocate any stray files in /mod/var/mongoose
if [ -d /mod/var/mongoose ] && [ ! -h /mod/var/mongoose ]; then
(
cd /mod/var/mongoose || exit 1
find . | cpio -pmud /mod/webif
)
(
cd /mod/var || exit 1
rm -rf mongoose
ln -s ../webif mongoose
)
fi
tmpfile=/tmp/cronf.$$
# Add cron jobs
crond=$PKG_ROOT/var/spool/cron/crontabs
[ -d $crond ] || exit 1
cronf=$crond/root
grep -v webif/lib/bin/auto $cronf > $tmpf
(
cat $tmpf
echo '*/10 * * * * /mod/webif/lib/bin/auto >/dev/null 2>&1'
) > $cronf
crontab=${PKG_ROOT}bin/crontab
if [ -x "$crontab" ]; then
"$crontab" -l | grep -v webif/lib/bin/auto \
| grep -v webif/lib/auto > $tmpfile
cat $tmpfile - << EOM | "$crontab" -
* * * * * /mod/webif/lib/auto/scan >/dev/null 2>>/mod/tmp/auto.log
* * * * * /mod/webif/lib/auto/deq >/dev/null 2>>/mod/tmp/auto.log
EOM
fi
# Add anacron jobs
ana=$PKG_ROOT/etc/anacrontab
egrep -v 'backup/backup.jim|diskattrs' $ana > $tmpf
(
cat $tmpf
echo "1 8 sched_backup /mod/var/mongoose/cgi-bin/backup/backup.jim"
echo "1 5 diskattrs /mod/webif/lib/bin/diskattrs"
) > $ana
ana=${PKG_ROOT}etc/anacrontab
grep -vE 'backup/backup.jim|bin/(diskattrs|resetnew)' "$ana" > $tmpfile
cat $tmpfile - << EOM > "$ana"
1 4 diskattrs /mod/webif/lib/bin/diskattrs
1 7 resetnew /mod/webif/lib/bin/resetnew
1 8 sched_backup /mod/webif/html/sched/backup/backup.jim
EOM
$PKG_ROOT/etc/init.d/S02anacron start < /dev/null > /dev/null 2>&1 &
"$PKG_ROOT"etc/init.d/S02anacron start >/dev/null 2>&1 <&1 &
[ -f /tmp/webif_auto.log ] && rm -f /tmp/webif_auto.log
[ -f /mod/webif/.strip-updated ] && rm -f /mod/webif/.strip-updated
if [ ! -f /mod/webif/.strip-updated ]; then
echo "*********************************"
echo "* Please wait while any shrunk recordings are flagged..."
echo "*********************************"
/mod/webif/lib/bin/strip-update
touch /mod/webif/.strip-updated
# Run in full environment as Jim shell doesn't work otherwise
if [ -f /mod/.env ]; then
(
. /mod/.env
/mod/webif/lib/auto/upgrade
/mod/webif/lib/bin/diskattrs
/mod/webif/lib/bin/resetnew
/mod/webif/lib/bin/fixepisodes
) >/dev/null 2>&1 <&1 &
fi
exit 0
# Remove hook script placed by the legacy rt3070 package which does not work
# with CFW >= 3.00
hook=/mod/boot/xinit.d/rt3070
[ -f $hook ] && rm -f $hook
# Remove legacy mongoose startup script
[ -f /mod/etc/init.d/Z01mongoose ] && rm -f /mod/etc/init.d/Z01mongoose
# Migrate record log to new name.
(
cd /mod/tmp || exit 1
if [ -f record.log ]; then
if [ -f activity.log ]; then
rm record.log
else
mv record.log activity.log
fi
fi
)
[ -f $tmpfile ] && rm -f $tmpfile
# Remove empty directories
find /mod/webif/ -type d -exec rmdir {} \; 2>/dev/null
exit 0

23
CONTROL/preinst Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh
# Handle moving the legacy /var/mongoose directory to /webif..
if [ -h /mod/webif ] && [ -d /mod/var/mongoose ] && [ ! -h /mod/var/mongoose ]; then
(
echo "Relocating web interface files..."
cd /mod || exit 1
rm webif || exit 1
mv var/mongoose webif || exit 1
cd var || exit 1
ln -s ../webif mongoose
)
fi
if [ ! -f /mod/webif/.pfixpkg ] && [ -x /mod/bin/at ]; then
/mod/bin/at now + 1 minute << EOM
diag fixpkg
touch /mod/webif/.pfixpkg
EOM
fi
exit 0

View File

@@ -1,17 +1,20 @@
#!/bin/sh
export tmpf=/tmp/cronf.$$
tmpfile=/tmp/cronf.$$
cronf=$PKG_ROOT/var/spool/cron/crontabs/root
if [ -f $cronf ]; then
grep -v webif/lib/bin/auto $cronf > $tmpf
cp $tmpf $cronf
[ -s $cronf ] || rm -f $cronf
crontab=${PKG_ROOT}bin/crontab
if [ -x "$crontab" ]; then
"$crontab" -l | grep -v webif/lib/bin/auto \
| grep -v webif/lib/auto > $tmpfile
if [ -s $tmpfile ]; then
"$crontab" $tmpfile
else
$crontab -r
fi
fi
ana=/mod/etc/anacrontab
egrep -v 'backup/backup.jim|diskattrs' $ana > $tmpf
cp $tmpf $ana
ana=${PKG_ROOT}etc/anacrontab
grep -vE 'backup/backup.jim|bin/(diskattrs|resetnew)' "$ana" > $tmpfile
mv $tmpfile "$ana"
exit 0

2
README.md Normal file
View File

@@ -0,0 +1,2 @@
# webif
An evolving web interface for the Humax HD[R] Fox T2 customised firmware.

1
bin/reboot Symbolic link
View File

@@ -0,0 +1 @@
../webif/lib/bin/reboot

23
bin/version Executable file
View File

@@ -0,0 +1,23 @@
#!/mod/bin/jimsh
source /mod/webif/lib/setup
require system.class
set modver [system modversion]
set modbuild [system modbuild]
if {$modbuild > 0} {
append modver " (build $modbuild)"
}
catch {set fhtcpversion [system fhtcpversion]}
catch {set kernelver [system kernelver]}
puts "
Humax [system model] Fox T2 ([system hostname])
Humax Version: $fhtcpversion (kernel $kernelver)
Custom firmware version: $modver
Web interface version: [system pkgver webif]
Serial Number: [system serialno]
Encryption Key: [system encryptionkey]
Last Boot Reason: [system lastbootreason]
"

BIN
boot/xinit.d/ahw Executable file

Binary file not shown.

18
etc/init.d/S59webif Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
. /mod/webif/lib/lib.sh
export TZ=GMT+0BST,M3.5.0/1,M10.5.0/2
case "$1" in
start)
/mod/webif/lib/bin/manage_logs
plog activity "System booted (`lbr_descr`)."
;;
stop)
;;
*)
exit 1
;;
esac

View File

@@ -1,24 +0,0 @@
#!/bin/sh
if [ "`cat /etc/model`" = HD ]; then
epg=/media/drive1/epgsavedata
epgdb=/media/drive1/epg.db
else
epg=/mnt/hd1/dvbepg/epg.dat
epgdb=/mnt/hd1/epg.db
fi
case "$1" in
start)
/mod/bin/epg -f $epg sqlitedumpd $epgdb > /tmp/epgd.log 2>&1 &
;;
stop)
killall -q epg
;;
*)
exit 1
;;
esac
exit 0

31
etc/recmon.d/autotrigger Executable file
View File

@@ -0,0 +1,31 @@
#!/mod/bin/jimsh
if {[lindex $argv 0] ne "-stop"} exit
source /mod/webif/lib/setup
require system.class settings.class lock
set loglevel [[settings] autolog]
set file [lindex $argv 1]
set dir [file dirname $file]
set prefix "autotrigger\[[pid]\]"
if {$loglevel > 0} {
system plog auto "$prefix: $file"
system plog auto "$prefix: will run for $dir"
}
# Wait up to 10 minutes for any existing auto process to finish...
if {![acquire_lock webif_autoscan 600 5]} {
puts "Cannot acquire exclusive lock, terminating."
system plog auto "$prefix: failed to get lock"
exit
}
if {$loglevel > 0} { system plog auto "$prefix: got lock" }
exec /mod/webif/lib/auto/scan -f -prelocked -logprefix "$prefix: " \
-singledir $dir
if {$loglevel > 0} { system plog auto "$prefix: done" }

22
etc/recmon.d/webiflog Executable file
View File

@@ -0,0 +1,22 @@
#!/mod/bin/jimsh
if {[lindex $argv 0] ne "-stop"} exit
source /mod/webif/lib/setup
require ts.class system.class
set file [lindex $argv 1]
set ts [ts fetch "$file.ts"]
set root [system mediaroot]
set dir [file dirname $file]
if {[string match "$root*" $dir]} {
set dir [string range $dir $([string length $root] + 1) end]
}
set title [$ts get title]
set ep [$ts episode_name]
set dur [$ts duration]
set ch [$ts get channel_name]
system plog activity "Recorded: $dir/$title Episode: $ep ($dur minutes - $ch)"

0
var/backup/.gitignore vendored Normal file
View File

1
var/mongoose Symbolic link
View File

@@ -0,0 +1 @@
../webif

View File

@@ -1,83 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require rsv.class
set dir /mod/var/backup
httpheader
set now [clock seconds]
set file [file tail [cgi_get file \
[clock format $now -format "auto-%Y-%b-%d-%H:%M"]]]
if {[string match {auto-*} $file]} {
# Delete any automatic backups over 7 days old.
set mt $(15 * 86400)
foreach af [glob -nocomplain "$dir/auto-*"] {
set aft [file mtime $af]
set diff $($now - $aft)
if {$diff > $mt} {
puts "Removing $af"
file delete $af
}
}
}
set ffile "/$dir/$file.rbk"
if {[file exists $ffile]} {
puts "Backup file <i>$file</i> already exists."
exit
}
if {[catch { set fd [open $ffile w] } msg]} {
puts "Error creating backup file. - $msg"
exit
}
puts "Backing up scheduled recordings and events..."
set events [rsv list]
set fields [lsort [[rsv] vars]]
#puts $fd "# [join $fields "\t"]"
foreach event $events {
puts " Backing up scheduled event '[$event name]'"
puts -nonewline $fd "event\t"
foreach f $fields {
if {$f eq "aulEventToRecordInfo"} { continue }
puts -nonewline $fd "[$event get $f]\t"
}
puts $fd ""
}
puts "Done."
puts "Backing up channel favourites..."
set grp 0
foreach res [$rsvdb query {
select eFavGroup,
TBL_FAV.eSvcType,
substr(szSvcName, 2) as szSvcName,
favIdx
from TBL_FAV join TBL_SVC using (hSvc)
order by eFavGroup, favIdx
}] {
if {$res(eFavGroup) != $grp} {
set grp $res(eFavGroup)
puts " Group $grp"
}
puts " $res(szSvcName)"
puts $fd "fav\t$res(eFavGroup)\t$res(eSvcType)\t$res(szSvcName)\t$res(favIdx)"
}
puts "Done."
close $fd
rsv cleanup

View File

@@ -1,70 +0,0 @@
function refresh_files()
{
$('#backup_files').load('/cgi-bin/backup/files.jim', function() {
$('input.restore').change(function() {
$('#restore_button').removeAttr('disabled')
.button('option', 'disabled', false);
$('#delete_button').removeAttr('disabled')
.button('option', 'disabled', false);
$('#view_button').removeAttr('disabled')
.button('option', 'disabled', false);
});
});
}
$(document).ready(function() {
$('button').button();
refresh_files();
$('#backup_button').click(function() {
$('#backup_working').slideDown();
$('#results').load('/cgi-bin/backup/backup.jim?' +
$('#backup_name').serialize(), function() {
$('#results').slideDown(function() {
$('#backup_working').slideUp();
refresh_files();
});
});
});
$('#delete_button').click(function() {
var backup = $('input.restore:checked').val();
if (confirm('Confirm deletion of ' + backup))
{
$('#results').load('/cgi-bin/backup/delete.jim?' +
$('input.restore').serialize(), function() {
$('#results').slideDown(function() {
refresh_files();
});
});
}
});
$('#view_button').click(function() {
var backup = $('input.restore:checked').val();
$('#results').load('/cgi-bin/backup/view.jim?' +
$('input.restore').serialize(), function() {
$('#results').slideDown(function() {
refresh_files();
});
});
});
$('#restore_button').click(function() {
var backup = $('input.restore:checked').val();
if (confirm('!!!!!!!!!!!!!!!!!!!!!!!!! PLEASE CONFIRM !!!!!!!!!!!!!!!!!!!!!!!!!\n\nAre you sure you wish to erase all scheduled recordings and favourite channels and then restore them from\n' + backup + '?'))
{
$('#restore_working').slideDown();
$('#results').load('/cgi-bin/backup/restore.jim?' +
$('input.restore').serialize(), function() {
$('#results').slideDown(function() {
$('#restore_working').slideUp();
refresh_files();
$('#restore_warning').slideDown();
$('#restart_block').load(
'/cgi-bin/restartblock.jim');
});
});
}
});
});

View File

@@ -1,135 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require rsv.class findhsvc system.class
set dir /mod/var/backup
httpheader
set file [file tail [cgi_get restore_file]]
if {$file == 0} {
puts "No filename supplied."
exit
}
set ffile "/$dir/$file.rbk"
if {![file exists $ffile]} {
puts "Backup file <i>$file</i> does not exist."
exit
}
if {[catch { set fd [open $ffile r] } msg]} {
puts "Error opening <i>$file</i> - $msg"
exit
}
puts "Restoring scheduled events from <i>$file</i>..."
$rsvdb query {begin transaction;}
$rsvdb query {delete from TBL_RESERVATION;}
set fields [lsort [[rsv] vars]]
set data [split [read $fd] "\n"]
foreach line $data {
set vals [split $line "\t"]
if {[lindex $vals 0] ne "event"} { continue }
set vars {}
set i 0
foreach f $fields {
if {$f eq "aulEventToRecordInfo"} { continue }
incr i
lappend vars $f [lindex $vals $i]
}
# Don't restore DSO events.
if {$vars(ersvtype) == 11} { continue }
set rsv [rsv new $vars]
# Need to fix up channel and CRID mappings in case something has
# changed during a channel scan.
puts " Restoring [$rsv name]"
set bad 0
# First, the service number
set ohsvc [$rsv get hsvc]
if {$ohsvc > 0} {
set hsvc [$rsv fix_hsvc]
if {$hsvc == 0} {
puts " Cannot find channel, restore failed."
set bad 1
} elseif {$hsvc != $ohsvc} {
puts -nonewline " Service number has "
puts "changed $ohsvc -> $hsvc, fixing."
} else {
puts " No change in channel service."
}
}
if {!$bad} {
if {[catch {$rsv insert pending 1} msg]} {
puts " Error inserting event, $msg"
}
}
}
$rsvdb query {commit transaction;}
puts "Restoring favourite channels..."
$rsvdb query {begin transaction;}
$rsvdb query {delete from channel.TBL_FAV}
$rsvdb query {drop table if exists pending.fav}
$rsvdb query {create table pending.fav (
favIdx integer primary key autoincrement unique,
hSvc integer(4),
eFavGroup integer(4),
[eSvcType] integer(4)
)}
set grp 0
foreach line $data {
set vals [split $line "\t"]
if {[lindex $vals 0] ne "fav"} { continue }
set group [lindex $vals 1]
set type [lindex $vals 2]
set chan [lindex $vals 3]
set idx [lindex $vals 4]
if {$idx eq ""} { set idx 0 }
set hsvc [get_channel_attr $chan]
if {$grp != $group} {
set grp $group
puts " Group $grp"
}
puts " $chan"
if {$hsvc eq ""} {
puts " Cannot map channel name to service."
continue
}
set query "
insert into pending.fav(favIdx, hSvc, eFavGroup, eSvcType)
values($idx, $hsvc, $group, $type);
"
$rsvdb query $query
}
$rsvdb query {commit transaction;}
system restartpending
close $fd
rsv cleanup

View File

@@ -1,54 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require rsv.class findhsvc
set dir /mod/var/backup
httpheader
set file [file tail [cgi_get restore_file]]
if {$file == 0} {
puts "No filename supplied."
exit
}
set ffile "/$dir/$file.rbk"
if {![file exists $ffile]} {
puts "Backup file <i>$file</i> does not exist."
exit
}
if {[catch { set fd [open $ffile r] } msg]} {
puts "Error opening <i>$file</i> - $msg"
exit
}
puts "Listing scheduled events from <i>$file</i>..."
set fields [lsort [[rsv] vars]]
set data [split [read $fd] "\n"]
foreach line $data {
set vals [split $line "\t"]
if {[lindex $vals 0] ne "event"} { continue }
set vars {}
set i 0
foreach f $fields {
if {$f eq "aulEventToRecordInfo"} { continue }
incr i
lappend vars $f [lindex $vals $i]
}
set rsv [rsv new $vars]
puts " [$rsv name] ([$rsv channel_name])"
}
close $fd
rsv cleanup

View File

@@ -1,18 +0,0 @@
#!/bin/sh
[ -n "$QUERY_STRING" ] && rma="${QUERY_STRING##*=}" || rma=0
echo "Content-Type: text/plain"
echo
if [ "$rma" = 1 ]; then
modver="`cat /etc/modversion`"
if [ "$modver" -ge 215 ]; then
touch /var/lib/humaxtv_backup/.rma
else
touch /var/lib/humaxtv/.rma
fi
else
touch /var/lib/humaxtv/mod/_RESET_CUSTOM_FIRMWARE_ENVIRONMENT
fi

View File

@@ -1,134 +0,0 @@
#!/mod/bin/jimsh
package require cgi
package require sqlite3
source /mod/webif/lib/setup
require altrow progressbar epg.class
header
proc f2c {frequency} {
set ch int($((($frequency / 1000) - 303.25) / 8))
return [expr int($ch)]
}
if {[catch {set db [sqlite3.open /var/lib/humaxtv/channel.db]} msg]} {
puts "Error opening channel database: $msg"
exit
}
puts "
<button id=expandall>Expand All</button>
<button id=collapseall>Collapse All</button>
<br><br>
<table class=borders>
<tr>
<th>Channel</th>
<th>Frequency</th>
<th>Signal Strength</th>
<th>Signal Quality</th>
<th>Network</th>
<th>Mux</th>
<th>Channels</th>
<th>&gt;799</th>
</tr>
"
foreach tw [$db query {
select tsIdx, szNetName, usTsID, ulFrequency, ucLevel, ucQuality
from TBL_TS join TBL_NET using (netIdx)
order by ulFrequency
}] {
lassign $tw \
x tsIdx x netName x usTsID x ulFrequency x ucLevel x ucQuality
altrow
puts "
<td>[f2c $ulFrequency]</td>
<td>[expr $ulFrequency / 1000.0] MHz</td>
"
puts "<td>[progressbar $ucLevel]</td>"
puts "<td>[progressbar $ucQuality]</td>"
puts "<td>[string range $netName 3 end]</td>"
set channels [$db query {
select usLcn, szSvcName, szPrvName, aucDefaultAuthority
from TBL_SVC left join TBL_PRV using (prvIdx)
where tsIdx = %s
order by usLcn
} $tsIdx]
set mux "Local"
set ehs 0
foreach chan $channels {
lassign $chan x lcn x name
set name [string range $name 1 end]
if {$lcn >= 800} { incr ehs }
switch $name {
"BBC ONE" { set mux "PSB1/BBC A" }
"ITV1" { set mux "PSB2/D3&amp;4" }
"ITV" { set mux "PSB2/D3&amp;4" }
"BBC One HD" { set mux "PSB3/BBC B (HD)" }
"ITV3" { set mux "COM4/SDN" }
"Dave" { set mux "COM5/ARQ A" }
"Film4" { set mux "COM6/ARQ B" }
"Movies4Men" { set mux "Local" }
}
}
puts "<td>$mux</td>"
puts "<td>[llength $channels]
<a class=mchan ts=$tsIdx href=#>
<img border=0 height=14
src=/images/421_1_00_CH_Title_2R_Arrow.png>
view
</a></td>"
puts "<td>$ehs</th>"
puts "</tr>"
puts "<tr id=mchan_$tsIdx class=mchan style=\"display: none\">
<td colspan=5>"
puts "<table style=\"margin-left: 5em\">"
puts "<tr>
<th colspan=3>Channel</th>
<th>Provider</th>
<th>Authority</th>
</tr>"
foreach chan $channels {
lassign $chan x lcn x name x prv x auth
set name [string range $name 1 end]
set prv [string range $prv 3 end]
altrow
puts "<td class=va>"
puts "[epg channelicon $name 50]</td>
<td>$lcn</td><td>$name</td>"
puts "</td><td>"
puts $prv
puts "</td><td>"
puts $auth
puts "</td>"
puts "</tr>"
}
puts "</table>"
puts "</td></tr>"
}
puts "</table>"
puts {
<script type=text/javascript>
$(document).ready(function() {
$('a.mchan').click(function(e) {
e.preventDefault();
$('#mchan_' + $(this).attr('ts')).slideToggle('slow');
});
$('#expandall').button().click(function() {
$('tr.mchan').slideDown('slow');
});
$('#collapseall').button().click(function() {
$('tr.mchan').slideUp('slow');
});
});
</script>
}

View File

@@ -1,9 +0,0 @@
#!/mod/bin/jimsh
source /mod/webif/lib/setup
httpheader "text/plain"
foreach f [dict keys $env] {
puts "$f = $env($f)"
}

View File

@@ -1,39 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require pkg.class chunked
cgi_input
#cgi_dump
set cmd [cgi_get cmd update]
proc opkg {cmd} {
chunk ">>> opkg $cmd\r\n"
set bcmd "|/mod/webif/lib/bin/opkg $cmd"
set fd [open $bcmd r]
while {[gets $fd line] >= 0} {
chunk "$line\r\n"
#chunk_pad
}
close $fd
chunk "\r\n"
}
start_chunked
if {$cmd eq "upgrade"} { opkg update }
opkg $cmd
if {$cmd eq "update" || $cmd eq "upgrade"} {
chunk "Updating package meta information\r\n"
pkg fetchmeta
chunk "Done.\r\n"
chunk "Updating diagnostic meta information\r\n"
pkg fetchdiagmeta
chunk "Done.\r\n"
}
end_chunked

View File

@@ -1,59 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require rsv.class system.class
httpheader
if {[cgi_get act] eq "cancel"} {
file delete /tmp/.restartpending
exit
}
if {[cgi_get now] eq "yes"} {
# - Busybox reboot does sync the disk but may still not be clean enough.
puts "Restarting."
system reboot
exit
}
file delete /tmp/.restartpending
header
# Commit pending reservations on older mod versions.
if {![file exists /sbin/rsvsync] && ![file exists /mod/boot/rsvsync]} {
rsv commit
}
puts {
<link href=/css/jquery.progressbar.css rel=stylesheet type=text/css />
<script type="text/javascript" src="/js/jquery.progressbar.js"></script>
<script type=text/javascript>
var handle = 0;
var pct = 0;
function update()
{
$('#progressbar').reportprogress(++pct);
if (pct == 100)
{
clearInterval(handle);
pct = 0;
window.location = '/';
}
}
$(document).ready(function() {
$('#progressbar').reportprogress(0);
handle = setInterval("update()", 350);
$.get('/cgi-bin/restart.jim?now=yes');
});
</script>
Please wait while the Humax restarts...<br>
<div id=progressbar></div>
}
footer

View File

@@ -1,469 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require settings.class plugin system.class
httpheader
if {[cgi_get act] eq "https"} {
if {[cgi_get val off] eq "off"} {
file delete /mod/etc/mongoose.cert
puts "HTTPS Server will be disabled after next reboot."
} else {
exec /mod/sbin/mongoose_mkcert
puts "HTTPS Server will be enabled after next reboot."
}
exit
}
if {[cgi_get act] eq "xtelnet"} {
if {[cgi_get val off] eq "off"} {
file delete /mod/boot/xtelnet
puts "Telnet server expert mode will be disabled after next reboot."
} else {
exec /mod/bin/busybox/touch /mod/boot/xtelnet
puts "Telnet server expert mode will be enabled after next reboot."
}
exit
}
set settings [settings new]
set hostname [$settings hostname]
set smtp_server [$settings smtp_server]
set channel_group [$settings channel_group]
set epg_style [$settings epg_style]
set pkgdev [$settings pkgdev]
set notoolbar [$settings notoolbar]
set nomobile [$settings nomobile]
set xepghours [$settings xepghours]
if {$xepghours == 0} { set xepghours 4 }
set genrededup [$settings genrededup]
set autolog [$settings autolog]
# Handle updates
if {![dict exists $env REQUEST_URI]} { set env(REQUEST_URI) "" }
proc _handle_update {class var old text} {
global _cgi
global settings
if {[dict exists $_cgi $var]} {
set new [string trim [dict get $_cgi $var]]
if {$new == $old} {
puts "$text unchanged."
} elseif [string is $class -strict $new] {
$settings $var $new
puts "$text updated."
} else {
puts "Invalid value for $var."
}
exit
}
}
proc handle_int_update {var old {text "Value"}} {
_handle_update digit $var $old $text
}
proc handle_str_update {var old {text "Value"}} {
_handle_update alnum $var $old $text
}
handle_str_update hostname $hostname Hostname
_handle_update ascii smtp_server $smtp_server "SMTP Server"
handle_int_update channel_group $channel_group "Channel Group"
handle_int_update xepghours $xepghours "Grid EPG Hours"
handle_str_update epg_style $epg_style "EPG Type"
handle_int_update pkgdev $pkgdev "Development Package Display"
handle_int_update notoolbar $notoolbar "Disable toolbar"
handle_int_update nomobile $nomobile "Disable mobile link"
handle_int_update genrededup $genrededup "Genre search dedup"
handle_int_update autolog $autolog "Auto-processing log level"
set acluser [cgi_get acluser "-"]
set aclpass [cgi_get aclpass "-"]
set aclpassc [cgi_get aclpassc "-"]
if {$acluser ne "-" && $aclpass ne "-"} {
if {![string length $acluser]} {
puts "No username provided."
exit
}
if {$aclpass ne $aclpassc} {
puts "Passwords do not match."
exit
}
if {[string length $aclpass] < 4} {
puts "Password is too short (< 4 characters)"
exit
}
puts [$settings addacluser $acluser $aclpass]
exit
}
set aclact [cgi_get aclact "-"]
if {$aclact ne "-" && $acluser ne "-"} {
switch $aclact {
"del" { puts [$settings delacluser $acluser] }
}
exit
}
header
puts {
<script type="text/javascript" src="/cgi-bin/settings.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>
<script type="text/javascript" src="/js/jconfirmaction.jquery.js"></script>
<link href=/css/jconfirmaction.jquery.css rel=stylesheet type=text/css />
<script type="text/javascript" src="/js/iphone-style-checkboxes.js"></script>
<link href=/css/iphone-style-checkboxes.css rel=stylesheet type=text/css />
}
puts "
<fieldset style=\"display: inline\">
<legend>
General Settings
</legend>
<table>
"
puts "
<tr>
<form class=auto id=hostname method=get action=$env(REQUEST_URI)>
<th class=key>Hostname</th>
<td><input name=hostname value=\"$hostname\"
class=\"text ui-widget-content ui-corner-all\"
length=20 maxlength=50>
<small>
<input id=hostname_submit value=\"change\" type=submit>
</small>
<div id=hostname_output></div>
</td>
</form>
</tr>
"
puts -nonewline "
<tr>
<th class=key>HTTPS web server?</th>
<td><input id=https_toggle name=https type=checkbox value=yes"
if {[file exists /mod/etc/mongoose.cert]} { puts -nonewline " checked" }
puts ">
<div id=https_output></div>
</td>
</tr>
"
puts -nonewline "
<tr>
<th class=key>Slide-down toolbar?</th>
<td><input id=toolbar_toggle name=toolbar type=checkbox value=yes"
if {$notoolbar == 0} { puts -nonewline " checked" }
puts ">
<div id=toolbar_output></div>
</td>
</tr>
"
puts -nonewline "
<tr>
<th class=key>Mobile link on main page?</th>
<td><input id=mobile_toggle name=mobile type=checkbox value=yes"
if {$nomobile == 0} { puts -nonewline " checked" }
puts ">
<div id=mobile_output></div>
</td>
</tr>
"
puts -nonewline "
<form class=auto id=autolog method=get action=$env(REQUEST_URI)>
<th class=key>Auto-processing log level</th>
<td><select id=autolog name=autolog
class=\"text ui-widget-content ui-corner-all\">
"
puts "<option value=0"
if {$autolog == 0} { puts " selected" }
puts ">Actions and errors only\n"
puts "<option value=1"
if {$autolog == 1} { puts " selected" }
puts ">Actions, errors and scan information\n"
puts "<option value=2"
if {$autolog == 1} { puts " selected" }
puts ">Debugging information\n"
puts "
</select>
<small>
<input name=autolog value=\"set\" type=submit>
</small>
<div id=autolog_output></div>
</td>
</form>
"
puts "
</table></fieldset>
<br><br>
<fieldset style=\"display: inline\">
<legend>
EPG Settings
</legend>
<table>
"
puts "
<tr>
<form class=auto id=epg_style method=get action=$env(REQUEST_URI)>
<th class=key>Default Now/Next style</th>
<td><select id=epg_style name=epg_style
class=\"text ui-widget-content ui-corner-all\">
"
puts "<option value=standard"
if {$epg_style ne "grid"} { puts " selected" }
puts ">Standard\n"
puts "<option value=grid"
if {$epg_style eq "grid"} { puts " selected" }
puts ">Grid\n"
puts "
</select>
<small>
<input name=epg_style value=\"set\" type=submit>
</small>
<div id=epg_style_output></div>
</td>
</form>
</tr>
"
puts "
<tr>
<form class=auto id=channel_group method=get action=$env(REQUEST_URI)>
<th class=key>Channel Group for EPG</th>
<td><select id=channel_group name=channel_group
class=\"text ui-widget-content ui-corner-all\">
"
set i 0
puts "<option value=0>-- None --"
foreach grp [$settings channel_groups] {
incr i
puts -nonewline "<option value=$i"
if {$channel_group == $i} {
puts -nonewline " selected"
}
puts ">$grp"
}
puts "
</select>
<small>
<input name=channel_group value=\"set\" type=submit>
</small>
<div id=channel_group_output></div>
</td>
</form>
</tr>
"
puts "
<tr>
<form class=auto id=xepghours method=get action=$env(REQUEST_URI)>
<th class=key>Grid-style EPG Hours</th>
<td><select id=xepghours name=xepghours
class=\"text ui-widget-content ui-corner-all\">
"
foreach xehopt {2 3 4 5 6} {
puts -nonewline "<option value=$xehopt"
if {$xehopt == $xepghours} {
puts -nonewline " selected"
}
puts ">$xehopt hours"
}
puts "
</select>
<small>
<input name=xepghours value=\"set\" type=submit>
</small>
<div id=xepghours_output></div>
</td>
</form>
</tr>
"
puts -nonewline "
<tr>
<th class=key>De-duplicate genre search results?</th>
<td><input id=genrededup_toggle name=genrededup type=checkbox value=yes"
if {$genrededup == 1} { puts -nonewline " checked" }
puts ">
<div id=genrededup_output></div>
</td>
</tr>
"
puts "
</table>
</fieldset>
<br><br>
<fieldset style=\"display: inline\">
<legend> Email Settings </legend>
<table>
"
puts "
<tr>
<form class=auto id=smtp_server method=get action=$env(REQUEST_URI)>
<th class=key>SMTP Server for outbound email</th>
<td><input name=smtp_server value=\"$smtp_server\"
class=\"text ui-widget-content ui-corner-all\"
length=20 maxlength=50>
<small>
<input id=smtp_server_submit value=\"change\" type=submit>
</small>
<div id=smtp_server_output></div>
</td>
</form>
</tr>
"
puts "
</table>
</fieldset>
"
puts "
<br><br>
<fieldset style=\"display: inline\">
<legend> Web Interface User Access Control </legend>
<table>
"
set aclusers [$settings aclusers]
if {[llength $aclusers]} {
puts "<tr><th colspan=5 class=odd>Existing Users</th></tr>"
foreach user [$settings aclusers] {
lassign $user user
puts "<tr><td align=center style=\"font-weight: bold\">
$user</td>"
puts "<th class=key>New password:
<input
class=\"aclpass text ui-widget-content ui-corner-all\"
type=password size=20 maxlength=50><br>"
puts "Again:
<input
class=\"aclpassc text ui-widget-content ui-corner-all\"
type=password size=20 maxlength=50></td>"
puts "<th class=key><button class=pwchange>
Change</button></td>"
puts "<th class=key><button class=userdel>
Delete User</button></td>"
puts "</tr>"
}
puts "<tr><td colspan=5 id=aclusermod_output>&nbsp;</td></tr>"
puts "<tr><td colspan=5>&nbsp;</td></tr>"
} else {
puts "<tr><td colspan=5 class=blood><b>
Add a user to enable authentication.</b></td></tr>"
}
puts "<tr><th colspan=5 class=odd>Add New User</th></tr>"
puts "
<form id=aclnewuser method=get action=$env(REQUEST_URI)>
<tr><th class=key>New User:</th><td>
<input
class=\"text ui-widget-content ui-corner-all\"
id=acluser name=acluser size=20 maxlength=50></td></tr>
<tr><th class=key>Password:</th><td>
<input type=password
class=\"text ui-widget-content ui-corner-all\"
id=aclpass name=aclpass size=20 maxlength=50></td></tr>
<tr><th class=key>Password (confirm):</th><td>
<input type=password
class=\"text ui-widget-content ui-corner-all\"
id=aclpassc name=aclpassc size=20 maxlength=50></td></tr>
<tr><td><input id=aclnewuser_submit value=\"Add User\" type=submit>
</td></tr>
</form>
</table>
<div id=aclnewuser_output></div>
</fieldset>
"
puts {
<script type=text/javascript>
$('#aclnewuser').ajaxForm({
target: '#aclnewuser_output',
success: function(txt) {
if (txt.indexOf('Success') >= 0)
window.location.reload(true);
}
});
$('button.userdel').click(function(el) {
var user = $('td:first', $(this).parents('tr')).text().trim();
$('#aclusermod_output').load(
'/cgi-bin/settings.jim?aclact=del&acluser=' +
encodeURIComponent(user), function(txt) {
if (txt.indexOf('Success') >= 0)
window.location.reload(true);
});
});
$('button.pwchange').click(function(el) {
var tr = $(this).parents('tr');
var user = $('td:first', $(tr)).text().trim();
var pass = $(tr).find('input.aclpass').val();
var passc = $(tr).find('input.aclpassc').val();
$('#aclusermod_output').load('/cgi-bin/settings.jim?' +
'acluser=' + encodeURIComponent(user) + '&' +
'aclpass=' + encodeURIComponent(pass) + '&' +
'aclpassc=' + encodeURIComponent(passc));
});
</script>
}
puts -nonewline "
<br><br>
<fieldset style=\"display: inline\">
<legend> Advanced Settings </legend>
<table>
<tr>
<th class=key>Show development and advanced packages?</th>
<td><input name=pkgdev id=pkgdev value=1 type=checkbox
"
if {$pkgdev} { puts -nonewline " checked" }
puts ">
</td>
</tr>
"
if {[system modversion 1] >= 214} {
puts -nonewline "
<tr>
<th class=key>Expert mode telnet server?</th>
<td><input id=xtelnet_toggle name=xtelnet type=checkbox value=yes"
if {[file exists /mod/boot/xtelnet]} { puts -nonewline " checked" }
puts ">
<div id=xtelnet_output></div>
</td>
</tr>
"
}
puts "
</table>
<div id=pkgdev_output></div>
</fieldset>
"
eval_plugins settings
footer

View File

@@ -1,160 +0,0 @@
(function($)
{
$.fn.enable = function()
{
return this.each(function() {
$(this)
.removeClass('ui-state-disabled')
.removeProp('disabled');
});
};
$.fn.disable = function()
{
return this.each(function() {
$(this)
.addClass('ui-state-disabled')
.prop('disabled', true);
});
};
})(jQuery);
$(document).ready(function () {
$(":submit").button();
//$('[type="checkbox"] :not(.yesno)').iphoneStyle();
$('[type="checkbox"]').iphoneStyle({
checkedLabel: 'YES',
uncheckedLabel: 'NO'
});
$('form.auto').each(function(i, el) {
var id = $(this).attr('id');
var output = '#' + id + '_output';
$(this).ajaxForm({
target: output,
success: function() {
$(output)
.css('font-style', 'italic')
.show('slow')
.delay(2000)
.fadeOut('slow');
}
});
});
$('#pkgdev').change(function() {
var arg = '0';
if ($(this).attr('checked'))
arg = '1';
$(this).disable();
$('#pkgdev_output')
.empty()
.show('slow')
.load('/cgi-bin/settings.jim?pkgdev=' + arg,
function() {
$('#pkgdev').enable();
$('#pkgdev_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
$('#https_toggle').change(function() {
var arg = 'off';
if ($(this).attr('checked'))
arg = 'on';
$(this).disable();
$('#https_output')
.empty()
.html('<img src=/img/loading.gif>Please Wait...')
.show('slow')
.load('/cgi-bin/settings.jim?act=https&val=' + arg,
function() {
$('#https_toggle').enable();
$('#https_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
$('#xtelnet_toggle').change(function() {
var arg = 'off';
if ($(this).attr('checked'))
arg = 'on';
$(this).disable();
$('#xtelnet_output')
.empty()
.html('<img src=/img/loading.gif>Please Wait...')
.show('slow')
.load('/cgi-bin/settings.jim?act=xtelnet&val=' + arg,
function() {
$('#xtelnet_toggle').enable();
$('#xtelnet_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
$('#toolbar_toggle').change(function() {
var arg = '1';
if ($(this).attr('checked'))
arg = '0';
$(this).disable();
$('#toolbar_output')
.empty()
.show('slow')
.load('/cgi-bin/settings.jim?notoolbar=' + arg,
function() {
$('#toolbar_toggle').enable();
$('#toolbar_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
$('#mobile_toggle').change(function() {
var arg = '1';
if ($(this).attr('checked'))
arg = '0';
$(this).disable();
$('#mobile_output')
.empty()
.show('slow')
.load('/cgi-bin/settings.jim?nomobile=' + arg,
function() {
$('#mobile_toggle').enable();
$('#mobile_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
$('#genrededup_toggle').change(function() {
var arg = '0';
if ($(this).attr('checked'))
arg = '1';
$(this).disable();
$('#genrededup_output')
.empty()
.show('slow')
.load('/cgi-bin/settings.jim?genrededup=' + arg,
function() {
$('#genrededup_toggle').enable();
$('#genrededup_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
});

View File

@@ -1,183 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require system.class findhsvc epg.class rsv.class
set runmode cli
if {[string match {*jim} $argv0]} { set runmode cgi }
set schedtime 1200
case $runmode {
cgi {
set type [cgi_get type "full"]
httpheader
}
cli {
set type "full"
if {"-X" in $argv} { set schedtime 7200 }
}
}
if {[catch {set pid [exec pgrep humaxtv]}]} {
puts "Cannot find humaxtv process."
exit
}
proc get_data {} {
global pid
set ret {}
if {[catch {set data \
[exec /mod/bin/lsof -p $pid | grep Video | fgrep .ts]} ]} {
set ret {}
} else {
foreach line [split $data "\n"] {
regsub -all -- {[[:space:]]+} $line " " line
set name [file rootname [file tail $line]]
if {[dict exists $ret $name]} {
set ret($name) -1
} else {
set size [lindex [split $line " "] 6]
set ret($name) $size
}
}
}
return $ret
}
set play 0
set rec 0
set seen {}
set output {}
if {$type eq "full"} {
set data [get_data]
} else {
set data {}
}
if {[llength $data]} {
sleep 3
set ndata [get_data]
foreach name [array names ndata] {
if {![dict exists $seen $name]} { set seen($name) 0 }
if {![dict exists $data $name]} { set data($name) 0 }
if {[file exists "/mod/tmp/webif_auto/decrypting.$name.ts"]} {
set mode "Decrypting"
set icon "178_1_00_Icon_Lock.png style=\"padding: 0 0.2em 0 0.5em\""
} elseif {$ndata($name) == -1} {
incr rec
incr play
set mode "Chase Playing"
set icon "745_1_11_Video_3REC_Live.png"
} elseif {$ndata($name) > $data($name) && $seen($name) < 1} {
incr rec
set mode "Recording"
set icon "745_1_11_Video_1REC.png"
} else {
incr play
set mode "Playing"
set icon "745_1_10_Video_2Live.png"
}
incr seen($name)
if {$runmode eq "cgi"} {
lappend output [concat \
"<span class=\"va stitem\">\n" \
" <img class=va src=/images/$icon>\n" \
" <span>$mode&nbsp;<i>$name</i></span>\n" \
"</span>\n" \
]
} else {
lappend output "$mode $name"
}
}
}
if {![system instandby] && $play < 1} {
set hsvc [system param CUR_SVC Value USERCONFIG]
set ff [$rsvdb query "
select usSvcid as svcid, usLcn as lcn,
substr(szSvcName, 2) as name
from channel.TBL_SVC
where hSvc = $hsvc
limit 1
"]
if {[llength $ff] == 1} {
lassign [lindex $ff 0] x svcid x lcn x name
set epgs [epg dbfetch get \
-service $svcid \
-time [clock seconds]\
]
set prog ""
if {[llength $epgs] == 1} {
lassign $epgs epg
set prog "- [$epg get name] ("
append prog "[clock format [$epg get start] -format %H:%M] - "
append prog "[clock format $([$epg get start] + [$epg get duration]) -format %H:%M]"
append prog ") \[[$epg percent]%\]"
}
if {$runmode eq "cgi"} {
lappend output [concat \
"<span class=\"va stitem\">\n" \
" [epg channelicon $name 30 \
{vertical-align: middle; padding: 0 4px 0 2px}]\n" \
" <span>Watching <i>$lcn: $name $prog</i></span>\n" \
"</span>\n" \
]
} else {
lappend output "Watching $lcn: $name $prog"
}
}
}
if {[system instandby]} {
if {$runmode eq "cgi"} {
lappend output [concat \
"<span class=\"va stitem\">\n" \
" <img class=va width=28 style=\"padding: 0 4px\"" \
"src=/img/standby.png>\n" \
" <span>System is in standby.</span>\n" \
"</span>" \
]
} else {
lappend output "System is in standby."
}
}
set events [rsv list tbl_reservation \
" where ersvtype = 3 and nsttime - [clock seconds] < $schedtime
and nsttime > [clock seconds] "]
foreach event $events {
if {$runmode eq "cgi"} {
set icon "175_1_11_Reservation_Record.png"
lappend output [concat \
"<span class=\"va stitem\">\n" \
" <img class=va src=/images/$icon width=20>\n" \
" <span>Will record <i>[$event name]</i>" \
" on [$event channel_name] at"\
" [clock format [$event get nsttime] -format {%H:%M}]" \
" </span>\n" \
"</span>\n" \
} else {
lappend output [concat \
"Will record '[$event name]' " \
"on [$event channel_name] at " \
"[clock format [$event get nsttime] -format {%H:%M}]" \
]
}
}
if {[llength $output]} {
if {$runmode eq "cgi"} {
puts [join $output "\n<br>\n"]
} else {
puts [join $output "\n"]
}
}

View File

@@ -1,285 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
header
require epg.class spinner.class altrow epg_search totop
puts {
<link type="text/css" href="/css/xepg.css" rel="Stylesheet" />
<script type=text/javascript src=/js/enadis.js></script>
}
[spinner new {
text "Loading EPG Information..."
size "1.2em"
style "margin: 1em;"
}] start
require epg_popup
set now [clock seconds]
set stt [cgi_get stt $now]
if {$stt <= $now} {
set stt $now
set current 1
} else {
set current 0
}
set favgroup [[settings] channel_group]
set hours [expr 1.0 * [[settings] xepghours]]
if {$hours == 0} { set hours 4.0 }
set seconds $($hours * 3600)
set ostt $stt
set stt [expr int($stt / 1800.0) * 1800]
set ett $(int($stt + $seconds))
set offset $(($ostt - $stt) / 1800.0)
set chanpx 160
set eventpx 1000
set totalpx $($chanpx + $eventpx)
set contwidth $($totalpx + 50)
set hourpx $($eventpx / $hours)
set minpx $($hourpx / 60.0)
set secpx $($minpx / 60.0)
set start [clock milliseconds]
if {$::qepg} {
if {$favgroup} {
set records [epg dbfetch dump \
-trange "$stt:$ett" -fav $favgroup]
} else {
set records [epg dbfetch dump -trange "$stt:$ett"]
}
} else {
require channelsort
set records [channelsort [epg fetch dump -trange "$stt:$ett"]]
}
set got [clock milliseconds]
proc but {label time {active 1}} {
puts -nonewline "<button style=\"margin-right: 2em\" tt=$time"
if {$active} {
puts -nonewline " class=nav"
} else {
puts -nonewline " disabled class=\"nav ui-state-disabled\""
}
puts " active=$active>$label</button>"
}
puts "<!-- Hours $hours ($seconds) -->"
puts "<div id=buttons style=\"width: $eventpx; margin-left: ${chanpx}px;\">"
but "&lt&lt; -1 Week" $($stt - 3600 * 24 * 7) \
$($stt - $now + 3600 >= 3600 * 24 * 7)
but "&lt&lt; -1 Day" $($stt - 3600 * 24) $($stt - $now >= 3600 * 23)
but "&lt;&lt; Earlier", $($stt - 3600 * 4) $($stt > $now)
but "&lt; Now &gt;" $now $($current == 0)
but "&gt;&gt; Later" $ett;
but "&gt;&gt; +1 Day" $($stt + 3600 * 24) $($stt < $now + 8 * 3600 * 24)
but "&gt;&gt; +1 Week" $($stt + 3600 * 24 * 7) $($stt < $now + 8 * 3600 * 24)
puts "</div>"
puts "
<script type=text/javascript>
\$('button.nav').button();
</script>
<div id=xepg style=\"min-width: ${contwidth}px; overflow: auto\">
<div id=xepgnow></div>
<div id=xegrid>
"
puts "<div id=epgdate style=\"width: ${eventpx}px; margin-left: ${chanpx}px;\">"
puts [clock format $stt -format {%a %d/%m/%Y}]
puts "<input type=hidden id=xepg_dp stt=$stt>"
puts "</div>"
puts "<div class=xechan style=\"width: ${chanpx}px;\">&nbsp;</div>"
for {set i 0} {$i < $hours * 2} {incr i} {
puts "<div class=xetime id=xe$i
style=\"width: [expr $minpx * 30]px\">"
puts "[clock format $($stt + 1800 * $i) -format "%H:%M"]</div>"
}
set lim 0
set lcn 0
set bg "odd"
foreach e $records {
set chnum [$e get channel_num]
if {$chnum == 0} { continue }
if {$chnum != $lcn} {
puts "<div class=xechan style=\"width: ${chanpx}px;\">"
puts "[$e channel_icon 30]&nbsp;"
puts "$chnum
<a href=/cgi-bin/epg/service.jim?service=[$e get service_id]
title=\"[$e get channel_name]\">
[$e get channel_name]
</a></div>"
set lcn $chnum
set le 0
set pos 0
if {$bg eq "odd"} { set bg "even" } else { set bg "odd" }
}
set es [$e get start]
set ee [expr $es + [$e get duration]]
if {$es < $le} continue
if {$es < $stt} { set es $stt }
if {$ee > $ett} { set ee $ett }
set le $ee
set left [expr int(($es - $stt) * $secpx)]
set right [expr int(($ee - $stt - 1) * $secpx)]
set px $($right - $left)
if {$pos < $left} {
set px $($px + $left - $pos - 1)
} elseif {$pos > $left} {
set px $($px - ($pos - $left - 1))
}
incr pos $px
$e process_sched
set recopts 1
if {[$e get series_crid] ne ""} { set recopts 2 }
set perc [$e percent]
set showing 0
if {$perc > 0 && $perc < 100} { set showing 1 }
set txt "[cgi_quote_html [$e get name]] <span>([\
clock format $es -format "%H:%M"] - [\
clock format $ee -format "%H:%M"])"
if {$showing} { append txt " ($perc%)" }
append txt "</span>"
set htxt "[cgi_quote_html [$e get name]] ([\
clock format $es -format "%H:%M"] - [\
clock format $ee -format "%H:%M"])"
if {$showing} { append hxt " ($perc%)" }
set lbg $bg
if {[$e scheduled]} { set lbg "blueshade" }
puts "<div class=\"xeprog $lbg\"
style=\"width: [expr $px - 4]px;\" title=\"$htxt\">
<a class=event href=# xs=[$e get service_id]
xe=[$e get event_id] sch=[$e get sched_type]
rec=$recopts>"
puts $txt
puts "</a>"
puts "</div>"
}
puts "<div id=keypos style=\"float: left; clear: left;\"></div>"
puts "</div>"
puts "</div>"
set earlier $($stt - 3600 * 4)
puts "
<div style=\"clear: both;\">
<small><button id=epgswitch>
Switch to standard now/next display.
</button></small>
</div>
"
puts "
<script type=text/javascript>
\$(document).ready(function() {
\$('#epgswitch').button().click(function() {
window.location = '/epg.shtml';
});
\$('button.nav').click(function() {
window.location = '/cgi-bin/xepg.jim?stt=' + \$(this).attr('tt') +
'&pos=' + \$('#xegrid').scrollTop();
});
\$('#xepg_dp').datepicker({
buttonImage: '/img/cal.gif',
buttonImageOnly: true,
showOn: 'button',
dateFormat: '@',
minDate: '[expr $now * 1000]',
maxDate: '[expr ($now + 7 * 86400) * 1000]',
onSelect: function(val, sel) {
var stt = \$(this).attr('stt');
// Extract date part
dval = Math.round(val / 86400000.0);
// Extract current time part
var tm = ~~(stt % 86400);
var ret = dval * 86400 + tm;
window.location = '/cgi-bin/xepg.jim?stt=' + ret;
}
});
\$('img.ui-datepicker-trigger').hover(
function() { \$(this).css('cursor', 'pointer'); },
function() { \$(this).css('cursor', 'auto'); }
);
"
if {$current} {
puts {
var kt = $('#xe0');
var ktpos = kt.position();
var height = $('#keypos').position().top - ktpos.top;
}
puts "var nowpos = ktpos.left + (kt.width() * $offset);"
puts {
if (window.console)
console.log('NOWPOS: %d', nowpos);
$('#xepgnow')
.css('left', nowpos + 'px')
.css('top', ktpos.top)
.height(height)
.show('slow');
}
}
puts "
});
</script>
"
puts "
<a href=/cgi-bin/settings.jim>
<img border=0 height=14 src=/images/421_1_00_CH_Title_2R_Arrow.png>
Visit settings to change EPG options.
</a><br>
"
epg cleanup
set end [clock milliseconds]
puts "<font class=footnote>
Retrieved in: [expr [expr $got - $start] / 1000.0] seconds.
</font>"
footer

View File

@@ -1,4 +0,0 @@
<!--#include virtual="/lib/header.shtml" -->
<!--#exec cmd="/mod/webif/include/backup.jim" -->
<!--#include virtual="/lib/footer.shtml" -->

View File

@@ -1,24 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
httpheader
# dir=%2Fmedia%2FMy+Video%2FWeatherview
# aexpiry_days=13
set dir [cgi_get dir "-"]
set days [cgi_get aexpiry_days 7]
if {$dir eq "-"} exit
if {![file isdirectory $dir]} {
puts "Not a directory."
exit
}
set fd [open "$dir/.autoexpire" w]
puts $fd $days
$fd close
puts "Ok."

View File

@@ -1,36 +0,0 @@
#!/mod/bin/jimsh
package require sqlite3
package require cgi
source /mod/webif/lib/setup
require ts.class system.class
httpheader
set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
set xstart [clock milliseconds]
set base [file rootname $rfile]
set shname [file tail $base]
puts "Processing $shname"
puts [exec /mod/bin/ffmpeg -y -benchmark -v 0 \
-i $rfile -f mp3 \
-vn -acodec copy "${base}.mp3"]
if {[system pkginst id3v2]} {
puts [exec /mod/bin/id3v2 \
--song "[$ts get title]" \
--comment "[$ts get synopsis]" \
--album "[$ts get channel_name]" \
--year "[clock format [$ts get start] -format {%Y}]" \
"${base}.mp3"]
}
set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
puts "Time taken: $xtime"

View File

@@ -1,112 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size
header
set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
puts "
<link href=/css/jquery.progressbar.css rel=stylesheet type=text/css />
<script type=text/javascript src=/js/jquery.progressbar.js></script>
<script type=text/javascript src=crop.js></script>
<fieldset class=cleft>
<legend>Crop recording</legend>
<table class=keyval cellpadding=5>
<tr><th>File:</th><td>$rfile</td></tr>
<tr><th>Length:</th><td>[clock format $len -format \"%T\"]</td></tr>
<tr><th>Size:</th><td>[pretty_size [$ts size]] ([$ts get definition])</td></tr>
<tr><th>Bookmarks:</th><td>[$ts get bookmarks] @ "
set flag 0
foreach b [$ts bookmarks] {
if $flag { puts -nonewline ", " }
incr flag
puts -nonewline [clock format $b -format "%T"]
}
puts "</td></tr><tr><th>File</th><td>"
puts "<div style=\"position: relative; top: -10px\">"
proc div {type left right} {
set width $($right - $left)
puts "<div class=$type style=\"left: ${left}px; width: ${width}px\">
$type</div>"
}
set keeping 0
set last 0
set start -1
foreach b [$ts bookmarks] {
if {$start < 0} {
set start $b
continue
}
set end $b
incr keeping $($end - $start)
set left $($start * 500 / $len)
set right $($end * 500 / $len)
div cut $last $($left - 1)
div keep $left $($right - 1)
set last $right
set start -1
}
if {$start > 0} {
incr keeping $($len - $start)
set left $($start * 500 / $len)
div cut $last $($left - 1)
div keep $left 500
} else {
div cut $last 500
}
set keepperc $($keeping * 100.0 / $len)
set esttime $(int($keeping * 0.025))
if {[$ts get definition] eq "HD"} { set esttime $($esttime * 4) }
puts "
</div>
</td></tr>
<tr><th>Keeping:</th><td>
[clock format $keeping -format "%T"] ([format "%.2f" $keepperc]%)
</td></tr>
<tr><th>Time:</th>
<td>Cropping will take around [clock format $esttime -format "%T"]</td></tr>
</table>
<span class=hidden id=params
file=\"[cgi_quote_url $rfile]\"
perc=\"$keepperc\"
dir=\"[cgi_quote_url $dir]\"
></span>
<div id=cropdiv style=\"padding: 1em\">
<button id=cropit>Perform crop operation</button>
</div>
<div id=progressdiv class=hidden>
Cropping: <div id=progressbar></div>
</div>
<button id=back class=hidden>Back to media list</button>
<div id=output class=pre style=\"margin-top: 10px\"></div>
</fieldset>
"

View File

@@ -1,38 +0,0 @@
var handle = 0;
function update()
{
var perc = $('#params').attr('perc');
var file = $('#params').attr('file');
$.get('progress.jim' + '?perc=' + perc + '&file=' + file,
function(data) {
if (handle)
$('#progressbar').reportprogress(data);
});
}
$(document).ready(function() {
$('#progressbar').reportprogress(0);
$('#back').button().click(function() {
window.location = '../index.jim?dir=' + $('#params').attr('dir');
});
$('#cropit').button().click(function() {
$('#cropdiv').hide('slow');
$('#progressdiv').show('slow');
handle = setInterval("update()", 1000);
$('#output').text('Please do not interrupt...')
.load('execute.jim?file=' + $('#params').attr('file'),
function() {
clearInterval(handle);
handle = 0;
$('#back').show();
$('#progressbar').reportprogress(100);
});
});
});

View File

@@ -1,55 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size system.class
httpheader
set rfile [cgi_get file]
if {[system inuse $rfile]} {
puts "This file is in use. Cannot process at the moment."
exit
}
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
set cropstart [clock milliseconds]
set base [file rootname $rfile]
set origdir "$dir/_original"
if {![file exists $origdir]} { file mkdir $origdir }
set shname [file tail $base]
puts "Processing $shname"
if {[file exists "$origdir/$shname.ts"]} {
puts "This recording already exists within _original"
puts "Cannot continue."
exit
}
puts "Moving recording to $origdir"
foreach f [glob -nocomplain "${base}.*"] {
set tail [file tail $f]
puts " $tail"
file rename $f "$origdir/$tail"
}
puts [exec /mod/bin/nicesplice \
-in "$origdir/$shname" \
-out "$dir/$shname" \
-cutBookMarks]
set newname "$shname-[clock seconds]"
puts "Renaming file group to $newname"
ts renamegroup "$dir/$shname.ts" $newname
exec /mod/bin/hmt "+setfilename=$newname" "$dir/$newname.hmt"
set croptime [expr [expr [clock milliseconds] - $cropstart] / 1000.0]
puts "Time taken: $croptime"

View File

@@ -1,67 +0,0 @@
#!/mod/bin/jimsh
package require sqlite3
package require cgi
source /mod/webif/lib/setup
require ts.class
header
set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
lassign [$ts dlnaloc "127.0.0.1"] url
puts "
<link href=/css/jquery.progressbar.css rel=stylesheet type=text/css />
<script type=text/javascript src=/js/jquery.progressbar.js></script>
<script type=text/javascript src=decrypt.js></script>
<fieldset class=cleft>
<legend>Decrypt in-place</legend>
<table class=keyval cellpadding=5>
<tr><th>File:</th><td>$rfile</td></tr>
<tr><th>Length:</th><td>[clock format $len -format "%T"]</td></tr>
<tr><th>DLNA URL</th><td>$url</td></tr>
</table>
"
if {$url eq ""} {
puts "This file has not been indexed by the media server.
Cannot decrypt."
puts "Have you enabled <i>Content Sharing</i> in the Humax menus?"
exit
}
if {![system is_listening 9000]} {
puts "The Humax media server is not running, cannot decrypt."
puts "Have you enabled <i>Content Sharing</i> in the Humax menus?"
puts "It can sometimes turn itself off so it's worth double checking."
puts "If it is on then try turning sharing off and on again."
exit
}
puts "
<span class=hidden id=params
dir=\"[cgi_quote_url $dir]\"
file=\"[cgi_quote_url $rfile]\"
></span>
<div id=decryptdiv style=\"padding: 1em\">
<button id=decryptit>Perform decryption</button>
</div>
<div id=progressdiv class=hidden>
Decrypting: <div id=progressbar></div>
</div>
<button id=back class=hidden>Back to media list</button>
<div id=output class=pre style=\"margin-top: 10px\"></div>
</fieldset>
"

View File

@@ -1,68 +0,0 @@
#!/mod/bin/jimsh
package require sqlite3
package require cgi
source /mod/webif/lib/setup
require ts.class system.class
httpheader
set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
lassign [$ts dlnaloc "127.0.0.1"] url
if {$url eq ""} {
puts "This file has not been indexed by the media server.
Cannot decrypt."
exit
}
if {[system inuse $rfile]} {
puts "This file is in use. Cannot decrypt at the moment."
exit
}
set xstart [clock milliseconds]
set base [file rootname $rfile]
set origdir "$dir/_original"
if {![file exists $origdir]} { file mkdir $origdir }
set shname [file tail $base]
puts "Processing $shname"
if {[file exists "$origdir/$shname.ts"]} {
puts "The file already exists in _original, cannot decrypt."
exit
}
exec wget -O "$rfile.decrypting" $url
puts "Moving recording to $origdir"
foreach f [glob -nocomplain "${base}.*"] {
if {[file extension $f] eq ".decrypting"} { continue }
set tail [file tail $f]
puts " $tail"
file rename $f "${origdir}/$tail"
}
file rename "$rfile.decrypting" $rfile
foreach ext {nts hmt thm} {
set sidecar "$shname.$ext"
if {[file exists "$origdir/$sidecar"]} {
puts "Copying back sidecar $ext"
file copy "$origdir/$sidecar" "$dir/$sidecar"
}
}
if {[file exists "$dir/$shname.hmt"]} {
exec /mod/bin/hmt -encrypted "$dir/$shname.hmt"
}
set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
puts "Time taken: $xtime"

View File

@@ -1,20 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class
httpheader
set tsfile [cgi_get file]
set rfile [file normalize $tsfile]
if {![file exists "$rfile.decrypting"]} {
puts "0"
} else {
set sz [file size $rfile]
set nsz [file size "$rfile.decrypting"]
puts [expr $nsz * 100 / $sz]
}

View File

@@ -1,19 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class
httpheader "application/json"
set file [cgi_get file]
if {$file == 0} exit
set ts [ts fetch $file]
puts "{"
puts "\"title\" : \"[$ts get title]\","
puts "\"synopsis\" : \"[$ts get synopsis]\","
puts "\"guidance\" : \"[$ts get guidance]\","
puts "\"genre\" : [$ts get genre]"
puts "}"

View File

@@ -1,14 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
httpheader
if [file exists /mod/bin/ffmpeg] {
set file [cgi_get file]
puts [exec /mod/webif/lib/bin/ffmpeg -i $file]
} else {
puts "Install ffmpeg package for more information..."
}

View File

@@ -1,161 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require pretty_size
httpheader
set file [cgi_get file]
set type [cgi_get type]
if {$file == 0} exit
file stat $file st
set sz [pretty_size $st(size)]
if {$type eq "ts"} {
require epg.class ts.class
set ts [ts fetch $file]
puts "
<table class=keyval>
<tr>
<th>Title</th>
<td class=va>
"
if {[file exists "[file rootname $file].thm"]} {
puts "<img class=\"bmp va\" width=70 height=39 src=\"bmp.jim?file=$file\">"
}
puts "[$ts get title]</td>
</tr><tr>
<th>Synopsis</th>
<td>[$ts get synopsis]</td>
</tr><tr>
"
if {[$ts flag "Guidance"] > 0} {
puts "
<th>Guidance</th>
<td><img class=va
src=/images/174_1_26_GuidancePolicy.png height=21>
[$ts get guidance]
</td>
</tr><tr>
"
}
puts "
<th>Definition</th>
<td>
"
if {[$ts get definition] eq "HD"} {
puts "<img class=va src=/images/172_1_00_HD.png height=21>"
} else {
puts "<img class=va src=/images/172_1_26_SD.png height=21>"
}
puts "</td>
</tr><tr>
<th>Channel</th>
<td>[epg channelicon [$ts get channel_name] 50 "vertical-align: middle"]
[$ts get channel_num] - [$ts get channel_name]</td>
</tr><tr>
<th>Start Time</th>
<td>"
puts [clock format [$ts get start] -format "%c %Z"]
puts "<font class=also>(Scheduled: [
clock format [$ts get schedstart] -format "%c %Z"])</font>"
puts "</td>
</tr><tr>
<th>End Time</th>
<td>"
puts [clock format [$ts get end] -format "%c %Z"]
puts "<font class=also>(Scheduled: [clock format \
[expr [$ts get schedstart] + [$ts get scheddur]] \
-format "%c %Z"])</font>"
puts "</td>
</tr><tr>
<th>Duration</th>
<td>[$ts duration] minute(s).
<font class=also>(Scheduled: [expr [$ts get scheddur] / 60])
</font></td>
</tr><tr>
<th>Size</th>
<td>$sz</td>
"
lassign [$ts dlnaloc] url
if {$url ne ""} {
puts "</tr><tr><th>DLNA&nbsp;URL</th>
<td><a href=\"$url\">$url</a></td>"
}
puts "
</tr><tr>
<th>Files</th>
<td>
"
set fileset [$ts fileset]
puts -nonewline "<img id=xfileset class=va src=/img/tree/plusonly.png>"
puts -nonewline "[llength $fileset] file"
if {[llength $fileset] != 1} { puts -nonewline "s" }
puts -nonewline " in set."
puts "<div id=fileset class=hidden><ul>"
foreach f $fileset {
puts "<li>[file tail $f] ([pretty_size [file size $f]])</li>"
}
puts "</ul></div>"
puts "</td>
</tr><tr>
<th>Flags</th>
<td>[$ts get flags]
"
if {[$ts get bookmarks]} {
puts " \[Bookmarks: [$ts get bookmarks]\]"
}
puts "</tr>"
puts "</table>"
puts {
<script type=text/javascript>
$('#xfileset').click(function() {
$('#fileset').slideToggle('slow', function() {
if ($('#fileset').is(':visible'))
$('#xfileset').attr('src', '/img/tree/minustop.png');
else
$('#xfileset').attr('src', '/img/tree/plusonly.png');
});
});
</script>
}
exit
}
# Otherwise, for a general file.
puts "
<table class=keyval>
<tr>
<th>File</th>
<td>$file</td>
</tr><tr>
<th>Size</th>
<td>$sz</td>
</tr><tr>
<th>Info</th>
<td class=pre id=ffmpeg>
<img src=/img/loading.gif><i>Loading...</i>
</td>
</tr>
</table>
"
set url "/browse/ffmpeg.jim?file=[cgi_quote_url $file]"
puts { <script type="text/javascript"> }
puts "var url = \"$url\";"
puts {
$('#ffmpeg').load(url);
</script>
}

View File

@@ -1,391 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size system.class settings.class escape browse.class
header
set nicesplice [system pkginst nicesplice]
set flatten [system pkginst flatten]
set ignore {.nts .thm .hmi}
set include {.ts .avi .mpg .mpeg .wmv .mkv .mp3 .mp4 .mov .hmt}
if {![dict exists $env REQUEST_URI]} {
set env(REQUEST_URI) ""
cgi_input
set _cgi(dir) "/media/My Video/"
}
if {![dict exists $env QUERY_STRING]} { set env(QUERY_STRING) "root" }
set order [cgi_get order -]
if {$order eq "-"} {
set order [[settings new] sortorder]
} else {
[settings new] sortorder $order
}
set model [system model]
set dustbin [system dustbin 1]
proc icon {img {hover ""} {extra ""} {class "va"}} {
puts -nonewline "<img src=$img class=\"$class\" height=21 $extra"
if {$hover ne ""} {
puts -nonewline " alt=\"$hover\" title=\"$hover\""
}
puts ">"
}
proc directory {file bfile tbfile} {
puts "<div class=va>"
set img "/images/711_1_09_Media_Folder.png"
if {$bfile eq $::dustbin} { set img "/img/Dustbin_Folder.png" }
puts "<img border=0 class=va id=\"img$tbfile\" src=$img>"
puts "<input class=\"fs fsdir\" type=checkbox>"
puts "<a class=dbf
href=\"$::env(REQUEST_URI)?dir=[cgi_quote_url $file]\"
file=\"[cgi_quote_url $file]\">"
puts "$bfile</a><span class=filesize id=\"$tbfile\">
</span>"
lassign [{dir iconset} $file] icons attrs
puts "<span class=iconset>"
puts [join $icons ""]
puts "</span>"
if {[string first $::mroot $file] >= 0} {
set class dopt
} else {
set class doopt
}
puts -nonewline "
<a href=#>
<img class=\"$class va\" border=0 width=45 "
puts -nonewline [join $attrs " "]
puts "
src=/images/181_1_00_Help5_OPT_Plus.png>
</a>
"
puts "
<div class=\"results blood\" style=\"margin: 0 0 0 5em\"></div>
"
puts "</div>"
}
proc entry {file} {{i 0}} {
set bfile [file tail $file]
regsub -all " +" $bfile "" tbfile
if {[string index $bfile 0] == "\025"} {
set bfile [string range $bfile 1 end]
}
if [file isdirectory "$file"] {
directory $file $bfile $tbfile
return
}
set ext [string tolower [file extension $file]]
if {$ext in $::ignore || $ext ni $::include} { return }
file stat $file st
set rsz $st(size)
set sz [pretty_size $rsz]
set base [file rootname $file]
set thmok 0
if {$ext eq ".ts" && [file exists "${base}.nts"]} {
set type ts
set ts [ts fetch $file 1]
set img Video_TS
set omenu opt
if {[file exists "${base}.thm"]} { set thmok 1 }
} elseif {$ext eq ".hmt"} {
if {[file exists "${base}.ts"]} { continue }
# Sole hmt file indicates failure to track.
set type bad
set ts 0
set img Video_Failed
set omenu oopt
} else {
set type gen
set ts 0
set img Video_Other
set omenu oopt
}
set new 0
if {$type eq "ts"} {
if {[$ts flag "New"] > 0} { set new 1 }
} elseif {$type eq "gen"} {
if {![file exists "${base}.hmi"]} { set new 1 }
}
if {$new} { append img _New }
set fscl "fs"
set synopsis ""
if {$type eq "ts"} {
set fscl "fs fsts"
set synopsis [cgi_quote_html [$ts get synopsis]]
}
puts "
<div class=\"va bf\" id=[incr i]>
<img class=va border=0 src=/img/$img.png>
<input class=\"$fscl\" type=checkbox>
<a class=bf title=\"$synopsis\"
file=\"[cgi_quote_url $file]\" type=$type href=#>
$bfile
</a>
"
# Size
puts "<span class=filesize> ($sz) </span>"
# Icons
set locked 0
set encd 0
set odencd 1
set def unknown
set bx 0
set dlna 0
set shrunk 0
if {$type eq "ts"} {
set genre [$ts get genre]
set glist [ts genrelist]
if {[dict exists $glist $genre]} {
set ret $glist($genre)
} else {
set ret $glist(0)
}
lassign $ret txt img
if {$img eq "Unclassified"} {
icon "/images/173_3_26_G3_$img.png" $txt
} else {
icon "/images/173_3_00_G3_$img.png" $txt
}
# HD / SD
if {[$ts get definition] eq "HD"} {
set def HD
set img "172_1_00_HD"
} else {
set def SD
set img "172_1_26_SD"
}
icon "/images/$img.png"
# Locked
if {[$ts flag "Locked"] > 0} {
set locked 1
icon "/images/178_1_00_Icon_Lock.png" "Locked"
}
# Encrypted
if {[$ts flag "Encrypted"] > 0} {
set encd 1
icon "/images/749_1_26_Video_Encryption.png" ""
}
if {![$ts flag "ODEncrypted"]} {
set odencd 0
icon "/img/Decrypted.png" "Decrypted"
}
# Guidance
if {[$ts flag "Guidance"] > 0} {
icon "/images/174_1_26_GuidancePolicy.png"
}
# Indexed
if {$::model eq "HDR" && [llength [$ts dlnaloc]]} {
icon "/img/dlna.png" "Indexed by DLNA Server"
set dlna 1
}
# Shrunk
if {[$ts flag Shrunk]} {
icon "/img/compress.png" "Shrunk"
set shrunk 1
}
set bx [$ts get bookmarks]
}
# Opt+ button
puts "
<a href=#>
<img class=\"$omenu va\" border=0 width=45 type=$type did=$i
locked=$locked encd=$encd def=$def new=$new bx=$bx
shrunk=$shrunk rsize=$rsz
odencd=$odencd dlna=$dlna thmok=$thmok
src=/images/181_1_00_Help5_OPT_Plus.png>
</a>
<div class=\"results blood\" style=\"margin: 0 0 0 5em\"></div>
"
puts "</div>"
}
set mroot [system mediaroot]
set dir [cgi_get dir $mroot]
######################################################################
# Render web page
puts {
<link href=/css/jquery.contextMenu.css rel=stylesheet type=text/css />
<script type=text/javascript src=/js/jquery.contextMenu.js></script>
<link href=/css/jquery.bar.css rel=stylesheet type=text/css />
<script type=text/javascript src=/js/jquery.bar.js></script>
<script type=text/javascript src=/js/enadis.js></script>
<script type=text/javascript src=script.js></script>
<link type=text/css rel=stylesheet href=style.css />
}
source assets.jim
puts "
<span style=\"display:none\" id=dir>$dir</span>
<span style=\"display:none\" id=mediaroot>$mroot</span>
<fieldset class=cleft style=\"margin: 0 1em 1em 1em\">
<legend style=\"font-size: 1.5em; padding: 0 0.5em 0.5em 0.5em;\">
"
# Breadcrumb path
set stub ""
foreach part [split $dir /] {
if {$stub eq "/"} { set name $part } else { set name "/$part" }
append stub $name
puts "<a href=$env(REQUEST_URI)?dir=[cgi_quote_url $stub]>$name</a>
}
puts "<span class=filesize id=dirsize></span>"
puts "</legend>"
# Parent directory
set parent [join [lrange [split $dir /] 0 end-1] /]
if {$parent ne ""} {
puts "
<div class=va>
<a href=$env(REQUEST_URI)?dir=[cgi_quote_url $parent]>
<img border=0 src=/images/711_3_09_Media_Folder_UP.png class=va>
\[parent directory\]</a>
</div>
"
}
proc s_time {a b} {
global dir
set a "$dir/$a"
set b "$dir/$b"
set ad [file isdirectory $a]
set bd [file isdirectory $b]
if {$ad && !$bd} { return -1 }
if {$bd && !$ad} { return 1 }
if {$ad && $bd} {
if {$a < $b} { return -1 }
if {$a > $b} { return 1 }
return 0
}
if {[catch {file stat $a l}]} { return 0}
set at $l(ctime)
if {[catch {file stat $b l}]} { return 0}
set bt $l(ctime)
if {$at < $bt} { return -1 }
if {$at > $bt} { return 1 }
return 0
}
set files [readdir -nocomplain $dir]
switch $order {
1 { set files [lsort -command s_time $files] }
default { set files [lsort -nocase $files] }
}
foreach file $files { entry "$dir/$file" }
puts "<a href=# id=selectall>Select all</a> | <a href=# id=deselectall>none</a>"
# Sort icons
puts "<div id=sortdiv>"
set sortlist {{0 sort_name name} {1 sort_date date}}
foreach sl $sortlist {
lassign $sl index img descr
if {$index} { puts " | " }
set tag "Currently sorting"
if {$order != $index} {
puts "
<a href=$env(REQUEST_URI)?$env(QUERY_STRING)&order=$index>"
set tag "Sort"
}
puts "<img class=va border=0 src=/img/$img.gif> $tag by $descr"
if {$order != $index} {
puts "</a>"
}
}
puts "</div>"
puts "</fieldset>"
puts {
<fieldset class=left style="margin: 0 1em 1em 1em">
<legend style="font-size: 1.5em; padding: 0 0.5em 0.5em 0.5em; color: #1e5bbd;">
File Clipboard
</legend>
<div id=clipboard>
<img src=/img/loading.gif> <i>Loading...</i>
</div>
</fieldset>
}
puts "<div class=brow>"
puts {
<button id=copy>Copy</button>
<button id=cut>Cut</button>
<button id=delete>Delete</button>
<button id=newdir>New Folder</button>
<div id=deletewait class=blood style="display: none">
<img src=/img/loading.gif>Deleting may take some time, please be patient...
</div>
}
# Join
if $nicesplice {
puts { <button id=join>Join</button> }
}
puts "</div><div class=brow style=\"margin-top: 3px\">"
# De-duplicate
puts {
<button id=dedup>De-duplicate/tidy this folder</button>
}
# Streamer file
if {[file exists /mnt/hd3/Streamer_down_file]} {
puts {
<button id=save_stream file=/mnt/hd3/Streamer_down_file>
Save last streamed content (e.g. iPlayer/YouTube)
<div id=streamstatus></div>
</button>
}
}
puts "</div>"
footer

View File

@@ -1,48 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class
httpheader
set file [cgi_get renamefile "-"]
if {$file eq "-"} exit
set newfile [string trim [cgi_get rename]]
set dir [file dirname $file]
if {[file isdirectory $file]} {
#puts "Directory."
if {$newfile ne ""} {
set newfile "${dir}/${newfile}"
file rename $file $newfile
}
} elseif {[set ts [ts fetch $file]] != 0} {
#puts "TS file."
foreach attr {title synopsis guidance genre} {
if {[catch {
set new [string trim [cgi_get "rename_$attr"]]
set old [$ts get $attr]
if {$new ne $old} {
if {$attr eq "guidance" ||
[string length $new] > 0} {
$ts set$attr $new
}
}
} msg]} {
puts "$attr: $msg"
}
}
if {"$dir/$newfile.ts" ne "$file"} { ts renamegroup $file $newfile }
} else {
#puts "Normal file."
if {$newfile ne ""} {
set newfile "$dir/$newfile[file extension $file]"
puts "Rename ($file) -> ($newfile)"
file rename $file $newfile
}
}

View File

@@ -1,45 +0,0 @@
#!/mod/bin/jimsh
package require cgi
package require pack
source /mod/webif/lib/setup
require ts.class hexdump
httpheader
set dir [cgi_get dir]
if {![file isdirectory $dir]} { exit }
if {![file exists "$dir/.series"]} { exit }
set tot 0
set watched 0
foreach file [readdir -nocomplain $dir] {
if {![string match {*.ts} $file]} { continue }
#puts "FILE: $file"
incr tot
if {[set ts [ts fetch "$dir/$file"]] != 0} {
if {![$ts flag "New"]} { incr watched }
}
}
set fd [open "$dir/.series"]
set bytes [read $fd]
close $fd
set recs [unpack $bytes -uintle 0 32]
set played [unpack $bytes -uintle 32 32]
puts "Current: $played/$recs"
#hexdump $bytes
puts "Calculated: $watched/$tot"
pack bytes $tot -intle 32 0
pack bytes $watched -intle 32 32
#hexdump $bytes
set fd [open "$dir/.series" "w"]
puts -nonewline $fd $bytes
close $fd

View File

@@ -1,978 +0,0 @@
var dir;
function disableall()
{
$('button,a,input').disable();
}
function pastedialogue()
{
$('#pwdialogue').dialog({
title: "Pasting from clipboard",
modal: true, autoOpen: true,
height: 'auto', width: 'auto',
show: 'scale', hide: 'fade',
draggable: false, resizable: false,
closeOnEscape: false,
open: function() {
$('.ui-dialog-titlebar-close').hide();
}
});
}
function reloadclipboard()
{
$('#clipboard')
.empty()
.html('<img src=/img/loading.gif> <i>Loading...</i>')
.load('/browse/clipboard.jim', function() {
// Start Clipboard post-load actions
if ($('#clipclear').length)
{
$('#paste').enable();
$('#doptmenu,#dooptmenu').enableContextMenuItems('#paste');
}
else
{
$('#paste').disable();
$('#doptmenu,#dooptmenu').disableContextMenuItems('#paste');
}
$('#clipclear').button().click(function() {
$.get('/browse/clipboard.jim?act=clear', function() {
reloadclipboard();
});
});
$('a.clipdel').click(function() {
$.get('/browse/clipboard.jim?act=remove&path=' +
$(this).attr('path'), function() {
reloadclipboard();
});
});
$('#paste').button()
.click(function() {
disableall();
pastedialogue();
$('#pwfeedback').load(
'/browse/clipboard.jim?act=paste&dir='
+ encodeURIComponent(dir), function() {
$('#pwdialogue').dialog('close');
window.location.reload(true);
});
});
// End Clipboard post-load actions
});
}
function epginfo_callback(data, status, xhr)
{
//console.log(status);
//console.dir(data);
if (status != 'success')
return;
$('#rename_title').val(data.title);
$('#rename_synopsis').val(data.synopsis);
$('#rename_guidance').val(data.guidance);
$('#rename_genre').val(data.genre);
$('tr.tstype').show('slow');
}
function insert_folder_size(folder, size)
{
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s) = (%s)", folder, size);
if (size.search(/\d$/) == -1)
size += 'iB';
else
size += ' bytes';
if (folder == "")
$('#dirsize').text(' (' + size + ')');
else
$('#' + folder).text(' (' + size + ')');
}
function folder_size_callback(data, status, xhr)
{
//console.log("Status: %s", status);
//console.dir(data);
$.each(data, insert_folder_size);
}
function set_folder_new(folder, cnt)
{
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s) = (%s)", folder, cnt);
$('#img' + folder).attr('src', '/img/Folder_New.png');
}
function new_folder_callback(data, status, xhr)
{
//console.log("Status: %s", status);
//console.dir(data);
$.each(data, set_folder_new);
}
//function insert_shrunk(file, perc)
//{
// if (perc == 0)
// {
// file = file.replace(/[ ]/g, '');
// file = file.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
// //console.log("File: (%s) = (%s)", file, perc);
// $('#sp_' + file).show();
// }
//}
//function shrunk_callback(data, status, xhr)
//{
// //console.log("Status: %s", status);
// //console.dir(data);
// $.each(data, insert_shrunk);
//}
function delete_callback(file, dir, id)
{
var el = 'div.bf#' + id;
var results = el + ' .results';
$(results)
.html('<img src=/img/loading.gif>Deleting, please wait...')
.slideDown('slow')
.load('/browse/delete.jim', {
'dir': dir,
'files': [decodeURIComponent(file)]
}, function() {
$(el).delay(3000).slideUp(300, function() {
$(el).remove();
});
});
}
function lock_callback(file, type, id)
{
var url = '/browse/lock.jim?file=' + file;
$.get(url, function() { window.location.reload(true); });
}
function enc_callback(file, type, id)
{
var url = '/browse/enc.jim?file=' + file;
$.get(url, function() { window.location.reload(true); });
}
function new_callback(file, type, id)
{
var url = '/browse/new.jim?file=' + file;
$.get(url, function() { window.location.reload(true); });
}
function thumbnail_callback(file, type, id)
{
var el = 'div.bf#' + id;
var results = el + ' .results';
$(results)
.html('<img src=/img/loading.gif>Generating thumbnail, ' +
'please wait...')
.slideDown('slow')
.load('/browse/thumbnail.jim?file=' + file)
.delay(3000)
.slideUp('slow');
$('div.bf#' + id + ' img.opt').attr('thmok', 1);
}
function rename_submit()
{
var s = $('#renameform_form').serialize();
$.post('/browse/rename.jim', s,
function() { window.location.reload(true); });
}
function drename_submit()
{
var s = $('#drenameform_form').serialize();
$.get('/browse/rename.jim?' + s,
function() { window.location.reload(true); });
}
function aexpiry_submit()
{
$('#aexpiry_working').slideDown('slow');
var s = $('#aexpiry_form').serialize();
$.get('/browse/aexpiry.jim?' + s,
function() { window.location.reload(true); });
}
function newdir_submit()
{
var s = $('#newdirform_form').serialize();
$.get('/browse/mknewdir.jim?' + s,
function() { window.location.reload(true); });
}
function savestream_submit()
{
var s = $('#savestream_form').serialize();
var sf = $('#save_stream').attr('file');
$('#savestream_spin').show();
$.get('/browse/savestream.jim?sfile=' +
encodeURIComponent(sf) + '&' + s,
function() {
window.location.reload(true);
});
}
var $confirm; // Populated after DOM is loaded.
function confirm_action(action, callback, file, type, id)
{
var bfile = file.replace(/.*\/|\.[^.]*$/g, '');
$confirm.dialog('option', 'buttons', {
'Yes': function() { $(this).dialog('close');
callback(file, type, id); },
'No': function() {$(this).dialog('close');}
});
$('#confirm').empty().html(
'Are you sure you wish to ' + action + '<br>' +
'<i>' + decodeURIComponent(bfile) + '</i> ?'
);
$confirm.dialog('open');
}
function preparemenu(el, menu)
{
if (el.attr('type') == 'ts')
{
// if (el.attr('def') == 'HD')
// {
// $(menu).enableContextMenuItems('#enc');
// if (el.attr('encd') == 1)
// $(menu).changeContextMenuItem('#enc',
// 'Remove Enc');
// else
// $(menu).changeContextMenuItem('#enc',
// 'Set Enc');
// }
if (el.attr('bx') > 0)
$(menu).enableContextMenuItems('#crop');
else
$(menu).disableContextMenuItems('#crop');
if (el.attr('odencd') == 0)
$(menu).enableContextMenuItems('#thm');
else
$(menu).disableContextMenuItems('#thm');
if (el.attr('thmok') == 1)
$(menu).enableContextMenuItems('#vthm');
else
$(menu).disableContextMenuItems('#vthm');
$(menu).enableContextMenuItems('#strip');
if (el.attr('rsize') > 4294967296)
$(menu).enableContextMenuItems('#chunk');
else
$(menu).disableContextMenuItems('#chunk');
$(menu).enableContextMenuItems('#new');
if (el.attr('new') == 1)
$(menu).changeContextMenuItem('#new', 'Mark watched');
else
$(menu).changeContextMenuItem('#new', 'Mark new');
$(menu).enableContextMenuItems('#lock');
if (el.attr('locked') == 1)
{
$(menu).changeContextMenuItem('#lock', 'Unlock');
$(menu).disableContextMenuItems('#delete');
}
else
{
$(menu).changeContextMenuItem('#lock', 'Lock');
$(menu).enableContextMenuItems('#delete');
}
if (el.attr('odencd') == 1 && el.attr('dlna') == 1 &&
el.attr('encd') == 0)
$(menu).enableContextMenuItems('#decrypt');
else
$(menu).disableContextMenuItems('#decrypt');
if (el.attr('odencd') == 1)
{
$(menu).disableContextMenuItems('#audio');
$(menu).disableContextMenuItems('#mpg');
}
else
{
$(menu).enableContextMenuItems('#audio');
if (el.attr('def') == 'HD')
$(menu).disableContextMenuItems('#mpg');
else
$(menu).enableContextMenuItems('#mpg');
}
}
else
{
$(menu).enableContextMenuItems('#delete');
$(menu).disableContextMenuItems('#lock');
//$(menu).disableContextMenuItems('#enc');
$(menu).disableContextMenuItems('#new');
}
}
function fixdmenu(el, menu, flag, tag, descr, recurse)
{
var a = el.attr(flag);
var b = el.attr(flag + 'r');
if (a == undefined) a = 0;
if (b == undefined) b = 0;
if (a > 0)
$(menu).changeContextMenuItem(tag, 'Disable ' + descr);
else
$(menu).changeContextMenuItem(tag, 'Enable ' + descr);
if (recurse)
{
if (b > 0)
{
$(menu).changeContextMenuItem(tag + 'r',
'Disable Recursive ' + descr);
$(menu).disableContextMenuItems(tag);
}
else
{
$(menu).changeContextMenuItem(tag + 'r',
'Enable Recursive ' + descr);
$(menu).enableContextMenuItems(tag);
}
}
}
function preparedmenu(el, menu)
{
if (el.attr('noflat') != undefined)
{
if (el.attr('noflat') > 0)
$(menu).changeContextMenuItem('#flat', 'Allow Flatten');
else
$(menu).changeContextMenuItem('#flat',
'Prevent Flatten');
}
fixdmenu(el, menu, 'autoshrink', '#shrink', 'Auto-shrink', 1);
fixdmenu(el, menu, 'autodedup', '#dedup', 'Auto-dedup', 0);
fixdmenu(el, menu, 'autodecrypt', '#decrypt', 'Auto-decrypt', 1);
fixdmenu(el, menu, 'autompg', '#mpg', 'Auto-mpg', 0);
fixdmenu(el, menu, 'automp3', '#mp3', 'Auto-audio', 0);
fixdmenu(el, menu, 'autoexpire', '#expire', 'Auto-expire', 0);
}
$(document).ready(function() {
dir = $('#dir').text();
var menuclick = function(action, el, pos)
{
var file = $(el).parent().prevAll('a.bf').last().attr('file');
var bfile = file.replace(/.*\/|\.[^.]*$/g, '');
bfile = bfile.replace(/[\x00-\x1f]+/g, '');
var type = $(el).attr('type');
var id = $(el).attr('did');
switch (action)
{
case 'delete':
confirm_action('delete', delete_callback, file,
dir, id);
break;
case 'copy':
if (!confirm('Are you sure? Copying recordings takes a long time!'))
break;
// Fallthrough
case 'cut':
$.get('/browse/clipboard.jim?act=add&mode=' + action +
'&path=' + file, function() {
reloadclipboard();
});
break;
case 'lock':
confirm_action('change the lock on', lock_callback,
file, type, id);
break;
// case 'enc':
// confirm_action('change the ENC flag on', enc_callback,
// file, type, id);
// break;
case 'new':
confirm_action('change the New flag on', new_callback,
file, type, id);
break;
case 'rename':
$('#rename').val(decodeURIComponent(bfile));
$('#renamefile').val(decodeURIComponent(file));
$('#rename_title').val('');
$('#rename_synopsis').val('');
$('#rename_guidance').val('');
$('tr.tstype').css('display', 'none');
if (type == 'ts')
{
$.getJSON('/browse/epgtitle.jim?file=' +
file, epginfo_callback);
}
$('#renameform').dialog('open');
break;
case 'thm':
window.location.href = '/browse/thumbnail/index.jim?file=' +
file;
break;
case 'vthm':
// window.open('/browse/bmpw.jim?file=' + file, 'hxwebifbmp',
// 'height=156,width=280,toolbar=no,' +
// 'scrollbars=no,menubar=no,location=no,titlebar=no');
$('#thmbmp').attr('src', 'bmp.jim?file=' + file);
$('#bmpdialogue').dialog('open');
break;
case 'download':
window.location.href = '/browse/download.jim?file=' +
file + '&base=' +
encodeURIComponent(document.URL.match(/:\/\/(.[^/]+)/)[1]);
break;
case 'crop':
window.location.href = '/browse/crop/crop.jim?file=' +
file;
break;
case 'strip':
window.location.href = '/browse/strip/strip.jim?file=' +
file;
break;
case 'chunk':
window.location.href = '/browse/chunk/chunk.jim?file=' +
file;
break;
case 'decrypt':
window.location.href =
'/browse/decrypt/decrypt.jim?file=' + file;
break;
case 'audio':
window.location.href = '/browse/audio/audio.jim?file=' +
file;
break;
case 'mpg':
window.location.href = '/browse/mpg/mpg.jim?file=' +
file;
break;
default:
alert('Unhandled action: ' + action);
break;
}
};
function flagdir(file, flag, iconset, output, options)
{
var url = '/browse/flagdir.jim?dir=' + file +
'&flag=' + flag;
$(output).load(url, function() {
$(iconset)
.empty()
.html('<img src=/img/loading.gif> Updating...')
.load('/browse/iconset.jim?file=' + file);
if ($(options).attr(flag) == '1')
$(options).attr(flag, 0);
else
$(options).attr(flag, 1);
}).delay(3000).slideUp();
}
var dmenuclick = function(action, el, pos)
{
var direl = $(el).parent().parent();
var file = $(el).parent().prevAll('a.dbf').last().attr('file');
var iconset = $(el).parent().prevAll('span.iconset').last();
var bfile = file.replace(/.*\//g, '');
bfile = bfile.replace(/[\x00-\x1f]+/g, '');
var results = $(el).parent().next('div.results');
switch (action)
{
case 'paste':
pastedialogue();
$('#pwfeedback').load(
'/browse/clipboard.jim?act=paste&dir=' +
file, function() {
$('#pwdialogue').dialog('close');
reloadclipboard();
});
break;
case 'delete':
if (confirm('Are you sure you wish to delete "' +
decodeURIComponent(file) +
'" and all files within it?'))
{
$(results)
.html('<img src=/img/loading.gif>' +
'Deleting, please wait...')
.slideDown('slow')
.load('/browse/delete.jim', {
'dir': dir,
'files': [decodeURIComponent(file)]
}, function() {
$(direl).delay(3000).slideUp(300, function() {
$(direl).remove();
});
});
}
break;
case 'copy':
if (!confirm('Are you sure? Copying directories can take a very long time!'))
break;
// Fallthrough
case 'cut':
$.get('/browse/clipboard.jim?act=add&mode=' + action +
'&path=' + file, function() {
reloadclipboard();
});
break;
case 'rename':
$('#drename').val(decodeURIComponent(bfile));
$('#drenameorig').val(decodeURIComponent(file));
$('#drenameform').dialog('open');
break;
case 'expire':
if ($(el).attr('autoexpire') == 1)
flagdir(file, 'autoexpire', iconset, results, el);
else
{
$('#aexpiry_ldir').val(decodeURIComponent(file));
if ($(el).attr('autoexpiredays') > 0)
$('#aexpiry_days')
.val($(el).attr('autoexpiredays'));
else
$('#aexpiry_days').val(7);
$('#aexpiry_working').hide('fast');
$('#aexpiry').dialog('open');
}
break;
case 'flat':
flagdir(file, 'noflatten', iconset, results, el);
break;
case 'dedup':
flagdir(file, 'autodedup', iconset, results, el);
break;
case 'mpg':
flagdir(file, 'autompg', iconset, results, el);
break;
case 'mp3':
flagdir(file, 'automp3', iconset, results, el);
break;
case 'shrink':
flagdir(file, 'autoshrink', iconset, results, el);
break;
case 'shrinkr':
flagdir(file, 'autoshrinkr', iconset, results, el);
break;
case 'decrypt':
flagdir(file, 'autodecrypt', iconset, results, el);
break;
case 'decryptr':
flagdir(file, 'autodecryptr', iconset, results, el);
break;
case 'resetnew':
var url = '/browse/resetnew.jim?dir=' + file;
$.get(url, function() { window.location.reload(true); });
break;
default:
alert('Unhandled action: ' + action);
break;
}
};
// Bind context menu to opt+ image
$('img.opt').contextMenu(
{
menu: 'optmenu',
leftButton: true,
beforeShow: preparemenu
},
menuclick
);
// Bind context menu to opt+ image
$('img.oopt').contextMenu(
{
menu: 'ooptmenu',
leftButton: true,
beforeShow: preparemenu
},
menuclick
);
$('img.dopt').contextMenu(
{
menu: 'doptmenu',
leftButton: true,
beforeShow: preparedmenu
},
dmenuclick
);
$('img.doopt').contextMenu(
{
menu: 'dooptmenu',
leftButton: true,
beforeShow: preparedmenu
},
dmenuclick
);
// Disable items which are not yet implemented.
$('#optmenu').disableContextMenuItems('#title');
var $buttons = {
"Close" : function() {$(this).dialog('close');}
};
var $buttonsp = $.extend(
{"Play" : function() { doplay(); }},
$buttons);
// Create reusable dialogue.
var $dialog = $('#dialogue').dialog({
title: "Media Details",
modal: false, autoOpen: false,
height: 600, width: 700,
show: 'scale', hide: 'fade',
draggable: true, resizable: true,
buttons: $buttons,
close: function(e,u) { $('#dialogue').empty().html(
'<img src="/img/loading.gif" alt="loading">'); }
});
function doplay()
{
var file = $dialog.attr('file');
var type = $dialog.attr('type');
disableall();
window.location = '/play/play.jim?' +
'dir=' + encodeURIComponent(dir) +
'&file=' + file;
}
// Bind dialogue open to filenames.
$('a.bf').click(function(e) {
e.preventDefault();
var file = $(this).attr('file');
var type = $(this).attr('type');
var opt = $(this).nextAll('a').find('img.opt');
var url = '/browse/file.jim?file=' + file
+ '&type=' + type;
$dialog.load(url);
$dialog.attr('file', file);
$dialog.attr('type', type);
if (type == 'ts' &&
(opt.attr('odencd') == 0 || opt.attr('dlna') == 1))
$dialog.dialog("option", "buttons", $buttonsp);
else
$dialog.dialog("option", "buttons", $buttons);
$dialog.dialog('open');
});
$('#renameform').dialog({
autoOpen: false,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Update": rename_submit,
"Close": function() {
$(this).dialog('close');
}
},
close: function() { $('#rename').val(''); }
});
$('#drenameform').dialog({
autoOpen: false,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Update": drename_submit,
"Close": function() {
$(this).dialog('close');
}
},
close: function() { $('#drename').val(''); }
});
$('#aexpiry').dialog({
autoOpen: false,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Update": aexpiry_submit,
"Close": function() {
$(this).dialog('close');
}
},
close: function() { $('#aexpiry_days').val('0'); }
});
$('#savestreamform').dialog({
autoOpen: false,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Save": savestream_submit,
"Cancel": function() {
$(this).dialog('close');
}
},
close: function() { $('#savestream_name').val(''); }
});
$('#bmpdialogue').dialog({
autoOpen: false,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Close": function() {
$(this).dialog('close');
}
},
close: function() { $('#thmbmp').attr('src', 'about:blank'); }
});
// Create re-usable confirmation dialogue.
$confirm = $('#confirm').dialog({
modal: true, autoOpen: false,
height: 160, width: 500,
show: 'fade', hide: 'fade',
draggable: false, resizable: false
});
// Load folder sizes
$.getJSON('/browse/sizes.jim?dir=' + encodeURIComponent(dir),
folder_size_callback);
// Flag shrunk recordings
// $.getJSON('/browse/shrunk.jim?dir=' + encodeURIComponent(dir),
// shrunk_callback);
// Flag folders with unwatched items
$.getJSON('/browse/newdir.jim?dir=' + encodeURIComponent(dir),
new_folder_callback);
// Load clipboard
reloadclipboard();
// Uncheck everything
$('input.fs:checked').attr('checked', false);
// Buttons
$('#dedup').button().click(function() {
window.location = '/dedup/dedup.jim?dir='
+ encodeURIComponent(dir);
});
$('#save_stream').button().click(function() {
$('#savestream_spin').hide();
$('#savestreamform').dialog('open');
$('#savestream_detail').load(
'/browse/ffmpeg.jim?file=' +
encodeURIComponent($('#save_stream').attr('file')));
});
$('#selectall').click(function(e) {
e.preventDefault();
$('input.fs').attr('checked', true).trigger('change');
});
$('#deselectall').click(function(e) {
e.preventDefault();
$('input.fs:checked').attr('checked', false).trigger('change');
});
$('#join').button().disable()
.click(function() {
var files = new Array();
var els = $('input.fsts:checked + a').each(function() {
files.push($(this).attr('file'));
});
//console.log("%o", files);
window.location.href = '/browse/join/join.jim?files=' +
files.join();
});
$('#delete').button().disable()
.click(function() {
var files = new Array();
var els = $('input.fs:checked + a').each(function() {
files.push(decodeURIComponent($(this).attr('file')));
});
//console.log("%o", files);
var str = 'Are you sure you want to delete ' + files.length +
' file';
if (files.length != 1) str += 's';
str += '?';
if (confirm(str))
{
disableall();
$('#deletewait').slideDown('slow');
$('#pwdialogue').dialog({
title: "Deleting",
modal: true, autoOpen: true,
height: 'auto', width: 'auto',
show: 'scale', hide: 'fade',
draggable: false, resizable: false,
closeOnEscape: false,
open: function() {
$('.ui-dialog-titlebar-close').hide();
}
});
$('#pwfeedback').load(
'/browse/delete.jim', {
'dir': dir,
'files': files
}, function() {
$('#pwdialogue').dialog('close');
window.location.reload(true);
});
}
});
$('#copy,#cut').button().disable()
.click(function() {
var files = new Array();
var els = $('input.fs:checked + a').each(function() {
files.push(decodeURIComponent($(this).attr('file')));
});
//console.log("%o", files);
var action = $(this).attr('id');
if (action == 'copy' && !confirm('Are you sure? ' +
'Copying recordings can take a very long time!'))
return;
$.post('/browse/clipboard.jim', {
'act': 'add',
'dir': dir,
'mode': action,
'path': files
}, function() {
reloadclipboard();
$('input.fs:checked').attr('checked', false);
});
});
$('#newdir').button().click(function() {
$('#newdirform').dialog({
autoOpen: true,
height: 'auto', width: 'auto',
modal: true,
buttons: {
"Create": newdir_submit,
"Cancel": function() {
$(this).dialog('close');
}
},
close: function() { $('#newdirname').val(''); }
});
});
$('input.fs').change(function() {
var num = $('input.fs:checked').size();
if (num > 0)
$('#delete,#cut,#copy').enable();
else
$('#delete,#cut,#copy').disable();
var num = $('input.fsts:checked').size();
if (num > 1)
$('#join').enable();
else
$('#join').disable();
});
var streamsize = 0;
function checkstream()
{
$.get('/browse/streamsize.jim', function(size) {
//console.log('Stream size: %o', size);
var mb = size / (1024 * 1024);
mb = mb|0;
if (streamsize && size > streamsize)
{
rate = (size - streamsize) * 8.0 /
(3 * 1048576);
$('#streamstatus').text(mb +
' MiB (growing @' + rate.toFixed(2) +
' Mib/s)');
}
else
$('#streamstatus').text(mb + ' MiB');
streamsize = size;
});
}
if ($('#streamstatus').length)
setInterval(checkstream, 3000);
});

View File

@@ -1,17 +0,0 @@
div.brow
{
float: left;
clear: left;
}
div.cliplist span
{
display: block;
}
#clipclear
{
margin-top: 1em;
}

View File

@@ -1,75 +0,0 @@
.iPhoneCheckContainer {
position: relative;
height: 27px;
cursor: pointer;
overflow: hidden; }
.iPhoneCheckContainer input {
position: absolute;
top: 5px;
left: 30px;
opacity: 0;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); }
.iPhoneCheckContainer label {
white-space: nowrap;
font-size: 17px;
line-height: 17px;
font-weight: bold;
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
text-transform: uppercase;
cursor: pointer;
display: block;
height: 27px;
position: absolute;
width: auto;
top: 0;
padding-top: 5px;
overflow: hidden; }
.iPhoneCheckContainer, .iPhoneCheckContainer label {
user-select: none;
-moz-user-select: none;
-khtml-user-select: none; }
.iPhoneCheckDisabled {
opacity: 0.5;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); }
label.iPhoneCheckLabelOn {
color: white;
background: url('/img/iphone-style-checkboxes/on.png?1282083753') no-repeat;
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
left: 0;
padding-top: 5px; }
label.iPhoneCheckLabelOn span {
padding-left: 8px; }
label.iPhoneCheckLabelOff {
color: #8b8b8b;
background: url('/img/iphone-style-checkboxes/off.png?1282083753') no-repeat right 0;
text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6);
text-align: right;
right: 0; }
label.iPhoneCheckLabelOff span {
padding-right: 8px; }
.iPhoneCheckHandle {
display: block;
height: 27px;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
width: 0;
background: url('/img/iphone-style-checkboxes/slider_left.png?1282083753') no-repeat;
padding-left: 3px; }
.iPhoneCheckHandleRight {
height: 100%;
width: 100%;
padding-right: 3px;
background: url('/img/iphone-style-checkboxes/slider_right.png?1282083753') no-repeat right 0; }
.iPhoneCheckHandleCenter {
height: 100%;
width: 100%;
background: url('/img/iphone-style-checkboxes/slider_center.png?1282083753'); }

View File

@@ -1,77 +0,0 @@
/* Generic context menu styles */
.contextMenu {
position: absolute;
width: 150px;
z-index: 99999;
border: solid 1px #CCC;
background: #EEE;
padding: 0px;
margin: 0px;
display: none;
}
.contextMenu LI {
list-style: none;
padding: 0px;
margin: 0px;
}
.contextMenu A {
color: #333;
text-decoration: none;
display: block;
line-height: 20px;
height: 20px;
background-position: 6px center;
background-repeat: no-repeat;
outline: none;
padding: 1px 5px;
padding-left: 28px;
}
.contextMenu LI.hover A {
color: #FFF;
background-color: #3399FF;
}
.contextMenu LI.disabled A {
color: #AAA;
cursor: default;
}
.contextMenu LI.hover.disabled A {
background-color: transparent;
}
.contextMenu LI.separator {
border-top: solid 1px #CCC;
}
/*
Adding Icons
You can add icons to the context menu by adding
classes to the respective LI element(s)
*/
.contextMenu LI.pwedit A { background-image: url(/img/context/page_white_edit.png); }
.contextMenu LI.pwcopy A { background-image: url(/img/context/page_white_copy.png); }
.contextMenu LI.pwpaste A { background-image: url(/img/context/page_white_paste.png); }
.contextMenu LI.pwdelete A { background-image: url(/img/context/page_white_delete.png); }
.contextMenu LI.edit A { background-image: url(/img/context/edit.png); }
.contextMenu LI.copy A { background-image: url(/img/context/copy.png); }
.contextMenu LI.paste A { background-image: url(/img/context/paste.png); }
.contextMenu LI.delete A { background-image: url(/img/context/delete.png); }
.contextMenu LI.cut A { background-image: url(/img/context/cut.png); }
.contextMenu LI.quit A { background-image: url(/img/context/door.png); }
.contextMenu LI.compress A { background-image: url(/img/context/compress.png); }
.contextMenu LI.compressr A { background-image: url(/img/context/compressr.png); }
.contextMenu LI.dedup A { background-image: url(/img/context/dedup.png); }
.contextMenu LI.decrypt A { background-image: url(/img/context/decrypt.png); }
.contextMenu LI.decryptr A { background-image: url(/img/context/decryptr.png); }
.contextMenu LI.mpg A { background-image: url(/img/context/mpg.png); }
.contextMenu LI.mp3 A { background-image: url(/img/context/mp3.png); }
.contextMenu LI.clock A { background-image: url(/img/context/clock.png); }
.contextMenu LI.thm A { background-image: url(/img/context/thumb.png); }

View File

@@ -1,447 +0,0 @@
html body
{
line-height: 1.55em;
font-family: "Lucida Grande", verdana, lucida, helvetica, sans-serif;
background-color: #f8f8f8;
margin: 1em;
padding: 0;
font-size: small;
}
html>body
{
font-size: small;
}
.left, .cleft
{
float: left;
}
.cleft
{
clear: left;
}
fieldset.left, fieldset.cleft
{
display: inline;
}
div.container
{
position: relative;
padding-left: 30px;
padding-right: 30px;
height: 116px;
}
div.container .left
{
position: absolute;
left: 0px;
top: 0px;
width: 30px;
height: 116px;
}
div.container .right
{
position: absolute;
right: 0px;
top: 0px;
width: 30px;
height: 116px;
}
div.container .middle
{
background-image: url('/images/154_1_00_WIN_MD116_2C.png');
background-repeat: repeat-x;
height: 116px;
}
div.footer
{
clear: both;
padding-top: 2em;
}
div.owarningbox
{
background: url('/img/redshade.png') repeat-x;
padding: 0.5em;
margin: 1em;
}
div.warningbox
{
width: 60%;
background: url('/img/redshade.png') repeat-x;
background-size: 100%;
#color: #005000;
border: 1px solid #7a4707;
padding: 10px;
position: relative;
top: -2px;
left: -2px;
font-weight: bold;
z-index: 30;
box-shadow: 2px 2px 11px #666;
-moz-box-shadow: 2px 2px 11px #666;
-webkit-box-shadow: 2px 2px 11px #666;
border-radius: 5px;
-moz-border-radius: 5px;
}
table
{
empty-cells: show;
}
table.borders, table.borders td, table.borders th
{
border: 1px solid #669933;
empty-cells: show;
}
.odd
{
background: #ccff99;
color: black;
}
.even
{
background: #ffffcc;
color: black;
}
.hover
{
background: #f6ff5b;
color: black;
}
table td,table th
{
font-size: small;
}
table th
{
font-weight: bold;
text-align: left;
}
table.keyval th, th.key
{
background: #ccff99;
font-weight: bold;
text-align: right;
color: black;
padding: 0.5em;
}
table.keyval td
{
background: #ffffcc;
color: black;
}
pre, .pre, .prelike
{
font-family: Consolas, 'Courier New', Courier, monospace;
color: black;
background: #f9d9b0 url('/img/prebg.png') repeat-x top;
line-height: 1.24;
padding: 3px 8px;
margin: 0 5em 1em 5em;
border-color: #f9d9b0;
border-bottom: 1px solid #f9bc6d;
border-top-left-radius: 4px;
-webkit-border-top-left-radius: 4px;
-moz-border-radius-topleft: 4px;
-khtml-border-top-left-radius: 4px;
border-top-right-radius: 4px;
-webkit-border-top-right-radius: 4px;
-moz-border-radius-topright: 4px;
-khtml-border-top-right-radius: 4px;
}
pre, .pre
{
white-space: pre-wrap;
white-space: -moz-pre-wrap !important;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
white-space: break-word;
}
.shadowbox
{
background: #ccc;
position: relative;
width: 60%;
top: 2px;
left: 2px;
}
.shadowbox div
{
background: white;
color: #005000;
border: 1px solid #7a4707;
padding: 10px;
position: relative;
top: -2px;
left: -2px;
}
:link:focus,
:visited:focus,
:link,
:visited,
:link:active,
:visited:active
{
text-decoration: none;
color: #1e5bbd;
background-color: transparent;
}
/*
:link:hover,
:visited:hover
{
text-decoration: underline;
background-color: #b4d5ff;
color: #1559B3;
}
*/
.blood
{
color: #ff4000;
background: transparent;
}
.filesize
{
color: #6a6aff;
background: transparent;
}
.footnote
{
color: #ff4000;
background: transparent;
font-size: 70%;
font-weight: bold;
}
.blueshade
{
background: #b9daff;
color: black;
}
.yellowshade
{
background: #f6ff5b;
color: black;
}
.pinkshade
{
background: #ffccff;
color: black;
}
.strike
{
text-decoration: line-through;
}
.greenshade
{
background: #e4faa8;
color: black;
}
.orangeshade
{
background: #ffeeaa;
color: black;
}
.redshade
{
background: #ff4000;
color: white;
}
img.progress
{
background: transparent url(/img/percentback.png) top left no-repeat;
padding: 0;
margin: 0;
background-position: 1px 0;
}
.va
{
vertical-align: middle;
}
.block
{
display: block;
}
.hidden
{
display: none;
}
input.text
{
padding: .4em;
}
.highlight
{
background-color: yellow;
}
.focused
{
border: 2px solid red;
}
div.cut, div.keep
{
position: absolute;
top: 0px;
text-align: center;
overflow: hidden;
border-radius: 5px;
-moz-border-radius: 5px;
}
div.keep
{
background: green;
color: white;
}
div.cut
{
background: #ff4000;
color: black;
}
.ui-button-text
{
font-size: inherit !important;
}
.ui-button, .ui-button-text
{
padding: 0;
font-size: 12px;
}
.also
{
font-size: 0.9em;
font-style: italic;
color: #333;
background: transparent;
}
div.toolbarouter
{
position: relative;
}
div.toolbar
{
position: absolute;
top: -20px;
left: 30px;
z-index: 29;
display: none;
width: 80%;
border: 1px solid #899caa;
box-shadow: 2px 2px 11px #666;
-moz-box-shadow: 2px 2px 11px #666;
-webkit-box-shadow: 2px 2px 11px #666;
border-radius: 5px;
-moz-border-radius: 5px;
margin-top: -1px;
background: #d2e0ea;
padding: 6px;
}
span.toolbarcell
{
float: left;
border-right: 1px solid #ccc;
text-align: center;
padding: 0 1em;
}
.tbhover
{
background: #dfe8ef;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
}
#tbstatus
{
width: 100%;
border-top: 1px solid #ccc;
margin: 1em 0;
padding-top: 1em;
}
button.blue
{
background: url(/img/gloss_wave_blue.png) repeat-x center;
border: 1px solid blue;
color: #ffffff;
}
button.green
{
background: url(/img/gloss_wave_green.png) repeat-x center;
border: 1px solid green;
color: #ffffff;
}
button.red
{
background: url(/img/gloss_wave_red.png) repeat-x center;
border: 1px solid green;
color: #ffffff;
}
div#restart_block
{
z-index: 31;
}
img.bmp, img.doublebmp
{
transform: scaleY(-1);
-webkit-transform: scaleY(-1);
-o-transform: scaleY(-1);
height: 78px;
width: 140px;
}
img.doublebmp
{
height: 156px;
width: 280px;
}

View File

@@ -1,31 +0,0 @@
table.tablesorter .header {
background-image: url(/img/tsort/bg.png);
background-repeat: no-repeat;
border-left: 1px solid #FFF;
border-right: 1px solid #000;
border-top: 1px solid #FFF;
padding-left: 30px;
padding-top: 8px;
height: auto;
}
table.tablesorter .headerplain {
background-image: url(/img/tsort/bgplain.png);
background-repeat: no-repeat;
border-left: 1px solid #FFF;
border-right: 1px solid #000;
border-top: 1px solid #FFF;
padding-top: 8px;
height: auto;
}
table.tablesorter .headerSortUp {
background-image: url(/img/tsort/asc.png);
background-repeat: no-repeat;
}
table.tablesorter .headerSortDown {
background-image: url(/img/tsort/desc.png);
background-repeat: no-repeat;
}

View File

@@ -1,22 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
httpheader
set logdirs {/var/log /mod/tmp /mnt/hd3}
set logext {.log}
set log [cgi_get file 0]
set unlink [cgi_get unlink 0]
set ldir [file dirname $log]
if {[file dirname $log] in $logdirs && [file extension $log] in $logext} {
file copy -force "/dev/null" $log
if {$unlink} { file delete $log }
puts "Cleared $log"
exit
}
puts "Cannot clear $log"

View File

@@ -1,192 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require pretty_size system.class pkg.class
header
pkg loaddiagmeta
set smv [system modversion 1]
puts {
<script type=text/javascript src=/js/enadis.js></script>
<script type=text/javascript src=script.js></script>
<fieldset class=cleft>
<legend>Utilities</legend>
<table>
<tr>
<td>Run Diagnostic:</td>
<td class=va><span class=cleft>
<select name=diagsel id=diagsel class="text ui-widget-content ui-corner-all">
<option value=0>-- Select diag or type name in box below --
}
foreach diag [array names ::diagmeta] {
puts "<option value=\"$diag\">$diag\n"
}
puts {
</select><br>
<input name=seq id=seq autocorrect=off autocapitalize=off
value="general" size=30 maxlength=50
class="text ui-widget-content ui-corner-all">
</span>
<span class="left va">
<button id=rundiag>Run Diagnostic</button>
</span>
</td>
</tr>
<tr>
<td>Package:</td>
<td><input name=fopkg id=fopkg autocorrect=off autocapitalize=off
value='' size=30 maxlength=50
class="text ui-widget-content ui-corner-all">
<button id=runfopkg>Force re-install</button>
</td>
</tr>
<tr><td colspan=2 style="height: 10px"></td></tr>
<tr>
<td colspan=2 align=center>
<button id=runedit style="width: 48%">File Editor</button>
<button id=dbinfo style="width: 48%">Database Browser</button>
</td>
</tr>
<tr>
<td colspan=2 align=center>
}
if {[system model] eq "HDR"} {
puts { <button id=diskdiag style="width: 48%">Hard Disk</button> }
}
puts {
<button id=channelinfo style="width: 48%">Channel Information</button>
</td>
</tr>
}
if {[system model] eq "HDR"} {
puts {
<tr>
<td colspan=2 align=center>
<button id=dlna style="width: 48%">DLNA Server</button>
</td>
</tr>
}
}
puts {
<tr><td colspan=2 style="height: 10px"></td></tr>
<tr>
<td colspan=2>
<button id=reboot style="width: 100%">Reboot System</button>
</td>
</tr>
<tr>
<td colspan=2>
<button id=runreset style="width: 100%"
}
if {$smv < 200} {
puts -nonewline " disabled class=ui-state-disabled"
}
puts {
>
Remove all custom firmware packages and settings
</button>
}
if {$smv < 200} {
puts {
<div class=footnote style="text-align: center">
(Install custom firmware v2.00 to enable this option)
</div>
}
}
puts {
<div id=resetdone class="hidden blood">
Restart your Humax with the remote control.<br>
Allow it to turn off completely before restarting.<br>
</div>
</td>
</tr>
<tr>
<td colspan=2>
<button id=runrma style="width: 100%"
}
if {$smv < 213} {
puts -nonewline " disabled class=ui-state-disabled"
}
puts {
>
Set Return-to-manufacturer (RMA) Mode
</button>
}
if {$smv < 213} {
puts {
<div class=footnote style="text-align: center">
(Install custom firmware v2.13 to enable this option)
</div>
}
}
puts {
</td>
</tr>
</table>
<span class=also style="padding-left: 5px">
View:
<a href=/jim/ref.html target=_blank>Jim Reference Manual</a> |
<a href=/jim/oo.html target=_blank>OO</a> |
<a href=/jim/sqlite.html target=_blank>Sqlite</a>
</span>
</fieldset>
<fieldset class=left>
<legend>View Log Files</legend>
}
foreach file [lsort [concat \
[glob -nocomplain /var/log/*.log] \
[glob -nocomplain /mod/tmp/*.log] \
[glob -nocomplain /mnt/hd3/*.log] \
]] {
puts "<a href=# class=log file=\"$file\">
<img border=0 height=14 src=/images/421_1_00_CH_Title_2R_Arrow.png>
[file tail $file]</a>
(<span class=lsize>[pretty_size [file size $file]]</span>)
<a class=\"va footnote logclear\" href=# file=\"$file\">
<img class=va border=0 src=/img/close.png width=20>Clear</a>
<br>"
}
puts {
</fieldset>
<div style="margin-top: 2em; display: none; float: left; clear: left"
id=results></div>
}
footer

View File

@@ -1,16 +0,0 @@
#!/mod/bin/jimsh
source /mod/webif/lib/setup
require settings.class
httpheader
set settings [settings]
foreach attr {realloc pending offline} {
set val [$settings _nval_setting "SMART_$attr"]
if {$val <= 0} continue
$settings _nval_setting "SMART_ack_$attr" $val
}

View File

@@ -1,33 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require system.class chunked
cgi_input
#cgi_dump
set diag [cgi_get diag general]
start_chunked
if {[system modversion 1] < 113} {
chunk ">>> Diagnostics only available with customised firmware 1.13 or above."
end_chunked
exit
}
chunk ">>> Beginning diagnostic $diag\r\n"
set bcmd "|/bin/diag $diag"
set fd [open $bcmd r]
while {[gets $fd line] >= 0} {
chunk "$line\r\n"
#chunk_pad
}
close $fd
chunk "\r\n"
chunk ">>> Ending diagnostic $diag\r\n"
end_chunked

View File

@@ -1,121 +0,0 @@
$(function() {
$('button').button();
$('#rundiag').click(function() {
var val = $('#diagsel').val();
if (val == '0')
val = $('#seq').val();
$('#results')
.slideDown()
.html('<br><br><img src=/img/loading.gif> ' +
'Running diagnostic, please wait...')
.load('rundiag.jim?diag=' + encodeURIComponent(val), function() {
$('#results').wrapInner('<pre>');
});
});
$('#runfopkg').click(function() {
$('#results')
.slideDown()
.text('\n\nForcibly re-installing package, please wait...\n\n')
.load('/cgi-bin/opkg.jim?cmd=install+--force-reinstall+' +
encodeURIComponent($('#fopkg').val()), function() {
$('#results').wrapInner('<pre>');
$('#fopkg').val('');
});
});
$('a.log').click(function(e) {
e.preventDefault();
$('#results')
.slideDown()
.text('\n\nLoading log, please wait...\n\n')
.load('/cgi-bin/cat.jim?file=' +
encodeURIComponent($(this).attr('file')), function() {
$('#results').wrapInner('<pre>');
});
});
$('a.logclear').click(function(e) {
var t = $(this);
e.preventDefault();
if (!confirm('Delete ' + $(this).attr('file') + '?'))
return;
$('#results')
.slideDown()
.text('\n\nClearing log, please wait...\n\n')
.load('clearlog.jim?file=' +
encodeURIComponent($(this).attr('file')), function() {
$('#results').wrapInner('<pre>');
$(t).prev('span.lsize').html('0 bytes');
});
});
$('#runedit').click(function(e) {
e.preventDefault();
window.location = '/edit/edit.jim';
});
$('#dbinfo').click(function(e) {
e.preventDefault();
window.location = '/cgi-bin/db.jim';
});
$('#channelinfo').click(function(e) {
e.preventDefault();
window.location = '/cgi-bin/channel.jim';
});
$('#diskdiag').click(function(e) {
e.preventDefault();
window.location = 'disk.jim';
});
$('#dlna').click(function(e) {
e.preventDefault();
window.location = '/dlna/dlna.jim';
});
$('#reboot').click(function(e) {
e.preventDefault();
if (confirm('Are you sure you wish to perform a reboot now?'))
if (confirm('Really sure?\n\nThere is a small chance the ' +
' Humax may not restart\n' +
'without physical intervention.\n\n' +
'i.e. pressing the standby button or using the remote control'))
window.location = '/cgi-bin/restart.jim';
});
$('#runreset').click(function(e) {
e.preventDefault();
if (!confirm('Are you sure? This will completely remove all packages and settings.'))
return;
if (!confirm('Are you really sure?'))
return;
if (!confirm('One last time, are you sure?'))
return;
$.get('/cgi-bin/cfwreset.cgi', function() {
$('button').disable();
$('#resetdone').slideDown();
});
});
$('#runrma').click(function(e) {
e.preventDefault();
if (!confirm('Are you sure? This will completely remove all packages and settings and return the unit to state where you can re-install official firmware ready to return a faulty box to Humax for repair.'))
return;
if (!confirm('Are you really sure?'))
return;
if (!confirm('One last time, are you sure?'))
return;
$.get('/cgi-bin/cfwreset.cgi?rma=1', function() {
$('button').disable();
$('#resetdone').slideDown();
});
});
});

View File

@@ -1,32 +0,0 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require chunked pretty_size
cgi_input
#cgi_dump
set file [cgi_get file "/tmp/hosts"]
if {$file eq "-"} { exit }
start_chunked "text/plain"
if {![file exists $file]} {
chunk ">>> File $file does not exist.\r\n"
} else {
set type [exec /mod/bin/file --brief --mime-type --dereference $file]
if {![string match {text/*} $type]} {
chunk ">>> File $file is not a plain file ($type)"
} elseif {[file size $file] > 102400} {
chunk ">>> File $file is too large."
chunk ">>> [pretty_size [file size $file]]"
} else {
set fp [open $file r]
chunk [read $fp]
close $fp
}
}
end_chunked

View File

@@ -1,4 +0,0 @@
<!--#include virtual="/lib/header.shtml" -->
<!--#exec cmd="/mod/webif/include/epg.jim" -->
<!--#include virtual="/lib/footer.shtml" -->

View File

@@ -1 +0,0 @@
context/clock.png

View File

@@ -1 +0,0 @@
context/compress.png

View File

@@ -1 +0,0 @@
context/compressr.png

View File

@@ -1 +0,0 @@
context/decrypt.png

View File

@@ -1 +0,0 @@
context/decryptr.png

View File

@@ -1 +0,0 @@
context/dedup.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1 +0,0 @@
context/mp3.png

View File

@@ -1 +0,0 @@
context/mpg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -1,372 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Jim Tcl - Object Oriented</title>
<link rel="stylesheet" type="text/css" href="/css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/css/sh_style.css" media="screen">
<script src="/javascript/sh_main.min.js" type="text/javascript"></script>
<script src="/javascript/sh_lang.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23178588-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<meta name="generator" content="nanoc 3.1.6">
</head>
<body>
<div id="header">
<h1 id="blog-title">The Jim Interpreter</h1>
<p id="description">A small footprint implementation of the Tcl programming language</p>
</div>
<div id="content">
<div class="breadcrumbs">
<a href="/">The Jim Interpreter</a>
»
<a href="/documentation/">Documentation</a>
»
<a href="/documentation/oo/">Object Oriented</a>
</div>
<div class="main" id="main">
<h1 id="object-oriented-support-for-jim-tcl">Object Oriented Support for Jim Tcl</h1>
<h2 id="overview">OVERVIEW</h2>
<p>The pure-Tcl oo package leverages Jim&rsquo;s unique strengths
to provide support for Object Oriented programming. </p>
<p>The oo package can be statically linked with Jim or installed
as a separate Tcl package and loaded with:</p>
<pre class="sh_tcl">
package require oo
</pre>
<h2 id="declaring-classes">DECLARING CLASSES</h2>
<p>A class is declared with the <code>class</code> proc as follows.</p>
<pre class="sh_tcl">
class myclass ?baseclasses? classvars
</pre>
<p>This declares a class named <code>myclass</code> with the given dictionary,
<code>classvars</code>, providing the initial state of all new objects.
It is important to list all class variables in <code>classvars</code>, even
if initialised only to the empty string, since the class makes
these variables available in methods and via <code>[myclass vars]</code>.</p>
<p>A list of zero or more base classes may also be specified from
which methods and class variables are imported. See INHERITANCE
below for more details.</p>
<p>Declaring a class creates a procedure with the class name along
with some related procedures. For example:</p>
<pre class="sh_tcl">
. class Account {balance 0}
Account
. info procs Account*
{Account get} {Account methods} {Account eval} Account {Account new} {Account destroy}
{Account vars} {Account classname} {Account classvars} {Account method}
</pre>
<p>Notice that apart from the main <code>Account</code> procedure, all the remaining procedures (methods)
are prefixed with <code>Account</code> and a space.</p>
<h2 id="predefined-class-methods">PREDEFINED CLASS METHODS</h2>
<p>Decaring a class pre-defines a number of &ldquo;class&rdquo; methods. i.e. those which don&rsquo;t
require an object and simply return or manipulate properties of the class. These are:</p>
<dl>
<dt><strong>new</strong> ?instancevars?</dt>
<dd>Creates and returns new object, optionally overriding the default class variable values.
Note that the class name is an alias for <code>classname new {}</code> and can be used as a shorthand
for creating new objects with default values.</dd>
</dl>
<dl>
<dt><strong>method</strong> name arglist body</dt>
<dd>Creates or redefines a method for the class with the given name, argument list and body.</dd>
</dl>
<dl>
<dt><strong>methods</strong></dt>
<dd>Returns a list of the methods supported by this class, including both class methods
and instance methods. Also includes base class methods.</dd>
</dl>
<dl>
<dt><strong>vars</strong></dt>
<dd>Returns a list of the class variables for this class (names
only). Also includes base class variables.</dd>
</dl>
<dl>
<dt><strong>classvars</strong></dt>
<dd>Returns a dictionary the class variables, including initial values, for this class.
Also includes base class variables.</dd>
</dl>
<dl>
<dt><strong>classname</strong></dt>
<dd>Returns the classname. This can be useful as [$self classname].</dd>
</dl>
<p>Class methods may be invoked either via the class name or via an object of the class.
For example:</p>
<pre class="sh_tcl">
. class Account {balance 0}
Account
. Account methods
classname classvars destroy eval get method methods new vars
. set a [Account]
&lt;reference.&lt;Account&gt;.00000000000000000001&gt;
. $a methods
classname classvars destroy eval get method methods new vars
</pre>
<h2 id="predefined-object-methods">PREDEFINED OBJECT METHODS</h2>
<p>Decaring a class pre-defines a number of &ldquo;object&rdquo; methods. i.e. those which operate
on a specific object.</p>
<dl>
<dt><strong>destroy</strong></dt>
<dd>Destroys the object. This method may be overridden, but note that it should
delete the object with {rename $self &ldquo;&rdquo;}. This method will also be called
if the object is reaped during garbage collection.</dd>
</dl>
<dl>
<dt><strong>get</strong> varname</dt>
<dd>Returns the value of the given instance variable.</dd>
</dl>
<dl>
<dt><strong>eval</strong> ?locals? body</dt>
<dd>Makes any given local variables available to the body, along with
the instance variables, and evaluate the body in that context.
This can be used for one-off evaluation to avoid declaring a method.</dd>
</dl>
<h2 id="creating-objects">CREATING OBJECTS</h2>
<p>An object is created with the <code>new</code> method, or simply by using the classname shortcut.
If the <code>new</code> method is used, the variables for the newly created object (instance variables)
may be initialised. Otherwise they are set to the default values specified when the
class was declared.</p>
<p>For example:</p>
<pre class="sh_tcl">
. class Account {balance 0}
Account
. set a [Account]
&lt;reference.&lt;Account&gt;.00000000000000000001&gt;
. set b [Account new {balance 1000}]
&lt;reference.&lt;Account&gt;.00000000000000000002&gt;
. $a get balance
0
. $b get balance
1000
</pre>
<h2 id="declaring-methods">DECLARING METHODS</h2>
<p>In addition to the predefined methods, new methods may be decared, or existing
methods redefined with the class method, method.</p>
<p>Declaring a method is very similar to defining a proc, and the arglist
has identical syntax. For example:</p>
<pre class="sh_tcl">
. Account method show {{chan stdout}} { $chan puts "Balance of account is $balance" }
. $b show
Balance of account is 1000
</pre>
<p>All instance variables are available within the method and any
changes to these variables are maintained by the object.</p>
<p>In addition, the $self variables is defined and refers to the current object.
This may be used to invoke further methods on the object. For example:</p>
<pre class="sh_tcl">
. Account method show {} { puts "Balance of account is [$self get balance]" }
. $b show
Balance of account is 1000
</pre>
<p>Notes:</p>
<ul>
<li>It is a bad idea to unset an instance variable.</li>
<li>In general, you should avoid redefining any of the pre-defined methods, except for <code>destroy</code>.</li>
<li>When accessing the caller&rsquo;s scope with upvar or uplevel, note that there
are two frame levels between the caller and the method. Thus it is necessary
to use <code>upvar 2</code> or <code>uplevel 2</code></li>
</ul>
<h2 id="inheritance">INHERITANCE</h2>
<p>For each base class given in a new class declaration, the methods
and variables of those classes are imported into the new class being
defined. Base classes are imported in left to right order, so that if a
method is defined in more than one base class, the later definition
is selected. This applies similarly to class variables.</p>
<p>Within a method, <code>super</code> may be used to explicitly invoke a
base class method on the object. This applies only to the <em>last</em>
base class given. For example:</p>
<pre class="sh_tcl">
# Assumes the existence of classes Account and Client
. Account method debit {amount} { incr balance -$amount }
. class CreditAccount {Client Account} {type visa}
CreditAccount
. CreditAccount method debit {amount} {
puts "Debit $type card"
super debit $amount
}
. set a [CreditAccount]
&lt;reference.&lt;Account&gt;.00000000000000000001&gt;
. $a debit 20
Debit visa card
. $a balance
-20
</pre>
<p>In the CreditAccount debit method, the call to <code>super debit</code> invokes
the method <code>Account debit</code> since Account is the last base class listed.</p>
<h2 id="object-lifetimegarbage-collection">OBJECT LIFETIME/GARBAGE COLLECTION</h2>
<p>Objects are implemented as lambdas. That is, they are procedures with state
and are named as references. This means that when an object is no longer
reachable by any name and garbage collection runs, the object will be
discarded and the destructor will be invoked. Note that the garbage collector
can be invoked manually with <code>collect</code> if required.</p>
<pre class="sh_tcl">
. class Account {}
Account
. Account method destroy {} { puts dying...; rename $self "" }
Account destroy
. proc a {} { set b [Account]; return "" }
a
. a
. collect
dying...
1
</pre>
<h2 id="class-methodsclass-static-variables">CLASS METHODS/CLASS STATIC VARIABLES</h2>
<p>All methods defined with <code>method</code> operate on objects (instances).
If a class method is required, it is possible to simply declare one with <code>proc</code>.
The method dispatcher will automatically be able to dispatch to this method.
Using this approach, it is also possible to add class static variables by
defining static variables to the proc. Although strictly these variables
are accessible only to that proc, not the class as a whole.</p>
<p>For example:</p>
<pre class="sh_tcl">
. class Account {}
Account
. proc {Account nextid} {} {{id 0}} { incr id }
Account nextid
. Account nextid
1
. Account nextid
2
. set a [Account]
&lt;reference.&lt;Account&gt;.00000000000000000001&gt;
. $a nextid
3
. $a eval { $self nextid }
4
</pre>
<h2 id="how-method-dispatch-works">HOW METHOD DISPATCH WORKS</h2>
<p>All class and object methods are name &ldquo;classname methodname&rdquo;.</p>
<p>The class method dispatcher is named &ldquo;classname&rdquo;. When invoked with a methodname,
it simply invokes the method &ldquo;classname methodname&rdquo;.</p>
<p>The method dispatch is via a two step process. Firstly the object procedure is invoked
with the method name. This procedure then invokes &ldquo;classname method&rdquo; which sets up
the appropriate access to the object variables, and then invokes the method body.</p>
<h2 id="examples">EXAMPLES</h2>
<h3 id="treetclhttprepoorczwjimtclgitblobheadtreetcl"><a href="http://repo.or.cz/w/jimtcl.git/blob/HEAD:/tree.tcl">tree.tcl</a></h3>
<p>The <code>tree</code> package is implemented using the <code>oo</code> package.
See the source code in tree.tcl and a usage example in tests/tree.test</p>
<p>Of particular note is how callbacks and recursive invocation is used in the <code>walk</code> method.</p>
<h3 id="examplesootesttclhttprepoorczwjimtclgitblobheadexamplesootesttcl"><a href="http://repo.or.cz/w/jimtcl.git/blob/HEAD:/examples/ootest.tcl">examples/ootest.tcl</a></h3>
<p>A comprehensive OO example is provided in examples/ootest.tcl.</p>
<p>It can be run simply as:</p>
<pre class="sh_unix">
$ ./jimsh examples/ootest.tcl
</pre>
</div>
</div>
<div id="sidebar">
<h2>About Jim Tcl</h2>
<ul>
<li class="stdlink"><a href="/">Introduction</a></li>
<li class="newlink"><a href="/news/">News</a></li>
<li class="stdlink"><a href="/download/">Download</a></li>
<li class="stdlink"><a href="/documentation/">Documentation</a></li>
<li class="stdlink"><a href="/extensions/">Extensions</a></li>
<li class="stdlink"><a href="/license/">License</a></li>
<li class="stdlink"><a href="/about/">About</a></li>
</ul>
<h2>Community</h2>
<ul>
<li><a href="https://lists.berlios.de/mailman/listinfo/jim-devel">Mailing List</a></li>
<li><a href="https://github.com/msteveb/jimtcl">Jim on github</a></li>
<li><a href="http://wiki.tcl.tk/jim">Jim @ the Tcler's Wiki</a></li>
<li><a href="http://developer.berlios.de/projects/jim">Berlios Project Page</a></li>
</ul>
</div>
<script language="javascript">sh_highlightDocument();</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,285 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Jim Tcl - Sqlite Extension</title>
<link rel="stylesheet" type="text/css" href="/css/style.css" media="screen">
<link rel="stylesheet" type="text/css" href="/css/sh_style.css" media="screen">
<script src="/javascript/sh_main.min.js" type="text/javascript"></script>
<script src="/javascript/sh_lang.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23178588-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<meta name="generator" content="nanoc 3.1.6">
</head>
<body>
<div id="header">
<h1 id="blog-title">The Jim Interpreter</h1>
<p id="description">A small footprint implementation of the Tcl programming language</p>
</div>
<div id="content">
<div class="breadcrumbs">
<a href="/">The Jim Interpreter</a>
»
<a href="/documentation/">Documentation</a>
»
<a href="/documentation/sqlite/">Sqlite Extension</a>
</div>
<div class="main" id="main">
<h1 id="sqlite-support-for-jim-tcl">Sqlite Support for Jim Tcl</h1>
<h2 id="overview">OVERVIEW</h2>
<p>The sqlite and sqlite3 extensions makes possible to work with
<a href="http://www.sqlite.org">sqlite</a> databases from Jim. SQLite is a
small C library that implements a self-contained, embeddable,
zero-configuration SQL database engine. This means it is perfect
for embedded systems, and for stand-alone applications that need
the power of SQL without to use an external server like Mysql.</p>
<p><strong>Note:</strong> The same interface is exported for both the <strong>sqlite</strong> and <strong>sqlite3</strong>
extensions. The only difference being the open call, <strong>sqlite.open</strong> vs. <strong>sqlite3.open</strong></p>
<h2 id="basic-usage">Basic usage</h2>
<p>The Sqlite extension exports an Object Based interface for databases. In order
to open a database use:</p>
<pre class="sh_tcl">
set f [sqlite3.open dbname]
</pre>
<p>The <code>sqlite3.open</code> command returns a db handle, that is a command name that
can be used to perform operations on the database. A real example:</p>
<pre class="sh_tcl">
. set db [sqlite3.open test.db]
sqlite.handle0
. $db query "SELECT * from tbl1"
{one hello! two 10} {one goodbye two 20}
</pre>
<p>In the second line the handle is used as a command name, followed
by the &lsquo;method&rsquo; or &lsquo;subcommand&rsquo; (&ldquo;query&rdquo; in the example), and the arguments.</p>
<h2 id="the-query-method">The query method</h2>
<p>The query method has the following signature:</p>
<pre class="sh_tcl">
$db query SqlQuery ?args?
</pre>
<p>The sql query may contain occurrences of &ldquo;%s&rdquo; that are substituted
in the actual query with the following arguments, quoted in order
to make sure that the query is correct even if this arguments contain
&ldquo;&rsquo;&rdquo; characters. So for example it is possible to write:</p>
<pre class="sh_tcl">
. $db query "SELECT * from tbl1 WHERE one='%s'" hello!
{one hello! two 10}
</pre>
<p>Instead of hello! it is possible to use a string with embedded &ldquo;&rsquo;&rdquo;:</p>
<pre class="sh_tcl">
. $db query "SELECT * from tbl1 WHERE one='%s'" a'b
(no matches - the empty list is returned)
</pre>
<p>This does not work instead using the Tcl variable expansion in the string:</p>
<pre class="sh_tcl">
. $db query "SELECT * from tbl1 WHERE one='$foo'"
near "b": syntax error
</pre>
<p>In order to obtain an actual &lsquo;%&rsquo; character in the query, there is just
to use two, like in &ldquo;foo %% bar&rdquo;. This is the same as the [format] argument.</p>
<h2 id="specification-of-query-results">Specification of query results</h2>
<p>In one of the above examples, the following query was used:</p>
<pre class="sh_tcl">
. $db query "SELECT * from tbl1"
{one hello! two 10} {one goodbye two 20}
</pre>
<p>As you can see the result of a query is a list of lists. Every
element of the list represents a row, as a list of key/value pairs,
so actually every row is a Jim dictionary.</p>
<p>The following example and generated output show how to take advantage
of this representation:</p>
<pre class="sh_tcl">
. set res [$db query "SELECT * from tbl1"]
{one hello! two 10} {one goodbye two 20}
. foreach row $res {puts "One: $row(one), Two: $row(two)"}
One: hello!, Two: 10
One: goodbye, Two: 20
</pre>
<p>To access every row sequentially is very simple, and field of a row
can be accessed using the $row(field) syntax.</p>
<h2 id="the-close-method">The close method</h2>
<p>In order to close the db, use the &lsquo;close&rsquo; method that will have as side effect
to close the db and to remove the command associated with the db.
Just use:</p>
<pre class="sh_tcl">
$db close
</pre>
<h2 id="handling-null-values">Handling NULL values</h2>
<p>In the SQL language there is a special value NULL that is not the empty
string, so how to represent it in a typeless language like Tcl?
For default this extension will use the empty string, but it is possible
to specify a different string for the NULL value.</p>
<p>In the above example there were two rows in the &lsquo;tbl1&rsquo; table. Now
we can add usign the &ldquo;sqlite&rdquo; command line client another one with
a NULL value:</p>
<pre><code>sqlite&gt; INSERT INTO tbl1 VALUES(NULL,30);
sqlite&gt; .exit
</code></pre>
<p>That&rsquo;s what the sqlite extension will return for default:</p>
<pre class="sh_tcl">
. $db query "SELECT * from tbl1"
{one hello! two 10} {one goodbye two 20} {one {} two 30}
</pre>
<p>As you can see in the last row, the NULL is represented as {}, that&rsquo;s
the empty string. Using the -null option of the &lsquo;query&rsquo; command we
can change this default, and tell the sqlite extension to represent
the NULL value as a different string:</p>
<pre class="sh_tcl">
. $db query -null &lt;&lt;NULL&gt;&gt; "SELECT * from tbl1"
{one hello! two 10} {one goodbye two 20} {one &lt;&lt;NULL&gt;&gt; two 30}
</pre>
<p>This way if the emtpy string has some semantical value for your
dataset you can change it.</p>
<h2 id="finding-the-id-of-the-last-inserted-row">Finding the ID of the last inserted row</h2>
<p>This is as simple as:</p>
<pre class="sh_tcl">
. $db lastid
10
</pre>
<h2 id="number-of-rows-changed-by-the-most-recent-query">Number of rows changed by the most recent query</h2>
<p>This is also very simple, there is just to use the &lsquo;changes&rsquo; method
without arugments.</p>
<pre class="sh_tcl">
. $db changes
5
</pre>
<p>Note that if you drop an entire table the number of changes will
be reported as zero, because of details of the sqlite implementation.</p>
<p>That&rsquo;s all,
Enjoy!
Salvatore Sanfilippo</p>
<p>p.s. this extension is just the work of some hour thanks to the cool
clean C API that sqlite exports. Thanks to the author of sqlite for this
great work.</p>
<h2 id="in-memory-databases">In memory databases</h2>
<p>SQLite is able to create in-memory databases instead to use files.
This is of course faster and does not need the ability to write
to the filesystem. Of course this databases are only useful for
temp data.</p>
<p>In-memory DBs are used just like regular databases, just the name used to
open the database is :memory:. That&rsquo;s an example that does not use the
filesystem at all to create and work with the db.</p>
<pre class="sh_tcl">
package require sqlite3
set db [sqlite3.open :memory:]
$db query {CREATE TABLE plays (id, author, title)}
$db query {INSERT INTO plays (id, author, title) VALUES (1, 'Goethe', 'Faust');}
$db query {INSERT INTO plays (id, author, title) VALUES (2, 'Shakespeare', 'Hamlet');}
$db query {INSERT INTO plays (id, author, title) VALUES (3, 'Sophocles', 'Oedipus Rex');}
set res [$db query "SELECT * FROM plays"]
$db close
foreach r $res {puts $r(author)}
</pre>
<p>Of course once the Jim process is destroyed the database will no longer
exists.</p>
</div>
</div>
<div id="sidebar">
<h2>About Jim Tcl</h2>
<ul>
<li class="stdlink"><a href="/">Introduction</a></li>
<li class="newlink"><a href="/news/">News</a></li>
<li class="stdlink"><a href="/download/">Download</a></li>
<li class="stdlink"><a href="/documentation/">Documentation</a></li>
<li class="stdlink"><a href="/extensions/">Extensions</a></li>
<li class="stdlink"><a href="/license/">License</a></li>
<li class="stdlink"><a href="/about/">About</a></li>
</ul>
<h2>Community</h2>
<ul>
<li><a href="https://lists.berlios.de/mailman/listinfo/jim-devel">Mailing List</a></li>
<li><a href="https://github.com/msteveb/jimtcl">Jim on github</a></li>
<li><a href="http://wiki.tcl.tk/jim">Jim @ the Tcler's Wiki</a></li>
<li><a href="http://developer.berlios.de/projects/jim">Berlios Project Page</a></li>
</ul>
</div>
<script language="javascript">sh_highlightDocument();</script>
</body>
</html>

View File

@@ -1,50 +0,0 @@
/*
* jQuery Plugin : jConfirmAction
*
* by Hidayat Sagita
* http://www.webstuffshare.com
* Licensed Under GPL version 2 license.
*
*/
(function($){
jQuery.fn.jConfirmAction = function (options, callback) {
// Some jConfirmAction options (limited to customize language) :
// question : a text for your question.
// yesAnswer : a text for Yes answer.
// cancelAnswer : a text for Cancel/No answer.
var theOptions = jQuery.extend ({
question: "Are You Sure?",
yesAnswer: "Yes",
cancelAnswer: "Cancel"
}, options);
return this.each (function () {
$(this).click(function(e) {
e.preventDefault();
var p = $(this);
if($(this).next('.question').length <= 0)
$(this).after('<div class="jcaquestion">'+theOptions.question+'<br/> <span class="jcayes">'+theOptions.yesAnswer+'</span><span class="jcacancel">'+theOptions.cancelAnswer+'</span></div>');
$(this).next('.jcaquestion').animate({opacity: 1}, 300);
$('.jcayes').bind('click', function() {
callback(p);
});
$('.jcacancel').bind('click', function(){
$(this).parents('.jcaquestion').fadeOut(300, function() {
$(this).remove();
});
});
});
});
}
})(jQuery);

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,20 +0,0 @@
#!/mod/bin/jimsh
puts {
<!-- Start of footer -->
<div class=footer>
}
if {![catch {
set rendertime [expr [expr [clock milliseconds] - $renderstart] / 1000.0]
}]} {
puts "<font class=footnote>Rendered in: $rendertime seconds</font>"
}
puts {
</div>
</div>
</body>
</html>
}

View File

@@ -1 +0,0 @@
<!--#exec cmd="/mod/webif/html/lib/footer.jim" -->

View File

@@ -1,38 +0,0 @@
#!/mod/bin/jimsh
puts {
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
}
source /mod/webif/include/model.jim
puts {
</title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
<link rel="shortcut icon" href=/img/favicon.ico />
<link type="text/css" href="/lib/jquery.ui/css/custom-theme/jquery-ui.css"
rel="Stylesheet" />
<link href="/css/style.css" rel="Stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/lib/jquery.ui/js/jquery-ui.js"></script>
</head>
<body>
}
source /mod/webif/html/lib/topbar.jim
puts "<div id=restart_block>"
source /mod/webif/include/restart.jim
puts "</div>"
source /mod/webif/include/diskcheck.jim
source /mod/webif/include/notify.jim
puts {
<div style="clear: both">
<!-- end of header -->
}
set renderstart [clock milliseconds]

View File

@@ -1 +0,0 @@
<!--#exec cmd="/mod/webif/html/lib/header.jim" -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

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 +0,0 @@
jquery.mobile-1.2.0.min.css

View File

@@ -1 +0,0 @@
jquery.mobile-1.2.0.min.js

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

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