From a6450d04554837a1e9f721eb0500f3442b2109ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Lage?= Date: Thu, 18 Jun 2015 21:58:07 +0200 Subject: [PATCH] Feature Change and update Core.EmbedJavaScript.HeaderFooter --- .../Core.EmbedJavaScript.HeaderFooter.sln | 29 ++ .../AppManifest.xml | 21 ++ .../Content/App.css | 35 +++ .../Content/Elements.xml | 6 + .../Content/SharePointProjectItem.spdata | 7 + .../Core.EmbedJavaScript.HeaderFooter.csproj | 106 +++++++ .../Features/Feature1/Feature1.Template.xml | 3 + .../Features/Feature1/Feature1.feature | 9 + .../Images/AppIcon.png | Bin 0 -> 3540 bytes .../Images/Elements.xml | 6 + .../Images/SharePointProjectItem.spdata | 7 + .../Package/Package.Template.xml | 3 + .../Package/Package.package | 11 + .../Pages/Default.aspx | 96 ++++++ .../Pages/Elements.xml | 6 + .../Pages/SharePointProjectItem.spdata | 7 + .../Scripts/App.js | 69 ++++ .../Scripts/Common.js | 54 ++++ .../Scripts/Core.js | 9 + .../Scripts/Data.js | 185 +++++++++++ .../Scripts/Elements.xml | 10 + .../Scripts/PnPGlobal.js | 296 ++++++++++++++++++ .../Scripts/SharePointProjectItem.spdata | 11 + .../Scripts/_references.js | 7 + .../packages.config | 4 + 25 files changed, 997 insertions(+) create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.sln create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/AppManifest.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/App.css create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/Elements.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/SharePointProjectItem.spdata create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.csproj create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.Template.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.feature create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/AppIcon.png create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/Elements.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/SharePointProjectItem.spdata create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.Template.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.package create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Default.aspx create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Elements.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/SharePointProjectItem.spdata create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/App.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Common.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Core.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Data.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Elements.xml create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/PnPGlobal.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/SharePointProjectItem.spdata create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/_references.js create mode 100644 Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/packages.config diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.sln b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.sln new file mode 100644 index 000000000..a898a3e86 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.sln @@ -0,0 +1,29 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.EmbedJavaScript.HeaderFooter", "Core.EmbedJavaScript.HeaderFooter\Core.EmbedJavaScript.HeaderFooter.csproj", "{6ABFAFAA-0383-479D-9FFD-081A7B8535CF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{41697AAF-B595-44CA-BB02-A21F41FDDF50}" + ProjectSection(SolutionItems) = preProject + readme.md = readme.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Release|Any CPU.Build.0 = Release|Any CPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF}.Release|Any CPU.Deploy.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/AppManifest.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/AppManifest.xml new file mode 100644 index 000000000..6ad8bc8f4 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/AppManifest.xml @@ -0,0 +1,21 @@ + + + + + Core.EmbedJavaScript.HeaderFooter + ~appWebUrl/Pages/Default.aspx?{StandardTokens} + + + + + + + + + + diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/App.css b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/App.css new file mode 100644 index 000000000..5b310178f --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/App.css @@ -0,0 +1,35 @@ +/* Place custom styles below */ +table { + border-width: 1px; + border-color: #000000; + border-collapse: collapse; +} + + table th { + border-width: 1px; + padding: 8px; + border-style: solid; + border-color: #000000; + background-color: #dedede; + } + + table td { + border-width: 1px; + padding: 8px; + border-style: solid; + border-color: #000000; + } + + +#ProvisionTable div { + float: left; + border-style: solid; + border-color: #000000; + border-width: 1px; + padding: 10px; + text-align: center; +} + +.TBTitle .TBObject { + width: 120px; +} diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/Elements.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/Elements.xml new file mode 100644 index 000000000..62ec68a77 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/Elements.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/SharePointProjectItem.spdata b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/SharePointProjectItem.spdata new file mode 100644 index 000000000..b9bc8c0ec --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Content/SharePointProjectItem.spdata @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.csproj b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.csproj new file mode 100644 index 000000000..19b3bef2b --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter.csproj @@ -0,0 +1,106 @@ + + + + + Debug + AnyCPU + {6ABFAFAA-0383-479D-9FFD-081A7B8535CF} + Library + Properties + Core.EmbedJavaScript.HeaderFooter + Core.EmbedJavaScript.HeaderFooter + v4.5 + 16.0 + 512 + {C1CDDADD-2546-481F-9697-4EA41081F2FC};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 12.0 + 12.1 + False + SharePointApp + {18820891-9a1c-41e5-8d77-837b0e32c0a9} + {e18446c1-b497-46be-b62a-26ea853d5d04} + {254c799d-f30f-4e5e-8096-356137769d57} + {280abd28-8149-4bf8-a9cb-51102c1da380} + {87cd1838-924a-4b86-88e8-9c6bab066331} + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + {4fc52bfb-77ce-4209-8c61-129c0e6801c4} + + + + + + + {87cd1838-924a-4b86-88e8-9c6bab066331} + + + + + + + + + + + + {50b965af-23cd-4e2a-b1fc-5ae18ebdae31} + + + + + + + manifest-icon + + + + {89d3cadc-4b4c-43bc-8235-2360d502af26} + + + + + {ac6b7f67-3e27-4e9a-8b4b-a8308fd58ea6} + + + Package.package + + + {92dd8978-2f31-4521-909e-7297f091d2fe} + + + Feature1.feature + + + + + Designer + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.Template.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.Template.xml new file mode 100644 index 000000000..c27273d59 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.Template.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.feature b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.feature new file mode 100644 index 000000000..58593996e --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Features/Feature1/Feature1.feature @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/AppIcon.png b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/AppIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..ada40a3fe668d32dac7caedd033b9bb4d75a0a63 GIT binary patch literal 3540 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 + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/SharePointProjectItem.spdata b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/SharePointProjectItem.spdata new file mode 100644 index 000000000..fced76589 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Images/SharePointProjectItem.spdata @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.Template.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.Template.xml new file mode 100644 index 000000000..640ff0f38 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.Template.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.package b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.package new file mode 100644 index 000000000..3b84ed52f --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Package/Package.package @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Default.aspx b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Default.aspx new file mode 100644 index 000000000..201cf95b1 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Default.aspx @@ -0,0 +1,96 @@ +<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> + +<%@ Page Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" MasterPageFile="~masterurl/default.master" Language="C#" %> + +<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> +<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> +<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> + +<%-- The markup and script in the following Content element will be placed in the of the page --%> + + + + + + + + + + + + + + + + + + + +<%-- The markup in the following Content element will be placed in the TitleArea of the page --%> + + PnP Header & Footer + + +<%-- The markup and script in the following Content element will be placed in the of the page --%> + + +
Current Status:
+ + + + + + + + + + + + + + + + + + + + + + +
TitleObjectStatus
PropertyBagPnPGlobalBreadcrumbRibbon + +
Javascript FilePnPGlobal.jsLink + +
SiteCollectionPnPGlobalBreadcrumbRibbon + +
+
+
+ Provision Sequence: +
    +
  1. PropertyBag PnPGlobalBreadcrumbRibbon is created in RootWeb of the SiteCollection, this item will have the following JSON data:
    + {"Breadcrumb": [{"title": "Home","description": "Home","url":"https://github.com/OfficeDev"},{"title": "Product Category","description": "Product Category","url":"https://github.com/OfficeDev"},{"title": "Product","description": "Product","url":"https://github.com/OfficeDev"},{"title": "Example","description": "Example","url":"https://github.com/OfficeDev"}]}
  2. +
  3. Copy of File PnPGlobal.js to "_catalogs/masterpage/Display Template", this file supports the "ScriptLink" UserCustomAction
  4. +
  5. SiteCollection ScriptLink with name PnPGlobalBreadcrumbRibbon to PnPGlobal.js
  6. +
+
+ Breadcrumb base in JSON
+ + +
+
+
+
+ Add UserCustomAction Global Custom Breadcrumb and Ribbon in Site Collection +
+ +
+
+ Remove UserCustomAction Global Custom Breadcrumb and Ribbon in Site Collection +
+ +
+
+ +
diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Elements.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Elements.xml new file mode 100644 index 000000000..821ca1501 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/Elements.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/SharePointProjectItem.spdata b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/SharePointProjectItem.spdata new file mode 100644 index 000000000..76f2c90b7 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Pages/SharePointProjectItem.spdata @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/App.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/App.js new file mode 100644 index 000000000..5f348bb56 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/App.js @@ -0,0 +1,69 @@ +Core.GlobalBreadcrumbRibbon.OfficeApp.SP.App = { + HostWebUrl: PnPCommon.getQueryStringParameter("SPHostUrl").replace("#", ""), + AppWebUrl: PnPCommon.getQueryStringParameter("SPAppWebUrl").replace("#", ""), + AppUrlFile: PnPCommon.getQueryStringParameter("SPAppWebUrl").replace("#", "") + '/Scripts/PnPGlobal.js', + DestinationFile: '_catalogs/masterpage/Display Templates', + GlobalFile: 'PnPGlobal.js', + waitForm: null, + RootWeb: null, + ServerRelativeUrl: null, + GetInit: function () { + + PnPData.GetFileREST(PnPApp.GetFileRESTSuccess); + PnPData.GetSiteCollectionUserCustomAction(PnPApp.GetSiteCollectionUserCustomActionValidationSuccess); + }, + GetPropertieBagSuccess: function (data) { + var results = JSON.parse(data.body).d; + if (results.vti_x005f_GlobalBreadcrumbRibbon !== undefined) { + var logo = document.getElementById('TBPropertyBag'); + logo.src = "/_layouts/15/images/check.gif"; + } else { + var logo = document.getElementById('TBPropertyBag'); + logo.src = "/_layouts/15/images/delitem.gif"; + } + }, + GetSiteCollectionUserCustomActionValidationSuccess: function (data) { + var results = JSON.parse(data.body).d.results; + if (results !== undefined && results.length > 0) { + var logo = document.getElementById('TBUserCustomAction'); + logo.src = "/_layouts/15/images/check.gif"; + } else { + var logo = document.getElementById('TBUserCustomAction'); + logo.src = "/_layouts/15/images/delitem.gif"; + } + }, + GetFileRESTSuccess: function (data) { + var Exists = JSON.parse(data.body).d.Exists; + if (Exists) { + var logo = document.getElementById('TBFile'); + logo.src = "/_layouts/15/images/check.gif"; + } else { + var logo = document.getElementById('TBFile'); + logo.src = "/_layouts/15/images/delitem.gif"; + } + }, + AddProvisionOfUserCustomAction: function () { + if (document.getElementById('PropertyBagJSON').value !== "") { + if (PnPCommon.IsJsonString(document.getElementById('PropertyBagJSON').value)) { + PnPData.AddHostPropertyBag('vti_GlobalBreadcrumbRibbon', document.getElementById('PropertyBagJSON').value); + } else { + PnPData.AddHostPropertyBag('vti_GlobalBreadcrumbRibbon', PnPData.PropertyBag); + PnPCommon.NotifyMessage("JSON Parse is incorrect, default value was included"); + } + } else { + PnPData.AddHostPropertyBag('vti_GlobalBreadcrumbRibbon', PnPData.PropertyBag); + PnPCommon.NotifyMessage("JSON Parse is incorrect, default value was included"); + } + PnPData.GetBinaryFile(); + }, + RemoveProvisionOfUserCustomAction: function () { + PnPData.RemovePropertyBag(); + PnPData.RemoveHostSiteCollectionUserCustomAction(); + PnPData.DeleteGetFileUrl(); + PnPApp.GetInit(); + } +} +window.PnPApp = window.Core.GlobalBreadcrumbRibbon.OfficeApp.SP.App; +$(document).ready(function () { + PnPApp.GetInit(); +}); \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Common.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Common.js new file mode 100644 index 000000000..8055723df --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Common.js @@ -0,0 +1,54 @@ +Core.GlobalBreadcrumbRibbon.OfficeApp.SP.Common = { + ShowWaitMessage: function () { + if (PnPApp.waitForm === null) { + PnPApp.waitForm = SP.UI.ModalDialog.showWaitScreenWithNoClose("Loading", "Your request is being processed. Please wait while this process completes."); + } + }, + CloseWaitMessage: function () { + if (PnPApp.waitForm !== null) { + PnPApp.waitForm.close(0); + PnPApp.waitForm = null; + } + }, + NotifyMessage: function (msg) { + SP.UI.Notify.addNotification('' + msg + '', false); + }, + NotifyError: function (xhr) { + PnPCommon.CloseWaitMessage(); + SP.UI.Notify.addNotification(' Request failed. ' + xhr.status + '\n' + xhr.statusText + '', false); + $('.ms-trcnoti-bg').css('background-color', '#f8d4d4'); + $('.ms-trcnoti-bg').css('border-color', '#f5a6a7'); + }, + NotifyErrorSPJSOM: function (sender, args) { + PnPCommon.CloseWaitMessage(); + SP.UI.Notify.addNotification(' Request failed. ' + args.get_message() + '\n' + args.get_stackTrace() + '', false); + $('.ms-trcnoti-bg').css('background-color', '#f8d4d4'); + $('.ms-trcnoti-bg').css('border-color', '#f5a6a7'); + }, + getQueryStringParameter: function (param) { + var params = document.URL.split("?")[1].split("&"); + for (var i = 0; i < params.length; i = i + 1) { + var singleParam = params[i].split("="); + if (singleParam[0] == param) + return decodeURIComponent(singleParam[1]); + } + return ""; + }, + GetContext: function (appWebUrl) { + var context = new SP.ClientContext(appWebUrl); + context.set_webRequestExecutorFactory(new SP.ProxyWebRequestExecutorFactory(appWebUrl)); + return context; + }, + GetAppContext: function (context, hostWebUrl) { + return new SP.AppContextSite(context, hostWebUrl); + }, + IsJsonString: function (str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; + } +} +window.PnPCommon = window.Core.GlobalBreadcrumbRibbon.OfficeApp.SP.Common; \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Core.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Core.js new file mode 100644 index 000000000..cdd49e43f --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Core.js @@ -0,0 +1,9 @@ +Core = { + GlobalBreadcrumbRibbon: { + Version: "1.0.0", + OfficeApp: { + SP: { + } + } + } +} \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Data.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Data.js new file mode 100644 index 000000000..ca2f381cf --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Data.js @@ -0,0 +1,185 @@ +Core.GlobalBreadcrumbRibbon.OfficeApp.SP.Data = { + PropertyBag: '{"Breadcrumb": [{"title": "Home","description": "Home"},{"title": "Product Category","description": "Product Category"},{"title": "Product","description": "Product"},{"title": "Example","description": "Example"}]}', + AddHostPropertyBag: function (Item, property) { + var context = PnPCommon.GetContext(PnPApp.AppWebUrl); + var app = PnPCommon.GetAppContext(context, PnPApp.HostWebUrl); + var site = app.get_site(); + var web = site.get_rootWeb(); + context.load(web); + this.myPropBag = web.get_allProperties(); + this.myPropBag.set_item(Item, property); + web.update(); + context.executeQueryAsync(function () { + PnPCommon.CloseWaitMessage(); + PnPCommon.NotifyMessage("PropertyBag created"); + }, PnPCommon.NotifyErrorSPJSOM); + }, + RemovePropertyBag: function () { + var context = PnPCommon.GetContext(PnPApp.AppWebUrl); + var app = PnPCommon.GetAppContext(context, PnPApp.HostWebUrl); + var site = app.get_site(); + var web = site.get_rootWeb(); + context.load(web); + this.myPropBag = web.get_allProperties(); + this.myPropBag.set_item("vti_GlobalBreadcrumbRibbon", null); + web.update(); + context.executeQueryAsync(function () { + PnPCommon.CloseWaitMessage(); + PnPCommon.NotifyMessage("PropertyBag remove"); + }, PnPCommon.NotifyErrorSPJSOM); + }, + GetBinaryFile: function () { + var req = $.ajax({ + url: PnPApp.AppUrlFile, + type: "GET", + headers: { "Accept": "application/json; odata=verbose" }, + cache: false + }).done(function (fileContents) { + if (fileContents !== undefined && fileContents.length > 0) { + PnPData.UploadBinary(fileContents); + } + else { + PnPCommon.NotifyMessage('Error accesing File'); + } + }).fail(PnPCommon.NotifyError); + + }, + UploadBinary: function (contents) { + var FileInfo = new SP.FileCreationInformation(); + FileInfo.set_content(new SP.Base64EncodedByteArray()); + for (var i = 0; i < contents.length; i++) { + FileInfo.get_content().append(contents.charCodeAt(i)); + } + FileInfo.set_overwrite(true); + FileInfo.set_url(PnPApp.GlobalFile); + var context = PnPCommon.GetContext(PnPApp.AppWebUrl); + var app = PnPCommon.GetAppContext(context, PnPApp.HostWebUrl); + var site = app.get_site(); + var files = site.get_rootWeb().getFolderByServerRelativeUrl(PnPApp.DestinationFile).get_files(); + context.load(files); + files.add(FileInfo); + + context.executeQueryAsync(function () { + PnPCommon.NotifyMessage("File Copy with sucess"); + PnPData.GetSiteCollectionUserCustomAction(PnPData.GetSiteCollectionUserCustomActionAddSuccess); + }, PnPCommon.NotifyErrorSPJSOM); + }, + GetFileREST: function (success) { + var context = PnPCommon.GetContext(PnPCommon.getQueryStringParameter("SPAppWebUrl").replace("#", "")); + var app = PnPCommon.GetAppContext(context, PnPCommon.getQueryStringParameter("SPHostUrl").replace("#", "")); + var site = app.get_site(); + var web = site.get_rootWeb(); + context.load(web, 'Url', 'ServerRelativeUrl'); + + context.executeQueryAsync( + function () { + PnPApp.RootWeb = web.get_url() + ((web.get_url().indexOf('/', web.get_url().length - 1) !== -1) ? '' : '/'); + PnPApp.ServerRelativeUrl = web.get_serverRelativeUrl(); + PnPData.GetFileRESTRootWeb(success); + PnPData.GetPropertieBag(PnPApp.GetPropertieBagSuccess); + var link = document.getElementById('FileFolder'); + link.href = PnPApp.RootWeb + PnPApp.DestinationFile; + }, PnPCommon.NotifyErrorSPJSOM); + + }, + GetFileRESTRootWeb: function (success) { + var executor = new SP.RequestExecutor(PnPApp.AppWebUrl); + executor.executeAsync({ + url: PnPApp.AppWebUrl + "/_api/SP.AppContextSite(@target)/web/GetFileByServerRelativeUrl('" + PnPApp.ServerRelativeUrl + "_catalogs/masterpage/Display%20Templates/PnPGlobal.js')/Exists?@target='" + PnPApp.RootWeb + "'", + method: "GET", + headers: { "Accept": "application/json; odata=verbose" }, + success: success, + error: function () { + var logo = document.getElementById('TBFile'); + logo.src = "/_layouts/15/images/delitem.gif"; + } + }); + }, + GetSiteCollectionUserCustomAction: function (success) { + var executor = new SP.RequestExecutor(PnPApp.AppWebUrl); + executor.executeAsync({ + url: PnPApp.AppWebUrl + "/_api/SP.AppContextSite(@target)/site/usercustomactions?@target='" + PnPApp.HostWebUrl + "'&$select=Name,Id&$filter=Name eq 'PnPGlobalBreadcrumbRibbon'", + method: "GET", + headers: { "Accept": "application/json; odata=verbose" }, + success: success, + error: PnPCommon.NotifyError + }); + }, + AddHostSiteCollectionUserCustomAction: function () { + var context = PnPCommon.GetContext(PnPApp.AppWebUrl); + var app = PnPCommon.GetAppContext(context, PnPApp.HostWebUrl); + var site = app.get_site(); + UserCustomActions = site.get_userCustomActions(); + newUserCustomAction = UserCustomActions.add(); + newUserCustomAction.set_name("PnPGlobalBreadcrumbRibbon"); + newUserCustomAction.set_title("PnPGlobalBreadcrumbRibbon"); + newUserCustomAction.set_description("Global Breadcrumb and Ribbon is accessible in SP"); + newUserCustomAction.set_location('ScriptLink'); + newUserCustomAction.set_scriptSrc('~SiteCollection/_catalogs/masterpage/Display Templates/PnPGlobal.js?version=' + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)); + newUserCustomAction.set_sequence(58); + newUserCustomAction.update(); + context.executeQueryAsync( + function () { + PnPCommon.NotifyMessage("Custom Global Breadcrumb and Ribbon provisioned in Site Collection"); + PnPApp.GetInit(); + }, PnPCommon.NotifyErrorSPJSOM + ); + } + , + RemoveHostSiteCollectionUserCustomAction: function () { + PnPData.GetSiteCollectionUserCustomAction(PnPData.GetSiteCollectionUserCustomActionSuccess); + } + , + GetSiteCollectionUserCustomActionAddSuccess: function (data) { + var results = JSON.parse(data.body).d.results; + if (results.length === 0) { + PnPData.AddHostSiteCollectionUserCustomAction(); + } + }, + GetSiteCollectionUserCustomActionSuccess: function (data) { + var results = JSON.parse(data.body).d.results; + for (var i = 0; i < results.length; i++) { + PnPData.DeleteUserCustomAction(results[i].Id); + PnPCommon.NotifyMessage("UserCustomAction \"PnPGlobalBreadcrumbRibbon\" is removed from Site Collection"); + } + }, + DeleteUserCustomAction: function (UCAId) { + var executor = new SP.RequestExecutor(PnPApp.AppWebUrl); + executor.executeAsync({ + url: PnPApp.AppWebUrl + "/_api/SP.AppContextSite(@target)/site/UserCustomActions('" + UCAId + "')?@target='" + PnPApp.HostWebUrl + "'", + method: "POST", + headers: { + "IF-MATCH": "*", + "X-HTTP-Method": "DELETE", + "Accept": "application/json; odata=verbose" + }, + success: function () { PnPApp.GetInit(); }, + error: PnPCommon.NotifyError + }); + }, + DeleteGetFileUrl: function () { + var executor = new SP.RequestExecutor(PnPApp.AppWebUrl); + executor.executeAsync({ + url: PnPApp.AppWebUrl + "/_api/SP.AppContextSite(@target)/web/getfilebyserverrelativeurl('" + ((PnPApp.ServerRelativeUrl.length === 1) ? '' : PnPApp.ServerRelativeUrl) + "/_catalogs/masterpage/Display Templates/PnPGlobal.js')?@target='" + PnPApp.RootWeb + "'", + method: "POST", + headers: { + "IF-MATCH": "*", + "X-HTTP-Method": "DELETE", + "Accept": "application/json; odata=verbose" + }, + success: function () { PnPCommon.NotifyMessage("File \"PnPGlobal.js\" was deleted with sucess!"); PnPApp.GetInit(); }, + error: PnPCommon.NotifyError + }); + }, + GetPropertieBag: function (success) { + var executor = new SP.RequestExecutor(PnPApp.AppWebUrl); + executor.executeAsync({ + url: PnPApp.AppWebUrl + "/_api/SP.AppContextSite(@target)/web/allproperties?@target='" + PnPApp.RootWeb + "'&$select=vti_x005f_GlobalBreadcrumbRibbon", + method: "GET", + headers: { "Accept": "application/json; odata=verbose" }, + success: success, + error: PnPCommon.NotifyError + }); + } +} +window.PnPData = window.Core.GlobalBreadcrumbRibbon.OfficeApp.SP.Data; diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Elements.xml b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Elements.xml new file mode 100644 index 000000000..e22f8cce7 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/Elements.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/PnPGlobal.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/PnPGlobal.js new file mode 100644 index 000000000..b24688628 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/PnPGlobal.js @@ -0,0 +1,296 @@ +CoreGlobalBreadcrumbRibbon = { + GetInit: function () { + PnPGlobal.CreateBreadcrumb(); + PnPGlobal.CreateStyle(); + PnPGlobal.LoadSiteBreadcrumb(); + PnPGlobal.CreateFooter(); + window.addEventListener("DOMContentLoaded", RibbonValidation, false); + }, + CreateFooter: function () { + SP.SOD.executeOrDelayUntilScriptLoaded(function () { + var headID = document.getElementsByTagName("body")[0]; + var FooterNode = document.createElement('div'); + FooterNode.innerHTML = '
'; + headID.appendChild(FooterNode); + }, "sp.js"); + }, + CreateStyle: function () { + var headID = document.getElementsByTagName("head")[0]; + var cssNode = document.createElement('style'); + cssNode.innerHTML = ".PnPFooter{height: 35px;width: 100%;background-position: 0 0;background-attachment: scroll;position:fixed;bottom:0;left:0;}.PnPFooter .breadcrumb a{color:white;} .PnPFooter .breadcrumb li+li:before {content:\">> \";color:white;}.PnPFooter a{color:White;}#CustomRibbon div{padding-top: 5px; padding-left: 10px; float: left;}.breadcrumb li {display: inline;}.breadcrumb li+li:before {content:\">> \";}"; + headID.appendChild(cssNode); + }, + CreateBreadcrumb: function () { + SP.SOD.executeOrDelayUntilScriptLoaded(function () { + var element = document.createElement('div'); + var context = new SP.ClientContext.get_current(); + var site = context.get_site(); + var web = site.get_rootWeb().get_allProperties(); + context.load(web) + context.executeQueryAsync(function () { + var results = JSON.parse(web.get_item('vti_GlobalBreadcrumbRibbon')); + var breadcrumb = ''; + element.innerHTML = breadcrumb; + var Custombreadcrumb = document.getElementById("s4-bodyContainer"); + Custombreadcrumb.insertBefore(element, Custombreadcrumb.childNodes[0]); + + }, function () { }); + + }, "sp.js"); + }, + LoadSiteBreadcrumb: function () { + SP.SOD.executeOrDelayUntilScriptLoaded(function () { + var clientcontext = SP.ClientContext.get_current(); + var site = clientcontext.get_site(); + var currentWeb = clientcontext.get_web(); + clientcontext.load(currentWeb, 'ServerRelativeUrl', 'Title', 'ParentWeb', 'Url'); + clientcontext.load(site, 'ServerRelativeUrl'); + clientcontext.executeQueryAsync( + function () { + + var element = document.createElement('ol'); + element.id = "breadcrumbSite"; + element.className = "breadcrumb"; + var Footerelement = document.createElement('ol'); + Footerelement.id = "footerbreadcrumbSite"; + Footerelement.className = "breadcrumb"; + var Custombreadcrumb = document.getElementById("s4-bodyContainer"); + Custombreadcrumb.insertBefore(element, Custombreadcrumb.childNodes[0]); + var CustomFooterbreadcrumb = document.getElementById("PnPFooter"); + CustomFooterbreadcrumb.insertBefore(Footerelement, CustomFooterbreadcrumb.childNodes[0]); + var li = document.createElement('li'); + li.innerHTML = '' + currentWeb.get_title() + ''; + Custombreadcrumb = document.getElementById("breadcrumbSite"); + Custombreadcrumb.insertBefore(li.cloneNode(true), Custombreadcrumb.childNodes[0]); + CustomFooterbreadcrumb = document.getElementById("footerbreadcrumbSite"); + CustomFooterbreadcrumb.insertBefore(li.cloneNode(true), CustomFooterbreadcrumb.childNodes[0]); + if (site.get_serverRelativeUrl() !== currentWeb.get_serverRelativeUrl()) { + PnPGlobal.RecursiveWeb(currentWeb.get_parentWeb().get_serverRelativeUrl()) + } + }, fail); + }, "sp.js"); + }, + RecursiveWeb: function (siteUrl) { + var clientcontext = new SP.ClientContext(siteUrl); + var site = clientcontext.get_site(); + var currentWeb = clientcontext.get_web(); + clientcontext.load(currentWeb, 'ServerRelativeUrl', 'Title', 'ParentWeb', 'Url'); + clientcontext.load(site, 'ServerRelativeUrl'); + clientcontext.executeQueryAsync( + function () { + if (site.get_serverRelativeUrl() !== currentWeb.get_serverRelativeUrl()) { + var li = document.createElement('li'); + li.innerHTML = '' + currentWeb.get_title() + ''; + var Custombreadcrumb = document.getElementById("breadcrumbSite"); + var CustomFooterbreadcrumb = document.getElementById("footerbreadcrumbSite"); + Custombreadcrumb.insertBefore(li.cloneNode(true), Custombreadcrumb.childNodes[0]); + CustomFooterbreadcrumb.insertBefore(li.cloneNode(true), CustomFooterbreadcrumb.childNodes[0]); + PnPGlobal.RecursiveWeb(currentWeb.get_parentWeb().get_serverRelativeUrl()) + } else { + var li = document.createElement('li'); + li.innerHTML = '' + currentWeb.get_title() + ''; + var Custombreadcrumb = document.getElementById("breadcrumbSite"); + var CustomFooterbreadcrumb = document.getElementById("footerbreadcrumbSite"); + Custombreadcrumb.insertBefore(li.cloneNode(true), Custombreadcrumb.childNodes[0]); + CustomFooterbreadcrumb.insertBefore(li.cloneNode(true), CustomFooterbreadcrumb.childNodes[0]); + } + + }, fail); + } +} +window.PnPGlobal = window.CoreGlobalBreadcrumbRibbon; + +PnPGlobal.GetInit(); +(function (open) { + + XMLHttpRequest.prototype.open = function (method, url, async, user, pass) { + + this.addEventListener("readystatechange", function () { + window.addEventListener("DOMContentLoaded", RibbonValidation, false); + }, false); + + open.call(this, method, url, async, user, pass); + }; + +})(XMLHttpRequest.prototype.open); +function RibbonValidation() { + SP.SOD.executeOrDelayUntilScriptLoaded(function () { + try { + var pm = SP.Ribbon.PageManager.get_instance(); + pm.add_ribbonInited(function () { + CreateRibbon(); + }); + var ribbon = null; + try { + ribbon = pm.get_ribbon(); + } + catch (e) { } + if (!ribbon) { + if (typeof (_ribbonStartInit) == "function") + _ribbonStartInit(_ribbon.initialTabId, false, null); + } + else { + CreateRibbon(); + } + } catch (e) + { } + }, "sp.ribbon.js"); +} +function CreateRibbon() { + GetUrlDoc(); + var Ribbonhtml = document.createElement('div'); + Ribbonhtml.setAttribute("id", "CustomRibbon"); + Ribbonhtml.innerHTML = "

Ribbon Example

SP Add-in\'s
"; + var ribbon = SP.Ribbon.PageManager.get_instance().get_ribbon(); + if (ribbon) { + var tab = new CUI.Tab(ribbon, 'GlobalRibbon.Tab', 'Option', 'Option', 'GlobalRibbon.Tab.Command', false, '', null); + ribbon.addChildAtIndex(tab, 1); + var group = new CUI.Group(ribbon, 'GlobalRibbon.Tab.Group', 'Custom Ribbon', 'Global Ribbon Example', 'GlobalRibbon.Group.Command', null); + tab.addChild(group); + } + SelectRibbonTab('GlobalRibbon.Tab', false); + document.getElementById("GlobalRibbon.Tab.Group").childNodes[0].childNodes[0].appendChild(Ribbonhtml); + SelectRibbonTab('Ribbon.Read', true); + window.removeEventListener("DOMContentLoaded", RibbonValidation, false); +} +function LoadApps() { + clientcontext = SP.ClientContext.get_current() + currentWeb = clientcontext.get_web(); + appinstancesList = SP.AppCatalog.getAppInstances(clientcontext, currentWeb); + clientcontext.load(appinstancesList); + clientcontext.executeQueryAsync(Success, fail); +} +function DialogApps(stringHtml) { + var element = document.createElement('div'); + element.innerHTML = stringHtml; + SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', { + html: element, + title: "SharePoint Add-in", + allowMaximize: false, + showClose: true, + autoSize: true + }); +} +function Success() { + var stringHtml = ''; + var list = appinstancesList.getEnumerator(); + while (list.moveNext()) { + var current = list.get_current(); + + stringHtml += '
' + current.get_title() + '
Link
'; + } + DialogApps(stringHtml); +} +function fail(sender, args) { + alert(args.get_message()); +} +function getQueryStringParameter(param, serverRelativeUrl) { + if (document.URL.indexOf("_layouts/15/start.aspx#") > -1) { return getQueryStringParameterMDS(param, serverRelativeUrl) } + else if (document.URL.split("?").length > 1) { + var params = document.URL.split("?")[1].split("&"); + for (var i = 0; i < params.length; i = i + 1) { + var singleParam = params[i].split("="); + if (singleParam[0] == param) + return decodeURIComponent(singleParam[1]).replace(serverRelativeUrl, ""); + } + if (_spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0] === "Lists") { + return _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0] + "/" + _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[1]; + } else { + return _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0]; + } + } else { + if (_spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0] === "Lists") { + return _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0] + "/" + _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[1]; + } else { + return _spPageContextInfo.serverRequestPath.replace(serverRelativeUrl, "").split("/")[0]; + } + } +} +function getQueryStringParameterMDS(param, serverRelativeUrl) { + if (document.URL.split("#").length > 1) { + if (document.URL.split("?").length > 1) { + var params = document.URL.split("?")[1].split("&"); + for (var i = 0; i < params.length; i = i + 1) { + var singleParam = params[i].split("="); + if (singleParam[0] == param) { + return decodeURIComponent(singleParam[1]); + } else if (i < params.length && singleParam[0] !== param) { + return decodeURIComponent(document.URL.split("#")[1]); + } + } + } else { + return serverRelativeUrl + decodeURIComponent(document.URL.split("#")[1]); + } + } else { + return ""; + } + +} +function GetUrlDoc() { + var elements = document.getElementsByClassName("ListBreadcumb"); + while (elements.length > 0) { + elements[0].parentNode.removeChild(elements[0]); + } + clientcontext = SP.ClientContext.get_current() + var currentWeb = clientcontext.get_web(); + clientcontext.load(currentWeb, 'ServerRelativeUrl'); + clientcontext.executeQueryAsync(function () { + var fullurl = currentWeb.get_serverRelativeUrl() + ((currentWeb.get_serverRelativeUrl().indexOf('/', currentWeb.get_serverRelativeUrl().length - 1) !== -1) ? '' : '/'); + var path = getQueryStringParameter("RootFolder", fullurl).replace(decodeURIComponent(currentWeb.get_serverRelativeUrl()), ""); + if (path.charAt(0) === "/") { + path = path.substring(1); + } + var CustomUrl; + if (path.split("/").length > 1) { + var params = clean(path.split("/"), ""); + for (var i = 0; i < params.length; i = i + 1) { + if (params[i].trim() !== "") { + fullurl = fullurl + params[i] + '/'; + if ((i === 0) && params[i].trim() === "Lists") { + } + else { + if (params[i].indexOf('.aspx') === -1) { + if (i === 1) { + if (params[i] !== "Forms") { + CustomUrl = document.createElement('li'); + CustomUrl.className = "ListBreadcumb"; + CustomUrl.innerHTML = '' + params[i] + ''; + document.getElementById("footerbreadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + document.getElementById("breadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + } + } else { + CustomUrl = document.createElement('li'); + CustomUrl.className = "ListBreadcumb"; + CustomUrl.innerHTML = '' + params[i] + ''; + document.getElementById("footerbreadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + document.getElementById("breadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + } + + } + } + } + } + } else { + fullurl = fullurl + path + '/'; + CustomUrl = document.createElement('li'); + CustomUrl.className = "ListBreadcumb"; + CustomUrl.innerHTML = '' + path + ''; + document.getElementById("footerbreadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + document.getElementById("breadcrumbSite").appendChild(CustomUrl.cloneNode(true)); + } + }, fail); +} +function clean(value, deleteValue) { + for (var i = 0; i < value.length; i++) { + if (value[i] == deleteValue) { + value.splice(i, 1); + i--; + } + } + return value; +}; \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/SharePointProjectItem.spdata b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/SharePointProjectItem.spdata new file mode 100644 index 000000000..2a1fa90fe --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/SharePointProjectItem.spdata @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/_references.js b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/_references.js new file mode 100644 index 000000000..e6897cc27 --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/Scripts/_references.js @@ -0,0 +1,7 @@ +/// +/// +/// +/// +/// +/// +/// diff --git a/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/packages.config b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/packages.config new file mode 100644 index 000000000..8dc02817e --- /dev/null +++ b/Samples/Core.EmbedJavaScript.HeaderFooter/Core.EmbedJavaScript.HeaderFooter/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file