mirror of
https://github.com/jech/galene.git
synced 2024-11-22 08:35:57 +01:00
Check for group existence on landing page.
This commit is contained in:
parent
a21134d310
commit
3d857120db
3 changed files with 63 additions and 5 deletions
|
@ -18,8 +18,10 @@
|
||||||
<form id="groupform">
|
<form id="groupform">
|
||||||
<label for="group">Group:</label>
|
<label for="group">Group:</label>
|
||||||
<input id="group" type="text" name="group" class="form-control form-control-inline"/>
|
<input id="group" type="text" name="group" class="form-control form-control-inline"/>
|
||||||
<input type="submit" value="Join" class="btn btn-default btn-large"/><br/>
|
<input id='submitbutton' type="submit" value="Join" class="btn btn-default btn-large"/><br/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<p id="errormessage"></p>
|
||||||
|
|
||||||
<div id="public-groups" class="groups">
|
<div id="public-groups" class="groups">
|
||||||
<h2>Public groups</h2>
|
<h2>Public groups</h2>
|
||||||
|
|
|
@ -4,6 +4,12 @@ body {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#errormessage {
|
||||||
|
color: red;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
.groups {
|
.groups {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,13 +20,63 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
document.getElementById('groupform').onsubmit = function(e) {
|
document.getElementById('groupform').onsubmit = async function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
let group = document.getElementById('group').value.trim();
|
clearError();
|
||||||
if(group !== '')
|
let groupinput = document.getElementById('group')
|
||||||
location.href = '/group/' + group + '/';
|
let button = document.getElementById('submitbutton');
|
||||||
|
|
||||||
|
let group = groupinput.value.trim();
|
||||||
|
if(group === '')
|
||||||
|
return;
|
||||||
|
let url = '/group/' + group + '/';
|
||||||
|
|
||||||
|
try {
|
||||||
|
groupinput.disabled = true;
|
||||||
|
button.disabled = true;
|
||||||
|
try {
|
||||||
|
let resp = await fetch(url, {
|
||||||
|
method: 'HEAD',
|
||||||
|
});
|
||||||
|
if(!resp.ok) {
|
||||||
|
if(resp.status === 404)
|
||||||
|
displayError('No such group');
|
||||||
|
else
|
||||||
|
displayError(`The server said: ${resp.status} ${resp.statusText}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
displayError(`Coudln't connect: ${e.toString()}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
groupinput.disabled = false;
|
||||||
|
button.disabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
location.href = url;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var clearErrorTimeout = null;
|
||||||
|
|
||||||
|
function displayError(message) {
|
||||||
|
clearError();
|
||||||
|
let p = document.getElementById('errormessage');
|
||||||
|
p.textContent = message;
|
||||||
|
clearErrorTimeout = setTimeout(() => {
|
||||||
|
let p = document.getElementById('errormessage');
|
||||||
|
p.textContent = '';
|
||||||
|
clearErrorTimeout = null;
|
||||||
|
}, 2500);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearError() {
|
||||||
|
if(clearErrorTimeout != null) {
|
||||||
|
clearTimeout(clearErrorTimeout);
|
||||||
|
clearErrorTimeout = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function listPublicGroups() {
|
async function listPublicGroups() {
|
||||||
let div = document.getElementById('public-groups');
|
let div = document.getElementById('public-groups');
|
||||||
let table = document.getElementById('public-groups-table');
|
let table = document.getElementById('public-groups-table');
|
||||||
|
|
Loading…
Reference in a new issue