﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>thekid.me.uk</title>
    <description>Stuff about SharePoint</description>
    <link>http://blog.thekid.me.uk/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.9.1.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://blog.thekid.me.uk/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Vincent Rothwell</dc:creator>
    <dc:title>thekid.me.uk</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>Useless SharePoint Designer error message</title>
      <description>&lt;p&gt;I have had this before, but forgot the fix, so I am posting it here so that I remember it!&lt;/p&gt;  &lt;p&gt;I got the error from SharePoint designer this morning…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The version of Microsoft SharePoint Foundation running on the server is more recent than the version SharePoint Designer you are using. You need a more recent version of SharePoint Designer.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=t2cereif.jpg"&gt;&lt;img title="t2cereif" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="t2cereif" src="http://blog.thekid.me.uk/image.axd?picture=t2cereif_thumb.jpg" width="620" height="102" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;    &lt;br /&gt;Obviously I have the latest version of SPD and it was talking rubbish. What is the real problem?&lt;/p&gt;  &lt;p&gt;Turns out that it is SPD not being very informative when it can’t logon to Office365 and so the fix is simple…&lt;strong&gt;switch accounts&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=lv1uyxnh.jpg"&gt;&lt;img title="lv1uyxnh" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="lv1uyxnh" src="http://blog.thekid.me.uk/image.axd?picture=lv1uyxnh_thumb.jpg" width="587" height="609" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Useless-SharePoint-Designer-error-message</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Useless-SharePoint-Designer-error-message#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=f487e64d-6170-4ff9-b5a9-35f864a8561c</guid>
      <pubDate>Fri, 04 Jul 2014 11:04:07 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint</category>
      <category>o365</category>
      <category>SharePoint Designer</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=f487e64d-6170-4ff9-b5a9-35f864a8561c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=f487e64d-6170-4ff9-b5a9-35f864a8561c</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Useless-SharePoint-Designer-error-message#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=f487e64d-6170-4ff9-b5a9-35f864a8561c</wfw:commentRss>
    </item>
    <item>
      <title>Sample Data images is now fixed</title>
      <description>&lt;p&gt;Sorry to everyone about the images not being created in the Sample Data App. &lt;/p&gt;  &lt;p&gt;It appears that Flickr decided that you can only access their API via https and they switched off http access completely on Sunday. I have updated the scripts which retrieve the images and all is working again now.&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Sample-Data-images-is-now-fixed</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Sample-Data-images-is-now-fixed#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=0f1cefa6-2bd1-4392-9aab-697aea593921</guid>
      <pubDate>Wed, 02 Jul 2014 12:17:40 +0000</pubDate>
      <category>SharePoint App</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=0f1cefa6-2bd1-4392-9aab-697aea593921</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=0f1cefa6-2bd1-4392-9aab-697aea593921</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Sample-Data-images-is-now-fixed#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=0f1cefa6-2bd1-4392-9aab-697aea593921</wfw:commentRss>
    </item>
    <item>
      <title>New release of Sample Data SharePoint App</title>
      <description>&lt;p&gt;I have released a new version of the &lt;a href="http://blog.thekid.me.uk/post/Creating-Sample-Data-for-SharePoint-2013-Lists-and-Libraries"&gt;free Sample Data App&lt;/a&gt;, which is already &lt;a href="http://bit.ly/sampledataapp" target="_blank"&gt;available in the SharePoint App Store&lt;/a&gt; The solution can be downloaded and it has two new features…&lt;/p&gt;  &lt;h2&gt;Download the app solution file&lt;/h2&gt;  &lt;p&gt;The &lt;a href="http://bit.ly/spsampledata" target="_blank"&gt;App Solution can now be downloaded&lt;/a&gt; and installed for farms that are not connected to the SharePoint App Store.&lt;/p&gt;  &lt;h2&gt;Sample Data for a Links List&lt;/h2&gt;  &lt;p&gt;You can now quickly create links in a SharePoint Links List. The source of the links is from Wikipedia and you can enter your own URL so that the generated links can be on any subject you like.    &lt;br&gt;    &lt;br&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=jwqrteoc.jpg"&gt;&lt;img width="495" height="278" title="jwqrteoc" style="border-width: 0px; margin: 0px 10px 0px 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="jwqrteoc" src="http://blog.thekid.me.uk/image.axd?picture=jwqrteoc_thumb.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all"&gt;    &lt;br&gt;The links are taken from the references section at the end of the Wikipedia page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=jj5futud.jpg"&gt;&lt;img width="596" height="216" title="jj5futud" style="border-width: 0px; margin: 0px 10px 0px 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="jj5futud" src="http://blog.thekid.me.uk/image.axd?picture=jj5futud_thumb.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h2&gt;Improved document creation&lt;/h2&gt;  &lt;p&gt;Previously you could only create 30 documents at a time. This has been increased to 500, so you can quickly hit that 5000 limit if you are testing.&lt;/p&gt;  &lt;p&gt;The feedback/progress has also been improved so that you can see more progress as the documents are created.&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/New-release-of-Sample-Data-SharePoint-App</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/New-release-of-Sample-Data-SharePoint-App#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=7e4f2747-649e-47e4-9421-16e58e2a1d18</guid>
      <pubDate>Mon, 30 Jun 2014 09:31:00 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint App</category>
      <dc:publisher>Vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=7e4f2747-649e-47e4-9421-16e58e2a1d18</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=7e4f2747-649e-47e4-9421-16e58e2a1d18</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/New-release-of-Sample-Data-SharePoint-App#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=7e4f2747-649e-47e4-9421-16e58e2a1d18</wfw:commentRss>
    </item>
    <item>
      <title>JSOM Fiddle source now on GitHub</title>
      <description>&lt;p&gt;I have put the source code to &lt;a href="http://bit.ly/blogjsomfiddle" target="_blank"&gt;JSOM Fiddle&lt;/a&gt;&amp;#160; SharePoint App into GitHub. This will allow you to create your own project and to deploy it with Full Control. The current store version does have limitations on the actions you can perform because of the App security.&lt;/p&gt;  &lt;p&gt;You can access the project &lt;a href="http://bit.ly/JSOMFiddle-GitHub" target="_blank"&gt;here on GitHub&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/JSOM-Fiddle-source-now-on-GitHub</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/JSOM-Fiddle-source-now-on-GitHub#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=93a93ed8-6a41-4f8b-96be-233a8028c635</guid>
      <pubDate>Fri, 27 Jun 2014 13:55:26 +0000</pubDate>
      <category>SharePoint App</category>
      <category>SharePoint</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=93a93ed8-6a41-4f8b-96be-233a8028c635</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=93a93ed8-6a41-4f8b-96be-233a8028c635</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/JSOM-Fiddle-source-now-on-GitHub#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=93a93ed8-6a41-4f8b-96be-233a8028c635</wfw:commentRss>
    </item>
    <item>
      <title>Creating Sample Data for SharePoint 2013 Lists and Libraries</title>
      <description>&lt;p&gt;We all have to do it, whether for testing, development or a demonstration. Creating semi-realistic sample data can be time consuming and generally a bit of a pain. Well now you have a &lt;a href="http://bit.ly/sampledataapp" target="_blank"&gt;free SharePoint App&lt;/a&gt; which can help you out.&lt;/p&gt;  &lt;h2&gt;The Sample Data SharePoint App&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=xv5isccn.jpg"&gt;&lt;img title="xv5isccn" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="xv5isccn" src="http://blog.thekid.me.uk/image.axd?picture=xv5isccn_thumb.jpg" width="96" height="96" /&gt;&lt;/a&gt;The app adds a custom action to several lists and libraries. Specifically it can generate sample data for the following…&lt;/p&gt;  &lt;p&gt;Custom Lists, Document Libraries, Asset Libraries, Wiki Libraries, Calendars, Discussions, Tasks and contacts.&lt;/p&gt;  &lt;p&gt;It places a button on the ribbon which, when clicked, presents you with a dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=4gm4jvl1.jpg"&gt;&lt;img title="4gm4jvl1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="4gm4jvl1" src="http://blog.thekid.me.uk/image.axd?picture=4gm4jvl1_thumb.jpg" width="608" height="175" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br clear="all" /&gt;Generally this dialog gives you some options about the data you want created.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=eieo4o4h.jpg"&gt;&lt;img title="eieo4o4h" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="eieo4o4h" src="http://blog.thekid.me.uk/image.axd?picture=eieo4o4h_thumb.jpg" width="520" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Library Sample Data&lt;/h2&gt;  &lt;p&gt;For document libraries the App the creates a mix of Excel and Word files, with some random content in them all. The filenames are randomly created and are hopefully slightly real. You can specify the number of documents, so if you need a library with 1000 documents then this will create them for you.&lt;/p&gt;  &lt;p&gt;For Wikis you can enter the URL of you favourite RSS feed. The content of the feed is then used to create the pages and the page names. You can enter different feeds to add as much content as you wish.&lt;/p&gt;  &lt;p&gt;For Asset Libraries the App will add some random images to your library. All the images have a creative commons license, which can be viewed in the App dialog. There are three types to choose from ‘Buildings’, ‘Old Artwork’ and ‘Space Innovation’.&lt;/p&gt;  &lt;h2&gt;List Sample Data&lt;/h2&gt;  &lt;p&gt;Calendar data is randomly created. You can specify the number of days in the past and the into the future. The number of events per day is random and again you can specify the range. All days events are also randomly created and if not all day then the duration of the event is random.&lt;/p&gt;  &lt;p&gt;Tasks are all randomly created, the start and end dates also being random. The percentage complete is also random, with some tasks being set as complete.&lt;/p&gt;  &lt;p&gt;Adding data to Custom Lists is also easy. Not all column types are covered, but the most common ones are. Date columns are random, Note columns have a paragraph and Choice columns have a random values selected from the choices. With custom lists it is entirely possible to add 5000 items in one go should you need to test hitting the item limit in SharePoint.    &lt;br /&gt;    &lt;br /&gt;Discussions are taken from the MS Office newsgroups. The sample data is basically a copy of the RSS feed, with all the replies added to the relevant discussions. This gives you quite a few discussions, with varying number of replies.&lt;/p&gt;  &lt;p&gt;Contacts are randomly created, with phone numbers and countries all added.&lt;/p&gt;  &lt;h2&gt;See it in action&lt;/h2&gt;  &lt;p&gt;This is a simple video showing the Sample Data App creating documents in a document library.&lt;/p&gt; &lt;iframe height="315" src="//www.youtube.com/embed/OLZtAZLf_LA" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;br /&gt;  &lt;h2&gt;   &lt;br /&gt;Let me know&lt;/h2&gt;  &lt;p&gt;Let me know what you think or if there is anything you want added.&lt;/p&gt;  &lt;p&gt;You can install the app now from the &lt;a href="http://bit.ly/sampledataapp" target="_blank"&gt;SharePoint App Store.&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Creating-Sample-Data-for-SharePoint-2013-Lists-and-Libraries</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Creating-Sample-Data-for-SharePoint-2013-Lists-and-Libraries#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=ff9212df-c4d2-4891-8c87-ee0a8ef8da61</guid>
      <pubDate>Tue, 10 Jun 2014 12:44:00 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint</category>
      <category>SharePoint App</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=ff9212df-c4d2-4891-8c87-ee0a8ef8da61</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=ff9212df-c4d2-4891-8c87-ee0a8ef8da61</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Creating-Sample-Data-for-SharePoint-2013-Lists-and-Libraries#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=ff9212df-c4d2-4891-8c87-ee0a8ef8da61</wfw:commentRss>
    </item>
    <item>
      <title>Creating an icon for the custom action in your SharePoint App</title>
      <description>&lt;p&gt;This is a quick post to show how to creating a good looking Icon for your SharePoint custom action.&lt;/p&gt;  &lt;h2&gt;First create the icon&lt;/h2&gt; Download &lt;a href="http://www.syncfusion.com/downloads/metrostudio" target="_blank"&gt;Metro Studio&lt;/a&gt; from Syncfusion. This will allow you to select an icon from a huge range of royalty-free icons.  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=vau5e1mz.jpg"&gt;&lt;img title="vau5e1mz" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="vau5e1mz" src="http://blog.thekid.me.uk/image.axd?picture=vau5e1mz_thumb.jpg" width="597" height="436" /&gt;&lt;/a&gt;  &lt;br /&gt;    &lt;p&gt;   &lt;br clear="all" /&gt;    &lt;br /&gt;Pick the icon which best suites your custom ribbon action.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=e1rd1wbv.jpg"&gt;&lt;img title="e1rd1wbv" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="e1rd1wbv" src="http://blog.thekid.me.uk/image.axd?picture=e1rd1wbv_thumb.jpg" width="594" height="414" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;    &lt;br /&gt;You will need two icons. One 32px and one 16px. Choose the colour for your icon and set the background to transparent. Then simply export both versions as a PNG.&lt;/p&gt;  &lt;h2&gt;Encode your image&lt;/h2&gt;  &lt;p&gt;I tend to encode the images and put that in the custom action XML, so you will need to encode them. Fortunately &lt;a href="http://blogs.msdn.com/b/richard_dizeregas_blog/archive/2013/03/10/leveraging-sharepoint-dialogs-in-apps-for-sharepoint.aspx" target="_blank"&gt;Richard diZerega created a tool&lt;/a&gt; to do this easily for us.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=5a2cmcch.jpg"&gt;&lt;img title="5a2cmcch" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="5a2cmcch" src="http://blog.thekid.me.uk/image.axd?picture=5a2cmcch_thumb.jpg" width="589" height="394" /&gt;&lt;/a&gt;    &lt;br /&gt;    &lt;br clear="all" /&gt;    &lt;br /&gt;This will encode the image into a base64 string, which we can then use in our custom action definition.&lt;/p&gt;  &lt;h2&gt;Modify the Custom Action&lt;/h2&gt;  &lt;p&gt;Once you have the file encoded you can then change the Image32by32 and the Image16by16 in your custom action definition.   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=r44dftol.jpg"&gt;&lt;img title="r44dftol" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="r44dftol" src="http://blog.thekid.me.uk/image.axd?picture=r44dftol_thumb.jpg" width="579" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;br clear="all" /&gt;  &lt;br /&gt;And there you go, a quick simple icon for your custom action.</description>
      <link>http://blog.thekid.me.uk/post/Creating-an-icon-for-the-custom-action-in-your-SharePoint-App</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Creating-an-icon-for-the-custom-action-in-your-SharePoint-App#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=17a3e280-285b-4bd5-898c-4d170104d9d8</guid>
      <pubDate>Sat, 31 May 2014 11:57:09 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint App</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=17a3e280-285b-4bd5-898c-4d170104d9d8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=17a3e280-285b-4bd5-898c-4d170104d9d8</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Creating-an-icon-for-the-custom-action-in-your-SharePoint-App#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=17a3e280-285b-4bd5-898c-4d170104d9d8</wfw:commentRss>
    </item>
    <item>
      <title>Creating/Editing XLSX or DOCX documents directly in JavaScript</title>
      <description>&lt;p&gt;Must admit that when I first starting looking at this I wasn’t overly hopeful of achieving it, but it is possible…it’s not dead simple, but it is definitely doable.&lt;/p&gt;  &lt;p&gt;TL;DR: &lt;a href="http://bit.ly/create-xlsx-javascript" target="_blank"&gt;Download the project&lt;/a&gt;, open it in Visual Studio, read the code, deploy it and then try it.&lt;/p&gt;  &lt;p&gt;There are numerous things you need and it involves a number of different script libraries, all with varying documentation. Hopefully this post will put you in the right direction, mostly because it includes the source code to a working example of creating an Excel Spread Sheet in JavaScript and uploading it to a document library in SharePoint.&lt;/p&gt;  &lt;h1&gt;First the bits you need&lt;/h1&gt;  &lt;p&gt;In order to get this working you need to add a few scripts to your project. Fortunately &lt;a href="http://openxmldeveloper.org/blog/default.aspx" target="_blank"&gt;Eric White&lt;/a&gt; over at &lt;a href="http://openxmldeveloper.org" target="_blank"&gt;OpenXmlDeveloper&lt;/a&gt; has done a lot of the hard work for us. I am basically adding a bit of SharePoint stuff to his work and it’s always nice to have a working sample.&lt;/p&gt;  &lt;p&gt;Firstly you will want to have a look at the &lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/06/25/introducing-the-open-xml-sdk-for-javascript.aspx" target="_blank"&gt;Open XML SDK for JavaScript&lt;/a&gt;, which provides some wrapping for the Open Xml specification in JavaScript. The Open XML for JavaScript provides some useful examples, but if I am honest they do take a lot of reading and viewing of webcasts to get anything working; And once you add SharePoint into the mix it obviously gets a bit harder.&lt;/p&gt;  &lt;p&gt;You can go to the &lt;a href="http://openxmlsdkjs.codeplex.com/" target="_blank"&gt;Open XML SDK for JavaScript&lt;/a&gt; site on &lt;a href="http://openxmlsdkjs.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; and download the source. This actually contains all the files you need to add support to your project.     &lt;br /&gt;    &lt;br /&gt;However, it’s worth mentioning the other projects that it uses.     &lt;br /&gt;    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="2" width="637" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="109"&gt;&lt;a href="http://stuk.github.io/jszip/" target="_blank"&gt;JSZip&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="526"&gt;This allows the SDK to open the XLSX or DOCX as they are just ZIP files anyway.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="109"&gt;&lt;a href="http://linqjs.codeplex.com/" target="_blank"&gt;linq.js&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="526"&gt;LINQ for JavaScript. This is used to access the object model of the XLSX or DOCX.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="109"&gt;&lt;a href="http://www.onicos.com/staff/iz/amuse/javascript/expert/deflate.txt" target="_blank"&gt;JSZip extensions&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="526"&gt;Extensions for inflating &amp;amp; deflating ZIP files in JavaScript.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="109"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/office/gg278325(v=office.15).aspx" target="_blank"&gt;Open XML&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="526"&gt;The Open XML file formats.&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The Open XML SDK for JavaScript doesn’t actually hide the complexity of the Open XML format, you still have to deal with all the different XML elements and attributes it requires. What it does do is give you easy access to the different parts of the document inside the DOCX/XLSX zip file. It also provides a simpler way to handle the different namespaces you need to generate the XML of a DOCX/XLSX file.&lt;/p&gt;  &lt;h1&gt;What to include on your page&lt;/h1&gt;  &lt;p&gt;This is always the first problem, what exactly are the scripts I need to include on my page for all this stuff to work. If you download the CodePlex project there are a number of scripts and sample pages. They all provide useful information and functionality, but you don’t need them all.&lt;/p&gt;  &lt;p&gt;These are the script I included on my SharePoint App page…&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/linq.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/jszip.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/jszip-load.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/jszip-deflate.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/jszip-inflate.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/ltxml.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/ltxml-extensions.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&lt;span class="str"&gt;&amp;quot;../Scripts/openxml/openxml.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;



