From 8458ca400b36e6b8b4f5c261b5cfd05303a31e67 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 20 Mar 2015 14:24:51 -0400 Subject: [PATCH 1/2] Add basic browser and platform into to changeset tags --- js/id/core/connection.js | 9 ++++--- js/id/id.js | 53 ++++++++++++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/js/id/core/connection.js b/js/id/core/connection.js index d0c76a6f2..9743fd777 100644 --- a/js/id/core/connection.js +++ b/js/id/core/connection.js @@ -241,11 +241,14 @@ iD.Connection = function() { }; connection.changesetTags = function(comment, imageryUsed) { - var tags = { + var detected = iD.detect(), + tags = { created_by: 'iD ' + iD.version, - host: (window.location.origin + window.location.pathname).substr(0, 255), - locale: iD.detect().locale, imagery_used: imageryUsed.join(';').substr(0, 255), + 'iD:host': (window.location.origin + window.location.pathname).substr(0, 255), + 'iD:locale': detected.locale, + 'iD:browser': detected.browser + ' ' + detected.version, + 'iD:platform': detected.platform }; if (comment) { diff --git a/js/id/id.js b/js/id/id.js index 58972fc2a..bf9491a07 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -330,17 +330,39 @@ iD.version = '1.7.0'; var detected = {}; var ua = navigator.userAgent, - msie = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})'); + m = null; - if (msie.exec(ua) !== null) { - var rv = parseFloat(RegExp.$1); - detected.support = !(rv && rv < 9); + m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i); // IE11 + if (m !== null) { + detected.browser = 'msie'; + detected.version = m[1]; + } else { + m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); + if (m !== null) { + detected.browser = m[1]; + detected.version = m[2]; + m = ua.match(/version\/([\.\d]+)/i); + if (m !== null) { + detected.version = m[1]; + } + } else { + detected.browser = navigator.appName; + detected.version = navigator.appVersion; + } + } + + // keep major.minor version only.. + detected.version = detected.version.split(/\W/).slice(0,2).join('.'); + + if (detected.browser.toLowerCase() === 'msie') { + detected.browser = 'Internet Explorer'; + detected.support = parseFloat(detected.version) > 9; } else { detected.support = true; } // Added due to incomplete svg style support. See #715 - detected.opera = ua.indexOf('Opera') >= 0; + detected.opera = (detected.browser.toLowerCase() === 'opera'); detected.locale = navigator.language || navigator.userLanguage; @@ -350,11 +372,22 @@ iD.version = '1.7.0'; return navigator.userAgent.indexOf(x) !== -1; } - if (nav('Win')) detected.os = 'win'; - else if (nav('Mac')) detected.os = 'mac'; - else if (nav('X11')) detected.os = 'linux'; - else if (nav('Linux')) detected.os = 'linux'; - else detected.os = 'win'; + if (nav('Win')) { + detected.os = 'win'; + detected.platform = 'Windows'; + } + else if (nav('Mac')) { + detected.os = 'mac'; + detected.platform = 'Macintosh'; + } + else if (nav('X11') || nav('Linux')) { + detected.os = 'linux'; + detected.platform = 'Linux'; + } + else { + detected.os = 'win'; + detected.platform = 'Unknown'; + } iD.detect = function() { return detected; }; })(); From cfad723893fdbbb53f655803ad3e59710f042b74 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 20 Mar 2015 22:23:44 -0400 Subject: [PATCH 2/2] No need to namespace changeset keys --- js/id/core/connection.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/js/id/core/connection.js b/js/id/core/connection.js index 9743fd777..3a16b19ff 100644 --- a/js/id/core/connection.js +++ b/js/id/core/connection.js @@ -243,13 +243,13 @@ iD.Connection = function() { connection.changesetTags = function(comment, imageryUsed) { var detected = iD.detect(), tags = { - created_by: 'iD ' + iD.version, - imagery_used: imageryUsed.join(';').substr(0, 255), - 'iD:host': (window.location.origin + window.location.pathname).substr(0, 255), - 'iD:locale': detected.locale, - 'iD:browser': detected.browser + ' ' + detected.version, - 'iD:platform': detected.platform - }; + created_by: 'iD ' + iD.version, + imagery_used: imageryUsed.join(';').substr(0, 255), + host: (window.location.origin + window.location.pathname).substr(0, 255), + locale: detected.locale, + browser: detected.browser + ' ' + detected.version, + platform: detected.platform + }; if (comment) { tags.comment = comment.substr(0, 255);