summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMarko Pušnik <marko.pusnik@guru.si>2015-10-20 17:39:04 +0200
committerMarko Pušnik <marko.pusnik@guru.si>2015-10-20 17:39:04 +0200
commit08e955335ecb65c308dbc68bf0610dce39ce3623 (patch)
tree8b9326f9e6a9c7d4cf5189efca83f56cf3961bd7 /js
parentcdfff9e0ab7fc26682218c5c694da4e9d0f4eea5 (diff)
- icons
- any state marker from the URL before everything else loads removed - settings dropdown separator visibility in case of saml login fixed - profile screen: - go back button refactored - name, email field - phone, browser and platform type detection (misc.js) added - mobile apps: - meta viewport and add HandheldFriendly changed - style @-ms-viewport defined - ajaxPrefix and eioHost temporary changed to dev server - android: phonegap whitelistening in config.xml fixed - ios: add hide status bar to config.xml TODO: - WP8 mobile app: test - iOS mobile app: saml login solution (iframe cross domain url not allowed) - "No Content-Security-Policy meta tag found. Please add one when using the cordova-plugin-whitelist plugin."
Diffstat (limited to 'js')
-rw-r--r--js/codeq/core.js4
-rw-r--r--js/codeq/init.js8
-rw-r--r--js/codeq/login.js24
-rw-r--r--js/codeq/misc.js71
-rw-r--r--js/codeq/profile.js16
5 files changed, 104 insertions, 19 deletions
diff --git a/js/codeq/core.js b/js/codeq/core.js
index a3e9589..309195b 100644
--- a/js/codeq/core.js
+++ b/js/codeq/core.js
@@ -391,6 +391,10 @@
'line-layout',
'square-layout'
],
+
+ 'runningOnPhone': false, // default value, will be changed if detected otherwise
+ 'browserType': 'unknown',
+ 'platformType': 'unknown',
'isWebApp': false, // this is a PhoneGap/Cordova build, will be overridden in cordova.js for webapp
'setLayout': function(newLayout){
diff --git a/js/codeq/init.js b/js/codeq/init.js
index 811d781..98a41a2 100644
--- a/js/codeq/init.js
+++ b/js/codeq/init.js
@@ -94,8 +94,12 @@
else {
// we are a phonegap native app
document.addEventListener("deviceready", Boot, false);
- codeq.ajaxPrefix = 'http://codeq.si/';
- codeq.eioHost= 'wss://codeq.si';
+ // production
+ //codeq.ajaxPrefix = 'http://codeq.si/';
+ //codeq.eioHost= 'ws://codeq.si';
+ // dev
+ codeq.ajaxPrefix = 'http://212.235.189.51:22180/';
+ codeq.eioHost= 'ws://212.235.189.51:22180';
}
})();
diff --git a/js/codeq/login.js b/js/codeq/login.js
index 61f248d..db90b43 100644
--- a/js/codeq/login.js
+++ b/js/codeq/login.js
@@ -7,19 +7,21 @@
jqNavigationHomeBtn = $('#navigation-home'),
jqAAILoginBtn = $('#aai_login_button'),
jqSignupBtn = $('#signup_button'),
- jqSubmitLoginBtn = $("#submit");
+ jqSubmitLoginBtn = $("#submit"),
+ jqDisabled = $('#disabled');
//the loginCallbackFunction is used here and in the AAI login as well
codeq.loginCallbackFunction = function (data) {
- $('#disabled').css('display', 'none');
- $('#disabled').css('cursor', '');
+ jqDisabled.css('display', 'none');
+ jqDisabled.css('cursor', '');
if (data.code !== 0) throw new Error('Login failed, code: ' + data.code + ', message: ' + data.message);
//nav signed in...
- $('#signed-in-title').html(data.name||$('#username').val());
+ $('#signed-in-title').html(data.name||data.username||data.email||'undefined');
//merge with profile page
- $('#profileUsername').html($('#username').val());
+ $('#profileUsername').html(data.username||data.email||'undefined');
$('#profileName').html(data.name||'undefined');
+ $('#profileEmail').html(data.email||'undefined');
$('#profileJoined').html(new Date(data.joined).toLocaleString());
$('#profileLastLogin').html(new Date(data["last-login"]).toLocaleString());
@@ -42,19 +44,19 @@
var loginFun = function(){
$('.saml-login-hide').css('display','');//if we login the normal way we want to show the change password buttons. if we enter the saml login they will be hidden
- $('#disabled').css('display', '');
- $('#disabled').css('cursor', 'wait');
+ jqDisabled.css('display', '');
+ jqDisabled.css('cursor', 'wait');
codeq.comms.connect()
.then(function () {
return codeq.comms.login($('#username').val(), $('#password').val());
})
.then(codeq.loginCallbackFunction)
.fail(function (reason) {
- $('#disabled').css('display', 'none');
- $('#disabled').css('cursor', '');
+ jqDisabled.css('display', 'none');
+ jqDisabled.css('cursor', '');
codeq.log.error('Login failed: ' + reason, reason);
alert('Login request failed: ' + reason);
- $('#disabled').css('display', 'none');
+ jqDisabled.css('display', 'none');
})
.done();
},
@@ -85,7 +87,7 @@
});
//$('#modalLogIn').modal();
$("#screen_login").css('display', '');
- $('#disabled').css('display', 'none');
+ jqDisabled.css('display', 'none');
},
'exit' : function(){
//remove the listener from the buttons specific to this page
diff --git a/js/codeq/misc.js b/js/codeq/misc.js
new file mode 100644
index 0000000..b83f271
--- /dev/null
+++ b/js/codeq/misc.js
@@ -0,0 +1,71 @@
+/* Detect if we're on a phone, browser and platform type */
+(function browserDetection() {
+ var platform = navigator.platform,
+ userAgent = navigator.userAgent,
+ runningOnPhone = false, // default value, will be changed if detected otherwise
+ browserType = 'unknown',
+ platformType = 'unknown';
+
+ // Apple platforms
+ if ((/iPod/.test(platform)) || (/iPhone/.test(platform))) {
+ runningOnPhone = true;
+ browserType = 'safari';
+ platformType = 'iapple';
+ }
+ else if (/iPad/.test(platform)) {
+ runningOnPhone = false;
+ browserType = 'safari';
+ platformType = 'iapple';
+ }
+ else {
+ // general test for phones
+ if (/[Mm]obile/.test(userAgent)) {
+ runningOnPhone = true;
+ }
+
+ if ((/MSIE/.test(userAgent) && /Touch/.test(userAgent)) || (/IEMobile/.test(userAgent))) {
+ platformType = 'ietouch';
+ }
+
+ if (/BlackBerry/.test(userAgent) || /BB10/.test(userAgent)) {
+ platformType = 'blackberry';
+ }
+
+ // general browser tests
+ if (/Presto/.test(userAgent)) {
+ browserType = 'opera';
+ }
+ else if (/Android/.test(userAgent)) {
+ // Android platform: only firefox, webkit, and chrome are possible
+ platformType = 'android';
+ if (/Chrome/.test(userAgent)) {
+ browserType = 'chrome';
+ }
+ else if (/Firefox/.test(userAgent)) {
+ browserType = 'firefox';
+ }
+ else if (/Safari/.test(userAgent)) {
+ browserType = 'webkit';
+ }
+ }
+ else {
+ // desktop, or other mobile platforms
+ if (/Chrome/.test(userAgent)) {
+ browserType = 'chrome';
+ }
+ else if (/Firefox/.test(userAgent)) {
+ browserType = 'firefox';
+ }
+ else if (/Safari/.test(userAgent)) {
+ browserType = 'webkit';
+ }
+ else if (/MSIE/.test(userAgent)) {
+ browserType = 'ie';
+ }
+ }
+ }
+
+ codeq.runningOnPhone = runningOnPhone;
+ codeq.browserType = browserType;
+ codeq.platformType = platformType;
+})(); \ No newline at end of file
diff --git a/js/codeq/profile.js b/js/codeq/profile.js
index 133c947..36c5ccf 100644
--- a/js/codeq/profile.js
+++ b/js/codeq/profile.js
@@ -4,13 +4,20 @@
(function(){
- var jqBtnChangePass = $("#change_pass_profile");
+ var jqBtnChangePass = $("#change_pass_profile"),
+ jqBtnGoBack = $("#btnProfileGoBack");
codeq.profile = {
};
codeq.globalStateMachine.register('profile',{
'enter': function(){
+ jqBtnChangePass.on('click',function(){
+ codeq.globalStateMachine.transition('changePassword');
+ });
+ jqBtnGoBack.on('click',function(){
+ history.back();//forces a transition to the previous state
+ });
$("#screen_profile").css('display', '');
$('#disabled').css('display', 'none');
codeq.comms.getUserStat()
@@ -19,7 +26,6 @@
data = data.stat;
var columns = ['language', 'problem_group', 'problems_count', 'done', 'in_progress'],
- labels = ['Language', 'Problem group', 'All', 'Done', 'In progress'],
items='<thead><tr>',
tr_gui = codeq.tr.getDictionary('gui');
@@ -53,13 +59,11 @@
alert('GetUserStat failed: ' + reason);
})
.done();
- jqBtnChangePass.on('click',function(){
- codeq.globalStateMachine.transition('changePassword');
- });
},
'exit' : function(){
- $("#screen_profile").css('display', 'none');
jqBtnChangePass.off('click');
+ jqBtnGoBack.off('click');
+ $("#screen_profile").css('display', 'none');
}
});
})(); \ No newline at end of file