&lt;p&gt;This will give you all the functionality required and the order is important. I always have jQuery included and I wouldn’t be surprised to discover that it is a requirement too.&lt;/p&gt;

&lt;h1&gt;How do I create a document&lt;/h1&gt;

&lt;p&gt;Basically you don’t, you start from a blank document template and add to it. I won’t include it here, but they are in the sample project and it is a base64 encoded string, which is the XLSX or DOCX from where you want to start. In the samples and in my project this is included in a JavaScript file as a string literal. 
  &lt;br /&gt;

  &lt;br /&gt;This actually works quite well as it means you can pre-configure things and save writing code to set formats or static content. Creating the base64 string is a little (but not too much) involved. There is a &lt;a href="http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2013/07/01/using-a-template-document-with-the-open-xml-sdk-for-javascript.aspx" target="_blank"&gt;post&lt;/a&gt; describing it and I used the PowerShell scripts from that post without problems.&lt;/p&gt;

&lt;h1&gt;Creating the document in JavaScript&lt;/h1&gt;

&lt;p&gt;So, once you have your templates (feel free to re-use the ones in the project, they are just blank) you can then open the document in JavaScript and modify it’s contents. The JavaScript Open XML SDK has more examples for DOCX and so I will be showing an XLSX example. Here is the script to open an XLSX, add a row and to add a cell.
  &lt;br /&gt;

  &lt;br /&gt;The example below just uses the openXml object and the OpenXmlPackage&amp;#160; method to open the blank XLSX document template. Once the spreadsheet is opened it gets the workbook and the first sheet. You will notice it is using LinkJs to achieve this. It then gets the sheetdata, adds a new row and then adds a new column.&lt;/p&gt;

