diff --git a/.gitignore b/.gitignore index 5252dad1b..96c151a19 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Makefile b/Makefile index 428f19b1a..0664ddd8e 100644 --- a/Makefile +++ b/Makefile @@ -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 1a33f6287..f185f5146 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" @@ -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" + + ExpiresDefault "access plus 0 seconds" + # Simple wsgi scripts required by ui diff --git a/install/html/browserconfig.html b/install/html/browserconfig.html index a7784f75b..d867a1941 100644 --- a/install/html/browserconfig.html +++ b/install/html/browserconfig.html @@ -3,16 +3,25 @@ IPA: Identity Policy Audit - - - - - - - - - - + + diff --git a/install/html/ssbrowser.html b/install/html/ssbrowser.html index 72fd573cf..896cabcec 100644 --- a/install/html/ssbrowser.html +++ b/install/html/ssbrowser.html @@ -3,30 +3,41 @@ IPA: Identity Policy Audit - - - - - - - + + diff --git a/install/html/unauthorized.html b/install/html/unauthorized.html index 0fac88b98..5c5ed7e98 100644 --- a/install/html/unauthorized.html +++ b/install/html/unauthorized.html @@ -3,12 +3,16 @@ IPA: Identity Policy Audit - - - - - - + + diff --git a/install/ui/Makefile.am b/install/ui/Makefile.am index 77aab17a6..94bedace3 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 e984676f3..000000000 --- a/install/ui/config.js +++ /dev/null @@ -1,39 +0,0 @@ -/* Authors: - * Petr Vobornik - * - * 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 . -*/ - -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 75ff82997..4be834076 100644 --- a/install/ui/index.html +++ b/install/ui/index.html @@ -1,32 +1,62 @@ - + IPA: Identity Policy Audit - - - - - - - - - - - - - - + - + + + \ No newline at end of file diff --git a/install/ui/jsl.conf b/install/ui/jsl.conf index e9e3ecc5e..7c3be5864 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 5545e8834..f3a0dd37b 100644 --- a/install/ui/login.html +++ b/install/ui/login.html @@ -3,11 +3,16 @@ IPA: Identity Policy Audit - - - - - + + diff --git a/install/ui/reset_password.html b/install/ui/reset_password.html index 4dbbb7aac..560e8a5e4 100644 --- a/install/ui/reset_password.html +++ b/install/ui/reset_password.html @@ -3,11 +3,16 @@ IPA: Identity Policy Audit - - - - - + + diff --git a/install/ui/src/libs/Makefile.am b/install/ui/src/libs/Makefile.am index 807b9d8d3..6991e474e 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 000000000..134e061e7 --- /dev/null +++ b/install/ui/src/libs/loader.js.in @@ -0,0 +1,103 @@ +/* Authors: + * Petr Vobornik + * + * 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 . +*/ +(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