mirror of
https://codeberg.org/prof_x_pvt_ltd/captive.whump.shanti-portal
synced 2024-08-14 22:46:42 +00:00
angularized the new portal page.
This commit is contained in:
parent
1515eed84e
commit
f357d0f22c
4 changed files with 186 additions and 185 deletions
|
@ -1,163 +0,0 @@
|
|||
// Captive portal Javascript
|
||||
// by Stefan Midjich
|
||||
//
|
||||
//
|
||||
|
||||
var debug = true;
|
||||
|
||||
// This function ensures the user gets redirect to the correct destination once
|
||||
// all jobs have succeeded in the portal software.
|
||||
function do_success() {
|
||||
console.log('success: '+window.location);
|
||||
|
||||
// Do something like refresh the window or go to another URL.
|
||||
window.location = window.href;
|
||||
location.reload(true);
|
||||
}
|
||||
|
||||
// Show an error to the user
|
||||
function do_error(message) {
|
||||
console.log('failure: '+message);
|
||||
|
||||
$('#error-box').show();
|
||||
$('#form-row').hide();
|
||||
$('#error-box').append('<p>Failed. Reload page and try again or contact support.</p> ');
|
||||
if (message) {
|
||||
$('#error-box').append('<p>System response: '+message+'</p>');
|
||||
}
|
||||
}
|
||||
|
||||
// Poll the returned jobs and ensure they all succeed
|
||||
function poll_jobs(data) {
|
||||
var promises = [];
|
||||
|
||||
if(debug) {
|
||||
console.log('Jobs data: ', data);
|
||||
}
|
||||
|
||||
// Push promises into array
|
||||
for(var job in data) {
|
||||
var job_id = data[job].id;
|
||||
var api_url = '/job/'+job_id;
|
||||
|
||||
if (debug) {
|
||||
console.log('Processing job: ', data[job]);
|
||||
}
|
||||
|
||||
promises.push(new Promise(function(resolve, reject) {
|
||||
var maxRun = plugin_ttl/2;
|
||||
var timesRun = 0;
|
||||
|
||||
// Timer function that polls the API for job results
|
||||
var pollJob = function() {
|
||||
ajaxReq = $.get(api_url);
|
||||
ajaxReq.done(function(getResponse) {
|
||||
// Verify job data
|
||||
var job_result = getResponse;
|
||||
|
||||
if (debug) {
|
||||
console.log('Job results: ', job_result);
|
||||
}
|
||||
|
||||
console.log(job_result);
|
||||
if(job_result.is_finished) {
|
||||
console.log('Resolving job: ', job_result.id);
|
||||
resolve(job_result);
|
||||
clearTimeout(timer);
|
||||
return(true);
|
||||
}
|
||||
|
||||
if(job_result.is_failed) {
|
||||
console.log('Job failed: ', job_result.id);
|
||||
reject(job_result);
|
||||
clearTimeout(timer);
|
||||
return(false);
|
||||
}
|
||||
});
|
||||
|
||||
ajaxReq.fail(function(XMLHttpRequest, textStatus, errorThrown) {
|
||||
console.log('Request Error: '+ XMLHttpRequest.responseText + ', status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
|
||||
reject(XMLHttpRequest.responseText);
|
||||
});
|
||||
|
||||
// Set timeout recursively until a certain threshold is reached
|
||||
if (++timesRun == maxRun) {
|
||||
clearTimeout(timer);
|
||||
reject("Job polling timed out");
|
||||
return;
|
||||
} else {
|
||||
timer = setTimeout(pollJob, 2000);
|
||||
}
|
||||
};
|
||||
|
||||
var timer = setTimeout(pollJob, 500);
|
||||
}));
|
||||
}
|
||||
|
||||
// Run .all() on promises array until all promises resolve
|
||||
Promise.all(promises).then(function(result) {
|
||||
var success = true;
|
||||
|
||||
for(var i=0;i<result.length;i++) {
|
||||
console.log('Job result: ', result[i]);
|
||||
var r = result[i].result;
|
||||
var m = result[i].meta;
|
||||
if (r.failed && m.mandatory) {
|
||||
do_error(r.error);
|
||||
success = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (success) {
|
||||
do_success();
|
||||
}
|
||||
}, function(reason) {
|
||||
do_error(reason);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var app = angular.module("rsPortalApp", []);
|
||||
|
||||
app.config(function($routeProvider) {
|
||||
$routeProvider
|
||||
.when('/Swedish', {templateUrl: "swedish.html" })
|
||||
.when('/English', {templateUrl: "english.html" })
|
||||
.when('/FAQ-Swedish', {templateUrl: "faq-swe.html" })
|
||||
.otherwise({redirectTo: '/Swedish'});
|
||||
});
|
||||
|
||||
app.controller('RSMainCtrl', function($scope) {
|
||||
console.log('hejsan i Ctrl');
|
||||
$(document).ready(function() {
|
||||
$('#error-box').hide();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Submit the form
|
||||
$('#approveForm').submit(function (event) {
|
||||
var api_url = '/approve';
|
||||
event.preventDefault();
|
||||
|
||||
// Had some issues trying to set a background image on the button, so I'm
|
||||
// just replacing it.
|
||||
if ($('#approveCheckbox').is(':checked')) {
|
||||
$('#approveButton').prop('disabled', true);
|
||||
$('#approveButton').val('');
|
||||
$('#approveButton').addClass('button-loading');
|
||||
|
||||
$('#approveButtonDiv').replaceWith('<img src="/static/images/radio.svg" alt="Loading, please wait..." />');
|
||||
|
||||
var ajaxReq = $.post(api_url);
|
||||
ajaxReq.done(poll_jobs);
|
||||
|
||||
ajaxReq.fail(function(XMLHttpRequest, textStatus, errorThrown) {
|
||||
console.log('Request Error: '+ XMLHttpRequest.responseText + ', status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
|
||||
do_error(XMLHttpRequest.responseText);
|
||||
});
|
||||
}
|
||||
});
|
20
static/rs/js/rsapp.js
Normal file
20
static/rs/js/rsapp.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
// Captive portal Javascript
|
||||
// by Stefan Midjich
|
||||
//
|
||||
//
|
||||
|
||||
var debug = true;
|
||||
var app = angular.module("rsPortalApp", []);
|
||||
|
||||
app.config(function($routeProvider) {
|
||||
$routeProvider
|
||||
.when('/Swedish', {templateUrl: "swedish.html" })
|
||||
.when('/English', {templateUrl: "english.html" })
|
||||
.when('/FAQ-Swedish', {templateUrl: "faq-swe.html" })
|
||||
.otherwise({redirectTo: '/Swedish'});
|
||||
});
|
||||
|
||||
app.controller('RSMainCtrl', function($scope) {
|
||||
|
||||
});
|
||||
|
188
views/rs.tpl
188
views/rs.tpl
|
@ -23,7 +23,7 @@
|
|||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body ng-app="rsPortalApp">
|
||||
<noscript>
|
||||
<div class="container">
|
||||
<p>Javascript verkar inte vara påslaget? -
|
||||
|
@ -65,7 +65,7 @@
|
|||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<div id="main">
|
||||
<div id="main" ng-controller="RSMainCtrl">
|
||||
|
||||
|
||||
<div class="layout-quarters layout-article">
|
||||
|
@ -77,26 +77,7 @@
|
|||
<div class="minor"></div>
|
||||
<div role="main" class="major primary-area">
|
||||
<div class="article column-inner">
|
||||
<article role="article">
|
||||
<div class="article-img-container">
|
||||
</div>
|
||||
<nav class="header-nav">
|
||||
<ul class="help-menu">
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 role="heading" class="title">Gästportal - Användaravtal</h1>
|
||||
<div class="body">
|
||||
<h2 class="underrubrik1">Användaravtal</h2>
|
||||
<div>
|
||||
<p>Godkänn användaravtalet innan du fortsätter.</p>
|
||||
</div>
|
||||
<br>
|
||||
<div><a href="http://www.skane.se/" title="Startsidan">Klicka här för att komma till startsidan.</a></div>
|
||||
<br>
|
||||
<div><a href="http://www.skane.se/sok" title="Söksidan">Klicka här för att komma till söksidan.</a></div>
|
||||
</div>
|
||||
<section class="articlepage-section block-section"></section>
|
||||
</article>
|
||||
<ng-view></ng-view>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -110,7 +91,170 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/ng-template" id="swedish.html">
|
||||
<article role="article">
|
||||
<div class="article-img-container">
|
||||
</div>
|
||||
<nav class="header-nav">
|
||||
<ul class="help-menu">
|
||||
<li><a title="Vanliga frågor" href="/#/FAQ-Swedish">Vanliga frågor</a></li>
|
||||
<li><a title="English" href="/#/English">English</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 role="heading" class="title">Villkor för tjänsten</h1>
|
||||
<div class="body">
|
||||
<p>Region Skåne saknar ansvar för funktionalitet, innehåll och service
|
||||
på Internetsidor vilka användaren kan nå via tjänsten</p>
|
||||
<p>Region Skåne kan ej hållas ansvarig för fel eller skador på
|
||||
användarens utrustning förutom i det fall det uteslutande kan anses
|
||||
bero på Region Skåne</p>
|
||||
<p>Region Skåne kan ej lämna garanti för att tjänsten alltid kommer att
|
||||
fungera säkert utan fördröjning eller avbrott</p>
|
||||
<p>Användaren är ansvarig för att användningen följer lagar och
|
||||
författningar och att den sker på ett etiskt och korrekt sätt</p>
|
||||
<p>Användaren är ansvarig för att användningen sker på ett sätt som
|
||||
inte verkar störande för omgivningen</p>
|
||||
<p>Region Skåne äger rätt att, om ovanstående regler inte respekteras,
|
||||
stänga av eller begränsa användarens åtkomst till Internet</p>
|
||||
<p>Region Skånes Publika Gästnät använder sig av cookies för att ge
|
||||
åtkomst till Internet. För att komma ut på Internet måste du därför
|
||||
tillåta cookies i din webläsare. För mer information se
|
||||
<a href="http://www.skane.se/supportsidor/om-cookies/">Region Skånes information om cookies</a>.<p>
|
||||
<p>När du använder dig av Region Skånes internet är det viktigt att
|
||||
följa regler ex. förbudskyltar som gäller användning av enheter i
|
||||
närheten Medicinteknisk utrustning, då denna kan störas.</p>
|
||||
|
||||
<form id="approveForm" method="post">
|
||||
<div class="static-form-block">
|
||||
<div id="error-box" class="msg-container success-msg hide">
|
||||
</div>
|
||||
|
||||
<div class="input-container">
|
||||
<label>
|
||||
<input type="checkbox" id="approveCheckbox" required> Jag godkänner avtalet
|
||||
</label>
|
||||
<button type="submit" class="button" id="approveButton" value="Godkänn"></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div><a href="http://www.skane.se/" title="Startsidan">Klicka här för att komma till startsidan.</a></div>
|
||||
<div><a href="http://www.skane.se/sok" title="Söksidan">Klicka här för att komma till söksidan.</a></div>
|
||||
</div>
|
||||
|
||||
<section class="articlepage-section block-section"></section>
|
||||
</article>
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="english.html">
|
||||
<article role="article">
|
||||
<div class="article-img-container">
|
||||
</div>
|
||||
<nav class="header-nav">
|
||||
<ul class="help-menu">
|
||||
<li><a title="Swedish" href="/#/Swedish">Swedish</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 role="heading" class="title">End user agreement</h1>
|
||||
<div class="body">
|
||||
<p>More here later. Lorem Ipsum is simply dummy text of the printing and
|
||||
typesetting industry. Lorem Ipsum has been the industry's standard
|
||||
dummy text ever since the 1500s, when an unknown printer took a galley
|
||||
of type and scrambled it to make a type specimen book. It has survived
|
||||
not only five centuries, but also the leap into electronic typesetting,
|
||||
remaining essentially unchanged. It was popularised in the 1960s with
|
||||
the release of Letraset sheets containing Lorem Ipsum passages, and more
|
||||
recently with desktop publishing software like Aldus PageMaker including
|
||||
versions of Lorem Ipsum.</p>
|
||||
|
||||
<form id="approveForm" method="post">
|
||||
<div class="static-form-block">
|
||||
<div id="error-box" class="msg-container success-msg hide">
|
||||
</div>
|
||||
|
||||
<div class="input-container">
|
||||
<label>
|
||||
<input type="checkbox" id="approveCheckbox" required> I approve the end user agreement
|
||||
</label>
|
||||
<input type="submit" class="button" id="approveButton" value="Approve">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<section class="articlepage-section block-section"></section>
|
||||
</article>
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="faq-swe.html">
|
||||
<article role="article">
|
||||
<div class="article-img-container">
|
||||
</div>
|
||||
<nav class="header-nav">
|
||||
<ul class="help-menu">
|
||||
<li><a title="English" href="/#/English">English</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 role="heading" class="title">Vanliga frågor</h1>
|
||||
<div class="body">
|
||||
|
||||
<h2>Vad behöver jag för att komma åt Internet?</h2>
|
||||
<p>En bärbar dator, läsplatta, smartphone eller en annan enhet med antingen
|
||||
ett externt WiFi-kort (kort för trådlös uppkoppling) eller inbyggt
|
||||
WiFi-kort. Detta trådlösa nät stödjer både 802.11a,802.11b, 802.11g
|
||||
och 802.11n standard.</p>
|
||||
<h2>Hur kan jag koppla upp mig mot det trådlösa nätverket?</h2>
|
||||
<p>De flesta enheter har en auto-sök funktion som bör hitta det trådlösa
|
||||
nätverket inom några minuter efter du startat den. Om så inte sker kan
|
||||
Du söka efter nätverket Region Skane publikt. </p>
|
||||
|
||||
<p>Öppna sedan en Internetläsare (t.ex. Internet explorer eller Firefox)
|
||||
och gå till valfri sida. Du kommer då se en välkomstsida.</p>
|
||||
<h2>Hur säker är Internetuppkopplingen?</h2>
|
||||
<p>Eftersom detta är ett publikt nätverk så används inte någon kryptering.
|
||||
Du bör därför se till att använda samma försiktighetsåtgärder som
|
||||
rekommenderas av din bredbandsleverantör. För bästa skydd, använd gärna
|
||||
anti-virusprogram och brandvägg på din Enhet.</p>
|
||||
<h2>Cookies</h2>
|
||||
<p>Region Skånes Publika Gästnät använder sig av cookies för att ge åtkomst
|
||||
till Internet. För att komma ut på Internet måste du därför
|
||||
tillåta cookies i din webläsare. För mer information se
|
||||
<a href="http://www.skane.se/supportsidor/om-cookies/">Region Skånes
|
||||
information om cookies</a>.<p>
|
||||
<h2>Kan jag använda VPN genom denna Internetuppkoppling</h2>
|
||||
<p>Även om vi har testat flertalet VPN-produkter så kan vi inte garantera
|
||||
att alla VPN-klienter kan användas genom denna Internetanslutning.
|
||||
Eftersom denna anslutning är skyddad av en brandvägg så måste din
|
||||
VPN-klient klara av NAT/PAT för att kunna koppla upp sig mot din VPN-server.
|
||||
Om du har problem eller är osäker på hur din VPN-klient fungerar, var
|
||||
vänlig kontakta ditt företags IT-avdelning för information och hjälp.</p>
|
||||
<h2>Jag kan inte skicka e-post från denna Internetanslutning. Finns det
|
||||
några inställningar jag kan ändra?</h2>
|
||||
<p>Eftersom denna Internetanslutning tillhandahålls av region Skåne så kan
|
||||
det hända att vissa Internetsidor som innehåller material som har bedömts
|
||||
olämpligt är spärrade. Om du försöker nå en av dessa sidor så kommer du
|
||||
att bli vidareskickad till en sida som meddelar att denna sida inte är
|
||||
tillgänglig genom det gästnätet. Om du tror att den sidan du försökte
|
||||
nå är felaktigt spärrad så kan du skicka in URL:en och en kommentar genom
|
||||
länken "Synpunkter" på förstasidan.</p>
|
||||
<h2>Jag behöver mer hjälp. Kan jag kontakta någon på plats eller på telefon?</h2>
|
||||
<p>Vi erbjuder våra användare support via betalnummer på telefon!</p>
|
||||
<p>Supportnummer: 0900-205 25 50<br />
|
||||
<small>Kostnad för support: 19,90 kr/minut (inkl. moms)<br />
|
||||
Öppet 08:00 - 17:00 helgfria vardagar</small></p>
|
||||
|
||||
</div>
|
||||
|
||||
<section class="articlepage-section block-section"></section>
|
||||
</article>
|
||||
</script>
|
||||
|
||||
|
||||
<script src="/static/js/jquery-1.12.2.min.js"></script>
|
||||
<script src="/static/rs/js/angular.min.js"></script>
|
||||
<script src="/static/rs/js/rsapp.js"></script>
|
||||
<script src="/static/js/captiveportal.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue