The branch, dharma-pre has been updated
via dc71fda6ce91eb132d84e0ecaebde0690caf7bea (commit)
from 12c46ad840009a80d3a455fe1ba4c2c27bfab710 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/webinterfaces;a=commit;h=dc71fda6ce91eb132d84e0ecaebde0690caf7bea
commit dc71fda6ce91eb132d84e0ecaebde0690caf7bea
Author: malard <[email protected]>
Date: Sat Nov 6 15:29:23 2010 +0000
Updating XWMM to 1.9.2 thanks nicolas
diff --git a/webinterface.XWMM/Changelog.txt b/webinterface.XWMM/Changelog.txt
index 21dcb2e..6be2cac 100644
--- a/webinterface.XWMM/Changelog.txt
+++ b/webinterface.XWMM/Changelog.txt
@@ -1,18 +1,14 @@
XWMM Change log
-
-1.8.0
-- Added actor management
-
-1.8.1
-- Improved music interface
-
-1.9.0
-- Removed cache folder (not required anymore)
-- Added addon.xml and icon.png for addon support
-
1.9.1
- Fixes :
- Fixed genre list display was not always showing
- Fixed movie information not always showing
- Fixed changing covers and fanart in movies
-
\ No newline at end of file
+
+1.9.2
+- Fixes :
+ - Fixed genre list display was not always showing in TV Shows
+ - Fixed episode list not always showing
+- Added :
+ - Scraper list is created dynamicly from installed add-ons
+ - Fanart display in Movie interface
\ No newline at end of file
diff --git a/webinterface.XWMM/addon.xml b/webinterface.XWMM/addon.xml
index 52fe3f9..a8545ec 100644
--- a/webinterface.XWMM/addon.xml
+++ b/webinterface.XWMM/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="webinterface.XWMM"
- version="1.9.0"
+ version="1.9.2"
name="XWMM"
provider-name="slash">
<requires>
diff --git a/webinterface.XWMM/files/browser.js
b/webinterface.XWMM/files/browser.js
index 780dfbf..4abb63d 100644
--- a/webinterface.XWMM/files/browser.js
+++ b/webinterface.XWMM/files/browser.js
@@ -8,7 +8,9 @@
Ext.onReady(function() {
- // costumize menu
+ // customize menu
+ //Ext.StoreMgr.get('scraperstore').load({data: scraperList});
+
menuBar.add({
xtype: 'tbfill'
},{
@@ -16,16 +18,15 @@ Ext.onReady(function() {
});
setXBMCResponseFormat();
-
+ parseScrapers();
var str = '';
var myjson = '';
- var storesToLoad = [
+ var storesToLoad = [
{store : 'storepath', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idPath, strPath,
strContent, scanRecursive, useFolderNames, noUpdate strScraper FROM path)' },
{store : 'storefiles', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, idPath,
strFilename, playCount FROM files)' }
];
-
loadStartupStores = function(record, options, success){
var task = storesToLoad.shift(); //From the top
if(task){
@@ -36,14 +37,17 @@ Ext.onReady(function() {
} else {
complain( );
}
- } else {
+ } else {
runtree();
}
};
loadStartupStores();
+ scraperStore.loadData(scraperList);
+
function runtree() {
+
var treegrid = new Ext.ux.tree.TreeGrid({
title: 'XBMC File browser',
region: 'west',
@@ -67,7 +71,7 @@ function runtree() {
columns:[{
header: 'Sources',
dataIndex: 'text',
- width: 450
+ width: 400
},{
header: '',
dataIndex: 'watched',
@@ -108,7 +112,7 @@ function runtree() {
},{
header: 'Scraper',
dataIndex: 'xbmcScraper',
- width: 75
+ width: 120
}]
});
@@ -187,6 +191,8 @@ function runtree() {
getStacks();
+
+
var myVideoShares = getShares('video');
diff --git a/webinterface.XWMM/files/include.js
b/webinterface.XWMM/files/include.js
index 4f940e4..e83cefb 100644
--- a/webinterface.XWMM/files/include.js
+++ b/webinterface.XWMM/files/include.js
@@ -74,7 +74,7 @@ function myExpend(node, event) {
if (node.attributes.leaf == false) {
node.attributes.scansub = true;
var mypath = normalizeString(node.attributes.data);
- var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"video\", \"directory\":
\"'+mypath+'\"}, \"id\": 1}';
+ var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\":
\"'+mypath+'\"}, \"id\": 1}';
var tempStr = xbmcJsonRPC(myParams);
if (tempStr.directories != undefined) {
for (var i = 0; i < tempStr.directories.length;
i++) {
@@ -166,9 +166,7 @@ var storeFiles = new Ext.data.Store({
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, filesRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
+
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile,
idPath, strFilename, playCount FROM files)'
});
@@ -177,9 +175,6 @@ var storePath = new Ext.data.Store({
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, pathRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idPath,
strPath, strContent, strScraper FROM path)'
});
diff --git a/webinterface.XWMM/files/json.html
b/webinterface.XWMM/files/json.html
index 14d745f..d7d0134 100644
--- a/webinterface.XWMM/files/json.html
+++ b/webinterface.XWMM/files/json.html
@@ -13,6 +13,8 @@
Ext.onReady(function() {
+ var ScraperList = [];
+
function xbmcJsonRPC(params) {
var inputUrl = '/jsonrpc'
var myjson = '';
@@ -30,6 +32,8 @@ Ext.onReady(function() {
return myjson.result;
}
+
+
//get Season (tvshows)
var myParams = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetSeasons",
\"params\": {\"tvshowid\": 1}, "id": 1}';
@@ -40,16 +44,24 @@ Ext.onReady(function() {
//var myParams = '{"jsonrpc": "2.0", "method":
"AudioLibrary.GetAlbums", "id": 1}';
// get shares
- //var myParams = '{"jsonrpc": "2.0", "method": "Files.GetShares",
"params": {"type": "video"}, "id": 1}';
+ var myParams = '{"jsonrpc": "2.0", "method": "Files.GetSources",
"params": {"media": "video"}, "id": 1}';
//get directory
- //var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"video\", \"directory\":
\"multipath://G%3a%5cVideos%5cArchive%5c/G%3a%5cVideos%5cBurn%5c/\"}, \"id\":
1}';
+ //var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\":
\"special://home/addons"}, \"id\": 1}';
+
+ //Get RootDirectory
+ //var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetRootDirectory\", \"params\": {\"type\": \"files\", \"directory\":
\"special://home/addons"}, \"id\": 1}';
+
+
+
var myShares = xbmcJsonRPC(myParams);
- for (var i=0; i<myShares.directories.length; i++) {
- console.log(myShares.directories[i].label,' --
',myShares.directories[i].file);
- }
+ //for (var i=0; i<myShares.directories.length; i++) {
+ // console.log(myShares.directories[i].label,' --
',myShares.directories[i].file);
+ //}
console.log(myShares);
+
+
});
diff --git a/webinterface.XWMM/files/scrapers.js
b/webinterface.XWMM/files/scrapers.js
index 898d603..118a918 100644
--- a/webinterface.XWMM/files/scrapers.js
+++ b/webinterface.XWMM/files/scrapers.js
@@ -1,25 +1,66 @@
+ function xbmcJsonRPC(params) {
+ var inputUrl = '/jsonrpc'
+ var myjson = '';
+ Ext.Ajax.request({
+ url: inputUrl,
+ params : params,
+ method: "POST",
+ async: false,
+ success: function (t){
+ myjson = Ext.util.JSON.decode(t.responseText);
+ },
+ failure: function(t){},
+ timeout: 2000
+ });
+ return myjson.result;
+ }
+
+function getAddonList(myDir) {
+ for (var i=0; i<myDir.directories.length; i++) {
+ if (myDir.directories[i].label.match("metadata") == "metadata")
{
+ var mytest = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\":
\"'+myDir.directories[i].file+'"}, \"id\": 1}';
+
//IsScraper('/vfs/'+myDir.directories[i].file+'addon.xml')
+ Ext.Ajax.request({
+ url:
'/vfs/'+myDir.directories[i].file+'addon.xml',
+ method: 'GET',
+ async: false,
+ success: function (t){
+ parseAddonXML(t.responseXML,
myDir.directories[i].file)
+ },
+ failure: function(t){},
+ timeout: 2000
+ });
+ }
+ }
+ //console.log(scraperList);
+}
+
+function parseAddonXML(string, path) {
+ xmlDoc = string
+ var addonCategory =
xmlDoc.getElementsByTagName("extension")[0].attributes[0].value;
+ var addonId =
xmlDoc.getElementsByTagName("addon")[0].attributes[0].value;
+ var addonLang =
xmlDoc.getElementsByTagName("extension")[0].attributes[1].value;
+ var addonImg = '../../../vfs/'+path+'icon.png';
+
+ if (addonCategory.match("scraper.movies") == "scraper.movies") {
+ scraperList.push([addonId,addonLang,addonImg,'movies']);
+ }
+ if (addonCategory.match("scraper.tvshows") ==
"scraper.tvshows") {
+
scraperList.push([addonId,addonLang,addonImg,'tvshows']);
+ }
+
+ }
+
+function parseScrapers() {
+
+ var myParams = '{\"jsonrpc\": \"2.0\", \"method\":
\"Files.GetDirectory\", \"params\": {\"type\": \"files\", \"directory\":
\"special://home/addons"}, \"id\": 1}';
+ var myShares = xbmcJsonRPC(myParams);
+
+ getAddonList(myShares);
+}
+
+var scraperList = [];
-var scraperList = [
- ['imdb.xml', 'en', 'imdb.png', 'movies'],
- ['tvdb.xml', 'multi', 'tvdb.png', 'tvshows'],
- ['adultcdmovies.xml', 'en', 'adultcdmovies.jpg', 'movies'],
- ['amazonuk.xml', 'en', 'amazonuk.png', 'movies'],
- ['amazonus.xml', 'men', 'amazonus.png', 'movies'],
- ['asiandb.xml', 'en', 'asiandb.gif', 'movies'],
- ['cinefacts.xml', 'de', 'cinefacts.png', 'movies'],
- ['culturalia.xml', 'es', 'culturalia.gif', 'movies'],
- ['daum.xml', 'ko', 'daum.png', 'movies'],
- ['Excalibur.xml', 'en', 'excalibur.jpg', 'movies'],
- ['fdbpl.xml', 'pl', 'fdbpl.png', 'movies'],
- ['filmaffinity.xml', 'es', 'filmaffinity.gif', 'movies'],
- ['filmdelta.xml', 'sv', 'filmdelta.png', 'movies'],
- ['imdb tv.xml', 'en', 'imdb.png', 'tvshows'],
- ['KinoPoisk.xml', 'ru', 'KinoPoisk.gif', 'movies'],
- ['mymoviesdk.xml', 'multi', 'mymoviesdk.png', 'movies'],
- ['getlib.xml', 'zh', 'getlib.gif', 'movies'],
- ['tvcom.xml', 'en', 'tvcom.png', 'tvshows'],
- ['cine-passion.xml', 'fr', 'cine-passion.png', 'movies']
-];
var combo = new Ext.form.ComboBox({
triggerAction: 'all',
@@ -64,29 +105,31 @@ function inheritContent(node) {
return myXbmcContent;
}
-var ScraperGrid = new Ext.grid.GridPanel({
- height: 500,
- store: new Ext.data.SimpleStore({
+var scraperStore = new Ext.data.SimpleStore({
+ id: 'scraperstore',
fields: ['scraper', 'language','image', 'content'],
data: scraperList,
- autoLoad: true
- }),
+ listeners: {
+ load: function() {
+ //parseScrapers();
+ }
+ },
+ })
+
+var ScraperGrid = new Ext.grid.GridPanel({
+ height: 500,
+ store : scraperStore,
sm: new Ext.grid.RowSelectionModel({
singleSelect: true,
listeners: {
rowselect: function(sm, rowIdx, r) {
scraperImage.updateSrc(r);
- }
+ },
+ beforeshow: function(sm, rowIdx, r) {
+ console.log('show');
+ },
}
}),
- // listeners: {
- // selectionchange: function(sm, rowIdx, r) {
- // scraperImage.updateSrc(r);
- // //movieGenreChange(sm);
- // //var bt = Ext.getCmp('savebutton');
- // //bt.enable();
- // }
- // },
viewConfig: {forceFit: true},
columns: [
{header: 'Scraper', dataIndex: 'scraper', width: 80},
diff --git a/webinterface.XWMM/genre.js b/webinterface.XWMM/genre.js
index e02e8de..a263fd1 100644
--- a/webinterface.XWMM/genre.js
+++ b/webinterface.XWMM/genre.js
@@ -48,6 +48,7 @@ var GenrecolModel = new Ext.grid.ColumnModel([
]);
var storegenre = new Ext.data.Store({
+ id: 'storegenre',
sortInfo: {field: 'strGenre', direction: "ASC"},
reader: new Ext.data.JsonXBMCReader({
root:'data'
diff --git a/webinterface.XWMM/global.js b/webinterface.XWMM/global.js
index e0506c1..1797654 100644
--- a/webinterface.XWMM/global.js
+++ b/webinterface.XWMM/global.js
@@ -1,5 +1,5 @@
-var myVersion = '1.9.1'
+var myVersion = '1.9.2'
var videoFlagsRecord = Ext.data.Record.create([
{name: 'idFile', mapping: 'field:nth(1)'},
@@ -77,22 +77,18 @@ var menuBar = new Ext.Toolbar({
})
var storeVideoFlags = new Ext.data.Store({
+ id: 'storevideoflags',
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, videoFlagsRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile,
strVideoCodec, fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where
iStreamType=0)'
});
var storeAudioFlags = new Ext.data.Store({
+ id: 'storeaudioflags',
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, audioFlagsRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile,
strAudioCodec, iAudioChannels from streamdetails where iStreamType=1)'
});
@@ -139,7 +135,7 @@ function copyXBMCVideoThumb(thumb, r, element, type) {
var temp = '';
Ext.Ajax.request({
url: inputUrl,
- async: false,
+ //async: false,
method: 'GET',
success: function (t){
// if (type == 'season') {
@@ -169,7 +165,7 @@ var currentMovie;
var DetailsFlag;
var detailPanel;
-var FlagsPanel = new Ext.Panel({
+var VideoFlagsPanel = new Ext.Panel({
border: false,
defaults:{xtype:'container', width: 64, height: 44},
items: [{
@@ -183,17 +179,25 @@ var FlagsPanel = new Ext.Panel({
width:48,
height:31,
autoEl: {tag: 'img', src: "../images/flags/default.png"}
- },{
+ }]
+});
+
+var AudioFlagsPanel = new Ext.Panel({
+ border: false,
+ defaults:{xtype:'container', width: 64, height: 44},
+ items: [{
id: 'audiocodec',
autoEl: {tag: 'img', src: "../images/flags/defaultsound.png"}
},{
id: 'audiochannels',
- width:38,
- height:29,
+ // width:38,
+ // height:29,
autoEl: {tag: 'img', src: "../images/flags/0c.png"}
}]
});
+
+
function findResolution(iWidth) {
if (iWidth == 0)
diff --git a/webinterface.XWMM/images.js b/webinterface.XWMM/images.js
index dd8115f..979188f 100644
--- a/webinterface.XWMM/images.js
+++ b/webinterface.XWMM/images.js
@@ -55,9 +55,10 @@ function ChangeImages(record) {
var selNode = viewFanarts.getSelectedRecords();
var currentMovie =
Ext.getCmp('Moviegrid').getSelectionModel().getSelected();
// selNode contains only one item
- downloadXBMCFile(selNode[0].data.url,
currentMovie.data.cover.replace('Video', 'Video/Fanart'));
+ downloadXBMCFile(selNode[0].data.url, currentMovie.data.fanart);
+ //console.log(currentMovie.data);
//update main Movie form
- //Ext.getCmp('cover').refreshMe();
+ Ext.getCmp('fanart').refreshMe();
loadingMask.hide();
}
diff --git a/webinterface.XWMM/movies/include.js
b/webinterface.XWMM/movies/include.js
index 03be3cd..a44364a 100644
--- a/webinterface.XWMM/movies/include.js
+++ b/webinterface.XWMM/movies/include.js
@@ -93,7 +93,7 @@ function updateAllForms(r) {
Ext.getCmp('filedetailPanel').getForm().loadRecord(r);
Ext.getCmp('movierating').updateSrc(r);
-
+ Ext.getCmp('fanart').updateSrc(r);
Ext.getCmp('cover').updateSrc(r);
diff --git a/webinterface.XWMM/movies/movie.js
b/webinterface.XWMM/movies/movie.js
index 812d11e..3020465 100644
--- a/webinterface.XWMM/movies/movie.js
+++ b/webinterface.XWMM/movies/movie.js
@@ -1,12 +1,9 @@
// -----------------------------------------
// movie.js
-// last modified : 19-09-2010
-//
//------------------------------------------
Ext.ns('Movie');
-
var Stars = new Ext.Container ({
id: 'movierating',
border: 0,
@@ -25,19 +22,48 @@ var Stars = new Ext.Container ({
}
});
+var MovieFanart = new Ext.Container ({
+ id: 'fanart',
+ border: 0,
+ width: 295,
+ height:165,
+ autoEl: {tag: 'img', src: "../images/defaultMovieFanart.jpg",
qtip:'Double-click to change'},
+ refreshMe : function(){
+ this.el.dom.src = this.el.dom.src + '?dc=' + new
Date().getTime();
+ },
+ updateSrc :function(r){
+ if (r.data.details) {
+ this.el.dom.src = '../../vfs/'+r.data.fanart
+ }
+ else {
+ var file = r.data.strFilename;
+ var path = r.data.strPath;
+ if (file.substr(0,6) == 'stack:'){ //it is a stack
+ file = file.replace(/stack:\/\//g, "");
+ var tempArr = file.split(" , ");
+ file = tempArr[0];
+ path=""
+ }
+ thumbCrc = FindCRC(path+file);
+ r.data.fanart =
'special://masterprofile/Thumbnails/Video/Fanart/'+thumbCrc+'.tbn';
+ this.el.dom.src = '../../vfs/'+ r.data.fanart;
+ }
+ }
+});
+
var MovieCover = new Ext.Container ({
id: 'cover',
cls: 'center-align',
border: 0,
- width: 300,
- height:400,
+ width: 250,
+ height:375,
autoEl: {tag: 'img', src: "../images/defaultMovieCover.jpg",
qtip:'Double-click to change'},
refreshMe : function(){
this.el.dom.src = this.el.dom.src + '?dc=' + new
Date().getTime();
},
updateSrc :function(r){
if (r.data.details) {
- this.el.dom.src = r.data.cover
+ this.el.dom.src = '../../vfs/'+r.data.cover
}
else {
var file = r.data.strFilename;
@@ -137,105 +163,130 @@ var MoviedetailPanel = new Ext.FormPanel({
updateGenreGrid(currentRecord.data.genres)
}
}],
- items: [{
- layout:'column',
- frame:true,
- labelWidth:50,
- bodyStyle:'padding:5px',
- items:[{
- columnWidth:0.56,
- layout: 'form',
- labelWidth: 65,
- defaults: { xtype:'textfield',
- width: 300,
- listeners:{'change' : function(){DetailsFlag =
true; Ext.getCmp('savebutton').enable()}}
- },
- items: [{
- fieldLabel: 'Title',
- name: 'Movietitle',
- XBMCName: 'c00',
- allowBlank: false
- },{
- fieldLabel: 'Sort Title',
- name: 'sortTitle',
- XBMCName: 'c10'
- },{
- fieldLabel: 'Release',
- XBMCName: 'c07',
- name: 'MovieRelease'
- },{
- fieldLabel: 'Genres',
- name: 'Moviegenres',
- XBMCName: 'c14',
- id:'moviegenres',
- readOnly: true
- },{
- xtype:'textarea',
- height: 130,
- name:'Moviedescr',
- XBMCName: 'c01',
- fieldLabel:'Description'
- },{
- xtype:'textarea',
- height: 34,
- name:'MovieOutline',
- XBMCName: 'c02',
- fieldLabel:'Abstract'
- },{
- xtype:'textarea',
- name:'MovieTagline',
- XBMCName: 'c03',
- fieldLabel:'Tag Line',
- height: 34
- },{
- fieldLabel: 'Duration',
- XBMCName: 'c11',
- name: 'MovieRuntime'
- },{
- fieldLabel: 'Director',
- XBMCName: 'c15',
- name: 'MovieDirector'
- },{
- fieldLabel: 'Viewers',
- XBMCName: 'c12',
- name: 'MovieViewers'
- },{
- fieldLabel: 'Studio',
- XBMCName: 'c18',
- name: 'MovieStudio'
- },{
- fieldLabel: 'Rating',
- name: 'MovieRating',
- XBMCName: 'c05'
- },{
- fieldLabel: 'Trailer',
- id: 'trailer',
- XBMCName: 'c19',
- name: 'MovieTrailer'
- },{
- xtype: 'button',
- text: 'View Trailer',
- handler: function(){
- if (Ext.getCmp('trailer').getValue() !=
'') {
- //var w = (window.open(urlstring,
wname, wfeatures, false));
-
-
window.open(Ext.getCmp('trailer').getValue(),'')
- }
- },
- width: 60
- }]
+
+ layout:'table',
+ layoutConfig: {columns:3},
+ defaults: {frame:true, width:220, height: 120, labelWidth: 60},
+ items:[{
+ width: 300,
+ height : 90,
+ layout: 'form',
+ defaults: { xtype:'textfield',
+ width: 220,
+ listeners:{'change' : function(){DetailsFlag = true;
Ext.getCmp('savebutton').enable()}}
+ },
+ items: [{
+ fieldLabel: 'Title',
+ name: 'Movietitle',
+ XBMCName: 'c00',
+ allowBlank: false
+ },{
+ fieldLabel: 'Sort Title',
+ name: 'sortTitle',
+ XBMCName: 'c10'
- },{
- columnWidth:0.44,
- defaults:{xtype:'container'},
- items: [
- Stars,
- MovieCover,
- FlagsPanel
- ]
+ },{
+ fieldLabel: 'Genres',
+ name: 'Moviegenres',
+ XBMCName: 'c14',
+ id:'moviegenres',
+ readOnly: true
}]
-
+ },{
+ layout: 'form',
+ width:160,
+ height: 90,
+ defaults: { xtype:'textfield',
+ width: 80,
+ listeners:{'change' : function(){DetailsFlag = true;
Ext.getCmp('savebutton').enable()}}
+ },
+ labelWidth: 60,
+ items:[{
+ fieldLabel: 'Release',
+ XBMCName: 'c07',
+ name: 'MovieRelease'
+ },{
+ fieldLabel: 'Rating',
+ name: 'MovieRating',
+ XBMCName: 'c05'
+ },{
+ fieldLabel: 'Duration',
+ XBMCName: 'c11',
+ name: 'MovieRuntime'
+ }]
+ },{
+ rowspan:2,
+ width:255,
+ height: 410,
+ items: [Stars, MovieCover]
+ },{
+ layout : 'form',
+ width: 460,
+ height: 320,
+ colspan:2,
+ defaults: { xtype:'textfield', width: 370},
+ items: [{
+ xtype:'textarea',
+ name:'Moviedescr',
+ XBMCName: 'c01',
+ fieldLabel:'Description',
+ height: 95
+ },{
+ xtype:'textarea',
+ height: 34,
+ name:'MovieOutline',
+ XBMCName: 'c02',
+ fieldLabel:'Abstract'
+ },{
+ xtype:'textarea',
+ name:'MovieTagline',
+ XBMCName: 'c03',
+ fieldLabel:'Tag Line',
+ height: 34
+ },{
+ fieldLabel: 'Director',
+ XBMCName: 'c15',
+ name: 'MovieDirector'
+ },{
+ fieldLabel: 'Viewers',
+ XBMCName: 'c12',
+ name: 'MovieViewers'
+ },{
+ fieldLabel: 'Studio',
+ XBMCName: 'c18',
+ name: 'MovieStudio'
+ },{
+ fieldLabel: 'Trailer',
+ id: 'trailer',
+ XBMCName: 'c19',
+ name: 'MovieTrailer'
+ },{
+ xtype: 'button',
+ text: 'View Trailer',
+ handler: function(){
+ if (Ext.getCmp('trailer').getValue() != '') {
+ //var w = (window.open(urlstring, wname,
wfeatures, false));
+
window.open(Ext.getCmp('trailer').getValue(),'')
+ }
+ },
+ width: 60
+ }]
+ },{
+ frame : false,
+ width: 300,
+ height: 120,
+ items: [MovieFanart]
+ },{
+ width: 160,
+ //frame : false,
+ items: [AudioFlagsPanel]
+ // height : 200
+ },{
+ width : 255,
+ //frame : false,
+ items: [VideoFlagsPanel]
+ // heigth :
}]
})
@@ -253,7 +304,7 @@ Movie.Mainpanel = Ext.extend(Ext.Panel, {
items: [{
xtype: 'panel',
region:'east',
- margins:'5 5 5 5',
+ //margins:'5 5 5 5',
split:true,
width: 225,
items: [{
diff --git a/webinterface.XWMM/movies/movieset.js
b/webinterface.XWMM/movies/movieset.js
index fe6b3ea..ba6fc43 100644
--- a/webinterface.XWMM/movies/movieset.js
+++ b/webinterface.XWMM/movies/movieset.js
@@ -14,12 +14,10 @@ var MovieSetRecord = Ext.data.Record.create([
var MovieSetStore = new Ext.data.GroupingStore({
sortInfo: {field: 'strSet', direction: "ASC"},
+ id: 'moviesetstore',
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, MovieSetRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idSet,
strSet FROM sets)'
});
@@ -37,12 +35,10 @@ var MoviesInSetRecord = Ext.data.Record.create([
var MoviesInSetStore = new Ext.data.GroupingStore({
sortInfo: {field: 'c00', direction: "ASC"},
+ id: 'moviesinsetstore',
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, MoviesInSetRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select
movie.idMovie, c00 FROM setlinkmovie JOIN movie ON setlinkmovie.idMovie =
movie.idMovie WHERE idSet = -1)'
});
diff --git a/webinterface.XWMM/movies/startapp.js
b/webinterface.XWMM/movies/startapp.js
index 82fed72..eaf4806 100644
--- a/webinterface.XWMM/movies/startapp.js
+++ b/webinterface.XWMM/movies/startapp.js
@@ -7,12 +7,6 @@
Ext.onReady(function() {
- //Load existing genres
-
- //storegenre.load();
- LoadAllMoviesdetails();
- MovieSetStore.load();
-
menuBar.add({
xtype: 'tbspacer'
},{
@@ -59,14 +53,14 @@ Ext.onReady(function() {
value: '',
style: 'background: #F0F0F9;'
});
-
menuBar.add({
text: 'X',
tooltip: 'Clear quicksearch',
handler: function() {
- if (searchBox.getValue().length!=0) {
- searchBox.setValue('');
+ var item = Ext.getCmp('searchBox');
+ if (item.getValue().length!=0) {
+ item.setValue('');
storeMovie.clearFilter();
}
}
@@ -78,128 +72,128 @@ Ext.onReady(function() {
text: myVersion
});
- //Start Application with Main Panel
-
- // storegenre.on( 'load', function( store, records, options ) {
- // console.log( 'succesfully loaded' );
-
- // } );
-
setXBMCResponseFormat();
- storegenre.load();
-
- var inputUrl = '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select
idGenre, strGenre FROM genre)';
- Ext.Ajax.request({
- url: inputUrl,
- method: 'GET',
- async: false,
- success: function (t){
- genreRequest = t.responseText
- },
- failure: function(t){},
- timeout: 2000
- });
+ var storesToLoad = [
+ {store : 'storevideoflags', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strVideoCodec,
fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where
iStreamType=0)'},
+ {store : 'storeaudioflags', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strAudioCodec,
iAudioChannels from streamdetails where iStreamType=1)'},
+ {store : 'moviesetstore', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idSet, strSet FROM
sets)'},
+ {store : 'storegenre', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idGenre, strGenre FROM
genre)'}
+ ];
+ loadStartupStores = function(record, options, success){
+ var task = storesToLoad.shift(); //From the top
+ if(task){
+ if(success !== false){
+ task.callback = arguments.callee //let's do this
again
+ var store = Ext.StoreMgr.lookup(task.store);
+ store ? store.load(task) : complain('bad store
specified');
+ } else {
+ complain( );
+ }
+ } else {startMyApp()}
+ };
- var App = new Movie.Mainpanel({
- renderTo: Ext.getBody()
- });
+ loadStartupStores();
- // We can retrieve a reference to the data store
- // via the StoreMgr by its storeId
- Ext.QuickTips.init();
- storeMovie.load();
-
-
//Moviegrid.on('contextmenu', gridContextHandler);
- // begin search config
- var searchStore = new Ext.data.SimpleStore({
- fields: ['query'],
- data: []
- });
- var searchBox = new Ext.form.ComboBox({
- store: searchStore,
- displayField: 'query',
- typeAhead: false,
- mode: 'local',
- triggerAction: 'all',
- applyTo: 'quicksearch',
- hideTrigger: true
- });
+ function startMyApp() {
+ var App = new Movie.Mainpanel({
+ renderTo: Ext.getBody()
+ });
+ Ext.QuickTips.init();
+ storeMovie.load();
+
+ // begin search config
+ var searchStore = new Ext.data.SimpleStore({
+ fields: ['query'],
+ data: []
+ });
+
+ var searchBox = new Ext.form.ComboBox({
+ id: 'searchBox',
+ store: searchStore,
+ displayField: 'query',
+ typeAhead: false,
+ mode: 'local',
+ triggerAction: 'all',
+ applyTo: 'quicksearch',
+ hideTrigger: true
+ });
- var searchRec = Ext.data.Record.create([
- {name: 'query', type: 'string'}
- ]);
+ var searchRec = Ext.data.Record.create([
+ {name: 'query', type: 'string'}
+ ]);
- var onFilteringBeforeQuery = function(e) {
- //grid.getSelectionModel().clearSelections();
- if (this.getValue().length==0) {
- storeMovie.clearFilter();
- } else {
- var value = this.getValue().replace(/^\s+|\s+$/g, "");
- if (value=="")
- return;
- storeMovie.filterBy(function(r) {
- valueArr = value.split(/\ +/);
- for (var i=0; i<valueArr.length; i++) {
- re = new RegExp(Ext.escapeRe(valueArr[i]), "i");
- if (re.test(r.data['Movietitle'])==false
- //&& re.test(r.data['light'])==false) {
- ) {
- return false;
- };
- }
- return true;
- });
- }
- };
- var onQuickSearchBeforeQuery = function(e) {
- if (this.getValue().length==0) {
- } else {
- var value = this.getValue().replace(/^\s+|\s+$/g, "");
- if (value=="")
- return;
- searchStore.clearFilter();
- var vr_insert = true;
- searchStore.each(function(r) {
- if (r.data['query'].indexOf(value)==0) {
- // backspace
- vr_insert = false;
- return false;
- } else if (value.indexOf(r.data['query'])==0) {
- // forward typing
- searchStore.remove(r);
- }
- });
- if (vr_insert==true) {
- searchStore.each(function(r) {
- if (r.data['query']==value) {
- vr_insert = false;
- }
- });
- }
- if (vr_insert==true) {
- var vr = new searchRec({query: value});
- searchStore.insert(0, vr);
- }
- var ss_max = 4; // max 5 query history, starts counting from 0;
0==1,1==2,2==3,etc
- if (searchStore.getCount()>ss_max) {
- var ssc = searchStore.getCount();
- var overflow = searchStore.getRange(ssc-(ssc-ss_max), ssc);
- for (var i=0; i<overflow.length; i++) {
- searchStore.remove(overflow[i]);
- }
- }
+ var onFilteringBeforeQuery = function(e) {
+ //grid.getSelectionModel().clearSelections();
+ if (this.getValue().length==0) {
+ storeMovie.clearFilter();
+ } else {
+ var value =
this.getValue().replace(/^\s+|\s+$/g, "");
+ if (value=="")
+ return;
+ storeMovie.filterBy(function(r)
{
+ valueArr =
value.split(/\ +/);
+ for (var i=0;
i<valueArr.length; i++) {
+ re = new
RegExp(Ext.escapeRe(valueArr[i]), "i");
+ if
(re.test(r.data['Movietitle'])==false
+ //&&
re.test(r.data['light'])==false) {
+ ) {
+ return
false;
+ };
+ }
+ return true;
+ });
+ }
+ };
+
+ var onQuickSearchBeforeQuery = function(e) {
+ if (this.getValue().length==0) {
+ } else {
+ var value =
this.getValue().replace(/^\s+|\s+$/g, "");
+ if (value=="")
+ return;
+ searchStore.clearFilter();
+ var vr_insert = true;
+ searchStore.each(function(r) {
+ if (r.data['query'].indexOf(value)==0) {
+ // backspace
+ vr_insert = false;
+ return false;
+ } else if
(value.indexOf(r.data['query'])==0) {
+ // forward typing
+ searchStore.remove(r);
+ }
+ });
+ if (vr_insert==true) {
+ searchStore.each(function(r) {
+ if (r.data['query']==value) {
+ vr_insert = false;
+ }
+ });
+ }
+ if (vr_insert==true) {
+ var vr = new searchRec({query: value});
+ searchStore.insert(0, vr);
+ }
+ var ss_max = 4; // max 5 query history, starts
counting from 0; 0==1,1==2,2==3,etc
+ if (searchStore.getCount()>ss_max) {
+ var ssc = searchStore.getCount();
+ var overflow =
searchStore.getRange(ssc-(ssc-ss_max), ssc);
+ for (var i=0; i<overflow.length; i++) {
+ searchStore.remove(overflow[i]);
+ }
+ }
+ }
+ };
+
+ searchBox.on("beforequery", onQuickSearchBeforeQuery);
+ searchBox.on("beforequery", onFilteringBeforeQuery);
+ searchBox.on("select", onFilteringBeforeQuery);
+ // end search
}
- };
- searchBox.on("beforequery", onQuickSearchBeforeQuery);
- searchBox.on("beforequery", onFilteringBeforeQuery);
- searchBox.on("select", onFilteringBeforeQuery);
- // end search
-
-
});
\ No newline at end of file
diff --git a/webinterface.XWMM/tvshows/actors.js
b/webinterface.XWMM/tvshows/actors.js
index 04bc450..5b51dd9 100644
--- a/webinterface.XWMM/tvshows/actors.js
+++ b/webinterface.XWMM/tvshows/actors.js
@@ -15,9 +15,6 @@ var storeActor = new Ext.data.Store({
reader: new Ext.data.JsonXBMCReader({
root:'data'
}, actorRecord),
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor,
strRole FROM actorlinktvshow JOIN actors ON (actorlinktvshow.idActor =
actors.idActor) where idShow =-1)'
});
diff --git a/webinterface.XWMM/tvshows/app.js b/webinterface.XWMM/tvshows/app.js
index 742aa2e..6c5e605 100644
--- a/webinterface.XWMM/tvshows/app.js
+++ b/webinterface.XWMM/tvshows/app.js
@@ -4,8 +4,8 @@ Ext.onReady(function() {
//Load existing genres
- storegenre.load();
- LoadAllshowsdetails();
+ //storegenre.load();
+ //LoadAllshowsdetails();
// customize menu
menuBar.add({
@@ -33,18 +33,45 @@ Ext.onReady(function() {
value: '',
style: 'background: #F0F0F9;'
});
+
menuBar.add({
xtype: 'tbfill'
},{
text: myVersion
});
- //Start Application with Main Panel
- var App = new TVShow.Mainpanel({
- renderTo: Ext.getBody()
- });
- // We can retrieve a reference to the data store
- // via the StoreMgr by its storeId
- Ext.StoreMgr.get('gridtvshowstore').load();
+ setXBMCResponseFormat();
+
+ var storesToLoad = [
+ {store : 'storevideoflags', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strVideoCodec,
fVideoAspect, iVideoWidth, iVideoHeight from streamdetails where
iStreamType=0)'},
+ {store : 'storeaudioflags', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idFile, strAudioCodec,
iAudioChannels from streamdetails where iStreamType=1)'},
+ {store : 'gridtvshowstore', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select tvshow.idShow,
tvshow.c00, tvshow.c08, counts.totalcount, counts.watchedcount,
counts.totalcount=counts.watchedcount from tvshow join tvshowlinkpath on
tvshow.idShow=tvshowlinkpath.idShow join path on
path.idpath=tvshowlinkpath.idPath left outer join (select tvshow.idShow as
idShow,count(1) as totalcount,count(files.playCount) as watchedcount from
tvshow join tvshowlinkepisode on tvshow.idShow = tvshowlinkepisode.idShow JOIN
episode on episode.idEpisode = tvshowlinkepisode.idEpisode join files on
files.idFile = episode.idFile group by tvshow.idShow) counts on tvshow.idShow =
counts.idShow)'},
+ {store : 'storegenre', url:
'/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idGenre, strGenre FROM
genre)'}
+ ];
+
+ loadStartupStores = function(record, options, success){
+ var task = storesToLoad.shift(); //From the top
+ if(task){
+ if(success !== false){
+ task.callback = arguments.callee //let's do this
again
+ var store = Ext.StoreMgr.lookup(task.store);
+ store ? store.load(task) : complain('bad store
specified');
+ } else {
+ complain( );
+ }
+ } else {startMyApp()}
+ };
+
+ loadStartupStores();
+ function startMyApp() {
+ //Start Application with Main Panel
+ var App = new TVShow.Mainpanel({
+ renderTo: Ext.getBody()
+ });
+ // We can retrieve a reference to the data store
+ // via the StoreMgr by its storeId
+
+ //Ext.StoreMgr.get('gridtvshowstore').load();
+ }
});
diff --git a/webinterface.XWMM/tvshows/include.js
b/webinterface.XWMM/tvshows/include.js
index 043ff04..4f9b10a 100644
--- a/webinterface.XWMM/tvshows/include.js
+++ b/webinterface.XWMM/tvshows/include.js
@@ -14,11 +14,6 @@ var DetailsFlag;
var genresFlag;
var detailPanel;
-function LoadAllshowsdetails(){
-
- storeVideoFlags.load();
- storeAudioFlags.load()
-}
var gridContextMenu = new Ext.menu.Menu({
items: [
@@ -127,28 +122,27 @@ function updateEpisodeForms(r) {
function GettvShowDetails(r){
- setXBMCResponseFormat();
-
- var conn = new Ext.data.Connection();
- conn.request({
- url:
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT c01, c04, c05, c06, c08,
c11, c12, c14, strPath FROM tvshow JOIN tvshowlinkpath ON (tvshow.idShow =
tvshowlinkpath.idShow) JOIN path ON (tvshowlinkpath.idPath = path.idPath) WHERE
tvshow.idShow="+r.data.idShow+")",
+ //setXBMCResponseFormat();
- success: function(resp,opt) {
- XBMCTVShowgetFields(resp, r);
-
- currentShowPath = r.data.ShowPath;
-
- updateTvShowForms(r);
- r.data.details = true
- },
- failure: function(resp,opt) {
- }
- });
+ var inputUrl = '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT
c01, c04, c05, c06, c08, c11, c12, c14, strPath FROM tvshow JOIN tvshowlinkpath
ON (tvshow.idShow = tvshowlinkpath.idShow) JOIN path ON (tvshowlinkpath.idPath
= path.idPath) WHERE tvshow.idShow='+r.data.idShow+')';
+ Ext.Ajax.request({
+ url: inputUrl,
+ method: 'GET',
+ async: false,
+ success: function(resp,opt) {
+ XBMCTVShowgetFields(resp, r);
+ currentShowPath = r.data.ShowPath;
+ updateTvShowForms(r);
+ r.data.details = true
+ },
+ failure: function(resp,opt) {},
+ timeout: 2000
+ });
}
function GetepisodeDetails(r) {
- setXBMCResponseFormat();
+ //setXBMCResponseFormat();
var conn = new Ext.data.Connection();
conn.request({
@@ -181,24 +175,22 @@ function updateXBMCGenreTvshow(){
url: inputUrl,
method: 'GET',
async: false,
- success: function (t){
-
- },
+ success: function (t){},
failure: function(t){},
timeout: 2000
});
// insert selected genres
- for (var i = 0; i <
modifiedGenre.length; i++){
- var inputUrl =
'/xbmcCmds/xbmcHttp?command=execvideodatabase(INSERT INTO genrelinktvshow
(idGenre, idShow) VALUES ('+modifiedGenre[i].data.idGenre+','+idShow+'))';
- Ext.Ajax.request({
- url: inputUrl,
- method: 'GET',
- async: false,
- success: function (t){},
- failure: function(t){},
- timeout: 2000
- });
- }
+ for (var i = 0; i < modifiedGenre.length; i++){
+ var inputUrl =
'/xbmcCmds/xbmcHttp?command=execvideodatabase(INSERT INTO genrelinktvshow
(idGenre, idShow) VALUES ('+modifiedGenre[i].data.idGenre+','+idShow+'))';
+ Ext.Ajax.request({
+ url: inputUrl,
+ method: 'GET',
+ //async: false,
+ success: function (t){},
+ failure: function(t){},
+ timeout: 2000
+ });
+ }
}
// Query XBMC DB genrelinktvshow
@@ -209,6 +201,7 @@ function GetTvshowGenres(record){
Ext.Ajax.request({
url: inputUrl,
method: 'GET',
+ async: false,
success: function (t){
var responseArr =
TrimXbmcXml(t);
responseArr =
responseArr.split("<record>");
diff --git a/webinterface.XWMM/tvshows/tvshow.js
b/webinterface.XWMM/tvshows/tvshow.js
index 719e068..1671550 100644
--- a/webinterface.XWMM/tvshows/tvshow.js
+++ b/webinterface.XWMM/tvshows/tvshow.js
@@ -32,12 +32,12 @@ var TVShowstars = new Ext.Container ({
autoEl: {tag: 'img', src: "../images/stars/0.png"},
updateSrc :function(r){
if (r.data.details) {
- this.el.dom.src = r.data.ShowRating
+ this.el.dom.src = r.data.ShowStars
}
else {
var value = Math.round(r.data.ShowRating);
- r.data.ShowRating = '../images/stars/'+value+'.png';
- this.el.dom.src = r.data.ShowRating;
+ r.data.ShowStars = '../images/stars/'+value+'.png';
+ this.el.dom.src = r.data.ShowStars;
}
}
});
@@ -45,8 +45,8 @@ var TVShowstars = new Ext.Container ({
var EpisodeStars = new Ext.Container ({
id: 'episoderating',
border: 0,
- width: 96,
- height:27,
+ width: 72,
+ height:20,
autoEl: {tag: 'img', src: "../images/stars/0.png"},
updateSrc :function(r){
if (r.data.details) {
@@ -70,12 +70,14 @@ var TVShowCover = new Ext.Container ({
autoEl: {tag: 'img', src: "../images/nobanner.png"},
updateSrc :function(r){
if (r.data.details) {
- this.el.dom.src = r.data.ShowCover
+ this.el.dom.src = '../../vfs/'+ r.data.cover;
}
else {
thumbCrc = FindCRC(r.data.ShowPath);
- this.el.dom.src =
'../../vfs/special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
- r.data.cover = this.el.dom.src
+ r.data.cover =
'special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
+ this.el.dom.src = '../../vfs/'+ r.data.cover;
+ // this.el.dom.src =
'../../vfs/special://masterprofile/Thumbnails/Video/'+thumbCrc.substring(0,1)+'/'+thumbCrc+'.tbn';
+ // r.data.cover = this.el.dom.src
//copyXBMCVideoThumb(thumbCrc,r, this, "cover");
}
}
@@ -85,8 +87,8 @@ var SeasonCover = new Ext.Container ({
id: 'seasoncover',
cls: 'center-align',
border: 0,
- width: 200,
- height:289,
+ width: 160,
+ height:231,
autoEl: {tag: 'img', src: "../images/defaultMovieCover.jpg"},
updateSrc :function(r, season){
@@ -206,7 +208,7 @@ var TVShowdetailPanel = new Ext.FormPanel({
}]
})
-var EpisodedetailPanel = new Ext.FormPanel({
+var EpisodedetailPanel2 = new Ext.FormPanel({
region: 'center',
id: 'episodedetailPanel',
trackResetOnLoad: true,
@@ -235,7 +237,6 @@ var EpisodedetailPanel = new Ext.FormPanel({
name: 'EpisodeAired',
XBMCName: 'c05',
width: 215
- //readOnly: true
},{
xtype:'textarea',
fieldLabel: 'Description',
@@ -253,7 +254,7 @@ var EpisodedetailPanel = new Ext.FormPanel({
name: 'EpisodeRating',
XBMCName: 'c03',
width: 215
- },FlagsPanel
+ }, AudioFlagsPanel, VideoFlagsPanel
]
},{
@@ -268,6 +269,66 @@ var EpisodedetailPanel = new Ext.FormPanel({
}]
})
+var EpisodedetailPanel = new Ext.FormPanel({
+ //width: 600,
+ region: 'center',
+ id: 'episodedetailPanel',
+ trackResetOnLoad : true,
+ title: "<div align='center'>Movie details</div>",
+ defaults:{hideLabels:true, border:false},
+ layout:'table',
+ layoutConfig: {columns:2},
+ defaults: {frame:true, labelWidth: 60},
+ items:[{
+ layout: 'form',
+ width : 370,
+ defaults: { xtype:'textfield',
+ width: 275,
+ listeners:{'change' : function(){DetailsFlag = true;
Ext.getCmp('savebutton').enable()}}
+ },
+ items: [{
+ fieldLabel: 'Title',
+ name: 'EpisodeTitle',
+ XBMCName: 'c00',
+ allowBlank: false
+ },{
+ fieldLabel: 'Aired',
+ name: 'EpisodeAired',
+ XBMCName: 'c05'
+ },{
+ xtype:'textarea',
+ fieldLabel: 'Description',
+ name: 'EpisodeDescr',
+ XBMCName: 'c01',
+ height: 145
+ },{
+ fieldLabel: 'Director',
+ name: 'EpisodeDirector',
+ XBMCName: 'c10'
+ },{
+ fieldLabel: 'Rating',
+ name: 'EpisodeRating',
+ XBMCName: 'c03'
+ }]
+ },{
+ //rowspan:2,
+ width:170,
+ //height: 260,
+ items: [EpisodeStars, SeasonCover]
+ },{
+ //width: 160,
+ //frame : false,
+ items: [VideoFlagsPanel]
+
+ // height : 200
+ },{
+ //width : 255,
+ //frame : false,
+ items: [AudioFlagsPanel]
+ // heigth :
+ }]
+})
+
// grid with list of movies
tvShowGrid = new Ext.grid.GridPanel({
cm: tvShowcolModel,
@@ -283,17 +344,14 @@ tvShowGrid = new Ext.grid.GridPanel({
split: true,
store: new TVShow.Store({
storeId: 'gridtvshowstore',
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
- },
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(select
tvshow.idShow, tvshow.c00, tvshow.c08, counts.totalcount, counts.watchedcount,
counts.totalcount=counts.watchedcount from tvshow join tvshowlinkpath on
tvshow.idShow=tvshowlinkpath.idShow join path on
path.idpath=tvshowlinkpath.idPath left outer join ( select tvshow.idShow as
idShow,count(1) as totalcount,count(files.playCount) as watchedcount from
tvshow join tvshowlinkepisode on tvshow.idShow = tvshowlinkepisode.idShow
JOIN episode on episode.idEpisode = tvshowlinkepisode.idEpisode join files
on files.idFile = episode.idFile group by tvshow.idShow) counts on
tvshow.idShow = counts.idShow)'
})
});
-
EpisodeGrid = new Ext.grid.GridPanel({
cm: episodecolModel,
id: 'episodegrid',
+ loadMask: true,
title: 'Episodes List',
enableDragDrop: false,
viewconfig: {forceFit: true},
@@ -311,15 +369,26 @@ EpisodeGrid = new Ext.grid.GridPanel({
gridContextMenu.showAt(e.getXY());
e.stopEvent();
return false;
- }}
+ }}
},
split: true,
store: new TVShow.EpiStore({
storeId: 'gridepisodestore',
- listeners: {
- beforeload: function(){ setXBMCResponseFormat() }
+ listeners:{
+ load: function() {
+ if (currentRecord.data.details == undefined){
+ GetTvshowGenres(currentRecord);
+ GettvShowDetails(currentRecord);
+ }
+ else {
+ updateTvShowForms(currentRecord);
+
updateGenreGrid(currentRecord.data.selectedGenre);
+
Ext.getCmp('filedetailPanel').getForm().loadRecord(currentRecord);
+ }
+ storeActor.proxy.conn.url =
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor, strRole FROM
actorlinktvshow JOIN actors ON (actorlinktvshow.idActor = actors.idActor) where
idShow ="+currentRecord.data.idShow+")";
+ storeActor.load();
+ }
},
- //url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT
episode.idEpisode, episode.c00, episode.c12, episode.c13 FROM episode JOIN
tvshowlinkepisode ON (episode.idEpisode = tvshowlinkepisode.idEpisode) where
tvshowlinkepisode.idShow=-1)'
url: '/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT
idEpisode, c00, c12, c13, playCount FROM episodeview WHERE idShow=-1)'
})
});
@@ -344,7 +413,6 @@ var fileDetailsPanel = new Ext.FormPanel({
}]
})
-
//Main Panel
TVShow.Mainpanel = Ext.extend(Ext.Panel, {
initComponent: function() {
@@ -422,31 +490,18 @@ TVShow.Mainpanel = Ext.extend(Ext.Panel, {
},
tvShowSelect: function(sm, rowIdx, r) {
-
+
TVShowdetailPanel.setTitle("<div
align='center'>"+r.data.ShowTitle+" ( "+r.data.totalCount+" Episodes /
"+r.data.watchedCount+" watched )</div>");
selectedMovie = r.data.idShow;
currentRecord = r;
-
- Ext.StoreMgr.get('gridepisodestore').proxy.conn.url =
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT episode.idEpisode,
episode.c00, episode.c12, episode.c13 FROM episode JOIN tvshowlinkepisode ON
(episode.idEpisode = tvshowlinkepisode.idEpisode) where
tvshowlinkepisode.idShow="+r.data.idShow+")";
- //Ext.StoreMgr.get('gridepisodestore').proxy.conn.url=
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idEpisode, c00, c12, c13,
playCount FROM episodeview WHERE idShow="+r.data.idShow+")";
+ //Ext.StoreMgr.get('gridepisodestore').proxy.conn.url =
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT episode.idEpisode,
episode.c00, episode.c12, episode.c13, episode.playCount FROM episode JOIN
tvshowlinkepisode ON (episode.idEpisode = tvshowlinkepisode.idEpisode) where
tvshowlinkepisode.idShow="+r.data.idShow+")";
+ Ext.StoreMgr.get('gridepisodestore').proxy.conn.url=
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(select idEpisode, c00, c12, c13,
playCount FROM episodeview WHERE idShow="+r.data.idShow+")";
Ext.StoreMgr.get('gridepisodestore').load();
-
- EpisodedetailPanel.getForm().reset();
- EpisodedetailPanel.setTitle("<div align='center'>Select
Episode</div>");
-
- if (r.data.details == undefined){
- GetTvshowGenres(r);
- GettvShowDetails(r);
- }
- else {
- updateTvShowForms(r);
- updateGenreGrid(r.data.selectedGenre);
- Ext.getCmp('filedetailPanel').getForm().loadRecord(r);
- }
- storeActor.proxy.conn.url =
"/xbmcCmds/xbmcHttp?command=queryvideodatabase(SELECT strActor, strRole FROM
actorlinktvshow JOIN actors ON (actorlinktvshow.idActor = actors.idActor) where
idShow ="+r.data.idShow+")";
- storeActor.load();
+ //EpisodedetailPanel.getForm().reset();
+ EpisodedetailPanel.setTitle("<div align='center'>Select
Episode</div>");
+
},
episodeSelect: function(sm, rowIdx, r) {
diff --git a/webinterface.XWMM/xbmc.js b/webinterface.XWMM/xbmc.js
index eeb61a1..ad34339 100644
--- a/webinterface.XWMM/xbmc.js
+++ b/webinterface.XWMM/xbmc.js
@@ -511,7 +511,7 @@ function XBMCEpisodegetFields(t, r) {
//temp = TrimXbmcXml(t); should be used
r.data.EpisodeTitle = temp[1];
r.data.EpisodeDescr = temp[2];
- r.data.EpisodeRating = temp[3];
+ r.data.EpisodeRating = temp[3].slice(0,3);
r.data.EpisodeWriter = temp[4];
r.data.EpisodeAired = temp[5];
r.data.EpisodeDirector = temp[6];
-----------------------------------------------------------------------
Summary of changes:
webinterface.XWMM/Changelog.txt | 20 +-
webinterface.XWMM/addon.xml | 2 +-
.../extjs/resources/images/default/box/Thumbs.db | Bin 5632 -> 0 bytes
.../extjs/resources/images/default/dd/Thumbs.db | Bin 8192 -> 0 bytes
.../resources/images/default/editor/Thumbs.db | Bin 5120 -> 0 bytes
.../extjs/resources/images/default/form/Thumbs.db | Bin 7168 -> 0 bytes
.../extjs/resources/images/default/grid/Thumbs.db | Bin 8192 -> 0 bytes
.../resources/images/default/layout/Thumbs.db | Bin 7680 -> 0 bytes
webinterface.XWMM/files/browser.js | 20 +-
webinterface.XWMM/files/include.js | 9 +-
webinterface.XWMM/files/json.html | 22 ++-
webinterface.XWMM/files/scrapers.js | 113 ++++++---
webinterface.XWMM/genre.js | 1 +
webinterface.XWMM/global.js | 28 ++-
webinterface.XWMM/images.js | 5 +-
webinterface.XWMM/images/defaultMovieFanart.jpg | Bin 0 -> 130584 bytes
webinterface.XWMM/images/flags/Thumbs.db | Bin 5632 -> 0 bytes
webinterface.XWMM/images/stars/Thumbs.db | Bin 6144 -> 0 bytes
webinterface.XWMM/movies/include.js | 2 +-
.../movies/{movie.js => movie-good.js} | 4 +-
webinterface.XWMM/movies/movie.js | 257 ++++++++++++--------
webinterface.XWMM/movies/movieset.js | 8 +-
webinterface.XWMM/movies/startapp.js | 236 +++++++++---------
webinterface.XWMM/tvshows/actors.js | 3 -
webinterface.XWMM/tvshows/app.js | 45 +++-
webinterface.XWMM/tvshows/include.js | 65 +++---
webinterface.XWMM/tvshows/tvshow.js | 137 ++++++++---
webinterface.XWMM/xbmc.js | 2 +-
28 files changed, 574 insertions(+), 405 deletions(-)
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/box/Thumbs.db
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/dd/Thumbs.db
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/editor/Thumbs.db
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/form/Thumbs.db
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/grid/Thumbs.db
delete mode 100644
webinterface.XWMM/extjs/resources/images/default/layout/Thumbs.db
create mode 100644 webinterface.XWMM/images/defaultMovieFanart.jpg
delete mode 100644 webinterface.XWMM/images/flags/Thumbs.db
delete mode 100644 webinterface.XWMM/images/stars/Thumbs.db
copy webinterface.XWMM/movies/{movie.js => movie-good.js} (99%)
hooks/post-receive
--
Web Interfaces
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons