mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
[enh] Beautify postinstall (WIP)
This commit is contained in:
parent
03cf21830f
commit
8356416da8
3 changed files with 105 additions and 64 deletions
149
js/app.js
149
js/app.js
|
@ -93,6 +93,21 @@ app = Sammy('#main', function (sam) {
|
|||
});
|
||||
},
|
||||
|
||||
isInstalled: function() {
|
||||
domain = window.location.hostname;
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: 'https://'+ domain +'/yunohost/api/installed',
|
||||
timeout: 3000
|
||||
})
|
||||
.success(function(data) {
|
||||
return data.installed;
|
||||
})
|
||||
.fail(function() {
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
// API call
|
||||
api: function(uri, callback, method, data) {
|
||||
c = this;
|
||||
|
@ -109,6 +124,10 @@ app = Sammy('#main', function (sam) {
|
|||
// If not connected, WebSocket connection will raise an error, but we do not want to interrupt API request
|
||||
ws.onerror = ws.onopen;
|
||||
|
||||
ws.onclose = function() {
|
||||
store.clear('flash');
|
||||
}
|
||||
|
||||
ws.onopen = function(evt) {
|
||||
method = typeof method !== 'undefined' ? method : 'GET';
|
||||
data = typeof data !== 'undefined' ? data : {};
|
||||
|
@ -125,19 +144,15 @@ app = Sammy('#main', function (sam) {
|
|||
installing = true;
|
||||
}, 1500);
|
||||
|
||||
$('#popup-title').text(y18n.t('installing'));
|
||||
$('#popup-body').html('<p>'+y18n.t('installation_complete_wait', [data.domain])+'</p>');
|
||||
$('#popup-body').append('<div class="loader loader-popup"></div>');
|
||||
$('#popup').modal('show');
|
||||
} else {
|
||||
loaded = false;
|
||||
if ($('div.loader').length == 0) {
|
||||
}
|
||||
if ($('div.loader').length == 0) {
|
||||
setInterval(function () {
|
||||
if (!loaded && $('div.loader').length == 0) {
|
||||
$('#main').append('<div class="loader loader-content"></div>');
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
jQuery.ajax({
|
||||
url: 'https://'+ store.get('url') + uri,
|
||||
|
@ -208,28 +223,17 @@ app = Sammy('#main', function (sam) {
|
|||
} else {
|
||||
if (uri == '/postinstall') {
|
||||
if (installing) {
|
||||
if (args.domain.match(/\.nohost\.me$/) || args.domain.match(/\.noho\.st$/)) {
|
||||
$('#popup-title').text(y18n.t('installed'));
|
||||
$('#popup-body p').text(y18n.t('installation_complete_dns'));
|
||||
interval = 180000;
|
||||
} else {
|
||||
interval = 5000;
|
||||
}
|
||||
setInterval(function () {
|
||||
if (window.location.hostname === args.domain) {
|
||||
$('#popup-title').text(y18n.t('installation_complete'));
|
||||
$('#popup-body').html(
|
||||
'<p>'+ y18n.t('installation_complete_desc', ['https://'+ args.domain +'/yunohost/admin', args.domain +'/yunohost/admin']) +'</p>'
|
||||
+ '<br>'
|
||||
+ '<p><small>'+ y18n.t('installation_complete_help_dns') +'</small></p>');
|
||||
window.open('https://'+ args.domain +'/yunohost/admin');
|
||||
} else {
|
||||
$('#popup').modal('hide');
|
||||
c.flash('success', y18n.t('installation_complete'));
|
||||
c.redirect('#/login');
|
||||
if (!c.isInstalled()) {
|
||||
c.flash('success', y18n.t('installation_complete'));
|
||||
c.redirect('#/login');
|
||||
}
|
||||
}
|
||||
}, interval);
|
||||
}, 5000);
|
||||
} else {
|
||||
$('#popup').modal('hide');
|
||||
c.flash('fail', y18n.t('error_occured'));
|
||||
}
|
||||
} else {
|
||||
|
@ -243,7 +247,8 @@ app = Sammy('#main', function (sam) {
|
|||
},
|
||||
|
||||
// Render view (cross-browser)
|
||||
view: function (view, data) {
|
||||
view: function (view, data, callback) {
|
||||
callback = typeof callback !== 'undefined' ? callback : function() {};
|
||||
rendered = this.render('views/'+ view +'.ms', data);
|
||||
|
||||
enableSlide = true; // Change to false to disable animation
|
||||
|
@ -262,6 +267,7 @@ app = Sammy('#main', function (sam) {
|
|||
store.set('slide', 'to');
|
||||
}
|
||||
});
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -290,7 +296,7 @@ app = Sammy('#main', function (sam) {
|
|||
leSwap();
|
||||
}
|
||||
} else {
|
||||
rendered.swap();
|
||||
rendered.swap(callback);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -315,7 +321,7 @@ app = Sammy('#main', function (sam) {
|
|||
});
|
||||
});
|
||||
|
||||
sam.before({except: {path: ['#/logout', '#/login', '#/postinstall']}}, function (req) {
|
||||
sam.before({except: {path: ['#/logout', '#/login', '#/postinstall', '#/postinstall/domain', '#/postinstall/password']}}, function (req) {
|
||||
// Store path for further redirections
|
||||
store.set('path-1', store.get('path'));
|
||||
store.set('path', req.path);
|
||||
|
@ -358,26 +364,12 @@ app = Sammy('#main', function (sam) {
|
|||
});
|
||||
|
||||
sam.get('#/login', function (c) {
|
||||
$('#masthead').show();
|
||||
$('.logout-button').hide();
|
||||
store.set('path-1', '#/login');
|
||||
|
||||
// Check if te client is hosted on a yunohost node
|
||||
domain = window.location.hostname
|
||||
$.ajax({
|
||||
dataType: "json",
|
||||
url: 'https://'+ domain +'/yunohost/api/installed',
|
||||
timeout: 3000
|
||||
})
|
||||
.success(function(data) {
|
||||
if (!data.installed) {
|
||||
c.redirect('#/postinstall');
|
||||
} else {
|
||||
c.view('login', { 'domain': domain });
|
||||
}
|
||||
})
|
||||
.fail(function() {
|
||||
c.view('login');
|
||||
});
|
||||
if (!c.isInstalled()) {
|
||||
c.redirect('#/postinstall');
|
||||
}
|
||||
});
|
||||
|
||||
sam.post('#/login', function (c) {
|
||||
|
@ -416,34 +408,69 @@ app = Sammy('#main', function (sam) {
|
|||
});
|
||||
|
||||
sam.get('#/postinstall', function(c) {
|
||||
c.view('postinstall', {'ddomains': ['.nohost.me', '.noho.st']});
|
||||
$('#masthead').hide();
|
||||
c.view('postinstall/postinstall_1');
|
||||
});
|
||||
|
||||
sam.get('#/postinstall/domain', function(c) {
|
||||
$('#masthead').hide();
|
||||
c.view('postinstall/postinstall_2', {'ddomains': ['.nohost.me', '.noho.st']}, function() {
|
||||
$('#domain, #ddomain').keyup(function(event){
|
||||
if(event.keyCode == 13){
|
||||
$('a.savedomain').click();
|
||||
}
|
||||
});
|
||||
$('a.savedomain').on('click', function(e) {
|
||||
if ($('#domain').val() === '') {
|
||||
if ($('#ddomain').val() === '') {
|
||||
e.preventDefault();
|
||||
store.clear('slide');
|
||||
c.flash('fail', y18n.t('error_select_domain'));
|
||||
} else {
|
||||
domain = $('#ddomain').val() + $('select[name="ddomain-ext"]').val();
|
||||
}
|
||||
} else {
|
||||
domain = $('#domain').val();
|
||||
}
|
||||
store.set('maindomain', domain);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
sam.get('#/postinstall/password', function(c) {
|
||||
$('#masthead').hide();
|
||||
$('#flash .alert').remove();
|
||||
if (!store.get('maindomain')) {
|
||||
store.clear('slide');
|
||||
c.redirect('#/postinstall/domain');
|
||||
} else {
|
||||
c.view('postinstall/postinstall_3', { 'domain': store.get('maindomain') });
|
||||
}
|
||||
});
|
||||
|
||||
sam.post('#/postinstall', function (c) {
|
||||
if (c.params['password'] == '' || c.params['confirmation'] == '') {
|
||||
c.flash('fail', y18n.t('password_empty'))
|
||||
c.flash('fail', y18n.t('password_empty'));
|
||||
}
|
||||
else if (c.params['password'] == c.params['confirmation']) {
|
||||
if (c.params['domain'] == '') {
|
||||
if (c.params['ddomain'] == '') {
|
||||
c.flash('fail', y18n.t('error_select_domain'));
|
||||
store.clear('slide');
|
||||
c.redirect('#/postinstall');
|
||||
} else {
|
||||
params = { 'domain': c.params['ddomain'] + c.params['ddomain-ext'] }
|
||||
}
|
||||
if (c.params['domain'] === '') {
|
||||
c.flash('fail', y18n.t('error_select_domain'));
|
||||
store.clear('slide');
|
||||
c.redirect('#/postinstall/domain');
|
||||
} else {
|
||||
params = { 'domain': c.params['domain'] }
|
||||
}
|
||||
|
||||
params['password'] = c.params['password']
|
||||
if (confirm(y18n.t('confirm_postinstall', [c.params['domain']]))) {
|
||||
params['password'] = c.params['password']
|
||||
|
||||
store.set('url', window.location.hostname +'/yunohost/api');
|
||||
store.set('user', 'admin');
|
||||
store.set('password', btoa('yunohost'));
|
||||
c.api('/postinstall', function(data) { // http://api.yunohost.org/#!/tools/tools_postinstall_post_0
|
||||
c.redirect('#/');
|
||||
}, 'POST', params);
|
||||
store.set('url', window.location.hostname +'/yunohost/api');
|
||||
store.set('user', 'admin');
|
||||
c.api('/postinstall', function(data) { // http://api.yunohost.org/#!/tools/tools_postinstall_post_0
|
||||
c.redirect('#/login');
|
||||
}, 'POST', params);
|
||||
}
|
||||
} else {
|
||||
c.flash('fail', y18n.t('passwords_dont_match'));
|
||||
}
|
||||
|
|
|
@ -65,7 +65,15 @@
|
|||
"confirm_service_action" : "Are you sure you want to %s %s ?",
|
||||
"confirm_update_type" : "Are you sure you want update every %s %s ?",
|
||||
|
||||
"postinstall_intro" : "A last step is necessary to fulfill the installation: You have to link your YunoHost instance to a domain name, and set a new administrator password.",
|
||||
"postinstall_intro_1" : "Congratulations! YunoHost has been successfully installed.",
|
||||
"postinstall_intro_2" : "Two more configuration steps are required to activate the services of your server.",
|
||||
"postinstall_intro_3" : "You can obtain more information by visiting the <a href='//yunohost.org/postinstall'>appropriate documentation page</a>",
|
||||
"begin" : "Begin",
|
||||
"postinstall_domain" : "This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the authentication portal. It will thus be visible by everyone, choose it carefully.",
|
||||
"previous": "Previous",
|
||||
"next": "Next",
|
||||
"postinstall_password" : "This password will be used to manage everything on your server. Take the time to choose it wisely.",
|
||||
"confirm_postinstall" : "You are about to launch the postinstallation process on the domain %s. It may take a few minutes, *do not interrupt the operation*.",
|
||||
|
||||
"application" : "Application",
|
||||
"applications" : "Applications",
|
||||
|
|
|
@ -65,7 +65,13 @@
|
|||
"confirm_service_action" : "Êtes-vous sur de vouloir %s %s ?",
|
||||
"confirm_update_type" : "Êtes-vous sur de vouloir mettre à jour tous les %s ?",
|
||||
|
||||
"postinstall_intro" : "A last step is necessary to fulfill the installation: You have to link your YunoHost instance to a domain name, and set a new administrator password.",
|
||||
"postinstall_intro_1" : "Congratulations! YunoHost has been successfully installed.",
|
||||
"postinstall_intro_2" : "Two more configuration steps are required to activate the services of your server.",
|
||||
"postinstall_intro_3" : "You can obtain more information by visiting the <a href='//yunohost.org/postinstall'>appropriate documentation page</a>",
|
||||
"begin" : "Begin",
|
||||
"postinstall_domain" : "This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the authentication portal. It will thus be visible by everyone, choose it carefully.",
|
||||
"postinstall_password" : "This password will be used to manage everything on your server. Take the time to choose it wisely.",
|
||||
"confirm_postinstall" : "You are about to launch the postinstallation process on the domain %s. It may take a few minutes, *do not interrupt the operation*.",
|
||||
|
||||
"application" : "Application",
|
||||
"applications" : "Applications",
|
||||
|
@ -106,7 +112,7 @@
|
|||
"domain_add" : "Ajouter un domaine",
|
||||
"domain_add_panel_with_domain" : "J'ai déjà un nom de domaine …",
|
||||
"domain_add_panel_without_domain" : "Je n'ai pas de nom de domaine …",
|
||||
"domain_add_dns_doc" : "… et j'ai <a href='//yunohost.org/dns'>configurer mes DNS correctement</a>.",
|
||||
"domain_add_dns_doc" : "… et j'ai <a href='//yunohost.org/dns'>configué mes DNS correctement</a>.",
|
||||
"domain_add_dyndns_doc" : "… et je souhaite un service de DNS dynamique.",
|
||||
"domain_default" : "Domaine par défaut",
|
||||
"domain_default_desc" : "Les utilisateurs se connecteront au domaine par défaut.",
|
||||
|
|
Loading…
Reference in a new issue