diff --git a/CONTROL/control b/CONTROL/control
index 376c898..0753ec7 100644
--- a/CONTROL/control
+++ b/CONTROL/control
@@ -1,7 +1,7 @@
Package: webif
Priority: optional
Section: web
-Version: 1.3.3-3
+Version: 1.3.4
Architecture: mipsel
Maintainer: af123@hpkg.tv
Depends: tcpfix,webif-channelicons(>=1.1.24),lighttpd(>=1.4.39-1),jim(>=0.77),jim-oo(>=0.77),jim-sqlite3(>=0.76),jim-cgi(>=0.7-1),jim-binary(>=0.76),service-control(>=2.3),busybox(>=1.20.2-1),lsof(>=4.87),epg(>=1.2.3),hmt(>=2.0.10),ssmtp,cron-daemon(>=1.18.3-3),at(>=3.1.18),anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.1.9),webif-charts(>=1.2-1),stripts(>=1.2.5-3),tmenu(>=1.08),ffmpeg,id3v2,multienv(>=1.6),tcpping(>=1.1),e2fsprogs,wireless-tools(>=29-1),dbupdate,recmon(>=2.0.7),hwctl,nugget(>=0.95),sqlite3(>=3.15.1)
diff --git a/etc/init.d/S59webif b/etc/init.d/S59webif
index eb907db..9bc5f88 100755
--- a/etc/init.d/S59webif
+++ b/etc/init.d/S59webif
@@ -6,6 +6,7 @@ export TZ=GMT+0BST,M3.5.0/1,M10.5.0/2
case "$1" in
start)
+ /mod/webif/lib/bin/update_queue
/mod/webif/lib/bin/manage_logs
plog activity "System booted (`lbr_descr`)."
;;
diff --git a/webif/html/browse/assets.jim b/webif/html/browse/assets.jim
index 84ead1e..b54556a 100755
--- a/webif/html/browse/assets.jim
+++ b/webif/html/browse/assets.jim
@@ -376,6 +376,26 @@ Please wait...
-
+}
+
+set queueactions(decrypt) "Decryption"
+set queueactions(shrink) "Shrink"
+set queueactions(mp3) "Audio-Extraction"
+set queueactions(mpg) "Conversion to MPG"
+eval_plugins queueactions
+
+puts {
+
+
+
+
+
+
}
diff --git a/webif/html/browse/dequeue.jim b/webif/html/browse/dequeue.jim
new file mode 100755
index 0000000..79482d8
--- /dev/null
+++ b/webif/html/browse/dequeue.jim
@@ -0,0 +1,29 @@
+#!/mod/bin/jimsh
+
+package require cgi
+source /mod/webif/lib/setup
+require ts.class queue.class
+
+httpheader
+
+set dir [cgi_get dir]
+
+puts "
De-queuing...
"
+puts ""
+
+foreach file [cgi_get files] {
+ puts -nonewline "- \"$file\"..."
+
+ if {[string first "$dir/" $file] != 0} {
+ puts "Error - outside directory."
+ continue
+ }
+
+ set ts [ts fetch $file]
+ if {$ts eq "0"} continue
+
+ queue delete $ts
+ puts "
"
+}
+puts "
"
+
diff --git a/webif/html/browse/index.jim b/webif/html/browse/index.jim
index 3ae1b87..47d3724 100755
--- a/webif/html/browse/index.jim
+++ b/webif/html/browse/index.jim
@@ -3,7 +3,7 @@
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size system.class settings.class escape browse.class \
- plugin epg.class classdump
+ plugin epg.class classdump queue.class
set mroot [system mediaroot]
set dir [cgi_get dir $mroot]
@@ -216,6 +216,12 @@ proc entry {file} {{i 0}} {
set dlna 1
}
+ # Queued
+ set queued [queue status $ts]
+ if {$queued ne ""} {
+ icon "/img/queueps.png" "Queued for $queued"
+ }
+
# Opt+ button
puts "
@@ -373,6 +379,9 @@ if {$nicesplice} {
puts { }
}
+# Queue
+puts { }
+
# De-duplicate
puts {
diff --git a/webif/html/browse/queue.jim b/webif/html/browse/queue.jim
new file mode 100755
index 0000000..fed764a
--- /dev/null
+++ b/webif/html/browse/queue.jim
@@ -0,0 +1,34 @@
+#!/mod/bin/jimsh
+
+package require cgi
+source /mod/webif/lib/setup
+require ts.class queue.class
+
+httpheader
+
+set dir [cgi_get dir]
+set act [cgi_get act -]
+if {$act eq "-"} {
+ puts "No action."
+ exit;
+}
+
+puts "
Queuing...
"
+puts ""
+
+foreach file [cgi_get files] {
+ puts -nonewline "- \"$file\"..."
+
+ if {[string first "$dir/" $file] != 0} {
+ puts "Error - outside directory."
+ continue
+ }
+
+ set ts [ts fetch $file]
+ if {$ts eq "0"} continue
+
+ queue insert $ts $act
+ puts "
"
+}
+puts "
"
+
diff --git a/webif/html/browse/script.js b/webif/html/browse/script.js
index 613a73c..ddf0dfa 100755
--- a/webif/html/browse/script.js
+++ b/webif/html/browse/script.js
@@ -880,6 +880,14 @@ $('#bmpdialogue').dialog({
close: function() { $('#thmbmp').attr('src', 'about:blank'); }
});
+// Selection overlay
+$seloverlay = $('#selectoverlay').dialog({
+ modal: false, autoOpen: false,
+ height: 85, width: 460,
+ show: 'fade', hide: 'fade',
+ draggable: true, resizable: false
+});
+
// Create re-usable confirmation dialogue.
$confirm = $('#confirm').dialog({
modal: true, autoOpen: false,
@@ -926,6 +934,10 @@ $('#dedup').button().click(function() {
+ encodeURIComponent(dir);
});
+$('#queue').button().click(function() {
+ window.location = '/diag/queue/';
+});
+
$('#save_stream').button().click(function() {
$('#savestream_retrieving').show();
$('#savestream_detail').text('').hide();
@@ -1058,8 +1070,129 @@ $('input.fs').change(function() {
else
$('#join').disable();
+ if (num > 0)
+ {
+ $seloverlay
+ .dialog('option', 'position', {
+ my: "left top",
+ at: "right bottom",
+ of: this
+ })
+ .dialog('option', 'title', 'Selected files: ' + num)
+ .dialog('open')
+ .find('span.selcount').text(num);
+ }
+ else
+ {
+ $seloverlay.dialog('close');
+ }
});
+$('#so_delete').button()
+ .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');
+ blockpage();
+ window.location.reload(true);
+ });
+ }
+ });
+
+
+$('#so_queue').button()
+ .click(function() {
+ var files = new Array();
+ var els = $('input.fs:checked + a').each(function() {
+ files.push(decodeURIComponent($(this).attr('file')));
+ });
+
+ disableall();
+
+ $('#pwdialogue').dialog({
+ title: "Queuing",
+ 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/queue.jim', {
+ 'dir': dir,
+ 'files': files,
+ 'act': $('#so_queueactions').val()
+ }, function() {
+ $('#pwdialogue').dialog('close');
+ blockpage();
+ window.location.reload(true);
+ });
+ });
+
+$('#so_dequeue').button()
+ .click(function() {
+ var files = new Array();
+ var els = $('input.fs:checked + a').each(function() {
+ files.push(decodeURIComponent($(this).attr('file')));
+ });
+
+ disableall();
+
+ $('#pwdialogue').dialog({
+ title: "De-queuing",
+ 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/dequeue.jim', {
+ 'dir': dir,
+ 'files': files
+ }, function() {
+ $('#pwdialogue').dialog('close');
+ blockpage();
+ window.location.reload(true);
+ });
+ });
+
var streamsize = 0;
function checkstream()
diff --git a/webif/html/diag/diag.jim b/webif/html/diag/diag.jim
index 7f9f508..5bf875f 100755
--- a/webif/html/diag/diag.jim
+++ b/webif/html/diag/diag.jim
@@ -105,6 +105,7 @@ util "shredder" "rma" "RMA" "#" "
"
util "bluering" "reboot" "Reboot System" "/restart/"
util "maint" "maint" "Maintenance Mode" "#" "
"
+util "queuep" "queue" "Queued Tasks" "/diag/queue/"
eval_plugins diag
diff --git a/webif/html/diag/queue/delete.jim b/webif/html/diag/queue/delete.jim
new file mode 100755
index 0000000..6b5d725
--- /dev/null
+++ b/webif/html/diag/queue/delete.jim
@@ -0,0 +1,14 @@
+#!/mod/bin/jimsh
+
+package require cgi
+source /mod/webif/lib/setup
+require queue.class
+
+httpheader
+
+set slots [cgi_get slot 0]
+
+foreach slot [split $slots ","] {
+ queue delete_by_id $slot
+}
+
diff --git a/webif/html/diag/queue/index.jim b/webif/html/diag/queue/index.jim
new file mode 100755
index 0000000..f53e816
--- /dev/null
+++ b/webif/html/diag/queue/index.jim
@@ -0,0 +1,68 @@
+#!/mod/bin/jimsh
+
+package require cgi
+source /mod/webif/lib/setup
+require altrow ts.class queue.class
+
+jqplugin tablesorter2 enadis blockui confirmAction
+jscss script.js style.css
+
+header
+
+puts {
+
+
+ Queued Tasks
+
+
+}
+
+footer
+
diff --git a/webif/html/diag/queue/script.js b/webif/html/diag/queue/script.js
new file mode 100644
index 0000000..10b68f7
--- /dev/null
+++ b/webif/html/diag/queue/script.js
@@ -0,0 +1,75 @@
+function page_refresh(msg)
+{
+ if (!msg)
+ msg = 'Refreshing page...';
+ $.blockUI({
+ message: '
' + msg + '
'
+ });
+ window.location.reload(true);
+}
+
+$(function() {
+
+$('table')
+ .tablesorter({
+ sortList: [[0,1]],
+ theme: 'webif',
+ widthFixed: false,
+ widgets: ['zebra', 'stickyHeaders']
+ });
+
+
+$('input.qid:checkbox').prop('checked', false).enable();
+
+$('tr').each(function() {
+ var status = $(this).find('td.status').text();
+
+ if (status == 'RUNNING')
+ $(this).find('input.qid:checkbox').disable();
+});
+
+$('input.qid:checkbox').on('change', function() {
+ var num = $('input.qid:checked').size();
+ if (num)
+ $('#qdelete').enable();
+ else
+ $('#qdelete').disable();
+}).first().trigger('change');
+
+$('#qdelete').button({icons:{primary:"ui-icon-trash"}})
+ .on('click', function() {
+ $(this).dojConfirmAction({
+ question: 'Delete selected?',
+ yesAnswer: 'Yes',
+ cancelAnswer: 'No'
+ }, function(el) {
+ $.blockUI({
+ message: '
Deleting...
'
+ });
+
+
+ var slots = $('input.qid:checked').map(function() {
+ return this.value;
+ }).get();
+ $.get('delete.jim', {
+ slot: slots.join(',')
+ }, function() {
+ page_refresh();
+ });
+ });
+
+});
+
+$('#refresh').button({icons:{primary:"ui-icon-refresh"}})
+ .on('click', function() {
+ page_refresh();
+});
+
+$('#selall').on('change', function() {
+ $('input.qid:checkbox').prop('checked', $(this).prop('checked'));
+});
+
+setInterval(function() { page_refresh() }, 60000);
+
+});
+
diff --git a/webif/html/diag/queue/style.css b/webif/html/diag/queue/style.css
new file mode 100644
index 0000000..48e37b1
--- /dev/null
+++ b/webif/html/diag/queue/style.css
@@ -0,0 +1,28 @@
+
+td.status
+{
+ font-style: italic;
+}
+
+td
+{
+ white-space: nowrap;
+}
+
+td.status.RUNNING
+{
+ color: red;
+}
+
+td.status.COMPLETE
+{
+ color: green;
+ font-weight: bold;
+}
+
+td.status.INTERRUPTED
+{
+ color: #ffa500;
+ font-weight: bold;
+}
+
diff --git a/webif/html/img/queue.png b/webif/html/img/queue.png
new file mode 100644
index 0000000..75b1be3
Binary files /dev/null and b/webif/html/img/queue.png differ
diff --git a/webif/html/img/queuep.png b/webif/html/img/queuep.png
new file mode 100644
index 0000000..8bf27b3
Binary files /dev/null and b/webif/html/img/queuep.png differ
diff --git a/webif/html/img/queueps.png b/webif/html/img/queueps.png
new file mode 100644
index 0000000..2fc34c8
Binary files /dev/null and b/webif/html/img/queueps.png differ
diff --git a/webif/html/settings/modules/auto/init.hook b/webif/html/settings/modules/auto/init.hook
new file mode 100644
index 0000000..2418541
--- /dev/null
+++ b/webif/html/settings/modules/auto/init.hook
@@ -0,0 +1,15 @@
+
+set autolog [$settings autolog]
+set noautorec [$settings noautorec]
+set noautorecimm [$settings noautorecimm]
+set autorecperiod [$settings autorecperiod]
+if {$autorecperiod == 0} { set autorecperiod 10 }
+set noautohours [$settings noautohours]
+
+handle_int_update autolog $autolog "Auto-processing log level"
+handle_int_update noautorec $noautorec "Auto-processing during recording"
+handle_int_update noautorecimm $noautorecimm "Auto-processing before recording"
+handle_int_update autorecperiod $autorecperiod \
+ "Auto-processing recording wait period"
+handle_str_update noautohours $noautohours "Auto processing hours" ascii
+
diff --git a/webif/html/settings/modules/auto/settings.hook b/webif/html/settings/modules/auto/settings.hook
new file mode 100755
index 0000000..b2eb5f7
--- /dev/null
+++ b/webif/html/settings/modules/auto/settings.hook
@@ -0,0 +1,79 @@
+
+######################################################################
+# Auto-Processing Settings
+
+puts "
+ Auto-Processing Settings
+
+"
+
diff --git a/webif/html/settings/modules/general/init.hook b/webif/html/settings/modules/general/init.hook
index f501ad5..104f546 100644
--- a/webif/html/settings/modules/general/init.hook
+++ b/webif/html/settings/modules/general/init.hook
@@ -7,7 +7,6 @@ set notwitfeed [$settings notwitfeed]
set nounwatchedcount [$settings nounwatchedcount]
set hidevisualota [$settings hidevisualota]
set chanchangenc [$settings chanchangenc]
-set autolog [$settings autolog]
set audiomp3 [$settings audiomp3]
handle_str_update hostname $hostname Hostname
@@ -19,6 +18,5 @@ handle_int_update nounwatchedcount $nounwatchedcount "Disable unwatched count"
handle_int_update hidevisualota $hidevisualota "Hide OTA from visual view"
handle_int_update chanchangenc $chanchangenc \
"Disable channel change confirmation"
-handle_int_update autolog $autolog "Auto-processing log level"
handle_int_update audiomp3 $audiomp3 "MP3 type"
diff --git a/webif/html/settings/modules/general/settings.hook b/webif/html/settings/modules/general/settings.hook
index 44749ea..703f7d6 100755
--- a/webif/html/settings/modules/general/settings.hook
+++ b/webif/html/settings/modules/general/settings.hook
@@ -38,33 +38,6 @@ if {[system pkginst ir]} {
"chanchangenc" $chanchangenc 0
}
-puts -nonewline "
-
-
-
-"
-
puts -nonewline "