tag:blogger.com,1999:blog-40785673528482031952024-03-13T20:04:45.136-07:00My Love For SharePointGeetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.comBlogger38125tag:blogger.com,1999:blog-4078567352848203195.post-86040380823101207852017-01-25T16:22:00.000-08:002017-01-25T16:23:17.851-08:00An Introduction to Microsoft Graph API<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px;">
In the simplest terms Microsoft Graph is the easiest way to call the Microsoft APIs be it Users, Groups, Mail, Calendars, Contacts, Files etc. all from a single endpoint. This was previously known as the Office 365 Unified API. It exposes multiple APIs from Microsoft Cloud Services like Outlook, OneDrive, OneNote etc through a single REST API endpoint (<a href="https://graph.microsoft.com/" style="color: #00749e; cursor: pointer; outline: none; text-decoration: none;" target="_blank">https://graph.microsoft.com</a>). Prior to this, in order to fetch data from each of these services you have to make different endpoint calls to the respective services making it a complex procedure. Using Microsoft Graph, you just have to make a single endpoint call to the cloud services and require a single authentication token.</div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px;">
As per Microsoft, <strong>“the Microsoft Graph gives you:</strong></div>
<ul style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px;">
<li><strong>A unified API endpoint for accessing aggregated data from multiple Microsoft cloud services in a single response</strong></li>
<li><strong>Seamless navigation between entities and the relationships among them</strong></li>
<li><strong>Access to intelligence and insights coming from the Microsoft cloud”</strong></li>
</ul>
<div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 12.1104px;"><b><br /></b></span></span></div>
<div>
<span style="background-color: white; color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.1104px;">The Microsoft Graph API uses Azure AD for authentication. The basic flow to get your app authenticated is listed below:</span><br />
<ol style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px;">
<li>Request an authorization code</li>
<li>Request an access token based upon the authorization code. Besides the access token, you also receive a refresh token.</li>
<li>Make call to the Microsoft Graph endpoint.</li>
<li>When the access token expires, use the refresh token to get a new access token instead of going through the entire authentication flow again.</li>
</ol>
<div>
<span style="background-color: white; color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 12.1104px; line-height: 16.9546px;">To read the complete post click on the link </span><a href="https://social.technet.microsoft.com/wiki/contents/articles/33525.an-introduction-to-microsoft-graph-api.aspx" style="background-color: white; font-family: "segoe ui", "lucida grande", verdana, arial, helvetica, sans-serif; font-size: 12.1104px; text-align: justify;" target="_blank">here</a></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-51888357325859411822017-01-25T16:17:00.001-08:002017-01-25T16:17:31.402-08:00Fetching User Profile Information using the SharePoint Framework Client Side Webpart<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; clear: both; color: #707070; font-family: "Segoe UI Light", "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 36.3312px; font-weight: 100; line-height: 1.3; text-align: justify;">
<br /></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;">Microsoft made some major announcements on May 2016 regarding the </span><strong style="font-size: 12.1px;">“Future of SharePoint”</strong><span style="font-size: 12.1px;">. This announcement brings a whole lot of new things into the picture around the modern team sites, new publishing pages, new UI for list and libraries, new home page for the sites etc. As a developer, one of the biggest change amongst these new changes is a new development model called the </span><strong style="font-size: 12.1px;">SharePoint Framework</strong><span style="font-size: 12.1px;">. Our focus on this article will be to do some deep dive into this new development model and use it to build a sample client side webpart.</span></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;"><br /></span></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;">As per Microsoft, </span><em style="font-size: 12.1px;">“The SharePoint Framework is a page and web model that provides full support for client-side SharePoint development, easy integration with SharePoint data, and support for open source tooling. With SharePoint Framework, you can use modern web technologies and tools in your preferred development environment to build productive experiences and apps that are responsive and mobile-ready from day one. The SharePoint Framework works for SharePoint on-premises and SharePoint Online.”</em></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<br /></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;">SharePoint Framework is a new modern and improved development model announced by Microsoft. It is a model that is solely focused on client side development. This new model is pure JavaScript based. This allows developers to use modern JavaScript and web template frameworks to build applications. We don’t even require a SharePoint server to preview our customization. We have the SharePoint Workbench that provides us a test environment on our desktop itself. </span></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<br /></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;">With the release of the first developer preview for the SharePoint Framework on August 18, 2016, we can actually do some research and get our hands dirty as to see what this new framework brings for us.</span></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1px;"><br /></span></div>
<div style="background-color: white; color: #2a2a2a; font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104px; text-align: justify;">
<span style="font-size: 12.1104px; line-height: 16.9546px; text-align: left;">To read the complete post click on the link </span><a href="https://social.technet.microsoft.com/wiki/contents/articles/35828.fetching-user-profile-information-using-the-sharepoint-framework-client-side-webpart.aspx" target="_blank">here</a><br />
<br style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.86px; text-align: left;" />
<span style="font-size: 12.1104px; line-height: 16.9546px; text-align: left;">Cheers,</span><br />
<span style="font-size: 12.1104px; line-height: 16.9546px; text-align: left;">Geetanjali</span></div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-54757358835404719672015-04-28T23:24:00.001-07:002015-04-28T23:24:21.323-07:00SharePoint 2013 : Creating a Composed Look <div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">With SharePoint 2013, many new features has been introduced by Microsoft like Device Channels, Cross Site Publishing, App Model, JS Link and many more. Among those many new cool features, one is Composed Look which has brought a revolution around the previous concept of themes. </span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Before we actually dive into the Theming engine, let us understand what themes actually are and after which we will talk about Composed Looks. </span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">As quoted from MSDN “</span><em style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Themes give you a quick and easy way to change the look and feel of any site in SharePoint 2013. They are predesigned collections of web page elements, such as fonts, color schemes, layout, and background pictures that come with SharePoint 2013.</em><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">”</span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">From an end user perspective, this is a very powerful feature as the users can select an OOTB available design and change the color, font, background image and layout etc. as well as create a new design altogether. We will get on to how to achieve this in a little while.</span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">With the advent of SharePoint 2013, there has been great improvement around the Theming Engine. Now we are not required to make themes in the Office client anymore. A new feature has been introduced by Microsoft named</span><strong style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Composed Looks</strong><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">. If you browse to the </span><strong style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Site Settings > Look and Feel</strong><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;"> there you can see a link to </span><strong style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Change the Look</strong><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">. Clicking on this link will land you on a page where you can see all the available composed looks that you can select from. </span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;"><br /></span>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">In SharePoint 2013 the theming engine has been revamped keeping into consideration the power users so as to facilitate them with a simple solution in the form of an interface where they can change the theme of their SharePoint 2013 site so that it gets aligned with their corporate branding standards in terms of color, fonts etc. without investing much time into it. It is indeed a very powerful feature when it comes to the enterprise. </span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">With composed looks, you can offer your Power Users with a list of branded looks and also give them the flexibility to do some modifications around the layout, color, fonts and images.</span><br />
<br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">To read the complete post click click on the link </span><a href="http://social.technet.microsoft.com/wiki/contents/articles/30903.sharepoint-2013-creating-a-composed-look.aspx" style="font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" target="_blank">here</a><br />
<br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Cheers,</span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Geetanjali</span><br />
<br />
<div style="text-align: left;">
<br /></div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-39859732690546011772015-02-15T23:29:00.000-08:002015-02-15T23:29:30.501-08:00SharePoint 2013 : An Introduction to JSLink<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Client Side Rendering (CSR) is one of the new concepts introduced by Microsoft in SharePoint 2013. With the help of this new feature you don’t have to write XSLT to style SharePoint elements like list views, fields etc. Using this technique you simply have to make use of HTML and JavaScript to change the user interface.</span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">As cited in MSDN “</span><em style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Client-side rendering provides a mechanism that you can use to produce your own output for a set of controls that are hosted in a SharePoint page. This mechanism enables you to use well-known technologies, such as HTML and JavaScript, to define the rendering logic of custom field types. In client-side rendering you can specify your own JavaScript resources and host them in the data storage options available to your farm solution, such as the _layouts folder.</em><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">”</span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;"><br /></span>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">Client side rendering is like a templating mechanism that you use to customize the UI. </span><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><br style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;" /><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">When we talk about client side rendering, then there are two things that requires a mention here are:</span><br />
<ol style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">
<li>Display Templates</li>
<li>JSLink</li>
</ol>
<div style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">
<br />Display templates are used in webparts that are based upon search technology. They are used for handling the rendering of the search results on the page. We can customize how the search results will appear to the end user.<br /><br />The second one i.e. the JSLink, is of our interest in the scope of this article. JSLink is one amongst the many cool features introduced by Microsoft in SharePoint 2013.<br />It is a property that is available on many SharePoint objects like content types, lists, views, fields and web part properties. We simply point this property to a JavaScript file that will do a magic on our page. In other words, will simply transform our page into whatever way we want to render all at the client side.<br /><br />You might have encountered scenarios where your customers have approached you to display lists with a custom look and feel without writing any piece of code. Consider for example you have a list holding contact details of the users that needs to be displayed in a card like manner as opposed to the traditional screen. And all this has to be done without writing any server side code. Though this might seem to be tricky but it can be achieved very easily using a simple mechanism and i.e. JSLink.<br /><br />JSLink has tremendous power. It can transform your entire site into an attractive piece without writing any server side code. It is like an on-off switch. If you don’t like it, you can simply remove the value of the jslink property and you will get back the original default behaviour.<br /><br />To see the actual strength of this property, let us actually dig some code and cover some scenarios.</div>
<div style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">
<br /></div>
<div style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12.1104001998901px; line-height: 16.9545593261719px;">
To read the complete post click click on the link <a href="http://social.technet.microsoft.com/wiki/contents/articles/29764.sharepoint-2013-an-introduction-to-jslink.aspx" target="_blank">here</a></div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-9375188171072501012014-10-31T21:58:00.000-07:002014-10-31T21:58:04.490-07:00SharePoint Online : An Introduction to Office Delve<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.9545612335205px;">Microsoft has been talking about “codename Oslo” and Office Graph since the SharePoint conference in March 2014. Office Delve (previously codenamed “Oslo”) was launched recently by Microsoft on September 8. For all those who are not aware as to what Office Delve is, let us briefly discuss about what the Office Delve is and after that we will dive into fetching data from Office Graph Using Graph Query Language.</span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.9545612335205px;"><br /></span>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.9545612335205px;">To read the complete post click on the link <a href="http://social.technet.microsoft.com/wiki/contents/articles/28150.sharepoint-online-an-introduction-to-office-delve.aspx" target="_blank">here</a></span></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-51972856755493938362014-10-31T21:55:00.000-07:002014-10-31T21:55:00.542-07:00Step by Step Guide to Configure Environment for Creating your first SharePoint Hosted App<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.9545612335205px;">One of the new features of SharePoint 2013 is the SharePoint App Model. Similar to the windows phone marketplace, we now have a SharePoint Store available where we can simply search for apps and download them on our SharePoint site. In SharePoint 2013, everything is an app, be it lists or libraries.</span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.9545612335205px;"><br /></span>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.7999992370605px;">In this article we will talk about how to configure development environment for an on-premise implementation of a SharePoint Hosted App. We will also create our first basic SharePoint Hosted Apps and talk about few possible errors usually encountered by developers while implementing their very first app. There are huge amount of reference available over MSDN to create and configure the apps but the purpose of this article is to help developers not only configure the environment but also pose before them the common challenges that they might face during their very first implementation and help them resolve those errors.</span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.7999992370605px;"><br /></span>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16.7999992370605px;">To have a complete look at this post, refer to link over <a href="http://social.technet.microsoft.com/wiki/contents/articles/25793.step-by-step-guide-to-configure-environment-for-creating-your-first-sharepoint-hosted-app.aspx" target="_blank">here</a></span><br />
<br />
<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-47809921219590220122014-06-26T09:31:00.001-07:002014-06-26T09:31:46.082-07:00SharePoint Online : Working with People Search and User Profiles<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: inherit;"><span>People Search and User Profiles are amongst the popular topics that everyone use in their projects every now and then. With SharePoint 2013, a lot of functionality has been included in the Client API's by Microsoft. If you consider user profiles itself, in SharePoint 2010 you cannot fetch user profiles using client side object model. However, with SharePoint 2013, you have a wide variety of methods that you can use to fetch the user profile information using client object model. The search API is also expanded greatly.<br /><br />Content Search WebPart is one of the important additions in SharePoint 2013. Using this webpart you can display content that was crawled and added to search index.</span></span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span><span style="font-family: inherit;">To have a complete look at this post refer to the link over <a href="http://social.technet.microsoft.com/wiki/contents/articles/25074.sharepoint-online-working-with-people-search-and-user-profiles.aspx" target="_blank">here</a>. </span></span></span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span><span style="font-family: inherit;">Cheers,</span></span></span></span></div>
<div style="text-align: justify;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span><span style="font-family: inherit;">Geetanjali </span></span></span></span></div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-29260871150869752302014-06-26T09:25:00.001-07:002014-06-26T09:25:40.198-07:00SharePoint Online : Export User Profile Properties Using CSOM<div dir="ltr" style="text-align: left;" trbidi="on">
With SharePoint 2013, Microsoft has provided the ability to fetch User
Profile information client side using CSOM API’s. User Profiles and user
profile properties provide information about the SharePoint Users.
<br />
<br />
The scope of this article is to talk about how we can make use of CSOM
API to fetch the user profile information on Office 365 and export
profile properties to a csv file.<br />
<br />
To read this entire blog post visit the link <a href="http://social.technet.microsoft.com/wiki/contents/articles/24627.sharepoint-online-export-user-profile-properties-using-csom.aspx" target="_blank">here</a>. </div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-59154800360420124932014-06-26T09:21:00.000-07:002014-06-26T09:21:55.312-07:00Perform Basic Admin Operations using CSOM in SharePoint Online<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
This post will focus on how to make use of <a href="http://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.client.sharepointonlinecredentials.aspx" target="_blank">
SharePointOnlineCredentials <img border="0" src="http://social.technet.microsoft.com/wiki/cfs-file.ashx/__key/communityserver-components-sitefiles/10_5F00_external.png" title="This link is external to TechNet Wiki. It will open in a new window." /></a>class to authenticate to SharePoint Online from your host machine using
a console application. In this article I will give you a walk through
of some of the basic administration stuff that can now be achieved using
CSOM. Previously
this was possible only using Powershell and SharePoint Online (SPO)
commandlets but now we have CSOM as an option available as well.<br />
<br />
Though we can use CSOM from an app but in the below scenarios I will be
implementing the same using Console Application to keep things simple.<br />
<br />
To read the entire post visit the link <a href="http://social.technet.microsoft.com/wiki/contents/articles/24050.perform-basic-admin-operations-using-csom-in-sharepoint-online.aspx" target="_blank">here</a>. <br />
<br />
Cheers,<br />
Geetanjali </div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-66136666630360981902014-04-04T02:42:00.000-07:002014-04-04T02:42:18.033-07:00Count the selections inside a people picker control<div dir="ltr" style="text-align: left;" trbidi="on">
Dear Readers,<br />
<br />
This is another of my people picker post where I will write how using jQuery you can count the number of entities/users you have provided inside your people editor control. For my previous posts on people editor refere to the links <a href="http://myloveforsharepoint.blogspot.in/2014/02/accessing-people-editor-control-using.html" target="_blank">link1</a> and <a href="http://myloveforsharepoint.blogspot.in/2014/04/validate-people-picker-value-is.html" target="_blank">link2</a> .<br />
<br />
<div style="text-align: left;">
Coming back to the scenario, at times you need to do client side validation to see how many entities you have entered inside the people editor control. You have an attribute <span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;">MultiSelect</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">="false" </span></span></span>that you can set on the SharePoint:PeopleEditor control to show an error message stating that only one value is allowed to be entered in the people editor control. Now if you want to do the same validation using jQuery then its really simple. Below is the code snippet for the same. </div>
<span style="color: blue; font-family: Consolas; font-size: x-small;"><br /></span><span style="font-family: Consolas; font-size: x-small;"> </span><br />
<span style="font-family: Consolas; font-size: x-small;"></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">var</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> noOfChildren = $(</span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"[id$='peopleEditorProductOwner_upLevelDiv']"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">).children().length;</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"></span><br />
<div style="text-align: left;">
<span style="font-family: Consolas; font-size: x-small;">where 'peopleEditorProductOwner' is the id of the people editor control.</span></div>
<div style="text-align: left;">
<span style="font-family: Consolas; font-size: x-small;"></span> </div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
Hope that helps !</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
Cheers,</div>
<div style="text-align: left;">
Geetanjali </div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com4tag:blogger.com,1999:blog-4078567352848203195.post-64074545540467173142014-04-04T02:21:00.000-07:002014-04-04T02:21:10.140-07:00Validate People Picker Value is Resolved or not using jQuery<div dir="ltr" style="text-align: left;" trbidi="on">
Dear Readers,<br />
<br />
Recently I was working on a people picker control and using jQuery I have to validate whether the people editor field is resolved or not. I played with people picker control using the IE developer tool and finally came up with the solution using jQuery. Its a very simple jQuery implementation and hope it might help somebody. For greater understanding of the below snippet have a look at my previous post <a href="http://myloveforsharepoint.blogspot.in/2014/02/accessing-people-editor-control-using.html">here</a><br />
<br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"></span></span><br />
<span style="font-family: Consolas; font-size: x-small;"><div style="text-align: left;">
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"><span style="color: blue;">var</span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> </span></span>htmlPeopleEditor = $(</span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"[id$='peopleEditorProductOwner_upLevelDiv']"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">);</span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">
</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">var</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> isResolved = $(</span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"#divEntityData"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">, htmlPeopleEditor).attr(</span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"isResolved"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">);</span></span><br />
<br /></div>
</span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">if (isResolved == </span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"False"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> || isResolved == </span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">"false"</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">) {</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">
</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> alert("Not Resolved");</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"><br /></span>}<br />
<br />
<br /></span>Now if you look at the above snippet, there is an <strong>isResolved </strong>attribute that gets set when you try to resolve a people picker field. With the help of this attribute you can ensure whether your people picker field is resolved or not.<br />
<br />
Hope that helps !<br />
<br />
<br />
Cheers,<br />
Geetanjali<br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">
</span></span><br />
<span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"> </span></span> </div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com6tag:blogger.com,1999:blog-4078567352848203195.post-24398085627427344762014-03-04T01:44:00.000-08:002014-03-04T01:44:18.361-08:00jQuery DatePicker and jQuery Multiselect Widget Scroll Issue<div dir="ltr" style="text-align: left;" trbidi="on">
Recently I was using jquery ui datepicker control and jquery multiselect widget for a SharePoint project. I observed that whenever I scroll the page after opening these controls then these remained fixed on the screen. They should have either scrolled along with the control to which they were attached or should have closed.<br />
But there they were on the screen without moving from their original position. Decided on fixing this issue I started exploring the respective API's and also how the close functionality is handled by the respective js files i.e. the jquery-ui.js and jquery.multiselect.js. I decided to collapse these opened datepicker calendar and the multiselect menu whenever web page scroll takes place as you are changing your focus to some other part of the page rather than these controls.<br />
After drilling down through API for the jquery-ui.js datepicker and jquery.multiselect.js multiselect widget I came across the following methods.<br />
<br />
<strong>jQuery DatePicker</strong><br />
<strong></strong><br />
<strong>hide() - Close previously opened datepicker</strong><br />
<br />
<strong>jQuery Multiselect Widget </strong><br />
<strong></strong><br />
<strong>close() - Closes the opened menu</strong><br />
<strong></strong><br />
So, now the task seemed quite simple. I had to simply call these methods on scroll so as to close.<br />
<br />
Let me first show you how to do it for datepicker<br />
<br />
<strong>
</strong><code><strong>
$('#s4-workspace').scroll(function () {<br /> <br /> //Calling the blur method is important so that you can take the focus away from the datepicker <br /> $("#dpSelectedDate").blur();<br />
//The below method call will close the opened datepicker<br /> $("#dpSelectedDate").datepicker("hide");<br />});<br />
</strong>
</code>In the above piece of code, I am using $('#s4-workspace').scroll() because in SharePoint context, when you scroll then this is the container that gets scrolled. Rest of the code is self explanatory.<br />
<br />
Now, coming to jquery multiselect widget, the below code snippet will solve the issue<br />
<strong>
<code>
$('#s4-workspace').scroll(function () {
<br />
$("#selectControlID").multiselect("close");
<br />
});
</code></strong>
<br />
<br />
Hope this might help you out at some point of time. <br />
<br />
Cheers,<br />
Geetanjali<br />
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com2tag:blogger.com,1999:blog-4078567352848203195.post-45151098814888930732014-02-24T02:39:00.000-08:002014-02-24T03:30:54.060-08:00Restrict html tags in textbox<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
At times you might encounter situations where the customer wants to restrict certain characters from being entered into a textbox. A common scenario is to restrict users from entering the html tags like < and > symbol from being entered into the textbox. <br />
Using javascript you can achieve this very easily. What you need to understand here are the different events that gets fired when we press any key on the keyboard.<br />
<ol>
<li><strong>KeyDown</strong> - A key is pressed down.</li>
<li><strong>KeyPress</strong> - A character key is pressed</li>
<li><strong>KeyUp</strong> - A key is released.</li>
</ol>
Now although KeyDown and KeyPress may seem to be the same but they are not. Keydown is triggered on any key press. KeyPress triggers after KeyDown event but it is only guaranteed for character keys.<br />
<br />
So, after having this basic understanding, we can move ahead with the requirement and that is to restrict users from entering the "<" and ">" characters.<br />
<br />
<strong><code>
function RestrictTags(sender, event) {<br />
var key = event.which ? event.which : event.keyCode;<br />
var shiftKey = event.shiftKey;<br />
if ((shiftKey == true) && ((key == 188) || (key == 190))) {<br />
return false;<br />
}<br />
return true;<br />
}<br />
</code></strong></div>
</div>
The above code snippet shows how you can restrict "<" and ">" tags from being entered. Let me briefly explain you what the above piece of code does.<br />
<br />
<strong>event.which - </strong>It returns the numeric keyCode of the key pressed or the character code (charCode) of the alphanumeric key pressed.<br />
<strong>event.shiftKey - </strong>It is a boolean attribute that helps in identifying if a shift key is pressed or not.<br />
<br />
So, if you look at the keyboard, in order to press the "<" or ">" key, you need to press the Shift key and then the "<" and ">" key.<br />
<br />
<strong>188 </strong>is the keyCode for both <strong>,</strong> and <strong><</strong> <br />
<strong>190 </strong>is the keyCode for both <strong>.</strong> and <strong>></strong><br />
<strong></strong><br />
So, in order to differentiate whether 188 is coming because of comma or less than symbol key press and 190 is coming because of period key or greater than key pressed, you make use of event.shiftKey.<br />
So if you have the event.shiftKey attribute set to true and the keyCode is 188 that means you have pressed > . Similarly if you have event.shiftKey to true and the keyCode is 190 that means you have pressed <.<br />
<br />
So that explains the if condition above. Rest is self explanatory. Calling the above method on the keydown event, you can restrict the user from entering the > and < characters.<br />
<br />
You can call the event like below<br />
<br />
<strong>
<code>
<input id="txtName" type="text" onkeydown="return RestrictTags(this,event);"/><br />
</code>
</strong>
<br />
Hope that helps !!!<br />
<br />
<ol>
</ol>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-19417918096356998172014-02-13T07:46:00.000-08:002014-02-13T07:46:03.194-08:00Accessing People Editor control using jQuery in SharePoint<div dir="ltr" style="text-align: left;" trbidi="on">
Dear Readers,<br />
<br />
Recently I came across a requirement where I had multiple
people editor controls on the page and I had to fetch the login name of the
resolved user corresponding to each of these people picker controls. My
requirement was to fetch all these login names using javascript or jquery. Now I
tried all the old convention methods that used to work when we have only one
people picker on the page. To my surprise, even if I provide the id
corresponding to the respective people picker, the conventional javascript
methods used to return the value of the first people editor only. So, in
nutshell, none of the conventional methods worked for me.<br />
So, I started
exploring how does these people editor controls render on the page. Now, using
IE developer tool, the html that came in front of me was very complex. Lot of
spans and divs are rendered for just one single people editor control. But in
its complexity was the simplicity of the solution that laid behind my eyes in
that html code in front of me.<br />
<br />
For my kind readers out here, I am pasting
the html snippet for one of my people editors on the page.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-SiHnT6o272g/Uvyzv2DRvnI/AAAAAAAAAd8/Y6OgKJKkSh0/s1600/peoplepickercontrol.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-SiHnT6o272g/Uvyzv2DRvnI/AAAAAAAAAd8/Y6OgKJKkSh0/s1600/peoplepickercontrol.png" height="113" width="320" /></a></div>
<br />
<br />
So if you look
at this code snippet, you see that a div with the id ending with
'peopleEditorProductOwner_upLevelDiv' gets generated for my people editor.<br />
<br />
var htmlPeopleEditorControl =
$("[id$='peopleEditorProductOwner_upLevelDiv']"); <br />
<br />
The
html that gets returned based upon this element has a div with id
"divEntityData" and an attribute "key" which holds the value for the account
name.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-gMuT0d3Aelw/UvyzxtLb8QI/AAAAAAAAAeI/fjAh1vNRwwM/s1600/people_editor.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-gMuT0d3Aelw/UvyzxtLb8QI/AAAAAAAAAeI/fjAh1vNRwwM/s1600/people_editor.png" height="144" width="640" /></a></div>
<br />So based upon this we can find the account name for all the people
editor controls on the page.<br />
<br />
Below is the sample jquery snippet to fetch
the same for one control.<br />
<br />var accountName =
$("#divEntityData", htmlPeopleEditorControl).attr("key");<br />
<br />
where
'peopleEditorProductOwner' is the people editor id of my control.<br />
<br />
Similarly
for all other people editor controls on the page, you can fetch the login
name.<br />
<br />
Hope this piece of information might be helpful.<br />
<br />
Cheers,<br />
Geetanjali</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com5tag:blogger.com,1999:blog-4078567352848203195.post-7535250412716375142013-09-17T02:33:00.000-07:002013-09-17T02:33:46.726-07:00Hiding links in Welcome Control in SharePoint 2013<div dir="ltr" style="text-align: left;" trbidi="on">
Lately, I came across a requirement around hiding the "About Me" link in the welcome control dropdown. The simplest and quickest solution that seemed to me was to play some tricks using css.<br />
Using firebug, I tried to analyse how OOB SharePoint Welcome Control menu renders. Below is the screenshot of how it works.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-rnuz0JqtfEU/Ujf_yOc7SkI/AAAAAAAAAcE/Hspylso7N60/s1600/menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="122" src="http://1.bp.blogspot.com/-rnuz0JqtfEU/Ujf_yOc7SkI/AAAAAAAAAcE/Hspylso7N60/s400/menu.png" width="400" /></a></div>
<br />
Now the game is simple. As you can see in the above screenshot, the menu is rendered as ul and li.<br />
There are two dropdown items in the Welcome Menu - About Me link and the Sign Out link each as li tags inside the ul tag.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-vwejEEYW_sU/UjgAu0koT7I/AAAAAAAAAcM/fLqGA476miA/s1600/aboutmelink.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="http://2.bp.blogspot.com/-vwejEEYW_sU/UjgAu0koT7I/AAAAAAAAAcM/fLqGA476miA/s200/aboutmelink.png" width="200" /></a></div>
<br />
I did some manipulation with the css and boom the About Me link got hidden.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-b3_b5M-yNSU/UjgBJt9H7sI/AAAAAAAAAcU/agalCe_aMiw/s1600/code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="47" src="http://2.bp.blogspot.com/-b3_b5M-yNSU/UjgBJt9H7sI/AAAAAAAAAcU/agalCe_aMiw/s400/code.png" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now if you have a look at the welcome menu it has the About Me link hidden. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-C0rkuASdiHE/UjgCAGTCkWI/AAAAAAAAAcg/o2Tfw8KxfrM/s1600/linkremoved.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="http://4.bp.blogspot.com/-C0rkuASdiHE/UjgCAGTCkWI/AAAAAAAAAcg/o2Tfw8KxfrM/s200/linkremoved.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
This might not be the best solution to do it but very simple to do. Hope it helps !!!</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com2tag:blogger.com,1999:blog-4078567352848203195.post-13774925859306155142013-08-07T23:46:00.001-07:002013-08-07T23:46:59.308-07:00Unexpected response from server. The status code of response is '0'. The status text of response is ''<div dir="ltr" style="text-align: left;" trbidi="on">
Recently while working with ECMASCRIPT I came across an issue that stated "Unexpected response from server. The status code of response is '0'. The status text of response is ''. Now, I got this error in the error logger list which is a custom list that we created to log any exceptions that arise.<br />
To my utter surprise, I was not able to reproduce the issue at my local environment as well as production site and no complaints of any broken functionality also came from the client. But randomly this error was getting logged in the logger list. This made me think as to what could be the cause of the issue. I tried various ways to reproduce this error and voila, I was able to get to this error when I navigated to some other page before the asynchronous call that my ecmascript code was making had completed. I tried this a couple of times and everytime I navigated to the other page before the call had completed, I got this error logged in the logger. This way I could understand as to why this happened.<br />
After some more analysis, I found out that status code 0 comes when you make an ajax call and refresh the page or navigate to some different page without getting the ajax response. So for all my dear friends out there, if you ever come across this random weird error, then probably it is because your asynchronous call was cancelled before getting the response. Hope it gives some pointer.<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com8tag:blogger.com,1999:blog-4078567352848203195.post-4573783833801368422013-08-07T22:13:00.001-07:002013-08-07T22:13:03.571-07:00Navigating to different URL from Desktop and Mobile View in SharePoint 2013<div dir="ltr" style="text-align: left;" trbidi="on">
Recently, while incorporating device channels in SharePoint 2013 Online site, I came across a requirement where users were to be navigated to different pages for a particular menu item in the Top navigation. We were using Managed Metadata Navigation and the Top Navigation that was getting rendered was same for both desktop and mobile view. Since it was all dynamic so as per my understanding the option we had was to change this navigation at runtime on the fly. Out of various options that might be available for this, the simplest to me seemed to be dynamically change the URL using Jquery and CSS. I did some analysis as to how the navigation is getting rendered in the Mobile and what classes are getting attached and based on that came up with the following solution <br />
<br />
<img alt="" src="data:image/png;base64,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" /><br />
<br />
<br />
If you look at the above code snippet which I see for my mobile device channel, every menu item , irrespective of the first level of navigation or the second level of navigation, renders as an li tag with an anchor tag. The anchor tag is having class as <b>level1</b> for First Level of navigation and <b>level2</b> for Second Level of navigation. Now, we can play with level1 or level2 class based upon which level of navigation we want to change and hence achieve the desired functionality.<br />
<br />
$(".level2:Contains('Menu Item Title')").each(function () {<br /><br /> var menuItem = $(this);<br /> var parentItem = menuItem.closest("a");<br /> parentItem.attr("href", "Desired Navigation Url");<br /><br /><br />}); <br />
<br />
Now, what the above code snippet does is that it checks for all the menu items where the title exists that I need to change and for that menu item, it changes the href attribute to the desired navigation url. This code snippet can be placed in the mobile master page for the device channel.<br />
<br />
Please note that the above approach is a workaround only and not a perfect solution as there are some side effects of this approach. The above jquery will fire everytime the page loads as we have written it in the masterpage and on the fly it will change the navigation url if we are using the mobile master page. Also, since these classes are OOB so if in future Microsoft changes the class names then this will not work and we need to change it accordingly. However, we can try to explore more around SharePoint ASP menu and try to apply some custom class there and see how that works. Also, for readers who want to explore more options can try to play around with taxonomy using ecmascript and see what can be achieved using that. Above approach is a quick fix and used with caution.<br />
<br />
Happy Reading :)<br />
<br />
<br />
<br />
<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-14026653170141520802013-08-07T05:28:00.001-07:002013-08-07T05:28:33.065-07:00Mobile Panel in SharePoint 2013<div dir="ltr" style="text-align: left;" trbidi="on">
In my previous post on Device Channel, I explained how to create a device channel to target different devices. In this blog post, I will explain about Mobile Panels and Device Channel Panels and why to use them. I am going to explain a scenario which me and my friend worked on in order to have an understanding on the exact need for these panels.<br />
There are times when you want to target only specific content of a page based on devices. Most of the times you might have noticed that many websites have a whole bunch of features when you have a look at the site in the desktop mode and have filtered set of features when viewed on mobile.<br />
When it comes to SharePoint 2013, then Microsoft has came up with the concept of Mobile Panel and Device Channel Panel to provide a similar feature. These help in targeting specific content of a page layout on mobile and desktop. Mobile Panel allows content authors to target specific content for different devices. For example, mostly you have observed a banner image coming as a feature area on the sites. Now, this looks nice on the desktop version, but on mobiles, this does not seem much relevant. So, the requirement is to show this banner only is the user is in desktop view and not when in mobile view. Device Channel Panel is also a snippet that we can add to master page or to a page layout to control what content is rendered for the channels that we create. So for the above scenario, we want to have a single page layout which should be intelligent enough to show content specific to each of these channels.<br />
<br />
Now, the main thing here is to create a page layout which could be shared across all mobile devices as well as the desktop view. In order to do that we need to make it device enabled using Mobile Panel. The normal way of proceeding on this is to have a region where all the common webparts both for mobile and desktop should go and another region where desktop specific should go. But this is not as simple as it seemed. We started with adding device channel for desktop and added a webpart zone there so as to add our banner webpart there which was meant to be visible only in desktop version. Then outside that device channel, we added webpart zones that will hold all the webparts that were common for mobile and desktop version. But to our surprise, this did not work. This logically correct solution was not showing the behavior that we expected from it.<br />
Then we thought of creating two device channels, one for mobile and the other for desktop each having webpart zones and then we added all the mobile specific webpart to the device channel meant for Mobile and all the desktop specific webparts to the Default Channel(which is used for Desktop view). But the results were surprising again. In the desktop view, everything seemed correct but as soon as we switched to mobile view, we observed that the banner webpart, which we had only added in the desktop view and not in the mobile view, was visible in the mobile as well. On editing the page, we saw that in mobile view, edit page is showing the webpart but in wrong zone.<br />
After some analysis, we found that the issue is that when a webpart is added to a webpart zone in one mobile panel and if that webpart zone does not exist in the other mobile panel then that webpart will automatically move to the next available webpart zone. Therefore, when we added the banner webpart to a zone in the Desktop device channel and when the page is viewed in mobile view, then because the banner webpart zone did not exist in the mobile view, the banner webpart got added to one of the webpart zones of the mobile device channel. So, after some drilling, we came to a solution that since the availability of the webpart zones is causing an issue, what if we design the layout in a way that the desktop device channel will have webpart zones in the mobile panel and the mobile device channel will have Publishing HTML fields instead to add the webpart. Therefore, if there will be no webpart zone in the mobile view, then there will be no zone available for the banner webpart to get added to. We tried this approach and Voila it worked. Below is the code snippet for what we actually did.<br />
<br />
<img alt="" src="data:image/png;base64,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" /><br />
Now in the above code if you see, we have added two MobilePanels, one for the desktop and other for the Mobile. Both the MobilePanels have an attribute named IncludedChannels, which tells the panel which channel to target. "DEFAULT" is used for desktop view and "MOBILE" in our case is used for targeting mobile devices.<br />
The above solution has however the following limitations<br />
<ol style="text-align: left;">
<li>User has to manually add webparts to the mobile device panel. You can however overcome this limitation by automating adding of webparts to the RichHtmlField.</li>
<li>Two copies of the same webpart will be there on the page for the common webparts. However, for example say we have written a webpart whose business logic is written in a separate js file then this does not mean that the js file will be loaded twice on the page one for the desktop and one for the mobile view. The js file will be loaded only once for each channel. So performance wise, it will not impact.</li>
</ol>
This is how you can target specific content of the page layout for different channels using MobilePanels.<br />
Please note here that the MobilePanels are now deprecated and instead we should use DeviceChannelPanels. DeviceChannelPanels are used in the same way as we used the MobilePanels above and they offer the same functionality. <br />
<br />
Hope this helps somewhere. :)<br />
<br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com2tag:blogger.com,1999:blog-4078567352848203195.post-34568344763581831142013-08-02T08:17:00.000-07:002013-08-02T08:17:23.811-07:00Device Channel in SharePoint 2013<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Amongst many new features introduced
in SharePoint 2013, one of the key features is Device Channel. With the
continuous growth in the mobility sector, mostly smartphones are being widely
used to surf net. As a result, it is very important to provide a user
friendly experience to any user visiting your website on mobile.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Microsoft has come up with the
concept of Device Channels in SharePoint 2013. For all those who have not heard
about Device Channels, let me explain it briefly.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Device Channels allows you to target
your SharePoint site (Device Channels are available only if publishing feature
is activated.) on mobile devices. It helps you in setting different master
pages and css for different devices like Tablet, Windows Phone, iPhone etc. As
a result, you can have a user friendly experience for your website when viewed
on mobile device.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">The very first thing that needs to
be done is to create Device Channel for your site. In order to do the same, you
need to go to the Site Settings > Look and Feel section and click Device
Channels link.</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8lZa0FRMkOI/UfvLlVZjZYI/AAAAAAAAAbo/RgyH2i-4g0w/s1600/devicechannel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-8lZa0FRMkOI/UfvLlVZjZYI/AAAAAAAAAbo/RgyH2i-4g0w/s1600/devicechannel.jpg" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">After clicking this link, you will
be directed to the list that contains all the device channels. By default you
will see one device channel created for you already. It is the default channel
which will be visible when no other channels are active or when the device's
user agent string does not match the device inclusion rules for any active
channel.</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-6TfaQP8istA/UfvLkpbkQvI/AAAAAAAAAbY/wSbwYI3j-iI/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="63" src="http://2.bp.blogspot.com/-6TfaQP8istA/UfvLkpbkQvI/AAAAAAAAAbY/wSbwYI3j-iI/s400/5.jpg" width="400" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"></span> </div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"></span> </div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">When you try to create a new device
channel for your devices, you need to specify a few important parameters i.e.
Alias, Device Inclusion Rules and Active.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Alias </span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">is the unique ID that helps in determining the device
channel in the code. This comes handy when working with Device Channel Panel
(will come on this a little later).<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Device Inclusion Rules</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"> contains the user agent substring such as <b>Windows Phone
OS</b>. This substring will be matched against the browser's user agent string
in the device and based on that master page will be applied.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Active</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"> checkbox enables the device channel if it is checked.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-jYApEKBbo20/UfvLlg_K1jI/AAAAAAAAAbw/9xzMmQPR7iQ/s1600/devicechannel2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-jYApEKBbo20/UfvLlg_K1jI/AAAAAAAAAbw/9xzMmQPR7iQ/s320/devicechannel2.jpg" width="295" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">The next thing that is required to
be done is to associate a master page to the newly created device channel. To
do this, go back to the site settings Look and Feel section and click on Master
Page link.</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ehZ64bh2QbI/UfvLkpxPH1I/AAAAAAAAAbc/OByMZfiFgx0/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ehZ64bh2QbI/UfvLkpxPH1I/AAAAAAAAAbc/OByMZfiFgx0/s1600/3.jpg" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span> </div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">There you can configure a master
page for your newly created Device Channel.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-oVoywEgoUys/UfvLkjLg3mI/AAAAAAAAAbk/5jVDcZFARoQ/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="78" src="http://1.bp.blogspot.com/-oVoywEgoUys/UfvLkjLg3mI/AAAAAAAAAbk/5jVDcZFARoQ/s320/4.jpg" width="320" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">After setting the master page for
your device, now if you view the site in the device, you will see the device
channel applied. <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">In case you directly want to test
the changes, you can do it by appending the following to the url in the
browser.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">?DeviceChannel=Alias<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">eg
http://somedomain.com?DeviceChannel=mobile<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Hope it gives you a brief idea about
what device channels are and how they can be configured. In my next post , I
will explain about Device Channel Panels. Till then stay tuned. :)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 6pt;">
<span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Happy SharePointing :)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<o:p></o:p></div>
</span><div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
<o:p></o:p></div>
</span><div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;">
</div>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-4502435561519222742013-07-22T23:07:00.002-07:002013-07-22T23:07:47.338-07:00JQuery to identify "Potrait" or "Landscape" mode for device<div dir="ltr" style="text-align: left;" trbidi="on">
Hello Kind Readers,<br />
<br />
Recently while enabling Device Channel for SharePoint 2013, I came across a requirement to identify whether the device is in Potrait Mode or Landscape Mode. Based on the mode of the device, different behaviour should happen. There is a simply jQuery event that helps you capture this device transition from Potrait to Landscape or vice versa.<br />
<br />
You need to make use of jquery mobile which has an event as <b>orientationchange</b> that gets triggered whenever we make the transition.<br />
<br />
Below code snippet will explain more on this.<br />
<br />
<script src="http://code.jquery.com/jquery-1.10.0.min.js"></script><br /><script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script><br /><br /><script type="text/javascript"><br /><br />
$(window).on( "orientationchange", function(event ) {<br /> alert("This device is in " + event.orientation + " mode!" );<br />});<br />
<br />// You can also manually force this event to fire.<br />$(window).orientationchange();<br /></script><br />
<br />
In this way, using <b>orientationchange</b> event and fetching the value of <b>event.orientation</b> method, you can find the device mode.<br />
<br />
Hope it Helps !<br />
<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-3119258752348793572013-07-03T00:24:00.002-07:002013-07-03T00:25:31.468-07:00JSRequest to play with Query string<div dir="ltr" style="text-align: left;" trbidi="on">
At times we are required to fetch some parameters from query string. There are various ways to play with it. Recently I came across a short and simple object to fetch parameters from query string.<br />
JSRequest is a javascript object that lives on the SharePoint page through which you can easily find the query string parameter, filename and path name. <br />
<br />
<b>Usage</b><br />
<br />
e.g. URL is /Pages/default.aspx?fName=Geetanjali&lName=Arora<br />
<br />
JSRequest.EnsureSetup(); //mandatory<br />
var fName = JSRequest.QueryString["fName"]; // returns Geetanjali<br />
var lName = JSRequest.QueryString["lName"]; // returns Arora<br />
var fileName = JSRequest.FileName; // returns default.aspx<br />
var pathName = JSRequest.PathName; // returns /Pages/default.aspx<br />
<br />
<br />
Quite simple as you can see from the above snippet. Hope it helps.<br />
<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com0tag:blogger.com,1999:blog-4078567352848203195.post-85891192486707132962013-04-07T11:35:00.000-07:002013-04-07T11:35:27.943-07:00A subsite cannot be created inside an app web<div dir="ltr" style="text-align: left;" trbidi="on">
For all those who have started exploring SharePoint 2013 must be by now aware of the term App Web. Recently , I did a small POC to see how we can provision a subsite inside an app web. Now on first glance it seems to be a quite simple requirement as you are simply going to create a subsite. But this is not the case.<br />
For App's things are a bit different. After some struggle to create a subsite inside an APP Web, I got an error message stating that "A subsite cannot be created inside an APP Web" .<br />
For all those who wants to drill down further as to how this message came, please have a look at the below code snippet that gave the above result.<br />
<br />
<br />
<br />
<pre class="prettyprint prettyprinted" style="border: 1px solid rgb(136, 136, 136); color: #2a2a2a; direction: ltr; font-family: inherit; font-size: 13px; line-height: 20px; list-style-type: none; min-height: 70px; overflow-x: auto; overflow-y: visible; padding: 2px; vertical-align: baseline; word-wrap: normal;"><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> hostweburl</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">appweburl</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
jQuery</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">document</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">ready</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">()</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
hostweburl </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> decodeURIComponent</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
getQueryStringParameter</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"SPHostUrl"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
appweburl </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
decodeURIComponent</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
getQueryStringParameter</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"SPAppWebUrl"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
jQuery</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"#btnSubmit"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">click</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">()</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
createSite</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">();</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">});</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">});</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> getQueryStringParameter</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">paramToRetrieve</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">params</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
document</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">URL</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">split</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"?"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)[</span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">].</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">split</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"&"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> strParams </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">""</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">for</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> i </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> i </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">params</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">length</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> i </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> i </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">+</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> singleParam </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">params</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">i</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">].</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">split</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"="</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">if</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">singleParam</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">==</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> paramToRetrieve</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">return</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> singleParam</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">];</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> createSite</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">()</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
context </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> SP</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="typ" style="border: 0px; color: #660066; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">ClientContext</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">appweburl</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
currentWeb </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> context</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">get_web</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">();</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
context</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">load</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">currentWeb</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
context</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">executeQueryAsync</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">onCreationSuccess</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="border: 0px; color: #660066; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">OnFailure</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> onCreationSuccess</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">()</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> appInstanceID </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> currentWeb</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">get_appInstanceId</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">();</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> webCreateInfo </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> SP</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="typ" style="border: 0px; color: #660066; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">WebCreationInformation</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">();</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_description</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"This site created from ECMA script"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_language</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="lit" style="border: 0px; color: #006666; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">1033</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_title</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"Test"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_url</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"Test"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_useSamePermissionsAsParentSite</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">set_webTemplate</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"APP#0"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
web </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> currentWeb</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">get_webs</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">add</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">webCreateInfo</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">false</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">appInstanceID</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
context</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">load</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">web</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
context</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">executeQueryAsync</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">onSuccess</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="border: 0px; color: #660066; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">OnFailure</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> onSuccess</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">()</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
alert</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="border: 0px; color: #008800; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">"Web created"</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">);</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="kwd" style="border: 0px; color: #000088; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">function</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="border: 0px; color: #660066; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">OnFailure</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">sender</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> args</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
alert</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">args</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">get_message</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">());</span><span class="pln" style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="pun" style="border: 0px; color: #666600; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">}</span></pre>
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-533384432630247932013-01-27T06:59:00.000-08:002013-01-28T10:36:41.194-08:00SharePoint 2013 and Maximum Degree of Parallelism<div dir="ltr" style="text-align: left;" trbidi="on">
Yesterday while installing SharePoint 2013 on production environment I encountered an issue stating that<br />
<i><b>"This SQL Server instance does not have the required "max degree of parallelism" setting of 1. Database provisioning operations will continue to fail if "max degree of parallelism" is not set 1 or the current account does not have permissions to change the setting."</b></i><br />
<i><b><br /></b></i>
Now, this is weird. I was simply trying to run a Powershell script for creating the Configuration as well as Other Content DB's required for my SharePoint Installation. I tried to run the SharePoint Configuration Wizard , which I was pretty sure would not work for me. And I was right. Boom the error came with the Configuration Wizard as well.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-eSr3x7H_f4A/UQU91MSiLJI/AAAAAAAAAZk/byTHdPlEnpI/s1600/ConfigFailed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="274" src="http://3.bp.blogspot.com/-eSr3x7H_f4A/UQU91MSiLJI/AAAAAAAAAZk/byTHdPlEnpI/s320/ConfigFailed.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
I tried to do some research across what this error actually mean and why I am getting this error.<br />
<br />
It is important to note here that , if you are running the wizard for the first time itself with a user account that has sysadmin rights on SQL Server, then it will automatically make these changes in the SQL and you will not be required to do any of the below mentioned steps that I will be explaining shortly.<br />
<br />
First , for all those, who are not aware of what maximum degree of parallelism means (just like me :p), I would explain what it means and then I will explain the error.<br />
<br />
<b>Maximum Degree of Parallelism -</b><br />
It means number of processors that SQL Server use for one query. If SQL has to return lot of records then if we use the concept of Parallelism , then it breaks the query into smaller queries and each small query returns a subset of the records. All these queries run parallely on different threads.<br />
<br />
By default the Maximum Degree of Parallelism is set to 0. It means that SQL can use all the processors available to execute a single query.<br />
<br />
The decision whether to follow the Parallel Exceution Plan or Serial Execution Plan depends upon scenario to scenario. In case of OLTP systems, where queries are relatively smaller and they return less number of records, it is best to follow Serial Plan with Maximum Degree of Parallelism set to 1. However, in case of OLAP systems, where the queries are quite complex, it is preferable to go for Parallel Execution Plan with Degree of Parallelism set to 0.<br />
<br />
Parallel Execution Plan has its own set of advantages and disadvantages. At one place it reduces the query execution time and on the other hand, by using multiple CPU's to execute single query, it consumes lot of CPU's as a result increasing CPU utilization. The same query may take different intervals at different time. As a result, query time is non-deterministic.<br />
<br />
I hope, now you might have got some basic idea as to what Maximum Degree of Parallelism is. Coming back to SharePoint, in SharePoint 2010, setting Maximum Degree of Parallelism option was recommended to be set as 1 , but is was optional and not mandatory.<br />
However, in case of SharePoint 2013, it is required to set this to 1 otherwise the configuration wizard will fail.<br />
<br />
Below are the detailed steps :-<br />
<br />
<ol style="text-align: left;">
<li>Check in SQL Sever, whether the Configuration Database exists. If it exists then delete it.</li>
<li>From SQL Server Management Studio, right click on your server and click Properties.</li>
<li>Under Advanced group, modify the value of Maximum Degree of Parallelism to 1.</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-AWzsddoHHM8/UQU-ObSZ8HI/AAAAAAAAAZs/uktw91OOzJs/s1600/Maxdop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="http://3.bp.blogspot.com/-AWzsddoHHM8/UQU-ObSZ8HI/AAAAAAAAAZs/uktw91OOzJs/s320/Maxdop.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<b> </b>4. Run the configuration wizard again.<br />
<br />
Now, you will successfully be able to run the wizard.<br />
<b><br /></b></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com1tag:blogger.com,1999:blog-4078567352848203195.post-82995571080339485392013-01-20T06:23:00.000-08:002013-01-20T06:23:43.931-08:00Configure Anonymous Access for SharePoint 2013 site with Javascript Client Object Model<div dir="ltr" style="text-align: left;" trbidi="on">
Recently I came across a requirement to enable anonymous access for SharePoint 2013 site. Now, this seems to be a very simple requirement but the twist here was that anonymous access should work with ECMASCRIPT. Had it been server side code, we could have simply executed our code within run with elevated privilleges and thats it. But with javascript, this is not possible. In this blog post I will explain how this can be achieved.<br />
<br />
First of all, for anonymous access to work , we need to enable anonymous access at both web application level as well as site collection level.<br />
<br />
In central admin, when we are creating a new web application, we get an option to make the web application available anonymously.<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/-WXue6dYw6RA/UPvhDr2eqvI/AAAAAAAAAXs/Oki0WAX_1pA/s1600/AnonAccessCentralAdmin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="http://2.bp.blogspot.com/-WXue6dYw6RA/UPvhDr2eqvI/AAAAAAAAAXs/Oki0WAX_1pA/s400/AnonAccessCentralAdmin.png" width="400" /></a></div>
<br />
<br />
Next thing required is that we need to set up the anonymous access at the site collection level. To do this , we need to go to Site Settings -> Site Permissions. There we find an option for Anonymous Access. Clicking on that will provide us a popup where we can enable anonymous access for the site collection.<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://3.bp.blogspot.com/-8OQHLOPCNCY/UPvjrlt8UZI/AAAAAAAAAX8/3abdm1tmgzA/s1600/site_coll.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://3.bp.blogspot.com/-8OQHLOPCNCY/UPvjrlt8UZI/AAAAAAAAAX8/3abdm1tmgzA/s400/site_coll.jpg" width="400" /></a></div>
<br />
The above two steps would have been enough for server side code. But if you are working with Javascript Client Object Model, there are additional things that needs to be done before being able to access a site anonymously.<br />
With JavaScript Client Object Model (JSCOM), the anonymous user gets Microsoft.SharePoint.Client.ApiBlockedException. As a result when user tries to access a site anonymously where something is being fetched based on JSCOM, he will get Access Denied Exception because of the blocked API. The solution for this problem lies hidden in the ClientCallableSettings of the SPWebApplication object. This property controls which API are prohibited in the Client OM. With the help of powershell we can remove these blocked API's from the web application.<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/-J6FaiQqdoMc/UPvzHmk5wII/AAAAAAAAAYM/uOMmkkZXHq8/s1600/powershell.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://2.bp.blogspot.com/-J6FaiQqdoMc/UPvzHmk5wII/AAAAAAAAAYM/uOMmkkZXHq8/s400/powershell.jpg" width="400" /></a></div>
<br />
If you look at the above powershell script, you will see SPList in AnonymousRestrictedTypes. In Client Object Model, the following API's are restricted in ClientCallableSettings<br />
<br />
<br />
<ul style="text-align: left;">
<li>SPSite.GetChanges()</li>
<li>SPWeb.GetChanges()</li>
<li>SPWeb.GetSubwebsForCurrentUser()</li>
<li>SPList.GetChanges()</li>
<li>SPList.GetItems()</li>
</ul>
<div>
It is the restriction on GetItems() that prevents the anonymous users from fetching listitems using JSCOM.</div>
<div>
Therefore we need to remove this restriction in order to enable anonymous access. Following powershell command will remove this restriction on web application level</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/-LX1-iAADw54/UPv2l5ldyxI/AAAAAAAAAYc/lF_QZEI9J90/s1600/powershell_anon.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="77" src="http://2.bp.blogspot.com/-LX1-iAADw54/UPv2l5ldyxI/AAAAAAAAAYc/lF_QZEI9J90/s400/powershell_anon.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
By running the above command we can get away with the API restriction on GetItems() in case of Client Object Model.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now, the next thing that needs to be done is to go to central admin. There go to Application Management and select Manage Web Applications. Select your web application and click on the Authentication Providers in the ribbon.It will open a dialog box as shown below.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://2.bp.blogspot.com/-OEwI8kEpCOU/UPv6L06074I/AAAAAAAAAYs/AbiU4C7hMF4/s1600/authenticationProviders.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="http://2.bp.blogspot.com/-OEwI8kEpCOU/UPv6L06074I/AAAAAAAAAYs/AbiU4C7hMF4/s400/authenticationProviders.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div>
Click on Default link. It will open another dialog box. There you will find an option saying Require Remote Interfaces Permission. Uncheck this checkbox and save.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://4.bp.blogspot.com/-brrIkT0f3e8/UPv723rQtlI/AAAAAAAAAY8/4vH_QNFrRYw/s1600/remoteapi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="381" src="http://4.bp.blogspot.com/-brrIkT0f3e8/UPv723rQtlI/AAAAAAAAAY8/4vH_QNFrRYw/s400/remoteapi.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now, your site is configured to support anonymous access with Javascript Client Object Model with anonymous users having View Item permission on the list. In case you want to allow anonymous users to perform some POST action as well, like Add an Item to the list , you need to break permission inheritance and give Add Items permission as well to anonymous users.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://4.bp.blogspot.com/-TJjZGNd_fyo/UPv9X7zW0GI/AAAAAAAAAZM/ke111mFW_R8/s1600/listanonymous.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="http://4.bp.blogspot.com/-TJjZGNd_fyo/UPv9X7zW0GI/AAAAAAAAAZM/ke111mFW_R8/s400/listanonymous.jpg" width="400" /></a></div>
<div>
<br /></div>
<br />
<br />
And this is it. Now anonymous users can GET and POST data to sharepoint site using JSCOM.<br />
<br />
Hope this helps !!<br />
<br />
Cheers,<br />
Geetanjali<br />
<br />
<br /></div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com2tag:blogger.com,1999:blog-4078567352848203195.post-82672867972047122022013-01-20T00:23:00.000-08:002013-01-20T00:23:45.396-08:00Export List Data to Excel in SharePoint<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Recently I came across a requirement where I had to export data of a list from inside a custom webpart to excel. After some research I came across many articles stating creating SPGridView and then using HTTPcontext Response object to write the response into an excel file.But out of curiosity I thought of diving into the OOB export functionality of SharePoint list. Firebug came to my support and I observed that when we click on the Export to Excel link in the SharePoint OOB list then it makes an RPC call using owssvr.dll. We can do a lot many things using this and exporting to excel is one of those.<br />
<br />
Assuming an export button on the page and you need to export to excel on the click event of the same, you simply need to do the following<br />
<br />
jQuery('.export').live('click', function (e) {<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>window.location = {site url} + "/_vti_bin/owssvr.dll?CS=109&Using=_layouts/query.iqy&List=" + {list guid} + "&View=" + {view guid} + "&CacheControl=1";<br />
<br />
});<br />
<br />
{site url} - url of the site<br />
{list guid} - GUID of the list<br />
{view guid} - GUID of the view<br />
<br />
You can programmatically fetch the list guid as well as view guid and then you are good to go.<br />
Thats pretty much it and you will be able to export the data to excel :)<br />
<br />
Cheers,<br />
Geetanjali<br />
</div>
Geetanjali Arorahttp://www.blogger.com/profile/07197915749908913846noreply@blogger.com2