There have been a very interesting article at SharePoint Developer Support Team Blog. It discusses editMode parameter, and also mentions WPID parameter in the code sample. This got me into researching this matter.
So far we had two MSDN articles, discussing tokens: URL strings and tokens in apps for SharePoint and URLs and tokens in SharePoint 2013.
They both lack a few important App Part tokens (parameters). Here they are:
- editMode - has two possible values: 1 or 0. 1 means the web part (not Page) is currently in Edit Mode.
- WPID - represents a WebPart.ID (sample value is "g_f5ac6d08_5b6f_41ea_90d1_0cc8a030061c").
- WPQ - represents a WebPart.ClientID (sample value is "ctl00_ctl33_g_f4a94a49_ce63_4c7f_ba05_884b17132672").
- WebLocaleId - represents a web.Language.ToString(CultureInfo.InvariantCulture) (sample value is "1033"), which is a Language Id.
You can use all those tokens in the URL, the same way as you use custom properties, without the need of adding actual properties. All tokens are case sensitive.
<ClientWebPart Name="ClientWebPart" Title="TestAppPart" Description="TestAppPart" DefaultWidth="600" DefaultHeight="300"> <Content Type="html" Src="~appWebUrl/Pages/DemoPage.aspx?{StandardTokens}&wpId=_WPID_&editmode=_editMode_&wpq=_WPQ_&weblocaleId=_WebLocaleId_" /> <Properties> </Properties> </ClientWebPart>
There are a few additional tokens (parameters) not allowed for the app parts, but allowed when rendering XmlWebPart, PageViewerWebPart, ImageWebPart, DataViewWebPart and DataFormWebPart. I did not try them out though, so your feedback on their usage is welcome. Here they are:
- LogonUser - represents a context.Request.ServerVariables["LOGON_USER"].
- WPR - represents a Web Part Resource Path : (web.Url + "/" + web.TypeCache[type, web.IsAppWeb, false].WebRelativeClassResourcePath).
- WPSRR - represents a Web Part Server Relative Resource Path : web.GetServerRelativeUrlFromUrl(web.TypeCache[type, web.IsAppWeb, false].WebRelativeClassResourcePath).
Hi Paul
ReplyDeleteThank you so mutch for this useful information.
I am building an angular.js app part for SP2013 and this is the information i needed to set the internal routing of my app.
We need to use "&" instead of "&" for our aditonal tokens
ReplyDeleteHm... It rendered the same characters in your answer... What exactly do you mean?
DeleteNobody knows...
Deleteyou need to use "& a m p ;" instead of "&"
Delete"&_a_m_p_;" instead of "&"
ReplyDeleteI created a small app that let you see all the tokens in a table view:
https://docs.google.com/folder/d/0B_2CaqE5tc9hYjhzRGdpUE9CYUE/edit?usp=sharing
Hi, I discovered that editMode is "1" only if you are editing your app part. It means, editMode is not "1" if you are just editing the page.
ReplyDeleteYes, you are right, I need to update it
DeleteWhy MS guys usually miss such important pieces in their documentation??!
ReplyDelete