Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://tommdaly.wordpress.com/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  9. >
  10.  
  11. <channel>
  12. <title>Thomas Daly&#039;s SharePoint Blog</title>
  13. <atom:link href="https://tommdaly.wordpress.com/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://tommdaly.wordpress.com</link>
  15. <description>blogging stuff from the world of SharePoint &#38; Office 365</description>
  16. <lastBuildDate>Fri, 19 Aug 2016 20:19:23 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>
  19. hourly </sy:updatePeriod>
  20. <sy:updateFrequency>
  21. 1 </sy:updateFrequency>
  22. <generator>http://wordpress.com/</generator>
  23. <cloud domain='tommdaly.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  24. <image>
  25. <url>https://s0.wp.com/i/buttonw-com.png</url>
  26. <title>Thomas Daly&#039;s SharePoint Blog</title>
  27. <link>https://tommdaly.wordpress.com</link>
  28. </image>
  29. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://tommdaly.wordpress.com/osd.xml" title="Thomas Daly&#039;s SharePoint Blog" />
  30. <atom:link rel='hub' href='https://tommdaly.wordpress.com/?pushpress=hub'/>
  31. <item>
  32. <title>SharePoint Framework Developer Preview Release &#8211; Where do I begin?</title>
  33. <link>https://tommdaly.wordpress.com/2016/08/18/sharepoint-framework-developer-preview-release-where-do-i-begin/</link>
  34. <comments>https://tommdaly.wordpress.com/2016/08/18/sharepoint-framework-developer-preview-release-where-do-i-begin/#comments</comments>
  35. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  36. <pubDate>Fri, 19 Aug 2016 01:11:00 +0000</pubDate>
  37. <category><![CDATA[Development]]></category>
  38. <category><![CDATA[JavaScript]]></category>
  39. <category><![CDATA[Office 365]]></category>
  40. <category><![CDATA[On-Prem]]></category>
  41. <category><![CDATA[SharePoint 2013]]></category>
  42. <category><![CDATA[SPFx]]></category>
  43. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=914</guid>
  44.  
  45. <description><![CDATA[This is an exciting time! The much anticipated SharePoint Framework Preview was released yesterday. And guess what … they are essentially Add-ins /Apps. Right now just the web parts piece is released and the end result is an improvement over app parts. The most noteworthy part is that the web parts are now on the &#8230; <a href="https://tommdaly.wordpress.com/2016/08/18/sharepoint-framework-developer-preview-release-where-do-i-begin/" class="more-link">Continue reading <span class="screen-reader-text">SharePoint Framework Developer Preview Release &#8211; Where do I&#160;begin?</span></a>]]></description>
  46. <content:encoded><![CDATA[<p>This is an exciting time! The much anticipated <a href="https://dev.office.com/blogs/sharepoint-framework-developer-preview-release" target="_blank">SharePoint Framework Preview was released yesterday</a>. And guess what … they are essentially Add-ins /Apps. Right now just the web parts piece is released and the end result is an improvement over app parts. The most noteworthy part is that the web parts are now on the page as opposed to being inside of an iframe! They have a couple more improvements like being able to be fully responsive, having web part properties. They mention that new developments will be added frequently and they are targeting a release time frame of early 2017.</p>
  47. <p>The biggest hurdle that I can see for traditional SharePoint developer is the tooling.&nbsp; If you are not comfortable with using a command line, Node.js, NPM, Yeoman or Gulp then you should invest a large chunk of time to familiarize yourself with those technologies. I believe that having a base knowledge of the “What” is actually happening when you type “yo @microsoft/sharepoint” is important.&nbsp; Most modern day front end web developers are already comfortable with these things. For the traditional SharePoint developer most of these things will be foreign and seemingly difficult to grasp at first (for some). </p>
  48. <h4>So you’ve visited the <a href="https://github.com/SharePoint/sp-dev-docs" target="_blank">SharePoint Framework Developer Preview Release git-hub</a> and you’re following the steps but you find yourself scratching your head. What did you miss? What is all this stuff?&nbsp; Where do you begin to even get started?</h4>
  49. <p>First off don’t feel bad.. most people are seeing this for the first time just like you. </p>
  50. <p>&lt;rant&gt; Just the other day I discussed the front end development build process of node/gulp/npm to other day to our Senior SharePoint developers and even they were confused. Some even got pissed off and mad at Microsoft. I can remember the comments clearly, “COMMAND LINE? What year is this?”. I’ve embraced the change and I can see the good things that can come out of it.&nbsp; Getting back to point of this article. &lt;/rant&gt;</p>
  51. <p>I recommend that you take the time to learn about the new tools that they are asking us to adopt. There are ton’s of free online resource on YouTube alone… However if you have or can get your job to pay for a <a href="http://www.pluralsight.com/" target="_blank">Pluralsight</a> you will access to premium content with some of the top authors (this will be more important for the SharePoint work)</p>
  52. <h3>Online resources (free) to help you get familiar with for Node/Gulp/TypeScript/Yeoman</h3>
  53. <li><a href="https://www.youtube.com/watch?v=FVdH9YcB3Dg" target="_blank">Node.js Fundamentals</a></li>
  54. <li><a href="https://www.youtube.com/watch?v=0X_uTNhSxaM" target="_blank">NodeJS &#8211; NPM Package Manager &#8211; Tutorial 2</a></li>
  55. <li><a href="https://www.youtube.com/watch?v=LmdT2zhFmn4" target="_blank">Gulp.js Build System #1 – Fundamentals</a></li>
  56. <li><a href="https://www.youtube.com/watch?v=dwSLFai8ovQ" target="_blank">Gulp – The Basics</a></li>
  57. <li><a href="https://www.youtube.com/watch?v=kCmjN5_wVZU" target="_blank">TypeScript/ES6 Module Syntax Intro</a></li>
  58. <li><a href="http://yeoman.io/" target="_blank">Yeoman – Read first paragraph</a></li>
  59. <p>If you haven’t even started to develop apps or client side web parts using JavaScript then you need to take a look at resources geared towards connecting to SharePoint lists and libraries using the REST end points or the client side JavaScript object model. There are some course that I highly recommend.&nbsp; </p>
  60. <h3>Pluralsight Courses for SharePoint Client Object Model</h3>
  61. <li><strong>David Mann</strong></li>
  62. <li><a title="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript" href="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript">http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript</a></li>
  63. <li><a title="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part2" href="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part2">http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part2</a></li>
  64. <li><a title="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part3" href="http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part3">http://www.pluralsight.com/courses/developing-sharepoint-2013-javascript-part3</a></li>
  65. <li><strong>Rob Windsor</strong></li>
  66. <li><a title="http://www.pluralsight.com/courses/sharepoint-2013-client-object-model-rest" href="http://www.pluralsight.com/courses/sharepoint-2013-client-object-model-rest">http://www.pluralsight.com/courses/sharepoint-2013-client-object-model-rest</a></li>
  67. <li><strong>Rob Windsor, &amp; Sahil Malik</strong></li>
  68. <li><a title="http://www.pluralsight.com/courses/sp2010-client-object-model" href="http://www.pluralsight.com/courses/sp2010-client-object-model">http://www.pluralsight.com/courses/sp2010-client-object-model</a></li>
  69. <h3>Can I just use Visual Studio? PLEASE!@#!@ Do I need to learn all the front end tooling?</h3>
  70. <p>The framework can be intimidating for the people not comfortable with the technologies listed. For the most part you really just need to learn a couple of things and you can get by. TypeScript is not one of those things. Good news for those most comfortable working in Visual Studio. They have documentation on how to get setup <a href="https://github.com/SharePoint/sp-dev-docs/wiki/Working-with-visual-studio" target="_blank">via Visual Studio 2015 (Update 3) here</a>.&nbsp; The bad news is that is still uses Node.js and the Gulp build tasks to compile and build the project. We will just have to wait and see if the process is improved with future releases.</p>
  71. <h3>Ok I got all that…</h3>
  72. <p>After you’ve covered all this then you should walk through the examples. The documentations is very good at explaining how to get everything installed and get up and running with your first Hello World web part. My only piece of advice is to read through everything 1 step at a time. It took me a few reads before I was able to get the first web part to load inside SharePoint. </p>
  73. <h3>Final Thoughts:</h3>
  74. <ul>
  75. <li><a href="http://dev.office.com/devprogram" target="_blank">Get an Office 365 Developer Account</a></li>
  76. <li>Learn the fundamental technologies in play – Node.js, Gulp, Yeoman, Node Package Manager (npm)</li>
  77. <li>Become a <a href="https://www.typescriptlang.org/">TypeScript</a> master</li>
  78. <li>Changes, Updates, Fixes will be coming frequently with a release time frame of 2017 (so they say)</li>
  79. <li>Preview is missing a few things that a traditional deployment would have</li>
  80. <ul>
  81. <li>Examples on how to deploy files to SharePoint / not CDN</li>
  82. <li>Examples on how to deploy assets (List Definitions, Content Types, Site Columns) =&gt; <a href="https://github.com/SharePoint/sp-dev-docs/wiki/Notes-on-Solution-Packaging">Notes on Solutions Packaging</a></li>
  83. </ul>
  84. </ul>
  85. ]]></content:encoded>
  86. <wfw:commentRss>https://tommdaly.wordpress.com/2016/08/18/sharepoint-framework-developer-preview-release-where-do-i-begin/feed/</wfw:commentRss>
  87. <slash:comments>2</slash:comments>
  88. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  89. <media:title type="html">tommdaly</media:title>
  90. </media:content>
  91. </item>
  92. <item>
  93. <title>Change Default SharePoint Site Logo CSS Trick &#8211; Great for Office 365!</title>
  94. <link>https://tommdaly.wordpress.com/2016/08/09/change-default-sharepoint-site-logo-css-trick-great-for-office-365/</link>
  95. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  96. <pubDate>Wed, 10 Aug 2016 01:25:32 +0000</pubDate>
  97. <category><![CDATA[Branding]]></category>
  98. <category><![CDATA[CSS]]></category>
  99. <category><![CDATA[Customizations]]></category>
  100. <category><![CDATA[Office 365]]></category>
  101. <category><![CDATA[On-Prem]]></category>
  102. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=911</guid>
  103.  
  104. <description><![CDATA[I was just thinking about this issue one day and realized that I could just override the default image but if the user decides that they wanted to change it later via site settings they could. Why do I love this trick? You don’t have to set a Site Logo via Site Settings &#62; Title, &#8230; <a href="https://tommdaly.wordpress.com/2016/08/09/change-default-sharepoint-site-logo-css-trick-great-for-office-365/" class="more-link">Continue reading <span class="screen-reader-text">Change Default SharePoint Site Logo CSS Trick &#8211; Great for Office&#160;365!</span></a>]]></description>
  105. <content:encoded><![CDATA[<p>I was just thinking about this issue one day and realized that I could just override the default image but if the user decides that they wanted to change it later via site settings they could.</p>
  106. <h2>Why do I love this trick?</h2>
  107. <ol>
  108. <li>You don’t have to set a Site Logo via Site Settings &gt; Title, description, and logo
  109. <ol>
  110. <li>For On-Prem solutions I would set this via code</li>
  111. <li>For Office 365 you would typically have to do this manually OR powershell to set it across</li>
  112. </ol>
  113. </li>
  114. <li>It’s pure CSS trickery, no change to any markup!
  115. <ol>
  116. <li>This will work across the board On-Prem/Office 365…. No code&#8230;.</li>
  117. </ol>
  118. </li>
  119. <li>Manually setting the Logo you can override this trick
  120. <ol>
  121. <li>For those subsites that don’t want to inherit the logo they can manually set the logo via the Site Settings &gt; Title, description, and logo</li>
  122. <li>Once the logo is set in the default it will override this trick</li>
  123. </ol>
  124. </li>
  125. </ol>
  126. <h2>Get to the trick already!!!!</h2>
  127. <p>Add the following lines of CSS. Only a couple of notes to make this actually work.</p>
  128. <div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:f877060e-1d85-4d1a-9c3e-093923456c21" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
  129. <pre class="brush: css; title: ; notranslate">
  130. img[src*='siteIcon'] {
  131.  
  132. display: block;
  133.  
  134. -moz-box-sizing: border-box;
  135.  
  136. box-sizing: border-box;
  137.  
  138. background: url(‘/Style Library/mySiteLogo.png’) no-repeat; /* Path to the site logo */
  139.  
  140. width: 180px; /* Width of new image */
  141.  
  142. height: 236px; /* Height of new image */
  143.  
  144. padding-left: 180px; /* Equal to width of new image */
  145.  
  146. }
  147.  
  148. .ms-siteicon-img, .ms-siteicon-a {
  149.  
  150. max-height: none;
  151.  
  152. max-width: none;
  153.  
  154. }
  155. </pre>
  156. </div>
  157. <p>Only 2 important detail for this trick to work.</p>
  158. <ol>
  159. <li>You must set the actual image size must equal the information above for this trick to work.</li>
  160. <li><i>DON’T use ‘siteIcon’ in the filename.</i></li>
  161. </ol>
  162. <p>How does this work?</p>
  163. <p>This trick works because it uses CSS to catch onto the &lt;img/&gt; field where the ‘src’ contains ‘siteIcon’. This case catches both the themed site icon on the publishing site and the site icon on the team site. The CSS that performs the replacement of the image comes from <a href="https://css-tricks.com/replace-the-image-in-an-img-with-css/">https://css-tricks.com/replace-the-image-in-an-img-with-css/</a> by <a href="https://twitter.com/marcelshields">Marcel Shields</a>. You can read more about that there.</p>
  164. <ul>
  165. <li>Publishing Site Logo</li>
  166. </ul>
  167. <p><a href="https://tommdaly.files.wordpress.com/2016/08/clip_image002.jpg"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="clip_image002" src="https://tommdaly.files.wordpress.com/2016/08/clip_image002_thumb.jpg?w=685&#038;h=118" alt="clip_image002" width="685" height="118" border="0" /></a></p>
  168. <ul>
  169. <li>Team Site Logo</li>
  170. </ul>
  171. <p><a href="https://tommdaly.files.wordpress.com/2016/08/clip_image004.jpg"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="clip_image004" src="https://tommdaly.files.wordpress.com/2016/08/clip_image004_thumb.jpg?w=680&#038;h=109" alt="clip_image004" width="680" height="109" border="0" /></a></p>
  172. ]]></content:encoded>
  173. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  174. <media:title type="html">tommdaly</media:title>
  175. </media:content>
  176.  
  177. <media:content url="https://tommdaly.files.wordpress.com/2016/08/clip_image002_thumb.jpg" medium="image">
  178. <media:title type="html">clip_image002</media:title>
  179. </media:content>
  180.  
  181. <media:content url="https://tommdaly.files.wordpress.com/2016/08/clip_image004_thumb.jpg" medium="image">
  182. <media:title type="html">clip_image004</media:title>
  183. </media:content>
  184. </item>
  185. <item>
  186. <title>Hide Newsfeed, OneDrive and/or Sites from the Suite Bar &#8211; Ribbon Area for SharePoint 2013</title>
  187. <link>https://tommdaly.wordpress.com/2016/03/05/hide-newsfeed-onedrive-andor-sites-from-the-suite-bar-ribbon-area-for-sharepoint-2013/</link>
  188. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  189. <pubDate>Sat, 05 Mar 2016 22:17:28 +0000</pubDate>
  190. <category><![CDATA[Branding]]></category>
  191. <category><![CDATA[CSS]]></category>
  192. <category><![CDATA[On-Prem]]></category>
  193. <category><![CDATA[SharePoint 2013]]></category>
  194. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=419</guid>
  195.  
  196. <description><![CDATA[It really is super simple and requires I line of CSS per item. If you want to hit them all or any future ones you could hide the whole element. I’m posting this b/c I was looking for a quick fix to do this and all the blogs make you change master pages or something &#8230; <a href="https://tommdaly.wordpress.com/2016/03/05/hide-newsfeed-onedrive-andor-sites-from-the-suite-bar-ribbon-area-for-sharepoint-2013/" class="more-link">Continue reading <span class="screen-reader-text">Hide Newsfeed, OneDrive and/or Sites from the Suite Bar &#8211; Ribbon Area for SharePoint&#160;2013</span></a>]]></description>
  197. <content:encoded><![CDATA[<p>It really is super simple and requires I line of CSS per item. If you want to hit them all or any future ones you could hide the whole element. I’m posting this b/c I was looking for a quick fix to do this and all the blogs make you change master pages or something else wacky. I didn’t have mine enabled and really was being lazy. So here it is.</p>
  198. <p><strong>Hide OneDrive</strong></p>
  199. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellDocuments&#8217;] {</p>
  200. <p>display: none;</p>
  201. <p>}</p>
  202. <p><strong>Hide Newsfeeds </strong></p>
  203. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellNewsfeed&#8217;] {</p>
  204. <p>display: none;</p>
  205. <p>}</p>
  206. <p><strong>Hide Sites</strong></p>
  207. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellSites&#8217;] {</p>
  208. <p>display: none;</p>
  209. <p>}</p>
  210. <p><strong>Get rid of them all in one shot</strong></p>
  211. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellDocuments&#8217;],</p>
  212. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellNewsfeed&#8217;],</p>
  213. <p>#suiteLinksBox .ms-core-suiteLink-a[id$=&#8217;ShellSites&#8217;] {</p>
  214. <p>display: none;</p>
  215. <p>}</p>
  216. <p><strong>Get rid of the anything that could possible go in there </strong></p>
  217. <p>#suiteLinksBox {</p>
  218. <p>display: none;</p>
  219. <p>}</p>
  220. <p>&nbsp;</p>
  221. <p>There you have it folks &#8211; simple css to just pop those items right off the page.</p>
  222. ]]></content:encoded>
  223. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  224. <media:title type="html">tommdaly</media:title>
  225. </media:content>
  226. </item>
  227. <item>
  228. <title>Hiding People from People Search</title>
  229. <link>https://tommdaly.wordpress.com/2016/01/16/hiding-people-from-people-search/</link>
  230. <comments>https://tommdaly.wordpress.com/2016/01/16/hiding-people-from-people-search/#comments</comments>
  231. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  232. <pubDate>Sat, 16 Jan 2016 14:45:09 +0000</pubDate>
  233. <category><![CDATA[Customizations]]></category>
  234. <category><![CDATA[Office 365]]></category>
  235. <category><![CDATA[On-Prem]]></category>
  236. <category><![CDATA[SharePoint 2013]]></category>
  237. <guid isPermaLink="false">http://thomasdaly.net/?p=860</guid>
  238.  
  239. <description><![CDATA[Introduction This all started as a request from a client to hide only certain users from the people search. I&#8217;ve decided on this route because the management interface already exists to update user profiles and it would be very little work to add a user profile property, get it crawled and use that as the &#8230; <a href="https://tommdaly.wordpress.com/2016/01/16/hiding-people-from-people-search/" class="more-link">Continue reading <span class="screen-reader-text">Hiding People from People&#160;Search</span></a>]]></description>
  240. <content:encoded><![CDATA[<h1>Introduction</h1>
  241. <p>This all started as a request from a client to hide only certain users from the people search. I&#8217;ve decided on this route because the management interface already exists to update user profiles and it would be very little work to add a user profile property, get it crawled and use that as the filter in the people search results webpart. Below I will explain how I was able to accomplish this in Office 365 but the same would work for a SharePoint 2013 on prem.</p>
  242. <h1>How To</h1>
  243. <p><span style="color:black;"><strong>In Office 365 -&gt; SharePoint Administration -&gt; User Profiles</strong><br />
  244. </span></p>
  245. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl1.png?w=700" alt="" /><span style="color:black;"><br />
  246. </span></p>
  247. <p><span style="color:black;"><strong>Click &#8220;Manage User Properties&#8221; under the People Group</strong><br />
  248. </span></p>
  249. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl2.png?w=700" alt="" /><span style="color:black;"><br />
  250. </span></p>
  251. <p><span style="color:black;"><strong>Click &#8220;New Property&#8221;</strong><br />
  252. </span></p>
  253. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl3.png?w=700" alt="" /><span style="color:black;"><br />
  254. </span></p>
  255. <p><span style="color:black;"><strong>Set the following properties (everything else leave be)</strong><br />
  256. </span></p>
  257. <p><span style="color:black;"><strong>Name: HideFromPeopleSearch</strong><br />
  258. </span></p>
  259. <p><span style="color:black;"><strong>Display Name: HideFromPeopleSearch</strong><br />
  260. </span></p>
  261. <p><span style="color:black;"><strong>Policy Setting: Optional</strong><br />
  262. </span></p>
  263. <p><span style="color:black;"><strong>Default Privacy Settings: Everyone</strong><br />
  264. </span></p>
  265. <p><span style="color:black;"><strong>Search Settings -&gt; Alias [checked]</strong><br />
  266. </span></p>
  267. <p style="margin-left:54pt;"><span style="color:black;"><strong> -&gt; Indexed [checked]</strong><br />
  268. </span></p>
  269. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl4.png?w=700" alt="" /><span style="color:black;"><br />
  270. </span></p>
  271. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl5.png?w=700" alt="" /><span style="color:black;"><br />
  272. </span></p>
  273. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl6.png?w=700" alt="" /><span style="color:black;"><br />
  274. </span></p>
  275. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl7.png?w=700" alt="" /><span style="color:black;"><br />
  276. </span></p>
  277. <p><span style="color:black;">Click &#8220;OK&#8221;<br />
  278. </span></p>
  279. <p><span style="color:black;">Wait some amount of time for O365 to index the User Profiles and retrieve this new field.<br />
  280. </span></p>
  281. <p><span style="color:red;"><em>** for on prem users – kick off a FULL search crawl of your people content source**<br />
  282. </em></span></p>
  283. <p><span style="color:black;">You&#8217;ll know it&#8217;s ready when you can find the new Property in the Search Schema, Crawled Properties.<br />
  284. </span></p>
  285. <p><span style="color:black;">From the Admin Center click &#8220;search&#8221; in the left hand menu<br />
  286. </span></p>
  287. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl8.png?w=700" alt="" /><span style="color:black;"><br />
  288. </span></p>
  289. <p><span style="color:black;">Click &#8220;Manage Search Schema&#8221;<br />
  290. </span></p>
  291. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl9.png?w=700" alt="" /><span style="color:black;"><br />
  292. </span></p>
  293. <p><span style="color:black;">Click &#8220;Crawled Properties&#8221;<br />
  294. </span></p>
  295. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl10.png?w=700" alt="" /><span style="color:black;"><br />
  296. </span></p>
  297. <p><span style="color:black;">Enter &#8220;Hide&#8221; in the Crawled properties search box, then click the green arrow<br />
  298. </span></p>
  299. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl11.png?w=700" alt="" /><span style="color:black;"><br />
  300. </span></p>
  301. <p><span style="color:black;"><strong>You will see the property appear in the search results when the property has been successfully crawled.</strong><br />
  302. </span></p>
  303. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl12.png?w=700" alt="" /><span style="color:black;"><br />
  304. </span></p>
  305. <p><span style="color:black;"><strong>Next you will need to create a &#8220;Managed Property&#8221;, Click On the &#8220;Managed Properties&#8221; link</strong><br />
  306. </span></p>
  307. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl13.png?w=700" alt="" /><span style="color:black;"><br />
  308. </span></p>
  309. <p><span style="color:black;"><strong>Click &#8220;New Managed Property&#8221;</strong><br />
  310. </span></p>
  311. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl14.png?w=700" alt="" /><span style="color:black;"><br />
  312. </span></p>
  313. <p><span style="color:black;">Enter the following information:<br />
  314. </span></p>
  315. <p><span style="color:black;">Property Name: HideFromPeopleSearch<br />
  316. </span></p>
  317. <p><span style="color:black;">Type: Text<br />
  318. </span></p>
  319. <p><span style="color:black;">Queryable: Checked<br />
  320. </span></p>
  321. <p><span style="color:black;">Retrieveable: Checked<br />
  322. </span></p>
  323. <p><span style="color:black;">Add Property Mapping -&gt; People:HideFromPeopleSearch<br />
  324. </span></p>
  325. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl15.png?w=700" alt="" /><span style="color:black;"><br />
  326. </span></p>
  327. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl16.png?w=700" alt="" /><span style="color:black;"><br />
  328. </span></p>
  329. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl17.png?w=700" alt="" /><span style="color:black;"><br />
  330. </span></p>
  331. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl18.png?w=700" alt="" /><span style="color:black;"><br />
  332. </span></p>
  333. <p><span style="color:black;"><strong>Click Add A Mapping </strong><br />
  334. </span></p>
  335. <p><span style="color:black;"><strong>Enter &#8220;Hide&#8221; in the search box, click the Find button</strong><br />
  336. </span></p>
  337. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl19.png?w=700" alt="" /><span style="color:black;"><br />
  338. </span></p>
  339. <p><span style="color:black;"><strong>Select &#8220;People:HideFromPeopleSearch&#8221;, click the OK button</strong><br />
  340. </span></p>
  341. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl20.png?w=700" alt="" /><span style="color:black;"><br />
  342. </span></p>
  343. <p><span style="color:black;"><strong>Leave all the other properties as-is, click OK</strong><br />
  344. </span></p>
  345. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl21.png?w=700" alt="" /><span style="color:black;"><br />
  346. </span></p>
  347. <p><span style="color:black;"><strong>You will now have to wait until Office 365 runs a full crawl on your site for the property to become available in search. When this action takes place is unknown. (I&#8217;ve head 4 hours)<br />
  348. </strong></span></p>
  349. <p><span style="color:red;"><em>** for on prem users – kick off a FULL search crawl of your site content source**<br />
  350. </em></span></p>
  351. <p><span style="color:black;"><strong>Next go to the people search page</strong><br />
  352. </span></p>
  353. <p><span style="color:black;"><strong>Edit the page and Edit the Web Part Properties of the People Search Core Results </strong><br />
  354. </span></p>
  355. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl22.png?w=700" alt="" /><span style="color:black;"><br />
  356. </span></p>
  357. <p><span style="color:black;"><strong>Click Change Query</strong><br />
  358. </span></p>
  359. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl23.png?w=700" alt="" /><span style="color:black;"><br />
  360. </span></p>
  361. <p><span style="color:black;"><strong>In the Property Filter drop down select &#8211;Show all managed properties&#8211;</strong><br />
  362. </span></p>
  363. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl24.png?w=700" alt="" /><span style="color:black;"><br />
  364. </span></p>
  365. <p><span style="color:black;"><strong>Select HideFromPeopleSearch</strong><br />
  366. </span></p>
  367. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl25.png?w=700" alt="" /><span style="color:black;"><br />
  368. </span></p>
  369. <p><span style="color:black;"><strong>Select &#8220;Not equals&#8221; then &#8220;Manual Value&#8221;</strong><br />
  370. </span></p>
  371. <p><span style="color:black;"><strong>Enter &#8220;True&#8221; for the Manual Value</strong><br />
  372. </span></p>
  373. <p><span style="color:black;"><strong>Next Click Add property filter</strong><br />
  374. </span></p>
  375. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl26.png?w=700" alt="" /><span style="color:black;"><br />
  376. </span></p>
  377. <p><span style="color:black;"><strong>Click OK</strong><br />
  378. </span></p>
  379. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl27.png?w=700" alt="" /><span style="color:black;"><br />
  380. </span></p>
  381. <p><span style="color:black;"><strong>Click OK in the People Search Core Results, Web Part Properties pane</strong><br />
  382. </span></p>
  383. <p><img src="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl28.png?w=700" alt="" /><span style="color:black;"><br />
  384. </span></p>
  385. <p><span style="color:black;"><strong>Save, Check-In &amp; Publish your page &#8211; All Set!</strong><br />
  386. </span></p>
  387. <p>To manage users it&#8217;s as easy as using the User Profile Service Application, searching for a user&#8217;s profile and checking a box to save. Watch the video if you are note sure about that &#8211; <a href="http://screencast.com/t/5VGSLCt5">http://screencast.com/t/5VGSLCt5</a>N</p>
  388. <p><span style="color:red;"><em>Remember it won&#8217;t be instantly removed – it will take a crawl of the people source for those changes to make it to the site!!!</em></span></p>
  389. ]]></content:encoded>
  390. <wfw:commentRss>https://tommdaly.wordpress.com/2016/01/16/hiding-people-from-people-search/feed/</wfw:commentRss>
  391. <slash:comments>2</slash:comments>
  392. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  393. <media:title type="html">tommdaly</media:title>
  394. </media:content>
  395.  
  396. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl1.png" medium="image" />
  397.  
  398. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl2.png" medium="image" />
  399.  
  400. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl3.png" medium="image" />
  401.  
  402. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl4.png" medium="image" />
  403.  
  404. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl5.png" medium="image" />
  405.  
  406. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl6.png" medium="image" />
  407.  
  408. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl7.png" medium="image" />
  409.  
  410. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl8.png" medium="image" />
  411.  
  412. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl9.png" medium="image" />
  413.  
  414. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl10.png" medium="image" />
  415.  
  416. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl11.png" medium="image" />
  417.  
  418. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl12.png" medium="image" />
  419.  
  420. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl13.png" medium="image" />
  421.  
  422. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl14.png" medium="image" />
  423.  
  424. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl15.png" medium="image" />
  425.  
  426. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl16.png" medium="image" />
  427.  
  428. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl17.png" medium="image" />
  429.  
  430. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl18.png" medium="image" />
  431.  
  432. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl19.png" medium="image" />
  433.  
  434. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl20.png" medium="image" />
  435.  
  436. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl21.png" medium="image" />
  437.  
  438. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl22.png" medium="image" />
  439.  
  440. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl23.png" medium="image" />
  441.  
  442. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl24.png" medium="image" />
  443.  
  444. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl25.png" medium="image" />
  445.  
  446. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl26.png" medium="image" />
  447.  
  448. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl27.png" medium="image" />
  449.  
  450. <media:content url="https://tommdaly.files.wordpress.com/2016/01/011616_1444_hidingpeopl28.png" medium="image" />
  451. </item>
  452. <item>
  453. <title>Bootstrap Navigation for Office 365 &#038; SharePoint 2013 using jQuery and REST</title>
  454. <link>https://tommdaly.wordpress.com/2015/10/13/bootstrap-navigation-for-office-365-sharepoint-2013-using-jquery-and-rest/</link>
  455. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  456. <pubDate>Tue, 13 Oct 2015 22:46:24 +0000</pubDate>
  457. <category><![CDATA[Branding]]></category>
  458. <category><![CDATA[Customizations]]></category>
  459. <category><![CDATA[Development]]></category>
  460. <category><![CDATA[JavaScript]]></category>
  461. <category><![CDATA[JQuery]]></category>
  462. <category><![CDATA[Mobile]]></category>
  463. <category><![CDATA[Office 365]]></category>
  464. <category><![CDATA[Responsive]]></category>
  465. <category><![CDATA[SharePoint 2013]]></category>
  466. <guid isPermaLink="false">http://thomasdaly.net/?p=827</guid>
  467.  
  468. <description><![CDATA[Introduction In my last post I talked about making the SharePoint navigation render in a Bootstrap friendly way. I suggested that you could do this by changing the markup of the navigation using an ASP:Repeater to display the nodes. This works great if you&#8217;re on an on-prem environment but on Office 365 you cannot use &#8230; <a href="https://tommdaly.wordpress.com/2015/10/13/bootstrap-navigation-for-office-365-sharepoint-2013-using-jquery-and-rest/" class="more-link">Continue reading <span class="screen-reader-text">Bootstrap Navigation for Office 365 &#38; SharePoint 2013 using jQuery and&#160;REST</span></a>]]></description>
  469. <content:encoded><![CDATA[<h1>Introduction</h1>
  470. <p>In my last post I talked about making the SharePoint navigation render in a Bootstrap friendly way. I suggested that you could do this by changing the markup of the navigation using an ASP:Repeater to display the nodes. This works great if you&#8217;re on an on-prem environment but on Office 365 you cannot use this method because the masterpage cannot contain code blocks. If you haven&#8217;t read that it might be worth taking a look at &#8211; <a href="http://thomasdaly.net/2015/06/28/bootstrap-responsive-navigation-in-sharepoint/">Bootstrap Responsive Navigation in SharePoint</a> .</p>
  471. <p>This post will demonstrate an Office 365 safe version that use JavaScript, jQuery, and REST to retrieve the navigation from SharePoint&#8217;s navigation provider. Once we have that we&#8217;ll render that out to the screen client side. With this approach we can use the out of the box Managed Meta Data navigation provider for the navigation, and we can control the exact rendering so that it fits Bootstrap&#8217;s model for a navigation bar.</p>
  472. <p>The code can be downloaded directly from my git-hub account &#8211; <a href="https://github.com/tom-daly/sp2013-bootstrap-nav">https://github.com/tom-daly/sp2013-bootstrap-nav</a></p>
  473. <h1>Getting Started</h1>
  474. <p>It&#8217;s very simple to get started you only need to do a few things.</p>
  475. <ol>
  476. <li>Add the link to the topNavigation.js in your SharePoint masterpage</li>
  477. </ol>
  478. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna1.png?w=700" alt="" /></p>
  479. <ol>
  480. <li>In the Master Page, add the container below where the navigation will be pushed into. You will need to determine where you want the navigation to go, I&#8217;ll have a full example at the very end.</li>
  481. </ol>
  482. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna2.png?w=700" alt="" /></p>
  483. <ol>
  484. <li>
  485. <div>Switch the SharePoint Navigation to use the Managed Meta Data Navigation</div>
  486. <ol>
  487. <li>In Site Settings</li>
  488. <li>Look and Feel -&gt; Navigation</li>
  489. </ol>
  490. </li>
  491. </ol>
  492. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna3.png?w=700" alt="" /></p>
  493. <p>Once you complete those steps you&#8217;ll have your navigation displayed in that container.</p>
  494. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna4.png?w=700" alt="" /></p>
  495. <h1>Other Details</h1>
  496. <h3>Changing Rendering</h3>
  497. <p>The rendering of the menu is defined in the renderNavigationNodes function. This is currently the format the Bootstrap likes. If you visit the Bootstrap website and take a look at the first example</p>
  498. <p><a href="http://getbootstrap.com/components/#navbar">http://getbootstrap.com/components/#navbar</a></p>
  499. <p>The red box is exactly what the code is injecting. So you would wrap all that however you want it to appear. Follow the examples there are plenty out there.</p>
  500. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna5.png?w=700" alt="" /></p>
  501. <h3>2 Level Flyouts</h3>
  502. <p>Currently this supports only 2 levels, a top level and 1 flyout. This is just what Bootstrap v3.3.5 supports and that&#8217;s what I&#8217;m sticking with currently. If you want more levels then it&#8217;s up to you to figure that part out. It can be done and there are other 3<sup>rd</sup> parties implementing 3<sup>rd</sup> or 4<sup>th</sup> level flyouts after the fact. The code is recursive and will support as many levels as you have, you just need to handle the front end portion.</p>
  503. <h3>The REST Call</h3>
  504. <p>The query that I am using can be seen below. The /web/navigation/topbar endpoint – flat out sucks. It won&#8217;t show if a node is hidden and it didn&#8217;t behave. This is the only one I could get to work reliably.</p>
  505. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna6.png?w=700" alt="" /></p>
  506. <h3>Changing Target Container</h3>
  507. <p>If you want to change where the navigation goes, instead of &#8220;#my-top-navigation&#8221; then you can edit the topNavigation.js file and at the bottom change the selector to another ID preferably.</p>
  508. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna7.png?w=700" alt="" /></p>
  509. <h1>Sample Files</h1>
  510. <p>I have a few more sample files that might be of use to look at.</p>
  511. <p><a href="https://bandr-public.sharepoint.com/TomBlogFiles/base.css">Base.css</a> – Sample CSS file (helps with some Bootstrap/SharePoint resets)</p>
  512. <p><a href="https://bandr-public.sharepoint.com/TomBlogFiles/bootstrap.master">Bootstrap.Master</a> – Sample masterpage used in this example. In this sample I create my own header and not s4-titlerow. Using this html structure you&#8217;ll get the collapsible navigation that is popular on most web sites.</p>
  513. <p><img src="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna8.png?w=700" alt="" /></p>
  514. <h1>Conclusion</h1>
  515. <p>The whole goal of this script was to have a way for an Office 365 site to use the Bootstrap navigation. Although there are still limitations it&#8217;s doable. And you don&#8217;t even necessarily need to touch the master page. You could attach the scripts and css via other methods which I won&#8217;t go in to. So if you&#8217;re an Office 365 purist who doesn&#8217;t want to customize the master page you would want to take an approach to this. I hope this helps someone out there. If there are problems with the script you can report the issues through the github page. <a href="https://github.com/tom-daly/sp2013-bootstrap-nav/issues">https://github.com/tom-daly/sp2013-bootstrap-nav/issues</a></p>
  516. ]]></content:encoded>
  517. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  518. <media:title type="html">tommdaly</media:title>
  519. </media:content>
  520.  
  521. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna1.png" medium="image" />
  522.  
  523. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna2.png" medium="image" />
  524.  
  525. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna3.png" medium="image" />
  526.  
  527. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna4.png" medium="image" />
  528.  
  529. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna5.png" medium="image" />
  530.  
  531. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna6.png" medium="image" />
  532.  
  533. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna7.png" medium="image" />
  534.  
  535. <media:content url="https://tommdaly.files.wordpress.com/2015/10/101315_2246_bootstrapna8.png" medium="image" />
  536. </item>
  537. <item>
  538. <title>Bootstrap Responsive Navigation in SharePoint</title>
  539. <link>https://tommdaly.wordpress.com/2015/06/28/bootstrap-responsive-navigation-in-sharepoint/</link>
  540. <comments>https://tommdaly.wordpress.com/2015/06/28/bootstrap-responsive-navigation-in-sharepoint/#comments</comments>
  541. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  542. <pubDate>Mon, 29 Jun 2015 03:19:00 +0000</pubDate>
  543. <category><![CDATA[Branding]]></category>
  544. <category><![CDATA[Customizations]]></category>
  545. <category><![CDATA[JQuery]]></category>
  546. <category><![CDATA[Mobile]]></category>
  547. <category><![CDATA[On-Prem]]></category>
  548. <category><![CDATA[Responsive]]></category>
  549. <category><![CDATA[SharePoint 2013]]></category>
  550. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=785</guid>
  551.  
  552. <description><![CDATA[Introduction Many of my most recent branding projects have all been responsive. Clients are building sites that they want to work on desktops, tablets, &#38; phones. If you’ve ever tried to deal with this request and SharePoint is your platform then you know what a handful this can be. For all my responsive branding projects &#8230; <a href="https://tommdaly.wordpress.com/2015/06/28/bootstrap-responsive-navigation-in-sharepoint/" class="more-link">Continue reading <span class="screen-reader-text">Bootstrap Responsive Navigation in&#160;SharePoint</span></a>]]></description>
  553. <content:encoded><![CDATA[<h1>Introduction</h1>
  554. <p>Many of my most recent branding projects have all been responsive. Clients are building sites that they want to work on desktops, tablets, &amp; phones. If you’ve ever tried to deal with this request and SharePoint is your platform then you know what a handful this can be. For all my responsive branding projects I always go to <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a>. If you don’t know what that is then this article is not for you. We will not going into the details of implementing Bootstrap or the issues / fixes to do that.  If you’re looking for cookie cutter bootstrap in SharePoint then I recommend that you check out <a href="https://responsivesharepoint.codeplex.com/" target="_blank">Responsive SharePoint</a>.</p>
  555. <p>This article we will simply focus on the navigation. We will be replicating the standard out of the box (OOTB) SharePoint navigation and formatting it in a way that works with Bootstrap 3.0. I’ll provide you with the code snippet and an explanation of how to implement, and what is happening. It should leave you with the functionality of the Bootstrap’s collapsible navigation.</p>
  556. <p>Our main problems with the SharePoint navigation are:</p>
  557. <ul>
  558. <ul>
  559. <li>SharePoint out of the box navigation is NOT responsive</li>
  560. <li>SharePoint out of the box navigation doesn’t work well with touch enabled devices
  561. <ul>
  562. <li>It has hover actions on the navigation, and hover doesn’t work on touch devices</li>
  563. </ul>
  564. </li>
  565. </ul>
  566. </ul>
  567. <p><a href="https://tommdaly.files.wordpress.com/2015/06/b.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="b" src="https://tommdaly.files.wordpress.com/2015/06/b_thumb.png?w=207&#038;h=196" alt="b" width="207" height="196" border="0" /></a></p>
  568. <h1>Prerequisites</h1>
  569. <p>The following need to be reference in your site.</p>
  570. <ul>
  571. <li><a href="https://jquery.com/" target="_blank">jQuery</a></li>
  572. <li><a href="http://getbootstrap.com/" target="_blank">Bootstrap 3.0</a></li>
  573. <li>On-Prem SharePoint environment w/ access to the Masterpage</li>
  574. <li>
  575. <ul>
  576. <li>You can see the references these in my master page</li>
  577. </ul>
  578. </li>
  579. </ul>
  580. <p><em><span style="color:#000000;background-color:#f79646;">SORRY SharePoint Onliner’s and O365’s – this won’t work b/c you can’t use code blocks in the MasterPage</span></em></p>
  581. <p><a href="https://tommdaly.files.wordpress.com/2015/06/ref.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="ref" src="https://tommdaly.files.wordpress.com/2015/06/ref_thumb.png?w=1243&#038;h=138" alt="ref" width="1243" height="138" border="0" /></a></p>
  582. <h1>The Navigation Code</h1>
  583. <p>You can view the html markup that Bootstrap requires in order to work properly &#8211; <a title="http://getbootstrap.com/components/#navbar" href="http://getbootstrap.com/components/#navbar">http://getbootstrap.com/components/#navbar</a> . The OOTB SharePoint navigation does its own thing so it would never work with Bootstrap. In this approach we’ll use the SharePoint top navigation provider but we’ll create our own navigation markup using asp repeaters. The following code will only work for 2 levels deep, it could be modified to work on X number of levels. You would just have to keep nesting repeaters. I am using ASP repeaters in the master page with no code behind in this approach. If you wanted to you could write a user control and simplify what goes into the master page but for me no C# code means less things that could break. There is one minor issue with this approach – see the Known Issues section.</p>
  584. <h1><a href="https://dl.dropboxusercontent.com/u/24839514/TomBlogFiles/bootstrap-nav.txt" target="_blank">Download Snippet Here</a></h1>
  585. <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:5fb4fe61-5349-431e-a939-2a8271ba3c97" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
  586. <div><span style="color:#008080;"> 1</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">nav </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;navbar navbar-default s4-notdlg noindex s4-noindex&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 2</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">div </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;container&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 3</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> Brand and toggle get grouped for better mobile display </span><span style="color:#008000;">&#8211;&gt;</span> <span style="color:#008080;"> 4</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">div </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;navbar-header&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 5</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">button </span><span style="color:#ff0000;">type</span><span style="color:#0000ff;">=&#8221;button&#8221;</span><span style="color:#ff0000;"> class</span><span style="color:#0000ff;">=&#8221;navbar-toggle collapsed&#8221;</span><span style="color:#ff0000;"> data-toggle</span><span style="color:#0000ff;">=&#8221;collapse&#8221;</span><span style="color:#ff0000;"> data-target</span><span style="color:#0000ff;">=&#8221;#bs-example-navbar-collapse-1&#8243;</span><span style="color:#ff0000;"> aria-expanded</span><span style="color:#0000ff;">=&#8221;false&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 6</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;sr-only&#8221;</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">Toggle navigation</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 7</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;icon-bar&#8221;</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 8</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;icon-bar&#8221;</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;"> 9</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;icon-bar&#8221;</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">10</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">button</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">11</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">SharePoint:SPLinkButton </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> NavigateUrl</span><span style="color:#0000ff;">=&#8221;~sitecollection/&#8221;</span><span style="color:#ff0000;"> ID</span><span style="color:#0000ff;">=&#8221;onetidProjectPropertyTitleGraphic&#8221;</span><span style="color:#ff0000;"> CssClass</span><span style="color:#0000ff;">=&#8221;navbar-brand&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">12</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">SharePoint:SiteLogoImage </span><span style="color:#ff0000;">name</span><span style="color:#0000ff;">=&#8221;onetidHeadbnnr0&#8243;</span><span style="color:#ff0000;"> ID</span><span style="color:#0000ff;">=&#8221;onetidHeadbnnr2&#8243;</span><span style="color:#ff0000;"> LogoImageUrl</span><span style="color:#0000ff;">=&#8221;images/logo.png&#8221;</span><span style="color:#ff0000;"> runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">SharePoint:SiteLogoImage</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">13</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">SharePoint:SPLinkButton</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">14</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">div</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">15</span> <span style="color:#008080;">16</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">div </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;collapse navbar-collapse&#8221;</span><span style="color:#ff0000;"> id</span><span style="color:#0000ff;">=&#8221;bs-example-navbar-collapse-1&#8243;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">17</span> <span style="color:#008080;">18</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">asp:Repeater </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> ID</span><span style="color:#0000ff;">=&#8221;TopNavMenu&#8221;</span><span style="color:#ff0000;"> DataSourceID</span><span style="color:#0000ff;">=&#8221;topSiteMap&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">19</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">HeaderTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">20</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ul </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;nav navbar-nav navbar-right&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">21</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">HeaderTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">22</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">23</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">li </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> class</span><span style="color:#0000ff;">=&#8221;root-node&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">24</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">a </span><span style="color:#ff0000;">href</span><span style="color:#0000ff;">=&#8221;&lt;%# Eval(&#8220;</span><span style="color:#ff0000;">Url&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8220;&gt; </span><span style="color:#008080;">25</span> <span style="background-color:#ffff00;color:#000000;">&lt;%</span><span style="background-color:#f5f5f5;color:#000000;"># </span><span style="background-color:#f5f5f5;color:#0000ff;">Eval</span><span style="background-color:#f5f5f5;color:#000000;">(</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">Title</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;">) </span><span style="background-color:#ffff00;color:#000000;">%&gt;</span> <span style="color:#008080;">26</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">a</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">27</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">li</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">28</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">asp:Repeater </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> ID</span><span style="color:#0000ff;">=&#8221;FirstLevelNodes&#8221;</span><span style="color:#ff0000;"> DataSource</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode)Container.DataItem).ChildNodes %&gt;&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">29</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">30</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> if has children </span><span style="color:#008000;">&#8211;&gt;</span> <span style="color:#008080;">31</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">li </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> visible</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode) Container.DataItem).ChildNodes.Count &gt; 0 %&gt;&#8221;</span><span style="color:#ff0000;"> data-node-count</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode)((RepeaterItem)Container.Parent.Parent).DataItem).ChildNodes.Count %&gt;&#8221;</span><span style="color:#ff0000;"> data-node-index</span><span style="color:#0000ff;">=&#8221;&lt;%# Container.ItemIndex %&gt;&#8221;</span><span style="color:#ff0000;"> class</span><span style="color:#0000ff;">='&lt;%# </span><span style="color:#ff0000;">Container.ItemIndex </span><span style="color:#0000ff;">== </span><span style="color:#ff0000;">((SiteMapNode)((RepeaterItem)Container.Parent.Parent).DataItem).ChildNodes.Count-1 ? &#8220;dropdown last-node nav-node&#8221; : (Container.ItemIndex </span><span style="color:#0000ff;">== </span><span style="color:#ff0000;">0 ? &#8220;dropdown first-node nav-node&#8221; : &#8220;dropdown nav-node&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8216;&gt; </span><span style="color:#008080;">32</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">a </span><span style="color:#ff0000;">href</span><span style="color:#0000ff;">=&#8221;&lt;%# Eval(&#8220;</span><span style="color:#ff0000;">Url&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8221; class=&#8221;dropdown-toggle&#8221; data-toggle=&#8221;dropdown&#8221; role=&#8221;button&#8221; aria-expanded=&#8221;false&#8221;&gt; </span><span style="color:#008080;">33</span> <span style="background-color:#ffff00;color:#000000;">&lt;%</span><span style="background-color:#f5f5f5;color:#000000;"># </span><span style="background-color:#f5f5f5;color:#0000ff;">Eval</span><span style="background-color:#f5f5f5;color:#000000;">(</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">Title</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;">) </span><span style="background-color:#ffff00;color:#000000;">%&gt;</span> <span style="color:#008080;">34</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;caret&#8221;</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">35</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">a</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">36</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">asp:Repeater </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> ID</span><span style="color:#0000ff;">=&#8221;ChildMenuRepeater&#8221;</span><span style="color:#ff0000;"> DataSource</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode)Container.DataItem).ChildNodes %&gt;&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">37</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">HeaderTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">38</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ul </span><span style="color:#ff0000;">class</span><span style="color:#0000ff;">=&#8221;dropdown-menu&#8221;</span><span style="color:#ff0000;"> role</span><span style="color:#0000ff;">=&#8221;menu&#8221;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">39</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">HeaderTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">40</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">41</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">li </span><span style="color:#ff0000;">data-node-index</span><span style="color:#0000ff;">=&#8221;&lt;%# Container.ItemIndex %&gt;&#8221;</span><span style="color:#ff0000;"> class</span><span style="color:#0000ff;">=&#8217;nav-node&#8217;</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">42</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">a </span><span style="color:#ff0000;">href</span><span style="color:#0000ff;">=&#8221;&lt;%# Eval(&#8220;</span><span style="color:#ff0000;">Url&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8220;&gt; </span><span style="color:#008080;">43</span> <span style="background-color:#ffff00;color:#000000;">&lt;%</span><span style="background-color:#f5f5f5;color:#000000;"># </span><span style="background-color:#f5f5f5;color:#0000ff;">Eval</span><span style="background-color:#f5f5f5;color:#000000;">(</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">Title</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;">) </span><span style="background-color:#ffff00;color:#000000;">%&gt;</span> <span style="color:#008080;">44</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">a</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">45</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">li</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">46</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">47</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">FooterTemplate</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">ul</span><span style="color:#0000ff;">&gt;&lt;/</span><span style="color:#800000;">FooterTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">48</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">asp:Repeater</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">49</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">li</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">50</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> if has zero children </span><span style="color:#008000;">&#8211;&gt;</span> <span style="color:#008080;">51</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">li </span><span style="color:#ff0000;">runat</span><span style="color:#0000ff;">=&#8221;server&#8221;</span><span style="color:#ff0000;"> visible</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode) Container.DataItem).ChildNodes.Count &lt;= 0 %&gt;&#8221;</span><span style="color:#ff0000;"> data-node-count</span><span style="color:#0000ff;">=&#8221;&lt;%# ((SiteMapNode)((RepeaterItem)Container.Parent.Parent).DataItem).ChildNodes.Count %&gt;&#8221;</span><span style="color:#ff0000;"> data-node-index</span><span style="color:#0000ff;">=&#8221;&lt;%# Container.ItemIndex %&gt;&#8221;</span><span style="color:#ff0000;"> class</span><span style="color:#0000ff;">='&lt;%# </span><span style="color:#ff0000;">Container.ItemIndex </span><span style="color:#0000ff;">== </span><span style="color:#ff0000;">((SiteMapNode)((RepeaterItem)Container.Parent.Parent).DataItem).ChildNodes.Count-1 ? &#8220;last-node nav-node&#8221; : (Container.ItemIndex </span><span style="color:#0000ff;">== </span><span style="color:#ff0000;">0 ? &#8220;first-node nav-node&#8221; : &#8220;nav-node&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8216; &gt; </span><span style="color:#008080;">52</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">a </span><span style="color:#ff0000;">href</span><span style="color:#0000ff;">=&#8221;&lt;%# Eval(&#8220;</span><span style="color:#ff0000;">Url&#8221;) %</span><span style="color:#0000ff;">&gt;</span><span style="color:#000000;">&#8220;&gt; </span><span style="color:#008080;">53</span> <span style="background-color:#ffff00;color:#000000;">&lt;%</span><span style="background-color:#f5f5f5;color:#000000;"># </span><span style="background-color:#f5f5f5;color:#0000ff;">Eval</span><span style="background-color:#f5f5f5;color:#000000;">(</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">Title</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;">) </span><span style="background-color:#ffff00;color:#000000;">%&gt;</span> <span style="color:#008080;">54</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">a</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">55</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">li</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">56</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">57</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">asp:Repeater</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">58</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ItemTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">59</span> <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">FooterTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">60</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ul</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">61</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">FooterTemplate</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">62</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">asp:Repeater</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">63</span> <span style="color:#008080;">64</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">div</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">65</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> /.navbar-collapse </span><span style="color:#008000;">&#8211;&gt;</span> <span style="color:#008080;">66</span> <span style="color:#008080;">67</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">div</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">68</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> end container </span><span style="color:#008000;">&#8211;&gt;</span> <span style="color:#008080;">69</span> <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">nav</span><span style="color:#0000ff;">&gt;</span> <span style="color:#008080;">70</span> <span style="color:#008000;">&lt;!&#8211;</span><span style="color:#008000;"> end nav-bar </span><span style="color:#008000;">&#8211;&gt;</span></div>
  587. <p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></p>
  588. </div>
  589. <p>Take a look at how this renders, much better.</p>
  590. <p><a href="https://tommdaly.files.wordpress.com/2015/06/render.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="render" src="https://tommdaly.files.wordpress.com/2015/06/render_thumb.png?w=1259&#038;h=804" alt="render" width="1259" height="804" border="0" /></a></p>
  591. <p>And when the screen hits the break point. It collapses and you have the mobile friendly menu. The break point is set in the bootstrap CSS (I believe it is 768px). The menu below is also</p>
  592. <p><a href="https://tommdaly.files.wordpress.com/2015/06/resp1.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="resp1" src="https://tommdaly.files.wordpress.com/2015/06/resp1_thumb.png?w=762&#038;h=210" alt="resp1" width="762" height="210" border="0" /></a></p>
  593. <p>And the drop down</p>
  594. <p><a href="https://tommdaly.files.wordpress.com/2015/06/resp2.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="resp2" src="https://tommdaly.files.wordpress.com/2015/06/resp2_thumb.png?w=763&#038;h=363" alt="resp2" width="763" height="363" border="0" /></a></p>
  595. <h1>The Code Explained</h1>
  596. <p><em>You can skip this part if you don’t care what the code snippet actually does. I’ll break it down into parts to help you understand so you can make changes to it.</em></p>
  597. <h2>1) It’s up to you to determine where you are going to put the navigation inside your masterpage</h2>
  598. <p>In my particular case below I’ve created my own custom header where I put the navbar. I then turn the visibility off on the PlaceHolderTopNavBar (line 543)</p>
  599. <p><a href="https://tommdaly.files.wordpress.com/2015/06/ex.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="ex" src="https://tommdaly.files.wordpress.com/2015/06/ex_thumb.png?w=990&#038;h=573" alt="ex" width="990" height="573" border="0" /></a></p>
  600. <h2>2) Looking at just the very high level bootstrap nav html</h2>
  601. <p><a href="https://tommdaly.files.wordpress.com/2015/06/boot1.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="boot1" src="https://tommdaly.files.wordpress.com/2015/06/boot1_thumb.png?w=1227&#038;h=469" alt="boot1" width="1227" height="469" border="0" /></a></p>
  602. <h2>3) The Root Level Repeater</h2>
  603. <p>The first level I consider the root level. It contains the root navigation node typically “Home”. Below is the best representation of how the data comes back from the topSiteMap navigation provider. Each color is a level. The children of “Home” are the main level. This is similar to the OOTB, you might have seen the first node that isn’t in the navigation provider but just shows up anyway.</p>
  604. <p><a href="https://tommdaly.files.wordpress.com/2015/06/nav123.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="nav123" src="https://tommdaly.files.wordpress.com/2015/06/nav123_thumb.png?w=297&#038;h=219" alt="nav123" width="297" height="219" border="0" /></a> <a href="https://tommdaly.files.wordpress.com/2015/06/nav1234.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="nav1234" src="https://tommdaly.files.wordpress.com/2015/06/nav1234_thumb.png?w=445&#038;h=385" alt="nav1234" width="445" height="385" border="0" /></a></p>
  605. <p>Now for the root level. In this screen shot you can see I render the root node then have a second repeater for its children nodes. The html is fairly simple for the first node and gets more involved for the next level.</p>
  606. <p><a href="https://tommdaly.files.wordpress.com/2015/06/zerolevel.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="zerolevel" src="https://tommdaly.files.wordpress.com/2015/06/zerolevel_thumb.png?w=847&#038;h=357" alt="zerolevel" width="847" height="357" border="0" /></a></p>
  607. <h2>4) The First Level Repeater</h2>
  608. <p>This level gets a bit more interesting because now we have two different classifications of nav nodes, with children and without children. We have to handle each a slight bit different and I’ll explain. If you have children we need to specify a different class to have a drop down. Next it needs a nested repeater to handle the next level (2nd level). If there are no children we can simply just render the navigation node just as we did with the root level. I use the ChildNodes.Count to determine which to hide or show. You might notice that the</p>
  609. <ul>
  610. <li>’s, line 487 &amp; 507, have some other attributes like data-node-count and data-node-index and are REALLY long.  I’ll explain that in the next section.</li>
  611. </ul>
  612. <p><a href="https://tommdaly.files.wordpress.com/2015/06/level_one.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="level_one" src="https://tommdaly.files.wordpress.com/2015/06/level_one_thumb.png?w=1240&#038;h=298" alt="level_one" width="1240" height="298" border="0" /></a></p>
  613. <h2>4a) First Level</h2>
  614. <ul>
  615. <li>’s</li>
  616. </ul>
  617. <p>Let’s examine the first</p>
  618. <ul>
  619. <li>the one with children. They are both the same except for the visible attr. We are going to focus on the following attributes, data-node-count, data-node-index, &amp; class.</li>
  620. </ul>
  621. <p>data-node-count – is not needed, but this will tell you how many sibling nodes are detected. I used this to help generate the if statements for class.</p>
  622. <p>data-node-index – is not needed, but this will tell you the index of the node in amongst it’s current siblings. I used this to help generate the if statements for class.</p>
  623. <p><a href="https://tommdaly.files.wordpress.com/2015/06/a.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="a" src="https://tommdaly.files.wordpress.com/2015/06/a_thumb.png?w=1266&#038;h=70" alt="a" width="1266" height="70" border="0" /></a></p>
  624. <p>class – this is basically a fancy edition I added which provides a first-node and last-node class. Again you’ll notice this one has “dropdown” in the class, the other</p>
  625. <ul>
  626. <li>won’t because it doesn’t have children and doesn’t need a drop down.</li>
  627. </ul>
  628. <ul>
  629. <ul>
  630. <li>The first node of a set will have the class=“dropdown first-node nav-node”</li>
  631. <li>The middle nodes would have the class=”dropdown nav-node”</li>
  632. <li>The last node would have the class=”dropdown last-node nav-node”</li>
  633. </ul>
  634. </ul>
  635. <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:a5f21f34-d47f-470a-98be-84a3eef5d627" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
  636. <div><span style="color:#008080;">1</span> <span style="color:#000000;">class=&#8217;</span><span style="background-color:#ffff00;color:#000000;">&lt;%</span><span style="background-color:#f5f5f5;color:#000000;"># Container.ItemIndex </span><span style="background-color:#f5f5f5;color:#000000;">==</span><span style="background-color:#f5f5f5;color:#000000;"> ((SiteMapNode)((RepeaterItem)Container.Parent.Parent).DataItem).ChildNodes.Count</span><span style="background-color:#f5f5f5;color:#000000;">&#8211;</span><span style="background-color:#f5f5f5;color:#800080;">1</span><span style="background-color:#f5f5f5;color:#000000;"> ? </span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">dropdown last-node nav-node</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;"> : (Container.ItemIndex </span><span style="background-color:#f5f5f5;color:#000000;">==</span> <span style="background-color:#f5f5f5;color:#800080;">0</span><span style="background-color:#f5f5f5;color:#000000;"> ? </span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">dropdown first-node nav-node</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;"> : </span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#800000;">dropdown nav-node</span><span style="background-color:#f5f5f5;color:#800000;">&#8220;</span><span style="background-color:#f5f5f5;color:#000000;">) </span><span style="background-color:#ffff00;color:#000000;">%&gt;</span><span style="color:#000000;">&#8216;&gt;</span></div>
  637. <p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></p>
  638. </div>
  639. <h2>5) The Second Level Repeater</h2>
  640. <p>The second level repeater code gets a little simpler. This is our last level and we don’t consider if the node has children or not. We just render the value of the node and leave it at that. If you wanted to go 3, 4 or 5 levels essentially it’s just copy what we’ve already done but I wouldn’t go more than 2 levels. Bootstrap 3.0 removed  support for multilevel dropdowns, citing usability issues as the cause.  You would be on your own if you decided to go for more levels. There are 3rd party plugins available to assist Bootstrap 3.0 with multi levels.</p>
  641. <p><a href="https://tommdaly.files.wordpress.com/2015/06/second_level.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" title="second_level" src="https://tommdaly.files.wordpress.com/2015/06/second_level_thumb.png?w=1136&#038;h=214" alt="second_level" width="1136" height="214" border="0" /></a></p>
  642. <h1>Known Issues</h1>
  643. <p>You expected everything to work beautifully, I know! But there is always a gotcha! when it comes to SharePoint.</p>
  644. <p>The only issue with this method is that you loose the selected state of the navigation. This is easily over come with supplemental jQuery. You’re only other alternative is to convert this all to a user control (like I mentioned way earlier) and then in code what page you are on and add a class. <em><strong>I don’t have the reference to this method – but I’m looking. To be posted later. </strong></em></p>
  645. <p>Here is my jQuery work around – for highlighting the navigation for a selected node.</p>
  646. <h1><a href="https://dl.dropboxusercontent.com/u/24839514/TomBlogFiles/bootstrap-nav-script.js" target="_blank">Download Script Here</a></h1>
  647. <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:51e62046-af55-467b-a2a0-91e765c7c233" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
  648. <div><span style="color:#008080;"> 1</span> <span style="color:#000000;">$(document).ready(</span><span style="color:#0000ff;">function</span><span style="color:#000000;">() { </span><span style="color:#008080;"> 2</span> <span style="color:#0000ff;">var</span><span style="color:#000000;"> nav </span><span style="color:#000000;">=</span><span style="color:#000000;"> $(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">.nav</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">); </span><span style="color:#008080;"> 3</span> <span style="color:#0000ff;">if</span><span style="color:#000000;"> (nav </span><span style="color:#000000;">==</span> <span style="color:#0000ff;">null</span> <span style="color:#000000;">||</span> <span style="color:#0000ff;">typeof</span><span style="color:#000000;"> (nav) </span><span style="color:#000000;">==</span> <span style="color:#000000;">&#8216;</span><span style="color:#000000;">undefined</span><span style="color:#000000;">&#8216;</span><span style="color:#000000;">) </span><span style="color:#0000ff;">return</span><span style="color:#000000;">; </span><span style="color:#008080;"> 4</span> <span style="color:#008080;"> 5</span> <span style="color:#008000;">/*</span><span style="color:#008000;"> Match navigation on current page </span><span style="color:#008000;">*/</span> <span style="color:#008080;"> 6</span> <span style="color:#0000ff;">var</span><span style="color:#000000;"> url </span><span style="color:#000000;">=</span><span style="color:#000000;"> window.location.href.toLowerCase(); </span><span style="color:#008080;"> 7</span> <span style="color:#0000ff;">var</span><span style="color:#000000;"> decUrl </span><span style="color:#000000;">=</span><span style="color:#000000;"> decodeURI(url); </span><span style="color:#008080;"> 8</span> <span style="color:#000000;"> nav.find(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">li &gt; a</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">).each(</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> () { </span><span style="color:#008080;"> 9</span> <span style="color:#008080;">10</span> <span style="color:#0000ff;">var</span><span style="color:#000000;"> href </span><span style="color:#000000;">=</span><span style="color:#000000;"> $(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">).attr(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">href</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">).toLowerCase(); </span><span style="color:#008080;">11</span> <span style="color:#0000ff;">var</span><span style="color:#000000;"> decHref </span><span style="color:#000000;">=</span><span style="color:#000000;"> decodeURI(href); </span><span style="color:#008080;">12</span> <span style="color:#008080;">13</span> <span style="color:#0000ff;">if</span><span style="color:#000000;"> (decUrl.indexOf(decHref) </span><span style="color:#000000;">!=</span> <span style="color:#000000;">&#8211;</span><span style="color:#000000;">1</span><span style="color:#000000;">) { </span><span style="color:#008080;">14</span> <span style="color:#000000;"> $(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">).addClass(</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">active</span><span style="color:#000000;">&#8220;</span><span style="color:#000000;">); </span><span style="color:#008080;">15</span> <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">false</span><span style="color:#000000;">; </span><span style="color:#008080;">16</span> <span style="color:#000000;"> } </span><span style="color:#008080;">17</span> <span style="color:#000000;"> }); </span><span style="color:#008080;">18</span> <span style="color:#000000;">});</span></div>
  649. <p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></p>
  650. </div>
  651. <h1>Conclusion</h1>
  652. <p>That explains how I was able to utilize the SharePoint out of the box top navigation provider and build a new menu with ASP repeaters to behave responsively and work with Bootstrap 3.0. This is a simple enhancement that I’ve been re-using on many on of my On-Prem responsive projects. Unfortunately this doesn’t not work for SharePoint Online or O365 as the Masterpage does not allow code blocks. I’m curious if that’s with only editing pages by SharePoint designer, but what about deployed through wsp. <a title="http://stackoverflow.com/questions/22566589/sharepoint-master-page-asprepeater-tag" href="http://stackoverflow.com/questions/22566589/sharepoint-master-page-asprepeater-tag">http://stackoverflow.com/questions/22566589/sharepoint-master-page-asprepeater-tag</a> . I hope to uncover an answer either way. Thanks for reading!</p>
  653. ]]></content:encoded>
  654. <wfw:commentRss>https://tommdaly.wordpress.com/2015/06/28/bootstrap-responsive-navigation-in-sharepoint/feed/</wfw:commentRss>
  655. <slash:comments>5</slash:comments>
  656. <media:thumbnail url="https://tommdaly.files.wordpress.com/2015/06/b_thumb.png" />
  657. <media:content url="https://tommdaly.files.wordpress.com/2015/06/b_thumb.png" medium="image">
  658. <media:title type="html">b_thumb.png</media:title>
  659. </media:content>
  660.  
  661. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  662. <media:title type="html">tommdaly</media:title>
  663. </media:content>
  664.  
  665. <media:content url="https://tommdaly.files.wordpress.com/2015/06/b_thumb.png" medium="image">
  666. <media:title type="html">b</media:title>
  667. </media:content>
  668.  
  669. <media:content url="https://tommdaly.files.wordpress.com/2015/06/ref_thumb.png" medium="image">
  670. <media:title type="html">ref</media:title>
  671. </media:content>
  672.  
  673. <media:content url="https://tommdaly.files.wordpress.com/2015/06/render_thumb.png" medium="image">
  674. <media:title type="html">render</media:title>
  675. </media:content>
  676.  
  677. <media:content url="https://tommdaly.files.wordpress.com/2015/06/resp1_thumb.png" medium="image">
  678. <media:title type="html">resp1</media:title>
  679. </media:content>
  680.  
  681. <media:content url="https://tommdaly.files.wordpress.com/2015/06/resp2_thumb.png" medium="image">
  682. <media:title type="html">resp2</media:title>
  683. </media:content>
  684.  
  685. <media:content url="https://tommdaly.files.wordpress.com/2015/06/ex_thumb.png" medium="image">
  686. <media:title type="html">ex</media:title>
  687. </media:content>
  688.  
  689. <media:content url="https://tommdaly.files.wordpress.com/2015/06/boot1_thumb.png" medium="image">
  690. <media:title type="html">boot1</media:title>
  691. </media:content>
  692.  
  693. <media:content url="https://tommdaly.files.wordpress.com/2015/06/nav123_thumb.png" medium="image">
  694. <media:title type="html">nav123</media:title>
  695. </media:content>
  696.  
  697. <media:content url="https://tommdaly.files.wordpress.com/2015/06/nav1234_thumb.png" medium="image">
  698. <media:title type="html">nav1234</media:title>
  699. </media:content>
  700.  
  701. <media:content url="https://tommdaly.files.wordpress.com/2015/06/zerolevel_thumb.png" medium="image">
  702. <media:title type="html">zerolevel</media:title>
  703. </media:content>
  704.  
  705. <media:content url="https://tommdaly.files.wordpress.com/2015/06/level_one_thumb.png" medium="image">
  706. <media:title type="html">level_one</media:title>
  707. </media:content>
  708.  
  709. <media:content url="https://tommdaly.files.wordpress.com/2015/06/a_thumb.png" medium="image">
  710. <media:title type="html">a</media:title>
  711. </media:content>
  712.  
  713. <media:content url="https://tommdaly.files.wordpress.com/2015/06/second_level_thumb.png" medium="image">
  714. <media:title type="html">second_level</media:title>
  715. </media:content>
  716. </item>
  717. <item>
  718. <title>Office 365 Icons</title>
  719. <link>https://tommdaly.wordpress.com/2015/06/24/office-365-icons/</link>
  720. <comments>https://tommdaly.wordpress.com/2015/06/24/office-365-icons/#comments</comments>
  721. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  722. <pubDate>Wed, 24 Jun 2015 15:52:00 +0000</pubDate>
  723. <category><![CDATA[Branding]]></category>
  724. <category><![CDATA[CSS]]></category>
  725. <category><![CDATA[Customizations]]></category>
  726. <category><![CDATA[Office 365]]></category>
  727. <category><![CDATA[SharePoint 2013]]></category>
  728. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=752</guid>
  729.  
  730. <description><![CDATA[Introduction I recently came across an interesting blog &#8211; http://www.n8d.at/blog/office-365-icon-font-documentation/ which mentions O365 icons. This was back in February so when I attempted to locate these fonts so I could use them in some of my work. I could not located the file on the CDN that was mentioned. I kind of shrugged it off &#8230; <a href="https://tommdaly.wordpress.com/2015/06/24/office-365-icons/" class="more-link">Continue reading <span class="screen-reader-text">Office 365 Icons</span></a>]]></description>
  731. <content:encoded><![CDATA[<h2>Introduction</h2>
  732. <p>I recently came across an interesting blog &#8211; <a title="http://www.n8d.at/blog/office-365-icon-font-documentation/" href="http://www.n8d.at/blog/office-365-icon-font-documentation/">http://www.n8d.at/blog/office-365-icon-font-documentation/</a> which mentions O365 icons. This was back in February so when I attempted to locate these fonts so I could use them in some of my work. I could not located the file on the CDN that was mentioned. I kind of shrugged it off for a while but recently needed the icons again. So I went digging inside O365 and I found them. They are there if you want to use them. I’ll show you what classes to use. I also pulled the files which I’ll provide a link to at the end of the blog so you can download them and use them and not have to worry about CDN’s.</p>
  733. <p>I found all the O365 icon inside my O365 Portal.  I downloaded the web fonts and a portion of the css file that has the code for the icons.  Using this approach you would be locked into the current icon. Microsoft is likely to continually update the icon &amp; css, so this set would eventually become stale. If there ever is an official CDN I’d switch to that. If you’re on office 365 you don’t need to link to any fonts or css. You are able to just take advantages of the icons immediately you just need to look at my chart to see the classes or determine the code for the css content. If you don’t understand anything about using web fonts or what office 365 icons are, read the blog I mentioned above. That should bring you right up to speed.</p>
  734. <h2>Installation</h2>
  735. <h2></h2>
  736. <ul>
  737. <ul>
  738. <li>copy the css &amp; font folder to your on prem site</li>
  739. <li>link to the css file in your masterpage or page (adjust path as needed)
  740. <pre></pre>
  741. </li>
  742. </ul>
  743. </ul>
  744. <ul>
  745. <li>you can implement one of the icons using something like this below
  746. <pre></pre>
  747. </li>
  748. <li>i have additional styles for color, font size, and spacing. view the source to check that out</li>
  749. </ul>
  750. <h2>Explanation of the Grid</h2>
  751. <ul>
  752. <li>the orange tiles are icons that are available by using the css:after { content: &#8216;code&#8217;; } or if you copy the supplemental css above</li>
  753. <li>the blue tiles are icons that have classes in O365. you can use those classes in directly on your o365 site without attaching any styles or fonts</li>
  754. <li>the black tiles are dead, meaning they don&#8217;t show or are not in the font package but may be in the official css and have not been purged.</li>
  755. </ul>
  756. <p>The concept of using fonts for icons is nothing new and if you are not exactly familiar with that check out <a href="http://fortawesome.github.io/Font-Awesome/" target="blank">Font Awesome</a> or <a href="http://glyphicons.com/">Glyphicons</a>. The concept is that fonts will scale nice, the are light weight and fully loaded once when you hit the site. You can easily resize them and re-color them. No need for messing around with images.</p>
  757. <h3>Where I found the files</h3>
  758. <p><strong>Fonts</strong></p>
  759. <p><a title="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg" href="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg">https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg</a></p>
  760. <p><a title="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg" href="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.eot">https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.eot</a></p>
  761. <p><a title="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg" href="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.eot">https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.ttf</a></p>
  762. <p><a title="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.svg" href="https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.woff">https://outlook.office365.com/owa/prem/16.0.772.13/resources/styles/fonts/office365icons.woff</a></p>
  763. <p><strong>CSS</strong></p>
  764. <p><a title="https://prod.msocdn.com/16.00.0791.004/en-US/css/shellg2corecss_f727a58f.css" href="https://prod.msocdn.com/16.00.0791.004/en-US/css/shellg2corecss_f727a58f.css">https://prod.msocdn.com/16.00.0791.004/en-US/css/shellg2corecss_f727a58f.css</a></p>
  765. <h1><a href="https://dl.dropboxusercontent.com/u/24839514/TomBlogFiles/o365-fonts.zip" target="_blank">Download Files Here</a></h1>
  766. <h2>Screenshot of all the possible icons –&gt; see full preview site above for a live example</h2>
  767. <p><a href="https://tommdaly.files.wordpress.com/2015/06/1.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="1" src="https://tommdaly.files.wordpress.com/2015/06/1_thumb.png?w=1284&#038;h=703" alt="1" width="1284" height="703" border="0" /></a></p>
  768. <p><a href="https://tommdaly.files.wordpress.com/2015/06/2.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="2" src="https://tommdaly.files.wordpress.com/2015/06/2_thumb.png?w=1286&#038;h=706" alt="2" width="1286" height="706" border="0" /></a></p>
  769. <p><a href="https://tommdaly.files.wordpress.com/2015/06/3.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="3" src="https://tommdaly.files.wordpress.com/2015/06/3_thumb.png?w=1288&#038;h=702" alt="3" width="1288" height="702" border="0" /></a></p>
  770. <h3><a href="https://tommdaly.files.wordpress.com/2015/06/4.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="4" src="https://tommdaly.files.wordpress.com/2015/06/4_thumb.png?w=1290&#038;h=705" alt="4" width="1290" height="705" border="0" /></a></h3>
  771. <p><a href="https://tommdaly.files.wordpress.com/2015/06/5.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="5" src="https://tommdaly.files.wordpress.com/2015/06/5_thumb.png?w=1287&#038;h=707" alt="5" width="1287" height="707" border="0" /></a></p>
  772. <p><a href="https://tommdaly.files.wordpress.com/2015/06/6.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="6" src="https://tommdaly.files.wordpress.com/2015/06/6_thumb.png?w=1280&#038;h=706" alt="6" width="1280" height="706" border="0" /></a></p>
  773. <p><a href="https://tommdaly.files.wordpress.com/2015/06/7.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="7" src="https://tommdaly.files.wordpress.com/2015/06/7_thumb.png?w=1289&#038;h=703" alt="7" width="1289" height="703" border="0" /></a></p>
  774. <p><a href="https://tommdaly.files.wordpress.com/2015/06/8.png"><img style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border:0;" title="8" src="https://tommdaly.files.wordpress.com/2015/06/8_thumb.png?w=1287&#038;h=289" alt="8" width="1287" height="289" border="0" /></a></p>
  775. <h1><a href="https://dl.dropboxusercontent.com/u/24839514/TomBlogFiles/o365-fonts.zip" target="_blank">Download Files Here</a></h1>
  776. <p>Thanks for checking this out</p>
  777. ]]></content:encoded>
  778. <wfw:commentRss>https://tommdaly.wordpress.com/2015/06/24/office-365-icons/feed/</wfw:commentRss>
  779. <slash:comments>2</slash:comments>
  780. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  781. <media:title type="html">tommdaly</media:title>
  782. </media:content>
  783.  
  784. <media:content url="https://tommdaly.files.wordpress.com/2015/06/1_thumb.png" medium="image">
  785. <media:title type="html">1</media:title>
  786. </media:content>
  787.  
  788. <media:content url="https://tommdaly.files.wordpress.com/2015/06/2_thumb.png" medium="image">
  789. <media:title type="html">2</media:title>
  790. </media:content>
  791.  
  792. <media:content url="https://tommdaly.files.wordpress.com/2015/06/3_thumb.png" medium="image">
  793. <media:title type="html">3</media:title>
  794. </media:content>
  795.  
  796. <media:content url="https://tommdaly.files.wordpress.com/2015/06/4_thumb.png" medium="image">
  797. <media:title type="html">4</media:title>
  798. </media:content>
  799.  
  800. <media:content url="https://tommdaly.files.wordpress.com/2015/06/5_thumb.png" medium="image">
  801. <media:title type="html">5</media:title>
  802. </media:content>
  803.  
  804. <media:content url="https://tommdaly.files.wordpress.com/2015/06/6_thumb.png" medium="image">
  805. <media:title type="html">6</media:title>
  806. </media:content>
  807.  
  808. <media:content url="https://tommdaly.files.wordpress.com/2015/06/7_thumb.png" medium="image">
  809. <media:title type="html">7</media:title>
  810. </media:content>
  811.  
  812. <media:content url="https://tommdaly.files.wordpress.com/2015/06/8_thumb.png" medium="image">
  813. <media:title type="html">8</media:title>
  814. </media:content>
  815. </item>
  816. <item>
  817. <title>My Favorite JavaScript Libraries and jQuery plugins</title>
  818. <link>https://tommdaly.wordpress.com/2015/05/07/my-favorite-javascript-libraries-and-jquery-plugins/</link>
  819. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  820. <pubDate>Thu, 07 May 2015 20:24:00 +0000</pubDate>
  821. <category><![CDATA[Branding]]></category>
  822. <category><![CDATA[Customizations]]></category>
  823. <category><![CDATA[JavaScript]]></category>
  824. <category><![CDATA[JQuery]]></category>
  825. <category><![CDATA[SharePoint 2010]]></category>
  826. <category><![CDATA[SharePoint 2013]]></category>
  827. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=725</guid>
  828.  
  829. <description><![CDATA[These are a few of my favorite and go to JavaScript libraries. These tend to work well in SharePoint with no problem. This is my personal list that I use Grid http://unsemantic.com/ (SIMPLE) Console Log https://github.com/patik/console.log-wrapper Glyphs All &#8211; http://fortawesome.github.io/Font-Awesome/ Weather &#8211; http://erikflowers.github.io/weather-icons/ O365 &#8211; http://www.n8d.at/blog/office-365-icon-font-documentation/ Carousel Owl Carousel &#8211; http://owlgraphic.com/owlcarousel/index.html#demo slick &#8211; http://kenwheeler.github.io/slick/ jCycle2 &#8230; <a href="https://tommdaly.wordpress.com/2015/05/07/my-favorite-javascript-libraries-and-jquery-plugins/" class="more-link">Continue reading <span class="screen-reader-text">My Favorite JavaScript Libraries and jQuery&#160;plugins</span></a>]]></description>
  830. <content:encoded><![CDATA[<p>These are a few of my favorite and go to JavaScript libraries. These tend to work well in SharePoint with no problem. This is my personal list that I use</p>
  831. <h2>Grid </h2>
  832. <ul>
  833. <li><a href="http://unsemantic.com/">http://unsemantic.com/</a> (SIMPLE)</li>
  834. </ul>
  835. <h2>Console Log</h2>
  836. <ul>
  837. <li><a href="https://github.com/patik/console.log-wrapper">https://github.com/patik/console.log-wrapper</a></li>
  838. </ul>
  839. <h2>Glyphs</h2>
  840. <ul>
  841. <li>All &#8211; <a href="http://fortawesome.github.io/Font-Awesome/">http://fortawesome.github.io/Font-Awesome/</a>
  842. <li>Weather &#8211; <a href="http://erikflowers.github.io/weather-icons/">http://erikflowers.github.io/weather-icons/</a>
  843. <li>O365 &#8211; <a title="http://www.n8d.at/blog/office-365-icon-font-documentation/" href="http://www.n8d.at/blog/office-365-icon-font-documentation/">http://www.n8d.at/blog/office-365-icon-font-documentation/</a></li>
  844. </ul>
  845. <h2>Carousel</h2>
  846. <ul>
  847. <li>Owl Carousel &#8211; <a href="http://owlgraphic.com/owlcarousel/index.html#demo">http://owlgraphic.com/owlcarousel/index.html#demo</a>
  848. <li>slick &#8211; <a href="http://kenwheeler.github.io/slick/">http://kenwheeler.github.io/slick/</a>
  849. <li>jCycle2 &#8211; <a href="http://jquery.malsup.com/cycle2/">http://jquery.malsup.com/cycle2/</a>
  850. <li>backFlip &#8211; <a title="https://github.com/backflip/jquery-carousel" href="https://github.com/backflip/jquery-carousel">https://github.com/backflip/jquery-carousel</a> (doesn’t use .clone() – good for use in ajaxPanel or where you don’t want cloned elements)</li>
  851. </ul>
  852. <h2>Cookies</h2>
  853. <ul>
  854. <li>jquery.cookie <a href="https://github.com/carhartl/jquery-cookie">https://github.com/carhartl/jquery-cookie</a></li>
  855. </ul>
  856. <h2>Click Outside</h2>
  857. <ul>
  858. <li><a href="http://benalman.com/code/projects/jquery-outside-events/examples/clickoutside/">http://benalman.com/code/projects/jquery-outside-events/examples/clickoutside/</a></li>
  859. </ul>
  860. <h2>Mutate / Resize</h2>
  861. <ul>
  862. <li><a href="http://www.jqui.net/demo/mutate/">http://www.jqui.net/demo/mutate/</a> (had issue with zip, use github files)
  863. <li><a href="http://benalman.com/code/projects/jquery-resize/examples/resize/">http://benalman.com/code/projects/jquery-resize/examples/resize/</a></li>
  864. <li>Smart Resize &#8211; <a href="http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/">http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/</a></li>
  865. </ul>
  866. <h2>Select Box (supports Multi)</h2>
  867. <ul>
  868. <li>Sumo Select <a href="https://github.com/HemantNegi/jquery.sumoselect">https://github.com/HemantNegi/jquery.sumoselect</a></li>
  869. </ul>
  870. <h2>Time / Date</h2>
  871. <ul>
  872. <li>Moment &#8211; <a href="http://momentjs.com/">http://momentjs.com/</a>
  873. <li>Datejs &#8211; <a href="http://www.datejs.com/">http://www.datejs.com/</a></li>
  874. </ul>
  875. <h2>Truncating Text</h2>
  876. <ul>
  877. <li>jQuery dotdotdot… <a href="http://dotdotdot.frebsite.nl/?utm_source=dlvr.it&amp;utm_medium=twitter">http://dotdotdot.frebsite.nl/?utm_source=dlvr.it&amp;utm_medium=twitter</a> [THIS DIDN’T WORK WITH br&#8217;s]
  878. <li>Truncate &#8211; <a href="https://github.com/pathable/truncate">https://github.com/pathable/truncate</a></li>
  879. </ul>
  880. <h2>Layouts (masonry type)</h2>
  881. <ul>
  882. <li>Isotope &#8211; <a href="http://isotope.metafizzy.co/">http://isotope.metafizzy.co/</a>
  883. <ul>
  884. <li>** use imagesLoaded for images &#8211; <a href="https://github.com/desandro/imagesloaded">https://github.com/desandro/imagesloaded</a></li>
  885. </ul>
  886. </li>
  887. </ul>
  888. <h2>Notify / Alerts</h2>
  889. <ul>
  890. <li>Notify.js &#8211; <a title="http://notifyjs.com/" href="http://notifyjs.com/">http://notifyjs.com/</a>
  891. <li>Flavr &#8211; <a title="http://codecanyon.net/item/flavr-flat-jquery-popup-dialog/7021021" href="http://codecanyon.net/item/flavr-flat-jquery-popup-dialog/7021021">http://codecanyon.net/item/flavr-flat-jquery-popup-dialog/7021021</a></li>
  892. </ul>
  893. <h2>Modal </h2>
  894. <ul>
  895. <li>Zurb Reveal &#8211; <a title="http://foundation.zurb.com/docs/components/reveal.html" href="http://foundation.zurb.com/docs/components/reveal.html">http://foundation.zurb.com/docs/components/reveal.html</a> &#8211; [Needs adjustment for s4-workspace, but otherwise good]</li>
  896. </ul>
  897. <h2>Scroll Bars </h2>
  898. <ul>
  899. <li>jScrollPane &#8211; <a href="http://jscrollpane.kelvinluck.com/">http://jscrollpane.kelvinluck.com/</a></li>
  900. </ul>
  901. <h2>SharePoint Specific</h2>
  902. <ul>
  903. <li>SPServices &#8211; <a title="https://spservices.codeplex.com/" href="https://spservices.codeplex.com/">https://spservices.codeplex.com/</a></li>
  904. </ul>
  905. ]]></content:encoded>
  906. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  907. <media:title type="html">tommdaly</media:title>
  908. </media:content>
  909. </item>
  910. <item>
  911. <title>Working with SASS style sheets in Office 365 / SharePoint 2013</title>
  912. <link>https://tommdaly.wordpress.com/2015/01/03/working-with-sass-style-sheets-in-office-365-sharepoint-2013/</link>
  913. <comments>https://tommdaly.wordpress.com/2015/01/03/working-with-sass-style-sheets-in-office-365-sharepoint-2013/#comments</comments>
  914. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  915. <pubDate>Sun, 04 Jan 2015 00:53:00 +0000</pubDate>
  916. <category><![CDATA[Branding]]></category>
  917. <category><![CDATA[CSS]]></category>
  918. <category><![CDATA[Customizations]]></category>
  919. <category><![CDATA[Office 365]]></category>
  920. <category><![CDATA[SharePoint 2013]]></category>
  921. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=714</guid>
  922.  
  923. <description><![CDATA[My new favorite thing is creating all my style sheets with SASS. SASS makes writing my style sheets faster, easier, cleaner, and more reusable. Don’t ask me why I chose SASS, but I liked it just a little better than LESS even though they are very similar.&#160; You can go do research for yourself and &#8230; <a href="https://tommdaly.wordpress.com/2015/01/03/working-with-sass-style-sheets-in-office-365-sharepoint-2013/" class="more-link">Continue reading <span class="screen-reader-text">Working with SASS style sheets in Office 365 / SharePoint&#160;2013</span></a>]]></description>
  924. <content:encoded><![CDATA[<p>My new favorite thing is creating all my style sheets with SASS. SASS makes writing my style sheets faster, easier, cleaner, and more reusable. Don’t ask me why I chose SASS, but I liked it just a little better than LESS even though they are very similar.&nbsp; You can go do research for yourself and decide which you’d like to use.&nbsp; SASS &#8211; <a title="http://sass-lang.com/" href="http://sass-lang.com/">http://sass-lang.com/</a> LESS &#8211; <a title="http://lesscss.org/" href="http://lesscss.org/">http://lesscss.org/</a>.</p>
  925. <p>SASS is nothing new however it is very difficult to work with when using with SharePoint 2010/2013 .. or Office 365. Why is it difficult? Because SASS needs to be compiled to CSS and none of your typical SharePoint tools do that. </p>
  926. <p>&nbsp;</p>
  927. <h3>Current Scenarios:</h3>
  928. <ol>
  929. <li>If you are working on O365 you might be working with SharePoint Designer which won’t do anything for you.
  930. <li>Maybe you have Visual Studio you can use <a href="http://vswebessentials.com/" target="_blank">Web Essentials</a> or <a href="http://www.mindscapehq.com/products/web-workbench" target="_blank">Mindscape Web Workbench</a>. Both of these will compile the SASS to CSS
  931. <li>You can use a stand alone compiler like Koala, Propos, &amp; Scout (for Windows) … but configuring them to work can be tricky.
  932. <li>You can use an online compiler &#8211; <a href="http://sassmeister.com/">SassMeister | The Sass Playground!</a> , but then you will be doing a lot of copy / pasting / uploading.</li>
  933. </ol>
  934. <p>&nbsp;</p>
  935. <p><em>This article is going to show you how to use </em><a href="http://www.sublimetext.com/2" target="_blank"><em>Sublime Text 2</em></a><em> on your desktop, to write and compile SASS, which will automatically be saved to O365. No copy / paste or uploading needed!</em></p>
  936. <p>&nbsp;</p>
  937. <h3>General Approach</h3>
  938. <ul>
  939. <li>Map network drive to O365 site
  940. <li>Use a desktop editor to create SASS
  941. <li>Use a desktop compiler to create the CSS
  942. <li>Use Scout to monitor CSS changes locally and copy file to network drive</li>
  943. </ul>
  944. <p>&nbsp;</p>
  945. <h3>Pre-Requisites</h3>
  946. <p>1. Java v7 &#8211; <a title="http://www.java.com/en/download" href="http://www.java.com/en/download">http://www.java.com/en/download</a> [Scout has issue with any other version, <a title="https://github.com/mhs/scout-app/issues/173" href="https://github.com/mhs/scout-app/issues/173">https://github.com/mhs/scout-app/issues/173</a>]</p>
  947. <p>2. O365 Site</p>
  948. <p>&nbsp;</p>
  949. <h3>Step 1 – Install Sublime Text 2 &amp; SASS Builder</h3>
  950. <p>1. go to <a title="http://www.sublimetext.com/2" href="http://www.sublimetext.com/2">http://www.sublimetext.com/2</a> and download and install </p>
  951. <p>2. go to <a title="https://github.com/jaumefontal/SASS-Build-SublimeText2" href="https://github.com/jaumefontal/SASS-Build-SublimeText2">https://github.com/jaumefontal/SASS-Build-SublimeText2</a> (Follow Instructions there skip to step 3) </p>
  952. <blockquote>
  953. <h4>Installing Ruby</h4>
  954. </blockquote>
  955. <p>Install Ruby library (for windows) &#8211; <a title="http://rubyinstaller.org/downloads/" href="http://rubyinstaller.org/downloads/">http://rubyinstaller.org/downloads/</a> </p>
  956. <ul>
  957. <li>check box to add Ruby executables to your PATH</li>
  958. </ul>
  959. <p>Start Command Prompt with Ruby </p>
  960. <p>&nbsp;<a href="https://tommdaly.files.wordpress.com/2015/01/image.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb.png?w=561&#038;h=296" width="561" height="296"></a></p>
  961. <p>In the console type the following</p>
  962. <ul>
  963. <li>gem install sass
  964. <li>IF you get this error </li>
  965. </ul>
  966. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image1.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb1.png?w=809&#038;h=187" width="809" height="187"></a> </p>
  967. <p>Take a deep breath – you need to download the cert and add it to your RubyGem’s certificate directory.</p>
  968. <ul>
  969. <li>Download the new PEM file <a href="https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem" target="_blank">AddTrustExternalCARoot-2048.pem</a>
  970. <li>in the ruby command window type
  971. <ul>
  972. <li>gem which rubygems</li>
  973. </ul>
  974. </li>
  975. </ul>
  976. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image2.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb2.png?w=368&#038;h=63" width="368" height="63"></a> </p>
  977. <ul>
  978. <li>go to that folder in windows in windows explorer
  979. <li>open up a subfolder rubygems\ssl_certs
  980. <li>copy the <a href="https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem" target="_blank">AddTrustExternalCARoot-2048.pem</a> to the rubygems\ssl_certs
  981. <li>Retry “gem install sass” –SUCCESS!</li>
  982. </ul>
  983. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image3.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb3.png?w=537&#038;h=112" width="537" height="112"></a>&nbsp;</p>
  984. </p>
  985. </p>
  986. <blockquote>
  987. <h4>Installing SASS Build System</h4>
  988. </blockquote>
  989. <p>The easiest way to install this package is through Package Control.  </p>
  990. <p>1. Download and install the <a href="http://wbond.net/sublime_packages/package_control">Package Control Plugin</a>. Follow the instructions on the website  </p>
  991. <p>2. Open the command panel: <code>Control+Shift+P</code> (Linux/Windows) or <code>Command+Shift+P</code> (OS X) and select &#8216;<strong>Package Control: Install Package</strong>&#8216;.  </p>
  992. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image4.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb4.png?w=1204&#038;h=413" width="1204" height="413"></a>  </p>
  993. <p>3. When the packages list appears type &#8216;<strong>SASS</strong>&#8216; and you&#8217;ll find the <strong>SASS Build System</strong>. Select to install it.  </p>
  994. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image5.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb5.png?w=966&#038;h=418" width="966" height="418"></a>&nbsp;</p>
  995. <p>4. Set the Build System to SASS,&nbsp; In Tools –&gt; Build System –&gt; SASS </p>
  996. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image6.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb6.png?w=621&#038;h=438" width="621" height="438"></a> </p>
  997. <p>5. Now you can compile your SASS files! Launch your build with <code>Control+B</code> (Linux/Windows) or <code>Command+B</code> (OS X).</p>
  998. <p><em><font color="#ff0000">**NOTE** if you are not getting you are not getting colors on your SASS – click the bottom right corner and set the Language as SASS</font></em></p>
  999. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image7.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb7.png?w=795&#038;h=294" width="795" height="294"></a> </p>
  1000. </p>
  1001. </p>
  1002. <p>&nbsp;</p>
  1003. <h3>Step 2 – Map Network Folder to O365</h3>
  1004. <p>The key to this part is to first log into your O365 site w/ Internet Explorer. I then go to any folder and click the button to Open with Explorer. Then I can usually successfully map the network drive.</p>
  1005. <p>PRE-REQUISITES – Your site must be in the trusted sites. I actually add a few *.microsoft[sites] <a title="http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx" href="http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx">http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx</a></p>
  1006. <p>IE &gt; Tools &gt; Internet Options &gt; Security &gt; Trusted Sites [click sites button] </p>
  1007. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image8.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb8.png?w=525&#038;h=303" width="525" height="303"></a>&nbsp;</p>
  1008. <p>1. Log into your site with Internet Explorer – be sure to check ‘Keep me signed in’</p>
  1009. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image9.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb9.png?w=626&#038;h=326" width="626" height="326"></a> </p>
  1010. </p>
  1011. <p>2. Open up any document library [might look different. this screenshot from small resolution virtual machine]</p>
  1012. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image10.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb10.png?w=1198&#038;h=460" width="1198" height="460"></a> </p>
  1013. <p>3. Next, do the standard map network drive per your Operating System. I’m running Windows 7.</p>
  1014. <p>basically right click on Computer and click Map Network Drive</p>
  1015. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image11.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb11.png?w=743&#038;h=631" width="743" height="631"></a> </p>
  1016. <p>4. Enter in the site url w/ any subfolder you want [root is fine]. I also check connect using different credentials.</p>
  1017. <blockquote>
  1018. <p>4.1 Enter in your O365 credentials</p>
  1019. </blockquote>
  1020. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image12.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb12.png?w=995&#038;h=742" width="995" height="742"></a> </p>
  1021. <p>5. SUCCCESS ! </p>
  1022. </p>
  1023. </p>
  1024. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image13.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb13.png?w=1040&#038;h=605" width="1040" height="605"></a> </p>
  1025. <h4>Step 3 – Install &amp; Setup Scout</h4>
  1026. <p>For this you will need to create a local working folder for all CSS. for example I will create a folder on the desktop called ‘MySassExample’</p>
  1027. <p>1. Download and Install Scout @ <a title="http://mhs.github.io/scout-app/" href="http://mhs.github.io/scout-app/">http://mhs.github.io/scout-app/</a></p>
  1028. <p>2. Once Scout installs, Open it up and click the + in the bottom left to add a new project</p>
  1029. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image14.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb14.png?w=985&#038;h=776" width="985" height="776"></a> </p>
  1030. <p>3. Navigate to your local working folder</p>
  1031. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image15.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb15.png?w=971&#038;h=769" width="971" height="769"></a> </p>
  1032. <p>4. Under Configure, Stylesheet Directories –&gt; set the Input Folder to your local working folder &amp; the Output folder to your network mapped drive (o365)</p>
  1033. <p><em>I set it to output to the Style Library of my site.</em></p>
  1034. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image16.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb16.png?w=1201&#038;h=797" width="1201" height="797"></a> </p>
  1035. <p>5. Click the Play Button</p>
  1036. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image17.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb17.png?w=436&#038;h=172" width="436" height="172"></a> </p>
  1037. <p>&nbsp;</p>
  1038. <h3>Step 4 – The Final Step, Verifying it all works!</h3>
  1039. <p>1. With Scout running, Go to your local working folder.</p>
  1040. <p>2. Create a new .SCSS file or open an existing one in Sublime Text 2</p>
  1041. <p>3. Create some SASS </p>
  1042. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image18.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb18.png?w=351&#038;h=233" width="351" height="233"></a> </p>
  1043. <p>4. Save, then CTRL+B to build it. You should get the write ~file output.<br />&nbsp;<a href="https://tommdaly.files.wordpress.com/2015/01/image19.png"><img title="image" style="display:inline;border-width:0;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb19.png?w=674&#038;h=440" width="674" height="440"></a></p>
  1044. <p>5. In Scout, you should see …. overwrite .css </p>
  1045. <p>Sometimes you need to give it a few seconds to save the file to o365, the network drive tends to take longer to save files</p>
  1046. <p><a href="https://tommdaly.files.wordpress.com/2015/01/image20.png"><img title="image" style="border-top:0;border-right:0;border-bottom:0;border-left:0;display:inline;" border="0" alt="image" src="https://tommdaly.files.wordpress.com/2015/01/image_thumb20.png?w=727&#038;h=248" width="727" height="248"></a></p>
  1047. <p><em><font color="#ff0000">** NOTE if you are using an existing file make sure you check it out via SharePoint. Otherwise it won’t save and you’ll see errors in Scout when it tries **</font></em></p>
  1048. <p>&nbsp;</p>
  1049. <h3>Wrap Up</h3>
  1050. <p>The concludes how to setup Scout &amp; Sublime Text 2 to create and update SASS styles sheets which compile to .css and automatically push to O365. The hardest thing I found is mapping the drive successfully. There are many helpful articles on the different errors you might get trying to do so.&nbsp; It may seen like a lot of steps to get going, but if you have used SASS or LESS before you know how powerful it is and how much time you might potentially save. This blog was meant to help get this setup and show you how you can get started. There are other programs like Scout, but Scout was the only one that I could get to work the way I liked. There are also other editors that you could use if you don’t like Sublime Text 2. Best of luck!</p>
  1051. <p>&nbsp;</p>
  1052. </p>
  1053. <h3>Resources</h3>
  1054. <p>More on Scout &#8211; <a title="http://www.impressivewebs.com/sass-on-windows-with-scout-app/" href="http://www.impressivewebs.com/sass-on-windows-with-scout-app/">http://www.impressivewebs.com/sass-on-windows-with-scout-app/</a></p>
  1055. <p>Errors Mapping Network Drive &#8211; <a title="http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx" href="http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx">http://blogs.technet.com/b/sharepoint_made_easy/archive/2013/03/20/map-network-drive-webdav-with-sharepoint-online-o365.aspx</a></p>
  1056. </p>
  1057. <p>SASS &#8211; <a title="http://sass-lang.com/" href="http://sass-lang.com/">http://sass-lang.com/</a></p>
  1058. ]]></content:encoded>
  1059. <wfw:commentRss>https://tommdaly.wordpress.com/2015/01/03/working-with-sass-style-sheets-in-office-365-sharepoint-2013/feed/</wfw:commentRss>
  1060. <slash:comments>1</slash:comments>
  1061. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  1062. <media:title type="html">tommdaly</media:title>
  1063. </media:content>
  1064.  
  1065. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb.png" medium="image">
  1066. <media:title type="html">image</media:title>
  1067. </media:content>
  1068.  
  1069. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb1.png" medium="image">
  1070. <media:title type="html">image</media:title>
  1071. </media:content>
  1072.  
  1073. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb2.png" medium="image">
  1074. <media:title type="html">image</media:title>
  1075. </media:content>
  1076.  
  1077. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb3.png" medium="image">
  1078. <media:title type="html">image</media:title>
  1079. </media:content>
  1080.  
  1081. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb4.png" medium="image">
  1082. <media:title type="html">image</media:title>
  1083. </media:content>
  1084.  
  1085. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb5.png" medium="image">
  1086. <media:title type="html">image</media:title>
  1087. </media:content>
  1088.  
  1089. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb6.png" medium="image">
  1090. <media:title type="html">image</media:title>
  1091. </media:content>
  1092.  
  1093. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb7.png" medium="image">
  1094. <media:title type="html">image</media:title>
  1095. </media:content>
  1096.  
  1097. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb8.png" medium="image">
  1098. <media:title type="html">image</media:title>
  1099. </media:content>
  1100.  
  1101. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb9.png" medium="image">
  1102. <media:title type="html">image</media:title>
  1103. </media:content>
  1104.  
  1105. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb10.png" medium="image">
  1106. <media:title type="html">image</media:title>
  1107. </media:content>
  1108.  
  1109. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb11.png" medium="image">
  1110. <media:title type="html">image</media:title>
  1111. </media:content>
  1112.  
  1113. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb12.png" medium="image">
  1114. <media:title type="html">image</media:title>
  1115. </media:content>
  1116.  
  1117. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb13.png" medium="image">
  1118. <media:title type="html">image</media:title>
  1119. </media:content>
  1120.  
  1121. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb14.png" medium="image">
  1122. <media:title type="html">image</media:title>
  1123. </media:content>
  1124.  
  1125. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb15.png" medium="image">
  1126. <media:title type="html">image</media:title>
  1127. </media:content>
  1128.  
  1129. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb16.png" medium="image">
  1130. <media:title type="html">image</media:title>
  1131. </media:content>
  1132.  
  1133. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb17.png" medium="image">
  1134. <media:title type="html">image</media:title>
  1135. </media:content>
  1136.  
  1137. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb18.png" medium="image">
  1138. <media:title type="html">image</media:title>
  1139. </media:content>
  1140.  
  1141. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb19.png" medium="image">
  1142. <media:title type="html">image</media:title>
  1143. </media:content>
  1144.  
  1145. <media:content url="https://tommdaly.files.wordpress.com/2015/01/image_thumb20.png" medium="image">
  1146. <media:title type="html">image</media:title>
  1147. </media:content>
  1148. </item>
  1149. <item>
  1150. <title>Delete a Workflow on the Host Web from the App Web</title>
  1151. <link>https://tommdaly.wordpress.com/2014/05/14/delete-a-workflow-on-the-host-web-from-the-app-web/</link>
  1152. <comments>https://tommdaly.wordpress.com/2014/05/14/delete-a-workflow-on-the-host-web-from-the-app-web/#comments</comments>
  1153. <dc:creator><![CDATA[Thomas Daly]]></dc:creator>
  1154. <pubDate>Wed, 14 May 2014 23:43:11 +0000</pubDate>
  1155. <category><![CDATA[Apps]]></category>
  1156. <category><![CDATA[Development]]></category>
  1157. <category><![CDATA[SharePoint 2013]]></category>
  1158. <category><![CDATA[Workflows]]></category>
  1159. <guid isPermaLink="false">http://tommdaly.wordpress.com/?p=670</guid>
  1160.  
  1161. <description><![CDATA[below is some sample code to delete a workflow on the host web from your app web. This would be useful in the event you want your App to remove a workflow that you have deployed to the host web. NOTE: you must include a reference to “/_layouts/15/SP.WorkflowServices.js” this file can be downloaded here 1: &#8230; <a href="https://tommdaly.wordpress.com/2014/05/14/delete-a-workflow-on-the-host-web-from-the-app-web/" class="more-link">Continue reading <span class="screen-reader-text">Delete a Workflow on the Host Web from the App&#160;Web</span></a>]]></description>
  1162. <content:encoded><![CDATA[<p>below is some sample code to delete a workflow on the host web from your app web. This would be useful in the event you want your App to remove a workflow that you have deployed to the host web.</p>
  1163. <p>NOTE: you must include a reference to “/_layouts/15/SP.WorkflowServices.js”</p>
  1164. <p>this file can be <a href="https://dl.dropboxusercontent.com/u/24839514/TomBlogFiles/deleteWorkflow.js">downloaded here</a></p>
  1165. <div id="codeSnippetWrapper">
  1166. <div id="codeSnippet" style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;">
  1167. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum1" style="color:#606060;">   1:</span> <span style="color:#0000ff;">var</span> deleteWorkflow = <span style="color:#0000ff;">function</span> (workflowName) {</pre>
  1168. <p><!--CRLF--></p>
  1169. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum2" style="color:#606060;">   2:</span></pre>
  1170. <p><!--CRLF--></p>
  1171. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum3" style="color:#606060;">   3:</span>     <span style="color:#008000;">//Using the App Web as the client context</span></pre>
  1172. <p><!--CRLF--></p>
  1173. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum4" style="color:#606060;">   4:</span>     clientContext = <span style="color:#0000ff;">new</span> SP.ClientContext.get_current();</pre>
  1174. <p><!--CRLF--></p>
  1175. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum5" style="color:#606060;">   5:</span></pre>
  1176. <p><!--CRLF--></p>
  1177. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum6" style="color:#606060;">   6:</span>     <span style="color:#008000;">//Get the host web URL from the query string params</span></pre>
  1178. <p><!--CRLF--></p>
  1179. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum7" style="color:#606060;">   7:</span>     <span style="color:#008000;">//I have a function getHostWebUrl() - which is not included.</span></pre>
  1180. <p><!--CRLF--></p>
  1181. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum8" style="color:#606060;">   8:</span>     <span style="color:#008000;">//http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript</span></pre>
  1182. <p><!--CRLF--></p>
  1183. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum9" style="color:#606060;">   9:</span>     <span style="color:#0000ff;">var</span> hostWebUrl = getHostWebUrl();</pre>
  1184. <p><!--CRLF--></p>
  1185. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum10" style="color:#606060;">  10:</span></pre>
  1186. <p><!--CRLF--></p>
  1187. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum11" style="color:#606060;">  11:</span>     <span style="color:#008000;">//Using the hostWebContext as an AppContextSite</span></pre>
  1188. <p><!--CRLF--></p>
  1189. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum12" style="color:#606060;">  12:</span>     hostWebContext = <span style="color:#0000ff;">new</span> SP.AppContextSite(clientContext, hostWebUrl);</pre>
  1190. <p><!--CRLF--></p>
  1191. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum13" style="color:#606060;">  13:</span></pre>
  1192. <p><!--CRLF--></p>
  1193. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum14" style="color:#606060;">  14:</span>     <span style="color:#008000;">//Get the Workflow Services Manager for the Host web, NOTE: you initialize it with the clientContext &amp; the hostWebContext Web)</span></pre>
  1194. <p><!--CRLF--></p>
  1195. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum15" style="color:#606060;">  15:</span>     <span style="color:#0000ff;">var</span> hostWebWorkflowServicesManager = <span style="color:#0000ff;">new</span> SP.WorkflowServices.WorkflowServicesManager.newObject(clientContext, hostWebContext.get_web());</pre>
  1196. <p><!--CRLF--></p>
  1197. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum16" style="color:#606060;">  16:</span>     <span style="color:#0000ff;">var</span> hostWebWorkflowDeploymentService = hostWebWorkflowServicesManager.getWorkflowDeploymentService();</pre>
  1198. <p><!--CRLF--></p>
  1199. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum17" style="color:#606060;">  17:</span>     <span style="color:#0000ff;">var</span> hostWebDefinitionsCollection = hostWebWorkflowDeploymentService.enumerateDefinitions(<span style="color:#0000ff;">false</span>);</pre>
  1200. <p><!--CRLF--></p>
  1201. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum18" style="color:#606060;">  18:</span></pre>
  1202. <p><!--CRLF--></p>
  1203. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum19" style="color:#606060;">  19:</span>     <span style="color:#008000;">//load all the workflow definitions from the host web </span></pre>
  1204. <p><!--CRLF--></p>
  1205. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum20" style="color:#606060;">  20:</span>     clientContext.load(hostWebDefinitionsCollection);</pre>
  1206. <p><!--CRLF--></p>
  1207. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum21" style="color:#606060;">  21:</span>     clientContext.executeQueryAsync(<span style="color:#0000ff;">function</span> () {</pre>
  1208. <p><!--CRLF--></p>
  1209. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum22" style="color:#606060;">  22:</span></pre>
  1210. <p><!--CRLF--></p>
  1211. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum23" style="color:#606060;">  23:</span>         <span style="color:#008000;">//get the enumerator for all the workflow definitions</span></pre>
  1212. <p><!--CRLF--></p>
  1213. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum24" style="color:#606060;">  24:</span>         <span style="color:#0000ff;">var</span> workflowDefinitions = hostWebDefinitionsCollection.getEnumerator();</pre>
  1214. <p><!--CRLF--></p>
  1215. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum25" style="color:#606060;">  25:</span>         <span style="color:#0000ff;">while</span> (workflowDefinitions.moveNext()) {</pre>
  1216. <p><!--CRLF--></p>
  1217. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum26" style="color:#606060;">  26:</span></pre>
  1218. <p><!--CRLF--></p>
  1219. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum27" style="color:#606060;">  27:</span>             <span style="color:#008000;">//set the current definition to a variable</span></pre>
  1220. <p><!--CRLF--></p>
  1221. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum28" style="color:#606060;">  28:</span>             <span style="color:#0000ff;">var</span> workflowDefinition = workflowDefinitions.get_current();</pre>
  1222. <p><!--CRLF--></p>
  1223. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum29" style="color:#606060;">  29:</span></pre>
  1224. <p><!--CRLF--></p>
  1225. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum30" style="color:#606060;">  30:</span>             <span style="color:#008000;">//uncomment to see all the workflows that it finds</span></pre>
  1226. <p><!--CRLF--></p>
  1227. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum31" style="color:#606060;">  31:</span>             <span style="color:#008000;">//console.log("Found Workflow : " + workflowDefinition.get_displayName());</span></pre>
  1228. <p><!--CRLF--></p>
  1229. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum32" style="color:#606060;">  32:</span></pre>
  1230. <p><!--CRLF--></p>
  1231. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum33" style="color:#606060;">  33:</span>             <span style="color:#008000;">//looking for a match on the name of the workflow</span></pre>
  1232. <p><!--CRLF--></p>
  1233. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum34" style="color:#606060;">  34:</span>             <span style="color:#0000ff;">if</span> (workflowDefinition.get_displayName() === workflowName) {</pre>
  1234. <p><!--CRLF--></p>
  1235. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum35" style="color:#606060;">  35:</span>                 <span style="color:#008000;">//using the host web workflow deployment service to delete the workflow definition</span></pre>
  1236. <p><!--CRLF--></p>
  1237. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum36" style="color:#606060;">  36:</span></pre>
  1238. <p><!--CRLF--></p>
  1239. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum37" style="color:#606060;">  37:</span>                 hostWebWorkflowDeploymentService.deleteDefinition(workflowDefinition.get_id());</pre>
  1240. <p><!--CRLF--></p>
  1241. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum38" style="color:#606060;">  38:</span>                 <span style="color:#008000;">//this comment will just display what workflow WILL BE deleted </span></pre>
  1242. <p><!--CRLF--></p>
  1243. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum39" style="color:#606060;">  39:</span>                 console.log(<span style="color:#006080;">"Deleted workflow : "</span> + workflowName + <span style="color:#006080;">", "</span> + workflowDefinition.get_id().toString());</pre>
  1244. <p><!--CRLF--></p>
  1245. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum40" style="color:#606060;">  40:</span></pre>
  1246. <p><!--CRLF--></p>
  1247. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum41" style="color:#606060;">  41:</span>                 <span style="color:#008000;">//if more than one workflow with the same name is found it will delete all of them</span></pre>
  1248. <p><!--CRLF--></p>
  1249. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum42" style="color:#606060;">  42:</span>                 <span style="color:#008000;">//the delete will get queued up and executed by the .executeQueryAsync</span></pre>
  1250. <p><!--CRLF--></p>
  1251. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum43" style="color:#606060;">  43:</span>                 <span style="color:#008000;">//if you don't want that then you have to break out of the while loop</span></pre>
  1252. <p><!--CRLF--></p>
  1253. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum44" style="color:#606060;">  44:</span>             }</pre>
  1254. <p><!--CRLF--></p>
  1255. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum45" style="color:#606060;">  45:</span>         }</pre>
  1256. <p><!--CRLF--></p>
  1257. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum46" style="color:#606060;">  46:</span>         <span style="color:#008000;">//this query will execute the delete action</span></pre>
  1258. <p><!--CRLF--></p>
  1259. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum47" style="color:#606060;">  47:</span>         clientContext.executeQueryAsync(<span style="color:#0000ff;">function</span> () {</pre>
  1260. <p><!--CRLF--></p>
  1261. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum48" style="color:#606060;">  48:</span>             <span style="color:#008000;">//Successfully deleted   the workflow</span></pre>
  1262. <p><!--CRLF--></p>
  1263. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum49" style="color:#606060;">  49:</span>         }, <span style="color:#0000ff;">function</span> (sender, args) {</pre>
  1264. <p><!--CRLF--></p>
  1265. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum50" style="color:#606060;">  50:</span>             console.log(<span style="color:#006080;">"Unable to delete workflow : "</span> + workflowName);</pre>
  1266. <p><!--CRLF--></p>
  1267. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum51" style="color:#606060;">  51:</span>             console.log(<span style="color:#006080;">"&lt;span style='color:red'&gt;Reason : "</span> + args.get_message() + <span style="color:#006080;">"&lt;/span&gt;"</span>);</pre>
  1268. <p><!--CRLF--></p>
  1269. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum52" style="color:#606060;">  52:</span>         });</pre>
  1270. <p><!--CRLF--></p>
  1271. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum53" style="color:#606060;">  53:</span>     }, <span style="color:#0000ff;">function</span> (sender, args) {</pre>
  1272. <p><!--CRLF--></p>
  1273. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum54" style="color:#606060;">  54:</span>         console.log(<span style="color:#006080;">"Failed to load workflows"</span>);</pre>
  1274. <p><!--CRLF--></p>
  1275. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum55" style="color:#606060;">  55:</span>         console.log(<span style="color:#006080;">"&lt;span style='color:red'&gt;Reason : "</span> + args.get_message() + <span style="color:#006080;">"&lt;/span&gt;"</span>);</pre>
  1276. <p><!--CRLF--></p>
  1277. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0;"><span id="lnum56" style="color:#606060;">  56:</span>     });</pre>
  1278. <p><!--CRLF--></p>
  1279. <pre style="overflow:visible;font-size:8pt;font-family:'Courier New', courier, monospace;color:black;direction:ltr;text-align:left;margin:0;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0;"><span id="lnum57" style="color:#606060;">  57:</span> };</pre>
  1280. <p><!--CRLF--></p>
  1281. </div>
  1282. </div>
  1283. ]]></content:encoded>
  1284. <wfw:commentRss>https://tommdaly.wordpress.com/2014/05/14/delete-a-workflow-on-the-host-web-from-the-app-web/feed/</wfw:commentRss>
  1285. <slash:comments>2</slash:comments>
  1286. <media:content url="https://2.gravatar.com/avatar/be15f0680dfa61960dc5799b7ca508d5ac5beeae683a0e309ac667809e07840e?s=96&#38;d=identicon&#38;r=G" medium="image">
  1287. <media:title type="html">tommdaly</media:title>
  1288. </media:content>
  1289. </item>
  1290. </channel>
  1291. </rss>
  1292.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//tommdaly.wordpress.com/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda