angularized the new portal page.

This commit is contained in:
Stefan Midjich 2016-12-17 15:47:13 +01:00
parent 1515eed84e
commit f357d0f22c
4 changed files with 186 additions and 185 deletions

View file

@ -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
View 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) {
});

View file

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