mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
support in-app connect signup
This commit is contained in:
parent
5187a0d558
commit
496add35b9
8 changed files with 188 additions and 20 deletions
|
@ -44,9 +44,13 @@
|
|||
</div>
|
||||
|
||||
<div class="newUsers">
|
||||
<br />
|
||||
<h2 style="text-align: left;">${HeaderNewUsers}</h2>
|
||||
<a data-role="button" data-icon="action" href="http://emby.media/community/index.php?app=core&module=global§ion=register" target="_blank">${ButtonSignUp}</a>
|
||||
<a class="btn" href="connectlogin.html?mode=signup">
|
||||
<span>
|
||||
${ButtonSignUp}
|
||||
</span>
|
||||
<i class="fa fa-plus-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -64,7 +68,7 @@
|
|||
<label for="txtServerPort" style="text-align: left;">${LabelServerPort}</label>
|
||||
<input type="number" id="txtServerPort" step="1" min="0" />
|
||||
</div>
|
||||
<br /><br />
|
||||
<br />
|
||||
|
||||
<button class="btn btnActionAccent" data-role="none" type="submit">
|
||||
<span>
|
||||
|
@ -80,6 +84,42 @@
|
|||
</a>
|
||||
</form>
|
||||
|
||||
<form class="signupForm" style="text-align: center; margin: 0 auto;display:none;">
|
||||
|
||||
<h1 style="text-align: left;">${HeaderSignUp}</h1>
|
||||
<br />
|
||||
<div>
|
||||
<label for="txtSignupEmail" style="text-align: left;">${LabelEmail}</label>
|
||||
<input type="email" id="txtSignupEmail" required="required" />
|
||||
</div>
|
||||
<div>
|
||||
<label for="txtSignupUsername" style="text-align: left;">${LabelUsername}</label>
|
||||
<input type="text" id="txtSignupUsername" required="required" />
|
||||
</div>
|
||||
<div>
|
||||
<label for="txtSignupPassword" style="text-align: left;">${LabelPassword}</label>
|
||||
<input type="password" id="txtSignupPassword" required="required" autocomplete="off" />
|
||||
</div>
|
||||
<div>
|
||||
<label for="txtSignupPasswordConfirm" style="text-align: left;">${LabelPasswordConfirm}</label>
|
||||
<input type="password" id="txtSignupPasswordConfirm" required="required" autocomplete="off" />
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<button class="btn btnActionAccent" data-role="none" type="submit">
|
||||
<span>
|
||||
${ButtonSignUp}
|
||||
</span>
|
||||
<i class="fa fa-check"></i>
|
||||
</button>
|
||||
<a class="btn btnDarkAccent" href="#" data-rel="back">
|
||||
<span>
|
||||
${ButtonCancel}
|
||||
</span>
|
||||
<i class="fa fa-close"></i>
|
||||
</a>
|
||||
</form>
|
||||
|
||||
<div class="welcomeContainer readOnlyContent" style="text-align: center; margin: 0 auto;display:none;">
|
||||
|
||||
<div style="text-align: left;">
|
||||
|
|
|
@ -124,11 +124,22 @@
|
|||
}
|
||||
|
||||
.nowPlayingPageTitle {
|
||||
margin: 1em 0;
|
||||
margin: .5em 0;
|
||||
}
|
||||
|
||||
.nowPlayingInfoButtons {
|
||||
padding-top: .5em;
|
||||
}
|
||||
|
||||
@media all and (min-height: 600px) {
|
||||
|
||||
.nowPlayingPageTitle {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.nowPlayingInfoButtons {
|
||||
padding-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
@media (orientation: landscape) {
|
||||
|
|
|
@ -306,7 +306,7 @@ pre, textarea.pre {
|
|||
}
|
||||
|
||||
.imgLogoIcon {
|
||||
height: 45px;
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
@ -543,13 +543,6 @@ h1 .imageLink {
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 650px) {
|
||||
|
||||
.imgLogoIcon {
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 800px) {
|
||||
|
||||
/*
|
||||
|
|
|
@ -100,16 +100,25 @@
|
|||
$('.connectLoginForm', page).hide();
|
||||
$('.welcomeContainer', page).show();
|
||||
$('.manualServerForm', page).hide();
|
||||
$('.signupForm', page).hide();
|
||||
}
|
||||
else if (mode == 'connect') {
|
||||
$('.connectLoginForm', page).show();
|
||||
$('.welcomeContainer', page).hide();
|
||||
$('.manualServerForm', page).hide();
|
||||
$('.signupForm', page).hide();
|
||||
}
|
||||
else if (mode == 'manualserver') {
|
||||
$('.manualServerForm', page).show();
|
||||
$('.connectLoginForm', page).hide();
|
||||
$('.welcomeContainer', page).hide();
|
||||
$('.signupForm', page).hide();
|
||||
}
|
||||
else if (mode == 'signup') {
|
||||
$('.manualServerForm', page).hide();
|
||||
$('.connectLoginForm', page).hide();
|
||||
$('.welcomeContainer', page).hide();
|
||||
$('.signupForm', page).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -134,6 +143,46 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function onSignupFormSubmit() {
|
||||
|
||||
var page = $(this).parents('.page');
|
||||
|
||||
ConnectionManager.signupForConnect($('#txtSignupEmail', page).val(), $('#txtSignupUsername', page).val(), $('#txtSignupPassword', page).val(), $('#txtSignupPasswordConfirm', page).val()).done(function () {
|
||||
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('MessageThankYouForConnectSignUp'),
|
||||
callback: function () {
|
||||
Dashboard.navigate('connectlogin.html?mode=welcome');
|
||||
}
|
||||
});
|
||||
|
||||
}).fail(function (result) {
|
||||
|
||||
if (result.errorCode == 'passwordmatch') {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('ErrorMessagePasswordNotMatchConfirm')
|
||||
});
|
||||
}
|
||||
else if (result.errorCode == 'USERNAME_IN_USE') {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('ErrorMessageUsernameInUse')
|
||||
});
|
||||
}
|
||||
else if (result.errorCode == 'EMAIL_IN_USE') {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('ErrorMessageEmailInUse')
|
||||
});
|
||||
} else {
|
||||
Dashboard.alert({
|
||||
message: Globalize.translate('DefaultErrorMessage')
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#connectLoginPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -144,21 +193,31 @@
|
|||
|
||||
$('.connectLoginForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
$('.manualServerForm').off('submit', onManualServerSubmit).on('submit', onManualServerSubmit);
|
||||
$('.signupForm').off('submit', onSignupFormSubmit).on('submit', onSignupFormSubmit);
|
||||
|
||||
}).on('pageshowready', "#connectLoginPage", function () {
|
||||
}).on('pagebeforeshowready', "#connectLoginPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
loadPage(page);
|
||||
|
||||
var link = '<a href="http://emby.media" target="_blank">http://emby.media</a>';
|
||||
$('.embyIntroDownloadMessage', page).html(Globalize.translate('EmbyIntroDownloadMessage', link));
|
||||
$('#txtSignupEmail', page).val('');
|
||||
$('#txtSignupUsername', page).val('');
|
||||
$('#txtSignupPassword', page).val('');
|
||||
$('#txtSignupPasswordConfirm', page).val('');
|
||||
|
||||
if (AppInfo.isNativeApp) {
|
||||
$('.skip', page).show();
|
||||
} else {
|
||||
$('.skip', page).hide();
|
||||
}
|
||||
|
||||
var link = '<a href="http://emby.media" target="_blank">http://emby.media</a>';
|
||||
$('.embyIntroDownloadMessage', page).html(Globalize.translate('EmbyIntroDownloadMessage', link));
|
||||
|
||||
}).on('pageshowready', "#connectLoginPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
loadPage(page);
|
||||
});
|
||||
|
||||
function submitManualServer(page) {
|
||||
|
|
|
@ -567,7 +567,7 @@ function ticks_to_human(str) {
|
|||
$this.unbind(touchMoveEvent, moveHandler);
|
||||
if (start && stop) {
|
||||
if (stop.time - start.time < 1000 &&
|
||||
Math.abs(start.coords[1] - stop.coords[1]) > 30 &&
|
||||
Math.abs(start.coords[1] - stop.coords[1]) > 100 &&
|
||||
Math.abs(start.coords[0] - stop.coords[0]) < 75) {
|
||||
start.origin
|
||||
.trigger("swipeupdown")
|
||||
|
|
|
@ -522,7 +522,7 @@
|
|||
|
||||
var item = state.NowPlayingItem;
|
||||
|
||||
$('.itemName', page).html(item ? MediaController.getNowPlayingNameHtml(item) : '');
|
||||
$('.itemName', page).html(item ? MediaController.getNowPlayingNameHtml(item).replace('<br/>', ' - ') : '');
|
||||
|
||||
var url;
|
||||
var backdropUrl = null;
|
||||
|
|
|
@ -55,6 +55,7 @@ var Dashboard = {
|
|||
|
||||
isConnectMode: function () {
|
||||
|
||||
return true;
|
||||
if (AppInfo.isNativeApp) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1106,6 +1106,70 @@
|
|||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.signupForConnect = function (email, username, password, passwordConfirm) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
if (!email) {
|
||||
deferred.rejectWith(null, [{ errorCode: 'invalidinput' }]);
|
||||
return deferred.promise();
|
||||
}
|
||||
if (!username) {
|
||||
deferred.rejectWith(null, [{ errorCode: 'invalidinput' }]);
|
||||
return deferred.promise();
|
||||
}
|
||||
if (!password) {
|
||||
deferred.rejectWith(null, [{ errorCode: 'invalidinput' }]);
|
||||
return deferred.promise();
|
||||
}
|
||||
if (!passwordConfirm) {
|
||||
deferred.rejectWith(null, [{ errorCode: 'passwordmatch' }]);
|
||||
return deferred.promise();
|
||||
}
|
||||
if (password != passwordConfirm) {
|
||||
deferred.rejectWith(null, [{ errorCode: 'passwordmatch' }]);
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
require(['connectservice'], function () {
|
||||
|
||||
var md5 = self.getConnectPasswordHash(password);
|
||||
|
||||
AjaxApi.ajax({
|
||||
type: "POST",
|
||||
url: "https://connect.mediabrowser.tv/service/register",
|
||||
data: {
|
||||
email: email,
|
||||
userName: username,
|
||||
password: md5
|
||||
},
|
||||
dataType: "json",
|
||||
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
headers: {
|
||||
"X-Application": appName + "/" + appVersion,
|
||||
"X-CONNECT-TOKEN": "CONNECT-REGISTER"
|
||||
}
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
deferred.resolve(null, []);
|
||||
|
||||
}).fail(function (e) {
|
||||
|
||||
try {
|
||||
|
||||
var result = JSON.parse(e.responseText);
|
||||
|
||||
deferred.rejectWith(null, [{ errorCode: result.Status }]);
|
||||
} catch (err) {
|
||||
deferred.rejectWith(null, [{}]);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.getConnectPasswordHash = function (password) {
|
||||
|
||||
password = globalScope.MediaBrowser.ConnectService.cleanPassword(password);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue