';
+ if (enableScrollX()) {
+ html += '
';
return html;
}
@@ -234,14 +252,19 @@
var page = this;
var userId = Dashboard.getCurrentUserId();
+ if (enableScrollX()) {
+ $('.itemsContainer', page).addClass('hiddenScrollX');
+ } else {
+ $('.itemsContainer', page).removeClass('hiddenScrollX');
+ }
+
loadResume(page, userId, parentId);
loadLatest(page, userId, parentId);
- if (!AppInfo.hasLowImageBandwidth) {
+ if (AppInfo.enableMovieHomeSuggestions) {
loadSuggestions(page, userId, parentId);
}
});
-
})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicalbumartists.js b/dashboard-ui/scripts/musicalbumartists.js
index ed35328792..2f8a5dba88 100644
--- a/dashboard-ui/scripts/musicalbumartists.js
+++ b/dashboard-ui/scripts/musicalbumartists.js
@@ -141,7 +141,7 @@
}
}
- $(document).on('pageinit', "#musicAlbumArtistsPage", function () {
+ $(document).on('pageinitdepends', "#musicAlbumArtistsPage", function () {
var page = this;
@@ -196,7 +196,7 @@
reloadItems(page);
});
- }).on('pagebeforeshow', "#musicAlbumArtistsPage", function () {
+ }).on('pageshown', "#musicAlbumArtistsPage", function () {
var page = this;
query.ParentId = LibraryMenu.getTopParentId();
@@ -223,8 +223,6 @@
}
});
- }).on('pageshow', "#musicAlbumArtistsPage", function () {
-
updateFilterControls(this);
});
diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js
index c1c547e815..2fc22a1904 100644
--- a/dashboard-ui/scripts/musicalbums.js
+++ b/dashboard-ui/scripts/musicalbums.js
@@ -153,7 +153,7 @@
}
}
- $(document).on('pageinit', "#musicAlbumsPage", function () {
+ $(document).on('pageinitdepends', "#musicAlbumsPage", function () {
var page = this;
@@ -248,7 +248,7 @@
reloadItems(page);
});
- }).on('pagebeforeshow', "#musicAlbumsPage", function () {
+ }).on('pageshown', "#musicAlbumsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
@@ -274,27 +274,7 @@
}
});
- }).on('pageshow', "#musicAlbumsPage", function () {
-
updateFilterControls(this);
-
- var updateScheduled = false;
- function onscreen() {
- var viewportBottom = $(window).scrollTop() + $(window).height();
- return ($(document).height() - viewportBottom) < 100;
- }
- $(window).on('scroll', function () {
- console.log('load');
- if (!updateScheduled) {
- setTimeout(function () {
- if (onscreen()) {
- console.log('load');
- }
- updateScheduled = false;
- }, 500);
- updateScheduled = true;
- }
- });
});
})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js
index f04fb7507a..b127748851 100644
--- a/dashboard-ui/scripts/musicartists.js
+++ b/dashboard-ui/scripts/musicartists.js
@@ -142,7 +142,7 @@
}
}
- $(document).on('pageinit', "#musicArtistsPage", function () {
+ $(document).on('pageinitdepends', "#musicArtistsPage", function () {
var page = this;
@@ -197,7 +197,7 @@
reloadItems(page);
});
- }).on('pagebeforeshow', "#musicArtistsPage", function () {
+ }).on('pageshown', "#musicArtistsPage", function () {
var page = this;
@@ -225,8 +225,6 @@
}
});
- }).on('pageshow', "#musicArtistsPage", function () {
-
updateFilterControls(this);
});
diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js
index 58461a8129..b79a86fdea 100644
--- a/dashboard-ui/scripts/musicrecommended.js
+++ b/dashboard-ui/scripts/musicrecommended.js
@@ -1,12 +1,20 @@
(function ($, document) {
function itemsPerRow() {
-
+
var screenWidth = $(window).width();
return screenWidth >= 1920 ? 9 : (screenWidth >= 1200 ? 12 : (screenWidth >= 1000 ? 10 : 8));
}
+ function enableScrollX() {
+ return AppInfo.isTouchPreferred;
+ }
+
+ function getSquareShape() {
+ return enableScrollX() ? 'overflowSquare' : 'square';
+ }
+
function loadLatest(page, parentId) {
var userId = Dashboard.getCurrentUserId();
@@ -27,7 +35,7 @@
showUnplayedIndicator: false,
showChildCountIndicator: true,
showLatestItemsPopup: false,
- shape: "square",
+ shape: getSquareShape(),
showTitle: true,
showParentTitle: true,
lazy: true,
@@ -65,7 +73,7 @@
$('#recentlyPlayedSongs', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
showUnplayedIndicator: false,
- shape: "square",
+ shape: getSquareShape(),
showTitle: true,
showParentTitle: true,
defaultAction: 'play',
@@ -105,7 +113,7 @@
$('#topPlayedSongs', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
showUnplayedIndicator: false,
- shape: "square",
+ shape: getSquareShape(),
showTitle: true,
showParentTitle: true,
defaultAction: 'play',
@@ -144,7 +152,7 @@
$('.itemsContainer', elem).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
- shape: "square",
+ shape: getSquareShape(),
showTitle: true,
lazy: true,
defaultAction: 'play',
@@ -155,10 +163,9 @@
})).lazyChildren();
});
-
}
- $(document).on('pagebeforeshow', "#musicRecommendedPage", function () {
+ $(document).on('pageshown', "#musicRecommendedPage", function () {
var parentId = LibraryMenu.getTopParentId();
@@ -168,6 +175,12 @@
loadPlaylists(page, parentId);
loadRecentlyPlayed(page, parentId);
loadFrequentlyPlayed(page, parentId);
+
+ if (enableScrollX()) {
+ $('.itemsContainer', page).addClass('hiddenScrollX');
+ } else {
+ $('.itemsContainer', page).removeClass('hiddenScrollX');
+ }
});
diff --git a/dashboard-ui/scripts/plugincatalogpage.js b/dashboard-ui/scripts/plugincatalogpage.js
index c36479efae..418bbb12b3 100644
--- a/dashboard-ui/scripts/plugincatalogpage.js
+++ b/dashboard-ui/scripts/plugincatalogpage.js
@@ -10,6 +10,14 @@
Dashboard.showLoadingMsg();
+ if (AppInfo.enableAppStorePolicy) {
+ $('.optionAdultContainer', page).hide();
+ } else {
+ $('.optionAdultContainer', page).show();
+ }
+
+ query.IsAppStoreSafe = true;
+
var promise1 = ApiClient.getAvailablePlugins(query);
var promise2 = ApiClient.getInstalledPlugins();
@@ -128,7 +136,7 @@
if (!plugin.isExternal) {
html += "
";
html += plugin.price > 0 ? "$" + plugin.price.toFixed(2) : Globalize.translate('LabelFree');
- html += RatingHelpers.getStoreRatingHtml(plugin.avgRating, plugin.id, plugin.name);
+ html += RatingHelpers.getStoreRatingHtml(plugin.avgRating, plugin.id, plugin.name, true);
html += "
";
html += " " + Globalize.translate('LabelNumberReviews').replace("{0}", plugin.totalRatings);
diff --git a/dashboard-ui/scripts/ratingdialog.js b/dashboard-ui/scripts/ratingdialog.js
index 0616a06fbd..87d2faa8b2 100644
--- a/dashboard-ui/scripts/ratingdialog.js
+++ b/dashboard-ui/scripts/ratingdialog.js
@@ -112,7 +112,7 @@
for (var i = 1; i <= 5; i++) {
var title = noLinks ? rating + " stars" : "Rate " + i + (i > 1 ? " stars" : " star");
- html += noLinks ? "" : "";
+ html += noLinks ? "" : "";
if (rating <= i - 1) {
html += "";
} else if (rating < i) {
@@ -120,7 +120,7 @@
} else {
html += "";
}
- html += noLinks ? "" : "";
+ html += noLinks ? "" : "";
}
html += "";
diff --git a/dashboard-ui/scripts/registrationservices.js b/dashboard-ui/scripts/registrationservices.js
new file mode 100644
index 0000000000..286964a3d6
--- /dev/null
+++ b/dashboard-ui/scripts/registrationservices.js
@@ -0,0 +1,112 @@
+window.RegistrationServices = {
+
+ renderPluginInfo: function (page, pkg, pluginSecurityInfo) {
+
+ if (pkg.isPremium) {
+ $('.premiumPackage', page).show();
+
+ // Fill in registration info
+ var regStatus = "";
+ if (pkg.isRegistered) {
+
+ regStatus += "
";
+
+ regStatus += Globalize.translate('MessageFeatureIncludedWithSupporter');
+
+ } else {
+
+ var expDateTime = new Date(pkg.expDate).getTime();
+ var nowTime = new Date().getTime();
+
+ if (expDateTime <= nowTime) {
+ regStatus += "
";
+ regStatus += Globalize.translate('MessageTrialExpired');
+ }
+ else if (expDateTime > new Date(1970, 1, 1).getTime()) {
+
+ regStatus += "
";
+ regStatus += Globalize.translate('MessageTrialWillExpireIn').replace('{0}', Math.round(expDateTime - nowTime) / (86400000));
+ }
+ }
+
+ regStatus += "
";
+ $('#regStatus', page).html(regStatus);
+
+ if (pluginSecurityInfo.IsMBSupporter) {
+ $('#regInfo', page).html(pkg.regInfo || "");
+
+ $('.premiumDescription', page).hide();
+ $('.supporterDescription', page).hide();
+
+ if (pkg.price > 0) {
+
+ $('.premiumHasPrice', page).show();
+ $('#featureId', page).val(pkg.featureId);
+ $('#featureName', page).val(pkg.name);
+ $('#amount', page).val(pkg.price);
+
+ $('#regPrice', page).html("
" + Globalize.translate('ValuePriceUSD').replace('{0}', "$" + pkg.price.toFixed(2)) + "
");
+
+ var url = "http://mb3admin.com/admin/service/user/getPayPalEmail?id=" + pkg.owner;
+
+ $.getJSON(url).done(function (dev) {
+ if (dev.payPalEmail) {
+ $('#payPalEmail', page).val(dev.payPalEmail);
+
+ } else {
+ $('#ppButton', page).hide();
+ }
+ });
+ } else {
+ // Supporter-only feature
+ $('.premiumHasPrice', page).hide();
+ }
+ } else {
+
+ if (pkg.price) {
+ $('.premiumDescription', page).show();
+ $('.supporterDescription', page).hide();
+ $('#regInfo', page).html("");
+
+ } else {
+ $('.premiumDescription', page).hide();
+ $('.supporterDescription', page).show();
+ $('#regInfo', page).html("");
+ }
+
+ $('#ppButton', page).hide();
+ }
+
+ } else {
+ $('.premiumPackage', page).hide();
+ }
+ },
+
+ addRecurringFields: function(page, period) {
+
+ var formSelector = '.supporterForm';
+
+ // Add recurring fields to form
+ $("
")
+ .attr('value', $('#donateAmt', page).val())
+ .appendTo(formSelector, page);
+
+ $("
")
+ .appendTo(formSelector, page);
+
+ $("
")
+ .appendTo(formSelector, page);
+
+ $("
")
+ .appendTo(formSelector, page);
+
+ $("
")
+ .appendTo(formSelector, page);
+
+ //change command for subscriptions
+ $('#ppCmd', page).val('_xclick-subscriptions');
+
+ $(formSelector, page).trigger('create');
+ }
+
+};
\ No newline at end of file
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index a10a5db76e..0aaa596d77 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1375,7 +1375,7 @@ var Dashboard = {
// The native app can handle a little bit more than safari
if (Dashboard.isRunningInCordova()) {
- quality -= 15;
+ quality -= 10;
if (isBackdrop) {
quality -= 20;
@@ -1505,6 +1505,10 @@ var AppInfo = {};
AppInfo.enableDetailPageChapters = true;
AppInfo.enableDetailsMenuImages = true;
AppInfo.enableHeaderImages = true;
+ AppInfo.enableMovieHomeSuggestions = true;
+
+
+ AppInfo.enableAppStorePolicy = isCordova;
if ($.browser.safari) {
@@ -1519,6 +1523,7 @@ var AppInfo = {};
AppInfo.enableDetailPageChapters = false;
AppInfo.enableDetailsMenuImages = false;
AppInfo.enableHeaderImages = false;
+ AppInfo.enableMovieHomeSuggestions = false;
}
}
else {
@@ -1534,7 +1539,6 @@ var AppInfo = {};
AppInfo.enableLatestChannelItems = true;
AppInfo.enableStudioTabs = true;
AppInfo.enablePeopleTabs = true;
- AppInfo.enableHomeFavoritesTab = true;
AppInfo.enableTvEpisodesTab = true;
AppInfo.enableMusicArtistsTab = true;
AppInfo.enableHomeLatestTab = true;
@@ -1550,6 +1554,8 @@ var AppInfo = {};
function initializeApiClient(apiClient) {
+ apiClient.enableAppStorePolicy = AppInfo.enableAppStorePolicy;
+
$(apiClient).off('.dashboard')
.on("websocketmessage.dashboard", Dashboard.onWebSocketMessageReceived)
.on('requestfail.dashboard', Dashboard.onRequestFail)
@@ -1629,6 +1635,10 @@ var AppInfo = {};
function onReady() {
+ if (AppInfo.isTouchPreferred) {
+ $(document.body).addClass('touch');
+ }
+
if ($.browser.safari && $.browser.mobile) {
initFastClick();
}
@@ -1649,10 +1659,6 @@ var AppInfo = {};
$(document.body).addClass('peopleTabDisabled');
}
- if (!AppInfo.enableHomeFavoritesTab) {
- $(document.body).addClass('homeFavoritesTabDisabled');
- }
-
if (!AppInfo.enableTvEpisodesTab) {
$(document.body).addClass('tvEpisodesTabDisabled');
}
@@ -1863,7 +1869,7 @@ $(document).on('pagecreate', ".page", function () {
var require = this.getAttribute('data-require');
if (require) {
- requirejs([require], function () {
+ requirejs(require.split(','), function () {
$(page).trigger('pageinitdepends');
});
@@ -1880,7 +1886,7 @@ $(document).on('pagecreate', ".page", function () {
var require = this.getAttribute('data-require');
if (require) {
- requirejs([require], function () {
+ requirejs(require.split(','), function () {
$(page).trigger('pageshown');
});
diff --git a/dashboard-ui/scripts/supporterpage.js b/dashboard-ui/scripts/supporterpage.js
index 74e51257a6..a6f3075b1b 100644
--- a/dashboard-ui/scripts/supporterpage.js
+++ b/dashboard-ui/scripts/supporterpage.js
@@ -1,29 +1,7 @@
(function () {
function addRecurringFields(period, page) {
-
- // Add recurring fields to form
- $("
")
- .attr('value', $('#donateAmt', page).val())
- .appendTo("#payPalSupporterForm", page);
-
- $("
")
- .appendTo("#payPalSupporterForm", page);
-
- $("
")
- .appendTo("#payPalSupporterForm", page);
-
- $("
")
- .appendTo("#payPalSupporterForm", page);
-
- $("
")
- .appendTo("#payPalSupporterForm", page);
-
- //change command for subscriptions
- $('#ppCmd', page).val('_xclick-subscriptions');
-
- $('#payPalSupporterForm', page).trigger('create');
- console.log($('#payPalSupporterForm', page).html());
+ RegistrationServices.addRecurringFields(page, period);
}
function removeRecurringFields(page) {
@@ -187,7 +165,7 @@
$('.dailyAmount', page).html('$' + dailyAmount);
$('.yearlyAmount', page).html('$' + yearlyAmount);
- $('#paypalReturnUrl', page).val(ApiClient.getUrl("supporterkey.html"));
+ $('#returnUrl', page).val(ApiClient.getUrl("supporterkey.html"));
$('.radioDonationType', page).trigger('change');
diff --git a/dashboard-ui/supporter.html b/dashboard-ui/supporter.html
index 0a0aacce8b..db5f749aed 100644
--- a/dashboard-ui/supporter.html
+++ b/dashboard-ui/supporter.html
@@ -27,7 +27,7 @@