remove AAQSystemInfo from global scope

This commit is contained in:
Leo McArdle 2021-12-01 12:02:45 +00:00 коммит произвёл Leo McArdle
Родитель 3d078070de
Коммит 031054affa
4 изменённых файлов: 190 добавлений и 197 удалений

Просмотреть файл

@ -4,205 +4,199 @@ import BrowserDetect from "./browserdetect";
* Prepopulate system info in AAQ form
*/
(function($) {
"use strict";
export default function AAQSystemInfo($form) {
AAQSystemInfo.prototype.init.call(this, $form);
}
function AAQSystemInfo($form) {
AAQSystemInfo.prototype.init.call(this, $form);
}
AAQSystemInfo.prototype = {
init: function($form) {
var self = this,
$input;
AAQSystemInfo.prototype = {
init: function($form) {
var self = this,
$input;
// Autofill the user agent
$form.find('input[name="useragent"]').val(navigator.userAgent);
// Autofill the user agent
$form.find('input[name="useragent"]').val(navigator.userAgent);
// Only guess at OS, FF version, plugins if we are on the desktop
// asking a firefox desktop question (or s/desktop/mobile/).
if (
(BrowserDetect.browser === "fx" && self.isDesktopFF()) ||
(BrowserDetect.browser === "m" && self.isMobileFF()) ||
(BrowserDetect.browser === "fxios" && self.isFirefoxForIOS())
) {
$input = $form.find('input[name="os"]');
if (!$input.val()) {
$input.val(self.getOS());
}
$input = $form.find('input[name="ff_version"]');
if (!$input.val()) {
$input.val(self.getFirefoxVersion());
}
$input = $form.find('input[name="device"]');
if (!$input.val()) {
$input.val(self.getDevice());
}
$input = $form.find('textarea[name="plugins"]');
if (!$input.val()) {
$input.val(self.getPlugins());
}
} else {
$form.find('li.system-details-info').hide();
}
// Only guess at OS, FF version, plugins if we are on the desktop
// asking a firefox desktop question (or s/desktop/mobile/).
if (
(BrowserDetect.browser === "fx" && self.isDesktopFF()) ||
(BrowserDetect.browser === "m" && self.isMobileFF()) ||
(BrowserDetect.browser === "fxios" && self.isFirefoxForIOS())
) {
$input = $form.find('input[name="os"]');
if (!$input.val()) {
$input.val(self.getOS());
}
$input = $form.find('input[name="ff_version"]');
if (!$input.val()) {
$input.val(self.getFirefoxVersion());
}
$input = $form.find('input[name="device"]');
if (!$input.val()) {
$input.val(self.getDevice());
}
$input = $form.find('textarea[name="plugins"]');
if (!$input.val()) {
$input.val(self.getPlugins());
}
} else {
$form.find('li.system-details-info').hide();
}
self.getTroubleshootingInfo();
},
getOS: function() {
// Returns a string representing the user's operating system
var os = [
["Android", /Android/i],
["Maemo", /Maemo/i],
["Windows 3.11", /Win16/i],
["Windows 95", /(Windows 95)|(Win95)|(Windows_95)/i],
["Windows 98", /(Windows 98)|(Win98)/i],
["Windows 2000", /(Windows NT 5.0)|(Windows 2000)/i],
["Windows XP", /(Windows NT 5.1)|(Windows XP)/i],
["Windows Server 2003", /(Windows NT 5.2)/i],
["Windows Vista", /(Windows NT 6.0)/i],
["Windows 7", /(Windows NT 6.1)/i],
["Windows 8", /(Windows NT 6.2)/i],
["Windows 8.1", /(Windows NT 6.3)/i],
["Windows 10", /(Windows NT 6.4)|(Windows NT 10.0)/i],
["Windows NT 4.0", /(Windows NT 4.0)|(WinNT4.0)/i],
["Windows ME", /Windows ME/i],
["Windows", /(Windows)|(WinNT)/i],
["OpenBSD", /OpenBSD/i],
["SunOS", /SunOS/i],
["Linux", /(Linux)|(X11)/i],
["iOS", /(iPhone)|(iPad)|(iPod touch)/i],
["Mac OS X 10.4", /(Mac OS X 10.4)/i],
["Mac OS X 10.5", /(Mac OS X 10.5)/i],
["Mac OS X 10.6", /(Mac OS X 10.6)/i],
["Mac OS X 10.7", /(Mac OS X 10.7)/i],
["Mac OS X 10.8", /(Mac OS X 10.8)/i],
["Mac OS X 10.9", /(Mac OS X 10.9)/i],
["Mac OS X 10.10", /(Mac OS X 10.10)/i],
["Mac OS", /(Mac_PowerPC)|(Macintosh)/i],
["QNX", /QNX/i],
["BeOS", /BeOS/i],
["OS/2", /OS\/2/i]
],
ua = navigator.userAgent,
i,
l;
for (i = 0, l = os.length; i < l; i++) {
if (os[i][1].test(ua)) {
return os[i][0];
}
}
return navigator.oscpu || "";
},
getPlugins: function() {
// Returns wiki markup for the list of plugins
var plugins = [],
i,
d;
for (i = 0; i < navigator.plugins.length; i++) {
d = navigator.plugins[i].description.replace(/<[^>]+>/gi, "");
if (plugins.indexOf(d) === -1) {
plugins.push(d);
}
}
if (plugins.length > 0) {
plugins = "* " + plugins.join("\n* ");
} else {
plugins = "";
}
return plugins;
},
getFirefoxVersion: function() {
// Returns a string with the version of Firefox
var version = /Firefox\/(\S+)/i.exec(navigator.userAgent);
if (version) {
return version[1];
}
version = /FxiOS\/(\S+)/i.exec(navigator.userAgent);
if (version) {
return version[1];
}
return "";
},
getDevice: function() {
// Returns a string with the device being used
var device = /\(Mobile; (.+); .+\)/i.exec(navigator.userAgent);
if (device) {
return device[1];
}
device = /\((iPad|iPhone|iPod touch);/.exec(navigator.userAgent);
if (device) {
return device[1];
}
return "";
},
isDesktopFF: function() {
// Is the question for FF on the desktop?
return document.location.pathname.indexOf("desktop") >= 0 ||
document.location.pathname.indexOf("firefox-enterprise") >= 0;
},
isMobileFF: function() {
// Is the question for FF on mobile?
return document.location.pathname.indexOf("mobile") >= 0
},
isFirefoxForIOS: function() {
// Is the question for Firefox for iOS?
return document.location.pathname.indexOf("ios") >= 0;
},
getTroubleshootingInfo: function(addEvent) {
var self = this;
var browserData;
if (addEvent === undefined) {
addEvent = true;
}
// If the troubleshoot input exists, try to get the data.
if ($("#id_troubleshooting").length === 0) {
// No troubleshooting form, so no point in trying to get the data.
return;
}
// First we try to use the builtin API:
remoteTroubleshooting.available(function(yesno) {
if (yesno) {
remoteTroubleshooting.getData(function(data) {
browserData = data;
});
$("#share-data").click(function(e) {
// The user must click button to save the data.
e.preventDefault();
handleData(browserData);
return false;
});
} else {
$("#share-data").click(function (e) {
e.preventDefault();
$("#troubleshooting-button").hide();
$("#troubleshooting-manual").show();
$("#troubleshooting-field").show();
return false;
});
}
});
// Handle the troubleshooting JSON data.
function handleData(data) {
var modifiedPreferences = data.modifiedPreferences;
data.modifiedPreferences = {};
for (var key in modifiedPreferences) {
if (key.indexOf("print.") !== 0) {
data.modifiedPreferences[key] = modifiedPreferences[key];
}
}
// The last two parameters cause this to pretty print,
// in case anyone looks at it.
data = JSON.stringify(data, null, " ");
$("#id_troubleshooting").val(data);
$("#troubleshooting-field").show();
self.getTroubleshootingInfo();
},
getOS: function() {
// Returns a string representing the user's operating system
var os = [
["Android", /Android/i],
["Maemo", /Maemo/i],
["Windows 3.11", /Win16/i],
["Windows 95", /(Windows 95)|(Win95)|(Windows_95)/i],
["Windows 98", /(Windows 98)|(Win98)/i],
["Windows 2000", /(Windows NT 5.0)|(Windows 2000)/i],
["Windows XP", /(Windows NT 5.1)|(Windows XP)/i],
["Windows Server 2003", /(Windows NT 5.2)/i],
["Windows Vista", /(Windows NT 6.0)/i],
["Windows 7", /(Windows NT 6.1)/i],
["Windows 8", /(Windows NT 6.2)/i],
["Windows 8.1", /(Windows NT 6.3)/i],
["Windows 10", /(Windows NT 6.4)|(Windows NT 10.0)/i],
["Windows NT 4.0", /(Windows NT 4.0)|(WinNT4.0)/i],
["Windows ME", /Windows ME/i],
["Windows", /(Windows)|(WinNT)/i],
["OpenBSD", /OpenBSD/i],
["SunOS", /SunOS/i],
["Linux", /(Linux)|(X11)/i],
["iOS", /(iPhone)|(iPad)|(iPod touch)/i],
["Mac OS X 10.4", /(Mac OS X 10.4)/i],
["Mac OS X 10.5", /(Mac OS X 10.5)/i],
["Mac OS X 10.6", /(Mac OS X 10.6)/i],
["Mac OS X 10.7", /(Mac OS X 10.7)/i],
["Mac OS X 10.8", /(Mac OS X 10.8)/i],
["Mac OS X 10.9", /(Mac OS X 10.9)/i],
["Mac OS X 10.10", /(Mac OS X 10.10)/i],
["Mac OS", /(Mac_PowerPC)|(Macintosh)/i],
["QNX", /QNX/i],
["BeOS", /BeOS/i],
["OS/2", /OS\/2/i]
],
ua = navigator.userAgent,
i,
l;
for (i = 0, l = os.length; i < l; i++) {
if (os[i][1].test(ua)) {
return os[i][0];
}
}
};
return navigator.oscpu || "";
},
getPlugins: function() {
// Returns wiki markup for the list of plugins
var plugins = [],
i,
d;
for (i = 0; i < navigator.plugins.length; i++) {
d = navigator.plugins[i].description.replace(/<[^>]+>/gi, "");
if (plugins.indexOf(d) === -1) {
plugins.push(d);
}
}
if (plugins.length > 0) {
plugins = "* " + plugins.join("\n* ");
} else {
plugins = "";
}
return plugins;
},
getFirefoxVersion: function() {
// Returns a string with the version of Firefox
var version = /Firefox\/(\S+)/i.exec(navigator.userAgent);
if (version) {
return version[1];
}
version = /FxiOS\/(\S+)/i.exec(navigator.userAgent);
if (version) {
return version[1];
}
return "";
},
getDevice: function() {
// Returns a string with the device being used
var device = /\(Mobile; (.+); .+\)/i.exec(navigator.userAgent);
if (device) {
return device[1];
}
device = /\((iPad|iPhone|iPod touch);/.exec(navigator.userAgent);
if (device) {
return device[1];
}
return "";
},
isDesktopFF: function() {
// Is the question for FF on the desktop?
return document.location.pathname.indexOf("desktop") >= 0 ||
document.location.pathname.indexOf("firefox-enterprise") >= 0;
},
isMobileFF: function() {
// Is the question for FF on mobile?
return document.location.pathname.indexOf("mobile") >= 0
},
isFirefoxForIOS: function() {
// Is the question for Firefox for iOS?
return document.location.pathname.indexOf("ios") >= 0;
},
getTroubleshootingInfo: function(addEvent) {
var self = this;
var browserData;
window.AAQSystemInfo = AAQSystemInfo;
})(jQuery);
if (addEvent === undefined) {
addEvent = true;
}
// If the troubleshoot input exists, try to get the data.
if ($("#id_troubleshooting").length === 0) {
// No troubleshooting form, so no point in trying to get the data.
return;
}
// First we try to use the builtin API:
remoteTroubleshooting.available(function(yesno) {
if (yesno) {
remoteTroubleshooting.getData(function(data) {
browserData = data;
});
$("#share-data").click(function(e) {
// The user must click button to save the data.
e.preventDefault();
handleData(browserData);
return false;
});
} else {
$("#share-data").click(function (e) {
e.preventDefault();
$("#troubleshooting-button").hide();
$("#troubleshooting-manual").show();
$("#troubleshooting-field").show();
return false;
});
}
});
// Handle the troubleshooting JSON data.
function handleData(data) {
var modifiedPreferences = data.modifiedPreferences;
data.modifiedPreferences = {};
for (var key in modifiedPreferences) {
if (key.indexOf("print.") !== 0) {
data.modifiedPreferences[key] = modifiedPreferences[key];
}
}
// The last two parameters cause this to pretty print,
// in case anyone looks at it.
data = JSON.stringify(data, null, " ");
$("#id_troubleshooting").val(data);
$("#troubleshooting-field").show();
}
}
};

Просмотреть файл

@ -7,6 +7,7 @@ import AjaxPreview from "sumo/js/ajaxpreview";
import AjaxVote from "sumo/js/ajaxvote";
import { getQueryParamsAsDict, getReferrer, getSearchQuery, unquote } from "sumo/js/main";
import Marky from "sumo/js/markup";
import AAQSystemInfo from "sumo/js/aaq";
/*
* questions.js

Просмотреть файл

@ -35,7 +35,6 @@ const entrypoints = {
],
questions: [
"sumo/js/remote.js",
"sumo/js/aaq.js",
"sumo/js/questions.js",
"sumo/js/tags.filter.js",
"sumo/js/tags.js",

Просмотреть файл

@ -41,7 +41,6 @@ module.exports = {
"gettext": "readonly",
"interpolate": "readonly",
"Modernizr": "readonly",
"AAQSystemInfo": "readonly",
"remoteTroubleshooting": "readonly",
"d3": "readonly",
"abs_y": "readonly",