&lt;p&gt;&lt;script src="https://gist.github.com/TheKidVince/3317b2e009e15af5980d.js"&gt;&lt;/script&gt;

  &lt;br /&gt;This is a very basic example of setting one cell value. If you want to add different data types (strings, dates, etc) then you will need to modify the code which creates the ‘cell’. Generally you have to build the correct XML for the cell using the appropriate XAttributes and XElements.&lt;/p&gt;

&lt;p&gt;Building the correct structure of the OpenXML document is going to be a bit of a pain, but fortunately finding out what it is supposed to look like is pretty easy. Because an XLSX or DOCX is just a zip file you can rename them to .ZIP and look at the contents. In the case of a spreadsheet you will find a folder called ‘xl’ and in that folder another folder called ‘worksheets’, this is where all the sheets are stored. Opening one of the sheets you will see the OpenXML for that worksheet. So, by creating a sample spreadsheet, renaming it and looking at the XML you can find out what elements you need to create.&lt;/p&gt;



&lt;h1&gt;The project&lt;/h1&gt;

&lt;p&gt;The project is just a very basic SharePoint App which allows you to enter a number, generate the SpreadSheet using JavaScript and save it to a document library using REST.
  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=15m5ff1j.jpg"&gt;&lt;img title="15m5ff1j" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="15m5ff1j" src="http://blog.thekid.me.uk/image.axd?picture=15m5ff1j_thumb.jpg" width="464" height="220" /&gt;&lt;/a&gt;

  &lt;br /&gt;

  &lt;br /&gt;

  &lt;br clear="all" /&gt;

  &lt;br /&gt;It’s hosted on GitHub and can be &lt;a href="http://bit.ly/create-xlsx-javascript" target="_blank"&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Creating-or-Editing-XLSX-or-DOCX-documents-directly-in-JavaScript</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Creating-or-Editing-XLSX-or-DOCX-documents-directly-in-JavaScript#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=161c45bf-e7b4-4acd-a2c7-b4757db55ec2</guid>
      <pubDate>Tue, 27 May 2014 22:01:54 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint</category>
      <category>Development</category>
      <category>OpenXML</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=161c45bf-e7b4-4acd-a2c7-b4757db55ec2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=161c45bf-e7b4-4acd-a2c7-b4757db55ec2</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Creating-or-Editing-XLSX-or-DOCX-documents-directly-in-JavaScript#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=161c45bf-e7b4-4acd-a2c7-b4757db55ec2</wfw:commentRss>
    </item>
    <item>
      <title>Accessing data from an external service in a SharePoint App</title>
      <description>&lt;p&gt;So you can access remote data from a SharePoint using the &lt;a href="http://technet.microsoft.com/en-us/sharepoint/fp179895(v=office.14).aspx" target="_blank"&gt;Web Proxy&lt;/a&gt;, but what if you don’t know the domain of the service you’ll want to access beforehand. That means you can’t add it to the manifest for your App and so the Web Proxy will not work.&lt;/p&gt;  &lt;p&gt;Another option is &lt;a href="http://en.wikipedia.org/wiki/JSONP" target="_blank"&gt;JsonP&lt;/a&gt;, but not all services provide JsonP support. How to access them?&lt;/p&gt;  &lt;p&gt;This is my solution to the problem. I am hoping that someone will say “Vince, you’re over complicating it, this is the easy way”, but until that happens this is the solution I am currently using.&lt;/p&gt;  &lt;p&gt;I looked at using Azure, but the free websites have restrictions and I didn’t want things to stop working if I hit them. So, as much as I’m not a Google fan, &lt;a href="http://script.google.com/" target="_blank"&gt;Google Scripts&lt;/a&gt; it was. Basically I have a script which takes a Url and then returns the result of that Url in JsonP.&lt;/p&gt;  &lt;p&gt;If you visit Google Scripts then you can create a new script and publish it. This is what my script looks like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=xh1yqtlm.jpg"&gt;&lt;img title="xh1yqtlm" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="xh1yqtlm" src="http://blog.thekid.me.uk/image.axd?picture=xh1yqtlm_thumb.jpg" width="640" height="564" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;    &lt;br /&gt;And here is the code…     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;font size="1"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; doGet(e) {
    &lt;span class="kwrd"&gt;return&lt;/span&gt; ContentService
            .createTextOutput(urlGet(e))
              .setMimeType(ContentService.MimeType.JSON);  
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; urlGet(e) {
  &lt;span class="kwrd"&gt;var&lt;/span&gt; results = {};
  
  &lt;span class="kwrd"&gt;if&lt;/span&gt; (!e.parameter.url) {
    results = &lt;span class="str"&gt;&amp;quot;{error:'missing url',results: null }&amp;quot;&lt;/span&gt;;
  }
  &lt;span class="kwrd"&gt;else&lt;/span&gt; {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; response = UrlFetchApp.fetch(e.parameter.url).getContentText();
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!response) {results = &lt;span class="str"&gt;&amp;quot;{error:'no data returned',results: null}&amp;quot;&lt;/span&gt;;}
    &lt;span class="kwrd"&gt;else&lt;/span&gt; {results = response;}
  }
  
  &lt;span class="rem"&gt;//results = JSON.stringify(results);&lt;/span&gt;
  &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.parameter.callback) {
      results = e.parameter.callback + &lt;span class="str"&gt;&amp;quot;(&amp;quot;&lt;/span&gt; + results + &lt;span class="str"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;
  }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; results;
}&lt;/font&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;This code expects JSON from the remote service, but there is a line to un-comment if you are getting a string or XML. 
  &lt;br /&gt;

  &lt;br /&gt;Once you publish this script (ensure that you make it public) then you get a Url to your script which you can use in your App to download any JSON from anywhere. Your JavaScript would be similar to this…&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="1"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; dataUrl = &lt;span class="str"&gt;&amp;quot;http://&amp;lt;the URL to the data you want to access&amp;gt;&amp;quot;&lt;/span&gt;;
