Get Design View back on SharePoint 2013 (woohoo!)

Want to use Design View on a 2013 site?  Well, now you can.

With a Fiddler HTTP function we can adjust the server response to say “14” instead of “15” and open any SharePoint 2013 site with SharePoint Designer 2010 to have access to classic Design View.   Obviously there are downsides to this approach (not formally supported), but it also can be useful in many scenarios.  Check it out and please leave a comment if you find this helpful.

 

Instructions

  1. Download Fiddler http://www.telerik.com/fiddler
  2. Download SP Designer 2010 http://www.microsoft.com/en-us/download/details.aspx?id=16573
  3. Launch Fiddler, press Ctrl + R, and update the Custom Rules JS file with the code below
  4. Launch SP Designer 2010 and open site URL
  5. Have fun!

Fiddler

You need to add Custom Rules to Fiddler.  There are two options:

  1. Download CustomRules.JS with custom logic
  2. Copy the below code and add to your local CustomRules.JS file in the function OnBeforeResponse(oSession: Session).

// START BLOG POST from @spjeff 
// https://www.spjeff.com/2014/05/08/get-design-view-back-on-sharepoint-2013-woohoo
//INF
if (oSession.oRequest["User-Agent"] == "Mozilla/4.0 (compatible; MS FrontPage 14.0)" &&
	oSession.PathAndQuery == "/_vti_inf.html") {
	// Remove any compression or chunking
    oSession.utilDecodeResponse();
    if (oSession.responseBodyBytes) {
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
    
        // Replace strings
        oBody = oBody.replace("FPVersion=\"15.00.0.000\"", "FPVersion=\"14.00.0.000\"");
        oSession.utilSetResponseBody(oBody); 
    }
}
//RPC
if (oSession.oRequest["User-Agent"] == "MSFrontPage/14.0" &&
	oSession.PathAndQuery == "/_vti_bin/shtml.dll/_vti_rpc") {
	// Remove any compression or chunking
    oSession.utilDecodeResponse();
    if (oSession.responseBodyBytes) {
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
    
        // Replace strings
        oBody = oBody.replace("major ver=15", "major ver=14");
        oSession.utilSetResponseBody(oBody); 
    }
}
 
//AUTHOR
var suffix = "/_vti_bin/_vti_aut/author.dll";
if (oSession.oRequest["User-Agent"] == "MSFrontPage/14.0" &&
	oSession.PathAndQuery.indexOf(suffix, oSession.PathAndQuery.length - suffix.length) !== -1) {
    if (oSession.responseBodyBytes) {
        // Remove any compression or chunking
        oSession.utilDecodeResponse();
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
    
        // Replace strings
        oBody = oBody.replace("
  • SR|15.0", "
  • SR|14.0"); oSession.utilSetResponseBody(oBody); } } // END BLOG POST
  •  

    Use Cases

    • Support upgraded 2010 sites.    If you developed with SP Designer 2010, you might need Design View to support sites after upgrade to 2013.
    • New HTML and CSS creation.  WYSIWYG can be great for making simple files to support new JavaScript development.
    • DataFormWebPart .  Create blank ASPX page, add the DataFormWebPart and Conditional Formatting with WYSIWYG, then copy finished <DataFormWebPart> code tag into a 2013 native ASPX page.

    Notes

    • Non intrusive approach.   Fiddler runs local on the developer’s machine.   No server changes or changes for end users.
    • This doesn’t give you Design View of any native 2013 ASPX page.  Those are fundamentally different with new Minimal Download Strategy async load, new master page, and other stuff so it just shows a gray background.
    • Not formally supported.
    • Cool way to support SP2010 upgraded sites.

    References

     

    homer-computer-woohoo

     

    5-8-2014 3-41-29 PM

    11 Comments

    1. 🙁 Doesn’t work for me. I get “Error Creating Control” all throughout the design view of my site.

    2. I got pretty excited about this. I have installed Fiddler 4.6.0.2. I updated my rules to the one you have in Git. When I attempt to launch a SharePoint 2013 site in SharePoint 2010 Fiddler throws an error. Any ideas?

      There was a problem with your FiddlerScript.

      Array cannot be null.
      Parameter name: bytes
      at System.Text.Encodinig.GetString(Byte[] bytes)
      at FiddlerScriptNamespace.Handlers.OnBeforeRequest(Session oSession)
      at Fiddler.FiddlerScript.DoBeforeRequest(Session oSession)

      1. Want to upload your Fiddler JS somewhere and link here? Gist?

        Probably a syntax or typo issue. Opening with VS Code and JSHint plugin often helps me find JS typos.

          1. JS looks correct. No typos.

            Almost seems to be that (oSession.responseBodyBytes) is null and the parent call to System.Text.Encoding.UTF8.GetString() fails.

            I added IF statement to test for NULL as a safety measure.

            Want to apply new JS rules and test again?

            Highlighted relevant JS code block at
            https://github.com/spjeff/spadmin/blob/master/get-design-view-back-on-sharepoint-2013-wooho/CustomRules.js#L164-L208

            Note lines #171,185,198 for the new IF statement to first test for NULL before reading text.

            1. The good news is the errors went away. The bad news is I get the standard message about not being able to open web sites with versions other than 2010 when I attempt to open a 2013 site.

    Leave a Comment

    Return to Top ▲Return to Top ▲