1
0
Fork 0
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:
Luke Pulverenti 2015-06-13 19:56:59 -04:00
parent 5187a0d558
commit 496add35b9
8 changed files with 188 additions and 20 deletions

View file

@ -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&section=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;">

View file

@ -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) {

View file

@ -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) {
/*

View file

@ -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) {

View file

@ -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")

View file

@ -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;

View file

@ -55,6 +55,7 @@ var Dashboard = {
isConnectMode: function () {
return true;
if (AppInfo.isNativeApp) {
return true;
}

View file

@ -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);