[mapguide-users] Modify layout with anonymous user

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Tue Jul 7 05:40:57 EDT 2009


When you redirect, you must use the tempLayoutId variable:

String ag_NewUrl = "/mapguide/mapviewerajax/?WEBLAYOUT=" + Server.UrlEncode(tempLayoutId) + "&SESSION=" +  Server.UrlEncode(ag_sessionId);


Otherwise you will still use the non-modified version.

Regards, Kenneth Skovhede, GEOGRAF A/S



euskalmap skrev:
> Hi kenneth,
>
> Thanks a lot for you code; i try it but it do not run (
> http://patxi.mayol.free.fr/public/ag_default_maestro.aspx here is my code )
> : the mapdefinition of layout is not change !
> have you an idea ?
>
>
> Kenneth Skovhede, GEOGRAF A/S wrote:
>   
>> Something like this would do it with MaestroAPI (untested):
>>
>>             MaestroAPI.ServerConnectionI con; //Needs initialization
>>
>>             //Read the current resources
>>             MaestroAPI.WebLayout layout =
>> con.GetWebLayout("???.WebLayout");
>>             MaestroAPI.MapDefinition map = 
>> con.GetMapDefinition(layout.Map.ResourceId);
>>
>>             //Create the temp layer
>>             MaestroAPI.MapLayerType layer = new 
>> OSGeo.MapGuide.MaestroAPI.MapLayerType();
>>             layer.ResourceId = "???.LayerDefinition";
>>             layer.Name = "Temporary layer";
>>
>>             //Add it to the map
>>             map.Layers.Add(layer);
>>
>>             //Generate a session based temporary id (will become 
>> Session:<sessionid>//Random Map Identifier.MapDefinition)
>>             string tempMapId = new MaestroAPI.ResourceIdentifier("Random 
>> Map Identifier", MaestroAPI.ResourceTypes.MapDefinition, con.SessionID);
>>            
>>             //Save the modified map in the session repo
>>             con.SaveResourceAs(map, tempMapId);
>>
>>             //Modify the layout to point at the temp map
>>             layout.Map.ResourceId = tempMapId;
>>
>>             //Generate a session based temporary id, and save the 
>> modified layout (will become Session:<sessionid>//Random WebLayot 
>> Identifier.WebLayout)
>>             string tempLayoutId = new 
>> MaestroAPI.ResourceIdentifier("Random WebLayout Identifier", 
>> MaestroAPI.ResourceTypes.WebLayout, con.SessionID);
>>             con.SaveResourceAs(layout, tempLayoutId);
>>
>>             //Open the viewer with the modified weblayout, that uses the 
>> modified map
>>             Response.Redirect("/mapguide/mapviewerajax/?session=" + 
>> Server.UrlEncode(con.SessionID) + "&layout=" + 
>> Server.UrlEncode(tempLayoutId));
>>
>> You can rewrite the property access with the corresponding xml changes,
>> and the GetResource/SaveResource with the corresponding function calls 
>> to the
>> MapGuide API, if you don't want to use Maestro.
>>
>> Instead of the "Random ... Identifier" strings, you should use 
>> Guid.NewGuid().ToString().
>>
>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>
>>
>>
>> euskalmap skrev:
>>     
>>> Hi,
>>> thanks for your information but how do you make toYou have to create a
>>> temporary WebLayout AND a temporary MapDefinition and then make the
>>> temporary WebLayout point to the temporary MapDefinition.
>>> Have you an example of code?
>>> Thnaks
>>>
>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>   
>>>       
>>>> If you save to "Library://" the data will be modified permanently.
>>>> Normally the "Anonymous" user is not allowed to save to "Library://".
>>>>
>>>> If you save to "Session:<sessionid>//" the changes will only be visible
>>>> to
>>>> the current user. You must take care not to mix sessionid's.
>>>>
>>>> I think you are trying to use the WebLayout from Library, that will not 
>>>> work.
>>>> You have to create a temporary WebLayout AND a temporary MapDefinition.
>>>>
>>>> Then make the temporary WebLayout point to the temporary MapDefinition.
>>>> (I think your code does this)
>>>> Then save both WebLayout and MapDefinition in "Session:<sessionid>//".
>>>> When you redirect, you should point to the temporary WebLayout.
>>>> As you pass in the sessionId, the viewer should be able to read it 
>>>> correctly.
>>>>
>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>
>>>>
>>>>
>>>>
>>>> euskalmap skrev:
>>>>     
>>>>         
>>>>> Hi,
>>>>> I refresh my post! If you have an idea !!!
>>>>>
>>>>> Sorry, I wanted to say that my c# code change the mapdefinitin in the
>>>>> layout
>>>>> for the current session;
>>>>> if i use administrator user, it seems to me that my repositories is
>>>>> modified
>>>>> in maestro, no and i will not ?
>>>>> For (Sample 1) my code is  http://patxi.mayol.free.fr/ag_default3.aspx
>>>>> here 
>>>>> For (Sample 2) my xml file is 
>>>>> http://patxi.mayol.free.fr/test_after.xml
>>>>> here 
>>>>> Thanks 
>>>>>
>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>   
>>>>>       
>>>>>           
>>>>>> You mention "layout resource", but the message states a MapDefinition
>>>>>> is 
>>>>>> saved?
>>>>>> Anonymous can only save to the same session, only Administrator can
>>>>>> save 
>>>>>> across
>>>>>> sessions.
>>>>>>
>>>>>> As for the parse error, your document is likely invalid.
>>>>>>
>>>>>> For (Sample 1), can you post the related code?
>>>>>> For (Sample 2), can you post a binary copy of the document you are 
>>>>>> trying to save?
>>>>>>
>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>
>>>>>>
>>>>>>
>>>>>> euskalmap skrev:
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> Hi,
>>>>>>> I modify, by c# script, the name of the layout resource; i use the
>>>>>>> MgUserInformation function with Anonymous user without password. 
>>>>>>> sample1 : In mapguide administrator this user have no role => so when
>>>>>>> i
>>>>>>> load
>>>>>>> the page i have this message : 
>>>>>>> Permission denied to resource:
>>>>>>> Session:98d50e40-ffff-ffff-8000-0016d44491c1_en_7F0000010AFC0AFB0AFA//Map_40312.MapDefinition 
>>>>>>> sample 2 : if i add the role Adminstrator and Map Author of the
>>>>>>> Anonymous
>>>>>>> user, i have this message :
>>>>>>> An exception occurred in DB XML component. Error: XML Indexer: Fatal
>>>>>>> Parse
>>>>>>> error in document at line, 1, char 1. Parser message: Invalid
>>>>>>> document
>>>>>>> structure 
>>>>>>>
>>>>>>> I understand anything ! Have you an idea ?
>>>>>>>
>>>>>>> Thanks
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>> _______________________________________________
>>>>>> 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
>>>>
>>>>
>>>>     
>>>>         
>>>   
>>>       
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>
>>
>>     
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20090707/87e05b00/attachment.html


More information about the mapguide-users mailing list