mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
improve user view images
This commit is contained in:
parent
132a02a48d
commit
6b72ea474c
19 changed files with 325 additions and 224 deletions
|
@ -40,20 +40,18 @@
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
<form id="textEntryForm">
|
<form id="textEntryForm">
|
||||||
|
<div id="fldCollectionType" style="margin:.5em 0 1.5em;">
|
||||||
|
<label for="selectCollectionType">${LabelType}</label>
|
||||||
|
<select id="selectCollectionType" name="selectCollectionType" data-mini="true"></select>
|
||||||
|
<div class="collectionTypeFieldDescription fieldDescription">
|
||||||
|
${MediaFolderHelpPluginRequired}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<label id="lblValue" for="txtValue"></label>
|
<label id="lblValue" for="txtValue"></label>
|
||||||
<input type="text" name="txtValue" id="txtValue" required="required" />
|
<input type="text" id="txtValue" required="required" />
|
||||||
</p>
|
</p>
|
||||||
|
<br/>
|
||||||
<p id="fldCollectionType">
|
|
||||||
<label for="selectCollectionType">${LabelFolderType}</label>
|
|
||||||
<select id="selectCollectionType" name="selectCollectionType"></select>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="collectionTypeFieldDescription">
|
|
||||||
${MediaFolderHelpPluginRequired}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<button type="submit" data-theme="b" data-icon="check">
|
<button type="submit" data-theme="b" data-icon="check">
|
||||||
${ButtonOk}
|
${ButtonOk}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
return Math.floor(Math.random() * (max - min) + min);
|
return Math.floor(Math.random() * (max - min) + min);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBackdropItemIds(userId, types, parentId) {
|
function getBackdropItemIds(apiClient, userId, types, parentId) {
|
||||||
|
|
||||||
var key = 'backdrops2_' + userId + (types || '') + (parentId || '');
|
var key = 'backdrops2_' + userId + (types || '') + (parentId || '');
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
ParentId: parentId
|
ParentId: parentId
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
apiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||||
|
|
||||||
var images = result.Items.map(function (i) {
|
var images = result.Items.map(function (i) {
|
||||||
return {
|
return {
|
||||||
|
@ -61,7 +61,13 @@
|
||||||
|
|
||||||
function showBackdrop(type) {
|
function showBackdrop(type) {
|
||||||
|
|
||||||
getBackdropItemIds(Dashboard.getCurrentUserId(),
|
var apiClient = ConnectionManager.currentApiClient();
|
||||||
|
|
||||||
|
if (!apiClient) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
getBackdropItemIds(apiClient, Dashboard.getCurrentUserId(),
|
||||||
type,
|
type,
|
||||||
LibraryMenu.getTopParentId()).done(function (images) {
|
LibraryMenu.getTopParentId()).done(function (images) {
|
||||||
|
|
||||||
|
@ -72,7 +78,7 @@
|
||||||
|
|
||||||
var screenWidth = $(window).width();
|
var screenWidth = $(window).width();
|
||||||
|
|
||||||
var imgUrl = ApiClient.getScaledImageUrl(item.id, {
|
var imgUrl = apiClient.getScaledImageUrl(item.id, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
tag: item.tag,
|
tag: item.tag,
|
||||||
maxWidth: screenWidth,
|
maxWidth: screenWidth,
|
||||||
|
|
|
@ -2,28 +2,7 @@
|
||||||
|
|
||||||
function onLoggedIn() {
|
function onLoggedIn() {
|
||||||
|
|
||||||
ConnectionManager.connect().done(function (result) {
|
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
|
||||||
|
|
||||||
switch (result.State) {
|
|
||||||
|
|
||||||
case MediaBrowser.ConnectionState.Unavilable:
|
|
||||||
// Login succeeded so this should never happen
|
|
||||||
break;
|
|
||||||
case MediaBrowser.ConnectionState.ServerSelection:
|
|
||||||
window.location = 'selectserver.html';
|
window.location = 'selectserver.html';
|
||||||
break;
|
|
||||||
case MediaBrowser.ConnectionState.ServerSignIn:
|
|
||||||
// This should never happen in connect mode
|
|
||||||
break;
|
|
||||||
case MediaBrowser.ConnectionState.SignedIn:
|
|
||||||
window.location = 'selectserver.html';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function login(page, username, password) {
|
function login(page, username, password) {
|
||||||
|
|
|
@ -1195,7 +1195,9 @@
|
||||||
cssClass += ' ' + LibraryBrowser.getUserDataCssClass(item.UserData.Key);
|
cssClass += ' ' + LibraryBrowser.getUserDataCssClass(item.UserData.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.showChildCountIndicator && item.ChildCount) {
|
// The click through hasn't been working on chrome android
|
||||||
|
// The > 1 can be removed once this is resolved
|
||||||
|
if (options.showChildCountIndicator && item.ChildCount > 1) {
|
||||||
cssClass += ' groupedCard';
|
cssClass += ' groupedCard';
|
||||||
|
|
||||||
if (item.Type == 'Series') {
|
if (item.Type == 'Series') {
|
||||||
|
@ -1467,6 +1469,10 @@
|
||||||
|
|
||||||
getPosterViewDisplayName: function (item, displayAsSpecial, includeParentInfo) {
|
getPosterViewDisplayName: function (item, displayAsSpecial, includeParentInfo) {
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
throw new Error("null item passed into getPosterViewDisplayName");
|
||||||
|
}
|
||||||
|
|
||||||
var name = item.EpisodeTitle || item.Name;
|
var name = item.EpisodeTitle || item.Name;
|
||||||
|
|
||||||
if (item.Type == "TvChannel") {
|
if (item.Type == "TvChannel") {
|
||||||
|
|
|
@ -1,5 +1,22 @@
|
||||||
var MediaLibraryPage = {
|
var MediaLibraryPage = {
|
||||||
|
|
||||||
|
onPageInit: function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
$('#selectCollectionType', page).on('change', function() {
|
||||||
|
|
||||||
|
var index = this.selectedIndex;
|
||||||
|
if (index != -1) {
|
||||||
|
|
||||||
|
var name = this.options[index].innerHTML
|
||||||
|
.replace('*', '')
|
||||||
|
.replace('&', '&');
|
||||||
|
|
||||||
|
$('#txtValue', page).val(name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
onPageShow: function () {
|
onPageShow: function () {
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
@ -112,7 +129,7 @@
|
||||||
|
|
||||||
$('.collectionTypeFieldDescription').show();
|
$('.collectionTypeFieldDescription').show();
|
||||||
|
|
||||||
MediaLibraryPage.getTextValue(Globalize.translate('HeaderAddMediaFolder'), Globalize.translate('HeaderAddMediaFolderHelp'), "", true, function (name, type) {
|
MediaLibraryPage.getTextValue(Globalize.translate('HeaderAddMediaFolder'), Globalize.translate('LabelName'), "", true, function (name, type) {
|
||||||
|
|
||||||
MediaLibraryPage.lastVirtualFolderName = name;
|
MediaLibraryPage.lastVirtualFolderName = name;
|
||||||
|
|
||||||
|
@ -170,9 +187,7 @@
|
||||||
|
|
||||||
$('#selectCollectionType', popup).html(MediaLibraryPage.getCollectionTypeOptionsHtml()).val('').selectmenu('refresh');
|
$('#selectCollectionType', popup).html(MediaLibraryPage.getCollectionTypeOptionsHtml()).val('').selectmenu('refresh');
|
||||||
|
|
||||||
popup.on("popupafteropen", function () {
|
popup.on("popupafterclose", function () {
|
||||||
$('#textEntryForm input:first', this).focus();
|
|
||||||
}).on("popupafterclose", function () {
|
|
||||||
$(this).off("popupafterclose").off("click");
|
$(this).off("popupafterclose").off("click");
|
||||||
$('#textEntryForm', this).off("submit");
|
$('#textEntryForm', this).off("submit");
|
||||||
}).popup("open");
|
}).popup("open");
|
||||||
|
@ -322,7 +337,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$(document).on('pageshow', ".mediaLibraryPage", MediaLibraryPage.onPageShow);
|
$(document).on('pageinit', ".mediaLibraryPage", MediaLibraryPage.onPageInit).on('pageshow', ".mediaLibraryPage", MediaLibraryPage.onPageShow);
|
||||||
|
|
||||||
var WizardLibraryPage = {
|
var WizardLibraryPage = {
|
||||||
|
|
||||||
|
|
|
@ -15,17 +15,23 @@
|
||||||
|
|
||||||
Dashboard.setPageTitle(user.Name);
|
Dashboard.setPageTitle(user.Name);
|
||||||
|
|
||||||
|
var imageUrl;
|
||||||
|
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
|
|
||||||
var imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||||
height: 200,
|
height: 200,
|
||||||
tag: user.PrimaryImageTag,
|
tag: user.PrimaryImageTag,
|
||||||
type: "Primary"
|
type: "Primary"
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#fldImage', page).show().html('').html("<img width='140px' src='" + imageUrl + "' />");
|
} else {
|
||||||
|
imageUrl = "css/images/logindefault.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$('#fldImage', page).show().html('').html("<img width='140px' src='" + imageUrl + "' />");
|
||||||
|
|
||||||
|
|
||||||
if (user.ConnectLinkType == 'Guest') {
|
if (user.ConnectLinkType == 'Guest') {
|
||||||
|
|
||||||
$('.newImageForm', page).hide();
|
$('.newImageForm', page).hide();
|
||||||
|
@ -40,10 +46,9 @@
|
||||||
$('.connectMessage', page).hide();
|
$('.connectMessage', page).hide();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$('.newImageSection', page).show();
|
$('.newImageForm', page).show();
|
||||||
$('#fldImage', page).hide().html('');
|
|
||||||
$('#btnDeleteImage', page).hide();
|
$('#btnDeleteImage', page).hide();
|
||||||
$('#headerUploadNewImage', page).hide();
|
$('#headerUploadNewImage', page).show();
|
||||||
$('.connectMessage', page).hide();
|
$('.connectMessage', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,11 @@ var Dashboard = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onApiClientServerAddressChanged: function () {
|
||||||
|
|
||||||
|
Dashboard.serverAddress(ApiClient.serverAddress());
|
||||||
|
},
|
||||||
|
|
||||||
getCurrentUser: function () {
|
getCurrentUser: function () {
|
||||||
|
|
||||||
if (!Dashboard.getUserPromise) {
|
if (!Dashboard.getUserPromise) {
|
||||||
|
@ -1236,7 +1241,8 @@ var Dashboard = {
|
||||||
|
|
||||||
$(apiClient).off('.dashboard')
|
$(apiClient).off('.dashboard')
|
||||||
.on("websocketmessage.dashboard", Dashboard.onWebSocketMessageReceived)
|
.on("websocketmessage.dashboard", Dashboard.onWebSocketMessageReceived)
|
||||||
.on('requestfail.dashboard', Dashboard.onRequestFail);
|
.on('requestfail.dashboard', Dashboard.onRequestFail)
|
||||||
|
.on('serveraddresschanged.dashboard', Dashboard.onApiClientServerAddressChanged);
|
||||||
|
|
||||||
// TODO: Improve with http://webpjs.appspot.com/
|
// TODO: Improve with http://webpjs.appspot.com/
|
||||||
apiClient.supportsWebP($.browser.chrome);
|
apiClient.supportsWebP($.browser.chrome);
|
||||||
|
|
|
@ -2,47 +2,21 @@
|
||||||
|
|
||||||
var currentUser;
|
var currentUser;
|
||||||
|
|
||||||
function loadUser(page, user, loggedInUser) {
|
function loadUser(page, user) {
|
||||||
|
|
||||||
currentUser = user;
|
currentUser = user;
|
||||||
|
|
||||||
if (!loggedInUser.Configuration.IsAdministrator) {
|
|
||||||
|
|
||||||
$('#fldIsAdmin', page).hide();
|
|
||||||
$('#featureAccessFields', page).hide();
|
|
||||||
$('#accessControlDiv', page).hide();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$('#accessControlDiv', page).show();
|
|
||||||
$('#fldIsAdmin', page).show();
|
|
||||||
$('#featureAccessFields', page).show();
|
|
||||||
$('.lnkEditUserPreferencesContainer', page).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.Id && loggedInUser.Configuration.IsAdministrator && user.ConnectLinkType != 'Guest') {
|
|
||||||
$('#fldConnectInfo', page).show();
|
|
||||||
} else {
|
|
||||||
$('#fldConnectInfo', page).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.ConnectLinkType == 'Guest') {
|
if (user.ConnectLinkType == 'Guest') {
|
||||||
|
$('#fldConnectInfo', page).hide();
|
||||||
$('#txtUserName', page).prop("disabled", "disabled");
|
$('#txtUserName', page).prop("disabled", "disabled");
|
||||||
} else {
|
} else {
|
||||||
$('#txtUserName', page).prop("disabled", "").removeAttr('disabled');
|
$('#txtUserName', page).prop("disabled", "").removeAttr('disabled');
|
||||||
|
$('#fldConnectInfo', page).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loggedInUser.Configuration.IsAdministrator || !user.Id) {
|
|
||||||
|
|
||||||
$('.lnkEditUserPreferencesContainer', page).hide();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$('.lnkEditUserPreferencesContainer', page).show();
|
|
||||||
$('.lnkEditUserPreferences', page).attr('href', 'mypreferencesdisplay.html?userId=' + user.Id);
|
$('.lnkEditUserPreferences', page).attr('href', 'mypreferencesdisplay.html?userId=' + user.Id);
|
||||||
}
|
|
||||||
|
|
||||||
Dashboard.setPageTitle(user.Name || Globalize.translate('AddUser'));
|
Dashboard.setPageTitle(user.Name);
|
||||||
|
|
||||||
$('#txtUserName', page).val(user.Name);
|
$('#txtUserName', page).val(user.Name);
|
||||||
$('#txtConnectUserName', page).val(currentUser.ConnectUserName);
|
$('#txtConnectUserName', page).val(currentUser.ConnectUserName);
|
||||||
|
@ -68,10 +42,6 @@
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
|
||||||
|
|
||||||
if (userId) {
|
|
||||||
|
|
||||||
var currentConnectUsername = currentUser.ConnectUserName || '';
|
var currentConnectUsername = currentUser.ConnectUserName || '';
|
||||||
var enteredConnectUsername = $('#txtConnectUserName', page).val();
|
var enteredConnectUsername = $('#txtConnectUserName', page).val();
|
||||||
|
|
||||||
|
@ -84,9 +54,6 @@
|
||||||
loadData(page);
|
loadData(page);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Dashboard.navigate("userprofiles.html");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveUser(user, page) {
|
function saveUser(user, page) {
|
||||||
|
@ -106,18 +73,9 @@
|
||||||
user.Configuration.EnableContentDeletion = $('#chkEnableContentDeletion', page).checked();
|
user.Configuration.EnableContentDeletion = $('#chkEnableContentDeletion', page).checked();
|
||||||
user.Configuration.EnableUserPreferenceAccess = !$('#chkDisableUserPreferences', page).checked();
|
user.Configuration.EnableUserPreferenceAccess = !$('#chkDisableUserPreferences', page).checked();
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
|
||||||
|
|
||||||
if (userId) {
|
|
||||||
ApiClient.updateUser(user).done(function () {
|
ApiClient.updateUser(user).done(function () {
|
||||||
onSaveComplete(page, user);
|
onSaveComplete(page, user);
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
ApiClient.createUser(user).done(function (newUser) {
|
|
||||||
Dashboard.navigate("useredit.html?userId=" + newUser.Id);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function editUserPage() {
|
function editUserPage() {
|
||||||
|
@ -143,36 +101,16 @@
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
var userId = getParameterByName("userId");
|
||||||
|
|
||||||
if (userId) {
|
|
||||||
|
|
||||||
return ApiClient.getUser(userId);
|
return ApiClient.getUser(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
|
||||||
|
|
||||||
deferred.resolveWith(null, [{
|
|
||||||
Configuration: {
|
|
||||||
IsAdministrator: false,
|
|
||||||
EnableLiveTvManagement: true,
|
|
||||||
EnableLiveTvAccess: true,
|
|
||||||
EnableRemoteControlOfOtherUsers: true,
|
|
||||||
EnableMediaPlayback: true
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return deferred.promise();
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadData(page) {
|
function loadData(page) {
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
var promise1 = getUser();
|
getUser().done(function (user) {
|
||||||
var promise2 = Dashboard.getCurrentUser();
|
|
||||||
|
|
||||||
$.when(promise1, promise2).done(function (response1, response2) {
|
loadUser(page, user);
|
||||||
|
|
||||||
loadUser(page, response1[0] || response1, response2[0]);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -183,27 +121,6 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
var userId = getParameterByName("userId");
|
|
||||||
|
|
||||||
if (userId) {
|
|
||||||
$('#userProfileNavigation', page).show();
|
|
||||||
} else {
|
|
||||||
$('#userProfileNavigation', page).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
Dashboard.getCurrentUser().done(function (loggedInUser) {
|
|
||||||
|
|
||||||
if (loggedInUser.Configuration.IsAdministrator) {
|
|
||||||
$('#lnkParentalControl', page).show();
|
|
||||||
} else {
|
|
||||||
$('#lnkParentalControl', page).hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}).on('pageshow', "#editUserPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
loadData(page);
|
loadData(page);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
54
dashboard-ui/scripts/usernew.js
Normal file
54
dashboard-ui/scripts/usernew.js
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
(function ($, window, document) {
|
||||||
|
|
||||||
|
function loadUser(page, user) {
|
||||||
|
|
||||||
|
$('#txtUserName', page).val(user.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveUser(user, page) {
|
||||||
|
|
||||||
|
user.Name = $('#txtUserName', page).val();
|
||||||
|
|
||||||
|
ApiClient.createUser(user).done(function (newUser) {
|
||||||
|
Dashboard.navigate("useredit.html?userId=" + newUser.Id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function newUserPage() {
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
self.onSubmit = function () {
|
||||||
|
|
||||||
|
var page = $(this).parents('.page');
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
saveUser(getUser(), page);
|
||||||
|
|
||||||
|
// Disable default form submission
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUser() {
|
||||||
|
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadData(page) {
|
||||||
|
|
||||||
|
loadUser(page, getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
window.NewUserPage = new newUserPage();
|
||||||
|
|
||||||
|
$(document).on('pageshow', "#newUserPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
loadData(page);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery, window, document);
|
33
dashboard-ui/scripts/userpassword.js
Normal file
33
dashboard-ui/scripts/userpassword.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
(function ($, window, document) {
|
||||||
|
|
||||||
|
function loadUser(page, user) {
|
||||||
|
|
||||||
|
Dashboard.setPageTitle(user.Name);
|
||||||
|
|
||||||
|
$('.lnkEditUserPreferences', page).attr('href', 'myprofile.html?userId=' + user.Id);
|
||||||
|
|
||||||
|
Dashboard.hideLoadingMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadData(page) {
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var userId = getParameterByName("userId");
|
||||||
|
|
||||||
|
ApiClient.getUser(userId).done(function (user) {
|
||||||
|
|
||||||
|
loadUser(page, user);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).on('pagebeforeshow', "#userPasswordPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
loadData(page);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery, window, document);
|
|
@ -8,7 +8,8 @@
|
||||||
Unavilable: 0,
|
Unavilable: 0,
|
||||||
ServerSelection: 1,
|
ServerSelection: 1,
|
||||||
ServerSignIn: 2,
|
ServerSignIn: 2,
|
||||||
SignedIn: 3
|
SignedIn: 3,
|
||||||
|
ConnectSignIn: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
globalScope.MediaBrowser.ConnectionMode = {
|
globalScope.MediaBrowser.ConnectionMode = {
|
||||||
|
@ -519,60 +520,41 @@
|
||||||
|
|
||||||
if (servers.length == 1) {
|
if (servers.length == 1) {
|
||||||
|
|
||||||
if (!servers[0].DateLastAccessed && !self.connectUserId()) {
|
|
||||||
|
|
||||||
deferred.resolveWith(null, [
|
|
||||||
{
|
|
||||||
Servers: servers,
|
|
||||||
State: MediaBrowser.ConnectionState.ServerSelection,
|
|
||||||
ConnectUser: self.connectUser()
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
self.connectToServer(servers[0]).done(function (result) {
|
self.connectToServer(servers[0]).done(function (result) {
|
||||||
|
|
||||||
if (result.State == MediaBrowser.ConnectionState.Unavailable) {
|
if (result.State == MediaBrowser.ConnectionState.Unavailable) {
|
||||||
result.State = MediaBrowser.ConnectionState.ServerSelection;
|
|
||||||
|
result.State = result.ConnectUser == null ?
|
||||||
|
MediaBrowser.ConnectionState.ConnectSignIn :
|
||||||
|
MediaBrowser.ConnectionState.ServerSelection;
|
||||||
}
|
}
|
||||||
|
|
||||||
deferred.resolveWith(null, [result]);
|
deferred.resolveWith(null, [result]);
|
||||||
|
|
||||||
}).fail(function () {
|
|
||||||
|
|
||||||
deferred.resolveWith(null, [
|
|
||||||
{
|
|
||||||
Servers: servers,
|
|
||||||
State: MediaBrowser.ConnectionState.ServerSelection,
|
|
||||||
ConnectUser: self.connectUser()
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Find the first server with a saved access token
|
// Find the first server with a saved access token
|
||||||
var currentServer = servers.filter(function (s) {
|
var currentServer = servers.filter(function (s) {
|
||||||
return s.AccessToken;
|
return s.AccessToken || (s.ExchangeToken && self.connectUser());
|
||||||
})[0];
|
})[0];
|
||||||
|
|
||||||
if (currentServer) {
|
if (currentServer) {
|
||||||
self.connectToServer(currentServer).done(function (result) {
|
self.connectToServer(currentServer).done(function (result) {
|
||||||
|
|
||||||
|
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
|
||||||
|
|
||||||
deferred.resolveWith(null, [result]);
|
deferred.resolveWith(null, [result]);
|
||||||
|
|
||||||
}).fail(function () {
|
} else {
|
||||||
|
|
||||||
deferred.resolveWith(null, [
|
deferred.resolveWith(null, [
|
||||||
{
|
{
|
||||||
Servers: servers,
|
Servers: servers,
|
||||||
State: MediaBrowser.ConnectionState.ServerSelection,
|
State: (!servers.length && !self.connectUser()) ? MediaBrowser.ConnectionState.ConnectSignIn : MediaBrowser.ConnectionState.ServerSelection,
|
||||||
ConnectUser: self.connectUser()
|
ConnectUser: self.connectUser()
|
||||||
|
}]);
|
||||||
}
|
}
|
||||||
]);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -580,7 +562,7 @@
|
||||||
deferred.resolveWith(null, [
|
deferred.resolveWith(null, [
|
||||||
{
|
{
|
||||||
Servers: servers,
|
Servers: servers,
|
||||||
State: (!servers.length && !self.connectUser()) ? MediaBrowser.ConnectionState.Unavailable : MediaBrowser.ConnectionState.ServerSelection,
|
State: (!servers.length && !self.connectUser()) ? MediaBrowser.ConnectionState.ConnectSignIn : MediaBrowser.ConnectionState.ServerSelection,
|
||||||
ConnectUser: self.connectUser()
|
ConnectUser: self.connectUser()
|
||||||
}]);
|
}]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,18 @@
|
||||||
/**
|
/**
|
||||||
* Gets the server address.
|
* Gets the server address.
|
||||||
*/
|
*/
|
||||||
self.serverAddress = function () {
|
self.serverAddress = function (val) {
|
||||||
|
|
||||||
|
if (val != null) {
|
||||||
|
|
||||||
|
var changed = val != serverAddress;
|
||||||
|
|
||||||
|
serverAddress = val;
|
||||||
|
|
||||||
|
if (changed) {
|
||||||
|
$(this).trigger('serveraddresschanged');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return serverAddress;
|
return serverAddress;
|
||||||
};
|
};
|
||||||
|
@ -141,6 +152,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!self.enableAutomaticNetwork || !self.serverInfo() || self.connectionMode == null) {
|
if (!self.enableAutomaticNetwork || !self.serverInfo() || self.connectionMode == null) {
|
||||||
|
console.log('Requesting url without automatic networking: ' + request.url);
|
||||||
return $.ajax(request).fail(onRequestFail);
|
return $.ajax(request).fail(onRequestFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,6 +184,8 @@
|
||||||
self.serverInfo().LocalAddress :
|
self.serverInfo().LocalAddress :
|
||||||
self.serverInfo().RemoteAddress;
|
self.serverInfo().RemoteAddress;
|
||||||
|
|
||||||
|
console.log("Attempting reconnection to " + url);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -182,6 +196,8 @@
|
||||||
|
|
||||||
}).done(function () {
|
}).done(function () {
|
||||||
|
|
||||||
|
console.log("Reconnect succeeeded to " + url);
|
||||||
|
|
||||||
self.connectionMode = connectionMode;
|
self.connectionMode = connectionMode;
|
||||||
self.serverAddress(url);
|
self.serverAddress(url);
|
||||||
|
|
||||||
|
@ -189,6 +205,8 @@
|
||||||
|
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
|
|
||||||
|
console.log("Reconnect attempt failed to " + url);
|
||||||
|
|
||||||
if (currentRetryCount <= 6) {
|
if (currentRetryCount <= 6) {
|
||||||
|
|
||||||
var newConnectionMode = switchConnectionMode(connectionMode);
|
var newConnectionMode = switchConnectionMode(connectionMode);
|
||||||
|
@ -234,20 +252,31 @@
|
||||||
request.url = replaceServerAddress(request.url, baseUrl);
|
request.url = replaceServerAddress(request.url, baseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("Requesting " + request.url);
|
||||||
|
|
||||||
|
request.timeout = 3000;
|
||||||
|
|
||||||
$.ajax(request).done(function (response) {
|
$.ajax(request).done(function (response) {
|
||||||
|
|
||||||
deferred.resolveWith(null, [response]);
|
deferred.resolve(response, 0);
|
||||||
|
|
||||||
}).fail(function (e, textStatus) {
|
}).fail(function (e, textStatus) {
|
||||||
|
|
||||||
|
console.log("Request failed with textStatus " + textStatus + " to " + request.url);
|
||||||
|
|
||||||
|
var statusCode = parseInt(e.status || '0');
|
||||||
|
var isUserErrorCode = statusCode >= 400 && statusCode < 500;
|
||||||
|
|
||||||
// http://api.jquery.com/jQuery.ajax/
|
// http://api.jquery.com/jQuery.ajax/
|
||||||
if (enableReconnection && textStatus == "timeout") {
|
if (enableReconnection && !isUserErrorCode) {
|
||||||
tryReconnect().done(function () {
|
tryReconnect().done(function () {
|
||||||
|
|
||||||
|
console.log("Reconnect succeesed");
|
||||||
self.ajaxWithFailover(request, deferred, false, true);
|
self.ajaxWithFailover(request, deferred, false, true);
|
||||||
|
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
|
|
||||||
|
console.log("Reconnect failed");
|
||||||
onRetryRequestFail(request);
|
onRetryRequestFail(request);
|
||||||
deferred.reject();
|
deferred.reject();
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,11 @@
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" id="userProfileNavigation" style="display: none;" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" id="userProfileNavigation" data-mini="true">
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabProfile}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabProfile}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);" id="lnkParentalControl" style="display: none;">${TabLibraryAccess}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);">${TabLibraryAccess}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);">${TabParentalControl}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);">${TabParentalControl}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userpassword.html', true);">${TabPassword}</a>
|
||||||
</div>
|
</div>
|
||||||
<p class="lnkEditUserPreferencesContainer">
|
<p class="lnkEditUserPreferencesContainer">
|
||||||
<a class="lnkEditUserPreferences" href="#" target="_blank">${ButtonEditOtherUserPreferences}</a>
|
<a class="lnkEditUserPreferences" href="#" target="_blank">${ButtonEditOtherUserPreferences}</a>
|
||||||
|
@ -33,7 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
</li>
|
</li>
|
||||||
<li id="fldIsAdmin" style="display: none;">
|
<li>
|
||||||
<input type="checkbox" id="chkIsAdmin" name="chkIsAdmin" />
|
<input type="checkbox" id="chkIsAdmin" name="chkIsAdmin" />
|
||||||
<label for="chkIsAdmin">${OptionAllowUserToManageServer}</label>
|
<label for="chkIsAdmin">${OptionAllowUserToManageServer}</label>
|
||||||
</li>
|
</li>
|
||||||
|
@ -52,7 +53,7 @@
|
||||||
<label for="chkEnableRemoteControlOtherUsers">${OptionAllowRemoteControlOthers}</label>
|
<label for="chkEnableRemoteControlOtherUsers">${OptionAllowRemoteControlOthers}</label>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<br />
|
<br />
|
||||||
<div id="accessControlDiv" style="display: none" data-role="collapsible">
|
<div id="accessControlDiv" data-role="collapsible">
|
||||||
<h2>${HeaderAdvancedControl}</h2>
|
<h2>${HeaderAdvancedControl}</h2>
|
||||||
<div id="fldIsEnabled" style="margin: 1em 0 2em;">
|
<div id="fldIsEnabled" style="margin: 1em 0 2em;">
|
||||||
<input type="checkbox" id="chkDisabled" name="chkDisabled" data-mini="true" />
|
<input type="checkbox" id="chkDisabled" name="chkDisabled" data-mini="true" />
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('useredit.html', true);">${TabProfile}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('useredit.html', true);">${TabProfile}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);" class="ui-btn-active">${TabLibraryAccess}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);" class="ui-btn-active">${TabLibraryAccess}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);">${TabParentalControl}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);">${TabParentalControl}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userpassword.html', true);">${TabPassword}</a>
|
||||||
</div>
|
</div>
|
||||||
<form class="userLibraryAccessForm">
|
<form class="userLibraryAccessForm">
|
||||||
|
|
||||||
|
|
38
dashboard-ui/usernew.html
Normal file
38
dashboard-ui/usernew.html
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${TitleNewUser}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="newUserPage" data-role="page" class="page type-interior userProfilesPage">
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
<div class="content-primary">
|
||||||
|
|
||||||
|
<form id="newUserProfileForm">
|
||||||
|
<ul data-role="listview" class="ulForm">
|
||||||
|
<li id="fldUserName">
|
||||||
|
<label for="txtUserName">${LabelName}</label>
|
||||||
|
<input id="txtUserName" required="required" type="text" />
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<br />
|
||||||
|
<ul data-role="listview" class="ulForm">
|
||||||
|
<li>
|
||||||
|
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
|
||||||
|
${ButtonSave}
|
||||||
|
</button>
|
||||||
|
<button type="button" onclick="history.back();" data-icon="delete" data-mini="true">
|
||||||
|
${ButtonCancel}
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#newUserProfileForm').on('submit', NewUserPage.onSubmit);
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -12,6 +12,7 @@
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('useredit.html', true);">${TabProfile}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('useredit.html', true);">${TabProfile}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);">${TabLibraryAccess}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);">${TabLibraryAccess}</a>
|
||||||
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);" class="ui-btn-active">${TabParentalControl}</a>
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);" class="ui-btn-active">${TabParentalControl}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userpassword.html', true);">${TabPassword}</a>
|
||||||
</div>
|
</div>
|
||||||
<form class="userParentalControlForm">
|
<form class="userParentalControlForm">
|
||||||
|
|
||||||
|
|
28
dashboard-ui/userpassword.html
Normal file
28
dashboard-ui/userpassword.html
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="userPasswordPage" data-role="page" class="page type-interior userProfilesPage">
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
<div class="content-primary">
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('useredit.html', true);">${TabProfile}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userlibraryaccess.html', true);">${TabLibraryAccess}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userparentalcontrol.html', true);">${TabParentalControl}</a>
|
||||||
|
<a href="#" data-role="button" onclick="Dashboard.navigate('userpassword.html', true);" class="ui-btn-active">${TabPassword}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="readOnlyContent">
|
||||||
|
<p>${HeaderDashboardUserPassword}</p>
|
||||||
|
<p>
|
||||||
|
<a data-role="button" data-icon="lock" class="lnkEditUserPreferences" href="#" target="_blank">${ButtonConfigurePassword}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="ui-bar-a" style="padding: 0 1em;">
|
<div class="ui-bar-a" style="padding: 0 1em;">
|
||||||
<h3 style="margin:.6em 0;font-size:16px;font-weight:500;">
|
<h3 style="margin:.6em 0;font-size:16px;font-weight:500;">
|
||||||
<span style="vertical-align:middle;">${HeaderUsers}</span>
|
<span style="vertical-align:middle;">${HeaderUsers}</span>
|
||||||
<a data-role="button" data-icon="plus" href="useredit.html" data-inline="true" data-mini="true" data-iconpos="notext" style="margin: 0 .5em; vertical-align:middle;">
|
<a data-role="button" data-icon="plus" href="usernew.html" data-inline="true" data-mini="true" data-iconpos="notext" style="margin: 0 .5em; vertical-align:middle;">
|
||||||
${ButtonAddUser}
|
${ButtonAddUser}
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -29,20 +29,22 @@
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
<form id="textEntryForm">
|
<form id="textEntryForm">
|
||||||
|
<div id="fldCollectionType" style="margin:.5em 0 1.5em;">
|
||||||
|
<label for="selectCollectionType">${LabelType}</label>
|
||||||
|
<select id="selectCollectionType" name="selectCollectionType" data-mini="true"></select>
|
||||||
|
<div class="collectionTypeFieldDescription fieldDescription">
|
||||||
|
${MediaFolderHelpPluginRequired}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<label id="lblValue" for="txtValue"></label>
|
<label id="lblValue" for="txtValue"></label>
|
||||||
<input type="text" name="txtValue" id="txtValue" required="required" />
|
<input type="text" id="txtValue" required="required" />
|
||||||
</p>
|
</p>
|
||||||
|
<br />
|
||||||
<p id="fldCollectionType">
|
|
||||||
<label for="selectCollectionType">${LabelFolderType}</label>
|
|
||||||
<select id="selectCollectionType" name="selectCollectionType"></select>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="collectionTypeFieldDescription">${MediaFolderHelpPluginRequired}</p>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<button type="submit" data-theme="b" data-icon="check">${ButtonOk}</button>
|
<button type="submit" data-theme="b" data-icon="check">
|
||||||
|
${ButtonOk}
|
||||||
|
</button>
|
||||||
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');">
|
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');">
|
||||||
${ButtonCancel}
|
${ButtonCancel}
|
||||||
</button>
|
</button>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue