summaryrefslogtreecommitdiffstats
path: root/install/html/ffconfig_page.js
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-10-01 17:36:42 +0200
committerRob Crittenden <rcritten@redhat.com>2012-10-04 18:08:26 -0400
commit696fce5c8d4e480c6a731686c8952a4e7ace575f (patch)
tree50c9de739c9eafe8dd68af102ea74f6210ae404f /install/html/ffconfig_page.js
parent247a3a43b7fb9eac9af9497e61cdc9c964bee4ff (diff)
downloadfreeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.tar.gz
freeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.tar.xz
freeipa-696fce5c8d4e480c6a731686c8952a4e7ace575f.zip
Configuration pages changed to use new FF extension
browserconfig.html was changed to use new FF extension. The page is completely Firefox specific therefore the title was changed from 'Configure browser' to 'Firefox configuration'. Instruction to import CA cert in unauthorized.html are FF specific too, so they were moved to browserconfig.html. Unauthorized.html text was changed to distinguish FF config and other browsers. Now the page shows link for FF (browserconfig.html) and other browsers (ssbrowser.html). Ssbrowser.html should be enhanced by more configurations and browsers later [1]. Old configuration method was moved to ssbrowser.html. Unauthorized dialog in Web UI now links to http://../unauthorized.html instead of https. This change is done because of FF strange handling of extension installations from https sites [2]. Firefox allows ext. installation from https sites only when the certificate is signed by some build-in CA. To allow custom CAs an option in about:config has to be changed which don't help us at all because we wants to avoid manual changes in about:config. The design of browserconfig is inspired by Kyle Baker's design (2.1 Enhancements_v2.odt). It is not exactly the same. Highlighting of the steps wasn't used because in some cases we can switch some steps. Ticket: https://fedorahosted.org/freeipa/ticket/3094 [1] https://fedorahosted.org/freeipa/ticket/823 [2] https://bugzilla.mozilla.org/show_bug.cgi?id=688383
Diffstat (limited to 'install/html/ffconfig_page.js')
-rw-r--r--install/html/ffconfig_page.js148
1 files changed, 148 insertions, 0 deletions
diff --git a/install/html/ffconfig_page.js b/install/html/ffconfig_page.js
new file mode 100644
index 000000000..1c8386c5a
--- /dev/null
+++ b/install/html/ffconfig_page.js
@@ -0,0 +1,148 @@
+/* Authors:
+ * Petr Vobornik <pvoborni@redhat.com>
+ *
+ * Copyright (C) 2012 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ $(document).ready(function() {
+
+ var set_enabled = function(steps, enabled) {
+
+ var method;
+
+ if (enabled) method = function(el) { el.removeClass('ui-state-disabled'); };
+ else method = function(el) { el.addClass('ui-state-disabled'); };
+
+ for (var i=0; i<steps.length; i++) {
+ method($(steps[i]));
+ }
+ };
+
+ var show_installed = function(installed) {
+
+ if (installed) {
+ $('#ext-installed').show();
+ $('#ext-missing').hide();
+ } else {
+ $('#ext-installed').hide();
+ $('#ext-missing').show();
+ }
+ set_enabled(['#step3'], installed);
+ };
+
+ var install = function(event) {
+
+ window.location = $(event.target).parent().attr('href');
+ check_until_installed();
+ return false;
+ };
+
+ var check_until_installed = function() {
+
+ var installed = IPA.browser_config.extension_installed();
+ show_installed(installed);
+
+ if (!installed) {
+ window.setTimeout(function() {
+ check_until_installed();
+ }, 300);
+ }
+ };
+
+ var configure = function() {
+ IPA.browser_config.configure_firefox();
+ var result = IPA.browser_config.get_configure_result();
+ var installed = IPA.browser_config.extension_installed();
+
+ $('#config-success').hide();
+ $('#config-aborted').hide();
+ $('#config-noext').hide();
+ $('#config-error').hide();
+
+ if (result === 'configured') {
+ $('#config-success').show();
+ } else if (result == 'aborted') {
+ $('#config-aborted').show();
+ } else if (!installed) {
+ $('#config-noext').show();
+ } else {
+ $('#config-error').show();
+ }
+ return false;
+ };
+
+ var check_version = function() {
+
+ var firefox = $.browser.mozilla === true;
+ var version = $.browser.version;
+
+ if (!firefox) {
+ $('#wrongbrowser').show();
+ set_enabled(['#step1', '#step2', '#step3'], false);
+ } else {
+ // Disable for all version of FF older than 15. Theoretically
+ // the extension is compatible with version 3.6, 10 and later
+ // FF 4-9 are not compatible because there is an error in loading
+ // resource from chrome.manifest
+ if (compare_version(version, '15') === -1) {
+ $('#step2a').show();
+ set_enabled(['#step2', '#step3'], false);
+ }// else if (compare_version(version, '15') === -1) {
+// $('#step2a').show();
+// $('#older-compatible').show();
+// $('#older-required').hide();
+// }
+ }
+ };
+
+ var compare_version = function(a, b) {
+
+ var only_digits =/[^\d.]/g;
+
+ var a_parts = a.replace(only_digits, '').split('.');
+ var b_parts = b.replace(only_digits, '').split('.');
+
+ for (var i=0; i<a_parts.length && i<b_parts.length; i++) {
+ var a_num = Number(a_parts[i]);
+ var b_num = Number(b_parts[i]);
+
+ if (a_num > b_num) return 1;
+ else if (a_num < b_num) return -1;
+ }
+
+ if (a_parts.length !== b_parts.length) {
+ return a_parts.length > b_parts.length ? 1 : -1;
+ }
+
+ return 0;
+ };
+
+ $('#install-link').click(install);
+ $('#reinstall-link').click(install);
+ $('#configure-link').click(configure);
+
+ $('#notfirefox-link').button();
+ $('#ca-link').button();
+ $('#oldfirefox-link').button();
+ $('#reinstall-link').button();
+ $('#install-link').button();
+ $('#configure-link').button();
+ $('#return-link').button();
+
+ check_version();
+ show_installed(IPA.browser_config.extension_installed());
+}); \ No newline at end of file