UIUtils.js revision 14d054c1695261ccf1186a6f1ed8c339eb0e86fe
640b2adac05bb7f5e9fba064434c91852c3a72e6nd/*
8e34905974b7a442a55adac3b3fdb196c389e807takashi * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
640b2adac05bb7f5e9fba064434c91852c3a72e6nd *
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * Copyright © 2011-2012 ForgeRock AS. All rights reserved.
8e34905974b7a442a55adac3b3fdb196c389e807takashi *
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * The contents of this file are subject to the terms
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * of the Common Development and Distribution License
8e34905974b7a442a55adac3b3fdb196c389e807takashi * (the License). You may not use this file except in
8e34905974b7a442a55adac3b3fdb196c389e807takashi * compliance with the License.
640b2adac05bb7f5e9fba064434c91852c3a72e6nd *
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * You can obtain a copy of the License at
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * http://forgerock.org/license/CDDLv1.0.html
640b2adac05bb7f5e9fba064434c91852c3a72e6nd * See the License for the specific language governing
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive * permission and limitations under the License.
8e34905974b7a442a55adac3b3fdb196c389e807takashi *
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive * When distributing Covered Code, include this CDDL
ef685e00a47967e27d89709461728a229d762172nd * Header Notice in each file and include the License file
ef685e00a47967e27d89709461728a229d762172nd * at http://forgerock.org/license/CDDLv1.0.html
ef685e00a47967e27d89709461728a229d762172nd * If applicable, add the following below the CDDL Header,
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive * with the fields enclosed by brackets [] replaced by
51853aa2ebfdf9903a094467e1d02099f143639daaron * your own identifying information:
51853aa2ebfdf9903a094467e1d02099f143639daaron * "Portions Copyrighted [year] [name of copyright owner]"
51853aa2ebfdf9903a094467e1d02099f143639daaron */
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive/*global $, define, window , Mustache*/
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
a27e9e05958bc51ea09edb8d8d862fe8b125313bslivedefine("app/util/UIUtils",
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive ["org/forgerock/common/js/typeextentions/String"],
8e34905974b7a442a55adac3b3fdb196c389e807takashi function () {
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive var obj = {};
ef685e00a47967e27d89709461728a229d762172nd
ef685e00a47967e27d89709461728a229d762172nd obj.getUrl = function() {
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive return window.location.href;
81622596373177e079337e956f7a5800895443b3erikabele };
81622596373177e079337e956f7a5800895443b3erikabele
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive obj.getCurrentUrlBasePart = function() {
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive return window.location.protocol + "//" + window.location.host;
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive };
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive obj.getCurrentUrlQueryParameters = function() {
4004c5f0e9c6d5e8bbd8541033b4c1819825bf12rbowen return window.location.search.substr(1,window.location.search.lenght);
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive };
17ca00f92106c825382359ebf0a754f8df21e316rbowen
4004c5f0e9c6d5e8bbd8541033b4c1819825bf12rbowen obj.getCurrentPathName = function() {
4004c5f0e9c6d5e8bbd8541033b4c1819825bf12rbowen return window.location.pathname;
17ca00f92106c825382359ebf0a754f8df21e316rbowen };
17ca00f92106c825382359ebf0a754f8df21e316rbowen
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive obj.setUrl = function(url) {
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive window.location.href = url;
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive };
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive obj.normalizeSubPath = function(subPath) {
8e34905974b7a442a55adac3b3fdb196c389e807takashi if(subPath.endsWith('/')) {
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive return subPath.removeLastChars();
ef685e00a47967e27d89709461728a229d762172nd }
ef685e00a47967e27d89709461728a229d762172nd return subPath;
ef685e00a47967e27d89709461728a229d762172nd };
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
222f0f03c2f9ee6343c18f80f0cb6e9aad21bc58slive obj.convertCurrentUrlToJSON = function() {
222f0f03c2f9ee6343c18f80f0cb6e9aad21bc58slive var result = {}, parsedQueryParams;
222f0f03c2f9ee6343c18f80f0cb6e9aad21bc58slive
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive result.url = obj.getCurrentUrlBasePart();
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive result.pathName = obj.normalizeSubPath(obj.getCurrentPathName());
a27e9e05958bc51ea09edb8d8d862fe8b125313bslive
222f0f03c2f9ee6343c18f80f0cb6e9aad21bc58slive result.params = obj.convertQueryParametersToJSON(obj.getCurrentUrlQueryParameters());
95e8cab14596a61826fa52477dcaebc07bfbad00colm return result;
8e34905974b7a442a55adac3b3fdb196c389e807takashi };
95e8cab14596a61826fa52477dcaebc07bfbad00colm
95e8cab14596a61826fa52477dcaebc07bfbad00colm obj.convertQueryParametersToJSON = function(queryParameters) {
95e8cab14596a61826fa52477dcaebc07bfbad00colm var parsedQueryParams;
95e8cab14596a61826fa52477dcaebc07bfbad00colm
95e8cab14596a61826fa52477dcaebc07bfbad00colm if(queryParameters) {
95e8cab14596a61826fa52477dcaebc07bfbad00colm parsedQueryParams = decodeURI(queryParameters.replace(/&/g, "\",\"").replace(/\=/g,"\":\""));
95e8cab14596a61826fa52477dcaebc07bfbad00colm return JSON.parse('{"' + parsedQueryParams + '"}');
95e8cab14596a61826fa52477dcaebc07bfbad00colm }
95e8cab14596a61826fa52477dcaebc07bfbad00colm return null;
95e8cab14596a61826fa52477dcaebc07bfbad00colm };
95e8cab14596a61826fa52477dcaebc07bfbad00colm
17efa6b5344b7574597eec03f02ef28103e19265nd obj.fillTemplateWithData = function(templateUrl, data,callback) {
8e34905974b7a442a55adac3b3fdb196c389e807takashi $.ajax({
17efa6b5344b7574597eec03f02ef28103e19265nd type: "GET",
17efa6b5344b7574597eec03f02ef28103e19265nd url: templateUrl,
17efa6b5344b7574597eec03f02ef28103e19265nd dataType: "html",
17efa6b5344b7574597eec03f02ef28103e19265nd success: function(template) {
17efa6b5344b7574597eec03f02ef28103e19265nd if(data === 'unknown' || data === null) {
17efa6b5344b7574597eec03f02ef28103e19265nd //don't fill the template
17efa6b5344b7574597eec03f02ef28103e19265nd callback(template);
17efa6b5344b7574597eec03f02ef28103e19265nd } else {
17efa6b5344b7574597eec03f02ef28103e19265nd //fill the template
17efa6b5344b7574597eec03f02ef28103e19265nd callback(Mustache.to_html(template,data));
17efa6b5344b7574597eec03f02ef28103e19265nd }
17efa6b5344b7574597eec03f02ef28103e19265nd },
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai error: callback
8e34905974b7a442a55adac3b3fdb196c389e807takashi });
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai };
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai $.fn.emptySelect = function() {
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai return this.each(function() {
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai if (this.tagName === 'SELECT') {
8e34905974b7a442a55adac3b3fdb196c389e807takashi this.options.length = 0;
8e34905974b7a442a55adac3b3fdb196c389e807takashi }
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai });
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai };
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai
86bb9693d63dfc1be14519a5b444467e4b0cdaf8kawai $.fn.loadSelect = function(optionsDataArray) {
17efa6b5344b7574597eec03f02ef28103e19265nd return this.emptySelect().each(function() {
8e34905974b7a442a55adac3b3fdb196c389e807takashi if (this.tagName === 'SELECT') {
17efa6b5344b7574597eec03f02ef28103e19265nd var i, option, selectElement = this;
17efa6b5344b7574597eec03f02ef28103e19265nd for(i=0;i<optionsDataArray.length;i++){
8e34905974b7a442a55adac3b3fdb196c389e807takashi option = new Option(optionsDataArray[i].value, optionsDataArray[i].key);
17efa6b5344b7574597eec03f02ef28103e19265nd if ($.browser.msie) {
17efa6b5344b7574597eec03f02ef28103e19265nd selectElement.add(option);
8e34905974b7a442a55adac3b3fdb196c389e807takashi } else {
17efa6b5344b7574597eec03f02ef28103e19265nd selectElement.add(option, null);
17efa6b5344b7574597eec03f02ef28103e19265nd }
17efa6b5344b7574597eec03f02ef28103e19265nd }
17efa6b5344b7574597eec03f02ef28103e19265nd }
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx });
8e34905974b7a442a55adac3b3fdb196c389e807takashi };
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx
ef685e00a47967e27d89709461728a229d762172nd return obj;
ef685e00a47967e27d89709461728a229d762172nd});
ef685e00a47967e27d89709461728a229d762172nddefine("app/util/UIUtils",
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx ["org/forgerock/common/js/typeextentions/String"],
81622596373177e079337e956f7a5800895443b3erikabele function () {
81622596373177e079337e956f7a5800895443b3erikabele var obj = {};
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx obj.getUrl = function() {
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx return window.location.href;
cd51960ffc0f49d7a9e702162ed49b3eb0909276dirkx };
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen obj.getCurrentUrlBasePart = function() {
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen return window.location.protocol + "//" + window.location.host;
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen };
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen obj.getCurrentUrlQueryParameters = function() {
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen return window.location.search.substr(1,window.location.search.lenght);
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen };
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen obj.getCurrentPathName = function() {
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen return window.location.pathname;
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen };
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen
94abf1cc80072ea31506946ac6595631ca6d2c14rbowen obj.setUrl = function(url) {
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick window.location.href = url;
8e34905974b7a442a55adac3b3fdb196c389e807takashi };
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick
1b3225113bb6fcf326cf16af9023e381ae0ac083nd obj.normalizeSubPath = function(subPath) {
1f666f93c91dbb492dc7706573b369cd03b84265poirier if(subPath.endsWith('/')) {
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick return subPath.removeLastChars();
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick }
1f666f93c91dbb492dc7706573b369cd03b84265poirier return subPath;
1f666f93c91dbb492dc7706573b369cd03b84265poirier };
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick obj.convertCurrentUrlToJSON = function() {
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick var result = {}, parsedQueryParams;
b5468eddc0cb1691af19ddc70a6e205daf00a94ctrawick
81622596373177e079337e956f7a5800895443b3erikabele result.url = obj.getCurrentUrlBasePart();
8e34905974b7a442a55adac3b3fdb196c389e807takashi result.pathName = obj.normalizeSubPath(obj.getCurrentPathName());
81622596373177e079337e956f7a5800895443b3erikabele
ef685e00a47967e27d89709461728a229d762172nd result.params = obj.convertQueryParametersToJSON(obj.getCurrentUrlQueryParameters());
ef685e00a47967e27d89709461728a229d762172nd return result;
ef685e00a47967e27d89709461728a229d762172nd };
81622596373177e079337e956f7a5800895443b3erikabele
81622596373177e079337e956f7a5800895443b3erikabele obj.convertQueryParametersToJSON = function(queryParameters) {
81622596373177e079337e956f7a5800895443b3erikabele var parsedQueryParams;
81622596373177e079337e956f7a5800895443b3erikabele
81622596373177e079337e956f7a5800895443b3erikabele if(queryParameters) {
81622596373177e079337e956f7a5800895443b3erikabele parsedQueryParams = decodeURI(queryParameters.replace(/&/g, "\",\"").replace(/\=/g,"\":\""));
81622596373177e079337e956f7a5800895443b3erikabele return JSON.parse('{"' + parsedQueryParams + '"}');
ef685e00a47967e27d89709461728a229d762172nd }
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen return null;
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen };
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen obj.fillTemplateWithData = function(templateUrl, data,callback) {
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen $.ajax({
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen type: "GET",
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen url: templateUrl,
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen dataType: "html",
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen success: function(template) {
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen if(data === 'unknown' || data === null) {
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen //don't fill the template
e554dd2dae4ba2c32dbd05fc0d4e0a42ef4ba902rbowen callback(template);
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele } else {
8e34905974b7a442a55adac3b3fdb196c389e807takashi //fill the template
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele callback(Mustache.to_html(template,data));
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele }
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele },
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele error: callback
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele });
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele };
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele $.fn.emptySelect = function() {
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele return this.each(function() {
f0eae6f6191f5730fa8db049f7391e93b4ff41b9erikabele if (this.tagName === 'SELECT') {
4a67c5c0053e1c1c2202122e46a42987f6fd28dfyoshiki this.options.length = 0;
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd }
8e34905974b7a442a55adac3b3fdb196c389e807takashi });
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd };
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd
8e34905974b7a442a55adac3b3fdb196c389e807takashi $.fn.loadSelect = function(optionsDataArray) {
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd return this.emptySelect().each(function() {
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd if (this.tagName === 'SELECT') {
8e34905974b7a442a55adac3b3fdb196c389e807takashi var i, option, selectElement = this;
8e34905974b7a442a55adac3b3fdb196c389e807takashi for(i=0;i<optionsDataArray.length;i++){
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd option = new Option(optionsDataArray[i].value, optionsDataArray[i].key);
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd if ($.browser.msie) {
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd selectElement.add(option);
f4166cb2bf5e48c1b0f18b0d1f6757fce82230a8nd } else {
17efa6b5344b7574597eec03f02ef28103e19265nd selectElement.add(option, null);
8e34905974b7a442a55adac3b3fdb196c389e807takashi }
17efa6b5344b7574597eec03f02ef28103e19265nd }
17efa6b5344b7574597eec03f02ef28103e19265nd }
17efa6b5344b7574597eec03f02ef28103e19265nd });
4a67c5c0053e1c1c2202122e46a42987f6fd28dfyoshiki };
4a67c5c0053e1c1c2202122e46a42987f6fd28dfyoshiki
17efa6b5344b7574597eec03f02ef28103e19265nd return obj;
17efa6b5344b7574597eec03f02ef28103e19265nd});