summaryrefslogtreecommitdiffstats
path: root/install/ui
diff options
context:
space:
mode:
Diffstat (limited to 'install/ui')
-rw-r--r--install/ui/Makefile.am1
-rw-r--r--install/ui/config.js39
-rw-r--r--install/ui/index.html64
-rw-r--r--install/ui/jsl.conf2
-rw-r--r--install/ui/login.html15
-rw-r--r--install/ui/reset_password.html15
-rw-r--r--install/ui/src/libs/Makefile.am1
-rw-r--r--install/ui/src/libs/loader.js.in103
8 files changed, 173 insertions, 67 deletions
diff --git a/install/ui/Makefile.am b/install/ui/Makefile.am
index 77aab17a..94bedace 100644
--- a/install/ui/Makefile.am
+++ b/install/ui/Makefile.am
@@ -10,7 +10,6 @@ SUBDIRS = \
appdir = $(IPA_DATA_DIR)/ui
app_DATA = \
- config.js \
favicon.ico \
index.html \
jquery-ui.css \
diff --git a/install/ui/config.js b/install/ui/config.js
deleted file mode 100644
index e984676f..00000000
--- a/install/ui/config.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* 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/>.
-*/
-
-var dojoConfig= {
- baseUrl: "js",
- has: {
- 'dojo-firebug': false,
- 'dojo-debug-messages': true
- },
- parseOnLoad: false,
- async: true,
- packages: [
- {
- name:'dojo',
- location:'dojo'
- },
- {
- name: 'freeipa',
- location: 'freeipa'
- }
- ]
-}; \ No newline at end of file
diff --git a/install/ui/index.html b/install/ui/index.html
index 75ff8299..4be83407 100644
--- a/install/ui/index.html
+++ b/install/ui/index.html
@@ -1,32 +1,62 @@
<!DOCTYPE html>
<html>
<head>
-<meta charset="utf-8">
+ <meta charset="utf-8">
<title>IPA: Identity Policy Audit</title>
-
- <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
- <link rel="stylesheet" type="text/css" href="ipa.css" />
- <!--ie only stylesheet -->
<!--[if IE]>
- <link rel="stylesheet" type="text/css" href="ie.css" />
+ <meta id="ie-detector">
<![endif]-->
- <link rel="icon" type="image/ico" href="favicon.ico">
- <script type="text/javascript" src="js/libs/json2.js"></script>
- <script type="text/javascript" src="js/libs/jquery.js"></script>
- <script type="text/javascript" src="js/libs/jquery-ui.js"></script>
- <script type="text/javascript" src="js/libs/jquery.ordered-map.js"></script>
- <script type="text/javascript" src="js/libs/browser.js"></script>
+ <script type="text/javascript" src="js/libs/loader.js"></script>
+ <script type="text/javascript">
+
+ var dojoConfig = {
+ baseUrl: "js",
+ has: {
+ 'dojo-firebug': false,
+ 'dojo-debug-messages': true
+ },
+ parseOnLoad: false,
+ async: true,
+ packages: [
+ {
+ name:'dojo',
+ location:'dojo'
+ },
+ {
+ name: 'freeipa',
+ location: 'freeipa'
+ }
+ ],
+ cacheBust: ipa_loader.num_version || ""
+ };
+ (function() {
+ var ie = !!document.getElementById('ie-detector');
+ var styles = ['jquery-ui.css', 'ipa.css'];
+ if (ie) styles.push('ie.css');
+ var icons = ['favicon.ico'];
+ var scripts = [
+ 'js/libs/json2.js',
+ 'js/libs/jquery.js',
+ 'js/libs/jquery-ui.js',
+ 'js/libs/jquery.ordered-map.js',
+ 'js/libs/browser.js',
+ 'js/dojo/dojo.js'
+ ];
+ ipa_loader.scripts(scripts, function() {
+ require(['freeipa/app'], function(app){ app.run(); });
+ });
+ ipa_loader.styles(styles);
+ ipa_loader.icons(icons);
- <script type="text/javascript" src="config.js"></script>
- <script type="text/javascript" src="js/dojo/dojo.js"></script>
- <script type="text/javascript">
- require(['freeipa/app'], function(app){ app.run(); });
+ })();
</script>
</head>
-<body></body>
+<body>
+ <noscript>This application requires JavaScript enabled.</noscript>
+</body>
</html> \ No newline at end of file
diff --git a/install/ui/jsl.conf b/install/ui/jsl.conf
index e9e3ecc5..7c3be586 100644
--- a/install/ui/jsl.conf
+++ b/install/ui/jsl.conf
@@ -120,6 +120,7 @@
+define jQuery
+define define
+define require
++define ipa_loader
### Files
# Specify which files to lint
@@ -128,6 +129,7 @@
# or "+process Folder\Path\*.htm".
#
++process index.html
+process src/libs/browser.js
+process src/libs/jquery.ordered-map.js
+process src/freeipa/*.js
diff --git a/install/ui/login.html b/install/ui/login.html
index 5545e883..f3a0dd37 100644
--- a/install/ui/login.html
+++ b/install/ui/login.html
@@ -3,11 +3,16 @@
<head>
<meta charset="utf-8">
<title>IPA: Identity Policy Audit</title>
-
- <link rel="stylesheet" type="text/css" href="ipa.css" />
-
- <script type="text/javascript" src="js/libs/jquery.js"></script>
- <script type="text/javascript" src="login.js"></script>
+ <script type="text/javascript" src="js/libs/loader.js"></script>
+ <script type="text/javascript">
+ (function() {
+ ipa_loader.styles(['ipa.css']);
+ ipa_loader.scripts([
+ 'js/libs/jquery.js',
+ 'login.js'
+ ]);
+ })();
+ </script>
</head>
<body class="info-page login-page">
diff --git a/install/ui/reset_password.html b/install/ui/reset_password.html
index 4dbbb7aa..560e8a5e 100644
--- a/install/ui/reset_password.html
+++ b/install/ui/reset_password.html
@@ -3,11 +3,16 @@
<head>
<meta charset="utf-8">
<title>IPA: Identity Policy Audit</title>
-
- <link rel="stylesheet" type="text/css" href="ipa.css" />
-
- <script type="text/javascript" src="js/libs/jquery.js"></script>
- <script type="text/javascript" src="reset_password.js"></script>
+ <script type="text/javascript" src="js/libs/loader.js"></script>
+ <script type="text/javascript">
+ (function() {
+ ipa_loader.styles(['ipa.css']);
+ ipa_loader.scripts([
+ 'js/libs/jquery.js',
+ 'reset_password.js'
+ ]);
+ })();
+ </script>
</head>
<body class="info-page login-page">
diff --git a/install/ui/src/libs/Makefile.am b/install/ui/src/libs/Makefile.am
index 807b9d8d..6991e474 100644
--- a/install/ui/src/libs/Makefile.am
+++ b/install/ui/src/libs/Makefile.am
@@ -7,6 +7,7 @@ app_DATA = \
jquery.ordered-map.js \
jquery-ui.js \
json2.js \
+ loader.js \
$(NULL)
EXTRA_DIST = \
diff --git a/install/ui/src/libs/loader.js.in b/install/ui/src/libs/loader.js.in
new file mode 100644
index 00000000..134e061e
--- /dev/null
+++ b/install/ui/src/libs/loader.js.in
@@ -0,0 +1,103 @@
+/* Authors:
+ * Petr Vobornik <pvoborni@redhat.com>
+ *
+ * Copyright (C) 2013 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/>.
+*/
+(function() {
+
+ var loader = window.ipa_loader = {
+ num_version: '__NUM_VERSION__'
+ };
+
+ var head = document.getElementsByTagName('head')[0];
+
+ function link(path, rel) {
+ rel = rel || 'stylesheet';
+ var el = document.createElement('link');
+ el.setAttribute('rel', rel);
+ el.setAttribute('type', 'text/css');
+ el.setAttribute('href', path);
+ head.appendChild(el);
+ }
+
+ function js(path, callback) {
+ var el = document.createElement('script');
+ el.setAttribute('type', 'text/javascript');
+ el.setAttribute('src', path);
+ var done = false;
+ var onload = function () {
+ if (done) return;
+ done = true;
+ callback();
+ };
+
+ // older ie
+ el.onreadystatechange = function () {
+ if (el.readyState === 'loaded' || el.readyState === 'complete') {
+ el.onreadystatechange = null;
+ onload();
+ }
+ };
+ // others
+ el.onload = onload;
+
+ head.appendChild(el);
+ }
+
+ function synchronous_download(paths, callback) {
+
+ var dl = paths.splice(0, 1)[0];
+ if (dl) {
+ js(dl, function() {
+ synchronous_download(paths, callback);
+ });
+ } else {
+ if (callback) callback();
+ }
+ }
+
+ function version_suffix() {
+ var suffix = '';
+ if (loader.num_version) {
+ suffix = '?v=' + loader.num_version;
+ }
+ return suffix;
+ }
+
+ loader.scripts = function(scripts, callback) {
+ var suffix = version_suffix();
+ var syn_code = [];
+ for (var i=0; i < scripts.length; i++) {
+ syn_code.push(scripts[i]+suffix);
+ }
+ synchronous_download(syn_code, callback);
+ };
+
+ loader.styles = function(styles) {
+ var suffix = version_suffix();
+ for (var i=0; i < styles.length; i++) {
+ link(styles[i] + suffix);
+ }
+ };
+
+ loader.icons = function(icons) {
+ var suffix = version_suffix();
+ for (var i=0; i < icons.length; i++) {
+ link(icons[i] + suffix, 'icon');
+ }
+ };
+})(); \ No newline at end of file