&lt;span class="kwrd"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;&amp;quot;https://script.google.com/macros/s/&amp;quot; + &lt;br /&gt;          &amp;quot;AK1ycbxFZcqlPNgUIz97Q1FSX-5akze8X3Lx36iNqE_ltmBvfgWjSxc/exec?url=&amp;quot;&lt;/span&gt; +&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="1"&gt;          encodeURIComponent(dataUrl) + &lt;span class="str"&gt;&amp;quot;&amp;amp;_callback=?&amp;quot;&lt;/span&gt;;

$.ajax({
     url: url,
     crossDomain: &lt;span class="kwrd"&gt;true&lt;/span&gt;,
     success: &lt;span class="kwrd"&gt;function&lt;/span&gt; (o, a, x) { &lt;br /&gt;          &lt;span class="rem"&gt;// Do something useful with your data&lt;/span&gt;
     },
     error: &lt;span class="kwrd"&gt;function&lt;/span&gt; (o, a, x) {
          alert(&lt;span class="str"&gt;&amp;quot;Failed&amp;quot;&lt;/span&gt;);
     }
});&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;Note: That is not the Url to my service and it will not work…create your own, it’s free and is just a bit of copy ‘n’ paste of the code. 
  &lt;br /&gt;

  &lt;br /&gt;I have used this code to get RSS feeds, but you will not get a success, you get a parse failure because it’s not JSON. Fortunately if you change the ‘success’ handler to an ‘error’ handler in the $.Ajax call you will get the response code (200) and the body of the response (containing your XML). A bit of a hack, but it does work. 

  &lt;br /&gt;

  &lt;br /&gt;Another option for getting some XML or an RSS feed is to use &lt;a href="http://pipes.yahoo.com/" target="_blank"&gt;Yahoo Pipes&lt;/a&gt;. These can, amongst numerous other things, turn your XML/RSS into a valid JSON feed. This you can then use as the Url in your SharePoint App to convert the data before passing it to the Goole Script. Lots of indirection, but it does all work and is plenty quick enough.&lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Accessing-data-from-an-external-service-in-a-SharePoint-App</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Accessing-data-from-an-external-service-in-a-SharePoint-App#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=1709ba58-3f6c-422f-975c-add6f0bd405c</guid>
      <pubDate>Tue, 27 May 2014 21:24:23 +0000</pubDate>
      <category>Office 365 Dev</category>
      <category>SharePoint</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=1709ba58-3f6c-422f-975c-add6f0bd405c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=1709ba58-3f6c-422f-975c-add6f0bd405c</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Accessing-data-from-an-external-service-in-a-SharePoint-App#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=1709ba58-3f6c-422f-975c-add6f0bd405c</wfw:commentRss>
    </item>
    <item>
      <title>Calendar Custom Actions in your SharePoint 2013 App</title>
      <description>&lt;p&gt;Today I wanted to add a custom action to a calendar in a SharePoint App. Thought it would be straight forward, but apparently not.&lt;/p&gt;  &lt;p&gt;Adding the custom action is fine… &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=image_1.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.thekid.me.uk/image.axd?picture=image_thumb_1.png" width="636" height="441" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;    &lt;br /&gt;Selecting ‘Calendar’ as the list template to associate the custom action with is simple.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=image_2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.thekid.me.uk/image.axd?picture=image_thumb_2.png" width="637" height="508" /&gt;&lt;/a&gt;    &lt;br clear="all" /&gt;    &lt;br /&gt;You then get a choice of where you want the action to appear. I want it on the Events Actions ribbon menu. Easy enough, well that’s not quite right as the List is not exhaustive and misses out completely the Calendar ribbon locations.&lt;/p&gt;  &lt;p&gt;Turns out that even though you chose a calendar list template it does not offer you the ribbon locations available to a Calendar. So don’t use ‘Ribbon.ListItem.Actions’ as your location, use ‘Ribbon.Calendar.Events.Actions.Controls._children’ instead.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=image_3.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.thekid.me.uk/image.axd?picture=image_thumb_3.png" width="634" height="657" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br clear="all" /&gt;      &lt;p&gt;   &lt;br /&gt;This is the correct location to use to add a command to the calendar ribbon.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.thekid.me.uk/image.axd?picture=image_thumb_4.png" width="643" height="513" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;br clear="all" /&gt;    &lt;p&gt;   &lt;br /&gt;By using this location your custom ribbon action will appear in the events lists on your App’s host site.&lt;/p&gt;  &lt;p&gt;These locations can be found in ‘15\TEMPLATE\GLOBAL\XML\CMDUI.XML’, but I find it easier to use the developer tools in IE to get the locations.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/image.axd?picture=image_5.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.thekid.me.uk/image.axd?picture=image_thumb_5.png" width="640" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;br /&gt;If you look at the ribbon with the DOM Explorer then you can see a list of the locations in the IDs of the section containers. If find this a quicker easier way to find out ribbon locations you need to use.</description>
      <link>http://blog.thekid.me.uk/post/Calendar-Custom-Actions-in-your-SharePoint-2013-App</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Calendar-Custom-Actions-in-your-SharePoint-2013-App#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=5acd0296-d84b-45d5-aaea-4dc0d3311843</guid>
      <pubDate>Fri, 23 May 2014 13:23:51 +0000</pubDate>
      <category>SharePoint App</category>
      <category>SharePoint</category>
      <category>Office 365 Dev</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=5acd0296-d84b-45d5-aaea-4dc0d3311843</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=5acd0296-d84b-45d5-aaea-4dc0d3311843</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Calendar-Custom-Actions-in-your-SharePoint-2013-App#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=5acd0296-d84b-45d5-aaea-4dc0d3311843</wfw:commentRss>
    </item>
    <item>
      <title>Easily add item reordering to your SharePoint list</title>
      <description>&lt;p&gt;Using &lt;a href="http://bit.ly/reorderitems"&gt;List Reorder&lt;/a&gt; from the SharePoint app store you can easily add reordering capabilities to any list in your SharePoint site.&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="//www.youtube.com/embed/qI84zHazTfg" frameborder="0" width="420" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;It’s particularly useful if you use Promoted Links a lot. &lt;/p&gt;</description>
      <link>http://blog.thekid.me.uk/post/Easily-add-item-reordering-to-your-SharePoint-list</link>
      <author>vincent@thekid.me.uk</author>
      <comments>http://blog.thekid.me.uk/post/Easily-add-item-reordering-to-your-SharePoint-list#disqus_thread</comments>
      <guid>http://blog.thekid.me.uk/post.aspx?id=9c515ed3-4f08-470b-b2b6-f5e464b5422c</guid>
      <pubDate>Wed, 21 May 2014 12:35:04 +0000</pubDate>
      <category>SharePoint App</category>
      <category>SharePoint</category>
      <dc:publisher>vinny</dc:publisher>
      <pingback:server>http://blog.thekid.me.uk/pingback.axd</pingback:server>
      <pingback:target>http://blog.thekid.me.uk/post.aspx?id=9c515ed3-4f08-470b-b2b6-f5e464b5422c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.thekid.me.uk/trackback.axd?id=9c515ed3-4f08-470b-b2b6-f5e464b5422c</trackback:ping>
      <wfw:comment>http://blog.thekid.me.uk/post/Easily-add-item-reordering-to-your-SharePoint-list#disqus_thread</wfw:comment>
      <wfw:commentRss>http://blog.thekid.me.uk/syndication.axd?post=9c515ed3-4f08-470b-b2b6-f5e464b5422c</wfw:commentRss>
    </item>
  </channel>
</rss>