[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