diff --git a/platforms/android/assets/www/js/home.js b/platforms/android/assets/www/js/home.js
index 8f5f6c2..507117e 100644
--- a/platforms/android/assets/www/js/home.js
+++ b/platforms/android/assets/www/js/home.js
@@ -31,6 +31,26 @@ $(".leaflet-control-zoom").css("visibility", "hidden");
//if (map.tap) {
// map.tap.disable();
//}
+
+// Tile layer
+map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
+// Places layer
+var placeLayer = L.geoJson(
+ {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
+ {
+ onEachFeature: onPlaceTap,
+ pointToLayer: function (feature, latlng) {
+ return L.circleMarker(latlng, {
+ radius: 14,
+ fillColor: "#ff7800",
+ color: "#000",
+ weight: 1,
+ opacity: 1,
+ fillOpacity: 0.6
+ });
+ }
+ }).addTo(map);
+
var lc = L.control.locate({
position: 'topleft', // set the location of the control
layer: undefined, // use your own layer for the location marker, creates a new layer by default
@@ -64,23 +84,6 @@ var lc = L.control.locate({
},
locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
}).addTo(map);
-map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
-// GeoJSON layer
-var placeLayer = L.geoJson(
- {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
- {
- onEachFeature: onPlaceTap,
- pointToLayer: function (feature, latlng) {
- return L.circleMarker(latlng, {
- radius: 14,
- fillColor: "#ff7800",
- color: "#000",
- weight: 1,
- opacity: 1,
- fillOpacity: 0.6
- });
- }
- }).addTo(map);
lc.start();
function mapPos(lat, lon) {
lockGot = true;
@@ -205,6 +208,8 @@ setInterval(pingServer, 5000);
setTimeout(function () {
onError();
}, 15 * 1000);
+
+
//////////////////////////////////////////////
// Profile, stats, and chat stuff
//////////////////////////////////////////////
@@ -291,11 +296,11 @@ function toggleChat() {
function closeChat() {
$('#chatmsgs').css('display', 'none');
- $('.chatbox').css('height', 'auto');
+ $('#chatbox').css('height', 'auto');
}
function openChat() {
- $('.chatbox').css('height', '50%');
+ $('#chatbox').css('height', '50%');
$('#chatmsgs').css('display', 'block');
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
}
@@ -309,9 +314,11 @@ function openProfile(user) {
}
function openRules() {
- $('#main-content').load("screens/rules.html", null, function (x) {
- $('#overlay-main').css('display', 'block');
- });
+ openmodal('rules', '#rules-modal');
+}
+
+function openIntro() {
+ openmodal('intro', '#intro-modal');
}
function openMenu(topage) {
@@ -346,7 +353,7 @@ document.addEventListener("backbutton", function (event) {
}
}, false);
// Show the rules
-if (localStorage.getItem("seenrules") !== 'yes') {
- openRules();
- localStorage.setItem("seenrules", 'yes');
+if (localStorage.getItem("seenintro") !== 'yes') {
+ openIntro();
+ localStorage.setItem("seenintro", 'yes');
}
\ No newline at end of file
diff --git a/platforms/android/assets/www/js/jquery.localize.js b/platforms/android/assets/www/js/jquery.localize.js
new file mode 100644
index 0000000..999c0a8
--- /dev/null
+++ b/platforms/android/assets/www/js/jquery.localize.js
@@ -0,0 +1,4 @@
+/*! Localize - v0.1.0 - 2015-08-21
+ * https://github.com/coderifous/jquery-localize
+ * Copyright (c) 2015 coderifous; Licensed MIT */
+!function(a){var b;return b=function(a){return a=a.replace(/_/,"-").toLowerCase(),a.length>3&&(a=a.substring(0,3)+a.substring(3).toUpperCase()),a},a.defaultLanguage=b(navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage),a.localize=function(c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;return null==d&&(d={}),u=this,g={},f=d.fileExtension||"json",j=function(a,b,c){var e;switch(null==c&&(c=1),c){case 1:return g={},d.loadBase?(e=a+("."+f),h(e,a,b,c)):j(a,b,2);case 2:if(b.length>=2)return e=""+a+"-"+b.substring(0,2)+"."+f,h(e,a,b,c);break;case 3:if(b.length>=5)return e=""+a+"-"+b.substring(0,5)+"."+f,h(e,a,b,c)}},h=function(b,c,e,f){var h,i,k;return null!=d.pathPrefix&&(b=""+d.pathPrefix+"/"+b),k=function(b){return a.extend(g,b),p(g),j(c,e,f+1)},i=function(){return d.fallback&&d.fallback!==e?j(c,d.fallback):void 0},h={url:b,dataType:"json",async:!1,timeout:null!=d.timeout?d.timeout:500,success:k,error:i},"file:"===window.location.protocol&&(h.error=function(b){return k(a.parseJSON(b.responseText))}),a.ajax(h)},p=function(a){return null!=d.callback?d.callback(a,e):e(a)},e=function(b){return a.localize.data[c]=b,u.each(function(){var c,d,e;return c=a(this),d=c.data("localize"),d||(d=c.attr("rel").match(/localize\[(.*?)\]/)[1]),e=t(d,b),null!=e?k(c,d,e):void 0})},k=function(b,c,d){return b.is("input")?n(b,c,d):b.is("textarea")?n(b,c,d):b.is("img")?m(b,c,d):b.is("optgroup")?o(b,c,d):a.isPlainObject(d)||b.html(d),a.isPlainObject(d)?l(b,d):void 0},n=function(b,c,d){var e;return e=a.isPlainObject(d)?d.value:d,b.is("[placeholder]")?b.attr("placeholder",e):b.val(e)},l=function(a,b){return r(a,"title",b),r(a,"href",b),s(a,"text",b)},o=function(a,b,c){return a.attr("label",c)},m=function(a,b,c){return r(a,"alt",c),r(a,"src",c)},t=function(a,b){var c,d,e,f;for(c=a.split(/\./),d=b,e=0,f=c.length;f>e;e++)a=c[e],d=null!=d?d[a]:null;return d},r=function(a,b,c){return c=t(b,c),null!=c?a.attr(b,c):void 0},s=function(a,b,c){return c=t(b,c),null!=c?a.text(c):void 0},q=function(a){var b;return"string"==typeof a?"^"+a+"$":null!=a.length?function(){var c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(q(b));return e}().join("|"):a},i=b(d.language?d.language:a.defaultLanguage),d.skipLanguage&&i.match(q(d.skipLanguage))||j(c,i,1),u},a.fn.localize=a.localize,a.localize.data={}}(jQuery);
\ No newline at end of file
diff --git a/platforms/android/assets/www/js/main.js b/platforms/android/assets/www/js/main.js
index 45ecfa0..12ef656 100644
--- a/platforms/android/assets/www/js/main.js
+++ b/platforms/android/assets/www/js/main.js
@@ -51,6 +51,28 @@ function openscreen(screenname, effect) {
}
}
+/**
+ * Opens a modal dialog over the top of everything else.
+ * @param {String} filename screens/[filename].html
+ * @param {String} modalselector [#id-of-the-modal]
+ * @returns {undefined}
+ */
+function openmodal(filename, modalselector) {
+ $('#modal-load-box').load("screens/" + filename + ".html", null, function (x) {
+ $(modalselector).css('z-index', 9999999);
+ $(modalselector).modal('show');
+ });
+}
+
+/**
+ * Close a modal (see openmodal)
+ * @param {String} modalselector
+ * @returns {undefined}
+ */
+function closemodal(modalselector) {
+ $(modalselector).modal(hide);
+}
+
function scanCode() {
try {
cordova.plugins.barcodeScanner.scan(
diff --git a/platforms/android/assets/www/lang/login-screen-fr.json b/platforms/android/assets/www/lang/login-screen-fr.json
new file mode 100644
index 0000000..b97a108
--- /dev/null
+++ b/platforms/android/assets/www/lang/login-screen-fr.json
@@ -0,0 +1,5 @@
+{
+ "login-header": "Connectez-vous pour TerranQuest",
+ "signup-question": "Ne pas avoir un compte Netsyms?",
+ "logging-in-spin": ""
+}
diff --git a/platforms/android/assets/www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js b/platforms/android/assets/www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js
index 2cedc03..4711883 100644
--- a/platforms/android/assets/www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js
+++ b/platforms/android/assets/www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js
@@ -8,28 +8,30 @@ cordova.define("phonegap-plugin-barcodescanner.BarcodeScanner", function(require
*/
-var exec = require("cordova/exec");
-
-/**
- * Constructor.
- *
- * @returns {BarcodeScanner}
- */
-function BarcodeScanner() {
-
- /**
- * Encoding constants.
- *
- * @type Object
- */
- this.Encode = {
- TEXT_TYPE: "TEXT_TYPE",
- EMAIL_TYPE: "EMAIL_TYPE",
- PHONE_TYPE: "PHONE_TYPE",
- SMS_TYPE: "SMS_TYPE"
- // CONTACT_TYPE: "CONTACT_TYPE", // TODO: not implemented, requires passing a Bundle class from Javascript to Java
- // LOCATION_TYPE: "LOCATION_TYPE" // TODO: not implemented, requires passing a Bundle class from Javascript to Java
- };
+ var exec = require("cordova/exec");
+
+ var scanInProgress = false;
+
+ /**
+ * Constructor.
+ *
+ * @returns {BarcodeScanner}
+ */
+ function BarcodeScanner() {
+
+ /**
+ * Encoding constants.
+ *
+ * @type Object
+ */
+ this.Encode = {
+ TEXT_TYPE: "TEXT_TYPE",
+ EMAIL_TYPE: "EMAIL_TYPE",
+ PHONE_TYPE: "PHONE_TYPE",
+ SMS_TYPE: "SMS_TYPE"
+ // CONTACT_TYPE: "CONTACT_TYPE", // TODO: not implemented, requires passing a Bundle class from Javascript to Java
+ // LOCATION_TYPE: "LOCATION_TYPE" // TODO: not implemented, requires passing a Bundle class from Javascript to Java
+ };
/**
* Barcode format constants, defined in ZXing library.
@@ -57,72 +59,92 @@ function BarcodeScanner() {
"upc_A": 16384,
"upc_E": 32768,
"upc_EAN_EXTENSION": 65536
- };
-};
+ };
+ }
/**
* Read code from scanner.
*
* @param {Function} successCallback This function will recieve a result object: {
- * text : '12345-mock', // The code that was scanned.
- * format : 'FORMAT_NAME', // Code format.
- * cancelled : true/false, // Was canceled.
- * }
+ * text : '12345-mock', // The code that was scanned.
+ * format : 'FORMAT_NAME', // Code format.
+ * cancelled : true/false, // Was canceled.
+ * }
* @param {Function} errorCallback
+ * @param config
*/
BarcodeScanner.prototype.scan = function (successCallback, errorCallback, config) {
- if(config instanceof Array) {
- // do nothing
- } else {
- if(typeof(config) === 'object') {
- config = [ config ];
- } else {
- config = [];
- }
- }
-
- if (errorCallback == null) {
- errorCallback = function () {
+ if (config instanceof Array) {
+ // do nothing
+ } else {
+ if (typeof(config) === 'object') {
+ config = [ config ];
+ } else {
+ config = [];
+ }
+ }
+
+ if (errorCallback == null) {
+ errorCallback = function () {
+ };
+ }
+
+ if (typeof errorCallback != "function") {
+ console.log("BarcodeScanner.scan failure: failure parameter not a function");
+ return;
+ }
+
+ if (typeof successCallback != "function") {
+ console.log("BarcodeScanner.scan failure: success callback parameter must be a function");
+ return;
+ }
+
+ if (scanInProgress) {
+ errorCallback('Scan is already in progress');
+ return;
+ }
+
+ scanInProgress = true;
+
+ exec(
+ function(result) {
+ scanInProgress = false;
+ successCallback(result);
+ },
+ function(error) {
+ scanInProgress = false;
+ errorCallback(error);
+ },
+ 'BarcodeScanner',
+ 'scan',
+ config
+ );
};
- }
-
- if (typeof errorCallback != "function") {
- console.log("BarcodeScanner.scan failure: failure parameter not a function");
- return;
- }
-
- if (typeof successCallback != "function") {
- console.log("BarcodeScanner.scan failure: success callback parameter must be a function");
- return;
- }
- exec(successCallback, errorCallback, 'BarcodeScanner', 'scan', config);
-};
-
-//-------------------------------------------------------------------
-BarcodeScanner.prototype.encode = function (type, data, successCallback, errorCallback, options) {
- if (errorCallback == null) {
- errorCallback = function () {
+ //-------------------------------------------------------------------
+ BarcodeScanner.prototype.encode = function (type, data, successCallback, errorCallback, options) {
+ if (errorCallback == null) {
+ errorCallback = function () {
+ };
+ }
+
+ if (typeof errorCallback != "function") {
+ console.log("BarcodeScanner.encode failure: failure parameter not a function");
+ return;
+ }
+
+ if (typeof successCallback != "function") {
+ console.log("BarcodeScanner.encode failure: success callback parameter must be a function");
+ return;
+ }
+
+ exec(successCallback, errorCallback, 'BarcodeScanner', 'encode', [
+ {"type": type, "data": data, "options": options}
+ ]);
};
- }
-
- if (typeof errorCallback != "function") {
- console.log("BarcodeScanner.encode failure: failure parameter not a function");
- return;
- }
-
- if (typeof successCallback != "function") {
- console.log("BarcodeScanner.encode failure: success callback parameter must be a function");
- return;
- }
-
- exec(successCallback, errorCallback, 'BarcodeScanner', 'encode', [
- {"type": type, "data": data, "options": options}
- ]);
-};
-var barcodeScanner = new BarcodeScanner();
-module.exports = barcodeScanner;
+ var barcodeScanner = new BarcodeScanner();
+ module.exports = barcodeScanner;
});
diff --git a/platforms/android/assets/www/screens/home.html b/platforms/android/assets/www/screens/home.html
index 0213329..397805e 100644
--- a/platforms/android/assets/www/screens/home.html
+++ b/platforms/android/assets/www/screens/home.html
@@ -38,7 +38,7 @@