Wednesday, November 8, 2017

Client Side Override the Site Logo's link in an SharePoint Site

In SharePoint sites that have any kind of hierarchy of subwebs, it is frequently desirable to override the logo's link behavior to link back to the root of the site collection.   There's a bunch of guidance on how to do this by overriding the master page, but not much on how to do this client-side, to avoid MasterPage manipulation.   Here's a script that helps to do this:

//update site icon link, SP overrides any direct reassignment so you have to change the existing ID
//and then create a dummy element with the existing ID to avoid future JS errors.
//read old link id
var prevId = $("#DeltaSiteLogo > a").attr('id');
//change the id
$("#" + prevId).attr({
      'title': 'Employee Portal Home',
      'href':window.location.protocol + "//" +
$("#DeltaSiteLogo > a").after("<a id='" + prevId + "' href='#' style='display:none'>Dummy</a>");

You'll need jQuery to do this and I'd recommend putting this into a file and then injecting via a SiteCollection scope custom action.   Here's the simplest way to do that: 

Wednesday, March 29, 2017

Connect-PnPOnline : For security reasons DTD is prohibited in this XML document. error

Until today I had never received this error when trying to connect to SPO.    If you get this error there's a good chance it's related to missing records on the DNS server your machine is relying upon.  If not set, there's a good chance you're using your ISP's DNS servers, whose records may not be as up to date as others.  The quick fix (at least for me) was to alter my DNS settings to point to more reliably up-to-date DNS.   Here's a how to fix this issu (on Windows 10, if you aren't using windows 10, follow your OS instructions on updating DNS settings and then just jump to step 4 below) along with a few options for DNS settings that I tested:

  1. Click Start and type "View Network Connections.
  2. Right-Click your adapter that connects to the internet and choose properties
  3. Choose TCP/IP v4 and then click the "Properties" button
  4. At the bottom of the IP v4 properties window, select the radio button that says "Use the following DNS Server addresses" and enter in a primary and secondar DNS.
    1. You can view a recently updated list of options here: 
    2. FWIW, I chose Google's, Primary: and Secondary:
  5. Click OK out of all the windows and retry the Connect-PnP (or Connect-SPO) command.

Monday, August 15, 2016

Reordering the default content type for document sets

Had a particularly annoying time with this as the document sets were already in use and was attempting to do this in SharePoint Online.    My scenario was that I was using document sets and only wanted document sets in the root folder.  So I set the other ctypes as not visible, but then the customer asked to default to one of the content types that wasn't previously set up at the top of the list, and I couldn't reorder in the "Document Set Setting" option of the document set content type because there's a multi-select box with no up/down functionality for these.   As a last ditch effort I went back to the List Settings and just made all content types visible on the new button, which enabled the documents that were supposed to created in the document set to be created at the root level (temporarily).  Then I reordered the content types, then set the non-docset content types back to not being visible.  VOILA! to my surprise that solved the problem.   

I had previously tried to reorder them but I didn't make them visible first and it didn't work. 

Hope this helps someone else spend less time scratching their head.