[fusion-dev] RE: [fusion-commits] r1966 - trunk/lib

Paul Spencer pspencer at dmsolutions.ca
Mon Nov 9 15:36:27 EST 2009


here is fine, sometimes the trac emails get lost in the mix :)  I'm  
not sure either, which was why I mentioned that it should only be  
affecting that one specific case - there must be a problem with that  
code and we will need to fix it if the other approach doesn't work.

Paul

On 2009-11-09, at 2:09 PM, Nolte, Tim wrote:

> Sounds good. Just wanted to bring it up. Perhaps I should have just  
> made
> the comment on TRAC directly instead of here. If that is the
> recommendation please just say the word. It's interesting that you say
> that this should only apply to MapGuide installs and shouldn't affect
> MapServer installs. Not sure but I was actually getting JavaScript
> errors in Firebug with these code changes.
>
> - Tim
>
> ----
> Timothy J Nolte - tnolte at ilpcs.com
> Network Planning Engineer
>
> iPCS Wireless, Inc.
> 4717 Broadmoor Ave, Suite G
> Kentwood, MI 49512
>
> Office: 616-656-5163
> PCS:    616-706-2438
> Fax:    616-554-6484
> Web: www.ipcswirelessinc.com
> -----Original Message-----
> From: fusion-dev-bounces at lists.osgeo.org
> [mailto:fusion-dev-bounces at lists.osgeo.org] On Behalf Of Paul Spencer
> Sent: Monday, November 09, 2009 1:55 PM
> To: Nolte, Tim
> Cc: fusion-dev at lists.osgeo.org
> Subject: Re: [fusion-dev] RE: [fusion-commits] r1966 - trunk/lib
>
> I think Zak is working on a more generic solution here.  The code here
> should not have affected MapServer, it should only be invoked when the
> application definition is being loaded from a URL that starts with
> Library:// which indicates it is stored in a MapGuide repository.  The
> original issue that was being solved was how to automatically add
> commercial mapping APIs to an application - this required knowing if
> any of them are referenced in an Application Definition which required
> pre-requesting the ApplicationDefinition - which, when stored in a
> MapGuide repository issues an authentication challenge unless using a
> pre-established session - which is what this commit was about.
>
> Zak is going to try refactoring this to work generically for MapServer
> and MapGuide by moving the code so that it runs at a slightly later
> time in initialization.
>
> Cheers
>
> Paul
>
> On 2009-11-09, at 1:49 PM, Nolte, Tim wrote:
>
>> FYI, this bug fix breaks in MapServer installs. I see that it has  
>> been
>> hard-coded to 'layers/MapGuide/php/CreateSession.php' which isn't
>> valid
>> for MapServer. Seems like somehow we need a more generic way for
>> creating the session. I'm not familiar with how MapGuide works with
>> sessions but for the most part we are looking at PHP sessions which
>> should be pretty standard. What are the thoughts here?
>>
>> - Tim
>>
>> ----
>> Timothy J Nolte - tnolte at ilpcs.com
>> Network Planning Engineer
>>
>> iPCS Wireless, Inc.
>> 4717 Broadmoor Ave, Suite G
>> Kentwood, MI 49512
>>
>> Office: 616-656-5163
>> PCS:    616-706-2438
>> Fax:    616-554-6484
>> Web: www.ipcswirelessinc.com
>> -----Original Message-----
>> From: fusion-commits-bounces at lists.osgeo.org
>> [mailto:fusion-commits-bounces at lists.osgeo.org] On Behalf Of
>> svn_fusion at osgeo.org
>> Sent: Sunday, November 08, 2009 10:16 PM
>> To: fusion-commits at lists.osgeo.org
>> Subject: [fusion-commits] r1966 - trunk/lib
>>
>> Author: liuar
>> Date: 2009-11-08 22:15:36 -0500 (Sun, 08 Nov 2009)
>> New Revision: 1966
>>
>> Modified:
>>  trunk/lib/fusion.js
>> Log:
>> Fixed http://trac.osgeo.org/fusion/ticket/300
>> pre-create a session to avoid the unauthorized dialog, which is a
>> defect
>> of safari and chrome.
>>
>> Modified: trunk/lib/fusion.js
>> ===================================================================
>> --- trunk/lib/fusion.js	2009-11-06 16:05:28 UTC (rev 1965)
>> +++ trunk/lib/fusion.js	2009-11-09 03:15:36 UTC (rev 1966)
>> @@ -227,7 +227,8 @@
>>        initialize : function(options) {
>>            options = options || {};
>>            var sessionIdParam = this.getQueryParam('Session');
>> -            this.sessionId = sessionIdParam || (options.sessionId ||
>> null);
>> +			// Override the pre-created sessionId by user
>> specified sessionId(if exist)
>> +			this.sessionId = sessionIdParam ||
>> options.sessionId || this.sessionId;
>>
>>            if (options.applicationDefinitionURL) {
>>                this.applicationDefinitionURL =
>> options.applicationDefinitionURL;
>> @@ -252,11 +253,11 @@
>>            this.sScriptLang = "";
>>
>>            /*
>> -                     * if the application has been loaded from the
>> same
>> host as
>> -                     * fusion is installed in, then technically we
>> don't need to
>> -                     * use the redirect script because we conform to
>> the
>> -                     * Same Origin Policy for XmlHttpRequest to  
>> work.
>> -                     */
>> +			 * if the application has been loaded from the
>> same host as
>> +			 * fusion is installed in, then technically we
>> don't need to
>> +			 * use the redirect script because we conform to
>> the
>> +			 * Same Origin Policy for XmlHttpRequest to
>> work.
>> +			 */
>>            var test =
>> window.location.protocol+'//'+window.location.host;
>>            var configUrl = 'config.json';
>>            //if (this.fusionURL.indexOf(test,0) == 0) {
>> @@ -1147,7 +1148,7 @@
>>
>>        var fusionURL = r + Fusion.getFusionURL() + configUrl;
>>
>> -        var xhr = new XMLHttpRequest();
>> +        var xhr = getXmlHttpRequest();
>>        xhr.open("GET", fusionURL, false);
>>        xhr.send(null);
>>
>> @@ -1174,7 +1175,7 @@
>>        }
>>        Fusion.configuration.mapguide.mapAgentUrl = s +
>> 'mapagent/mapagent.fcgi';
>>        return Fusion.configuration.mapguide.mapAgentUrl;
>> -    }
>> +    }
>>
>>    var addElement = function(element) {
>>        if (!element) {
>> @@ -1188,29 +1189,50 @@
>>        }
>>
>>        document.writeln('<script src="' + src + '"><\/script>');
>> -    }
>> +    }
>>
>> -	if(navigator.userAgent.indexOf("MSIE")>0 ||
>> navigator.userAgent.indexOf("Firefox")>0){
>> -		var appDefUrl =
>> Fusion.getQueryParam('ApplicationDefinition');
>> -		if(appDefUrl){
>> -			
>> -			var xhr = new XMLHttpRequest();
>> -			var mapAgentUrl = getAgentUrl();
>> -			xhr.open("GET", mapAgentUrl +
>> "?
>> OPERATION 
>> =GETRESOURCECONTENT&VERSION=1.0.0&LOCALE=en&CLIENTAGENT=MapGu
>> ide+Developer&RESOURCEID=" + appDefUrl + "&FORMAT=text%2Fxml",  
>> false);
>> -			xhr.send(null);
>> -			var appDefXML = xhr.responseXML.documentElement;
>>
>> -			
>> -			if(appDefXML){
>> -				var googleElement =
>> appDefXML.getElementsByTagName("GoogleScript")[0];
>> -				var yahooElement =
>> appDefXML.getElementsByTagName("YahooScript")[0];
>> -				var veElement =
>> appDefXML.getElementsByTagName("VirtualEarthScript")[0];
>> +	var getXmlHttpRequest = function(){	
>> +        try { return new XMLHttpRequest(); }
>> +		catch (e) { try { return new
>> ActiveXObject('Msxml2.XMLHTTP'); }
>> +		catch (e) { try { return new
>> ActiveXObject('Microsoft.XMLHTTP'); }
>> +		catch (e) { return  null; }}}
>> +	}
>> +	
>> +	/**
>> +	 * Function: createSessionId
>> +	 *
>> +	 * Pre-create a session to avoid the 401 Unauthorized dialog
>> +	 *
>> +	 */
>> +	var createSessionId = function(){
>> +		var xhr = getXmlHttpRequest();
>> +		xhr.open("GET",
>> Fusion.fusionURL+"layers/MapGuide/php/CreateSession.php",false);
>> +		xhr.send(null);
>> +		var o;
>> +		eval('o='+xhr.responseText);
>> +		Fusion.sessionId = o.sessionId;
>> +	}
>> +	
>> +	createSessionId();	
>> +	var appDefUrl = Fusion.getQueryParam('ApplicationDefinition');
>> +	if(appDefUrl){
>> +		var xhr = new getXmlHttpRequest();
>> +		var mapAgentUrl = getAgentUrl();
>> +		xhr.open("GET", mapAgentUrl +
>> "?
>> OPERATION 
>> =GETRESOURCECONTENT&VERSION=1.0.0&LOCALE=en&CLIENTAGENT=MapGu
>> ide+Developer&RESOURCEID=" + appDefUrl + "&FORMAT=text
>> %2Fxml&SESSION="+
>> Fusion.sessionId, false);
>> +		xhr.send(null);
>> +		var appDefXML = xhr.responseXML.documentElement;
>> +		
>> +		if(appDefXML){
>> +			var googleElement =
>> appDefXML.getElementsByTagName("GoogleScript")[0];
>> +			var yahooElement =
>> appDefXML.getElementsByTagName("YahooScript")[0];
>> +			var veElement =
>> appDefXML.getElementsByTagName("VirtualEarthScript")[0];
>>
>> -				addElement(googleElement);
>> -				addElement(yahooElement);
>> -				addElement(veElement);
>> -			}
>> +			addElement(googleElement);
>> +			addElement(yahooElement);
>> +			addElement(veElement);
>> 		}
>> 	}
>> +	
>>
>> })();
>>
>>
>> _______________________________________________
>> fusion-commits mailing list
>> fusion-commits at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/fusion-commits
>>
>> _______________________________________________
>> fusion-dev mailing list
>> fusion-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/fusion-dev
>
>
> __________________________________________
>
>    Paul Spencer
>    Chief Technology Officer
>    DM Solutions Group Inc
>    http://research.dmsolutions.ca/
>
> _______________________________________________
> fusion-dev mailing list
> fusion-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/fusion-dev
>


__________________________________________

    Paul Spencer
    Chief Technology Officer
    DM Solutions Group Inc
    http://research.dmsolutions.ca/



More information about the fusion-dev mailing list