[mapguide-users] What is %24CurrentSelection???

achectl achectl at gmail.com
Wed Mar 18 00:52:00 EDT 2009


Thanks a lot Chris

Which file I need to modify and copy & place the below PHP code to that file
for testing? I will try to modify the code. Note: I will change the path for
webconfig.ini. :-( I need to complete the invokeURL problem asap. What is
the proper way to do InvokeURL of MapGuide Studio? 

Thanks
Achectl


Chris Claydon wrote:
> 
> In a basic web layout, I'm pretty sure $CurrentSelection returns you the
> current selection in XML format. This corresponds to the string you get if
> you call ToXml() on an MgSelection object using the web tier API.
> 
> It appears that the flexible web layout code does not treat
> $CurrentSelection as a special case, and simply returns the URL-encoded
> version of variable name itself.
> 
> The solution is to get hold of the MgSelection object for the current map
> selection within the invoked PHP code. The following PHP code will dump
> out the selection XML. You should be able to extend it pretty easily to
> extract exactly what you need from the selection...
> 
> (Note that you may need to adjust the path to the webconfig.ini file in
> the call to MgInitializeWebTier)
> 
> Hope this helps,
> 
> Chris.
> 
> <?php
>     
>     $mapName = "";
>     $sessionId = "";
>         
>     try 
>     {
>         // Initialize the web tier API
>         MgInitializeWebTier("C:/Program
> Files/Autodesk/MapGuideEnterprise2009/WebServerExtensions/www/webconfig.ini");
>         
>         // Read the map name and session ID
>         GetRequestParameters();
> 
>         // Create a site connection
>         $user = new MgUserInformation($sessionId);
>         $siteConnection = new MgSiteConnection();
>         $siteConnection->Open($user);
>         
>         // Create a resource service instance
>         $resourceService = $siteConnection->CreateService(0);
>                 
>         // Retrieve the selection
>         $selection = new MgSelection();
>         $selection->Open($resourceService, $mapName);
>         
>         // Output the selection
>         echo $selection->ToXml();
>     }
>     catch(MgException $e) 
>     {
>         // Output error details
>         echo "<Message>" . $e->GetMessage() . "</Message>";
>         echo "<Details>" . $e->GetDetails() . "</Details>";
>     }
>         
>         
>     function GetParameters($params)
>     {
>         global $mapName;
>         global $sessionId;
> 
>         $mapName = $params['MAPNAME'];
>         $sessionId = $params['SESSION'];
>     }
> 
>     function GetRequestParameters()
>     {
>         if($_SERVER['REQUEST_METHOD'] == "POST")
>             GetParameters($_POST);
>         else
>             GetParameters($_GET);
>     }
> ?>
> 
> 
> 
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of achectl
> Sent: Tuesday, March 17, 2009 3:16 AM
> To: mapguide-users at lists.osgeo.org
> Subject: [mapguide-users] What is %24CurrentSelection???
> 
> 
> I would like to delineate how I do the invokeURL command as below:
> 
> My system:
> MapGuide 2009
> PHP bundle option
> Window XP Pro
> MapGuide Studio 2009
> 
> http://n2.nabble.com/file/n2490302/1.jpg 
> 1.	I use Sheboygan demo data 
> 2.	create the invokeurl commands of flexible web layout
> 3.	URL to invoke is http://127.0.0.1/date.php
> 4.	Key is the ID; Value is $CurrentSelection
> 5.	Layer is the Buildings (SDF)
> 
> http://n2.nabble.com/file/n2490302/2.jpg  
> 1.	Building selected
> 2.	InvokeURL command highlighted
> 
> http://n2.nabble.com/file/n2490302/3.jpg 
> 1.	New window prompted
> 2.	The url is http://127.0.0.1/date.php?ID=%24CurrentSelection
> 
> My question is why the ID value is %24CurrentSelection, it is not the ID
> of
> the building layer attribute?
> Or I have do wrong setting?
> 
> Notes: I have amended a little of invokeURL.js. I coped it as below:
> 
> /**
>  * Fusion.Widget.InvokeURL
>  *
>  * $Id: $
>  *
>  * Copyright (c) 2007, DM Solutions Group Inc.
>  * Permission is hereby granted, free of charge, to any person obtaining a
>  * copy of this software and associated documentation files (the
> "Software"),
>  * to deal in the Software without restriction, including without
> limitation
>  * the rights to use, copy, modify, merge, publish, distribute,
> sublicense,
>  * and/or sell copies of the Software, and to permit persons to whom the
>  * Software is furnished to do so, subject to the following conditions:
>  *
>  * The above copyright notice and this permission notice shall be included
>  * in all copies or substantial portions of the Software.
>  *
>  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
>  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
>  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
> SHALL
>  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER
>  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>  * DEALINGS IN THE SOFTWARE.
>  */
> 
> 
> /***************************************************************************
>  * Class: Fusion.Widget.InvokeURL
>  *
>  * A widget that will open the configured URL in the target element.
>  * 
>  * If the Target property points to TaskPane widget, the task will be
> listed
> in
>  * the menu list of the TaskPane and loaded there.
>  * Otherwise if the target is an existing HTML elementt in the page it
> will
> be 
>  * loaded there, otherwise it will open a new window with that name.
>  *
>  * **********************************************************************/
> 
> Fusion.Widget.InvokeURL = Class.create();
> Fusion.Widget.InvokeURL.prototype = {
>     sFeatures : 'menubar=yes,location=no,resizable=yes,status=yes',
> 
>     initialize : function(widgetTag) {
>         //console.log('InvokeURL.initialize');
>         Object.inheritFrom(this, Fusion.Widget.prototype, [widgetTag,
> false]);
>         Object.inheritFrom(this, Fusion.Tool.ButtonBase.prototype, []);
> 
>         var json = widgetTag.extension;
>         this.sTarget = json.Target ? json.Target[0] : "InvokeUrlWindow";
>         this.sBaseUrl = json.Url[0];  //must be supplied
>         
>         this.bSelectionOnly = (json.DisableIfSelectionEmpty &&
>                            (json.DisableIfSelectionEmpty[0] == 'true' ||
>                             json.DisableIfSelectionEmpty[0] == '1')) ?
> true
> : false;
>                             
>         this.additionalParameters = [];
>         if (json.AdditionalParameter) {
>             for (var i=0; i<json.AdditionalParameter.length; i++) {
>                 var p = json.AdditionalParameter[i];
>                 var k = p.Key[0];
>                 var v = p.Value[0];
>                
> this.additionalParameters.push(k+'='+encodeURIComponent(v));
>             }
>         }
>         
>         this.enable = Fusion.Widget.InvokeURL.prototype.enable;
>         this.getMap().registerForEvent(Fusion.Event.MAP_SELECTION_ON,
> this.enable.bind(this));
>         this.getMap().registerForEvent(Fusion.Event.MAP_SELECTION_OFF,
> this.enable.bind(this));
>         this.disable();
>     },
> 
>     enable: function() {
>         var map = this.getMap();
>         if (this.bSelectionOnly || !map) {
>             if (map && map.hasSelection()) {
>                 if (this.action) {
>                     this.action.setEnabled(true);
>                 } else {
>                    
> Fusion.Tool.ButtonBase.prototype.enable.apply(this,[]);
>                 }
>             } else {
>                 if (this.action) {
>                     this.action.setEnabled(false);
>                 } else {
>                     this.disable();
>                 }
>             }
>         } else {
>             if (this.action) {
>                 this.action.setEnabled(true);
>             } else {
>                 Fusion.Tool.ButtonBase.prototype.enable.apply(this,[]);
>             }
>         }
>     },
>     
>     execute : function() {
>         var url = this.sBaseUrl;
>         //add in other parameters to the url here
>         
>         var map = this.getMap();
>         var params = [];
>         //params.push('LOCALE='+Fusion.locale);
>         //params.push('SESSION='+map.getSessionID());
>         //params.push('MAPNAME='+map.getMapName());
>         params = params.concat(this.additionalParameters);
>         if (url.indexOf('?') < 0) {
>             url += '?';
>         } else if (url.slice(-1) != '&') {
>             url += '&';
>         }
>         url += params.join('&');
>         var taskPaneTarget = Fusion.getWidgetById(this.sTarget);
>         if ( taskPaneTarget ) {
>             taskPaneTarget.setContent(url);
>         } else {
>             var pageElement = $(this.sTarget);
>             if ( pageElement ) {
>                 pageElement.src = url;
>             } else {
>                 window.open(url, this.sTarget, this.sFeatures);
>             }
>         }
>     }
> };
> 
> -- 
> View this message in context:
> http://n2.nabble.com/What-is--24CurrentSelection----tp2490302p2490302.html
> Sent from the MapGuide Users mailing list archive at Nabble.com.
> 
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> 
> 

-- 
View this message in context: http://n2.nabble.com/What-is--24CurrentSelection----tp2490302p2495398.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list