diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | install/conf/ipa.conf | 9 | ||||
-rw-r--r-- | install/html/browserconfig.html | 29 | ||||
-rw-r--r-- | install/html/ssbrowser.html | 49 | ||||
-rw-r--r-- | install/html/unauthorized.html | 16 | ||||
-rw-r--r-- | install/ui/Makefile.am | 1 | ||||
-rw-r--r-- | install/ui/config.js | 39 | ||||
-rw-r--r-- | install/ui/index.html | 64 | ||||
-rw-r--r-- | install/ui/jsl.conf | 2 | ||||
-rw-r--r-- | install/ui/login.html | 15 | ||||
-rw-r--r-- | install/ui/reset_password.html | 15 | ||||
-rw-r--r-- | install/ui/src/libs/Makefile.am | 1 | ||||
-rw-r--r-- | install/ui/src/libs/loader.js.in | 103 |
14 files changed, 243 insertions, 105 deletions
@@ -54,10 +54,10 @@ install/missing install/stamp-h1 install/po/test.po install/po/test_locale/xh_ZA/LC_MESSAGES/ipa.mo -install/ui/test/results install/ui/release install/ui/src/dojo install/ui/src/build +install/ui/src/libs/loader.js install/ui/src/plugins ipa-client/COPYING ipa-client/ChangeLog @@ -116,13 +116,14 @@ version-update: release-update freeipa.spec.in > freeipa.spec sed -e s/__VERSION__/$(IPA_VERSION)/ version.m4.in \ > version.m4 - sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/setup.py.in \ > ipapython/setup.py sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \ > ipapython/version.py sed -e s/__VERSION__/$(IPA_VERSION)/ ipatests/setup.py.in \ > ipatests/setup.py + sed -e s/__NUM_VERSION__/$(IPA_NUM_VERSION)/ install/ui/src/libs/loader.js.in \ + > install/ui/src/libs/loader.js perl -pi -e "s:__NUM_VERSION__:$(IPA_NUM_VERSION):" ipapython/version.py perl -pi -e "s:__API_VERSION__:$(IPA_API_VERSION_MAJOR).$(IPA_API_VERSION_MINOR):" ipapython/version.py touch -r ipapython/version.py.in ipapython/version.py diff --git a/install/conf/ipa.conf b/install/conf/ipa.conf index 1a33f628..f185f514 100644 --- a/install/conf/ipa.conf +++ b/install/conf/ipa.conf @@ -1,5 +1,5 @@ # -# VERSION 13 - DO NOT REMOVE THIS LINE +# VERSION 14 - DO NOT REMOVE THIS LINE # # This file may be overwritten on upgrades. # @@ -114,6 +114,8 @@ Alias /ipa/config "/usr/share/ipa/html" AllowOverride None Satisfy Any Allow from all + ExpiresActive On + ExpiresDefault "access plus 0 seconds" </Directory> @@ -135,6 +137,11 @@ Alias /ipa/ui "/usr/share/ipa/ui" AllowOverride None Satisfy Any Allow from all + ExpiresActive On + ExpiresDefault "access plus 1 year" + <FilesMatch "(index.html|loader.js|login.html|reset_password.html)"> + ExpiresDefault "access plus 0 seconds" + </FilesMatch> </Directory> # Simple wsgi scripts required by ui diff --git a/install/html/browserconfig.html b/install/html/browserconfig.html index a7784f75..d867a194 100644 --- a/install/html/browserconfig.html +++ b/install/html/browserconfig.html @@ -3,16 +3,25 @@ <head> <meta charset="utf-8"> <title>IPA: Identity Policy Audit</title> - - <link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" /> - <link rel="stylesheet" type="text/css" href="../ui/ipa.css" /> - <link rel="stylesheet" type="text/css" href="ipa_error.css" /> - - <script type="text/javascript" src="../ui/js/libs/jquery.js"></script> - <script type="text/javascript" src="../ui/js/libs/jquery-ui.js"></script> - <script type="text/javascript" src="krb.js"></script> - <script type="text/javascript" src="ffconfig.js"></script> - <script type="text/javascript" src="ffconfig_page.js"></script> + <script type="text/javascript" src="../ui/js/libs/loader.js"></script> + <script type="text/javascript"> + (function() { + var styles = [ + '../ui/jquery-ui.css', + '../ui/ipa.css', + 'ipa_error.css' + ]; + var scripts = [ + '../ui/js/libs/jquery.js', + '../ui/js/libs/jquery-ui.js', + 'krb.js', + 'ffconfig.js', + 'ffconfig_page.js' + ]; + ipa_loader.scripts(scripts); + ipa_loader.styles(styles); + })(); + </script> </head> <body class="info-page"> diff --git a/install/html/ssbrowser.html b/install/html/ssbrowser.html index 72fd573c..896cabce 100644 --- a/install/html/ssbrowser.html +++ b/install/html/ssbrowser.html @@ -3,30 +3,41 @@ <head> <meta charset="utf-8"> <title>IPA: Identity Policy Audit</title> - - <link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" /> - <link rel="stylesheet" type="text/css" href="../ui/ipa.css" /> - <link rel="stylesheet" type="text/css" href="ipa_error.css" /> - - <script type="text/javascript" src="../ui/js/libs/jquery.js"></script> - <script type="text/javascript" src="krb.js"></script> + <script type="text/javascript" src="../ui/js/libs/loader.js"></script> <script type="text/javascript"> - $(document).ready(function() { - var domain = '.' + (IPA_DOMAIN || 'example.com'); - $('.example-domain').text(domain); + (function() { + function loaded() { + $(document).ready(function() { + var domain = '.' + (IPA_DOMAIN || 'example.com'); + $('.example-domain').text(domain); - if ($.browser.mozilla) { - var ff_config = $("#configurefirefox"); - var obj = $('<object/>', { - type: 'text/html', - 'class': 'browser-config' + if ($.browser.mozilla) { + var ff_config = $("#configurefirefox"); + var obj = $('<object/>', { + type: 'text/html', + 'class': 'browser-config' + }); + obj.prop('data', 'jar:/ipa/errors/configure.jar!/preferences.html'); + obj.appendTo(ff_config); + ff_config.show(); + } }); - obj.prop('data', 'jar:/ipa/errors/configure.jar!/preferences.html'); - obj.appendTo(ff_config); - ff_config.show(); } - }); + + var styles = [ + '../ui/jquery-ui.css', + '../ui/ipa.css', + 'ipa_error.css' + ]; + var scripts = [ + '../ui/js/libs/jquery.js', + 'krb.js' + ]; + ipa_loader.scripts(scripts, loaded); + ipa_loader.styles(styles); + })(); </script> + </head> <body class="info-page"> diff --git a/install/html/unauthorized.html b/install/html/unauthorized.html index 0fac88b9..5c5ed7e9 100644 --- a/install/html/unauthorized.html +++ b/install/html/unauthorized.html @@ -3,12 +3,16 @@ <head> <meta charset="utf-8"> <title>IPA: Identity Policy Audit</title> - - <script type="text/javascript" src="../ui/js/libs/jquery.js"></script> - - <link rel="stylesheet" type="text/css" href="../ui/jquery-ui.css" /> - <link rel="stylesheet" type="text/css" href="../ui/ipa.css" /> - <link rel="stylesheet" type="text/css" href="ipa_error.css" /> + <script type="text/javascript" src="../ui/js/libs/loader.js"></script> + <script type="text/javascript"> + (function() { + var styles = [ + '../ui/ipa.css', + 'ipa_error.css' + ]; + ipa_loader.styles(styles); + })(); + </script> </head> <body class="info-page"> 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 |