<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-691739770978360344</atom:id><lastBuildDate>Tue, 14 May 2013 14:39:20 +0000</lastBuildDate><category>install</category><category>gallery</category><category>education</category><category>Visual Studio</category><category>WebServices</category><category>SharePoint Saturday</category><category>FormsServer</category><category>wiki</category><category>solution</category><category>Windows 8</category><category>Metro</category><category>MOSS 2007</category><category>Enterprise Taxonomy Management</category><category>Cache</category><category>bug</category><category>master page</category><category>how to</category><category>Navigation</category><category>Anonymous</category><category>Client Code</category><category>new release</category><category>conference</category><category>Variations</category><category>presentation</category><category>ASP.NET</category><category>Product Customization</category><category>Ribbon</category><category>restore</category><category>Code</category><category>WF</category><category>team site</category><category>community benefit</category><category>Tokens</category><category>Web Part</category><category>Code Free</category><category>assembly folder</category><category>wss</category><category>CRM SharePoint Connector</category><category>spell check</category><category>MOSS</category><category>delegate controls</category><category>technical problem</category><category>Sandbox Solution</category><category>Replaceable Parameters</category><category>Events</category><category>Visual Studio 2010 Tools for SharePoint</category><category>Virtual Machine</category><category>back up</category><category>Undocumented</category><category>WCM</category><category>Social</category><category>site template</category><category>Internet</category><category>Publishing</category><category>content sources</category><category>XSL</category><category>CRM</category><category>REST</category><category>KPI</category><category>SharePoint</category><category>SharePoint 2013</category><category>Workflow</category><category>Developer</category><category>special offer</category><category>CAML</category><category>codeplex</category><category>WSP</category><category>SharePoint 2010</category><category>Search</category><category>HyperV</category><category>C#</category><category>giving back</category><category>smart pages</category><category>SLK</category><category>SCORM</category><category>Filter</category><category>feature</category><category>SEO</category><category>SharePoint Designer</category><category>Asmx</category><category>Audience</category><category>Data View Web Part</category><category>JavaScript</category><category>Sun VirtaulBox</category><category>InfoPath</category><category>Impersonation</category><category>Excel</category><title>KWizCom SharePoint Blog</title><description>A blog by the KWizCom SharePoint experts!
The KWizCom team, led by it&amp;#39;s VP R&amp;amp;D Shai Petel, utilizes its experience and knowledge to give a unique insight on Microsoft&amp;#39;s SharePoint platform - the leading business collaboration platform.</description><link>http://kwizcom.blogspot.com/</link><managingEditor>noreply@blogger.com (Igor Goldshtaub)</managingEditor><generator>Blogger</generator><openSearch:totalResults>161</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/KwizcomSharepointBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="kwizcomsharepointblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3712933429087561991</guid><pubDate>Tue, 14 May 2013 14:29:00 +0000</pubDate><atom:updated>2013-05-14T07:29:36.501-07:00</atom:updated><title>One solution to rule them all</title><description>&lt;p&gt;My prezi is ready for SharePoint Saturday LA!&lt;/p&gt; &lt;p&gt;This session will be heavy on the visual studio live demo, hope that part goes well :)&lt;/p&gt; &lt;p&gt;But for the first part of the talk I thought I could use prezi to explain the challenge in building a solution that can be deployed on both SharePoint 2010 and 2013, without doubling the R&amp;amp;D efforts, QA efforts and overall maintenance.&lt;/p&gt; &lt;p&gt;We had a very long discussion about this in house, and we are still not entirely convinced this is the best solution to this problem, but it is the best we’ve got so far.&lt;/p&gt; &lt;p&gt;In the past we used to have 2 different solutions for each version of the product. This forced us to constantly sync code between the two versions, having to fix and retest every issue on both versions, which of course wasn’t done perfectly so we ended up with bugs that were fixed in one version only, features that were missing from the other version and basically it was very hard to maintain them.&lt;/p&gt; &lt;p&gt;Now, with the introduction of versioned root folders in SharePoint 2013 this have become a bit more challenging since the code would be different and target different folders in 2010 and 2013. While in server code its rather simple to test the version and use the right path, doing it in config xml files (like web part gallery icon, feature icon for example) is not something we can change in runtime.&lt;/p&gt; &lt;p&gt;This is why we came up with a set of tools that allows us to keep working on one solution, and producing 2 packages from the same source code in one build. One for SharePoint 2010 and the other for SharePoint 2013.&lt;/p&gt; &lt;p&gt;It didn’t take a long time before we then learned about the challenges in trying to debug this code on the SharePoint 2013 machine. Since it wasn’t build on that machine, and didn’t target the .NET framework 4 – this proved to be a bit more complex than what we expected.&lt;/p&gt; &lt;p&gt;To find out more on how we got everything working – come see my session!&lt;/p&gt; &lt;p&gt;&lt;iframe height="400" src="http://prezi.com/embed/bu5s-obuc0iv/?bgcolor=ffffff&amp;amp;lock_to_path=0&amp;amp;autoplay=0&amp;amp;autohide_ctrls=0&amp;amp;features=undefined&amp;amp;disabled_features=undefined" frameborder="0" width="550"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;Please feel free to leave a comment here if you want more info, or if you been to my session and would like me to add or change something.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/05/one-solution-to-rule-them-all.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7460866207608512996</guid><pubDate>Wed, 13 Mar 2013 15:30:00 +0000</pubDate><atom:updated>2013-03-13T08:30:31.577-07:00</atom:updated><title>VS build error 438</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;here is something you don’t see every day…&lt;/p&gt; &lt;p&gt;“There is not enough space on the disk.” &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://lh5.ggpht.com/-M3UATU3fbGs/UUCbjyRNl_I/AAAAAAAAAVs/SkgeekNSTJo/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-_NvmJgc8VCs/UUCbkAxuFDI/AAAAAAAAAV0/jXkkRqELqnk/s1600-h/image%25255B2%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-jUJkyP3M4tc/UUCbkcY3OOI/AAAAAAAAAV8/PJEQUX2qy80/image_thumb.png?imgmax=800" width="244" height="81"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I wonder why I’m getting this error… I have a full 37.5 MB of free space!&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-t0f1w0_mszw/UUCbk5gapaI/AAAAAAAAAWE/Y43I-Nkailk/s1600-h/image%25255B5%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-uM5_esqoKgk/UUCbl-WydaI/AAAAAAAAAWM/bNvjiDB857o/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="78"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;LOL (time to increase the disk size for the VM I guess…)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/03/vs-build-error-438.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-M3UATU3fbGs/UUCbjyRNl_I/AAAAAAAAAVs/SkgeekNSTJo/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-9128885263692563432</guid><pubDate>Thu, 07 Mar 2013 19:20:00 +0000</pubDate><atom:updated>2013-03-07T11:20:27.760-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">install</category><category domain="http://www.blogger.com/atom/ns#">MOSS 2007</category><title>SharePoint 2007 language packs with SP3</title><description>&lt;p&gt;Quick reference if anyone needs it…&lt;/p&gt; &lt;p&gt;Took me a while to find the links&lt;/p&gt; &lt;p&gt;WSS: &lt;p&gt;KB - &lt;a href="http://support.microsoft.com/kb/2526305"&gt;http://support.microsoft.com/kb/2526305&lt;/a&gt; &lt;p&gt;Download - &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=27809"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=27809&lt;/a&gt; &lt;p&gt;MOSS: &lt;p&gt;KB - &lt;a href="http://support.microsoft.com/kb/2526299"&gt;http://support.microsoft.com/kb/2526299&lt;/a&gt; &lt;p&gt;Download - &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=27827"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=27827&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/03/sharepoint-2007-language-packs-with-sp3.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8451651880010283620</guid><pubDate>Thu, 07 Mar 2013 14:00:00 +0000</pubDate><atom:updated>2013-03-07T06:01:56.586-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Visual Studio 2010 Tools for SharePoint</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><category domain="http://www.blogger.com/atom/ns#">Developer</category><title>Upgrading SharePoint 2010 VS2010 solution to VS2012</title><description>&lt;p&gt;Hey,&lt;/p&gt; &lt;p&gt;I *was* going to write a long post on how to upgrade a SharePoint 2010 project and solution from VS2010 to VS2012,&lt;/p&gt; &lt;p&gt;based on past experience, we all know upgrading visual studio was a bit of a pain…&lt;/p&gt; &lt;p&gt;Well, it turns out the guys at Microsoft did such a great job – I have nothing to write about!!!&lt;/p&gt; &lt;p&gt;You open your VS2010 solution in VS2012, it runs a short upgrade and shows you the results, and boom – you got yourself an upgraded solution, everything works beautifully – and the best part is: the upgraded solution works on both VS2010 and VS2012 with no problems!&lt;/p&gt; &lt;p&gt;After upgrading about 10 different solutions, I am confident to say I have nothing else to say.&lt;/p&gt; &lt;p&gt;So… It’s snowing outside… Nice… Ok, ok – its not that kind of a blog…&lt;/p&gt; &lt;p&gt;Coming up soon: Upgrading your full trust solutions to SP2013 – here I do have some insight!&lt;/p&gt; &lt;p&gt;Have a wonderful week!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/03/upgrading-sharepoint-2010-vs2010.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7351903842919427583</guid><pubDate>Fri, 18 Jan 2013 16:36:00 +0000</pubDate><atom:updated>2013-01-18T08:36:10.358-08:00</atom:updated><title>Fixing JavaScript Intellisense completion</title><description>&lt;p&gt;If you are doing a lot of JavaScript development, especially if you are doing SharePoint Apps development, you have come to love the great script IntelliSense feature in visual studio.&lt;/p&gt; &lt;p&gt;This gives you great auto-completion on client side objects and members and makes your development experience much better, especially if you are used to all this goodness from working with other rich languages like C#:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-1yoNnZN8gZQ/UPl56Lz9kKI/AAAAAAAAAUE/WQglciYNSX4/s1600-h/image%25255B21%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-l73Llx0is1s/UPl56pcGlUI/AAAAAAAAAUM/3JTAKoywkcw/image_thumb%25255B17%25255D.png?imgmax=800" width="606" height="204"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This auto-completion is easy to achieve, all you need to do is add a “_references.js” file and reference all script libraries in it:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-7iiIwffG6kk/UPl57Ditj8I/AAAAAAAAAUU/3gJdlSNqJNk/s1600-h/image%25255B47%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-cbcevnomcUg/UPl57evzq0I/AAAAAAAAAUc/kdr5DQZKzsY/image_thumb%25255B35%25255D.png?imgmax=800" width="625" height="168"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now, once you do some real JavaScripting – you will soon start working with prototypes, defining classes and instances and so on.&lt;/p&gt; &lt;p&gt;Once inside a method, you will notice that if you define a member inside the method it will keep the autocomplete working:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-aUY0io39nFE/UPl57mzvd-I/AAAAAAAAAUk/fbypa9Ss9WY/s1600-h/image%25255B46%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-NnBCuPclw5A/UPl58MdAhJI/AAAAAAAAAUs/yQ1CcsJvR-Y/image_thumb%25255B34%25255D.png?imgmax=800" width="375" height="238"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;But once you start declaring and using class members, you will see a strange warning message and autocomplete will show you all known objects instead of just the relevant members for this variable type:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-4CkGYegCHc0/UPl58p4z9YI/AAAAAAAAAU0/V8EwMwiGkHY/s1600-h/image%25255B62%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-_F3yNr49pJo/UPl58w0xscI/AAAAAAAAAU8/WRME7DZeIZE/image_thumb%25255B46%25255D.png?imgmax=800" width="829" height="212"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;“IntelliSense was unable to determine an accurate completion list for this expression.&lt;br&gt;The provided list contains all identifiers in the file.”&lt;/p&gt; &lt;p&gt;The reason for that is, that if you define the variable member before this point, in the class level, and set it’s value later on in a constructor or other init method – Visual Studio does not know the type of object this variable is going to be set to, so it cannot build the correct auto-complete list.&lt;/p&gt; &lt;p&gt;The fix is simple, you can tell visual studio what type of variable you are creating by adding a ///&amp;lt;field&amp;gt; comment just above it’s definition:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-I50buubtxrk/UPl59S4k3JI/AAAAAAAAAVE/8WSlHSIuqr0/s1600-h/image%25255B44%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-o7Q5U58JR0A/UPl59gB6T4I/AAAAAAAAAVM/YYIqX7c5LrM/image_thumb%25255B32%25255D.png?imgmax=800" width="595" height="43"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And now, when we try to access this member again – auto-completion will work as expected:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-QxmrAb2Ubf0/UPl59yaeWCI/AAAAAAAAAVU/OCstS0uGXIQ/s1600-h/image%25255B54%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-Ow7josYgguU/UPl5-T-b-TI/AAAAAAAAAVY/Nj118WiYZk8/image_thumb%25255B40%25255D.png?imgmax=800" width="471" height="260"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tricky part is finding out the exact type name for each variable. here are a few that I found, hope it would come in handy:&lt;/p&gt; &lt;p&gt;/// &amp;lt;field name="context" type="SP.ClientContext"&amp;gt;Current client context&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="web" type="SP.Web"&amp;gt;Parent web hosting the app&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="webInfo" type="SP.WebInformation"&amp;gt;Parent web info hosting hte app&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="lists" type="SP.ListCollection"&amp;gt;current web lists&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="list" type="SP.List"&amp;gt;selected list (by _ListName)&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="view" type="SP.View"&amp;gt;selected view (by _ViewName)&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="defaultView" type="SP.View"&amp;gt;default list view&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="query" type="SP.CamlQuery"&amp;gt;caml query to run&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="listItems" type="SP.ListItemCollection"&amp;gt;result list item collection&amp;lt;/field&amp;gt;&lt;br&gt;/// &amp;lt;field name="listItem" type="SP.ListItem"&amp;gt;current list item&amp;lt;/field&amp;gt;&lt;/p&gt; &lt;p&gt;if you want to find out the type name of other returned objects, you can alert() their “.constructor.getName()” value.&lt;/p&gt; &lt;p&gt;Have a wonderful scripting day!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/01/fixing-javascript-intellisense.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-l73Llx0is1s/UPl56pcGlUI/AAAAAAAAAUM/3JTAKoywkcw/s72-c/image_thumb%25255B17%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-6216354193246667305</guid><pubDate>Mon, 14 Jan 2013 20:08:00 +0000</pubDate><atom:updated>2013-01-14T12:08:10.227-08:00</atom:updated><title>Building list view SharePoint hosted app part</title><description>&lt;p&gt;Building a SharePoint hosted app is a simple thing, thanks to Napa.&lt;/p&gt; &lt;p&gt;The whole thing can take less than a day (if you know you client side API) even, but filling those gaps that Napa does not cover can be a bit tricky, and remember: once you go visual studio, I can never go back!&lt;/p&gt; &lt;p&gt;So, I thought I would write about a few things I found Napa was missing and I had to spend some time trying to figure out how to make them work:&lt;/p&gt; &lt;h2&gt;1. Set the app part gallery icon:&lt;/h2&gt; &lt;p&gt;&lt;br&gt;&lt;a href="http://lh5.ggpht.com/-VCb55MsQqRI/UPRloOnMF1I/AAAAAAAAATQ/qZcQeSMj78w/s1600-h/image%25255B2%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-jX_O-05tXBA/UPRlonEdPYI/AAAAAAAAATY/dnbnxXzvFeQ/image_thumb.png?imgmax=800" width="244" height="79"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;As much as I tried and wanted, it turns out changing the app part icon is not currently supported! Only Microsoft built-in app parts can have different icons for now. This comes directly from Microsoft, so I stopped researching this issue and gave up… &lt;img class="wlEmoticon wlEmoticon-sadsmile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Sad smile" src="http://lh3.ggpht.com/-hhRJUgYcMl8/UPRlpZTZmgI/AAAAAAAAATg/kYSbyys7fZY/wlEmoticon-sadsmile%25255B2%25255D.png?imgmax=800"&gt;&lt;/p&gt; &lt;h2&gt;2. Custom web part properties:&lt;/h2&gt; &lt;p&gt;&lt;br&gt;&lt;a href="http://lh6.ggpht.com/-Rt1zIteor70/UPRlpwMu6eI/AAAAAAAAATo/7ewM8Ir3WDs/s1600-h/image%25255B5%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-SkNEpVKCQGQ/UPRlqdzJm7I/AAAAAAAAATs/m1C6mQlAFmI/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="113"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A vary basic need in deed, adding customizable parameters to app parts so that the user can configure it further. Apparently this was not supported in Napa, so I had to take my app to visual studio to add them.&lt;/p&gt;  &lt;p&gt;Adding parameters is not very difficult, and since you app part is running in an iframe, all parameters will eventually be sent to your app part as query string parameters.&lt;/p&gt; &lt;p&gt;In order to add the parameters to the tool part, all you have to do is add them to the ClientWebPart elements file, like so:&lt;/p&gt; &lt;p&gt;&amp;lt;Elements&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClientWebPart ….&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Content … /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Properties&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property Name=”PropName” &lt;strong&gt;Type&lt;/strong&gt;=”string” WebBrowsable=”true” WebDisplayName=”Prop Name” WebDescription=”Property description (tooltip)” WebCategory="Prop Category" DefaultValue="" RequiresDesignerPermission="true" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Properties&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ClientWebPart&amp;gt;&lt;br&gt;&amp;lt;/Elements&amp;gt;&lt;/p&gt; &lt;p&gt;Property “Type” can be string, enum, int or boolean.&lt;br&gt;For enum types a dropdown will be rendered. You can add the available options inline in the XML like so:&lt;/p&gt; &lt;p&gt;…&lt;br&gt;&amp;lt;Property …&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EnumItems&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EnumItem Value=”Val1” WebDisplayName=”Value 1” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EnumItem Value=”Val2” WebDisplayName=”Value 2” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EnumItem Value=”Val3” WebDisplayName=”Value 3” /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EnumItems&amp;gt;&lt;br&gt;&amp;lt;/Property&amp;gt;&lt;br&gt;…&lt;/p&gt; &lt;h2&gt;3. Accessing information from the current site, and not from the app sub site&lt;/h2&gt; &lt;p&gt;You may know this already, but apps are deployed to their own sub site, that runs off a different web application than the site the app was deployed to.&lt;/p&gt; &lt;p&gt;Well, I wanted to display information from the user’s site, not from the app site. Which means I had to get the parent web in client object model to work on. not too difficult, but here is the code examples just for quick reference (if you have a better way of doing it – leave a comment I’d love to hear!):&lt;/p&gt; &lt;p&gt;First run this code:&lt;br&gt;this.context = new SP.ClientContext.get_current();&lt;br&gt;this.webInfo = this.context.get_web().get_parentWeb();//return SP.WebInformation not SP.Web&lt;br&gt;this.context.load(this.webInfo);&lt;br&gt;this.context.executeQueryAsync …&lt;/p&gt; &lt;p&gt;On load success, run this code:&lt;br&gt;this.web = this.context.get_site().openWebById(this.webInfo.get_id());&lt;br&gt;this.lists = this.web.get_lists();&lt;br&gt;…&lt;/p&gt; &lt;p&gt;then you can start using this.web to get the parent web and get information from it’s lists.&lt;/p&gt; &lt;h2&gt;4. Auto-complete for SharePoint objects stops working for members&lt;/h2&gt; &lt;p&gt;One last annoying thing I learned: although in most cases visual studio can auto-complete members and functions for javascript types, when I set the object to a member in javascript (this.web = xxx) and try to use it later in a different function it loses the auto-complete for this object.&lt;/p&gt; &lt;p&gt;This was rather simple to fix, when defining the member in my javascript class I had to add an attribute to it defining its expected type:&lt;/p&gt; &lt;p&gt;/// &amp;lt;field name="webInfo" type="SP.WebInformation"&amp;gt;Parent web info hosting hte app&amp;lt;/field&amp;gt;&lt;br&gt;webInfo: null,&lt;/p&gt; &lt;p&gt;This seemed to do the trick.&lt;/p&gt; &lt;p&gt;I’ll post back once I have more tips,&lt;/p&gt; &lt;p&gt;Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/01/building-list-view-sharepoint-hosted.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-jX_O-05tXBA/UPRlonEdPYI/AAAAAAAAATY/dnbnxXzvFeQ/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-4891818057215238227</guid><pubDate>Mon, 14 Jan 2013 19:40:00 +0000</pubDate><atom:updated>2013-05-14T07:39:20.706-07:00</atom:updated><title>Speaking Engagements 2013</title><description>&lt;p&gt;My 2013 speaking engagements are posted below, &lt;br&gt;If you are around – come see me! &lt;br&gt;If you were in one of my sessions, you can find links to the session code and presentation below. Also – if you have any comments on my session – feel free to post it here! &lt;/p&gt; &lt;p&gt;&lt;strong&gt;February 20 2013&lt;/strong&gt; – &lt;a href="http://www.meetup.com/TorontoSPUG/" target="_blank"&gt;Toronto SharePoint User Group&lt;/a&gt; – How-to: SharePoint hosted list viewer app part (Had a baby girl! Bill covered this meeting. I will reschedule, sorry!)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;April 18 2013&lt;/strong&gt; – &lt;a href="http://www.meetup.com/HamiltonSPUG/events/88934772/" target="_blank"&gt;Hamilton SharePoint User Group&lt;/a&gt; - &lt;a href="http://kwizcom.blogspot.ca/2011/10/developers-guide-how-to-enhance-your.html" target="_blank"&gt;Developer's Guide: How to enhance your SharePoint performance - Understand Caching&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;May 18 2013 – &lt;/strong&gt;&lt;a href="http://spsevents.org/city/la/SPSLA2013/Pages/Home.aspx" target="_blank"&gt;SharePoint Saturday LA&lt;/a&gt; - &lt;a href="http://kwizcom.blogspot.ca/2013/05/one-solution-to-rule-them-all.html"&gt;One Solution to rule them all: One SharePoint Solution for both 2010/2013&lt;/a&gt; &amp;amp; &lt;a href="http://kwizcom.blogspot.ca/2010/07/all-about-sharepoint-ribbon-for.html"&gt;All about the SharePoint ribbon for developers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;July 17 2013&lt;/strong&gt; – &lt;a href="http://www.meetup.com/TorontoSPUG/" target="_blank"&gt;Toronto SharePoint User Group&lt;/a&gt; - &lt;a href="http://kwizcom.blogspot.ca/2013/05/one-solution-to-rule-them-all.html"&gt;One Solution to rule them all: One SharePoint Solution for both 2010/2013&lt;/a&gt;&lt;/p&gt; &lt;p&gt;My 2012 speaking engagements can be found &lt;a href="http://kwizcom.blogspot.ca/2012/01/speaking-engagements-2012.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2013/01/speaking-engagements-2013.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8087594251333423769</guid><pubDate>Thu, 22 Nov 2012 18:12:00 +0000</pubDate><atom:updated>2012-11-22T10:12:20.373-08:00</atom:updated><title>Building apps in visual studio with TFS gives a build error</title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Something I came across and didn’t find any documentation for,&lt;/p&gt; &lt;p&gt;I started a Napa SharerPoint Office 365 app, and later on exported it to visual studio to get access to some more features that Napa does not provide.&lt;/p&gt; &lt;p&gt;Once I checked in all my code to TFS I started getting errors during deploy:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Access to the path ‘…..\pkgobj\Release\AppManifest.xml’ is denied.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;or &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Access to the path ‘…..\pkgobj\Debug\AppManifest.xml’ is denied.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;well, looking at the file it seems every time the package was built – this file was marked as read only.&lt;/p&gt; &lt;p&gt;I tried to unmark it but again, after every build it was marked as read only.&lt;/p&gt; &lt;p&gt;this let me to believe that the file is being copied as-is from the project into the package folder, which means that if it is read only in the project – it will be read only in the package!&lt;/p&gt; &lt;p&gt;Now, I guess this specific file has some tokens that needs to be replaced during the packaging, so when visual studio tries to edit this file it gets the access denied error above.&lt;/p&gt; &lt;p&gt;The fix was simple: check out this file in the main project, and delete it from the pkgobj folder. this would make sure the file is not marked as read only when being copied and will allow visual studio to edit it while building the package.&lt;/p&gt; &lt;p&gt;A bug, hopefully that will be fixed soon (I reported it to MSFT).&lt;/p&gt; &lt;p&gt;cheer!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/11/building-apps-in-visual-studio-with-tfs.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-1460036961720586814</guid><pubDate>Tue, 16 Oct 2012 14:20:00 +0000</pubDate><atom:updated>2012-10-16T07:20:54.220-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Metro</category><category domain="http://www.blogger.com/atom/ns#">Windows 8</category><title>Control the way your site looks in Windows 8 Metro</title><description>&lt;p&gt;I just stumbled upon this cool site,&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.buildmypinnedsite.com/" href="http://www.buildmypinnedsite.com/"&gt;http://www.buildmypinnedsite.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It allows you to control the tile created in windows 8 metro UI for your web site when a user pin it to start menu.&lt;/p&gt; &lt;p&gt;Here is KWizCom site before:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-YpWIou_fVmQ/UH1tPS3U3eI/AAAAAAAAASM/7ahWbmtAADc/s1600-h/image%25255B2%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-oCU_taDlJPo/UH1tPhZs0XI/AAAAAAAAASQ/0QDUN1E-RGU/image_thumb.png?imgmax=800" width="191" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;and here is after:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-SYd7SUxOQ3g/UH1tQcWwyzI/AAAAAAAAASY/EfJ3PO4cXpI/s1600-h/image%25255B5%25255D.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; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-i7MQbcwLN38/UH1tRRoqNTI/AAAAAAAAASg/zxp42VM4tEA/image_thumb%25255B1%25255D.png?imgmax=800" width="184" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now, I know I am no design genius, but still – much better, no?&lt;/p&gt;  &lt;p&gt;All you need to do is upload a 114x114 image, and add this code to your home page HTML, right inside your &amp;lt;head&amp;gt; tag:&lt;/p&gt; &lt;p&gt;&amp;lt;meta name="application-name" content="KWizCom Corp"/&amp;gt;&lt;br&gt;&amp;lt;meta name="msapplication-TileColor" content="#ffffff"/&amp;gt;&lt;br&gt;&amp;lt;meta name="msapplication-TileImage" content="002a8685-b8ff-4a45-8922-fcb0966fcb43.png"/&amp;gt; &lt;p&gt;I wish we could add a parameter for search, to have a text box inside, or maybe some more functionality, but right now we can control the background color, image and caption.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/10/control-way-your-site-looks-in-windows.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-oCU_taDlJPo/UH1tPhZs0XI/AAAAAAAAASQ/0QDUN1E-RGU/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-4672071123749547273</guid><pubDate>Tue, 02 Oct 2012 18:28:00 +0000</pubDate><atom:updated>2012-10-02T11:30:59.635-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint 2013</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Undocumented</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Developer</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Traps in SharePoint 2013 API</title><description>&lt;p&gt;So, SharePoint 2013 has almost full API backward compatibility? Sure. That’s great!&lt;/p&gt; &lt;p&gt;I mean, Microsoft did a great job making our lives easy in upgrades.&lt;/p&gt; &lt;p&gt;But I did find some traps while upgrading to 2013 I want to share with your guys,&lt;/p&gt; &lt;p&gt;I am sure these things won’t be documented anywhere – which is why I call them “traps”…&lt;/p&gt; &lt;p&gt;I’ll try to collect more info and add it here as I move forward.&lt;/p&gt; &lt;p&gt;Note: these issues are found on a pre release version and might change before production is released.&lt;/p&gt; &lt;h2&gt;Trap #1:&lt;/h2&gt; &lt;p&gt;We run a query on tasks list, using the default all tasks view from that list. Thing is, we got “Object not set to an instance” error coming from our query parser.&lt;/p&gt; &lt;p&gt;Digging in code, I found SPListView.Query used to be an empty string in 2007/2010. In some lists in 2013 this changed to null now… So, any code using or parsing the query should now check if the view query is null before accessing it, like so:&lt;/p&gt; &lt;p&gt;string query = listview.Query ?? “”; //Takes listview.Query if not null, otherwise takes empty string.&lt;br&gt;… work and parse query as you would before&lt;/p&gt; &lt;h2&gt;Trap #2:&lt;/h2&gt; &lt;p&gt;We had some code that allows the user to select a list template and aggregate all items from that list type (in our list aggregator web part). So, I set it up to run on tasks lists, after fixing Trap #1, there was no error but still no items were returned.&lt;/p&gt; &lt;p&gt;Reason: I added a tasks “App” in 2013, which I assumed was the same as a tasks list. but to my surprise, tasks list type is 107, while the tasks App creates a list that uses type 151 (TasksWithTimelineAndHierarchy)&lt;/p&gt; &lt;p&gt;In our code, I collected all available list templates on the current site, but I had a code that prevented duplicate items from being added. I checked the SPListTemplate.Name and only added the first.&lt;/p&gt; &lt;p&gt;It appears, that in SharePoint 2013, both list types (107 and 151) have the same name “Tasks”! So, my code was only adding the first one, 107.&lt;/p&gt; &lt;p&gt;I had to modify my code to take the SPListTemplate.Type.ToString() in case of a duplicate entry, which seems to do the trick, Only added a space before every capital letter so it would be formatted nicer for the user.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Comment if you found more interesting upgrade traps!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/10/traps-in-sharepoint-2013-api.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-6084188366347986446</guid><pubDate>Wed, 18 Jul 2012 19:29:00 +0000</pubDate><atom:updated>2012-07-18T12:29:05.543-07:00</atom:updated><title>i luv my prezi!</title><description>&lt;p&gt;Just found this amazing presentation engine, free to use, build and present online and offline decks.&lt;/p&gt; &lt;p&gt;Thanks to my wife for this amazing catch! Spend some time converting one of my existing decks from power point to their engine,&lt;/p&gt; &lt;p&gt;Unfortunately I had to rebuild it from scratch – but it didn’t take long.&lt;/p&gt; &lt;p&gt;Here is my new deck for SharePoint ribbon development (keep in mind – it’s a work in progress, original deck is still here &lt;a title="http://kwizcom.blogspot.ca/2010/07/all-about-sharepoint-ribbon-for.html" href="http://kwizcom.blogspot.ca/2010/07/all-about-sharepoint-ribbon-for.html"&gt;http://kwizcom.blogspot.ca/2010/07/all-about-sharepoint-ribbon-for.html&lt;/a&gt;):&lt;/p&gt; &lt;div class="prezi-player"&gt; &lt;style type="text/css" media="screen"&gt;.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }&lt;/style&gt; &lt;object id="prezi_xqrjnfkkz7gl" name="prezi_xqrjnfkkz7gl" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="400"&gt;&lt;param name="movie" value="http://prezi.com/bin/preziloader.swf" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowFullScreenInteractive" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;param name="flashvars" value="prezi_id=xqrjnfkkz7gl&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0" /&gt;&lt;embed id="preziEmbed_xqrjnfkkz7gl" name="preziEmbed_xqrjnfkkz7gl" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowFullScreenInteractive="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=xqrjnfkkz7gl&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div class="prezi-player-links"&gt; &lt;p&gt;&lt;a title="SharePoint Ribbon Development" href="http://prezi.com/xqrjnfkkz7gl/sharepoint-ribbon-development/"&gt;SharePoint Ribbon Development&lt;/a&gt; on &lt;a href="http://prezi.com"&gt;Prezi&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Tell me what you think, isn’t it awesome?&lt;/p&gt; &lt;p&gt;One comment I already got is “Where is KWizCom logo”? :) Will be fixed shortly…&lt;/p&gt; &lt;p&gt;What is missing?&lt;/p&gt; &lt;p&gt;- the ability to embed files into it (like source code examples in ZIP)&lt;br&gt;- set colors for boxes… strange, but I couldn’t figure out how to do it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/07/i-luv-my-prezi.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-698525034584378364</guid><pubDate>Mon, 11 Jun 2012 15:30:00 +0000</pubDate><atom:updated>2012-06-11T08:30:51.359-07:00</atom:updated><title>Setting an optional parameter in workflow activity</title><description>&lt;p&gt;Just a little something I encountered today, been working on some new custom actions for SharePoint Designer workflow editor.&lt;/p&gt; &lt;p&gt;I wanted to add an action that converts a file to a PDF and stores it somewhere on the server.&lt;/p&gt; &lt;p&gt;Everything was going smooth, except for 1 thing: the target PDF file name parameter – I wanted this parameter to be optional, so that people can either calculate a value for it or leave it empty. Once empty – it would keep the source file name, or will take the list item title as the new file name.&lt;/p&gt; &lt;p&gt;So, looks like marking a workflow activity parameter as optional is not a simple task as I thought it would be.&lt;/p&gt; &lt;p&gt;It starts by changing the attribute on the property in the Activity class:&lt;/p&gt; &lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: 'Courier New', courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"&gt; &lt;div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; [Description(&lt;span style="color: #006080"&gt;"Target Filename"&lt;/span&gt;)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt; [Browsable(&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt; [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt; [ValidationOption(ValidationOption.Optional)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum5" style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; TargetFilename&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span id="lnum6" style="color: #606060"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum7" style="color: #606060"&gt;   7:&lt;/span&gt;     get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ((&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)(&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.GetValue(TargetFilenameProperty))); }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span id="lnum8" style="color: #606060"&gt;   8:&lt;/span&gt;     set { &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.SetValue(TargetFilenameProperty, &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;); }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum9" style="color: #606060"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;I had to change the “ValidationOption” from required to optional. First, I tried using “None” but it seemed not to work.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once I’ve done that, I thought I was done. But still – SharePoint Designer didn’t accept my workflow and prompted for a value.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, after some more reading and help from Kevin Vieira, he thought we should try and change the direction property on the parameter definition in the actions xml file:&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: 'Courier New', courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; width: 97.5%; background-color: #f4f4f4"&gt;&lt;br /&gt;&lt;div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Parameter&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="TargetFilename"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.String, mscorlib"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Direction&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Optional"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Although in several places in MSDN I found that the parameter direction can only be In or Out, Kevin found &lt;a href="http://msdn.microsoft.com/en-us/library/bb897950.aspx" target="_blank"&gt;one page that said “Optional” was also supported&lt;/a&gt;. Of course with no other explanation or documentation regarding what is optional and when to use it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, marking it as optional saved the day!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Oh, another very important note for those of you writing custom actions/activities and working with SharePoint Designer:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;On almost any change you make, you have to clear SharePoint Designer cache before your changes take effect.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Kevin found a &lt;a href="http://www.hexanes.com/?p=558" target="_blank"&gt;nice blog post by Matthew Workman&lt;/a&gt; about that as well explaining which folders to clear (this is how I like them – like a mini skirt: short enough to keep it interesting - long enough to cover the story):&lt;/p&gt;&lt;br /&gt;&lt;p&gt;“cd "%APPDATA%\Microsoft\Web Server Extensions\Cache"&lt;br&gt;del *.web /S /Q "%APPDATA%\Microsoft\Web Server Extensions\Cache"&lt;br&gt;cd "%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache\"&lt;br&gt;rmdir /S /Q "%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache\."&lt;br&gt;mkdir "%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache"&lt;br&gt;dir "%APPDATA%\Microsoft\Web Server Extensions\Cache"&lt;br&gt;dir "%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache"pause”&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/06/setting-optional-parameter-in-workflow.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7315707738781771378</guid><pubDate>Wed, 07 Mar 2012 16:51:00 +0000</pubDate><atom:updated>2012-03-07T08:51:06.098-08:00</atom:updated><title>Datasheet view alternatives</title><description>&lt;p&gt;Ok, this is really long overdue…&lt;/p&gt;  &lt;p&gt;Ever since Microsoft introduced the datasheet view for editing lists in SharePoint I’ve had mixed emotions about it.&lt;/p&gt;  &lt;p&gt;Although datasheet is a great editing tool for SharePoint lists that allows you to quickly edit and update multiple items in an excel-like experience – it has been a challenge getting it to work.&lt;/p&gt;  &lt;p&gt;One customer of mine used a proxy server internally to direct traffic into his SharePoint, which made the datasheet view unavailable.&lt;/p&gt;  &lt;p&gt;Another customer had deployed office 2010 64 bit on his users computers. Apparently datasheet view does not support office 2010 64bit: &lt;a title="http://support.microsoft.com/kb/2266203" href="http://support.microsoft.com/kb/2266203"&gt;http://support.microsoft.com/kb/2266203&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Some other customers complaining that they cannot use FireFox or Chrome with datasheet view, or any OS that does not have office installed.&lt;/p&gt;  &lt;p&gt;And finally, datasheet view does not support custom field types – they appear as read only. Actually, even standard OOB fields use a different editing control inside the datasheet view, causing an inconsistent editing experience to the user.&lt;/p&gt;  &lt;p&gt;This have been bothering me for a long while, and finally with the help of my friend Igor Goldshtaub we came up with an idea that will allow you to:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Edit multiple list items (bulk edit) &lt;/li&gt;    &lt;li&gt;Enjoy fast inline editing in list views on all major browsers &lt;/li&gt;    &lt;li&gt;Inline edit custom field types as well as OOB field types &lt;/li&gt;    &lt;li&gt;Have a consistent user experience, using the same editing controls as used in the actual “edit” item form &lt;/li&gt;    &lt;li&gt;Paste information from excel into a list &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The best part is, it potentially supports any 3rd party custom field type, from any other vendor or even ones you develop yourself. Most field types just work, others may need to call a JavaScript method when the content is resized (picker is opened, for example) “OnClientResponseEnded();”&lt;/p&gt;  &lt;p&gt;Inline editing demo:&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/iGfONvBNGIQ" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Paste from excel demo:&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/j4J80biB4a8" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;I’d love to hear what you think about this solution, and if you run into trouble using a custom field type – please let me know! My goal is to be able to support all custom field types in this inline editing platform!&lt;/p&gt;  &lt;p&gt;Finally, we have an answer for editing custom field types in datasheet view. It’s not datasheet, but it comes close!&lt;/p&gt;  &lt;p&gt;Cheers, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/03/datasheet-view-alternatives.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/iGfONvBNGIQ/default.jpg" height="72" width="72" /><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-950504639172852257</guid><pubDate>Tue, 14 Feb 2012 16:48:00 +0000</pubDate><atom:updated>2012-02-14T08:49:03.494-08:00</atom:updated><title>Cache explained - the milk story</title><description>&lt;h4&gt;&lt;/h4&gt;  &lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;I came up with this little story when trying to explain what is caching, how to plan for caching and how to use it. Like many things in software, caching is something we use very widely in our day to day life without even knowing about it. Hopefully this example will give you a different, easier to understand point of view on caching that will help you get your head around it.&lt;/p&gt;  &lt;h3&gt;The milk story&lt;/h3&gt;  &lt;h4&gt;No cache&lt;/h4&gt;  &lt;p&gt;Caching is like drinking milk. &lt;/p&gt;  &lt;p&gt;When you want to drink milk you have to go to the store and buy it.&lt;/p&gt;  &lt;p&gt;You can walk (56k modem) ride your bike (3G) or drive there in your corvette (high speed Internet).&lt;/p&gt;  &lt;p&gt;You have to identify yourself, find and get the milk you want, check its expiration and pay for it. Since there are many things at the store it takes more time to find your milk.&lt;/p&gt;  &lt;p&gt;Then you have to fight traffic back home. Pour the milk into a glass and drink it.&lt;/p&gt;  &lt;h4&gt;Caching options&lt;/h4&gt;  &lt;p&gt;Now, how do we make it better?&lt;/p&gt;  &lt;p&gt;We notice that the store keeps the same milk for 10 days.&lt;/p&gt;  &lt;p&gt;So, we can buy 10 days worth of milk ahead. We calculate our milk usage to be 0.5 liter a day, do we need 5 liters.&lt;/p&gt;  &lt;p&gt;Wow - this is when we discover bulk discounts!&lt;/p&gt;  &lt;p&gt;But - then we discover we need to store it all in the fridge. This type of storage is very expensive since it has many uses and is limited.&lt;/p&gt;  &lt;p&gt;So we compromise and fetch only 2 liters at a time, knowing we will be back at the store once every 4 days.&lt;/p&gt;  &lt;p&gt;Now, we notice we go to the store to get cookies with our milk. So when we go in for milk we use that same opportunity to get cookies as well.&lt;/p&gt;  &lt;p&gt;Now every time we want milk we need to check our fridge first. If there is milk we can use it and we saved a lot of time and resources!&lt;/p&gt;  &lt;p&gt;But, if there is no milk we have to go and get it. In the case we added some overhead by checking the fridge first...&lt;/p&gt;  &lt;p&gt;Now, milk is known to go bad from time to time. So we have to check its expiration. If the milk gone bad we have to throw it.&lt;/p&gt;  &lt;p&gt;That's another overhead every time we want milk.&lt;/p&gt;  &lt;h4&gt;Conclusion&lt;/h4&gt;  &lt;p&gt;Milk is your data.&lt;/p&gt;  &lt;p&gt;The store is your data base.&lt;/p&gt;  &lt;p&gt;Your fridge is your quick accessible cache storage.&lt;/p&gt;  &lt;p&gt;Throwing out bad milk is flushing the cache when invalidated.&lt;/p&gt;  &lt;p&gt;Cache is life ( ok, I went too far… ).&lt;/p&gt;  &lt;p&gt;We use caching techniques every day!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/02/cache-explained-milk-story.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8066731125887098952</guid><pubDate>Tue, 14 Feb 2012 15:12:00 +0000</pubDate><atom:updated>2012-02-14T07:12:55.720-08:00</atom:updated><title>Microsoft Canada - Imagine Cup</title><description>&lt;p&gt;Are you ready to change the world? &lt;/p&gt;  &lt;p&gt;All it takes is one good idea. &lt;a href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Imagine Cup&lt;/a&gt;, one of the premiere worldwide technology competitions, is looking for students, to help solve some of the world’s toughest problems through technology. &lt;/p&gt;  &lt;p&gt;This year, Microsoft will be hosting a Canadian &lt;a href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Imagine Cup&lt;/a&gt; competition with two categories: Software Design and Windows Phone 7 Game Design. You could win a trip to Toronto for the Canadian Finals, a trip to Australia for the Worldwide Finals, international acclaim and cash grants. What are you waiting for? &lt;a href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Get involved&lt;/a&gt; »&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/02/microsoft-canada-imagine-cup.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3182485966020502192</guid><pubDate>Wed, 04 Jan 2012 23:04:00 +0000</pubDate><atom:updated>2013-01-14T11:04:09.509-08:00</atom:updated><title>Speaking Engagements 2012</title><description>&lt;p&gt;My 2012 speaking engagements are posted below, &lt;br&gt;If you are around – come see me! &lt;br&gt;If you were in one of my sessions, you can find links to the session code and presentation below. Also – if you have any comments on my session – feel free to post it here! &lt;/p&gt; &lt;p&gt;&lt;strong&gt;January 7 2012&lt;/strong&gt; – &lt;a href="http://www.sharepointsaturday.org/virginiabeach/default.aspx"&gt;SPS Virginia Beach&lt;/a&gt; – Session unknown… – Cancelled due to other obligations. Sorry I couldn’t make it!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;January 18 2012&lt;/strong&gt; – &lt;a href="http://www.meetup.com/TorontoSPUG/" target="_blank"&gt;Toronto SharePoint User Group&lt;/a&gt; - &lt;a href="http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html"&gt;Developer’s guide: how to enhance your SP performance: Understanding caching&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;May 16 2012&lt;/strong&gt; – &lt;a href="http://www.sharepointsummit.org/Toronto/conference-day3.htm#session_13_3" target="_blank"&gt;Toronto SharePoint Summit&lt;/a&gt;- &lt;a href="http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html"&gt;Developer’s guide: how to enhance your SP performance: Understanding caching&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;July 7 2012&lt;/strong&gt; – &lt;a href="http://www.sharepointsaturday.org/toronto/default.aspx" target="_blank"&gt;SPS Toronto&lt;/a&gt; – &lt;a href="http://kwizcom.blogspot.com/2010/07/all-about-sharepoint-ribbon-for.html" target="_blank"&gt;All about the SharePoint Ribbon for developers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;September 22 2012&lt;/strong&gt; – &lt;a href="http://www.sharepointsaturday.org/nh/default.aspx" target="_blank"&gt;SPS NH&lt;/a&gt; – &lt;a href="http://kwizcom.blogspot.com/2010/07/all-about-sharepoint-ribbon-for.html" target="_blank"&gt;All about the SharePoint Ribbon for developers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;November 3 2012&lt;/strong&gt; – &lt;a href="http://www.sharepointsaturday.org/twincities/default.aspx" target="_blank"&gt;SPS Twin Cities&lt;/a&gt; – &lt;a href="http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html"&gt;Developer’s guide: how to enhance your SP performance: Understanding caching&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;My 2011 speaking engagements can be found &lt;a href="http://kwizcom.blogspot.com/2010/11/speaking-engagements-2011.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2012/01/speaking-engagements-2012.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-9324870977872148</guid><pubDate>Tue, 29 Nov 2011 20:27:00 +0000</pubDate><atom:updated>2012-02-01T12:38:18.112-08:00</atom:updated><title>SharePoint Popup Scroll gone after autoSize</title><description>&lt;p&gt;I’m writing this post after not finding anything about this problem in Google.&lt;/p&gt;  &lt;h3&gt;The issue&lt;/h3&gt;  &lt;p&gt;When you have a SharePoint 2010 popup dialog, that uses autoSize (like the new item / edit item forms in any SharePoint list), if you call “window.frameElement.autoSize()” second time, there is no scroll in the popup.&lt;/p&gt;  &lt;p&gt;Say you have a field control or a web part that changes in height when the user interacts with it. In my case, I was working on a “repeating rows” field type, where the user can add as many rows to the field as he wants – much like in InfoPath.&lt;/p&gt;  &lt;p&gt;When the user add new rows, the height of my popup changes, so I have to resize it.&lt;/p&gt;  &lt;p&gt;Documentation is pretty clear, call window.frameElement.autoSize() and it should resize your dialog.&lt;/p&gt;  &lt;p&gt;Apparently, this works well for the first time you call it, but for some reason if I call it second/third/ninth time – once the popup is too high the vertical scroll is gone.&lt;/p&gt;  &lt;p&gt;Another issue is, that even when it does fit to the page – the top of the popup does not move up so you end up having to move the popup to the top of the page yourself.&lt;/p&gt;  &lt;p&gt;This caused great frustration for some of our customers, and by extent – our product manager and support – and by extent – me!&lt;/p&gt;  &lt;h3&gt;The solution&lt;/h3&gt;  &lt;p&gt;I knew I was alone in this, since not only Google did not have any solution for this issue – I could not even find someone asking about it in any forums / mailing list.&lt;/p&gt;  &lt;p&gt;So, since waiting for a Microsoft fix for this, which may or may not come eventually (after all this issue is introduced with custom development and not on OOB scenarios), I had to dig deep and get dirty with Microsoft JavaScript and popup DOM.&lt;/p&gt;  &lt;p&gt;It wasn’t pretty, I tell you, but I did find lots of cool stuff, like a function that calculates the width of the scroll bars in the browser :) (yeah, they actually have a function for it!)&lt;/p&gt;  &lt;p&gt;Well, it appears that the popup have few divs and iframe behind it to make it look and work so cool (great job on that Microsoft!), I figured the problem was that the height was not calculating correctly on the second call to autoSize. It disregards the maximum size of the parent window, and does not reposition the window vertically.&lt;/p&gt;  &lt;p&gt;I had to do it myself.&lt;/p&gt;  &lt;p&gt;I came up with this code, now – it is not fail proof, and might not work on some scenarios – but it did work for me, our QA and our customers. I will appreciate if you have any comments or fixes to this code, or if you know of another more “clean” solution to this issue.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #006400"&gt;//call autoSize&lt;br /&gt;&lt;/span&gt;window.frameElement.autoSize();&lt;br /&gt;&lt;span style="color: #006400"&gt;//Fix scroll bar and positioning. $kw is our alias for jQuery&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;bodyHeight = $kw(top.document.body).height();&lt;br /&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;dialogMaxHeight = bodyHeight - 60;&lt;br /&gt;&lt;span style="color: #006400"&gt;//if dialog is too high&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;($kw(window.frameElement).height() &amp;gt; dialogMaxHeight) {&lt;br /&gt;    &lt;span style="color: #006400"&gt;//move dialog to top&lt;br /&gt;    &lt;/span&gt;top.document.getElementsByClassName(&lt;span style="color: maroon"&gt;'ms-dlgContent'&lt;/span&gt;)[0].style.top = &lt;span style="color: maroon"&gt;'8px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color: maroon"&gt;'ms-dlgContent'&lt;/span&gt;)[0].previousSibling.style.top = &lt;span style="color: maroon"&gt;'8px'&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #006400"&gt;//resize all dialog divs/frames/whatnot&lt;br /&gt;    &lt;/span&gt;window.frameElement.style.height = dialogMaxHeight + &lt;span style="color: maroon"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color: maroon"&gt;'ms-dlgContent'&lt;/span&gt;)[0].previousSibling.style.height = dialogMaxHeight + &lt;span style="color: maroon"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color: maroon"&gt;'ms-dlgContent'&lt;/span&gt;)[0].style.height = dialogMaxHeight + 32 + &lt;span style="color: maroon"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color: maroon"&gt;'ms-dlgBorder'&lt;/span&gt;)[0].style.height = dialogMaxHeight + 32 + &lt;span style="color: maroon"&gt;'px'&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #006400"&gt;//end issue fix&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/11/sharepoint-popup-scroll-gone-after.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3129226863028146289</guid><pubDate>Thu, 24 Nov 2011 15:52:00 +0000</pubDate><atom:updated>2011-11-24T07:52:40.908-08:00</atom:updated><title>Redirect to custom error page from event handler</title><description>&lt;p&gt;I’ve seen a lot of posts saying you can’t redirect to a custom error page from a SPItemEventReceiver in SharePoint 2007.&lt;/p&gt;  &lt;p&gt;In 2010, you can use Properties.RedirectUrl which will send you to a custom error page, instead of the OOB error page that displays your properties.ErrorMessage. this is simple enough, all you have to do is set properties.Cancel = true – and the custom redirect Url kicks in.&lt;/p&gt;  &lt;p&gt;But still, in 2007 this property does not exist, and in 2010 – you might want to have a custom redirect page and not cancel the event.&lt;/p&gt;  &lt;p&gt;Good news – it is all possible!&lt;/p&gt;  &lt;h3&gt;Redirecting&lt;/h3&gt;  &lt;p&gt;The way to do it, is to add some code to a sync event. Async events can’t help you since they are not guaranteed to run immediately, and they don’t have any user context when they execute…&lt;/p&gt;  &lt;p&gt;You can use the SPUtility.Redirect(PageUrl, SPRedirectFlags, HTTPContext); within your ItemAdding, ItemUpdating or ItemDeleting event handler to redirect your user to a custom page.&lt;/p&gt;  &lt;p&gt;This redirection kicks in and throws the “ThreadAbortException”, stopping the rest of your code from running and redirecting the user to your custom page.&lt;/p&gt;  &lt;p&gt;Few things to know:&lt;/p&gt;  &lt;p&gt;1. ThreadAbortException is a “catch me if you can” exception. you can put it in try…catch… block, but this exception will always bubble up and be thrown again and again. essentially, only the catch and finally code blocks will run after this exception is thrown. you can set “SPRedirectFlags.DoNotEndResponse” if you don’t want this exception to be thrown and it should still redirect at the end, but using SPRedirectFlags.Default will throw it.&lt;/p&gt;  &lt;p&gt;2. You may notice, that if you try using HTTPContext.Current in your event handler method – you will get a null context. So, the only way to get the HTTPContext.Current is in your event handler class constructor. save it as a member, and use it in your event handlers. DONT SAVE IT AS A STATIC MEMBER! Use any instance member (private/public/protected…) but don’t use a static member as you may run into unexpected trouble.&lt;/p&gt;  &lt;h3&gt;Cancelling the event&lt;/h3&gt;  &lt;p&gt;Now, we took care of redirecting, but it is good to remember that this on its own will not cancel the item event and it will still be updated/added/deleted.&lt;/p&gt;  &lt;p&gt;If you want to cancel the item event, you still have to do that using properties.Cancel = true.&lt;/p&gt;  &lt;p&gt;Since we talked about ThreadAbortException – now you know you have to put the SPUtility.Redirect code in a try block, and set the properties.Cancel in the catch block.&lt;/p&gt;  &lt;h3&gt;Code Example:&lt;/h3&gt;  &lt;p&gt;Your code should look like this:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;try&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: #2b91af"&gt;SPUtility&lt;/span&gt;.Redirect(&lt;span style="color: #a31515"&gt;&amp;quot;/_layouts/KWizCom/AppError.aspx?ErMsg=&amp;quot; &lt;/span&gt;+ errMessage, &lt;span style="color: #2b91af"&gt;SPRedirectFlags&lt;/span&gt;.DoNotEndResponse, currentContext);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: blue"&gt;catch&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    properties.ErrorMessage = errMessage;&lt;br /&gt;    properties.Cancel = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Good luck!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/11/redirect-to-custom-error-page-from.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7566805813736225108</guid><pubDate>Sat, 29 Oct 2011 16:16:00 +0000</pubDate><atom:updated>2011-10-29T09:16:33.882-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Publishing</category><category domain="http://www.blogger.com/atom/ns#">Events</category><category domain="http://www.blogger.com/atom/ns#">Cache</category><category domain="http://www.blogger.com/atom/ns#">SharePoint Saturday</category><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">how to</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Developer</category><category domain="http://www.blogger.com/atom/ns#">presentation</category><title>Developer's Guide: How to enhance your SharePoint performance - Understand Caching</title><description>I have just finished my presentation at SharePoint Saturday Twin Cities!&lt;br /&gt;
&lt;br /&gt;
I talked with developers and ITPro on how to enhance their SharePoint and SharePoint customization performance using some of the built in caching features, such as:&lt;br /&gt;
- BLOB cache&lt;br /&gt;
- Ghost files&lt;br /&gt;
- Object cache&lt;br /&gt;
- Page output cache&lt;br /&gt;
As well as other coding practices, such as:&lt;br /&gt;
- Query pagination&lt;br /&gt;
- Indexed columns&lt;br /&gt;
- Throttling&lt;br /&gt;
- Code cache in multi-threaded environment&lt;br /&gt;
&lt;br /&gt;
Here is the complete presentation, download to read comments in each slide:&lt;br /&gt;
&lt;div style="width:425px" id="__ss_9939826"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/shaibs/developers-guide-understand-caching" title="Developer’s guide understand caching" target="_blank"&gt;Developer’s guide understand caching&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/9939826" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/shaibs" target="_blank"&gt;Shai Petel&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-220270787178273668</guid><pubDate>Thu, 15 Sep 2011 16:45:00 +0000</pubDate><atom:updated>2011-09-15T09:45:31.654-07:00</atom:updated><title>Windows 8 Developer Preview!</title><description>&lt;p&gt;Finally, My Lenovo tablet, x201, multi touch screen, will be more cool than my iPad!&lt;/p&gt;  &lt;p&gt;and that’s saying a lot!&lt;/p&gt;  &lt;p&gt;I just installed windows 8 on my hyper V, looks real nice.&lt;/p&gt;  &lt;p&gt;First impressions:&lt;/p&gt;  &lt;h2&gt;Login&lt;/h2&gt;  &lt;p&gt;First of all, logging in to windows is now done using your live ID login (email and password) and it promises to keep your desktop settings synced across all your PC’s.&lt;/p&gt;  &lt;p&gt;Login screen itself reminds me of a welcome screen on a smartphone:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-ZXkMn2uYiZw/TnIreJJ48uI/AAAAAAAAANY/OH9UiEyr0Do/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-6Yblv4REqXQ/TnIrff_ZZgI/AAAAAAAAANc/XH75kXcau-Y/image_thumb.png?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nice, finally some info on the boring lock screen. didn't ask for much, clock and date will defiantly suffice.&lt;/p&gt;  &lt;h2&gt;The new Start menu&lt;/h2&gt;  &lt;p&gt;Logging in with my live id, gets me to the new start menu. Yeah – you heard me.   &lt;br /&gt;It feels like they took windows 7, build a huge new start menu, and hid windows desktop behind the start menu – and it looks and feels great!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Rylmn_QYPt8/TnIrgf-rntI/AAAAAAAAANg/cGO6v7IOOWs/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-_h79e9Y8hrw/TnIrg-nbGUI/AAAAAAAAANk/CSaSw1wjB8M/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Build for wide screen displays, high res, and for touch – obviously!&lt;/p&gt;  &lt;p&gt;While in this mode, you work in a table or smartphone look and feel. Every app you open takes up the whole screen, so no more confusing display of many small windows. I guess, for the average user that is pretty good, while for work that might be less useful.&lt;/p&gt;  &lt;h3&gt;Start menu apps&lt;/h3&gt;  &lt;p&gt;The new internet explorer looks pretty amazing and works very well. check out this new “tiles” instead of tabs:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-_L6gU0hyzDg/TnIriGAEqFI/AAAAAAAAANo/zayWz-SYjSU/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-IiCPtRvPGHI/TnIriQiRkmI/AAAAAAAAANs/aDklYkUPZ9A/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;overall, the new UI with large buttons made for touch.&lt;/p&gt;  &lt;p&gt;This build ships with a built-in twitter application called &lt;a href="mailto:tweet@rama"&gt;tweet@rama&lt;/a&gt;, which might reminds you of something else already out there (pardon the blur, for protecting my info):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-2j_HcGx4kjs/TnIrj3tmPWI/AAAAAAAAANw/QplHQO_5-AE/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-07Tqw6eo2kM/TnIrkenahCI/AAAAAAAAAN0/pbvIVwiFhOs/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Start menu UX&lt;/h3&gt;  &lt;p&gt;Another change you might notice while in this new menu, is that the windows key in your keyboard is now used to switching between you current active application and back to the menu. As mentioned before, you can only have one application opened at a time, and it works in full screen only, which honestly makes more sense to me and is much better user experience especially for non-developer users.&lt;/p&gt;  &lt;p&gt;I am sure this new UX will increase adaptability to the new system by the public who is now more and more used to smart phones.&lt;/p&gt;  &lt;h2&gt;And… Windows Desktop&lt;/h2&gt;  &lt;p&gt;One of the tiles in the start menu allows you to get to the original windows desktop mode:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-w7JhfFKz3JM/TnIrmLUS8TI/AAAAAAAAAN4/q7v6oSE5sUs/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-ejxPvQvbnTI/TnIrmvGyQLI/AAAAAAAAAN8/pY0IUA--j8o/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;reminds me of windows 7 so far, but – careful! clicking the start menu will not open a start menu as you know it, but will bring you back to the new start menu with the huge tiles we got on logon.&lt;/p&gt;  &lt;p&gt;task manager had a serious face lift as well, with a minimal view:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-5rrF-T9qQzw/TnIrnklI5sI/AAAAAAAAAOA/Kf3BayEypEs/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-WYkL3VaRvNs/TnIroF9bBXI/AAAAAAAAAOE/aIDjHfMSxvM/image_thumb%25255B6%25255D.png?imgmax=800" width="243" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and&amp;#160; advanced views:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-kgv-AK_u3As/TnIroSih1GI/AAAAAAAAAOI/XNL3g2pImCU/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-vxZev_pg6Mc/TnIro_NQcEI/AAAAAAAAAOM/nPEdF1ypB5k/image_thumb%25255B7%25255D.png?imgmax=800" width="244" height="223" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/-qlzVNhtcLQw/TnIrpVJ20TI/AAAAAAAAAOQ/pAEDfc5mRsw/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Dd3Mb_dDHko/TnIrpiifZ8I/AAAAAAAAAOU/QYQRGzDL2Xk/image_thumb%25255B8%25255D.png?imgmax=800" width="244" height="224" /&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/-ZaH0h4Z1SPA/TnIrqMQKK9I/AAAAAAAAAOY/wLLg3VoC5p4/s1600-h/image%25255B29%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-evDO6lacemI/TnIrqlXncxI/AAAAAAAAAOc/s79cfL2EdyI/image_thumb%25255B9%25255D.png?imgmax=800" width="244" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Overall, super excited!&lt;/h2&gt;  &lt;p&gt;As a long time advocate of touch screens, and the owner of 3(!) windows based multi touch computers (2 laptops and 1 HT TouchSmart) I can safely say I have waited a long time for this, and Microsoft did not disappoint!&lt;/p&gt;  &lt;p&gt;To me, this is a huge breakthrough that will finally windows OS to lots of people, who can easily use a smart phone or and iPad but found the mouse-keyboard interaction a bit confusing.&lt;/p&gt;  &lt;p&gt;Ok, I know this type of posts is not typical for me, a non technical product eval type of post, but I guess I am just too much excited!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/09/windows-8-developer-preview.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-6Yblv4REqXQ/TnIrff_ZZgI/AAAAAAAAANc/XH75kXcau-Y/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2117589740470770540</guid><pubDate>Tue, 06 Sep 2011 20:04:00 +0000</pubDate><atom:updated>2011-09-06T13:04:48.474-07:00</atom:updated><title>Error: “value cannot be null parameter name publickey”</title><description>&lt;p&gt;I just had a very strange error message in my visual studio 2010 SharePoint project…&lt;/p&gt;  &lt;p&gt;When building the project everything goes well, but when packaging it or deploying it I got this error message:&lt;/p&gt;  &lt;p&gt;“value cannot be null parameter name publickey”&lt;/p&gt;  &lt;p&gt;Also, trying to open the package editor in visual studio to take a look at the “preview of packaged manifest” showed me the same error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Gg5AJ8Gvv-0/TmZ83WBh15I/AAAAAAAAANQ/DhOpSferFq4/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-cI427KJohF0/TmZ83-lT46I/AAAAAAAAANU/GyMcWnaE0go/image_thumb%25255B1%25255D.png?imgmax=800" width="650" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Google did not prove to be useful as I did not find anything close to this error message.&lt;/p&gt;  &lt;p&gt;Well, in the interest of saving you time, let me just say that after some search around the project I found that the strong name signing of my project was missing the signature file (SNK), which produced an unsigned DLL, and as such – I guess caused this issue with the package building.&lt;/p&gt;  &lt;p&gt;Hope this will at least save some time to anyone else out there,&lt;/p&gt;  &lt;p&gt;Happy SharePointing!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/09/error-value-cannot-be-null-parameter.html</link><author>noreply@blogger.com (Shai Petel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-cI427KJohF0/TmZ83-lT46I/AAAAAAAAANU/GyMcWnaE0go/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-1881292430141326415</guid><pubDate>Mon, 27 Jun 2011 20:42:00 +0000</pubDate><atom:updated>2011-06-27T13:43:29.138-07:00</atom:updated><title>Accessing SharePoint Silverlight 4 API from outside of SharePoint</title><description>&lt;p&gt;If you are like me, building Silverlight SharePoint components, you probably noticed that debugging Silverlight running from within a SharePoint solution is almost impossible!&lt;/p&gt;  &lt;p&gt;There are many settings to take care of, and you have to install and configure your server to allow debugging, honestly I gave up in the middle.&lt;/p&gt;  &lt;p&gt;Instead, I though, why not run the Silverlight application locally, and have it connect to the SharePoint API?&lt;/p&gt;  &lt;p&gt;Well, try that and you will be in to a little surprise.&lt;/p&gt;  &lt;p&gt;Any Microsoft.SharePoint.Client.Silverlight call you make will get you a System.Security.SecurityException: Security error.&lt;/p&gt;  &lt;p&gt;Not a lot of info there, but this is easy to fix and not documented well enough anywhere in all the Silverlight SharePoint development guides I looked at.&lt;/p&gt;  &lt;p&gt;The cause for this error, is that Silverlight blocks cross domain access by default, preventing applications from one domain to invoke requests from another domain, unless the remove domain explicitly allows it.&lt;/p&gt;  &lt;p&gt;To allow that call, Silverlight makes a request to the root of the remote server to read a configuration file named &lt;strong&gt;clientaccesspolicy.xml&lt;/strong&gt;, if this file does not exist – Silverlight checks for a flash configuration policy file instead (but lets focus on pure Silverlight 4 for now.)&lt;/p&gt;  &lt;p&gt;In order to allow cross domain requests to be executed, just put this configuration file in the root of your web application (next to the web.config file):&lt;/p&gt;  &lt;p&gt;file name: clientaccesspolicy.xml&lt;/p&gt; &lt;p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;   &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow-from &lt;/span&gt;&lt;span style="color: red"&gt;http-request-headers&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;   &lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;domain &lt;/span&gt;&lt;span style="color: red"&gt;uri&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;   &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow-from&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;   &lt;br /&gt;   &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;   &lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;include-subpaths&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;   &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;   &lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once you have this file, you should be able to run and debug your Silverlight application from anywhere, making it easy to debug your SharePoint Silverlight applications on either dev, testing or production servers!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Cheers, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/06/accessing-sharepoint-silverlight-4-api.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2193079291574128538</guid><pubDate>Wed, 01 Jun 2011 16:09:00 +0000</pubDate><atom:updated>2011-06-01T09:10:01.442-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><category domain="http://www.blogger.com/atom/ns#">Developer</category><title>Visual Studio 2010 find and replace window too wide</title><description>&lt;p&gt;Do you have that problem too?&lt;/p&gt;  &lt;p&gt;Every once in a while when you hit Ctrl+f the find and replace dialog is way too wide, growing and growing and does not fit your screen?&lt;/p&gt;  &lt;p&gt;Well, you are not alone.&lt;/p&gt;  &lt;p&gt;It seems that every time you close and open this window, it grow just a few pixel wider… So slowly and surly it become ridiculously wide forcing you to tame it, yet once again.&lt;/p&gt;  &lt;p&gt;This has become quite a familiar game for developers – but no more!&lt;/p&gt;  &lt;p&gt;Apparently this is a know issue with a fix available:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/2268081"&gt;http://support.microsoft.com/kb/2268081&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;good luck!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/06/visual-studio-2010-find-and-replace.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-1299183553622572112</guid><pubDate>Tue, 31 May 2011 03:33:00 +0000</pubDate><atom:updated>2011-05-31T06:35:28.604-07:00</atom:updated><title>Web part functional specifications document template</title><description>&lt;div&gt;&lt;div&gt;Hi&lt;/div&gt;&lt;div&gt;Following my last session at the &lt;a href="http://www.meetup.com/TSPBUG/"&gt;Toronto SharePoint Business user group&lt;/a&gt;, here's a link to &lt;a href="http://www.kwizcom.com/objects/designDocs/SharePoint_web_part_functional_specifications_document.docx"&gt;web part functional specifications document template&lt;/a&gt; I've mentioned there.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;The purpose of this template is to help SharePoint business analysts to make sure they fully cover all functional aspects when designing a custom developed web part.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Please feel free to comment. &lt;/div&gt;&lt;div&gt;Coming soon: SharePoint site functional specifications template.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Cheers&lt;/div&gt;&lt;div&gt;Nimrod&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/05/web-part-functional-specifications.html</link><author>noreply@blogger.com (Nimrod Geva)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7670309602186409574</guid><pubDate>Mon, 30 May 2011 21:32:00 +0000</pubDate><atom:updated>2011-05-31T08:58:13.292-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">how to</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Developer</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Setting default value to column in document library</title><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;h2&gt;One question I hear a lot from developers and system designers is “How can I set a default value to a column in a document library”?&lt;/h2&gt;  &lt;p&gt;The same goes for form libraries in SharePoint, Apparently SharePoint does not support default values for document libraries.&lt;/p&gt;  &lt;p&gt;The first thing that comes to mind, as a solution for this predicament, is to build an event handler that will set a default value to the fields you need whenever a new item (document) is added to the library.&lt;/p&gt;  &lt;p&gt;An experienced developer will tell you you should use the &lt;strong&gt;ItemAdding&lt;/strong&gt; event, in order to set the default values to the field during the same update that the user initiated, and under his credentials.&lt;/p&gt;  &lt;p&gt;To do that, you will have to use the &lt;strong&gt;properties.AfterProperties[&amp;quot;FieldName&amp;quot;] = “Default Value”;&lt;/strong&gt; to set your value.&lt;/p&gt;  &lt;p&gt;But – you will be surprised that document libraries, although they do support the &lt;strong&gt;ItemAdding&lt;/strong&gt; event, do not support &lt;strong&gt;properties.AfterProperties&lt;/strong&gt; use. This collection is always empty and ignored in document libraries!&lt;/p&gt;  &lt;p&gt;So, the only solution to set a default value to a field in a document library is by using the &lt;strong&gt;ItemAdded&lt;/strong&gt; event.&lt;/p&gt;  &lt;p&gt;During this event, the &lt;strong&gt;SPListItem&lt;/strong&gt; was already created and is accessible through &lt;strong&gt;properties.ListItem&lt;/strong&gt; property (unlike &lt;strong&gt;ItemAdding&lt;/strong&gt;, that happens before the item was created).&lt;/p&gt;  &lt;p&gt;So, setting the field should be rather easy: &lt;strong&gt;properties.ListItem[“FieldName”] = “Default value”;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;But you will have to update the file manually yourself, since this happens after SharePoint has already processed the update of the item.&lt;/p&gt;  &lt;p&gt;Naturally, you will not want to update the modified date/time, modified by user, and also you will not want to create a new version or emails alerts to be sent out.&lt;/p&gt;  &lt;p&gt;So, instead of using the &lt;strong&gt;properties.ListItem.Update()&lt;/strong&gt; method, use these lines of code:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;base&lt;/span&gt;.DisableEventFiring();&lt;br /&gt;properties.ListItem.SystemUpdate(&lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;base&lt;/span&gt;.EnableEventFiring();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Or the SharePoint 2010 code equivalent:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.EventFiringEnabled = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br /&gt;properties.ListItem.SystemUpdate(&lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.EventFiringEnabled = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This will allow you to use custom code and programmatically set a default value to any SharePoint library column. Note that the same code should also work for SharePoint Lists, but this is supported through the UI or during the &lt;strong&gt;ItemAdding&lt;/strong&gt; event.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For those of you who are not developers, or would rather a 3rd party solution, you can use &lt;a href="http://www.kwizcom.com/sharepoint-add-ons/sharepoint-list-forms-extensions-feature/overview/" target="_blank"&gt;KWizCom List Forms Extension solution&lt;/a&gt; version 2.1.60 or higher, where you can find a settings page that allows you to set advanced default values using this workaround.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;/div&gt;</description><link>http://kwizcom.blogspot.com/2011/05/setting-default-value-to-column-in.html</link><author>noreply@blogger.com (Shai Petel)</author><thr:total>0</thr:total></item></channel></rss>
