You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(29) |
Aug
(20) |
Sep
(6) |
Oct
(89) |
Nov
(24) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(16) |
Feb
(1) |
Mar
(7) |
Apr
(32) |
May
(36) |
Jun
(21) |
Jul
(65) |
Aug
(6) |
Sep
|
Oct
(30) |
Nov
(26) |
Dec
(44) |
2006 |
Jan
(35) |
Feb
(15) |
Mar
(29) |
Apr
(24) |
May
(8) |
Jun
(2) |
Jul
(7) |
Aug
(11) |
Sep
(61) |
Oct
(36) |
Nov
(10) |
Dec
(14) |
2007 |
Jan
(6) |
Feb
(43) |
Mar
(55) |
Apr
(20) |
May
(26) |
Jun
(21) |
Jul
(24) |
Aug
(22) |
Sep
(24) |
Oct
(4) |
Nov
|
Dec
(60) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(51) |
Jul
(2) |
Aug
(13) |
Sep
|
Oct
(16) |
Nov
(99) |
Dec
(12) |
2009 |
Jan
(23) |
Feb
(44) |
Mar
(4) |
Apr
|
May
|
Jun
(9) |
Jul
(70) |
Aug
(14) |
Sep
(13) |
Oct
(6) |
Nov
|
Dec
(3) |
2010 |
Jan
(13) |
Feb
(17) |
Mar
(2) |
Apr
(3) |
May
(71) |
Jun
(19) |
Jul
(95) |
Aug
|
Sep
|
Oct
|
Nov
(71) |
Dec
(3) |
2011 |
Jan
(52) |
Feb
|
Mar
(34) |
Apr
(10) |
May
(8) |
Jun
(8) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: jreichen <jre...@us...> - 2010-11-06 20:51:56
|
Update of /cvsroot/sageplugins/webapp In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv3449 Modified Files: build.xml Log Message: Fix JettyStarter build.xml location for Hudson builds Index: build.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/build.xml,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** build.xml 6 Nov 2010 20:47:42 -0000 1.10 --- build.xml 6 Nov 2010 20:51:49 -0000 1.11 *************** *** 45,54 **** <echo message="Hudson home directory ${hudson.home.dir}"/> <!-- build JettyStarter for dependencies --> ! <ant dir="../../JettyStarter" target="hudson" inheritAll="false" /> <!-- call the default target of this file --> <ant antfile="build.xml" inheritall="false"> <!-- The jar with the SageTV APIs is placed in the Hudson home directory --> <property name="sage.lib.dir" value="${hudson.home.dir}"/> ! <property name="jetty.lib.dir" location="../../JettyStarter/build/zip/JARs/"/> <property name="build.number" value="${env.BUILD_NUMBER}"/> </ant> --- 45,54 ---- <echo message="Hudson home directory ${hudson.home.dir}"/> <!-- build JettyStarter for dependencies --> ! <ant dir="../../JettyStarter/workspace/" target="hudson" inheritAll="false" /> <!-- call the default target of this file --> <ant antfile="build.xml" inheritall="false"> <!-- The jar with the SageTV APIs is placed in the Hudson home directory --> <property name="sage.lib.dir" value="${hudson.home.dir}"/> ! <property name="jetty.lib.dir" location="../../JettyStarter/workspace/build/zip/JARs/"/> <property name="build.number" value="${env.BUILD_NUMBER}"/> </ant> |
From: jreichen <jre...@us...> - 2010-11-06 20:47:50
|
Update of /cvsroot/sageplugins/webapp In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv2388 Modified Files: build.xml Log Message: Fix JettyStarter build.xml location for Hudson builds Index: build.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/build.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** build.xml 6 Nov 2010 20:44:00 -0000 1.9 --- build.xml 6 Nov 2010 20:47:42 -0000 1.10 *************** *** 45,49 **** <echo message="Hudson home directory ${hudson.home.dir}"/> <!-- build JettyStarter for dependencies --> ! <ant dir="../JettyStarter" target="hudson" inheritAll="false" /> <!-- call the default target of this file --> <ant antfile="build.xml" inheritall="false"> --- 45,49 ---- <echo message="Hudson home directory ${hudson.home.dir}"/> <!-- build JettyStarter for dependencies --> ! <ant dir="../../JettyStarter" target="hudson" inheritAll="false" /> <!-- call the default target of this file --> <ant antfile="build.xml" inheritall="false"> |
From: jreichen <jre...@us...> - 2010-11-06 20:44:08
|
Update of /cvsroot/sageplugins/webapp In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv1322 Modified Files: build.xml Log Message: Fix jetty.lib.dir for Hudson builds Index: build.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/build.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** build.xml 5 Nov 2010 03:08:01 -0000 1.8 --- build.xml 6 Nov 2010 20:44:00 -0000 1.9 *************** *** 50,53 **** --- 50,54 ---- <!-- The jar with the SageTV APIs is placed in the Hudson home directory --> <property name="sage.lib.dir" value="${hudson.home.dir}"/> + <property name="jetty.lib.dir" location="../../JettyStarter/build/zip/JARs/"/> <property name="build.number" value="${env.BUILD_NUMBER}"/> </ant> |
From: jreichen <jre...@us...> - 2010-11-06 03:53:40
|
Update of /cvsroot/sageplugins/webapp/resources/plugin In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv32209/resources/plugin Modified Files: plugin.xml Log Message: Add iPad screenshot Index: plugin.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/resources/plugin/plugin.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** plugin.xml 5 Nov 2010 03:08:01 -0000 1.5 --- plugin.xml 6 Nov 2010 03:53:31 -0000 1.6 *************** *** 12,15 **** --- 12,16 ---- <Screenshot title="Main Menu">http://sageplugins.sourceforge.net/screenshots/mobileweb/menu.png</Screenshot> <Screenshot title="iPhone Details Page">http://sageplugins.sourceforge.net/screenshots/mobileweb/iPhone%20Details%20Page.png</Screenshot> + <Screenshot title="iPad Details Page">http://sageplugins.sourceforge.net/screenshots/mobileweb/iPad%20Details%20Page.png</Screenshot> <Webpage title="Forum Support Thread">http://forums.sagetv.com/forums/showthread.php?t=48460</Webpage> <Webpage title="Mobile Web Interface Wiki">http://tools.assembla.com/sageplugins/wiki/MobileWebInterface</Webpage> |
From: jreichen <jre...@us...> - 2010-11-05 03:28:22
|
Update of /cvsroot/sageplugins/webapp In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv24048 Modified Files: .classpath Log Message: Index: .classpath =================================================================== RCS file: /cvsroot/sageplugins/webapp/.classpath,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** .classpath 22 Nov 2008 22:23:12 -0000 1.1 --- .classpath 5 Nov 2010 03:28:14 -0000 1.2 *************** *** 8,14 **** <classpathentry combineaccessrules="false" kind="src" path="/webserver"/> <classpathentry kind="lib" path="/JettyStarter/lib/jsp-api-2.1.jar"/> - <classpathentry kind="lib" path="/JettyStarter/lib/servlet-api-2.5-6.1.11.jar"/> <classpathentry kind="lib" path="/JettyStarter/lib/jsp-2.1.jar"/> <classpathentry kind="lib" path="/JettyStarter/lib/core-3.1.1.jar"/> <classpathentry kind="output" path="build/classes"/> </classpath> --- 8,16 ---- <classpathentry combineaccessrules="false" kind="src" path="/webserver"/> <classpathentry kind="lib" path="/JettyStarter/lib/jsp-api-2.1.jar"/> <classpathentry kind="lib" path="/JettyStarter/lib/jsp-2.1.jar"/> <classpathentry kind="lib" path="/JettyStarter/lib/core-3.1.1.jar"/> + <classpathentry kind="lib" path="/JettyStarter/lib/jetty-6.1.19.jar" sourcepath="/JettyStarter/jetty-6.1.19-src.zip"/> + <classpathentry kind="lib" path="/JettyStarter/lib/jetty-util-6.1.19.jar" sourcepath="/JettyStarter/jetty-6.1.19-src.zip"/> + <classpathentry kind="lib" path="/JettyStarter/lib/servlet-api-2.5-6.1.19.jar" sourcepath="/JettyStarter/jetty-6.1.19-src.zip"/> <classpathentry kind="output" path="build/classes"/> </classpath> |
From: jreichen <jre...@us...> - 2010-11-05 03:10:48
|
Update of /cvsroot/sageplugins/webapp/WebContent/js In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18496/WebContent/js Added Files: sagevideo.js jquery-1.4.2.js jquery.form.js Log Message: Version 2.0.0 --- NEW FILE: sagevideo.js --- /** * Wrapper class for the HTML 5 video element with Sage-specific features * @return */ function SageVideo(videoElementId, sageAiringId/*, callback*/) { this.videoElementId = videoElementId; this.airingId = sageAiringId; this.init(); } SageVideo.prototype.init = function() { this.videoElement = this.getVideoElement(); if (this.videoElement != null) { this.videoElement.addEventListener('touchstart', this, false); this.videoElement.addEventListener('touchend', this, false); this.videoElement.addEventListener('canplaythrough', this, false); this.videoElement.addEventListener('canplay', this, false); this.videoElement.addEventListener('loadstart', this, false); this.videoElement.addEventListener('loadeddata', this, false); this.videoElement.addEventListener('loadedmetadata', this, false); this.videoElement.addEventListener('error', this, false); this.videoElement.addEventListener('pause', this, false); this.videoElement.addEventListener('play', this, false); this.videoElement.addEventListener('playing', this, false); this.videoElement.addEventListener('progress', this, false); this.videoElement.addEventListener('timeupdate', this, false); this.videoElement.addEventListener('durationchange', this, false); this.videoElement.addEventListener('ended', this, false); this.videoElement.addEventListener('ratechange', this, false); this.videoElement.addEventListener('seeked', this, false); this.videoElement.addEventListener('seeking', this, false); this.videoElement.addEventListener('stalled', this, false); this.videoElement.addEventListener('suspend', this, false); this.videoElement.addEventListener('waiting', this, false); } } SageVideo.prototype.handleEvent = function(event) { log('event.type = ' + event.type); if (typeof(this[event.type]) === 'function') { return this[event.type](event); } }; SageVideo.prototype.getVideoElement = function() { videoElement = document.getElementById(this.videoElementId); return videoElement; }; SageVideo.prototype.touchstart = function(event) { this.videoElement = this.getVideoElement(); this.videoElement.className = 'tapButton highlighted'; }; SageVideo.prototype.touchend = function(event) { this.videoElement = this.getVideoElement(); this.videoElement.className = 'tapButton'; }; /*SageVideo.prototype.setLatestWatchedTime = function(time) { this.latestWatchedTime = time / 1000; };*/ // canplaythrough - can play, won't have to buffer anymore SageVideo.prototype.canplaythrough = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; // this.statusElement = document.getElementById("status"); // this.statusElement.className = "progress hidden"; this.printElementCurrentTime(); }; // canplay - can play, but will eventually have to buffer SageVideo.prototype.canplay = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; // this.statusElement = document.getElementById("status"); // this.statusElement.className = "progress hidden"; this.printElementCurrentTime(); }; SageVideo.prototype.play = function(event) { log("onPlay"); this.videoElement = this.getVideoElement(); if ((this.videoElement.seekable != null) && (this.videoElement.seekable.length > 0)) { // doesn't work on iPhone 4 because seekable TimeRanges "Array" is empty this.videoElement.currentTime = this.currentTime; this.postClearWatched(); } this.printElementCurrentTime(); }; SageVideo.prototype.playing = function(event) { this.printElementCurrentTime(); }; // progress - fetching media SageVideo.prototype.progress = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; this.printElementCurrentTime(); }; // loadeddata - can render media data at current playback position SageVideo.prototype.loadeddata = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; this.printElementCurrentTime(); }; // loadedmetadata - now we know duration, height, width, and more SageVideo.prototype.loadedmetadata = function(event) { // this.setLatestWatchedTime(500000); this.videoElement = this.getVideoElement(); if ((this.videoElement.seekable != null) && (this.videoElement.seekable.length > 0)) { // doesn't work on iPhone 4 because seekable TimeRanges "Array" is empty this.videoElement.currentTime = this.currentTime; this.postClearWatched(); } this.printElementCurrentTime(); }; // durationchange - new info about the duration SageVideo.prototype.durationchange = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; // this.videoElement.currentTime = this.currentTime; this.printElementCurrentTime(); }; // loadstart - begin loading media data SageVideo.prototype.loadstart = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; this.printElementCurrentTime(); }; SageVideo.prototype.timeupdate = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; this.currentTime = this.videoElement.currentTime; this.printElementCurrentTime(); }; SageVideo.prototype.pause = function(event) { // this.setLatestWatchedTime(500000); // this.videoElement.currentTime = this.latestWatchedTime; // this.latestWatchedTime = time / 1000; this.printElementCurrentTime(); this.postLatestWatchedTime(); }; SageVideo.prototype.ended = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.ratechange = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.seeked = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.seeking = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.stalled = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.suspend = function(event) { this.printElementCurrentTime(); }; SageVideo.prototype.waiting = function(event) { // this.videoElement = this.getVideoElement(); // this.statusElement = document.getElementById("status"); // this.statusElement.style.left = (this.videoElement.style.width - this.statusElement.style.width) / 2 + this.videoElement.style.left; // this.statusElement.style.top = (this.videoElement.style.height - this.statusElement.style.height) / 2 + this.videoElement.style.top; // this.statusElement.className = "progress showing"; this.printElementCurrentTime(); }; SageVideo.prototype.setCurrentTime = function(value) { log('currentTime = ' + value); this.currentTime = value / 1000; } SageVideo.prototype.printElementCurrentTime = function() { this.videoElement = this.getVideoElement(); log('this.videoElement.currentTime = ' + this.videoElement.currentTime); } SageVideo.prototype.playPause = function() { this.videoElement = this.getVideoElement(); if (this.videoElement.paused) { this.videoElement.play(); } else { this.videoElement.pause(); } this.printElementCurrentTime(); } SageVideo.prototype.postLatestWatchedTime = function() { this.videoElement = this.getVideoElement(); if (this.videoElement == null) { return; } // assumes the Command servlet is registered in web.xml at the same path as the current page var path = location.href.substring(0, location.href.lastIndexOf('/') + 1); $.ajax({ type: "POST", url: path + "Command", data: "command=SetLatestWatchedTime&AiringId=" + this.airingId + "&LatestWatchedTime=" + this.videoElement.currentTime, success: function(msg){ // alert( "Data Saved: " + msg ); }, error: function(msg){ alert( "Data Not Saved: " + msg ); } }); } SageVideo.prototype.postClearWatched = function() { log("postClearWatched"); // assumes the Command servlet is registered in web.xml at the same path as the current page var path = location.href.substring(0, location.href.lastIndexOf('/') + 1); log("Clearing watched status for AiringId " + this.airingId + ". " + path); $.ajax({ type: "POST", url: path + "Command", data: "command=ClearWatched&AiringId=" + this.airingId, success: function(msg){ // alert( "Data Saved: " + msg ); }, error: function(msg){ alert( "Data Not Saved: " + msg ); } }); } function log(msg) { /* var logElem = document.getElementById("log"); if (logElem != null) { var newElem2 = document.createElement("div"); newElem2.setAttribute('style', 'padding-bottom: 10px;'); newElem2.innerHTML = msg + "<br/>"; logElem.appendChild(newElem2); } */ } --- NEW FILE: jquery-1.4.2.js --- /*! * jQuery JavaScript Library v1.4.2 * http://jquery.com/ * * Copyright 2010, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Sat Feb 13 22:33:48 2010 -0500 */ (function( window, undefined ) { // Define a local copy of jQuery var jQuery = function( selector, context ) { [...6201 lines suppressed...] Math.max( elem.documentElement["client" + name], elem.body["scroll" + name], elem.documentElement["scroll" + name], elem.body["offset" + name], elem.documentElement["offset" + name] ) : // Get or set width or height on the element size === undefined ? // Get width or height on the element jQuery.css( elem, type ) : // Set the width or height on the element (default to pixels if value is unitless) this.css( type, typeof size === "string" ? size : size + "px" ); }; }); // Expose jQuery to the global object window.jQuery = window.$ = jQuery; })(window); --- NEW FILE: jquery.form.js --- /*! * jQuery Form Plugin * version: 2.45 (09-AUG-2010) * @requires jQuery v1.3.2 or later * * Examples and documentation at: http://malsup.com/jquery/form/ * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ ;(function($) { /* Usage Note: ----------- Do not use both ajaxSubmit and ajaxForm on the same form. These functions are intended to be exclusive. Use ajaxSubmit if you want to bind your own submit handler to the form. For example, $(document).ready(function() { $('#myForm').bind('submit', function() { $(this).ajaxSubmit({ target: '#output' }); return false; // <-- important! }); }); Use ajaxForm when you want the plugin to manage all the event binding for you. For example, $(document).ready(function() { $('#myForm').ajaxForm({ target: '#output' }); }); When using ajaxForm, the ajaxSubmit function will be invoked for you at the appropriate time. */ /** * ajaxSubmit() provides a mechanism for immediately submitting * an HTML form using AJAX. */ $.fn.ajaxSubmit = function(options) { // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) if (!this.length) { log('ajaxSubmit: skipping submit process - no element selected'); return this; } if (typeof options == 'function') { options = { success: options }; } var url = $.trim(this.attr('action')); if (url) { // clean url (don't include hash vaue) url = (url.match(/^([^#]+)/)||[])[1]; } url = url || window.location.href || ''; options = $.extend(true, { url: url, type: this.attr('method') || 'GET', iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' }, options); // hook for manipulating the form data before it is extracted; // convenient for use with rich editors like tinyMCE or FCKEditor var veto = {}; this.trigger('form-pre-serialize', [this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); return this; } // provide opportunity to alter form data before it is serialized if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { log('ajaxSubmit: submit aborted via beforeSerialize callback'); return this; } var n,v,a = this.formToArray(options.semantic); if (options.data) { options.extraData = options.data; for (n in options.data) { if(options.data[n] instanceof Array) { for (var k in options.data[n]) { a.push( { name: n, value: options.data[n][k] } ); } } else { v = options.data[n]; v = $.isFunction(v) ? v() : v; // if value is fn, invoke it a.push( { name: n, value: v } ); } } } // give pre-submit callback an opportunity to abort the submit if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { log('ajaxSubmit: submit aborted via beforeSubmit callback'); return this; } // fire vetoable 'validate' event this.trigger('form-submit-validate', [a, this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); return this; } var q = $.param(a); if (options.type.toUpperCase() == 'GET') { options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; options.data = null; // data is null for 'get' } else { options.data = q; // data is the query string for 'post' } var $form = this, callbacks = []; if (options.resetForm) { callbacks.push(function() { $form.resetForm(); }); } if (options.clearForm) { callbacks.push(function() { $form.clearForm(); }); } // perform a load on the target only if dataType is not provided if (!options.dataType && options.target) { var oldSuccess = options.success || function(){}; callbacks.push(function(data) { var fn = options.replaceTarget ? 'replaceWith' : 'html'; $(options.target)[fn](data).each(oldSuccess, arguments); }); } else if (options.success) { callbacks.push(options.success); } options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg var context = options.context || options; // jQuery 1.4+ supports scope context for (var i=0, max=callbacks.length; i < max; i++) { callbacks[i].apply(context, [data, status, xhr || $form, $form]); } }; // are there files to upload? var fileInputs = $('input:file', this).length > 0; var mp = 'multipart/form-data'; var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); // options.iframe allows user to force iframe mode // 06-NOV-09: now defaulting to iframe mode if file input is detected if (options.iframe !== false && (fileInputs || options.iframe || multipart)) { // hack to fix Safari hang (thanks to Tim Molendijk for this) // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d if (options.closeKeepAlive) { $.get(options.closeKeepAlive, fileUpload); } else { fileUpload(); } } else { $.ajax(options); } // fire 'notify' event this.trigger('form-submit-notify', [this, options]); return this; // private function for handling file uploads (hat tip to YAHOO!) function fileUpload() { var form = $form[0]; if ($(':input[name=submit],:input[id=submit]', form).length) { // if there is an input with a name or id of 'submit' then we won't be // able to invoke the submit fn on the form (at least not x-browser) alert('Error: Form elements must not have name or id of "submit".'); return; } var s = $.extend(true, {}, $.ajaxSettings, options); s.context = s.context || s; var id = 'jqFormIO' + (new Date().getTime()); var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ s.iframeSrc +'" onload="var f = jQuery(this).data(\'form-plugin-onload\'); if (f) f();" />'); var io = $io[0]; $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' }); var xhr = { // mock object aborted: 0, responseText: null, responseXML: null, status: 0, statusText: 'n/a', getAllResponseHeaders: function() {}, getResponseHeader: function() {}, setRequestHeader: function() {}, abort: function() { this.aborted = 1; $io.attr('src', s.iframeSrc); // abort op in progress } }; var g = s.global; // trigger ajax global events so that activity/block indicators work like normal if (g && ! $.active++) { $.event.trigger("ajaxStart"); } if (g) { $.event.trigger("ajaxSend", [xhr, s]); } if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) { if (s.global) { $.active--; } return; } if (xhr.aborted) { return; } var cbInvoked = false; var timedOut = 0; // add submitting element to data if we know it var sub = form.clk; if (sub) { var n = sub.name; if (n && !sub.disabled) { s.extraData = s.extraData || {}; s.extraData[n] = sub.value; if (sub.type == "image") { s.extraData[n+'.x'] = form.clk_x; s.extraData[n+'.y'] = form.clk_y; } } } // take a breath so that pending repaints get some cpu time before the upload starts function doSubmit() { // make sure form attrs are set var t = $form.attr('target'), a = $form.attr('action'); // update form attrs in IE friendly way form.setAttribute('target',id); if (form.getAttribute('method') != 'POST') { form.setAttribute('method', 'POST'); } if (form.getAttribute('action') != s.url) { form.setAttribute('action', s.url); } // ie borks in some cases when setting encoding if (! s.skipEncodingOverride) { $form.attr({ encoding: 'multipart/form-data', enctype: 'multipart/form-data' }); } // support timout if (s.timeout) { setTimeout(function() { timedOut = true; cb(); }, s.timeout); } // add "extra" data to form if provided in options var extraInputs = []; try { if (s.extraData) { for (var n in s.extraData) { extraInputs.push( $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />') .appendTo(form)[0]); } } // add iframe to doc and submit the form $io.appendTo('body'); $io.data('form-plugin-onload', cb); form.submit(); } finally { // reset attrs and remove "extra" input elements form.setAttribute('action',a); if(t) { form.setAttribute('target', t); } else { $form.removeAttr('target'); } $(extraInputs).remove(); } } if (s.forceSync) { doSubmit(); } else { setTimeout(doSubmit, 10); // this lets dom updates render } var data, doc, domCheckCount = 100; function cb() { if (cbInvoked) { return; } $io.removeData('form-plugin-onload'); var ok = true; try { if (timedOut) { throw 'timeout'; } // extract the server response from the iframe doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document; var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc); log('isXml='+isXml); if (!isXml && (doc.body == null || doc.body.innerHTML == '')) { if (--domCheckCount) { // in some browsers (Opera) the iframe DOM is not always traversable when // the onload callback fires, so we loop a bit to accommodate log('requeing onLoad callback, DOM not available'); setTimeout(cb, 250); return; } log('Could not access iframe DOM after 100 tries.'); throw 'DOMException: not available'; } log('response detected'); cbInvoked = true; xhr.responseText = doc.documentElement ? doc.documentElement.innerHTML : null; xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc; xhr.getResponseHeader = function(header){ var headers = {'content-type': s.dataType}; return headers[header]; }; var scr = /(json|script)/.test(s.dataType); if (scr || s.textarea) { // see if user embedded response in textarea var ta = doc.getElementsByTagName('textarea')[0]; if (ta) { xhr.responseText = ta.value; } else if (scr) { // account for browsers injecting pre around json response var pre = doc.getElementsByTagName('pre')[0]; if (pre) { xhr.responseText = pre.innerHTML; } } } else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } data = $.httpData(xhr, s.dataType); } catch(e){ log('error caught:',e); ok = false; xhr.error = e; $.handleError(s, xhr, 'error', e); } // ordering of these callbacks/triggers is odd, but that's how $.ajax does it if (ok) { s.success.call(s.context, data, 'success'); if (g) { $.event.trigger("ajaxSuccess", [xhr, s]); } } if (g) { $.event.trigger("ajaxComplete", [xhr, s]); } if (g && ! --$.active) { $.event.trigger("ajaxStop"); } if (s.complete) { s.complete.call(s.context, xhr, ok ? 'success' : 'error'); } // clean up setTimeout(function() { $io.removeData('form-plugin-onload'); $io.remove(); xhr.responseXML = null; }, 100); } function toXml(s, doc) { if (window.ActiveXObject) { doc = new ActiveXObject('Microsoft.XMLDOM'); doc.async = 'false'; doc.loadXML(s); } else { doc = (new DOMParser()).parseFromString(s, 'text/xml'); } return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null; } } }; /** * ajaxForm() provides a mechanism for fully automating form submission. * * The advantages of using this method instead of ajaxSubmit() are: * * 1: This method will include coordinates for <input type="image" /> elements (if the element * is used to submit the form). * 2. This method will include the submit element's name/value data (for the element that was * used to submit the form). * 3. This method binds the submit() method to the form for you. * * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely * passes the options argument along after properly binding events for submit elements and * the form itself. */ $.fn.ajaxForm = function(options) { // in jQuery 1.3+ we can fix mistakes with the ready state if (this.length === 0) { var o = { s: this.selector, c: this.context }; if (!$.isReady && o.s) { log('DOM not ready, queuing ajaxForm'); $(function() { $(o.s,o.c).ajaxForm(options); }); return this; } // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready() log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)')); return this; } return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) { if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed e.preventDefault(); $(this).ajaxSubmit(options); } }).bind('click.form-plugin', function(e) { var target = e.target; var $el = $(target); if (!($el.is(":submit,input:image"))) { // is this a child element of the submit el? (ex: a span within a button) var t = $el.closest(':submit'); if (t.length == 0) { return; } target = t[0]; } var form = this; form.clk = target; if (target.type == 'image') { if (e.offsetX != undefined) { form.clk_x = e.offsetX; form.clk_y = e.offsetY; } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin var offset = $el.offset(); form.clk_x = e.pageX - offset.left; form.clk_y = e.pageY - offset.top; } else { form.clk_x = e.pageX - target.offsetLeft; form.clk_y = e.pageY - target.offsetTop; } } // clear form vars setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100); }); }; // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm $.fn.ajaxFormUnbind = function() { return this.unbind('submit.form-plugin click.form-plugin'); }; /** * formToArray() gathers form element data into an array of objects that can * be passed to any of the following ajax functions: $.get, $.post, or load. * Each object in the array has both a 'name' and 'value' property. An example of * an array for a simple login form might be: * * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] * * It is this array that is passed to pre-submit callback functions provided to the * ajaxSubmit() and ajaxForm() methods. */ $.fn.formToArray = function(semantic) { var a = []; if (this.length === 0) { return a; } var form = this[0]; var els = semantic ? form.getElementsByTagName('*') : form.elements; if (!els) { return a; } var i,j,n,v,el; for(i=0, max=els.length; i < max; i++) { el = els[i]; n = el.name; if (!n) { continue; } if (semantic && form.clk && el.type == "image") { // handle image inputs on the fly when semantic == true if(!el.disabled && form.clk == el) { a.push({name: n, value: $(el).val()}); a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); } continue; } v = $.fieldValue(el, true); if (v && v.constructor == Array) { for(j=0, jmax=v.length; j < jmax; j++) { a.push({name: n, value: v[j]}); } } else if (v !== null && typeof v != 'undefined') { a.push({name: n, value: v}); } } if (!semantic && form.clk) { // input type=='image' are not found in elements array! handle it here var $input = $(form.clk), input = $input[0]; n = input.name; if (n && !input.disabled && input.type == 'image') { a.push({name: n, value: $input.val()}); a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); } } return a; }; /** * Serializes form data into a 'submittable' string. This method will return a string * in the format: name1=value1&name2=value2 */ $.fn.formSerialize = function(semantic) { //hand off to jQuery.param for proper encoding return $.param(this.formToArray(semantic)); }; /** * Serializes all field elements in the jQuery object into a query string. * This method will return a string in the format: name1=value1&name2=value2 */ $.fn.fieldSerialize = function(successful) { var a = []; this.each(function() { var n = this.name; if (!n) { return; } var v = $.fieldValue(this, successful); if (v && v.constructor == Array) { for (var i=0,max=v.length; i < max; i++) { a.push({name: n, value: v[i]}); } } else if (v !== null && typeof v != 'undefined') { a.push({name: this.name, value: v}); } }); //hand off to jQuery.param for proper encoding return $.param(a); }; /** * Returns the value(s) of the element in the matched set. For example, consider the following form: * * <form><fieldset> * <input name="A" type="text" /> * <input name="A" type="text" /> * <input name="B" type="checkbox" value="B1" /> * <input name="B" type="checkbox" value="B2"/> * <input name="C" type="radio" value="C1" /> * <input name="C" type="radio" value="C2" /> * </fieldset></form> * * var v = $(':text').fieldValue(); * // if no values are entered into the text inputs * v == ['',''] * // if values entered into the text inputs are 'foo' and 'bar' * v == ['foo','bar'] * * var v = $(':checkbox').fieldValue(); * // if neither checkbox is checked * v === undefined * // if both checkboxes are checked * v == ['B1', 'B2'] * * var v = $(':radio').fieldValue(); * // if neither radio is checked * v === undefined * // if first radio is checked * v == ['C1'] * * The successful argument controls whether or not the field element must be 'successful' * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). * The default value of the successful argument is true. If this value is false the value(s) * for each element is returned. * * Note: This method *always* returns an array. If no valid value can be determined the * array will be empty, otherwise it will contain one or more values. */ $.fn.fieldValue = function(successful) { for (var val=[], i=0, max=this.length; i < max; i++) { var el = this[i]; var v = $.fieldValue(el, successful); if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) { continue; } v.constructor == Array ? $.merge(val, v) : val.push(v); } return val; }; /** * Returns the value of the field element. */ $.fieldValue = function(el, successful) { var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); if (successful === undefined) { successful = true; } if (successful && (!n || el.disabled || t == 'reset' || t == 'button' || (t == 'checkbox' || t == 'radio') && !el.checked || (t == 'submit' || t == 'image') && el.form && el.form.clk != el || tag == 'select' && el.selectedIndex == -1)) { return null; } if (tag == 'select') { var index = el.selectedIndex; if (index < 0) { return null; } var a = [], ops = el.options; var one = (t == 'select-one'); var max = (one ? index+1 : ops.length); for(var i=(one ? index : 0); i < max; i++) { var op = ops[i]; if (op.selected) { var v = op.value; if (!v) { // extra pain for IE... v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value; } if (one) { return v; } a.push(v); } } return a; } return $(el).val(); }; /** * Clears the form data. Takes the following actions on the form's input fields: * - input text fields will have their 'value' property set to the empty string * - select elements will have their 'selectedIndex' property set to -1 * - checkbox and radio inputs will have their 'checked' property set to false * - inputs of type submit, button, reset, and hidden will *not* be effected * - button elements will *not* be effected */ $.fn.clearForm = function() { return this.each(function() { $('input,select,textarea', this).clearFields(); }); }; /** * Clears the selected form elements. */ $.fn.clearFields = $.fn.clearInputs = function() { return this.each(function() { var t = this.type, tag = this.tagName.toLowerCase(); if (t == 'text' || t == 'password' || tag == 'textarea') { this.value = ''; } else if (t == 'checkbox' || t == 'radio') { this.checked = false; } else if (tag == 'select') { this.selectedIndex = -1; } }); }; /** * Resets the form data. Causes all form elements to be reset to their original value. */ $.fn.resetForm = function() { return this.each(function() { // guard against an input with the name of 'reset' // note that IE reports the reset function as an 'object' if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) { this.reset(); } }); }; /** * Enables or disables any matching elements. */ $.fn.enable = function(b) { if (b === undefined) { b = true; } return this.each(function() { this.disabled = !b; }); }; /** * Checks/unchecks any matching checkboxes or radio buttons and * selects/deselects and matching option elements. */ $.fn.selected = function(select) { if (select === undefined) { select = true; } return this.each(function() { var t = this.type; if (t == 'checkbox' || t == 'radio') { this.checked = select; } else if (this.tagName.toLowerCase() == 'option') { var $sel = $(this).parent('select'); if (select && $sel[0] && $sel[0].type == 'select-one') { // deselect all other options $sel.find('option').selected(false); } this.selected = select; } }); }; // helper fn for console logging // set $.fn.ajaxSubmit.debug to true to enable debug logging function log() { if ($.fn.ajaxSubmit.debug) { var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,''); if (window.console && window.console.log) { window.console.log(msg); } else if (window.opera && window.opera.postError) { window.opera.postError(msg); } } }; })(jQuery); |
Update of /cvsroot/sageplugins/webapp/WebContent/m/images In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18496/WebContent/m/images Added Files: HeaderBgMobile.png Rating_TVM.gif GoRecordings.png Rating_PG.gif Rating_R.gif MarkerFirstRun.png MarkerSysAlert2.png Rating_NC-17.gif SageLogo256smaller.png BackgroundGrey.jpeg icon_empty_focus.png Rating_PG-13.gif Rating_TVG.gif Rating_NR.gif BackgroundMobile.jpg TitleBgMobile.png Rating_TV14.gif GoScheduleMobile.png RecordFavRerunMobile.png SearchIcon.png RecordFavAll.png ButtonBgMobile.png ConflictUnresolvedMobile.png RecordAnyMobile.png MarkerArchivedMobile.png MarkerHDTV.png ConflictResolved.png MarkerFirstRunMobile.png SageLogo256small.png RecordFavAllMobile.png MarkerArchived.png MarkerSysAlert1.png RecordFavFirstMobile.png GoMusicLibMobile.png BlankMobile.png MarkerDelete.png MarkerSysAlert2Mobile.png RecordFavRerun.png GoPhotoLibMobile.png RecordingNowMobile.png MarkerDontLike.png MarkerDontLikeMobile.png GoVideoLib.png GoVideoLibMobile.png GoMusicLib.png RecordMR.png RecordAny.png Rating_TVY7FV.gif Rating_TVY7.gif OptionsBgMobile.png GoRecordingsMobile.png video.png Rating_G.gif Rating_TVPG.gif DividerBgMobileGloss.png Background.jpg ConflictUnresolved.png MarkerHDTVMobile.png spinner.gif ipod.png RecordFavFirst.png GoPhotoLib.png GoSchedule.png VideoMobile.png MarkerWatched.png RecordingNow.png MarkerSysAlert1Mobile.png SearchIconMobile.png RecordMRMobile.png MarkerDeleteMobile.png ipodMobile.png Rating_X.gif MarkerSysAlert3.png DividerBgMobile.png ConflictResolvedMobile.png MarkerWatchedMobile.png Rating_TVY.gif SageLogo256.png MarkerSysAlert3Mobile.png Log Message: Version 2.0.0 --- NEW FILE: RecordingNow.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordAnyMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert2.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert1.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: BackgroundGrey.jpeg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoScheduleMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ConflictUnresolved.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ipodMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerWatched.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavAllMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVY.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordAny.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerWatchedMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerDontLike.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: icon_empty_focus.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: spinner.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_PG-13.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoRecordingsMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert3Mobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavFirstMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert3.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavFirst.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoMusicLibMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: SageLogo256.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoRecordings.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerDontLikeMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerDeleteMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoMusicLib.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoVideoLib.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerFirstRun.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: SageLogo256smaller.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVM.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoSchedule.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_X.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_PG.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Background.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: video.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordMR.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerFirstRunMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: SearchIcon.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavRerunMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: BackgroundMobile.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoPhotoLib.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_R.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: OptionsBgMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerArchivedMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerDelete.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerArchived.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ConflictResolved.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerHDTV.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: SearchIconMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: TitleBgMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_G.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordingNowMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: HeaderBgMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ButtonBgMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavRerun.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TV14.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ipod.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ConflictResolvedMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: DividerBgMobileGloss.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVY7.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoVideoLibMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ConflictUnresolvedMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_NC-17.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerHDTVMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: SageLogo256small.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: VideoMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVPG.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVG.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: DividerBgMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: BlankMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordMRMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert1Mobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_NR.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MarkerSysAlert2Mobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: RecordFavAll.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: GoPhotoLibMobile.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Rating_TVY7FV.gif --- (This appears to be a binary file; contents omitted.) |
From: jreichen <jre...@us...> - 2010-11-05 03:10:47
|
Update of /cvsroot/sageplugins/webapp/src/sagex/webserver/command In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18496/src/sagex/webserver/command Added Files: SetLatestWatchedTimeCommand.java Log Message: Version 2.0.0 --- NEW FILE: SetLatestWatchedTimeCommand.java --- package sagex.webserver.command; import java.util.Date; import sage.SageTV; public class SetLatestWatchedTimeCommand extends AbstractRecordCommand { @Override public void doCommand() throws Exception { Long realWatchedStartTime = ((Long) SageTV.api("GetRealWatchedStartTime", new Object[] {getSageObject()})); Long scheduleStartTime = ((Long) SageTV.api("GetScheduleStartTime", new Object[] {getSageObject()})); String latestWatchedTimeString = getParameter("LatestWatchedTime"); Long latestWatchedTime = 0L; if ((realWatchedStartTime == null) || (realWatchedStartTime.longValue() == 0)) { realWatchedStartTime = new Date().getTime(); } if (latestWatchedTimeString != null) { Double d = Double.parseDouble(latestWatchedTimeString); latestWatchedTime = d.longValue(); } SageTV.api("SetWatchedTimes", new Object[] {getSageObject(), scheduleStartTime + latestWatchedTime * 1000, realWatchedStartTime}); } } |
From: jreichen <jre...@us...> - 2010-11-05 03:10:47
|
Update of /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18496/WebContent/WEB-INF/jspf/m Added Files: htmlheaders.jspf Log Message: Version 2.0.0 --- NEW FILE: htmlheaders.jspf --- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%-- - Determine stylesheets based on device or browser type --%> <c:set var="userAgent" value="${header['User-Agent']}"/> <c:set var="isWebKit" value="${!empty userAgent and fn:contains(userAgent, 'WebKit')}"/> <c:set var="isKHTML" value="${!empty userAgent and fn:contains(userAgent, 'KHTML')}"/> <c:set var="isIPhone" value="${!empty userAgent and (fn:contains(userAgent, 'iPhone') or fn:contains(userAgent, 'iPod'))}"/> <c:set var="isIPad" value="${!empty userAgent and (fn:contains(userAgent, 'iPad'))}"/> <c:set var="isChrome" value="${!empty userAgent and fn:contains(userAgent, 'Chrome')}"/> <c:set var="isAndroid" value="${!empty userAgent and fn:contains(userAgent, 'Android')}"/> <c:set var="isMobile" value="${!empty userAgent and fn:contains(userAgent, 'Mobile')}"/> <c:set var="isGecko" value="${!empty userAgent and fn:contains(userAgent, 'Gecko')}"/> <c:set var="isMozilla" value="${!empty userAgent and fn:contains(userAgent, 'Mozilla')}"/> <c:set var="isFirefox" value="${!empty userAgent and fn:contains(userAgent, 'Firefox')}"/> <c:set var="isSafari" value="${!empty userAgent and fn:contains(userAgent, 'Safari') and !isChrome}"/> <c:set var="isDesktopSafari" value="${isSafari and !isMobile}"/> <c:set var="isMobileSafari" value="${isSafari and isMobile}"/> <c:choose> <c:when test="${isIPhone or isAndroid or isChrome or isWebKit or isKHTML}"> <!-- TODO: iPhone viewport, background, icon --> <%--meta name="viewport" content="user-scalable=no, width=device-width" /--%> <link rel="apple-touch-icon" href="${cp}/images/SageIcon64.png" /> <!-- iPhone home screen icon --> <link rel="apple-touch-startup-image" href="${cp}/images/SageStartupLogo256-mgopenmodata13.png" /> <!-- iPhone startup graphic --> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <%--meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/--%> <meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" name="viewport"/> <%--link rel="stylesheet" type="text/css" media="screen" charset="utf-8" href="${cp}/themes/sagem/theme.css"/--%> <script src="${cp}/js/jquery-1.4.2.js" type="text/javascript" charset="utf-8"></script> <script src="${cp}/js/jquery.form.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" media="screen" charset="utf-8" href="${cp}/m/css/sage_mobile.css"/> <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </c:when> <c:when test="${isIPhone}"> <!-- iPhone --> </c:when> <c:otherwise> <script src="${cp}/js/jquery-1.4.2.js" type="text/javascript" charset="utf-8"></script> <script src="${cp}/js/jquery.form.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" media="screen" charset="utf-8" href="${cp}/m/css/sage_mobile.css"/> <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </c:otherwise> </c:choose> <!-- TOOD user stylesheet from jetty/user/<context_path> --> |
From: jreichen <jre...@us...> - 2010-11-05 03:10:21
|
Update of /cvsroot/sageplugins/webapp/WebContent/js In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18239/WebContent/js Log Message: Directory /cvsroot/sageplugins/webapp/WebContent/js added to the repository |
From: jreichen <jre...@us...> - 2010-11-05 03:10:21
|
Update of /cvsroot/sageplugins/webapp/WebContent/m/images In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18239/WebContent/m/images Log Message: Directory /cvsroot/sageplugins/webapp/WebContent/m/images added to the repository |
Update of /cvsroot/sageplugins/webapp/WebContent/m In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/WebContent/m Modified Files: conflictresolution.jsp commandapplied.jsp createtimedrecording.jsp recordingschedule.jsp additionalairings.jsp searchairings.jsp favoritedetails.jsp conflicts.jsp error.jsp credits.jsp listings.jsp details.jsp home.jsp systemmessages.jsp confirm.jsp favorites.jsp manualrecordconflicts.jsp recordings.jsp commandcanceled.jsp menu.jsp conversiondetails.jsp searchrecordings.jsp convert.jsp conversions.jsp commanderror.jsp extenderdetails.jsp Log Message: Version 2.0.0 Index: favoritedetails.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/favoritedetails.jsp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** favoritedetails.jsp 17 Jul 2010 14:46:43 -0000 1.4 --- favoritedetails.jsp 5 Nov 2010 03:08:01 -0000 1.5 *************** *** 94,99 **** <title>"${favoriteDescription}" Favorite Details</title> </c:if> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 94,98 ---- <title>"${favoriteDescription}" Favorite Details</title> </c:if> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 110,115 **** </c:if> - <form method="post" action="${cp}/m/Command"> <div class="content"> <input type="hidden" name="FavoriteId" value="${param.FavoriteId}"/> <c:if test="${isNew}"> --- 109,114 ---- </c:if> <div class="content"> + <form method="post" action="${cp}/m/Command"> <input type="hidden" name="FavoriteId" value="${param.FavoriteId}"/> <c:if test="${isNew}"> *************** *** 122,131 **** </c:if> <c:if test="${isNew}"> ! <h3 style="margin: 2px; 0px; 2px; 0px;">New Favorite</h3> </c:if> <c:if test="${!isNew}"> ! <h3 style="margin: 2px; 0px; 2px; 0px;">Favorite: ${favoriteDescription}</h3> </c:if> <c:choose> <%-- --- 121,131 ---- </c:if> <c:if test="${isNew}"> ! <div class="title">New Favorite</div> </c:if> <c:if test="${!isNew}"> ! <div class="title">Favorite: ${favoriteDescription}</div> </c:if> + <div class="details"> <c:choose> <%-- *************** *** 350,355 **** <div class="label">Original File:</div> <div class="value"> ! <input type="radio" name="DeleteOriginal" value="yes"<c:if test="${isDeleteAfterFavoriteAutomaticConversion}"> checked="checked"</c:if>>Delete Original File</input><br/> ! <input type="radio" name="DeleteOriginal" value="no" id="NoDeleteOriginal"<c:if test="${!isDeleteAfterFavoriteAutomaticConversion}"> checked="checked"</c:if>>Keep Original File</input> </div> <div class="label">Destination Folder:</div> --- 350,355 ---- <div class="label">Original File:</div> <div class="value"> ! <input type="radio" name="DeleteOriginal" value="yes"<c:if test="${isDeleteAfterFavoriteAutomaticConversion}"> checked="checked"</c:if>>Delete Original File<br/> ! <input type="radio" name="DeleteOriginal" value="no" id="NoDeleteOriginal"<c:if test="${!isDeleteAfterFavoriteAutomaticConversion}"> checked="checked"</c:if>>Keep Original File </div> <div class="label">Destination Folder:</div> *************** *** 476,484 **** <p><button type="submit" value="Add Favorite">Add Favorite</button></p> </c:if> ! </div> </form> <c:if test="${!empty param.FavoriteId}"> ! <h3 class="optionstitle">Options</h3> <div class="optionsbody"> <table> --- 476,484 ---- <p><button type="submit" value="Add Favorite">Add Favorite</button></p> </c:if> ! </div> <%-- details --%> </form> <c:if test="${!empty param.FavoriteId}"> ! <div class="optionstitle">Options</div> <div class="optionsbody"> <table> *************** *** 532,536 **** </div> </c:if> ! </form> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> --- 532,536 ---- </div> </c:if> ! </div> <%-- content --%> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: additionalairings.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/additionalairings.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** additionalairings.jsp 31 Jan 2009 01:53:18 -0000 1.2 --- additionalairings.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 44,49 **** </c:if> <title>${pageTitle}</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 44,48 ---- </c:if> <title>${pageTitle}</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 71,78 **** <c:if test="${empty airings}"> <div class="content"> ! <div class="section"> ! No Airings ! </div> ! <div class="sectionbody"> There are no <c:if test="${!empty param.Period}">${periodDesc}</c:if> airings of <c:if test="${!empty param.Title}"> --- 70,74 ---- <c:if test="${empty airings}"> <div class="content"> ! <div class="simplemessage"> There are no <c:if test="${!empty param.Period}">${periodDesc}</c:if> airings of <c:if test="${!empty param.Title}"> *************** *** 93,97 **** <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <h3 class="optionstitle">Selection Options</h3> <div class="optionsbody"> <table> --- 89,93 ---- <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <div class="optionstitle">Selection Options</div> <div class="optionsbody"> <table> Index: recordings.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/recordings.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** recordings.jsp 31 Jan 2009 01:53:18 -0000 1.2 --- recordings.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 6,9 **** --- 6,11 ---- <%@ taglib prefix="sagemf" tagdir="/WEB-INF/tags/sage/api/mediafile" %> <%@ taglib prefix="sagedb" tagdir="/WEB-INF/tags/sage/api/database" %> + <%@ taglib prefix="sageseries" tagdir="/WEB-INF/tags/sage/api/seriesinfo" %> + <%@ taglib prefix="sageshow" tagdir="/WEB-INF/tags/sage/api/show" %> <%@ taglib prefix="sageutil" tagdir="/WEB-INF/tags/sage/api/utility" %> <%@ taglib prefix="sagegrpfn" tagdir="/WEB-INF/tags/sage/functions/grouping" %> *************** *** 19,24 **** </c:if> <title>${pageTitle}</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 21,25 ---- </c:if> <title>${pageTitle}</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 36,39 **** --- 37,59 ---- <sagedb:DataUnion var="recordings" dataSet1="${currentRecordings}" dataSet2="${recordings}"/> + <%-- Subheader with series image --%> + <c:if test="${!empty param.title}"> + <sagedb:FilterByMethod var="recordings" data="${recordings}" method="GetAiringTitle" matchValue="${param.title}" matchedPasses="true" /> + <c:if test="${!empty recordings}"> + <sageutil:GetElement index="0" var="firstRecording" data="${recordings}"/> + <sageshow:GetShowSeriesInfo var="seriesInfo" show="${firstRecording}"/> + <sageseries:HasSeriesImage var="hasSeriesImage" seriesInfo="${seriesInfo}"/> + <c:if test="${hasSeriesImage}"> + <c:url var="seriesImageUrl" value="${cp}/MediaFileThumbnail"> + <c:param name="series" value="${param.title}"></c:param> + </c:url> + <div class="subheader"> + <img class="imgthumb" src="${seriesImageUrl}" width="150px"/> + </div> + </c:if> + </c:if> + </c:if> + + <div class="content"> <form method="post" action="${cp}/m/Command"> <input type="hidden" name="returnto" value="${cp}/m/recordings.jsp?${pageContext.request.queryString}"/> *************** *** 63,67 **** </c:if> <c:if test="${!empty param.title}"> - <sagedb:FilterByMethod var="recordings" data="${recordings}" method="GetAiringTitle" matchValue="${param.title}" matchedPasses="true" /> <c:set var="airings" value="${recordings}"/> <%--@ include file="/WEB-INF/jspf/m/airinglist.jspf" --%> --- 83,86 ---- *************** *** 70,74 **** <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> </c:if> ! <h3 class="optionstitle">Selection Options</h3> <div class="optionsbody"> --- 89,93 ---- <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> </c:if> ! <div class="optionstitle">Selection Options</div> <div class="optionsbody"> *************** *** 132,135 **** --- 151,155 ---- </div> </form> + </div> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: credits.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/credits.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** credits.jsp 22 Nov 2008 22:12:15 -0000 1.1 --- credits.jsp 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 10,20 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Credits</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> ! <%--style> ! a, a:visited { ! text-decoration:underline; ! } ! </style--%> </head> <body> --- 10,14 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Credits</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 25,45 **** <div class="content"> ! <p> ! The SageTV Mobile Web Interface was created by jreichen. ! </p> ! <p>Various components from original web server:</p> ! <ul> ! <li>nielm, jreichen and emok</li> ! </ul> ! <p>Auto-generation of SageTV API wrappers:</p> ! <ul> ! <li>stuckless and gkusnick</li> ! </ul> ! <p>Web server engine: <a href="http://www.mortbay.org/">Jetty</a> from Mortbay Consulting</p> </div> --- 19,41 ---- <div class="content"> + <div class="details"> ! <p> ! The SageTV Mobile Web Interface was created by jreichen. ! </p> ! <p>Various components from original web server:</p> ! <ul> ! <li>nielm, jreichen and emok</li> ! </ul> ! <p>Auto-generation of SageTV API wrappers:</p> ! <ul> ! <li>stuckless and gkusnick</li> ! </ul> ! <p>Web server engine: <a href="http://www.mortbay.org/">Jetty</a> from Mortbay Consulting</p> + </div> </div> Index: listings.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/listings.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** listings.jsp 22 Nov 2008 22:12:15 -0000 1.1 --- listings.jsp 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 49,54 **** <sageutil:PrintTimeShort var="periodEndFmt" time="${periodEnd}"/> <title><c:if test="${!empty param.OnlyHDTV and param.OnlyHDTV}">HD </c:if>Listings - ${dayFmt}, ${periodStartFmt}</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 49,53 ---- <sageutil:PrintTimeShort var="periodEndFmt" time="${periodEnd}"/> <title><c:if test="${!empty param.OnlyHDTV and param.OnlyHDTV}">HD </c:if>Listings - ${dayFmt}, ${periodStartFmt}</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 56,88 **** <c:when test="${!empty param.Category}"> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="Category Listings<br/>${dayFmt}<br/>${periodStartFmt} - ${periodEndFmt}" /> </jsp:include> </c:when> <c:when test="${param.OnlyHDTV}"> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="HD Listings<br/>${dayFmt}<br/>${periodStartFmt} - ${periodEndFmt}" /> </jsp:include> </c:when> <c:otherwise> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="Listings<br/>${dayFmt}<br/>${periodStartFmt} - ${periodEndFmt}" /> </jsp:include> </c:otherwise> </c:choose> <%-- TODO playing, recording, favorite that will record, and conflict icons<br/> TODO bobphoenix's channel favorites<br/> --%> ! <%--div class="content"--%> <table cellspacing="0" cellpadding="0"> ! <tr style="background-color: #FFFFFF; color: #042360; text-align: center;"> <td> ! <!--h3 style="background-color: #FFFFFF; color: #042360; font-size: 14px; text-align: center; vertical-align: center; margin-top: 5px; margin-bottom: 0px;">Options</h3--> ! <!--div class="divider" - - ><b>Change Date and Time</b>< ! - -/div--> ! <!--div class="divider"--><b>Options</b><!--/div--> </td> </tr> <tr> ! <td style="text-align: center; border: 1px solid #FFFFFF;"> <form action="${cp}/m/listings.jsp" method="get"> <table cellspacing="2"> --- 55,91 ---- <c:when test="${!empty param.Category}"> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="Category Listings" /> </jsp:include> </c:when> <c:when test="${param.OnlyHDTV}"> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="HD Listings" /> </jsp:include> </c:when> <c:otherwise> <jsp:include page="/WEB-INF/jspf/m/header.jspf"> ! <jsp:param name="pageTitle" value="Listings" /> </jsp:include> </c:otherwise> </c:choose> + + <div class="subheader"> + ${dayFmt}<br/>${periodStartFmt} - ${periodEndFmt} + </div> <%-- TODO playing, recording, favorite that will record, and conflict icons<br/> TODO bobphoenix's channel favorites<br/> --%> ! <div class="content"> ! <div class="listings"> <table cellspacing="0" cellpadding="0"> ! <tr> <td> ! <div class="optionstitle">Options</div> </td> </tr> <tr> ! <td> ! <div class="optionsbody"> <form action="${cp}/m/listings.jsp" method="get"> <table cellspacing="2"> *************** *** 143,147 **** <td> <select name="TimeSpan"> ! <c:set var="maxTimeSpan" value="${12}"/><%-- coerce to a number --%> <c:if test="${timeSpan > maxTimeSpan}"> <c:set var="maxTimeSpan" value="${timeSpan}"/> --- 146,150 ---- <td> <select name="TimeSpan"> ! <c:set var="maxTimeSpan" value="${24}"/><%-- coerce to a number --%> <c:if test="${timeSpan > maxTimeSpan}"> <c:set var="maxTimeSpan" value="${timeSpan}"/> *************** *** 188,203 **** </table> </form> </td> </tr> ! <tr style="border: none; height: 10px;"> ! <td><%-- blank space between "jump" section and listings section --%> ! </td> ! </tr> ! ! <tr style="background-color: #FFFFFF; color: #042360; text-align: center;"> <td colspan="2"> ! <%--h3 style="background-color: #FFFFFF; color: #042360; font-size: 14px; text-align: center; vertical-align: center; margin-top: 5px; margin-bottom: 0px;">Options</h3--%> ! <!--div class="divider"--><b>Listings<%--<br/>${dayFmt}, ${periodStartFmt} - ${periodEndFmt}--%></b><!--/div--> </td> </tr> --- 191,201 ---- </table> </form> + </div> </td> </tr> ! <tr> <td colspan="2"> ! <div class="optionstitle">Listings</div> </td> </tr> *************** *** 273,283 **** <tr> <c:if test="${varStatus.index == 0}"> ! <td rowspan="${airingCount}" style="text-align: center; border: 1px solid #FFFFFF;"> ! ${channelNumber}<br/><span style="font-size: 7pt;">${channelName}</span> </td> </c:if> ! <td class="category_other ${categoryclass} ${subcategoryclass}" style="border: 1px solid #FFFFFF;"> <%--td class="category_other ${categoryclass} ${subcategoryclass}" style="border: 1px solid #FFFFFF; color: #6E91B4;"--%> ! <p class="<c:if test="${isWatched}">watched</c:if>" style="margin: 0px;"><a href="${detailUrl}">${airingTitle}</a></p> <c:if test="${!empty mediaFile}"> <sagemf:IsFileCurrentlyRecording var="isFileRecording" mediaFile="${mediaFile}"/> --- 271,281 ---- <tr> <c:if test="${varStatus.index == 0}"> ! <td class="channelcell" rowspan="${airingCount}"> ! ${channelNumber}<br/>${channelName} </td> </c:if> ! <td class="showcell category_other ${categoryclass} ${subcategoryclass}"> <%--td class="category_other ${categoryclass} ${subcategoryclass}" style="border: 1px solid #FFFFFF; color: #6E91B4;"--%> ! <div class="title<c:if test="${isWatched}"> watched</c:if>"><a href="${detailUrl}">${airingTitle}</a></div> <c:if test="${!empty mediaFile}"> <sagemf:IsFileCurrentlyRecording var="isFileRecording" mediaFile="${mediaFile}"/> *************** *** 300,304 **** </tr> </table> ! <%--/div--%> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> --- 298,303 ---- </tr> </table> ! </div> <%-- listings --%> ! </div> <%-- content --%> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: commandcanceled.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/commandcanceled.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** commandcanceled.jsp 30 Jan 2009 06:01:27 -0000 1.1 --- commandcanceled.jsp 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 9,14 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Command Canceled</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 9,13 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Command Canceled</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 19,23 **** <div class="content"> ! The command "${param.command}" was canceled by the user. </div> --- 18,24 ---- <div class="content"> ! <div class="simplemessage"> ! The command "${param.command}" was canceled by the user. ! </div> </div> Index: details.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/details.jsp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** details.jsp 16 Feb 2010 06:26:41 -0000 1.6 --- details.jsp 5 Nov 2010 03:08:01 -0000 1.7 *************** *** 45,50 **** <sageair:GetAiringTitle var="airingTitle" airing="${airing}"/> <title>"${airingTitle}" Details</title> ! <link rel="stylesheet" type="text/css" href="css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 45,63 ---- <sageair:GetAiringTitle var="airingTitle" airing="${airing}"/> <title>"${airingTitle}" Details</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> ! ! <sageair:GetLatestWatchedTime var="latestWatchedTime" airing="${airing}"/> ! <sageair:GetScheduleStartTime var="scheduleStartTime" airing="${airing}"/> ! <c:if test="${isSafari}"> ! <script src="../js/sagevideo.js" type="text/javascript" charset="utf-8"></script> ! <script type="text/javascript"> ! var sageVideo; ! $(document).ready(function() { ! // do stuff when DOM is ready ! sageVideo = new SageVideo('myVideo', ${airingId}); ! sageVideo.setCurrentTime(${latestWatchedTime - scheduleStartTime}); ! }); ! </script> ! </c:if> </head> <body> *************** *** 62,74 **** <sagemf:GetMediaFileEncoding var="encoding" mediaFile="${airing}"/> <sageair:IsManualRecord var="isManualRecord" airing="${airing}"/> <%-- 6.0 only API --%> <c:catch> <sagemf:GetMediaFileFormatDescription var="formatDescription" mediaFile="${airing}"/> </c:catch> ! <p style="margin: 2px; 0px; 2px; 0px;"><b>${airingTitle}</b></p> ! <sagemf:IsFileCurrentlyRecording var="isFileRecording" mediaFile="${airing}"/> ! <c:if test="${isFileRecording}"> ! <img src="${cp}/images/RecordingNowMobile.png" alt="This show is currently recording." title="This show is currently recording."/> </c:if> <sageairfn:GetAiringConflict var="airingConflict" airing="${airing}"/> <%@ include file="/WEB-INF/jspf/m/conflictmarkers.jspf" %> --- 75,113 ---- <sagemf:GetMediaFileEncoding var="encoding" mediaFile="${airing}"/> <sageair:IsManualRecord var="isManualRecord" airing="${airing}"/> + <sagemf:IsMediaFileObject var="isMediaFileObject" object="${airing}"/> <%-- 6.0 only API --%> <c:catch> <sagemf:GetMediaFileFormatDescription var="formatDescription" mediaFile="${airing}"/> </c:catch> ! <div class="title">${airingTitle} ! <sagemf:IsFileCurrentlyRecording var="isFileRecording" mediaFile="${airing}"/> ! <c:if test="${isFileRecording}"> ! <img src="${cp}/m/images/RecordingNowMobile.png" alt="This show is currently recording." title="This show is currently recording."/> ! </c:if> ! </div> ! <div class="details"> ! <c:if test="${(isDesktopSafari or isIPad or isIPhone) and isMediaFileObject}"> ! <sagemf:GetMediaFileMetadata var="videoWidth" mediaFile="${mediaFile}" name="Format.Video.Width"/> ! <sagemf:GetMediaFileMetadata var="videoHeight" mediaFile="${mediaFile}" name="Format.Video.Height"/> ! <sagemf:GetMediaFileMetadata var="videoAspect" mediaFile="${mediaFile}" name="Format.Video.Aspect"/> ! <sageutilfn:SplitString var="videoAspectArray" value="${videoAspect}" token=":"/> ! <c:choose> ! <c:when test="${isIPhone or isIPod}"> ! <c:set var="videoElementHeight" value="120"/> ! </c:when> ! <c:otherwise> ! <c:set var="videoElementHeight" value="240"/> ! </c:otherwise> ! </c:choose> ! <c:set var="videoElementWidth" value="${videoElementHeight * videoAspectArray[0] / videoAspectArray[1]}"/> ! <%--div id="status" class="progress button hidden"></div--%> ! <%--img id="overlay" src="/stream/MediaFileThumbnailServlet?MediaFileId=${mediaFileId}" width="${videoElementWidth}" height="${videoElementHeight}"--%> ! <video id="myVideo" class="videothumb" preload="none" src="/stream/HTTPLiveStreamingPlaylist?MediaFileId=${mediaFileId}" poster="/stream/MediaFileThumbnailServlet?MediaFileId=${mediaFileId}" controls="controls" width="${videoElementWidth}" height="${videoElementHeight}"> ! </video> ! <%--div style="content: url(images/spinner.gif);"></div> ! <img src="images/spinner.gif"></img><br /--%> ! <div id="log"></div> </c:if> + <div class="dividerbody"> <sageairfn:GetAiringConflict var="airingConflict" airing="${airing}"/> <%@ include file="/WEB-INF/jspf/m/conflictmarkers.jspf" %> *************** *** 89,93 **** <sageutil:PrintTimeShort var="airingEndTime" time="${airingEndTime}"/> ${airingDate}, ${airingStartTime} - ${airingEndTime} - <sagemf:IsMediaFileObject var="isMediaFileObject" object="${airing}"/> <sagemf:IsLibraryFile var="isLibraryFile" mediaFile="${airing}"/> <sagemf:IsTVFile var="isTVFile" mediaFile="${airing}"/> --- 128,131 ---- *************** *** 99,107 **** <sageair:GetAiringChannelNumber var="channelNumber" airing="${airing}" /> <c:if test="${!empty channelNumber}"><p><b>Channel:</b> ${channelNumber}-${channelName}</p></c:if> - <sageair:GetParentalRating var="rating" airing="${airing}"/> - <sageshow:GetShowRated var="rated" show="${show}"/> - <sageshow:GetShowExpandedRatings var="expandedRatings" show="${show}"/> - <c:if test="${!empty rating}"><p><b>Rating:</b> ${rating}</p></c:if> - <c:if test="${!empty rated}"><p><b>Rated:</b> ${rated}<c:if test="${!empty expandedRatings}"> for ${expakndedRatings}</c:if></p></c:if> <%-- -- Recording/Recorded/Scheduled to Record time --- 137,140 ---- *************** *** 128,132 **** --- 161,178 ---- </c:when> </c:choose> + <c:if test="${!isMediaFileObject}"> + <sagecapdevfn:GetScheduledEncoder var="scheduledEncoder" airing="${airing}"/> + <c:if test="${!empty scheduledEncoder}"><p><b>Scheduled Encoder:</b> ${scheduledEncoder}</p></c:if> + </c:if> + </div> <sageshow:GetOriginalAiringDate var="originalAiringLong" show="${show}"/> + <div class="divider">Show Details</div> + <div class="dividerbody"> + + <sageair:GetParentalRating var="rating" airing="${airing}"/> + <sageshow:GetShowRated var="rated" show="${show}"/> + <sageshow:GetShowExpandedRatings var="expandedRatings" show="${show}"/> + <c:if test="${!empty rating}"><p><b>Rating:</b> ${rating}</p></c:if> + <c:if test="${!empty rated}"><p><b>Rated:</b> ${rated}<c:if test="${!empty expandedRatings}"> for ${expakndedRatings}</c:if></p></c:if> <c:if test="${!empty category}"> <p><b>Category:</b> ${category}<c:if test="${!empty subcategory}">/${subcategory}</c:if> *************** *** 224,264 **** <p><b>Artist:</b> ${artist}</p> </c:if> <c:if test="${isMediaFileObject}"> ! <p><b>Encoded by:</b> ${encoding}</p> ! <sagemf:GetSegmentFiles var="segmentFiles" mediaFile="${airing}"/> ! <c:if test="${!empty segmentFiles}"> ! <p><b>Files:</b><br/><%--TODO remove dependency on desktop servlet--%> ! <c:forEach var="file" items="${segmentFiles}" varStatus="status"> ! <c:url var="fileSegmentUrl" value="../MediaFile"> ! <c:param name="MediaFileId" value="${mediaFileId}"></c:param> ! <c:param name="Segment" value="${status.index}"></c:param> ! </c:url> ! <a href="${fileSegmentUrl}">${file}</a><br/> ! </c:forEach> ! </p> ! </c:if> ! <%-- 6.0 only API --%> ! <c:if test="${!empty formatDescription}"><p><b>Format:</b> ${formatDescription}</p></c:if> ! <sagemf:GetSize var="size" mediaFile="${airing}"/> ! <c:set var="size" value="${size / 1000000}"/> ! <c:if test="${size > 1000}"> ! <sageutil:NumberFormat var="formattedSize" format="0.00" number="${size / 1000}"/> ! <p><b>Size:</b> ${formattedSize} GB</p> ! </c:if> ! <c:if test="${size <= 1000}"> ! <sageutil:NumberFormat var="formattedSize" format="0.00" number="${size}"/> ! <p><b>Size:</b> ${formattedSize} MB</p> ! </c:if> ! </c:if> ! <c:if test="${!isMediaFileObject}"> ! <sagecapdevfn:GetScheduledEncoder var="scheduledEncoder" airing="${airing}"/> ! <c:if test="${!empty scheduledEncoder}"><p><b>Scheduled Encoder:</b> ${scheduledEncoder}</p></c:if> </c:if> ! <p><b>Internal Details:</b> <c:if test="${!empty mediaFileId}">MediaFileID=${mediaFileId}, </c:if>AiringID=${airingId}</p> ! </div> <c:if test="${!isPastAiring and isManualRecord}"> <%-- Airing is in the future or is currently recording --%> ! <h3 class="optionstitle">Recording Options</h3> <div class="optionsbody"> <div class="label">Padding (minutes)</div> --- 270,319 ---- <p><b>Artist:</b> ${artist}</p> </c:if> + </div> + <c:if test="${isMediaFileObject}"> ! <div class="divider">Media File Details</div> ! <div class="dividerbody"> ! <c:if test="${!empty encoding}"> ! <p><b>Encoded by:</b> ${encoding}</p> ! </c:if> ! <sagemf:GetSegmentFiles var="segmentFiles" mediaFile="${airing}"/> ! <c:if test="${!empty segmentFiles}"> ! <p><b>Files:</b><br /> ! <c:forEach var="file" items="${segmentFiles}" varStatus="status"> ! <c:url var="fileSegmentUrl" value="../MediaFile"> ! <c:param name="MediaFileId" value="${mediaFileId}"></c:param> ! <c:param name="Segment" value="${status.index}"></c:param> ! </c:url> ! <a href="${fileSegmentUrl}">${file}</a><br /> ! </c:forEach> ! </p> ! </c:if> ! <%-- 6.0 only API --%> ! <c:if test="${!empty formatDescription}"><p><b>Format:</b> ${formatDescription}</p></c:if> ! <sagemf:GetSize var="size" mediaFile="${airing}"/> ! <c:set var="size" value="${size / 1000000}"/> ! <c:if test="${size > 1000}"> ! <sageutil:NumberFormat var="formattedSize" format="0.00" number="${size / 1000}"/> ! <p><b>Size:</b> ${formattedSize} GB</p> ! </c:if> ! <c:if test="${size <= 1000}"> ! <sageutil:NumberFormat var="formattedSize" format="0.00" number="${size}"/> ! <p><b>Size:</b> ${formattedSize} MB</p> ! </c:if> ! </div> </c:if> ! ! <div class="divider">Internal Details</div> ! <div class="dividerbody"> ! <c:if test="${!empty mediaFileId}"><p><b>MediaFileID:</b> ${mediaFileId}</p></c:if> ! <p><b>AiringID:</b> ${airingId}</p> ! </div> ! ! </div> <%-- details --%> <c:if test="${!isPastAiring and isManualRecord}"> <%-- Airing is in the future or is currently recording --%> ! <div class="optionstitle">Recording Options</div> <div class="optionsbody"> <div class="label">Padding (minutes)</div> *************** *** 267,271 **** <%-- Padding --%> <tr> ! <td style="border: 3px solid #FFFFFF; border-style: solid; padding: 10px;"> <form method="post" action="${cp}/m/Command"> <c:if test="${!empty param.MediaFileId}"> --- 322,327 ---- <%-- Padding --%> <tr> ! <td> ! <div class="paddingbody"> <form method="post" action="${cp}/m/Command"> <c:if test="${!empty param.MediaFileId}"> *************** *** 283,288 **** <input type="text" size="3" name="StartPadding" value="<%= Math.abs((Long)pageContext.getAttribute("startPadding")) %>"/> minutes <select name="StartPaddingOffsetType"> ! <option value="earlier" <c:if test="${startPadding <= 0}">selected="selected" style="font-weight: bold;"</c:if>>Earlier</option> ! <option value="later" <c:if test="${startPadding > 0}">selected="selected" style="font-weight: bold;"</c:if>>Later</option> </select><br/> </c:if> --- 339,344 ---- <input type="text" size="3" name="StartPadding" value="<%= Math.abs((Long)pageContext.getAttribute("startPadding")) %>"/> minutes <select name="StartPaddingOffsetType"> ! <option value="earlier" <c:if test="${startPadding <= 0}">selected="selected"</c:if>>Earlier</option> ! <option value="later" <c:if test="${startPadding > 0}">selected="selected"</c:if>>Later</option> </select><br/> </c:if> *************** *** 290,299 **** <input type="text" size="3" name="EndPadding" value="<%= Math.abs((Long)pageContext.getAttribute("endPadding")) %>"/> minutes <select name="EndPaddingOffsetType"> ! <option value="earlier" <c:if test="${endPadding < 0}">selected="selected" style="font-weight: bold;"</c:if>>Earlier</option> ! <option value="later" <c:if test="${endPadding >= 0}">selected="selected" style="font-weight: bold;"</c:if>>Later</option> </select><br/> <%-- TODO doesn't jump to conflicts page--%> <button style="margin-top: 4px;" type="submit" name="command" value="SetRecPad">Set Padding</button> </form> </td> </tr> --- 346,356 ---- <input type="text" size="3" name="EndPadding" value="<%= Math.abs((Long)pageContext.getAttribute("endPadding")) %>"/> minutes <select name="EndPaddingOffsetType"> ! <option value="earlier" <c:if test="${endPadding < 0}">selected="selected"</c:if>>Earlier</option> ! <option value="later" <c:if test="${endPadding >= 0}">selected="selected"</c:if>>Later</option> </select><br/> <%-- TODO doesn't jump to conflicts page--%> <button style="margin-top: 4px;" type="submit" name="command" value="SetRecPad">Set Padding</button> </form> + </div> </td> </tr> *************** *** 308,312 **** <table> <tr> ! <td style="border: 3px solid #FFFFFF; border-style: solid; padding: 10px;"> <form method="post" action="${cp}/m/Command"> <c:if test="${!empty param.MediaFileId}"> --- 365,370 ---- <table> <tr> ! <td> ! <div class="qualitybody"> <form method="post" action="${cp}/m/Command"> <c:if test="${!empty param.MediaFileId}"> *************** *** 322,328 **** <%--Quality:<br/>--%> <select name="Quality"> ! <option value="Default" <c:if test="${empty quality or quality == 'Default'}">selected="selected" style="font-weight: bold;"</c:if>>Default: ${defaultQuality}</option> <c:forEach var="currentQuality" items="${recordingQualities}"> ! <option value="${currentQuality}" <c:if test="${quality == currentQuality}">selected="selected" style="font-weight: bold;"</c:if>>${currentQuality}</option> </c:forEach> </select> --- 380,386 ---- <%--Quality:<br/>--%> <select name="Quality"> ! <option value="Default" <c:if test="${empty quality or quality == 'Default'}">selected="selected"</c:if>>Default: ${defaultQuality}</option> <c:forEach var="currentQuality" items="${recordingQualities}"> ! <option value="${currentQuality}" <c:if test="${quality == currentQuality}">selected="selected"</c:if>>${currentQuality}</option> </c:forEach> </select> *************** *** 330,333 **** --- 388,392 ---- <button style="margin-top: 4px;" type="submit" name="command" value="SetRecQual">Set Quality</button> </form> + </div> </td> </tr> *************** *** 338,342 **** </c:if> ! <h3 class="optionstitle">Options</h3> <div class="optionsbody"> <table> --- 397,472 ---- </c:if> ! <sageglbl:GetUIContextNames var="contexts"/> ! <sageglbl:GetConnectedClients var="connectedClients"/> ! <sageairfn:IsStartedAiring var="isStartedAiring" airing="${airing}"/> ! <sageairfn:IsPastAiring var="isPastAiring" airing="${airing}"/> ! ! <%--c:if test="${(!empty contexts or !empty connectedClients or isSafari) and (isMediaFileObject or (isStartedAiring and not isPastAiring))}"--%> ! <c:if test="${(!empty contexts or !empty connectedClients or isSafari) and (isMediaFileObject)}"> ! <div class="optionstitle">Watch Now</div> ! <div class="optionsbody"> ! <table> ! <c:if test="${(isDesktopSafari or isIPad or isIPhone) and isMediaFileObject}"> ! <tr> ! <td> ! <button onclick="sageVideo.playPause();">On This Page</button> ! </td> ! </tr> ! </c:if> ! <c:forEach var="context" items="${contexts}"> ! <tr> ! <td> ! <c:set var="formId" value="${context}WatchNowForm"/> ! <form id="${formId}" method="post" action="${cp}/m/Command"> ! <c:set var="contextName" value="<%= sagex.webserver.UIContextTranslator.doTranslate(pageContext.getAttribute("context").toString()) %>"/> ! <c:if test="${contextName == 'SAGETV_PROCESS_LOCAL_UI'}"> ! <c:set var="contextName" value="SageTV"/> ! </c:if> ! <input type="hidden" name="context" value="${context}"/> ! <c:if test="${isMediaFileObject}"> ! <input type="hidden" name="MediaFileId" value="${mediaFileId}"/> ! </c:if> ! <c:if test="${!isMediaFileObject}"> ! <input type="hidden" name="AiringId" value="${airingId}"/> ! </c:if> ! <input type="hidden" name="returnto" value="${cp}/m/details.jsp?${pageContext.request.queryString}"/> ! <button type="submit" name="command" value="WatchNow">${contextName}</button> ! </form> ! <script language="JavaScript"> ! <!-- ! $('#${formId}').ajaxForm(); ! //--> ! </script> ! </td> ! </tr> ! </c:forEach> ! <c:forEach var="client" items="${connectedClients}"> ! <tr> ! <td> ! <c:set var="formId" value="${client}WatchNowForm"/> ! <form id="${formId}" method="post" action="${cp}/m/Command"> ! <input type="hidden" name="context" value="${client}"/> ! <c:if test="${isMediaFileObject}"> ! <input type="hidden" name="MediaFileId" value="${mediaFileId}"/> ! </c:if> ! <c:if test="${!isMediaFileObject}"> ! <input type="hidden" name="AiringId" value="${airingId}"/> ! </c:if> ! <input type="hidden" name="returnto" value="${cp}/m/details.jsp?${pageContext.request.queryString}"/> ! <button type="submit" name="command" value="WatchNow"><%= sagex.webserver.UIContextTranslator.doTranslate(pageContext.getAttribute("client").toString()) %></button> ! </form> ! <script language="JavaScript"> ! <!-- ! $('#${formId}').ajaxForm(); ! //--> ! </script> ! </td> ! </tr> ! </c:forEach> ! </table> ! </div> ! </c:if> ! ! <div class="optionstitle">Options</div> <div class="optionsbody"> <table> *************** *** 640,644 **** </c:catch> </table> ! </div> <%@ include file="/WEB-INF/jspf/m/footer.jspf" %> --- 770,775 ---- </c:catch> </table> ! </div> <%-- options body --%> ! </div> <%-- content --%> <%@ include file="/WEB-INF/jspf/m/footer.jspf" %> Index: searchrecordings.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/searchrecordings.jsp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** searchrecordings.jsp 16 Feb 2010 06:34:12 -0000 1.8 --- searchrecordings.jsp 5 Nov 2010 03:08:01 -0000 1.9 *************** *** 17,22 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf" %> <title>Search Recordings</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 17,21 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf" %> <title>Search Recordings</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 70,74 **** <c:set var="allowMultiSelect" scope="request" value="true"/> <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <h3 class="optionstitle">Selection Options</h3> <div class="optionsbody"> <table> --- 69,73 ---- <c:set var="allowMultiSelect" scope="request" value="true"/> <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <div class="optionstitle">Selection Options</div> <div class="optionsbody"> <table> Index: conflicts.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/conflicts.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** conflicts.jsp 22 Nov 2008 22:12:15 -0000 1.1 --- conflicts.jsp 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 14,19 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Recording Conflicts</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 14,18 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Recording Conflicts</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 29,53 **** <sagedb:Sort var="conflictsList" data="${allConflicts}" descending="false" sortTechnique="GetAiringStartTime"/> ! <div class="content"> ! <%--p>The following shows will not be recorded.</p> ! <p>Select a show for further information and conflict resolution options.</p--%> ! <div class="section"> ! <c:if test="${empty allConflicts}"> ! No Conflict ! </c:if> ! <c:if test="${not empty allConflicts}"> ! Conflicts ! </c:if> ! </div> ! <div class="sectionbody"> ! <%@ include file="/WEB-INF/jspf/m/conflictstats.jspf" %> ! </div> </div> ! <c:forEach items="${conflictsList}" var="airing" varStatus="status"> ! <sageair:GetAiringTitle var="airingTitle" airing="${airing}"/> ! <%-- @ include file="/WEB-INF/jspf/m/conflictcell.jspf" --%> ! <%@ include file="/WEB-INF/jspf/m/airingcell.jspf" %> ! </c:forEach> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> --- 28,41 ---- <sagedb:Sort var="conflictsList" data="${allConflicts}" descending="false" sortTechnique="GetAiringStartTime"/> ! <div class="subheader"> ! <%@ include file="/WEB-INF/jspf/m/conflictstats.jspf" %> </div> ! <div class="content"> ! <c:forEach items="${conflictsList}" var="airing" varStatus="status"> ! <sageair:GetAiringTitle var="airingTitle" airing="${airing}"/> ! <%@ include file="/WEB-INF/jspf/m/airingcell.jspf" %> ! </c:forEach> ! </div> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: systemmessages.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/systemmessages.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** systemmessages.jsp 2 Aug 2009 20:42:59 -0000 1.2 --- systemmessages.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 14,19 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>System Messages</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 14,18 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>System Messages</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 23,32 **** </jsp:include> <sagemsgfn:SupportsSystemMessages var="supportsSystemMessages"/> <c:if test="${not supportsSystemMessages}"> - <div class="content"> System messages require SageTV 6.5.17 or later. - </div> </c:if> --- 22,30 ---- </jsp:include> + <div class="content"> <sagemsgfn:SupportsSystemMessages var="supportsSystemMessages"/> <c:if test="${not supportsSystemMessages}"> System messages require SageTV 6.5.17 or later. </c:if> *************** *** 37,43 **** <c:if test="${numMessages == 0}"> - <div class="content"> There are no system messages. - </div> </c:if> <c:if test="${numMessages != 0}"> --- 35,39 ---- *************** *** 83,87 **** </c:choose> </p> ! <div style="border: 1px solid #FFFFFF; padding: 2px; margin-left: 10px;"> <p> ${messageString} --- 79,83 ---- </c:choose> </p> ! <div class="systemmessagetext"> <p> ${messageString} *************** *** 112,116 **** </c:forEach> ! <h3 class="optionstitle">Options</h3> <div class="optionsbody"> <table> --- 108,112 ---- </c:forEach> ! <div class="optionstitle">Options</div> <div class="optionsbody"> <table> *************** *** 135,138 **** --- 131,135 ---- </c:if> </c:if> + </div> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: searchairings.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/searchairings.jsp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** searchairings.jsp 16 Feb 2010 06:32:43 -0000 1.6 --- searchairings.jsp 5 Nov 2010 03:08:01 -0000 1.7 *************** *** 17,22 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf" %> <title>Search Airings</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 17,21 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf" %> <title>Search Airings</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 70,74 **** <c:set var="allowMultiSelect" scope="request" value="true"/> <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <h3 class="optionstitle">Selection Options</h3> <div class="optionsbody"> <!-- TODO returnto --> --- 69,73 ---- <c:set var="allowMultiSelect" scope="request" value="true"/> <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! <div class="optionstitle">Selection Options</div> <div class="optionsbody"> <!-- TODO returnto --> Index: favorites.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/favorites.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** favorites.jsp 22 Nov 2008 22:12:15 -0000 1.1 --- favorites.jsp 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 12,17 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>SageTV Favorites</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 12,16 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>SageTV Favorites</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 21,36 **** </jsp:include> ! <sagefav:GetFavorites var="favorites" /> ! <sagedb:Sort var="favorites" data="${favorites}" descending="false" sortTechnique="FavoritePriority" /> ! <div>New by: ! <a href="favoritedetails.jsp?AddTitle=">[Title]</a> ! <a href="favoritedetails.jsp?AddPerson=">[Actor]</a> ! <a href="favoritedetails.jsp?AddCategory=">[Category]</a> ! <a href="favoritedetails.jsp?AddKeyword=">[Keyword]</a> ! </div> ! <c:set var="airingList" scope="request" value="${favorites}"/> ! <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> --- 20,37 ---- </jsp:include> ! <div class="content"> ! <sagefav:GetFavorites var="favorites" /> ! <sagedb:Sort var="favorites" data="${favorites}" descending="false" sortTechnique="FavoritePriority" /> ! <div class="subheader">New by: ! <a href="favoritedetails.jsp?AddTitle=">[Title]</a> ! <a href="favoritedetails.jsp?AddPerson=">[Actor]</a> ! <a href="favoritedetails.jsp?AddCategory=">[Category]</a> ! <a href="favoritedetails.jsp?AddKeyword=">[Keyword]</a> ! </div> ! <c:set var="airingList" scope="request" value="${favorites}"/> ! <jsp:include page="/WEB-INF/jspf/m/airinglist.jspf"/> ! </div> <jsp:include page="/WEB-INF/jspf/m/footer.jspf"/> Index: commandapplied.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/commandapplied.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** commandapplied.jsp 30 Jan 2009 05:56:51 -0000 1.2 --- commandapplied.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 9,14 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Command Applied</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 9,13 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Command Applied</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 19,23 **** <div class="content"> ! The command "${param.command}" was applied successfully. </div> --- 18,24 ---- <div class="content"> ! <div class="simplemessage"> ! The command "${param.command}" was applied successfully. ! </div> </div> Index: manualrecordconflicts.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/manualrecordconflicts.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** manualrecordconflicts.jsp 30 Nov 2008 00:35:55 -0000 1.2 --- manualrecordconflicts.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 22,28 **** <title>"${airingTitle}" Manual Recording Conflicts</title> </c:if> ! <%--title>Manual Recording Conflicts</title--%> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 22,26 ---- <title>"${airingTitle}" Manual Recording Conflicts</title> </c:if> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 54,57 **** --- 52,56 ---- <sagedb:DataIntersection var="scheduledRecording" dataSet1="${scheduledRecordings}" dataSet2="${airing}"/> The following airing is no longer in conflict<c:if test="${!empty scheduledRecording}"> and will be recorded</c:if>. + <hr/> <%--sageair:GetAiringForID var="airing" id="${airingId}"/--%> <%@ include file="/WEB-INF/jspf/m/airingcell.jspf" %> *************** *** 66,70 **** <p>The following airing will not be recorded due to conflicts with other manual recordings.</p> <p>You must cancel one of the conflicting recordings and schedule this manual recording again.</p> ! <%@ include file="/WEB-INF/jspf/m/airingcell.jspf" %> </div> --- 65,70 ---- <p>The following airing will not be recorded due to conflicts with other manual recordings.</p> <p>You must cancel one of the conflicting recordings and schedule this manual recording again.</p> ! <hr/> ! <%@ include file="/WEB-INF/jspf/m/airingcell.jspf" %> </div> Index: conversions.jsp =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/conversions.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** conversions.jsp 31 Jan 2009 01:53:18 -0000 1.2 --- conversions.jsp 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 17,22 **** <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Video Conversions</title> ! <link rel="stylesheet" type="text/css" href="${cp}/m/css/sage_mobile.css"/> ! <link rel="Shortcut Icon" href="${cp}/favicon.ico" type="image/x-icon"/> </head> <body> --- 17,21 ---- <%@ include file="/WEB-INF/jspf/m/contextpath.jspf"%> <title>Video Conversions</title> ! <%@ include file="/WEB-INF/jspf/m/htmlheaders.jspf"%> </head> <body> *************** *** 34,38 **** <c:if test="${numConversions == 0}"> <div class="content"> ! There are no video conversions in progress. </div> </c:if> --- 33,39 ---- <c:if test="${numConversions == 0}"> <div class="content"> ! <div class="simplemessage"> ! There are no video conversions in progress. ! </div> </div> </c:if> *************** *** 54,187 **** <sagedb:DataUnion var="allJobs" dataSet1="${allJobs}" dataSet2="${jobsDone}" /> ! <form method="post" action="${cp}/m/Command"> ! <input type="hidden" name="returnto" value="${cp}/m/conversions.jsp"/> ! <c:forEach items="${allJobs}" var="job" varStatus="status"> ! <sageconv:GetTranscodeJobShouldKeepOriginal var="keepOriginal" jobID="${job}"/> ! <sageconv:GetTranscodeJobSourceFile var="sourceFile" jobID="${job}" /><%-- Media file --%> ! <sageconv:GetTranscodeJobDestFile var="destFile" jobID="${job}"/><%-- File path --%> ! <sagemf:IsMediaFileObject var="isMediaFileObject" object="${sourceFile}" /> ! <c:if test="${!isMediaFileObject}"> ! <sagemf:GetMediaFileAiring var="sourceFile" mediaFile="${sourceFile}" /> ! </c:if> ! <c:if test="${!empty sourceFile}"> ! <sagemf:GetMediaFileID var="sourceMediaFileId" mediaFile="${sourceFile}"/> ! <c:if test="${keepOriginal}"> ! <c:if test="${!empty destFile}"> ! <sagemf:GetMediaFileForFilePath var="destMediaFile" filePath="${destFile}"/> ! <c:if test="${!empty destMediaFile}"> ! <sagemf:GetMediaFileID var="destMediaFileId" mediaFile="${destMediaFile}"/> ! </c:if> ! </c:if> </c:if> ! <c:url var="conversionDetailUrl" value="conversiondetails.jsp"> ! <c:param name="JobId" value="${job}"></c:param> ! </c:url> ! <div class="listcell"> ! <sageconvfn:GetTranscodeJobTitle var="jobTitle" job="${job}"/> ! <sageshow:GetShowEpisode var="episode" show="${sourceFile}" /> ! <div class="title"><input type="checkbox" value="${job}" name="JobId"/><b>${status.count}. <a href="${conversionDetailUrl}">${jobTitle}</a></b></div> ! <c:if test="${!empty episode}"> ! <p>Episode: ${episode}</p> ! </c:if> ! <sageconv:GetTranscodeJobClipStart var="startTime" jobID="${job}"/> ! <sageconv:GetTranscodeJobClipDuration var="duration" jobID="${job}"/> ! <sageconv:GetTranscodeJobFormat var="quality" jobID="${job}"/> ! <p>Conversion Length: ! <c:choose> ! <c:when test="${!empty startTime and !empty duration}"> ! <c:if test="${duration > 0}"> ! <sageutil:DurFormat var="startText" duration="${startTime}" format="%h:%rm:%rs"/> ! <sageutil:DurFormat var="endText" duration="${duration + startTime}" format="%h:%rm:%rs"/> ! ... [truncated message content] |
Update of /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/WebContent/WEB-INF/jspf/m Modified Files: markers.jspf conflictstats.jspf ratings.jspf conflictmarkers.jspf header.jspf favoritecell.jspf Log Message: Version 2.0.0 Index: ratings.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/ratings.jspf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ratings.jspf 22 Nov 2008 22:12:14 -0000 1.1 --- ratings.jspf 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 17,24 **** ${rating}, ${rated}--%> <c:if test="${!empty rating}"> ! <img style="border: 0px none" src="${cp}/images/Rating_${rating}.gif" alt="${rating}" title="${rating}" /> </c:if> <c:if test="${!empty rated}"> ! <img style="border: 0px none" src="${cp}/images/Rating_${rated}.gif" alt="${rated}" title="${rated}" /> </c:if> </c:if> --- 17,24 ---- ${rating}, ${rated}--%> <c:if test="${!empty rating}"> ! <img src="${cp}/m/images/Rating_${rating}.gif" alt="${rating}" title="${rating}" /> </c:if> <c:if test="${!empty rated}"> ! <img src="${cp}/m/images/Rating_${rated}.gif" alt="${rated}" title="${rated}" /> </c:if> </c:if> Index: conflictstats.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/conflictstats.jspf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** conflictstats.jspf 22 Nov 2008 22:12:14 -0000 1.1 --- conflictstats.jspf 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 20,24 **** <sageutil:Size var="unresolvedConflictsCount" data="${unresolvedConflicts}"/> <c:if test="${allConflictsCount - unresolvedConflictsCount > 0}"> ! <img style="vertical-align: middle;" src="${cp}/images/ConflictResolvedMobile.png"/> <c:if test="${allConflictsCount - unresolvedConflictsCount == 1}"> <%-- There is --%>${allConflictsCount - unresolvedConflictsCount} Resolved Conflict --- 20,24 ---- <sageutil:Size var="unresolvedConflictsCount" data="${unresolvedConflicts}"/> <c:if test="${allConflictsCount - unresolvedConflictsCount > 0}"> ! <img src="${cp}/m/images/ConflictResolvedMobile.png"/> <c:if test="${allConflictsCount - unresolvedConflictsCount == 1}"> <%-- There is --%>${allConflictsCount - unresolvedConflictsCount} Resolved Conflict *************** *** 29,33 **** </c:if> <c:if test="${unresolvedConflictsCount > 0}"> ! <img style="vertical-align: middle;" src="${cp}/images/ConflictUnresolvedMobile.png"/> <c:if test="${unresolvedConflictsCount == 1}"> <%-- There is --%>${unresolvedConflictsCount} Unresolved Conflict --- 29,33 ---- </c:if> <c:if test="${unresolvedConflictsCount > 0}"> ! <img src="${cp}/m/images/ConflictUnresolvedMobile.png"/> <c:if test="${unresolvedConflictsCount == 1}"> <%-- There is --%>${unresolvedConflictsCount} Unresolved Conflict Index: conflictmarkers.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/conflictmarkers.jspf,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** conflictmarkers.jspf 16 Feb 2010 06:19:16 -0000 1.2 --- conflictmarkers.jspf 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 86,95 **** <c:choose> <c:when test="${!empty airingConflict}"><%-- airing is an unresolved conflict --%> ! <a href="${recordingDetailUrl}"><img src="${cp}/images/ConflictUnresolvedMobile.png"/>${conflictingShowsSize} Conflicting Recording<c:if test="${conflictingShowsSize != 1}">s</c:if></a> </c:when> <c:otherwise> <sagedb:DataIntersection var="airingConflict" dataSet1="${airing}" dataSet2="${allConflicts}"/> <c:if test="${!empty airingConflict}"><%-- airing is a resolved conflict --%> ! <a href="${recordingDetailUrl}"><img src="${cp}/images/ConflictResolvedMobile.png"/>${conflictingShowsSize} Conflicting Recording<c:if test="${conflictingShowsSize != 1}">s</c:if></a> </c:if> </c:otherwise> --- 86,95 ---- <c:choose> <c:when test="${!empty airingConflict}"><%-- airing is an unresolved conflict --%> ! <a href="${recordingDetailUrl}"><img src="${cp}/m/images/ConflictUnresolvedMobile.png"/>${conflictingShowsSize} Conflicting Recording<c:if test="${conflictingShowsSize != 1}">s</c:if></a> </c:when> <c:otherwise> <sagedb:DataIntersection var="airingConflict" dataSet1="${airing}" dataSet2="${allConflicts}"/> <c:if test="${!empty airingConflict}"><%-- airing is a resolved conflict --%> ! <a href="${recordingDetailUrl}"><img src="${cp}/m/images/ConflictResolvedMobile.png"/>${conflictingShowsSize} Conflicting Recording<c:if test="${conflictingShowsSize != 1}">s</c:if></a> </c:if> </c:otherwise> Index: markers.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/markers.jspf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** markers.jspf 22 Nov 2008 22:12:14 -0000 1.1 --- markers.jspf 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 16,31 **** <sagefav:IsFirstRunsAndReRuns var="isFirstRunsAndReRuns" favorite="${favorite}" /> <c:if test="${isFirstRunsOnly}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavFirstMobile.png" alt="Record First Runs" title="Record First Runs" /> </c:if> <c:if test="${isReRunsOnly}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavRerunMobile.png" alt="Record Reruns" title="Record Reruns" /> </c:if> <c:if test="${isFirstRunsAndReRuns}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavAllMobile.png" alt="Record First Runs and Reruns" title="Record First Runs and Reruns" /> </c:if> </c:if> <%--else--%><c:if test="${!isFavorite || isManualRecord}"> <c:if test="${isManualRecord}"> ! <img style="border: 0px none" src="${cp}/images/RecordMRMobile.png" alt="Manual Recording" title="Manual Recording"/> </c:if> </c:if> --- 16,31 ---- <sagefav:IsFirstRunsAndReRuns var="isFirstRunsAndReRuns" favorite="${favorite}" /> <c:if test="${isFirstRunsOnly}"> ! <img src="${cp}/m/images/RecordFavFirstMobile.png" alt="Record First Runs" title="Record First Runs" /> </c:if> <c:if test="${isReRunsOnly}"> ! <img src="${cp}/m/images/RecordFavRerunMobile.png" alt="Record Reruns" title="Record Reruns" /> </c:if> <c:if test="${isFirstRunsAndReRuns}"> ! <img src="${cp}/m/images/RecordFavAllMobile.png" alt="Record First Runs and Reruns" title="Record First Runs and Reruns" /> </c:if> </c:if> <%--else--%><c:if test="${!isFavorite || isManualRecord}"> <c:if test="${isManualRecord}"> ! <img src="${cp}/m/images/RecordMRMobile.png" alt="Manual Recording" title="Manual Recording"/> </c:if> </c:if> *************** *** 33,53 **** <sageshow:IsShowFirstRun var="isFirstRun" airing="${airing}"/> <c:if test="${isFirstRun}"> ! <img style="border: 0px none" src="${cp}/images/MarkerFirstRunMobile.png" alt="First Run" title="First Run" /> </c:if> <sageair:IsWatched var="isWatched" airing="${airing}"/> <c:if test="${isWatched}"> ! <img style="border: 0px none" src="${cp}/images/MarkerWatchedMobile.png" alt="Watched" title="Watched" /> </c:if> <%--br/--%> <sageair:IsAiringHDTV var="isHDTV" airing="${airing}"/> <c:if test="${isHDTV}"> ! <img style="border: 0px none" src="${cp}/images/MarkerHDTVMobile.png" alt="HDTV" title="HDTV" /> </c:if> <sagemf:IsLibraryFile var="isLibraryFile" mediaFile="${airing}"/> <c:if test="${isLibraryFile}"> ! <img style="border: 0px none" src="${cp}/images/MarkerArchivedMobile.png" alt="Archived" title="Archived" /> </c:if> <sageair:IsDontLike var="isDontLike" airing="${airing}"/> <c:if test="${isDontLike}"> ! <img style="border: 0px none" src="${cp}/images/MarkerDontLikeMobile.png" alt="Don't Like" title="Don't Like" /> </c:if> --- 33,53 ---- <sageshow:IsShowFirstRun var="isFirstRun" airing="${airing}"/> <c:if test="${isFirstRun}"> ! <img src="${cp}/m/images/MarkerFirstRunMobile.png" alt="First Run" title="First Run" /> </c:if> <sageair:IsWatched var="isWatched" airing="${airing}"/> <c:if test="${isWatched}"> ! <img src="${cp}/m/images/MarkerWatchedMobile.png" alt="Watched" title="Watched" /> </c:if> <%--br/--%> <sageair:IsAiringHDTV var="isHDTV" airing="${airing}"/> <c:if test="${isHDTV}"> ! <img src="${cp}/m/images/MarkerHDTVMobile.png" alt="HDTV" title="HDTV" /> </c:if> <sagemf:IsLibraryFile var="isLibraryFile" mediaFile="${airing}"/> <c:if test="${isLibraryFile}"> ! <img src="${cp}/m/images/MarkerArchivedMobile.png" alt="Archived" title="Archived" /> </c:if> <sageair:IsDontLike var="isDontLike" airing="${airing}"/> <c:if test="${isDontLike}"> ! <img src="${cp}/m/images/MarkerDontLikeMobile.png" alt="Don't Like" title="Don't Like" /> </c:if> Index: favoritecell.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/favoritecell.jspf,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** favoritecell.jspf 22 Nov 2008 22:12:14 -0000 1.1 --- favoritecell.jspf 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 14,18 **** <c:param name="FavoriteId" value="${favoriteId}"></c:param> </c:url> ! <div class="title"><b>${status.count}. <a href="${favoriteDetailUrl}">${description}</a></b></div> <%--sagefav:GetFavoriteTitle var="title" favorite="${favorite}"/> <sagefav:GetFavoriteCategory var="category" favorite="${favorite}"/> --- 14,18 ---- <c:param name="FavoriteId" value="${favoriteId}"></c:param> </c:url> ! <div class="title">${status.count}. <a href="${favoriteDetailUrl}">${description}</a></div> <%--sagefav:GetFavoriteTitle var="title" favorite="${favorite}"/> <sagefav:GetFavoriteCategory var="category" favorite="${favorite}"/> *************** *** 56,69 **** <p> <c:if test="${isFirstRunsOnly}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavFirstMobile.png" alt="First Runs Only" title="First Runs Only"/> </c:if> <c:if test="${isReRunsOnly}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavRerunMobile.png" alt="Reruns Only" title="Reruns Only"/> </c:if> <c:if test="${isFirstRunsAndReRuns}"> ! <img style="border: 0px none" src="${cp}/images/RecordFavAllMobile.png" alt="First Runs and Reruns" title="First Runs and Reruns"/> </c:if> <c:if test="${isAutoDelete}"> ! <img style="border: 0px none" src="${cp}/images/MarkerDeleteMobile.png" alt="Auto Delete" title="Auto Delete"/> </c:if> </p> --- 56,69 ---- <p> <c:if test="${isFirstRunsOnly}"> ! <img src="${cp}/m/images/RecordFavFirstMobile.png" alt="First Runs Only" title="First Runs Only"/> </c:if> <c:if test="${isReRunsOnly}"> ! <img src="${cp}/m/images/RecordFavRerunMobile.png" alt="Reruns Only" title="Reruns Only"/> </c:if> <c:if test="${isFirstRunsAndReRuns}"> ! <img src="${cp}/m/images/RecordFavAllMobile.png" alt="First Runs and Reruns" title="First Runs and Reruns"/> </c:if> <c:if test="${isAutoDelete}"> ! <img src="${cp}/m/images/MarkerDeleteMobile.png" alt="Auto Delete" title="Auto Delete"/> </c:if> </p> *************** *** 87,94 **** <p> <c:if test="${!empty rating}"> ! <img style="border: 0px none" src="${cp}/images/Rating_${rating}.gif" alt="${rating}" title="${rating}" /> </c:if> <c:if test="${!empty rated}"> ! <img style="border: 0px none" src="${cp}/images/Rating_${rated}.gif" alt="${rated}" title="${rated}" /> </c:if> </p> --- 87,94 ---- <p> <c:if test="${!empty rating}"> ! <img src="${cp}/m/images/Rating_${rating}.gif" alt="${rating}" title="${rating}" /> </c:if> <c:if test="${!empty rated}"> ! <img src="${cp}/m/images/Rating_${rated}.gif" alt="${rated}" title="${rated}" /> </c:if> </p> Index: header.jspf =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/jspf/m/header.jspf,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** header.jspf 15 Jul 2009 04:20:50 -0000 1.2 --- header.jspf 5 Nov 2010 03:08:01 -0000 1.3 *************** *** 6,16 **** <%@ include file="contextpath.jspf"%> ! <div style="text-align:center; vertical-align: middle; margin-bottom: 2px;"><a title="SageTV" href="${cp}/m/menu.jsp"><img style="border: 0px none" src="${cp}/images/SageLogo256smallbluethird.png" alt="SageTV"/></a></div> ! <div style="text-align:center; vertical-align: middle;"> <sagemsgfn:SupportsSystemMessages var="supportsSystemMessages"/> <c:if test="${supportsSystemMessages}"> <sagemsg:GetSystemAlertLevel var="alertLevel"/> <c:if test="${alertLevel > 0}"> ! <a title="System Messages" href="${cp}/m/systemmessages.jsp"><img style="border: 0px none; width: 20px; height: 20px;" src="${cp}/images/MarkerSysAlert${alertLevel}.png" alt="Message Level ${alertLevel}" title="Message Level ${alertLevel}"/></a> </c:if> </c:if> --- 6,19 ---- <%@ include file="contextpath.jspf"%> ! <div class="header"> ! <div class="titlebar"> ! <a title="SageTV" href="${cp}/m/menu.jsp"><img class="logo" src="${cp}/m/images/SageLogo256smaller.png" alt="SageTV"/></a> ! </div> ! <div class="indicators"> <sagemsgfn:SupportsSystemMessages var="supportsSystemMessages"/> <c:if test="${supportsSystemMessages}"> <sagemsg:GetSystemAlertLevel var="alertLevel"/> <c:if test="${alertLevel > 0}"> ! <a title="System Messages" href="${cp}/m/systemmessages.jsp"><img style="border: 0px none; width: 20px; height: 20px;" src="${cp}/m/images/MarkerSysAlert${alertLevel}Mobile.png" alt="Message Level ${alertLevel}" title="Message Level ${alertLevel}"/></a> </c:if> </c:if> *************** *** 18,22 **** <sageglbl:GetCurrentlyRecordingMediaFiles var="currentRecordings"/> <c:if test="${!empty currentRecordings}"> ! <a title="Recording" href="${cp}/m/recordingschedule.jsp"><img src="${cp}/images/RecordingNowMobile.png" alt="Recording"/></a> </c:if> <sageglbl:GetAiringsThatWontBeRecorded var="allConflicts" onlyUnresolved="false"/> --- 21,25 ---- <sageglbl:GetCurrentlyRecordingMediaFiles var="currentRecordings"/> <c:if test="${!empty currentRecordings}"> ! <a title="Recording" href="${cp}/m/recordingschedule.jsp"><img src="${cp}/m/images/RecordingNowMobile.png" alt="Recording"/></a> </c:if> <sageglbl:GetAiringsThatWontBeRecorded var="allConflicts" onlyUnresolved="false"/> *************** *** 25,36 **** <sageglbl:AreThereUnresolvedConflicts var="areThereUnresolvedConflicts"/> <c:if test="${areThereUnresolvedConflicts}"> ! <a title="Unresolved Conflicts" href="${cp}/m/conflicts.jsp"><img src="${cp}/images/ConflictUnresolvedMobile.png" alt="Conflicts"/></a> </c:if> <c:if test="${!areThereUnresolvedConflicts}"> ! <a title="Resolved Conflicts" href="${cp}/m/conflicts.jsp"><img src="${cp}/images/ConflictResolvedMobile.png" alt="Conflicts"/></a> </c:if> </c:if> </div> ! <c:if test="${!empty param.pageTitle}"> ! <h3 class="header">${param.pageTitle}</h3> ! </c:if> --- 28,42 ---- <sageglbl:AreThereUnresolvedConflicts var="areThereUnresolvedConflicts"/> <c:if test="${areThereUnresolvedConflicts}"> ! <a title="Unresolved Conflicts" href="${cp}/m/conflicts.jsp"><img src="${cp}/m/images/ConflictUnresolvedMobile.png" alt="Conflicts"/></a> </c:if> <c:if test="${!areThereUnresolvedConflicts}"> ! <a title="Resolved Conflicts" href="${cp}/m/conflicts.jsp"><img src="${cp}/m/images/ConflictResolvedMobile.png" alt="Conflicts"/></a> </c:if> </c:if> </div> ! <div class="title"> ! <c:if test="${!empty param.pageTitle}"> ! ${param.pageTitle} ! </c:if> ! </div> ! </div> \ No newline at end of file |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/resources/plugin In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/resources/plugin Modified Files: plugin.xml Log Message: Version 2.0.0 Index: plugin.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/resources/plugin/plugin.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** plugin.xml 17 Jul 2010 22:06:39 -0000 1.4 --- plugin.xml 5 Nov 2010 03:08:01 -0000 1.5 *************** *** 10,18 **** <Desktop>false</Desktop> <ResourcePath>mobileweb</ResourcePath> ! <Screenshot title="Main Menu">http://forums.sagetv.com/forums/downloads/mobile_menu_f3J.png</Screenshot> <Webpage title="Forum Support Thread">http://forums.sagetv.com/forums/showthread.php?t=48460</Webpage> <Webpage title="Mobile Web Interface Wiki">http://tools.assembla.com/sageplugins/wiki/MobileWebInterface</Webpage> <ReleaseNotes> <![CDATA[ Version 1.4.1 1. Fixed error 'mobile_menu.json (The system cannot find the path specified)' --- 10,30 ---- <Desktop>false</Desktop> <ResourcePath>mobileweb</ResourcePath> ! <Screenshot title="Main Menu">http://sageplugins.sourceforge.net/screenshots/mobileweb/menu.png</Screenshot> ! <Screenshot title="iPhone Details Page">http://sageplugins.sourceforge.net/screenshots/mobileweb/iPhone%20Details%20Page.png</Screenshot> <Webpage title="Forum Support Thread">http://forums.sagetv.com/forums/showthread.php?t=48460</Webpage> <Webpage title="Mobile Web Interface Wiki">http://tools.assembla.com/sageplugins/wiki/MobileWebInterface</Webpage> <ReleaseNotes> <![CDATA[ + Version 2.0.0 + 1. SageTV v7-style interface (switch from blue to gray as well as other style changes) + 2. Convert TV recordings in real time and watch on iPhone, iPod touch, and iPad + 3. Support latest watched time when starting and suspending viewing on iPhone, iPod touch, and iPad + 4. Start playback of TV recordings on extenders, placeshifters, and clients + 5. Convert all images to support transparency (may display strangely on older mobile browsers) + 6. Improved font handling when switching between portrait and landscape modes on iPhone, iPod touch, and iPad + 7. Fixed HTML to make CSS styling easier + 8. View what's playing on SageTV Clients + 9. Change max number of hours in TV listings from 12 to 24 + Version 1.4.1 1. Fixed error 'mobile_menu.json (The system cannot find the path specified)' *************** *** 45,48 **** --- 57,68 ---- <MinVersion>2.0.1</MinVersion> </Dependency> + <Dependency> + <Plugin>sagex-api</Plugin> + <MinVersion>7.0.15</MinVersion> + </Dependency> + <Dependency> + <Plugin>mediastreaming</Plugin> + <MinVersion>1.0.0</MinVersion> + </Dependency> <PluginType>Standard</PluginType> <Package> |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/src/sagex/webserver/servlet In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/src/sagex/webserver/servlet Modified Files: MediaFileThumbnailServlet.java Log Message: Version 2.0.0 Index: MediaFileThumbnailServlet.java =================================================================== RCS file: /cvsroot/sageplugins/webapp/src/sagex/webserver/servlet/MediaFileThumbnailServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MediaFileThumbnailServlet.java 2 Aug 2009 20:48:52 -0000 1.1 --- MediaFileThumbnailServlet.java 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 36,39 **** --- 36,52 ---- } } + else + { + String series = req.getParameter("series"); + // TODO editorial + if (series != null) + { + thumb = getSeriesThumbnail(series); + } + // else if (type.equals("editorial")) + // { + // thumb = SageTV.api("GetEditorialImage", new Object[] {mediaFile}); + // } + } } else *************** *** 54,58 **** if (album == null) { ! throw new Exception("Cound not find album for: " + albumName + "/" + artist + "/" + year + "/" + genre); } if ((Boolean) SageTV.api("HasAlbumArt", new Object[] {album})) --- 67,71 ---- if (album == null) { ! throw new Exception("Could not find album for: " + albumName + "/" + artist + "/" + year + "/" + genre); } if ((Boolean) SageTV.api("HasAlbumArt", new Object[] {album})) *************** *** 114,117 **** --- 127,156 ---- } } + + private Object getSeriesThumbnail(String series) throws Exception + { + Object seriesInfo = null; + Object allSeriesInfo = SageTV.api("GetAllSeriesInfo", null); + Integer size = (Integer) SageTV.api("Size", new Object[] {allSeriesInfo}); + if ((size != null) && (size > 0)) + { + for (int i = 0; i < size; i++) + { + Object currentSeriesInfo = SageTV.api("GetElement", new Object[] {allSeriesInfo, i}); + String currentSeriesInfoTitle = (String) SageTV.api("GetSeriesTitle", new Object[] {currentSeriesInfo}); + if (series.equals(currentSeriesInfoTitle)) + { + seriesInfo = currentSeriesInfo; + break; + } + } + } + + if (seriesInfo != null) + { + return SageTV.api("GetSeriesImage", new Object[] {seriesInfo}); + } + return null; + } } |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/WebContent/m/css In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/WebContent/m/css Modified Files: sage_mobile.css Log Message: Version 2.0.0 Index: sage_mobile.css =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/m/css/sage_mobile.css,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sage_mobile.css 22 Nov 2008 22:12:15 -0000 1.1 --- sage_mobile.css 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 1,16 **** - /* - TODO - border colors for favorite, record, recording, etc. - style for drop down controls - */ body { font: 9pt 'Verdana', 'Arial','Helvetica'; ! background-color: #042360; /* #021C37 */ color: #FFFFFF; ! margin: 3px; } p { ! margin: 5px 0px 0px 0px; } --- 1,16 ---- body { font: 9pt 'Verdana', 'Arial','Helvetica'; ! text-shadow: rgba(0, 0, 0, 0.7) 1px 1px 0; ! background-color: #606060; color: #FFFFFF; ! margin: 0px; ! overflow-x: hidden; ! -webkit-user-select: none; ! -webkit-text-size-adjust: none; } p { ! margin: 4px 0px 0px 0px; ! word-wrap: break-word; } *************** *** 27,137 **** text-decoration: underline; } /*tr td { border-bottom: 1px solid; }*/ /*table, tr, td { ! cellpadding: 0px; ! cellspacing: 0px; }*/ button { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 10pt; ! margin: 0; ! padding: 2px 4px 2px 4px; ! text-align: center; ! color: #FFFFFF; ! background-color: #000060; ! border: 2px solid rgb(106, 129, 190); } td button { ! /* ! * Buttons in tables should all be the same width. This is used ! * in the 'Options' section of details.jsp. ! */ ! width: 100%; } button:hover, button:focus { ! text-decoration: underline; ! /* same color as the bottom of the gradient since html/css can't stretch background images */ ! background-color: rgb(97, 132, 187) /*rgb(76, 110, 156)*/ /*#0355a7*/; ! border: 2px solid /*#042360*/ #ffd800; /* color is same as body background */ ! color: #ffd800; ! /* gradient background when a button is selected */ ! background-image: url(../../images/ButtonBgMobile.png); ! background-repeat: repeat-x; } select { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 10pt; ! margin: 0; ! /*text-align: center;*/ ! color: #FFFFFF; ! background-color: #000060; /* #042360 */ ! border: 2px solid #FFFFFF; ! padding: 2px; } td select { ! /* ! * Drop down boxes in tables should all be the same width. ! */ ! width: 100%; } select:hover, select:focus { ! text-decoration: underline; ! background-color: #0355a7; ! border: 2px solid #ffd800; ! color: #ffd800; } /* todo radio and check box input { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 10pt; ! margin: 0; ! / *padding: 0;* / ! / *text-align: center;* / ! / *background-color: #FFFFFF; ! color: #000060;* / ! color: #FFFFFF; ! background-color: #000060; / * #042360 * / ! / *border: 1px solid #FFFFFF;* / ! border: 2px solid #FFFFFF; ! / *border: none;* / ! padding: 2px; }*/ img { border: 0px none; } .header { ! font-size: 10pt; ! text-align: center; ! vertical-align: middle; ! margin-top: 5px; ! margin-bottom: 5px; } .footer { ! margin-top: 5px; ! margin-bottom: 5px; } .content { ! /* ! * Place a single white line around the edge of most pages. ! * Pages with only lists of airings such as recordings.jsp ! * do not use this style. ! */ ! border: 2px solid #FFFFFF; ! padding: 3px; ! /* TODO bottom margin, check recording conflicts page */ ! margin-bottom: 3px; } --- 27,301 ---- text-decoration: underline; } + /*tr td { border-bottom: 1px solid; }*/ /*table, tr, td { ! cellpadding: 0px; ! cellspacing: 0px; }*/ button { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 16px; ! text-align: center; ! text-shadow: #606060 1px 1px 0; ! background-color: #0F0F0F; ! color: #FFFFFF; ! margin: 2px; ! padding: 6px 4px 6px 4px; ! border: 2px solid #FFFFFF; ! border-radius: 10px; ! -moz-border-radius: 10px; ! -webkit-border-radius: 10px; ! box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -moz-box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -webkit-box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ } td button { ! /* ! * Buttons in tables should all be the same width. This is used ! * in the 'Options' section of details.jsp. ! */ ! width: 100%; } button:hover, button:focus { ! text-decoration: none; ! /* same color as the bottom of the gradient since html/css can't stretch background images? */ ! background-color: #505050 ! color: #ffd800; ! border: 2px solid #ffd800; ! /* gradient background when a button is selected */ ! /*background-image: url(../images/ButtonBgMobile.png);*/ ! /*background-repeat: repeat-x;*/ ! } ! ! button:active { ! background-color: #3C3C3C; ! color: #998200; ! padding: 7px 3px 5px 5px; ! border: 2px solid #998200; ! box-shadow: 1px 1px 1px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -moz-box-shadow: 1px 1px 1px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -webkit-box-shadow: 1px 1px 1px rgba(15, 15, 15, 0.7); /* #0F0F0F */ } select { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 14px; ! background-color: #0F0F0F; ! color: #FFFFFF; ! margin: 0; ! padding: 2px; ! border: 2px solid #FFFFFF; ! box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -moz-box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ ! -webkit-box-shadow: 3px 3px 3px rgba(15, 15, 15, 0.7); /* #0F0F0F */ } td select { ! /* ! * Drop down boxes in tables should all be the same width. ! */ ! width: 100%; } select:hover, select:focus { ! text-decoration: underline; ! background-color: #505050; ! color: #ffd800; ! border: 2px solid #ffd800; ! } ! ! option { ! font-weight: bold; } /* todo radio and check box input { ! font-family: Arial, Tahoma, "lucida console", sans-serif; ! font-size: 10pt; ! margin: 0; ! / *padding: 0;* / ! / *text-align: center;* / ! / *background-color: #FFFFFF; ! color: #000060;* / ! color: #FFFFFF; ! background-color: #000060; / * #042360 * / ! / *border: 1px solid #FFFFFF;* / ! border: 2px solid #FFFFFF; ! / *border: none;* / ! padding: 2px; }*/ img { + vertical-align: middle; border: 0px none; + /* -webkit-box-reflect: below 5px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.75, transparent), to(white));*/ } .header { ! border-bottom: 3px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .subheader { ! font-size: 16px; ! text-align: center; ! vertical-align: middle; ! margin: 0px; ! padding-top: 5px; ! padding-bottom: 5px; ! border-bottom: 3px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .titlebar { ! height: 40px; ! text-align: center; ! vertical-align: middle; ! background-image: url(../images/HeaderBgMobile.png); ! background-repeat: repeat-x; ! box-shadow: 0px 0px 10px rgba(0, 0, 0, 1.0); ! -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 1.0); ! -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 1.0); ! } ! ! .titlebar img, .titlebar a { ! vertical-align: middle; ! } ! ! .titlebar .logo { ! margin-top: 5px; ! } ! ! .header .title { ! font-weight: bold; ! font-size: 18px; ! text-align: center; ! vertical-align: middle; ! margin: 0px; ! padding-top: 5px; ! padding-bottom: 5px; ! } ! ! .indicators { ! text-align: center; ! vertical-align: middle; ! padding-top: 10px; ! /* background-image: url(../images/DividerBgMobile.png); ! background-repeat: repeat-x; ! border-radius: 5px; ! -moz-border-radius: 5px; ! -webkit-border-radius: 5px;*/ } .footer { ! font-size: 12px; ! padding: 5px; ! border: none; } .content { ! font-size: 16px; ! margin-bottom: 0px; ! padding: 0px; ! border-bottom: 3px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .details { ! font-size: 14px; ! margin: 0; ! padding: 3px 3px 3px 10px; ! border: none; ! } ! ! /*.details .title, */ ! .content .title { ! font-size: 16px; ! font-weight: bold; ! padding: 3px; ! } ! ! .videothumb { ! margin: 10px 0px 0px 10px; ! border-radius: 5px; ! box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! } ! ! .imgthumb { ! border-radius: 5px; ! -moz-border-radius: 5px; ! -webkit-border-radius: 5px; ! box-shadow: 0px 0px 10px #000000; ! -moz-box-shadow: 0px 0px 10px #000000; ! -webkit-box-shadow: 0px 0px 10px #000000; ! } ! ! hr { ! margin: 1px 0px 1px 0px; ! padding: 0px; ! border-bottom: 2px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .listings { ! font-size: 12px; ! } ! ! /*.listings table { ! background: transparent; ! }*/ ! ! .listings .channelcell { ! text-align: center; ! border: 1px solid #FFFFFF; ! } ! ! .listings .showcell { ! border: 1px solid #FFFFFF; ! } ! ! .listings .optionstitle { ! border-bottom: 1px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .listings .optionsbody { ! border-bottom: 2px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! } ! ! .listings .title { ! font-size: 14px; ! margin: 0px; ! padding: 0px; ! } ! ! #overlay { ! position: absolute; ! margin: 10px 0px 0px 10px; ! border-radius: 5px; ! box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); ! z-index: 1; } *************** *** 142,151 **** */ .label { margin: 5px 0px 2px 0px; - font-weight: bold; } .value { ! margin-left: 10px; } --- 306,317 ---- */ .label { + font-weight: bold; + font-size: 14px; margin: 5px 0px 2px 0px; } .value { ! font-size: 14px; ! margin-left: 10px; } *************** *** 154,215 **** */ .section { ! padding: 2px; ! background-color: #314C97 /*#FFFFFF*/; ! color: #FFFFFF /*#042360*/; ! font-size: 14px; ! font-weight: bold; ! text-align: center; ! vertical-align: center; ! /*margin-top: 5px;*/ ! margin-bottom: 0px; ! padding: 2px; ! background-image: url(../../images/DividerBgMobile.png); ! background-repeat: repeat-x; } .sectionbody { padding: 5px; } .optionstitle { ! background-color: #FFFFFF; ! color: #042360; ! font-size: 14px; ! text-align: center; ! vertical-align: center; ! margin-top: 5px; ! margin-bottom: 0px; ! /*background-image: url(../../images/OptionsBgMobile.png); ! background-repeat: repeat-x;*/ } .optionsbody { ! border: 2px solid #FFFFFF; ! padding: 3px; } .divider { ! background-color: #FFFFFF /*#314C97*/ /*#577195*/; /* same as bottom gradient color in background image */ ! color: #042360 /*#FFFFFF*/; ! padding: 2px 2px 2px 5px; font-weight: bold; ! font-size: 14px; ! /* 51698a 779bcc */ ! /* #314C97 #6082B6 */ ! /*background-image: url(../../images/OptionsBgMobile.png); ! background-repeat: repeat-x;*/ ! /*margin-top: 5px; ! margin-left: 5px; ! margin-right: 5px;*/ ! margin-top: 6px; } .dividerbody { ! border: 2px solid #FFFFFF; ! padding: 3px; ! /*margin-left: 5px; ! margin-right: 5px; ! margin-bottom: 5px;*/ ! margin-bottom: 6px; } --- 320,398 ---- */ .section { ! font-size: 18px; ! font-weight: bold; ! text-align: center; ! vertical-align: center; ! line-height: 29px; ! background-color: #434343; ! color: #FFFFFF; ! margin: 5px 5px 0px 5px; ! padding: 2px; ! border: 1px solid #878787; ! border-radius: 5px; ! -moz-border-radius: 5px; ! -webkit-border-radius: 5px; ! background-image: url(../images/DividerBgMobile.png); ! background-repeat: repeat-x; } + /*.gloss { + background-image: url(../images/DividerBgMobiley.png); + }*/ + .sectionbody { + margin-left: 5px; + margin-right: 5px; padding: 5px; } .optionstitle { ! font-size: 18px; ! font-weight: bold; ! vertical-align: center; ! text-align: left; ! color: #FFFFFF; ! margin: 0px; ! padding: 10px 3px 10px 3px; ! border-bottom: 1px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; ! /*background-image: url(../images/OptionsBgMobile.png); ! background-repeat: repeat-x;*/ } .optionsbody { ! padding: 3px 3px 3px 5px; } .divider { ! font-size: 16px; font-weight: bold; ! color: #FFFFFFF; ! margin-top: 6px; ! margin-bottom: 0px; ! padding-top: 0px; ! padding-bottom: 10px; ! border-bottom: 1px solid #FFFFFF; ! /*background-image: url(../images/OptionsBgMobile.png); ! background-repeat: repeat-x;*/ ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; } .dividerbody { ! font-size: 14px; ! margin-bottom: 6px; ! padding: 3px 3px 3px 10px; ! } ! ! .paddingbody .qualitybody { ! padding: 10px; ! border: 3px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; } *************** *** 220,258 **** */ .dividerbody .listcell { ! border: none; } /*.menucontainer*/ .menu { ! /*background-color: #FFFFFF*/ /*#314C97*/ /*#577195*/; /* same as bottom gradient color in background image */ ! /*color: #042360*/ /*#FFFFFF*/; ! padding: 2px 2px 2px 5px; ! font-weight: bold; ! font-size: 14px; ! /* 51698a 779bcc */ ! /* #314C97 #6082B6 */ ! /*background-image: url(../../images/OptionsBgMobile.png); ! background-repeat: repeat-x;*/ ! ! ! /*padding: 2px;*/ ! background-color: #314C97 /*#FFFFFF*/; ! color: #FFFFFF /*#042360*/; ! font-size: 14px; ! font-weight: bold; ! text-align: left; ! vertical-align: center; ! /*margin-top: 5px; ! margin-bottom: 0px;*/ ! /*padding: 2px;*/ ! background-image: url(../../images/DividerBgMobile.png); ! background-repeat: repeat-x; ! ! /* display: table, table-row, table-cell; */ } .menuimage { ! width: 25px; ! vertical-align: middle; ! text-align: center; } --- 403,440 ---- */ .dividerbody .listcell { ! border: none; ! box-shadow: none; ! -moz-box-shadow: none; ! -webkit-box-shadow: none; } + /*.menucontainer*/ .menu { ! font-size: 18px; ! font-weight: bold; ! line-height: 29px; ! text-align: left; ! vertical-align: center; ! background-color: #434343; ! color: #FFFFFF; ! padding: 2px 2px 2px 10px; ! border: 1px solid #878787; ! background-image: url(../images/DividerBgMobile.png); ! background-repeat: repeat-x; ! border-radius: 5px; ! -moz-border-radius: 5px; ! -webkit-border-radius: 5px; } .menuimage { ! width: 35px; ! vertical-align: middle; ! text-align: center; ! } ! ! .menuitem { ! font-size: 18px; ! line-height: 30px; ! border-bottom: #A0A0A0; } *************** *** 261,275 **** */ .listcell { ! border: 3px solid #FFFFFF; /* 110, 145, 180 */ ! margin: 0px 0px 3px 0px; ! padding: 2px; ! /*color: #6E91B4;*/ ! color: #FFFFFF; } .listcell .title { ! font-weight: bold; ! color: #FFFFFF; ! /*margin: 0px 0px 5px 0px;*/ } --- 443,472 ---- */ .listcell { ! font-size: 14px; ! color: #FFFFFF; ! margin: 2px 0px 2px 0px; ! padding: 5px; ! border-bottom: 2px solid #FFFFFF; ! box-shadow: 0px 1px 0px #000000; ! -moz-box-shadow: 0px 1px 0px #000000; ! -webkit-box-shadow: 0px 1px 0px #000000; } .listcell .title { ! font-size: 16px; ! font-weight: bold; ! color: #FFFFFF; ! padding: 0px; ! } ! ! .simplemessage { ! padding: 5px; ! } ! ! .systemmessagetext { ! margin-left: 10px; ! margin-top: 5px; ! padding: 2px; ! border: 1px solid #FFFFFF; } *************** *** 278,298 **** */ .favorite { ! border-color: white; } .watched { ! font-style: italic; } .dontlike { ! border-color: black; } .manualrecord { ! border-color: red; } .recording { ! border-color: #ffd800; } /* --- 475,495 ---- */ .favorite { ! border-color: white; } .watched { ! font-style: italic; } .dontlike { ! border-color: black; } .manualrecord { ! border-color: red; } .recording { ! border-color: #ffd800; } /* *************** *** 308,324 **** */ .category_other { ! background: #042360; } .category_other_past { ! background: #021840; } .category_news { ! background: #596627; } .category_news_past { ! background: #32443e; } --- 505,521 ---- */ .category_other { ! background: transparent; } .category_other_past { ! background: rgba(0, 0, 0, 0.3); } .category_news { ! background: #596627; } .category_news_past { ! background: #32443e; } *************** *** 327,331 **** .category_sportsnonevent, .category_sportstalk { ! background: #12604a; } --- 524,528 ---- .category_sportsnonevent, .category_sportstalk { ! background: #12604a; } *************** *** 334,356 **** .category_sportsnonevent_past, .category_sportstalk_past { ! background: #0b425d; } .category_movie { ! background: #703c88; } .category_movie_past { ! background: #403580; } .category_sitcom { ! background: #a6480a; } .category_sitcom_past { ! background: #6a3009; } /* * End: Show Categories */ --- 531,598 ---- .category_sportsnonevent_past, .category_sportstalk_past { ! background: #0b425d; } .category_movie { ! background: #703c88; } .category_movie_past { ! background: #403580; } .category_sitcom { ! background: #a6480a; } .category_sitcom_past { ! background: #6a3009; } /* * End: Show Categories */ + + + + + + /** status states **/ + #status { + position: absolute; + z-index: 2; top: 260px; left: 330px; + } + #status.clicktoplay:before { + content: "CLICK TO PLAY"; + } + #status.progress:before { + content: url(../images/spinner.gif); + position: absolute; + left: 82px; + top: -12px; + } + #status.error:before { + content: "OH NO! ERROR!"; + color: yellow; + } + + /** showing and hidden states **/ + #overlay.showing { + opacity: 1.0; + } + .showing { + opacity: 0.8; + position: absolute; + z-index: 1; + } + .hidden { + opacity: 0; + position: absolute; + z-index: -1; + } + + /** animations to fade out the overlay image and "Click To Play" button **/ + #overlay, #status { + -webkit-transition-property: opacity, z-index; + -webkit-transition-duration: 0.8s, 0s; + -webkit-transition-delay: 0, 2s; + } |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/src/sagex/webserver In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/src/sagex/webserver Modified Files: Version.java Log Message: Version 2.0.0 Index: Version.java =================================================================== RCS file: /cvsroot/sageplugins/webapp/src/sagex/webserver/Version.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Version.java 17 Jul 2010 21:08:52 -0000 1.6 --- Version.java 5 Nov 2010 03:08:01 -0000 1.7 *************** *** 12,17 **** VERSION_1_4_0 ("1.4.0"), VERSION_1_4_1 ("1.4.1"), ! ! CURRENT_VERSION (VERSION_1_4_1.version); private String version = null; --- 12,18 ---- VERSION_1_4_0 ("1.4.0"), VERSION_1_4_1 ("1.4.1"), ! VERSION_2_0_0 ("2.0.0"), ! ! CURRENT_VERSION (VERSION_2_0_0.version); private String version = null; |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/src/sagex/webserver/command In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/src/sagex/webserver/command Modified Files: WatchNowCommand.java AbstractCommand.java CommandEnum.java Log Message: Version 2.0.0 Index: WatchNowCommand.java =================================================================== RCS file: /cvsroot/sageplugins/webapp/src/sagex/webserver/command/WatchNowCommand.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WatchNowCommand.java 22 Nov 2008 22:13:54 -0000 1.1 --- WatchNowCommand.java 5 Nov 2010 03:08:01 -0000 1.2 *************** *** 1,4 **** --- 1,10 ---- package sagex.webserver.command; + import java.util.Arrays; + + import org.mortbay.log.Log; + + import sage.SageTV; + public class WatchNowCommand extends AbstractCommand { *************** *** 6,45 **** public void doCommand() throws Exception { ! /*String context=req.getParameter("context"); ! String[] UiContexts=GetUIContextNames(); ! if ( context == null || ! Arrays.asList(UiContexts).contains(context) ) { ! // invalid or no context -- error page ! // set headers before accessing the Writer ! htmlHeaders(resp); ! noCacheHeaders(resp); ! PrintWriter out = resp.getWriter(); ! xhtmlHeaders(out); ! out.println("<html>" + ! "<head><title>SageTV Airing Command</title>"); ! jsCssImport(req, out); ! out.println("</head><body>"); ! printTitle(out,"Error"); ! out.println("<div id=\"content\">"); ! if ( context == null ) ! out.println("<p>No UI Context Specified:<br/>"); ! if ( ! Arrays.asList(UiContexts).contains(context) ) ! out.println("<p>UI Context: \""+context+"\" is not active:<br/>"); ! out.println(" use: "+req.getRequestURI()+"?command=<command&rt;&context=<context&rt;</p>"); ! out.println("</div></body></html>"); ! out.close(); ! return; ! } else { ! long now=System.currentTimeMillis(); ! if ( airing.idType==Airing.ID_TYPE_MEDIAFILE ! || ( airing.idType==Airing.ID_TYPE_AIRING ! && airing.getStartDate().getTime()<=now ! && airing.getEndDate().getTime()>=now)) { ! SageApi.ApiUI(context,"Watch",airing.sageAiring); ! Thread.sleep(500); ! SageApi.ApiUI(context,"SageCommand","Home"); ! Thread.sleep(500); ! SageApi.ApiUI(context,"SageCommand","TV"); ! } ! }*/ } } --- 12,56 ---- public void doCommand() throws Exception { ! String context = getContext(); ! ! String[] uiContexts = super.getUIContextNames(); ! ! if (context == null) ! { ! String msg = "No UI Context Specified."; ! Exception e = new Exception(msg); ! Log.info(msg); ! Log.ignore(e); ! throw e; ! } ! ! if (! Arrays.asList(uiContexts).contains(context)) ! { ! String msg = "UI Context " + context + " is not active."; ! Exception e = new Exception(msg); ! Log.info(msg); ! Log.ignore(e); ! throw e; ! } ! ! long now = System.currentTimeMillis(); ! long airingStartTime = (Long) SageTV.api("GetAiringStartTime", new Object[] {getSageObject()}); ! long airingEndTime = (Long) SageTV.api("GetAiringEndTime", new Object[] {getSageObject()}); ! boolean isAiring = (Boolean) SageTV.api("IsAiringObject", new Object[] {getSageObject()}); ! boolean isMediaFile = (Boolean) SageTV.api("IsMediaFileObject", new Object[] {getSageObject()}); ! ! if (isMediaFile || ! (isAiring && ! (airingStartTime <= now) && ! (airingEndTime >= now) ! ) ! ) ! { ! SageTV.apiUI(context, "Watch", new Object[] {getSageObject()}); ! Thread.sleep(500); ! SageTV.apiUI(context, "SageCommand", new Object[] {"Home"}); ! Thread.sleep(500); ! SageTV.apiUI(context, "SageCommand", new Object[] {"TV"}); ! } } } Index: CommandEnum.java =================================================================== RCS file: /cvsroot/sageplugins/webapp/src/sagex/webserver/command/CommandEnum.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CommandEnum.java 15 Jul 2009 04:20:50 -0000 1.3 --- CommandEnum.java 5 Nov 2010 03:08:01 -0000 1.4 *************** *** 15,19 **** DELETE_FILE (true, "DeleteFile", "Delete File", DeleteFileCommand.class), RECORDING_ERROR (true, "RecordingError", "Delete File - Wrong Recording", RecordingErrorCommand.class), ! //WATCH_NOW ("WatchNow", "Watch Now", WatchNowCommand.class), ARCHIVE (false, "Archive", "Set Archived Flag", SetArchivedCommand.class), UNARCHIVE (false, "Unarchive", "ClearArchived Flag", ClearArchivedCommand.class), --- 15,19 ---- DELETE_FILE (true, "DeleteFile", "Delete File", DeleteFileCommand.class), RECORDING_ERROR (true, "RecordingError", "Delete File - Wrong Recording", RecordingErrorCommand.class), ! WATCH_NOW (false, "WatchNow", "Watch Now", WatchNowCommand.class), ARCHIVE (false, "Archive", "Set Archived Flag", SetArchivedCommand.class), UNARCHIVE (false, "Unarchive", "ClearArchived Flag", ClearArchivedCommand.class), *************** *** 37,40 **** --- 37,41 ---- DELETE_ALL_SYSTEM_MESSAGES (false, "DeleteAllSystemMessages", "Delete All System Messages", DeleteAllSystemMessagesCommand.class), RESET_ALERT_LEVEL (false, "ResetSystemAlertLevel", "Reset Alert Level", ResetAlertLevelCommand.class), + SET_LATEST_WATCHED_TIME (false, "SetLatestWatchedTime", "Set Latest Watched Time", SetLatestWatchedTimeCommand.class), //RESOLVE_CONFLICT ("ResolveConflict", "Resolve Conflict", ResolveConflictCommand.class), SAGE_COMMAND (false, null, null, SageCommand.class); Index: AbstractCommand.java =================================================================== RCS file: /cvsroot/sageplugins/webapp/src/sagex/webserver/command/AbstractCommand.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** AbstractCommand.java 15 Jul 2009 04:20:50 -0000 1.5 --- AbstractCommand.java 5 Nov 2010 03:08:01 -0000 1.6 *************** *** 4,7 **** --- 4,8 ---- import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; + import java.util.Arrays; import java.util.Collections; import java.util.HashMap; *************** *** 9,12 **** --- 10,15 ---- import java.util.Map; + import org.mortbay.log.Log; + import sage.SageTV; *************** *** 238,268 **** } ! protected String[] getUIContextNames() { ! // support backward compatibility for Sage 2.2 String[] uiContexts = new String[] {}; try { - // 4.1 uiContexts = (String[]) SageTV.api("GetUIContextNames", null); } catch (InvocationTargetException e) { ! // 4.1 API failed, try 2.2 API ! try { ! Object[] widgets = (Object[]) SageTV.api("GetAllWidgets", null); ! if ((Integer) SageTV.api("Size", widgets) > 0) ! { ! uiContexts = new String[] {"SAGETV_PROCESS_LOCAL_UI"}; ! } ! } ! catch (InvocationTargetException e2) ! { ! // 2.2 API failed - no UI contexts } } ! return uiContexts; } } --- 241,280 ---- } ! protected String[] getUIContextNames() throws Exception { ! String[] allContexts = null; String[] uiContexts = new String[] {}; + String[] clients = new String[] {}; try { uiContexts = (String[]) SageTV.api("GetUIContextNames", null); + clients = (String[]) SageTV.api("GetConnectedClients", null); + if ((uiContexts.length > 0) || (clients.length > 0)) + { + allContexts = new String[uiContexts.length + clients.length]; + } + if (uiContexts.length > 0) + { + System.arraycopy(uiContexts, 0, allContexts, 0, uiContexts.length); + } + if (clients.length > 0) + { + System.arraycopy(clients, 0, allContexts, uiContexts.length, clients.length); + } } catch (InvocationTargetException e) { ! String msg = e.getTargetException().getMessage(); ! if (msg == null) { ! msg = e.getMessage(); } + Log.info(msg); + Log.ignore(e); + throw new Exception(msg); } ! ! return allContexts; } } |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp/WebContent/WEB-INF In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081/WebContent/WEB-INF Modified Files: mobile_menu.json Log Message: Version 2.0.0 Index: mobile_menu.json =================================================================== RCS file: /cvsroot/sageplugins/webapp/WebContent/WEB-INF/mobile_menu.json,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** mobile_menu.json 15 Jul 2009 04:46:55 -0000 1.5 --- mobile_menu.json 5 Nov 2010 03:08:01 -0000 1.6 *************** *** 3,7 **** 'title' : 'Media Center', 'link' : null, ! 'image' : '../images/MediaCenter.png', 'items' : [ --- 3,7 ---- 'title' : 'Media Center', 'link' : null, ! 'image' : 'images/MediaCenter.png', 'items' : [ *************** *** 13,25 **** 'title' : 'Recordings', 'link' : 'recordings.jsp', ! 'image' : '../images/GoRecordingsMobile.png' }, { 'title' : 'Search Airings', ! 'link' : 'searchairings.jsp' }, { 'title' : 'Search Recordings', ! 'link' : 'searchrecordings.jsp' }, { --- 13,27 ---- 'title' : 'Recordings', 'link' : 'recordings.jsp', ! 'image' : 'images/GoRecordingsMobile.png' }, { 'title' : 'Search Airings', ! 'link' : 'searchairings.jsp', ! 'image' : 'images/SearchIconMobile.png' }, { 'title' : 'Search Recordings', ! 'link' : 'searchrecordings.jsp', ! 'image' : 'images/SearchIconMobile.png' }, { *************** *** 29,33 **** { 'title' : 'System Messages', ! 'link' : 'systemmessages.jsp' }, ] --- 31,36 ---- { 'title' : 'System Messages', ! 'link' : 'systemmessages.jsp', ! 'image' : 'images/MarkerSysAlert1Mobile.png' }, ] *************** *** 42,51 **** 'title' : 'Upcoming Recordings', 'link' : 'recordingschedule.jsp', ! 'image' : '../images/GoScheduleMobile.png' }, { 'title' : 'Manage Favorites', 'link' : 'favorites.jsp', ! 'image' : '../images/RecordFavAllMobile.png' }, { --- 45,54 ---- 'title' : 'Upcoming Recordings', 'link' : 'recordingschedule.jsp', ! 'image' : 'images/GoScheduleMobile.png' }, { 'title' : 'Manage Favorites', 'link' : 'favorites.jsp', ! 'image' : 'images/RecordFavAllMobile.png' }, { *************** *** 56,60 **** 'title' : 'Resolve Recording Conflicts', 'link' : 'conflicts.jsp', ! 'image' : '../images/ConflictResolvedMobile.png' }, ] --- 59,63 ---- 'title' : 'Resolve Recording Conflicts', 'link' : 'conflicts.jsp', ! 'image' : 'images/ConflictResolvedMobile.png' }, ] |
From: jreichen <jre...@us...> - 2010-11-05 03:08:09
|
Update of /cvsroot/sageplugins/webapp In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv17081 Modified Files: deploytest.xml build.xml Log Message: Version 2.0.0 Index: build.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/build.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** build.xml 17 Jul 2010 22:07:06 -0000 1.7 --- build.xml 5 Nov 2010 03:08:01 -0000 1.8 *************** *** 6,10 **** <property file="build.properties"/> ! <property name="plugin.version" value="1.4.1"/> <property name="src.dir" location="src"/> --- 6,10 ---- <property file="build.properties"/> ! <property name="plugin.version" value="2.0.0"/> <property name="src.dir" location="src"/> *************** *** 181,186 **** <replacefilter token="@@download-url-location@@" value="${download.url.location}"/> <replacefilter token="@@download-url-params@@" value="${download.url.params}"/> - <replacefilter token="@@plugin-version@@" value="${plugin.version}"/> - <replacefilter token="@@build-number@@" value="${build.number}"/> <replacefilter token="@@plugin-impl-version@@" value="${plugin.impl.version}"/> </replace> --- 181,184 ---- Index: deploytest.xml =================================================================== RCS file: /cvsroot/sageplugins/webapp/deploytest.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** deploytest.xml 22 Dec 2008 01:06:05 -0000 1.3 --- deploytest.xml 5 Nov 2010 03:08:01 -0000 1.4 *************** *** 1,10 **** <?xml version="1.0" encoding="UTF-8"?> <!-- - sudo mkdir /media/sshfs - sudo mkdir /media/sshfs/sagetvhome - sudo chown jreichen:jreichen -R /media/sshfs - sshfs sagetv@192.168.25.102:/opt/sagetv /media/sshfs/sagetvhome/ - --> - <!-- compile create war/dir --- 1,4 ---- *************** *** 14,18 **** <project name="SageTV Web App" default="deploy"> ! <!--target name="build" depends="sync, updatecontext"--> <target name="build"> <ant antfile="deploy.xml" target="makezip"/> --- 8,12 ---- <project name="SageTV Web App" default="deploy"> ! <target name="build"> <ant antfile="deploy.xml" target="makezip"/> *************** *** 20,49 **** <target name="deploy" depends="build"> ! <unzip src="dist/SageWebApp.zip" dest="/media/sshfs/sagetvhome/server/"/> <antcall target="updatecontext"/> <antcall target="copycustommenu"/> </target> - <!--target name="sync"> - <sync todir="/media/sshfs/sagetvhome/server/jetty/webapps/SageWebApp/" verbose="true"> - <fileset dir="/home/jreichen/SageTV/SageWebApp/WebContent/"/> - </sync> - <sync todir="/media/sshfs/sagetvhome/server/jetty/webapps/SageWebApp/WEB-INF/classes" verbose="true"> - <fileset dir="/home/jreichen/SageTV/SageWebApp/build/classes"/> - </sync> - </target> - - <target name=" reverse sync"> - <sync todir="/home/jreichen/SageTV/SageWebApp/WebContent/" verbose="true"> - <fileset dir="/media/sshfs/sagetvhome/server/jetty/webapps/SageWebApp/"/> - </sync> - </target--> - <target name="updatecontext"> ! <touch file="/media/sshfs/sagetvhome/server/jetty/contexts/sagewebapp.xml"/> </target> <target name="copycustommenu"> ! <copy todir="/media/sshfs/sagetvhome/server/jetty/user/sage"> <fileset dir="user/sage"/> </copy> --- 14,28 ---- <target name="deploy" depends="build"> ! <unzip src="dist/SageWebApp.zip" dest="${test.sagetv.home}"/> <antcall target="updatecontext"/> <antcall target="copycustommenu"/> </target> <target name="updatecontext"> ! <touch file="${test.sagetv.home}/jetty/contexts/sagewebapp.xml"/> </target> <target name="copycustommenu"> ! <copy todir="${test.sagetv.home}/jetty/user/sage"> <fileset dir="user/sage"/> </copy> |
From: jreichen <jre...@us...> - 2010-11-05 02:58:45
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/io In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv13863/src/sagex/streaming/io Modified Files: SegmentInputStream.java StreamGobbler.java SubsegmentInputStream.java Log Message: Clean up logging and old code Index: StreamGobbler.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/io/StreamGobbler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StreamGobbler.java 3 Nov 2010 03:42:29 -0000 1.1 --- StreamGobbler.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 111,118 **** { String s = new String(buf, 0, bytesRead); ! System.out.println(s); } } ! System.out.println("StreamGobbler bytesRead = " + bytesRead); flush(); --- 111,118 ---- { String s = new String(buf, 0, bytesRead); ! Log.debug(s); } } ! Log.debug("StreamGobbler bytesRead = " + bytesRead); flush(); *************** *** 126,132 **** { // unexpected EOF, log the exception ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } else --- 126,131 ---- { // unexpected EOF, log the exception ! Log.info(e.getMessage()); ! Log.ignore(e); } else *************** *** 134,138 **** // EOF can be expected since the client may disconnect and that's // not an error that should be reported ! System.out.println("Client disconnected"); } --- 133,137 ---- // EOF can be expected since the client may disconnect and that's // not an error that should be reported ! Log.debug("Client disconnected"); } *************** *** 144,148 **** close(); currentThread.interrupt(); ! System.out.println("Interrupted via InterruptedIOException"); } catch (IOException e) --- 143,147 ---- close(); currentThread.interrupt(); ! Log.debug("Interrupted via InterruptedIOException"); } catch (IOException e) *************** *** 150,156 **** if (!currentThread.isInterrupted()) { ! System.out.println("StreamGobbler encountered exception " + e.getMessage() + " and is exiting."); ! // Log.info(e.getMessage()); ! // Log.ignore(e); throw e; } --- 149,155 ---- if (!currentThread.isInterrupted()) { ! Log.debug("StreamGobbler encountered exception " + e.getMessage() + " and is exiting."); ! Log.info(e.getMessage()); ! Log.ignore(e); throw e; } *************** *** 160,164 **** close(); currentThread.interrupt(); ! System.out.println("Interrupted"); } } --- 159,163 ---- close(); currentThread.interrupt(); ! Log.debug("Interrupted"); } } *************** *** 170,175 **** close(os); } ! System.out.println("Total bytes read in StreamGobbler [" + currentThread.getName() + "] " + totalBytes); ! System.out.println("StreamGobbler [" + currentThread.getName() + "] exiting"); currentThread.setName(oldName); currentThread = null; --- 169,174 ---- close(os); } ! Log.debug("Total bytes read in StreamGobbler [" + currentThread.getName() + "] " + totalBytes); ! Log.debug("StreamGobbler [" + currentThread.getName() + "] exiting"); currentThread.setName(oldName); currentThread = null; Index: SubsegmentInputStream.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/io/SubsegmentInputStream.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SubsegmentInputStream.java 3 Nov 2010 03:42:29 -0000 1.1 --- SubsegmentInputStream.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 82,86 **** if (isSegmentFinished) { ! System.err.println("Segment size " + segmentSize); isSegmentFinished = false; segmentSize = 0; --- 82,86 ---- if (isSegmentFinished) { ! Log.debug("Segment size " + segmentSize); isSegmentFinished = false; segmentSize = 0; *************** *** 137,141 **** if (isSegmentFinished) { ! System.out.println("Segment size " + segmentSize); isSegmentFinished = false; segmentSize = 0; --- 137,141 ---- if (isSegmentFinished) { ! Log.debug("Segment size " + segmentSize); isSegmentFinished = false; segmentSize = 0; *************** *** 193,199 **** catch (Exception e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } } --- 193,198 ---- catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } *************** *** 223,229 **** catch (Exception e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } } --- 222,227 ---- catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } Index: SegmentInputStream.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/io/SegmentInputStream.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SegmentInputStream.java 3 Nov 2010 03:42:29 -0000 1.1 --- SegmentInputStream.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 7,10 **** --- 7,12 ---- import java.io.InputStream; + import org.mortbay.log.Log; + /** * Returns an HTTP Live Streaming segment, blocking until the entire segment is ready. *************** *** 18,22 **** private volatile long segmentSize = 0; // can grow until isSegmentFinished == true private volatile boolean isSegmentFinished = false; - // private volatile long bytesAvailable = 0; // can grow until isSegmentFinished == true public SegmentInputStream(InputStream is) --- 20,23 ---- *************** *** 29,45 **** { return (bais == null) ? 0 : bais.available(); - // Get the next subsegment - //// if ((bytesAvailable == 0) && (!isSegmentFinished)) - //// { - //// readSegmentFinished(); - //// readSubsegmentSize(); - //// } - // - //// throw new UnsupportedOperationException("available"); - // if (bytesAvailable > Integer.MAX_VALUE) - // { - // throw new IllegalStateException("integer overflow"); - // } - //// return (int) bytesAvailable; } --- 30,33 ---- *************** *** 59,63 **** } bais.mark(arg0); - // throw new UnsupportedOperationException("mark"); } --- 47,50 ---- *************** *** 70,74 **** } return bais.markSupported(); - // return false; } --- 57,60 ---- *************** *** 81,119 **** } return bais.read(); - // if (bytesAvailable > 0) - // { - // int value = dis.read(); - // if (value == -1) - // { - // throw new IllegalStateException("Segment still has bytes available but no byte was returned."); - // } - // bytesAvailable -= value; - // return value; - // } - // - // // - // // At this point we know there are zero bytes available - // // - // - // // return -1 to indicate the segment is finished, then reset so the - // // next read will start returning the next segment - // if (isSegmentFinished) - // { - // System.out.println("Segment size " + segmentSize); - // isSegmentFinished = false; - // segmentSize = 0; - // return -1; - // } - // else - // { - // // Get the next subsegment - // readSegmentFinished(); - // readSubsegmentSize(); - // - // // TODO try to refactor so infinite recursion isn't possible - // return this.read(); - //// bytesAvailable -= 1; - //// return dis.read(); - // } } --- 67,70 ---- *************** *** 126,179 **** } return bais.read(b, off, len); - // // The current subsegment has enough bytes to fulfill the request - // if (bytesAvailable >= len) - // { - // int bytesRead = dis.read(b, off, len); - // if (bytesRead == -1) - // { - // throw new IllegalStateException("Subsegment still has more than the requested number of bytes available but no bytes were returned."); - // } - // bytesAvailable -= bytesRead; - // return bytesRead; - // } - // - // // The current subsegment has somewhere between 1 and - // // the number of bytes requested. Return the remaining - // // bytes of this subsegment. - // if (bytesAvailable > 0) - // { - // int bytesRead = dis.read(b, off, (int) Math.min(Integer.MAX_VALUE, bytesAvailable)); - // if (bytesRead == -1) - // { - // throw new IllegalStateException("Subsegment still has bytes available but no bytes were returned."); - // } - // bytesAvailable -= bytesRead; - // return bytesRead; - // } - // - // // - // // At this point we know there are zero bytes available - // // - // - // // return -1 to indicate the segment is finished, then reset so the - // // next read will start returning the next segment - // if (isSegmentFinished) - // { - // System.out.println("Segment size " + segmentSize); - // isSegmentFinished = false; - // segmentSize = 0; - // return -1; - // } - // else - // { - // // Get the next subsegment - // readSegmentFinished(); - // readSubsegmentSize(); - // - // // TODO try to refactor so infinite recursion isn't possible - // return this.read(b, off, len); - //// bytesAvailable -= 1; - //// return dis.read(); - // } } --- 77,80 ---- *************** *** 192,196 **** } bais.reset(); - // throw new UnsupportedOperationException("reset"); } --- 93,96 ---- *************** *** 203,207 **** } return bais.skip(arg0); - // throw new UnsupportedOperationException("skip"); } --- 103,106 ---- *************** *** 213,219 **** try { - // baos.reset(); ByteArrayOutputStream baos = new ByteArrayOutputStream(500000); ! System.out.println("Initial ByteArrayOutputStream size: " + baos.size()); do --- 112,117 ---- try { ByteArrayOutputStream baos = new ByteArrayOutputStream(500000); ! Log.debug("Initial ByteArrayOutputStream size: " + baos.size()); do *************** *** 233,237 **** } while (!isSegmentFinished); ! System.out.println("Final ByteArrayOutputStream size: " + baos.size()); bais = new ByteArrayInputStream(baos.toByteArray()); baos = null; --- 131,135 ---- } while (!isSegmentFinished); ! Log.debug("Final ByteArrayOutputStream size: " + baos.size()); bais = new ByteArrayInputStream(baos.toByteArray()); baos = null; *************** *** 239,245 **** catch (IOException e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } } --- 137,142 ---- catch (IOException e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } *************** *** 247,251 **** public long getSegmentLength() { - // return bais.size(); return segmentSize; } --- 144,147 ---- *************** *** 266,272 **** catch (Exception e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } } --- 162,167 ---- catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } *************** *** 289,302 **** ((long)(subsegmentSizeBytes[3] & 0xff))); - // segmentSize += subsegmentSize; - // bytesAvailable += subsegmentSize; - // System.err.println("Size: " + subsegmentSize + "/" + segmentSize); } catch (Exception e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); } --- 184,193 ---- ((long)(subsegmentSizeBytes[3] & 0xff))); // System.err.println("Size: " + subsegmentSize + "/" + segmentSize); } catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } |
From: jreichen <jre...@us...> - 2010-11-05 02:58:45
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv13863/src/sagex/streaming/servlet Modified Files: MediaFileThumbnailServlet.java HTTPLiveStreamingPlaylistServlet.java SageServlet.java MediaFileServlet.java HTTPLiveStreamingSegmentServlet.java Log Message: Clean up logging and old code Index: MediaFileServlet.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet/MediaFileServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MediaFileServlet.java 3 Nov 2010 03:42:29 -0000 1.1 --- MediaFileServlet.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 36,40 **** try { ! System.out.println("----------- MediaFileServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); --- 36,40 ---- try { ! Log.debug("----------- MediaFileServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); *************** *** 44,51 **** if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! System.out.println(headerName + ": " + req.getHeader(headerName)); } } ! System.out.println("----------- MediaFileServlet end request Headers ---------------"); Object mediaFile = super.getMediaFile(req); if (mediaFile == null) --- 44,51 ---- if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! Log.debug(headerName + ": " + req.getHeader(headerName)); } } ! Log.debug("----------- MediaFileServlet end request Headers ---------------"); Object mediaFile = super.getMediaFile(req); if (mediaFile == null) *************** *** 139,143 **** if (headOnly) { ! // System.out.println("Headers only"); res.flushBuffer(); } --- 139,143 ---- if (headOnly) { ! // Log.debug("Headers only"); res.flushBuffer(); } *************** *** 217,223 **** } } ! // System.out.println("MediaFileServlet: Supplying range bytes "+Long.toString(start)+"-"+Long.toString(stop)+"/"+Long.toString(fileLength)); ! // System.out.println("MediaFileServlet: Debug enabled = " + Log.getLog().isDebugEnabled()); ! // System.out.println("MediaFileServlet: Log class = " + Log.getLog().getClass().getName()); Log.debug("MediaFileServlet: Supplying range bytes "+Long.toString(start)+"-"+Long.toString(stop)+"/"+Long.toString(fileLength)); RandomAccessFile rfile = new RandomAccessFile(file, "r"); --- 217,223 ---- } } ! // Log.debug("MediaFileServlet: Supplying range bytes "+Long.toString(start)+"-"+Long.toString(stop)+"/"+Long.toString(fileLength)); ! // Log.debug("MediaFileServlet: Debug enabled = " + Log.getLog().isDebugEnabled()); ! // Log.debug("MediaFileServlet: Log class = " + Log.getLog().getClass().getName()); Log.debug("MediaFileServlet: Supplying range bytes "+Long.toString(start)+"-"+Long.toString(stop)+"/"+Long.toString(fileLength)); RandomAccessFile rfile = new RandomAccessFile(file, "r"); *************** *** 312,316 **** catch (Throwable e) { ! e.printStackTrace(); } } --- 312,317 ---- catch (Throwable e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } Index: HTTPLiveStreamingSegmentServlet.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet/HTTPLiveStreamingSegmentServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** HTTPLiveStreamingSegmentServlet.java 3 Nov 2010 03:42:29 -0000 1.1 --- HTTPLiveStreamingSegmentServlet.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 21,25 **** throws Exception { ! /* TODO Log.info*/System.out.println("HTTPLiveStreamingSegmentServlet: Request started"); Object mediaFile = super.getMediaFile(req); if (mediaFile == null) --- 21,25 ---- throws Exception { ! Log.debug("HTTPLiveStreamingSegmentServlet: Request started"); Object mediaFile = super.getMediaFile(req); if (mediaFile == null) *************** *** 28,32 **** } ! System.out.println("----------- HTTPLiveStreamingSegmentServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); while (headers.hasMoreElements()) --- 28,32 ---- } ! Log.debug("----------- HTTPLiveStreamingSegmentServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); while (headers.hasMoreElements()) *************** *** 35,42 **** if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! System.out.println(headerName + ": " + req.getHeader(headerName)); } } ! System.out.println("----------- HTTPLiveStreamingSegmentServlet end request Headers ---------------"); // File file = MediaFileAPI.GetFileForSegment(mediaFile, 0); // TODO media file segment --- 35,42 ---- if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! Log.debug(headerName + ": " + req.getHeader(headerName)); } } ! Log.debug("----------- HTTPLiveStreamingSegmentServlet end request Headers ---------------"); // File file = MediaFileAPI.GetFileForSegment(mediaFile, 0); // TODO media file segment *************** *** 48,52 **** if (range != null && range.equals("bytes=0-1".trim())) { ! System.out.println("Writing 2 bytessss"); // resp.setStatus(416); // Range not satisfiable resp.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); --- 48,52 ---- if (range != null && range.equals("bytes=0-1".trim())) { ! // System.out.println("Writing 2 bytessss"); // resp.setStatus(416); // Range not satisfiable resp.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); *************** *** 73,77 **** if ((conversionId == null) || (conversionId.trim().length() == 0)) { ! /* TODO Log.info*/System.out.println("ConversionId request parameter is required"); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; --- 73,77 ---- if ((conversionId == null) || (conversionId.trim().length() == 0)) { ! Log.info("ConversionId request parameter is required"); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; *************** *** 92,99 **** catch (NumberFormatException e) { ! /* TODO Log.info*/System.out.println("Sequence request parameter is invalid"); ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; --- 92,98 ---- catch (NumberFormatException e) { ! Log.info("Sequence request parameter is invalid"); ! Log.info(e.getMessage()); ! Log.ignore(e); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; *************** *** 106,113 **** catch (NumberFormatException e) { ! /* TODO Log.info*/System.out.println("MediaFileId or AiringId request parameter is invalid"); ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; --- 105,111 ---- catch (NumberFormatException e) { ! Log.info("MediaFileId or AiringId request parameter is invalid"); ! Log.info(e.getMessage()); ! Log.ignore(e); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; *************** *** 127,134 **** catch (NumberFormatException e) { ! /* TODO Log.info*/System.out.println("MediaFileId or AiringId request parameter is invalid"); ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; --- 125,131 ---- catch (NumberFormatException e) { ! Log.info("MediaFileId or AiringId request parameter is invalid"); ! Log.info(e.getMessage()); ! Log.ignore(e); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; *************** *** 168,174 **** catch (IOException e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; --- 165,170 ---- catch (IOException e) { ! Log.info(e.getMessage()); ! Log.ignore(e); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; *************** *** 179,183 **** long len = segmentProducer.getNextSegmentLength(); ! System.out.println("Content-Length: " + len); resp.setHeader("Content-Length", Long.toString(len)); segmentProducer.streamNextSegment(resp.getOutputStream()); --- 175,179 ---- long len = segmentProducer.getNextSegmentLength(); ! Log.debug("Content-Length: " + len); resp.setHeader("Content-Length", Long.toString(len)); segmentProducer.streamNextSegment(resp.getOutputStream()); *************** *** 185,189 **** } resp.flushBuffer(); ! System.out.println("Request ended"); } // choose transcoder --- 181,185 ---- } resp.flushBuffer(); ! Log.debug("Request ended"); } // choose transcoder Index: MediaFileThumbnailServlet.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet/MediaFileThumbnailServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MediaFileThumbnailServlet.java 3 Nov 2010 03:42:29 -0000 1.1 --- MediaFileThumbnailServlet.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 9,12 **** --- 9,14 ---- import javax.servlet.http.HttpServletResponse; + import org.mortbay.log.Log; + import sage.SageTV; *************** *** 111,115 **** catch (Exception e) { ! e.printStackTrace(); } } --- 113,118 ---- catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); } } Index: HTTPLiveStreamingPlaylistServlet.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet/HTTPLiveStreamingPlaylistServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** HTTPLiveStreamingPlaylistServlet.java 3 Nov 2010 03:42:29 -0000 1.1 --- HTTPLiveStreamingPlaylistServlet.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 14,21 **** public class HTTPLiveStreamingPlaylistServlet extends SageServlet { ! public static final int TARGET_DURATION = 5; ! // TODO variant playlist bitrates and params ! // private static String[] VARIANT_PLAYLIST_BITRATES = {"256", "1536", "1280", "1024", "768", "512", "384"}; ! // private static String[] VARIANT_PLAYLIST_BITRATES = {"150", "1240", "840", "640", "440", "240"}; private static String[] VARIANT_PLAYLIST_BITRATES = {"150", "1240", "840", "640", "440", "240"}; --- 14,18 ---- public class HTTPLiveStreamingPlaylistServlet extends SageServlet { ! public static final int TARGET_DURATION = 10; private static String[] VARIANT_PLAYLIST_BITRATES = {"150", "1240", "840", "640", "440", "240"}; *************** *** 34,38 **** } ! System.out.println("----------- HTTPLiveStreamingPlaylistServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); --- 31,35 ---- } ! Log.debug("----------- HTTPLiveStreamingPlaylistServlet begin request Headers ---------------"); Enumeration headers = req.getHeaderNames(); *************** *** 42,49 **** if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! System.out.println(headerName + ": " + req.getHeader(headerName)); } } ! System.out.println("----------- HTTPLiveStreamingPlaylistServlet end request Headers ---------------"); // resp.setContentType("application/x-mpegURL"); --- 39,46 ---- if ((headerName != null) && (!headerName.equals("Host")) && (!headerName.equals("Authorization"))) { ! Log.debug(headerName + ": " + req.getHeader(headerName)); } } ! Log.debug("----------- HTTPLiveStreamingPlaylistServlet end request Headers ---------------"); // resp.setContentType("application/x-mpegURL"); *************** *** 79,83 **** // for (long i = startByte; i < byteCount; i += 1) // { ! // System.out.println("i: " + i); // resp.getOutputStream().write(sbBytes, (int) i/*startByte*/, (int) Math.min(1, byteCount - i + 1)/*byteCount*/); // } --- 76,80 ---- // for (long i = startByte; i < byteCount; i += 1) // { ! // Log.debug("i: " + i); // resp.getOutputStream().write(sbBytes, (int) i/*startByte*/, (int) Math.min(1, byteCount - i + 1)/*byteCount*/); // } *************** *** 87,98 **** catch (Exception e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } finally { ! System.out.println("Chars: " + playlist.length() + ", Bytes: " + playlistBytes.length); } } --- 84,94 ---- catch (Exception e) { ! Log.info(e.getMessage()); ! Log.ignore(e); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } finally { ! Log.debug("Chars: " + playlist.length() + ", Bytes: " + playlistBytes.length); } } *************** *** 114,123 **** // Header sb.append("#EXTM3U\r\n"); ! System.out.println("#EXTM3U\r\n"); for (String bitrate : VARIANT_PLAYLIST_BITRATES) { sb.append("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000\r\n"); ! System.out.println("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000\r\n"); url = ("/stream/HTTPLiveStreamingPlaylist?" + --- 110,119 ---- // Header sb.append("#EXTM3U\r\n"); ! Log.debug("#EXTM3U\r\n"); for (String bitrate : VARIANT_PLAYLIST_BITRATES) { sb.append("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000\r\n"); ! Log.debug("#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=" + bitrate + "000\r\n"); url = ("/stream/HTTPLiveStreamingPlaylist?" + *************** *** 127,131 **** "\r\n"); sb.append(url); ! System.out.print(url); } --- 123,127 ---- "\r\n"); sb.append(url); ! Log.debug(url); } *************** *** 161,176 **** StringBuilder sb = new StringBuilder(); ! System.out.println("MediaFileId = " + req.getParameter("MediaFileId")); ! System.out.println("numberOfMediaFileSegments = " + numberOfMediaFileSegments); ! System.out.println("showName = " + showName); sb.append("#EXTM3U\r\n"); ! System.out.println("#EXTM3U\r\n"); sb.append("#EXT-X-TARGETDURATION:" + TARGET_DURATION + "\r\n"); ! System.out.println("#EXT-X-TARGETDURATION:" + TARGET_DURATION + "\r\n"); // sb.append("#EXT-X-MEDIA-SEQUENCE:0\r\n"); ! // System.out.println("#EXT-X-MEDIA-SEQUENCE:0\r\n"); for (int currentMediaFileSegment = 0; currentMediaFileSegment < numberOfMediaFileSegments; currentMediaFileSegment++) --- 157,172 ---- StringBuilder sb = new StringBuilder(); ! Log.debug("MediaFileId = " + req.getParameter("MediaFileId")); ! Log.debug("numberOfMediaFileSegments = " + numberOfMediaFileSegments); ! Log.debug("showName = " + showName); sb.append("#EXTM3U\r\n"); ! Log.debug("#EXTM3U\r\n"); sb.append("#EXT-X-TARGETDURATION:" + TARGET_DURATION + "\r\n"); ! Log.debug("#EXT-X-TARGETDURATION:" + TARGET_DURATION + "\r\n"); // sb.append("#EXT-X-MEDIA-SEQUENCE:0\r\n"); ! // Log.debug("#EXT-X-MEDIA-SEQUENCE:0\r\n"); for (int currentMediaFileSegment = 0; currentMediaFileSegment < numberOfMediaFileSegments; currentMediaFileSegment++) *************** *** 178,182 **** // milliseconds long mediaFileSegmentDuration = MediaFileAPI.GetDurationForSegment(mediaFile, currentMediaFileSegment); ! System.out.println("segmentDuration = " + mediaFileSegmentDuration); mediaFileSegmentDuration = mediaFileSegmentDuration / 1000; // milliseconds to seconds int sequence = 0; // httpls segment sequence number --- 174,178 ---- // milliseconds long mediaFileSegmentDuration = MediaFileAPI.GetDurationForSegment(mediaFile, currentMediaFileSegment); ! Log.debug("segmentDuration = " + mediaFileSegmentDuration); mediaFileSegmentDuration = mediaFileSegmentDuration / 1000; // milliseconds to seconds int sequence = 0; // httpls segment sequence number *************** *** 186,190 **** sb.append("#EXTINF:" + currentDuration + "," + showName + "\r\n"); ! System.out.println("#EXTINF:" + currentDuration + "," + showName + "\r\n"); // each segment has header and that causes problems with iphone --- 182,186 ---- sb.append("#EXTINF:" + currentDuration + "," + showName + "\r\n"); ! Log.debug("#EXTINF:" + currentDuration + "," + showName + "\r\n"); // each segment has header and that causes problems with iphone *************** *** 219,223 **** { sb.append("#EXT-X-ENDLIST\r\n"); ! System.out.println("#EXT-X-ENDLIST\r\n"); } --- 215,219 ---- { sb.append("#EXT-X-ENDLIST\r\n"); ! Log.debug("#EXT-X-ENDLIST\r\n"); } Index: SageServlet.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/servlet/SageServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SageServlet.java 3 Nov 2010 03:42:29 -0000 1.1 --- SageServlet.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 11,14 **** --- 11,16 ---- import javax.servlet.http.HttpServletResponse; + import org.mortbay.log.Log; + import sage.SageTV; *************** *** 43,48 **** catch (InvocationTargetException e) { ! System.out.println("Error getting charset:" + e.toString()); ! System.out.println("caused:" + e.getCause().toString()); e.printStackTrace(System.out); charset = "UTF-8"; --- 45,50 ---- catch (InvocationTargetException e) { ! Log.debug("Error getting charset:" + e.toString()); ! Log.debug("caused:" + e.getCause().toString()); e.printStackTrace(System.out); charset = "UTF-8"; |
From: jreichen <jre...@us...> - 2010-11-05 02:58:45
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv13863/src/sagex/streaming/httpls/segment Modified Files: SegmenterState.java SegmenterProcess.java SegmentProducer.java SegmentManager.java Log Message: Clean up logging and old code Index: SegmentProducer.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment/SegmentProducer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SegmentProducer.java 3 Nov 2010 03:42:29 -0000 1.1 --- SegmentProducer.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 33,41 **** public void reset() throws IOException { ! System.out.println("Resetting segment producer"); if (segmenterProcess != null) { ! System.out.println("Killing segmenter process"); segmenterProcess.stopProcess(); } --- 33,41 ---- public void reset() throws IOException { ! Log.debug("Resetting segment producer"); if (segmenterProcess != null) { ! Log.debug("Killing segmenter process"); segmenterProcess.stopProcess(); } *************** *** 45,49 **** File f = MediaFileAPI.GetFileForSegment(mediaFile, sageSegment); ! System.out.println("Creating new segmenter process"); segmenterProcess = new SegmenterProcess(); --- 45,49 ---- File f = MediaFileAPI.GetFileForSegment(mediaFile, sageSegment); ! Log.debug("Creating new segmenter process"); segmenterProcess = new SegmenterProcess(); *************** *** 84,90 **** catch (Throwable t) { ! // Log.info(t.getMessage()); ! // Log.ignore(t); ! t.printStackTrace(System.out); this.state.reset(); } --- 84,89 ---- catch (Throwable t) { ! Log.info(t.getMessage()); ! Log.ignore(t); this.state.reset(); } Index: SegmenterState.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment/SegmenterState.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SegmenterState.java 3 Nov 2010 03:42:29 -0000 1.1 --- SegmenterState.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 38,43 **** } ! System.out.println("nextState() old segment = " + this.segment + ", new segment = " + segment); ! System.out.println("nextState() old quality = " + this.quality + ", new quality = " + quality); boolean isNextStateSequential = (segment == this.segment + 1) && --- 38,43 ---- } ! Log.debug("nextState() old segment = " + this.segment + ", new segment = " + segment); ! Log.debug("nextState() old quality = " + this.quality + ", new quality = " + quality); boolean isNextStateSequential = (segment == this.segment + 1) && *************** *** 56,60 **** isInitialState = false; ! System.out.println("SegmenterState.nextState() returns " + returnVal); return returnVal; --- 56,60 ---- isInitialState = false; ! Log.debug("SegmenterState.nextState() returns " + returnVal); return returnVal; Index: SegmenterProcess.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment/SegmenterProcess.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SegmenterProcess.java 3 Nov 2010 03:42:29 -0000 1.1 --- SegmenterProcess.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 16,19 **** --- 16,21 ---- import java.util.concurrent.Future; + import org.mortbay.log.Log; + import sagex.api.MediaFileAPI; import sagex.streaming.io.SegmentInputStream; *************** *** 63,67 **** } ! System.out.println("SegmenterProcess for HTTPLS web streaming is " + f.getAbsolutePath()); ffmpegFile = f; } --- 65,69 ---- } ! Log.info("SegmenterProcess for HTTPLS web streaming is " + f.getAbsolutePath()); ffmpegFile = f; } *************** *** 114,118 **** interrupt(stderrTranscoderGobbler); ! System.out.println("SegmenterProcess: stop transcoder process"); if (transcoderProcess != null) { --- 116,120 ---- interrupt(stderrTranscoderGobbler); ! Log.debug("SegmenterProcess: stop transcoder process"); if (transcoderProcess != null) { *************** *** 120,124 **** { int val = transcoderProcess.exitValue(); ! System.out.println("SegmenterProcess: process finished with exit value " + val); } catch (IllegalThreadStateException e) --- 122,126 ---- { int val = transcoderProcess.exitValue(); ! Log.debug("SegmenterProcess: process finished with exit value " + val); } catch (IllegalThreadStateException e) *************** *** 141,160 **** catch (InterruptedException e1) { ! // Log.info(e1.getMessage()); ! // Log.ignore(e1); ! e1.printStackTrace(System.out); } int val = transcoderProcess.exitValue(); ! System.out.println("SegmenterProcess: process stopped with 'q' command. Exit value " + val); } catch (IllegalThreadStateException e2) { destroyProcess(transcoderProcess); ! System.out.println("SegmenterProcess: process forcibly terminated due to IllegalThreadStateException"); } catch (IOException e3) { destroyProcess(transcoderProcess); ! System.out.println("SegmenterProcess: process forcibly terminated due to IOException"); } // catch (InterruptedException e4) --- 143,161 ---- catch (InterruptedException e1) { ! Log.info(e1.getMessage()); ! Log.ignore(e1); } int val = transcoderProcess.exitValue(); ! Log.debug("SegmenterProcess: process stopped with 'q' command. Exit value " + val); } catch (IllegalThreadStateException e2) { destroyProcess(transcoderProcess); ! Log.debug("SegmenterProcess: process forcibly terminated due to IllegalThreadStateException"); } catch (IOException e3) { destroyProcess(transcoderProcess); ! Log.debug("SegmenterProcess: process forcibly terminated due to IOException"); } // catch (InterruptedException e4) *************** *** 166,177 **** { destroyProcess(transcoderProcess); ! /* TODO Log.info*/System.out.println("SegmenterProcess: process forcibly terminated due to unexpected exception: " + t.getMessage()); ! // Log.ignore(t); ! t.printStackTrace(System.out); } } } ! System.out.println("SegmenterProcess: stop segmenter process"); if (segmenterProcess != null) { --- 167,177 ---- { destroyProcess(transcoderProcess); ! Log.info("SegmenterProcess: process forcibly terminated due to unexpected exception: " + t.getMessage()); ! Log.ignore(t); } } } ! Log.debug("SegmenterProcess: stop segmenter process"); if (segmenterProcess != null) { *************** *** 183,187 **** try { ! System.out.println("SegmenterProcess: close segmenter input stream"); segmentInputStream.close(); } --- 183,187 ---- try { ! Log.debug("SegmenterProcess: close segmenter input stream"); segmentInputStream.close(); } *************** *** 218,224 **** catch (Throwable t) { ! // Log.info(t.getMessage()); ! // Log.ignore(t); ! t.printStackTrace(System.out); } } --- 218,223 ---- catch (Throwable t) { ! Log.info(t.getMessage()); ! Log.ignore(t); } } *************** *** 238,244 **** catch (Throwable t) { ! // Log.info(t.getMessage()); ! // Log.ignore(t); ! t.printStackTrace(System.out); } } --- 237,242 ---- catch (Throwable t) { ! Log.info(t.getMessage()); ! Log.ignore(t); } } *************** *** 265,271 **** catch (InterruptedException e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); stopProcess(); throw new Exception(e); --- 263,268 ---- catch (InterruptedException e) { ! Log.info(e.getMessage()); ! Log.ignore(e); stopProcess(); throw new Exception(e); *************** *** 273,279 **** catch (CancellationException e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); stopProcess(); throw new Exception(e); --- 270,275 ---- catch (CancellationException e) { ! Log.info(e.getMessage()); ! Log.ignore(e); stopProcess(); throw new Exception(e); *************** *** 292,296 **** if (segmenterProcess == null) { ! System.out.println("segmenterProcess has been closed and set to null by a call to stopProcess"); } else --- 288,292 ---- if (segmenterProcess == null) { ! Log.debug("segmenterProcess has been closed and set to null by a call to stopProcess"); } else *************** *** 298,303 **** int exitValue = segmenterProcess.exitValue(); segmenterProcess = null; ! System.out.println("streamNextSegment segmenterProcess exited with value " + exitValue); ! System.out.println("Killing transcoder process"); stopProcess(); throw new Exception("SegmenterProcess: segmenter unexpectedly exited"); --- 294,299 ---- int exitValue = segmenterProcess.exitValue(); segmenterProcess = null; ! Log.debug("streamNextSegment segmenterProcess exited with value " + exitValue); ! Log.debug("Killing transcoder process"); stopProcess(); throw new Exception("SegmenterProcess: segmenter unexpectedly exited"); *************** *** 306,310 **** catch (IllegalThreadStateException e) { ! System.out.println("streamNextSegment segmenterProcess is still running"); } } --- 302,306 ---- catch (IllegalThreadStateException e) { ! Log.debug("streamNextSegment segmenterProcess is still running"); } } *************** *** 326,340 **** Integer numAudioStreams = Integer.parseInt(MediaFileAPI.GetMediaFileMetadata(mediaFile, "Format.Audio.NumStreams")); ! System.out.println("numAudioStreams " + numAudioStreams); for (int i = 0; i < numAudioStreams; i++) { Integer streamIndex = Integer.parseInt(MediaFileAPI.GetMediaFileMetadata(mediaFile, "Format.Audio." + i + ".Index")); ! System.out.println("Audio Stream " + i + ", Index = " + streamIndex); } Map<String, String[]> qualityMap = new HashMap<String, String[]>(); ! System.out.println("SegmenterProcess: userAgent " + userAgent); // TODO improve useragent detection, quality settings, and don't hard-code settings --- 322,336 ---- Integer numAudioStreams = Integer.parseInt(MediaFileAPI.GetMediaFileMetadata(mediaFile, "Format.Audio.NumStreams")); ! Log.debug("numAudioStreams " + numAudioStreams); for (int i = 0; i < numAudioStreams; i++) { Integer streamIndex = Integer.parseInt(MediaFileAPI.GetMediaFileMetadata(mediaFile, "Format.Audio." + i + ".Index")); ! Log.debug("Audio Stream " + i + ", Index = " + streamIndex); } Map<String, String[]> qualityMap = new HashMap<String, String[]>(); ! Log.debug("SegmenterProcess: userAgent " + userAgent); // TODO improve useragent detection, quality settings, and don't hard-code settings *************** *** 395,399 **** // "--port-number", "46631", "-threads", Integer.toString(Runtime.getRuntime().availableProcessors()),//"4", ! "-flags2", "+fast", //! added 10/25/10 "-flags", "+loop", "-g", "30", --- 391,395 ---- // "--port-number", "46631", "-threads", Integer.toString(Runtime.getRuntime().availableProcessors()),//"4", ! "-flags2", "+fast", "-flags", "+loop", "-g", "30", *************** *** 401,406 **** "-bf", "0", "-b_strategy", "0", ! "-flags2",// "", ! "-wpred-dct8x8",// "", "-cmp", "+chroma", "-deblockalpha", "0", --- 397,402 ---- "-bf", "0", "-b_strategy", "0", ! "-flags2", ! "-wpred-dct8x8", "-cmp", "+chroma", "-deblockalpha", "0", *************** *** 427,431 **** "-s", currentQuality[0], "-aspect", aspect, - // "-crf", "22", //!!! "-y", "-f", "mpegts", --- 423,426 ---- *************** *** 470,476 **** catch (NumberFormatException e) { ! // Log.info(e.getMessage()); ! // Log.ignore(e); ! e.printStackTrace(System.out); throw new IllegalArgumentException("Sequence parameter is not a valid number.", e); } --- 465,470 ---- catch (NumberFormatException e) { ! Log.info(e.getMessage()); ! Log.ignore(e); throw new IllegalArgumentException("Sequence parameter is not a valid number.", e); } Index: SegmentManager.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment/SegmentManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SegmentManager.java 3 Nov 2010 03:42:29 -0000 1.1 --- SegmentManager.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 93,97 **** synchronized (currentSegmentProducer) { ! System.out.println("Segment Producer has been inactive for " + (now - currentSegmentProducer.getLastActivity()) / 1000 + " seconds"); if (now - currentSegmentProducer.getLastActivity() > 5 * 60 * 1000) // 5 minutes { --- 93,97 ---- synchronized (currentSegmentProducer) { ! Log.debug("Segment Producer has been inactive for " + (now - currentSegmentProducer.getLastActivity()) / 1000 + " seconds"); if (now - currentSegmentProducer.getLastActivity() > 5 * 60 * 1000) // 5 minutes { *************** *** 102,117 **** catch (Throwable t) { ! // Log.info(t.getMessage()); ! // Log.ignore(t); ! t.printStackTrace(System.out); } ! System.out.println("Map size before remove: " + segmentProducerMap.size()); mapIterator.remove(); ! System.out.println("Map size after remove: " + segmentProducerMap.size()); } } } - // if ((timer != null) && (segmentProducers.size() == 0)) if ((timer != null) && (segmentProducerMap.size() == 0)) { --- 102,115 ---- catch (Throwable t) { ! Log.info(t.getMessage()); ! Log.ignore(t); } ! Log.debug("Map size before remove: " + segmentProducerMap.size()); mapIterator.remove(); ! Log.debug("Map size after remove: " + segmentProducerMap.size()); } } } if ((timer != null) && (segmentProducerMap.size() == 0)) { |
From: jreichen <jre...@us...> - 2010-11-05 02:58:44
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/listener In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv13863/src/sagex/streaming/listener Modified Files: AppContextListener.java Log Message: Clean up logging and old code Index: AppContextListener.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/listener/AppContextListener.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AppContextListener.java 3 Nov 2010 03:42:29 -0000 1.1 --- AppContextListener.java 5 Nov 2010 02:58:36 -0000 1.2 *************** *** 32,38 **** { // TODO Logging ! System.out.println("Stdout: starting media streaming web app"); ! System.err.println("Stderr: starting media streaming web app"); ! System.out.println("Stderr class: " + System.err.getClass()); String ffmpegPath = ""; --- 32,38 ---- { // TODO Logging ! // System.out.println("Stdout: starting media streaming web app"); ! // System.err.println("Stderr: starting media streaming web app"); ! // System.out.println("Stderr class: " + System.err.getClass()); String ffmpegPath = ""; |
From: jreichen <jre...@us...> - 2010-11-03 03:42:39
|
Update of /cvsroot/sageplugins/MediaStreaming In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv4766 Added Files: deploy-test-package.xml .classpath .project build.xml user-agents.txt deploy-test.xml Log Message: --- NEW FILE: deploy-test.xml --- <?xml version="1.0" encoding="UTF-8"?> <!-- compile create war/dir upload to server touch/upload config file --> <project name="Media Streaming Services" default="deploy"> <property file="build.properties"/> <target name="build"> <ant antfile="build.xml" target="dist"/> </target> <target name="deploy" depends="build"> <unzip src="dist/MediaStreaming.zip" dest="${test.sagetv.home}"/> <antcall target="updatecontext"/> </target> <target name="updatecontext"> <touch file="${test.sagetv.home}/jetty/contexts/mediastreaming.xml"/> </target> </project> --- NEW FILE: .project --- <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>MediaStreaming</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.wst.common.project.facet.core.builder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.wst.validation.validationbuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.wst.jsdt.core.jsNature</nature> </natures> </projectDescription> --- NEW FILE: build.xml --- <?xml version="1.0" encoding="UTF-8"?> <project name="SageTV Media Streaming Services" default="dist"> <buildnumber/> <property file="build.properties"/> <property name="plugin.version" value="1.0.0"/> <property name="src.dir" location="src"/> <property name="build.dir" location="build"/> <property name="dist.dir" location="dist"/> <condition property="sage.lib.dir" value="/usr/local/lib/sagetv" else="C:/sagelibs"> <os family="unix" /> </condition> <property name="jetty.lib.dir" location="../JettyStarter/build/packages/jars/"/> <property name="extlib.dir" location="extlib"/> <condition property="plugin.impl.version" value="${plugin.version}.${build.number}" else="${plugin.version}"> <isset property="build.number"/> </condition> <!--property name="download.url.location" value="http://download.sage.tv/plugins/jreichen/mobileweb"/--> <property name="download.url.location" value="http://downloads.sourceforge.net/project/sageplugins/Media%20Streaming%20Services/${plugin.version}/plugin"/> <property name="download.url.params" value="?use_mirror="/> <path id="jetty.classpath.id"> <fileset dir="${jetty.lib.dir}" includes="*.jar"/> <fileset dir="${extlib.dir}" includes="*.jar"/> </path> <!-- - The target thatHudson calls when launching this build. It has steps specific - to building from Hudson as opposed to building from the Eclipse development - environment or the command line. --> <target name="hudson"> <echo message="Building from Hudson..."/> <!-- use the checked-in properties file --> <copy file="build.properties.template" tofile="build.properties" overwrite="yes" failonerror="no"/> <!-- get environment variables to see if HUDSON_HOME is being used to override the location --> <property environment="env"/> <condition property="hudson.home.dir" value="${env.HUDSON_HOME}" else="${user.home}/.hudson"> <isset property="env.HUDSON_HOME"/> </condition> <echo message="Hudson home directory ${hudson.home.dir}"/> <!-- build JettyStarter for dependencies --> <ant dir="../JettyStarter" target="hudson" inheritAll="false" /> <!-- call the default target of this file --> <ant antfile="build.xml" inheritall="false"> <!-- The jar with the SageTV APIs is placed in the Hudson home directory --> <property name="sage.lib.dir" value="${hudson.home.dir}"/> <property name="build.number" value="${env.BUILD_NUMBER}"/> </ant> </target> <target name="init" depends="clean"> <tstamp/> <echo message="SageTV library location: ${sage.lib.dir}"/> <echo message="Jetty library location: ${jetty.lib.dir}"/> <mkdir dir="${build.dir}"/> <mkdir dir="${build.dir}/classes"/> <mkdir dir="${build.dir}/war"/> <mkdir dir="${build.dir}/zip"/> <mkdir dir="${build.dir}/zip/jetty"/> <mkdir dir="${build.dir}/zip/jetty/contexts"/> <mkdir dir="${build.dir}/zip/jetty/webapps"/> <mkdir dir="${build.dir}/packages"/> <mkdir dir="${build.dir}/packages/context"/> <mkdir dir="${build.dir}/packages/war"/> <mkdir dir="${dist.dir}"/> </target> <target name="compile" depends="init"> <javac source="1.5" target="1.5" debug="true" debuglevel="lines,vars,source" srcdir="${src.dir}" destdir="${build.dir}/classes" > <classpath> <path location="${sage.lib.dir}/Sage.jar"/> <path refid="jetty.classpath.id"/> </classpath> </javac> </target> <target name="war" depends="compile"> <copy todir="${build.dir}/war" includeemptydirs="true"> <fileset dir="WebContent"> <exclude name=".directory"/> <!-- KDE artifact --> </fileset> </copy> <fixcrlf srcdir="${build.dir}/war" eol="dos"> <include name="**/*.MF"/> <include name="**/*.xml"/> <include name="**/*.css"/> <include name="**/*.js"/> <include name="**/*.jsp"/> <include name="**/*.jspf"/> <include name="**/*.json"/> <include name="**/*.tag"/> </fixcrlf> <war basedir="${build.dir}/war" destfile="${build.dir}/MediaStreaming.war" manifest="${build.dir}/war/META-INF/MANIFEST.MF" webxml="${build.dir}/war/WEB-INF/web.xml" > <classes dir="${build.dir}/classes"/> <manifest> <attribute name="Specification-Title" value="Media Streaming Services for SageTV"/> <attribute name="Specification-Version" value="${plugin.version}"/> <attribute name="Implementation-Title" value="Media Streaming Services for SageTV"/> <attribute name="Implementation-Version" value="${plugin.impl.version}"/> </manifest> <zipfileset dir="bin/linux32/" prefix="WEB-INF/bin/linux32"/> <zipfileset dir="bin/macos/" prefix="WEB-INF/bin/macos"/> <zipfileset dir="bin/win32/" prefix="WEB-INF/bin/win32"/> </war> </target> <target name="zip" depends="war"> <copy todir="${build.dir}/zip/jetty/contexts"> <fileset file="resources/contexts/mediastreaming.xml"/> </copy> <copy todir="${build.dir}/zip/jetty/webapps"> <fileset file="${build.dir}/MediaStreaming.war"/> </copy> <fixcrlf srcdir="${build.dir}/zip" eol="dos"> <include name="**/*.xml"/> </fixcrlf> <zip destfile="${dist.dir}/MediaStreaming.zip"> <zipfileset dir="${build.dir}/zip"/> </zip> </target> <target name="package-context"> <copy todir="${build.dir}/packages/context" file="resources/contexts/mediastreaming.xml"/> <fixcrlf srcdir="${build.dir}/packages/context" eol="dos"> <include name="**/*.xml"/> </fixcrlf> <zip destfile="${build.dir}/packages/mediastreaming-context-file-${plugin.impl.version}.zip"> <zipfileset prefix="jetty/contexts" dir="${build.dir}/packages/context"/> </zip> </target> <target name="package-war"> <copy todir="${build.dir}/packages/war" file="${build.dir}/MediaStreaming.war"/> <zip destfile="${build.dir}/packages/mediastreaming-war-file-${plugin.impl.version}.zip"> <zipfileset dir="${build.dir}/packages/war" prefix="jetty/webapps" /> </zip> </target> <!-- Create the plugin's package for SageTV 7.0 and later --> <target name="dist-plugin" depends="package-context, package-war"> <copy tofile="${build.dir}/packages/plugin-${plugin.impl.version}.xml" file="resources/plugin/plugin.xml"> </copy> <tstamp> <format property="last.modified" pattern="yyyy.MM.dd" /> </tstamp> <checksum file="${build.dir}/packages/mediastreaming-context-file-${plugin.impl.version}.zip" property="md5.context-file"/> <checksum file="${build.dir}/packages/mediastreaming-war-file-${plugin.impl.version}.zip" property="md5.war-file"/> <replace file="${build.dir}/packages/plugin-${plugin.impl.version}.xml" summary="yes"> <replacefilter token="@@context-file-checksum@@" value="${md5.context-file}"/> <replacefilter token="@@war-file-checksum@@" value="${md5.war-file}"/> <replacefilter token="@@last-modified@@" value="${last.modified}"/> <replacefilter token="@@download-url-location@@" value="${download.url.location}"/> <replacefilter token="@@download-url-params@@" value="${download.url.params}"/> <replacefilter token="@@plugin-impl-version@@" value="${plugin.impl.version}"/> </replace> <zip basedir="${build.dir}/packages" destfile="${dist.dir}/mediastreaming-plugin-${plugin.impl.version}.zip"> <include name="*.zip"/> <include name="*.xml"/> </zip> </target> <!-- upload to sagetv plugin area --> <target name="publish-plugin" depends="dist-plugin"> <!-- download commons-net so that we can use the ftp plugin --> <mkdir dir="${user.home}/.ant/lib" /> <get src="http://repo1.maven.org/maven2/commons-net/commons-net/1.4.1/commons-net-1.4.1.jar" dest="${user.home}/.ant/lib/commons-net-1.4.1.jar" usetimestamp="true" /> <ftp remotedir="plugins/${author}/JARS" password="${sage.uploadpass}" server="download2.sagetv.com" userid="${sage.uploaduser}" action="mkdir" /> <ftp remotedir="plugins/${author}/JARS" password="${sage.uploadpass}" server="download2.sagetv.com" userid="${sage.uploaduser}" binary="true" action="send"> <fileset dir="${dist.dir}" /> </ftp> </target> <target name="dist" depends="zip, dist-plugin"> </target> <target name="clean"> <delete dir="${build.dir}"/> <delete dir="${dist.dir}"/> </target> </project> --- NEW FILE: .classpath --- <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-1.5.0-sun-1.5.0.18"> <attributes> <attribute name="owner.project.facets" value="jst.java"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.preview.runtimeTarget/J2EE Preview"> <attributes> <attribute name="owner.project.facets" value="jst.web"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="var" path="SAGE_JAR"/> <classpathentry combineaccessrules="false" kind="src" path="/JettyStarter"/> <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Jetty"/> <classpathentry kind="lib" path="extlib/sagex-api-7.0.7.0.jar"/> <classpathentry kind="output" path="build/classes"/> </classpath> --- NEW FILE: deploy-test-package.xml --- <?xml version="1.0" encoding="UTF-8"?> <project name="MediaStreaming" default="deploy"> <property file="build.properties"/> <property name="test.download.url.location" value="http://localhost/sageplugins"/> <property name="test.download.url.params" value=""/> <property name="download.url.location" value="${test.download.url.location}"/> <property name="download.url.params" value="${test.download.url.params}"/> <property name="test.webserver.home" value="/var/www"/> <property name="test.sagetv.home" value="/opt/sagetv/server"/> <target name="build"> <ant antfile="build.xml" target="dist"/> </target> <target name="deploy" depends="build"> <unzip dest="${test.webserver.home}"> <fileset dir="dist"> <include name="mediastreaming-plugin*.zip"/> </fileset> </unzip> <copy todir="${test.sagetv.home}"> <fileset dir="build/packages" includes="plugin*.xml"/> <mergemapper to="SageTVPluginsDev.xml"/> </copy> </target> </project> --- NEW FILE: user-agents.txt --- iPad ---- "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7W367a Safari/531.21.10" iPhone 3G --------- "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16" iPhone 4 -------- AppleCoreMedia/1.0.0.8B117 (iPhone; U; CPU OS 4_1 like Mac OS X; en_us) MacOS Chrome ------------ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" MacOS Firefox --------------- "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8" MacOS Safari -------------- "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16" Ubuntu Chrome ------------- "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.466.0 Safari/534.3" Ubuntu Firefox -------------- "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6" Windows Chrome -------------- "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4" Windows Firefox --------------- "Mozilla/5.0 (Windows NT 5.1; rv:2.0b4) Gecko/20100818 Firefox/4.0b4" Windows IE ---------- "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)" Windows Safari -------------- "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8" Droid Android 2.2 ----------------- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Droid Build/FRG22D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" |