示例#1
0
        protected void rptDelete_Click(object sender, EventArgs e)
        {
            LinkButton lnkDelete = (LinkButton)sender;

            if (lnkDelete != null)
            {
                int    deleteAttachmentIndex = ((RepeaterItem)lnkDelete.NamingContainer).ItemIndex;
                string fileRelativeUrl       = lnkDelete.CommandArgument.ToString();

                using (var clientContext = GetClientContext())
                {
                    if (clientContext != null)
                    {
                        Microsoft.SharePoint.Client.File fileToDelete = clientContext.Web.GetFileByServerRelativeUrl(fileRelativeUrl);
                        clientContext.Load(fileToDelete);
                        fileToDelete.DeleteObject();
                        clientContext.ExecuteQuery();

                        DataTable tblAattachments = GetAttachmentsFromRepeaterControl();
                        tblAattachments.Rows[deleteAttachmentIndex].Delete();
                        rptUploadedFiles.DataSource = tblAattachments;
                        rptUploadedFiles.DataBind();
                    } // if (clientContext != null)
                }     // using (var clientContext = GetClientContext())
            }         // if (lnkDelete != null)
        }             // protected void rptDelete_Click
        /// <summary>
        /// Deletes a file from the specified container
        /// </summary>
        /// <param name="fileName">Name of the file to delete</param>
        /// <param name="container">Name of the container to delete the file from</param>
        public override void DeleteFile(string fileName, string container)
        {
            try
            {
                using (ClientContext cc = GetClientContext().Clone(GetConnectionString()))
                {
                    string fileServerRelativeUrl = GetFileServerRelativeUrl(cc, fileName, container);
                    File   file = cc.Web.GetFileByServerRelativeUrl(fileServerRelativeUrl);
                    cc.Load(file);
                    cc.ExecuteQueryRetry();

                    if (file != null)
                    {
                        file.DeleteObject();
                        cc.ExecuteQueryRetry();
                        Log.Info(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleted, fileName, GetConnectionString(), container);
                    }
                    else
                    {
                        Log.Warning(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleteNotFound, fileName, GetConnectionString(), container);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleteFailed, fileName, GetConnectionString(), container, ex.Message);
                throw;
            }
        }
        public JsonResult DeleteAttachment(string fileRelativeUrl)
        {
            try
            {
                SharePointContext spContext = Session["Context"] as SharePointContext;
                if (spContext == null)
                {
                    spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext);
                }

                using (var clientContext = spContext.CreateUserClientContextForSPHost())
                {
                    if (clientContext != null)
                    {
                        Microsoft.SharePoint.Client.File fileToDelete = clientContext.Web.GetFileByServerRelativeUrl(fileRelativeUrl);
                        clientContext.Load(fileToDelete);
                        fileToDelete.DeleteObject();
                        clientContext.ExecuteQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + "\n" + ex.StackTrace);
            }

            return(Json("Attachment Deleted"));
        } // public void DeleteAttachment
示例#4
0
        public static void DeleteFile(this Web site, string fileServerRelativeUrl)
        {
            File file = site.GetFileByServerRelativeUrl(fileServerRelativeUrl);

            file.DeleteObject();
            site.Context.ExecuteQuery();
        }
        public void CanUploadHtmlPageLayoutAndConvertItToAspxVersionTest()
        {
            var web = pageLayoutTestWeb;

            web.Context.Load(web);

            // First delete the published file (if any) to avoid running into to many minor versions error with automated testing
            List   masterPageGallery = web.GetCatalog((int)ListTemplateType.MasterPageCatalog);
            Folder rootFolder        = masterPageGallery.RootFolder;

            web.Context.Load(masterPageGallery);
            web.Context.Load(rootFolder);
            web.Context.ExecuteQueryRetry();

            Microsoft.SharePoint.Client.File htmlPublishLayout = rootFolder.GetFile(String.Format("{0}.html", htmlPublishingPageWithoutExtension));
            if (htmlPublishLayout != null)
            {
                htmlPublishLayout.DeleteObject();
                web.Context.ExecuteQueryRetry();
            }

            web.DeployHtmlPageLayout(htmlPublishingPagePath, pageLayoutTitle, "", welcomePageContentTypeId);
            web.Context.Load(web, w => w.ServerRelativeUrl);
            web.Context.ExecuteQueryRetry();
            var item = web.GetPageLayoutListItemByName(htmlPublishingPageWithoutExtension);

            Assert.AreNotEqual(null, item);
        }
示例#6
0
        private static bool DeleteDocument(string uri, string target, string fileName, string SharepointCountryCd, string GeographicRegionCd)
        {
            bool result = false;

            try
            {
                ClientContext context = new ClientContext(webUrl + GeographicRegionCd + @"/" + SharepointCountryCd);
                Web           web     = context.Web;
                //context.Credentials = new NetworkCredential(userName, passWord, domain);
                CredentialCache cc = new CredentialCache();
                cc.Add(new Uri(webUrl),
                       "NTLM", new NetworkCredential(userName, passWord, domain));
                context.Credentials        = cc;
                context.AuthenticationMode = ClientAuthenticationMode.Default;
                context.Load(web);
                context.ExecuteQuery();

                string finalUrl = @"/" + uri + target + @"/" + fileName;
                Microsoft.SharePoint.Client.File loadUrl = web.GetFileByServerRelativeUrl(finalUrl);
                loadUrl.DeleteObject();
                context.ExecuteQuery();
                result = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
示例#7
0
        private static void DeleteScript(ClientContext clientContext, string name)
        {
            File jsreportFile =
                clientContext.Web.GetFileByServerRelativeUrl(clientContext.Site.ServerRelativeUrl + "/SiteAssets/" +
                                                             name);

            clientContext.Load(jsreportFile);
            jsreportFile.DeleteObject();
        }
示例#8
0
        /// <summary>
        /// Deletes a file from the specified container
        /// </summary>
        /// <param name="fileName">Name of the file to delete</param>
        /// <param name="container">Name of the container to delete the file from</param>
        public override void DeleteFile(string fileName, string container)
        {
            try
            {
                using (ClientContext cc = GetClientContext().Clone(GetConnectionString()))
                {
                    List list = cc.Web.GetListByUrl(GetDocumentLibrary(container));

                    string folders = GetFolders(container);

                    Folder spFolder = null;

                    if (folders.Length == 0)
                    {
                        spFolder = list.RootFolder;
                    }
                    else
                    {
                        spFolder = list.RootFolder;
                        string[] parts = container.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
                        for (int i = 1; i < parts.Length; i++)
                        {
                            spFolder = spFolder.ResolveSubFolder(parts[i]);
                        }
                    }

                    if (!spFolder.IsPropertyAvailable("ServerRelativeUrl"))
                    {
                        spFolder.Context.Load(spFolder, w => w.ServerRelativeUrl);
                        spFolder.Context.ExecuteQueryRetry();
                    }

                    var  fileServerRelativeUrl = UrlUtility.Combine(spFolder.ServerRelativeUrl, fileName);
                    File file = cc.Web.GetFileByServerRelativeUrl(fileServerRelativeUrl);
                    cc.Load(file);
                    cc.ExecuteQueryRetry();

                    if (file != null)
                    {
                        file.DeleteObject();
                        cc.ExecuteQueryRetry();
                        Log.Info(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleted, fileName, GetConnectionString(), container);
                    }
                    else
                    {
                        Log.Warning(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleteNotFound, fileName, GetConnectionString(), container);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(Constants.LOGGING_SOURCE, CoreResources.Provisioning_Connectors_SharePoint_FileDeleteFailed, fileName, GetConnectionString(), container, ex.Message);
                throw;
            }
        }
示例#9
0
 /// <summary>
 /// Deletes the page
 /// </summary>
 /// <param name="clientContext">Client Context</param>
 /// <param name="pageUrl">Page URL</param>
 public static void Delete(ClientContext clientContext, string pageUrl)
 {
     if (null != clientContext && !string.IsNullOrWhiteSpace(pageUrl))
     {
         Microsoft.SharePoint.Client.File clientFile = clientContext.Web.GetFileByServerRelativeUrl(pageUrl);
         if (IsFileExists(clientContext, pageUrl))
         {
             clientFile.DeleteObject();
             clientContext.ExecuteQuery();
         }
     }
 }
示例#10
0
        public static void CreatePublishingPage(ClientContext clientContext, string pageName, string pagelayoutname, string url, string queryurl)
        {
            var publishingPageName = pageName + ".aspx";

            Web web = clientContext.Web;

            clientContext.Load(web);

            List pages = web.Lists.GetByTitle("Pages");

            clientContext.Load(pages.RootFolder, f => f.ServerRelativeUrl);
            clientContext.ExecuteQuery();

            Microsoft.SharePoint.Client.File file =
                web.GetFileByServerRelativeUrl(pages.RootFolder.ServerRelativeUrl + "/" + pageName + ".aspx");
            clientContext.Load(file, f => f.Exists);
            clientContext.ExecuteQuery();
            if (file.Exists)
            {
                file.DeleteObject();
                clientContext.ExecuteQuery();
            }
            PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(clientContext, web);

            clientContext.Load(publishingWeb);

            if (publishingWeb != null)
            {
                List publishingLayouts = clientContext.Site.RootWeb.Lists.GetByTitle("Master Page Gallery");

                ListItemCollection allItems = publishingLayouts.GetItems(CamlQuery.CreateAllItemsQuery());
                clientContext.Load(allItems, items => items.Include(item => item.DisplayName).Where(obj => obj.DisplayName == pagelayoutname));
                clientContext.ExecuteQuery();

                ListItem layout = allItems.Where(x => x.DisplayName == pagelayoutname).FirstOrDefault();
                clientContext.Load(layout);

                PublishingPageInformation publishingpageInfo = new PublishingPageInformation()
                {
                    Name = publishingPageName,
                    PageLayoutListItem = layout,
                };

                PublishingPage publishingPage = publishingWeb.AddPublishingPage(publishingpageInfo);
                publishingPage.ListItem.File.CheckIn(string.Empty, CheckinType.MajorCheckIn);
                publishingPage.ListItem.File.Publish(string.Empty);
                clientContext.ExecuteQuery();
            }
            SetSupportCaseContent(clientContext, "SupportCasesPage", url, queryurl);
        }
示例#11
0
        /// <summary>
        /// This function deletes a file from the designated folder in SharePoint.
        ///
        ///  Please refer to the checkForReqProps metod for required properties.
        ///
        /// </summary>
        /// <returns></returns>
        public Boolean DeleteSPFile()
        {
            Boolean       tmpRetVal  = true;
            ClientContext ctx        = null;
            Web           tmpWeb     = null;
            String        tmpRelPath = String.Empty;

            Microsoft.SharePoint.Client.File tmpfile = null;
            String tmpPropList = String.Empty;

            try
            {
                tmpPropList = checkForReqProps("DeleteFile");
                if (tmpPropList == String.Empty)
                {
                    RetErrMessage = "The following Properties must be set: " + tmpPropList;
                    tmpRetVal     = false;
                }
                else
                {
                    ctx        = new ClientContext(SPSiteURL);
                    tmpWeb     = ctx.Web;
                    tmpRelPath = SPRelPath + "/" + SPFileName;
                    tmpRelPath = tmpRelPath.Replace(" ", "%20");
                    tmpfile    = tmpWeb.GetFileByServerRelativeUrl(tmpRelPath);

                    ctx.Load(tmpfile);
                    tmpfile.DeleteObject();
                    ctx.ExecuteQuery();

                    tmpRetVal = true;
                }
            }

            catch (Exception ex)
            {
                RetErrMessage = ex.Message;
                tmpRetVal     = false;
            }
            return(tmpRetVal);
        }
示例#12
0
        public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            using (var scope = new PnPMonitoredScope(this.Name))
            {
                var context = web.Context as ClientContext;

                web.EnsureProperties(w => w.ServerRelativeUrl, w => w.RootFolder.WelcomePage);

                // Check if this is not a noscript site as we're not allowed to update some properties
                bool isNoScriptSite = web.IsNoScriptSite();

                foreach (var page in template.Pages)
                {
                    var url = parser.ParseString(page.Url);

                    if (!url.ToLower().StartsWith(web.ServerRelativeUrl.ToLower()))
                    {
                        url = UrlUtility.Combine(web.ServerRelativeUrl, url);
                    }

                    var exists = true;
                    Microsoft.SharePoint.Client.File file = null;
                    try
                    {
                        file = web.GetFileByServerRelativeUrl(url);
                        web.Context.Load(file);
                        web.Context.ExecuteQueryRetry();
                    }
                    catch (ServerException ex)
                    {
                        if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
                        {
                            exists = false;
                        }
                    }
                    if (exists)
                    {
                        if (page.Overwrite)
                        {
                            try
                            {
                                scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0_, url);

                                // determine url of current home page
                                string welcomePageUrl = web.RootFolder.WelcomePage;
                                string welcomePageServerRelativeUrl = welcomePageUrl != null
                                    ? UrlUtility.Combine(web.ServerRelativeUrl, web.RootFolder.WelcomePage)
                                    : null;

                                bool overwriteWelcomePage = string.Equals(url, welcomePageServerRelativeUrl, StringComparison.InvariantCultureIgnoreCase);

                                // temporarily reset home page so we can delete it
                                if (overwriteWelcomePage)
                                {
                                    web.SetHomePage(string.Empty);
                                }

                                file.DeleteObject();
                                web.Context.ExecuteQueryRetry();
                                web.AddWikiPageByUrl(url);
                                if (page.Layout == WikiPageLayout.Custom)
                                {
                                    web.AddLayoutToWikiPage(WikiPageLayout.OneColumn, url);
                                }
                                else
                                {
                                    web.AddLayoutToWikiPage(page.Layout, url);
                                }

                                if (overwriteWelcomePage)
                                {
                                    // restore welcome page to previous value
                                    web.SetHomePage(welcomePageUrl);
                                }
                            }
                            catch (Exception ex)
                            {
                                scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0__failed___1_____2_, url, ex.Message, ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        try
                        {
                            scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Pages_Creating_new_page__0_, url);

                            web.AddWikiPageByUrl(url);
                            if (page.Layout == WikiPageLayout.Custom)
                            {
                                web.AddLayoutToWikiPage(WikiPageLayout.OneColumn, url);
                            }
                            else
                            {
                                web.AddLayoutToWikiPage(page.Layout, url);
                            }
                        }
                        catch (Exception ex)
                        {
                            scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Creating_new_page__0__failed___1_____2_, url, ex.Message, ex.StackTrace);
                        }
                    }

#pragma warning disable 618
                    if (page.WelcomePage)
#pragma warning restore 618
                    {
                        web.RootFolder.EnsureProperty(p => p.ServerRelativeUrl);
                        var rootFolderRelativeUrl = url.Substring(web.RootFolder.ServerRelativeUrl.Length);
                        web.SetHomePage(rootFolderRelativeUrl);
                    }

#if !SP2013
                    bool webPartsNeedLocalization = false;
#endif
                    if (page.WebParts != null && page.WebParts.Any())
                    {
                        if (!isNoScriptSite)
                        {
                            var existingWebParts = web.GetWebParts(url);

                            foreach (var webPart in page.WebParts)
                            {
                                if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == parser.ParseString(webPart.Title)) == null)
                                {
                                    WebPartEntity wpEntity = new WebPartEntity
                                    {
                                        WebPartTitle = parser.ParseString(webPart.Title),
                                        WebPartXml   = parser.ParseXmlStringWebpart(webPart.Contents.Trim(new[] { '\n', ' ' }), web)
                                    };
                                    var wpd = web.AddWebPartToWikiPage(url, wpEntity, (int)webPart.Row, (int)webPart.Column, false);
#if !SP2013
                                    if (webPart.Title.ContainsResourceToken())
                                    {
                                        // update data based on where it was added - needed in order to localize wp title
                                        wpd.EnsureProperties(w => w.ZoneId, w => w.WebPart, w => w.WebPart.Properties);
                                        webPart.Zone             = wpd.ZoneId;
                                        webPart.Order            = (uint)wpd.WebPart.ZoneIndex;
                                        webPartsNeedLocalization = true;
                                    }
#endif
                                }
                            }

                            // Remove any existing WebPartIdToken tokens in the parser that were added by other pages. They won't apply to this page,
                            // and they'll cause issues if this page contains web parts with the same name as web parts on other pages.
                            parser.Tokens.RemoveAll(t => t is WebPartIdToken);

                            var allWebParts = web.GetWebParts(url);
                            foreach (var webpart in allWebParts)
                            {
                                parser.AddToken(new WebPartIdToken(web, webpart.WebPart.Title, webpart.Id));
                            }
                        }
                        else
                        {
                            scope.LogWarning(CoreResources.Provisioning_ObjectHandlers_Pages_SkipAddingWebParts, page.Url);
                        }
                    }

#if !SP2013
                    if (webPartsNeedLocalization)
                    {
                        page.LocalizeWebParts(web, parser, scope);
                    }
#endif

                    file = web.GetFileByServerRelativeUrl(url);
                    file.EnsureProperty(f => f.ListItemAllFields);

                    if (page.Fields.Any())
                    {
                        var item = file.ListItemAllFields;
                        foreach (var fieldValue in page.Fields)
                        {
                            item[fieldValue.Key] = parser.ParseString(fieldValue.Value);
                        }
                        item.Update();
                        web.Context.ExecuteQueryRetry();
                    }
                    if (page.Security != null && page.Security.RoleAssignments.Count != 0)
                    {
                        web.Context.Load(file.ListItemAllFields);
                        web.Context.ExecuteQueryRetry();
                        file.ListItemAllFields.SetSecurity(parser, page.Security, WriteMessage);
                    }
                }
            }
            return(parser);
        }
示例#13
0
        public void CleanUp()
        {
            Console.WriteLine("BrandingExtensionsTests.CleanUp");

            if (System.IO.File.Exists(customColorFilePath))
            {
                System.IO.File.Delete(customColorFilePath);
            }
            if (System.IO.File.Exists(customBackgroundFilePath))
            {
                System.IO.File.Delete(customBackgroundFilePath);
            }

            using (var context = TestCommon.CreateClientContext())
            {
                var web = context.Web;

                // Remove composed looks from server
                List      themeGallery = web.GetCatalog((int)ListTemplateType.DesignCatalog);
                CamlQuery query        = new CamlQuery();
                string    camlString   = @"
                    <View>
                        <Query>                
                            <Where>
                                <Contains>
                                    <FieldRef Name='Name' />
                                    <Value Type='Text'>Test_</Value>
                                </Contains>
                            </Where>
                        </Query>
                    </View>";
                query.ViewXml = camlString;
                var found = themeGallery.GetItems(query);
                web.Context.Load(found);
                web.Context.ExecuteQueryRetry();
                Console.WriteLine("{0} matching looks found to delete", found.Count);
                var looksToDelete = found.ToList();
                foreach (var item in looksToDelete)
                {
                    Console.WriteLine("Delete look item '{0}'", item["Name"]);
                    item.DeleteObject();
                    context.ExecuteQueryRetry();
                }

                // Remove Theme Files
                List             themesList  = web.GetCatalog((int)ListTemplateType.ThemeCatalog);
                Folder           rootFolder  = themesList.RootFolder;
                FolderCollection rootFolders = rootFolder.Folders;
                web.Context.Load(rootFolder);
                web.Context.Load(rootFolders, f => f.Where(folder => folder.Name == "15"));
                web.Context.ExecuteQueryRetry();

                Folder folder15 = rootFolders.FirstOrDefault();

                try
                {
                    Microsoft.SharePoint.Client.File customColorFile = folder15.Files.GetByUrl("custom.spcolor");
                    customColorFile.DeleteObject();
                    context.ExecuteQueryRetry();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception cleaning up: {0}", ex);
                }

                try
                {
                    Microsoft.SharePoint.Client.File customBackgroundFile = folder15.Files.GetByUrl("custombg.jpg");
                    customBackgroundFile.DeleteObject();
                    context.ExecuteQueryRetry();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception cleaning up: {0}", ex);
                }

                // Remove webs
                var webCollection1 = web.Webs;
                context.Load(webCollection1, wc => wc.Include(w => w.Title, w => w.ServerRelativeUrl));
                context.ExecuteQueryRetry();
                var websToDelete = new List <Web>();
                foreach (var web1 in webCollection1)
                {
                    if (web1.Title.StartsWith("Test_"))
                    {
                        var webCollection2 = web1.Webs;
                        context.Load(webCollection2, wc => wc.Include(w => w.Title, w => w.ServerRelativeUrl));
                        context.ExecuteQueryRetry();
                        var childrenToDelete = new List <Web>(webCollection2);
                        foreach (var web2 in childrenToDelete)
                        {
                            Console.WriteLine("Deleting site {0}", web2.ServerRelativeUrl);
                            web2.DeleteObject();
                            context.ExecuteQueryRetry();
                        }
                        websToDelete.Add(web1);
                    }
                }

                foreach (var web1 in websToDelete)
                {
                    Console.WriteLine("Deleting site {0}", web1.ServerRelativeUrl);
                    web1.DeleteObject();
                    try
                    {
                        context.ExecuteQueryRetry();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Exception cleaning up: {0}", ex);
                    }
                }

                // Remove pagelayouts
                List   masterPageGallery             = context.Web.GetCatalog((int)ListTemplateType.MasterPageCatalog);
                Folder rootFolderInMasterPageGallery = masterPageGallery.RootFolder;
                context.Load(rootFolderInMasterPageGallery, f => f.ServerRelativeUrl);
                context.ExecuteQueryRetry();

                try
                {
                    var fileServerRelativeUrl = UrlUtility.Combine(rootFolderInMasterPageGallery.ServerRelativeUrl, publishingPageWithoutExtension);
                    var file = context.Web.GetFileByServerRelativeUrl(String.Format("{0}.aspx", fileServerRelativeUrl));
                    context.Load(file);
                    context.ExecuteQueryRetry();
                    file.DeleteObject();
                    context.ExecuteQueryRetry();

                    fileServerRelativeUrl = UrlUtility.Combine(rootFolderInMasterPageGallery.ServerRelativeUrl, "test/test", publishingPageWithoutExtension);
                    file = context.Web.GetFileByServerRelativeUrl(String.Format("{0}.aspx", fileServerRelativeUrl));
                    context.Load(file);
                    context.ExecuteQueryRetry();
                    file.DeleteObject();
                    context.ExecuteQueryRetry();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception cleaning up: {0}", ex);
                }
            }

            Teardown();
        }
        public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            using (var scope = new PnPMonitoredScope(this.Name))
            {
                var context = web.Context as ClientContext;

                PublishingWeb webPub = PublishingWeb.GetPublishingWeb(context, web);
                context.Load(webPub);
                //context.ExecuteQuery();

                web.EnsureProperties(w => w.ServerRelativeUrl, w => w.RootFolder.WelcomePage, w => w.AllProperties);

                if (!web.IsPublishingWeb())
                {
                    throw new Exception(String.Format("Site '{0}' is not a publishing site", web.ServerRelativeUrl));
                }

                // Get Publishing Page Layouts
                List publishingLayouts            = context.Site.RootWeb.GetCatalog((int)ListTemplateType.MasterPageCatalog);
                ListItemCollection allPageLayouts = publishingLayouts.GetItems(CamlQuery.CreateAllItemsQuery());
                context.Load(allPageLayouts, items => items.Include(item => item.DisplayName, item => item["Title"]));
                context.ExecuteQuery();

                if (webPub != null)
                {
                    foreach (var page in template.PublishingPages)
                    {
                        var name = parser.ParseString(page.Name);

                        if (!name.ToLower().EndsWith(".aspx"))
                        {
                            name = String.Format("{0}{1}", name, ".aspx");
                        }

                        page.Name = name;

                        var    exists  = true;
                        string urlFile = string.Empty;
                        Microsoft.SharePoint.Client.File file = null;
                        try
                        {
                            urlFile = UrlUtility.Combine(web.ServerRelativeUrl, new[] { "Pages", page.Name });
                            file    = web.GetFileByServerRelativeUrl(urlFile);
                            web.Context.Load(file);
                            web.Context.ExecuteQuery();
                        }
                        catch (ServerException ex)
                        {
                            if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
                            {
                                exists = false;
                            }
                        }

                        if (exists)
                        {
                            if (page.Overwrite)
                            {
                                //delete page
                                if (web.RootFolder.WelcomePage.Contains(page.Name))
                                {
                                    web.SetHomePage(string.Empty);
                                }

                                file.DeleteObject();
                                web.Context.ExecuteQueryRetry();

                                try
                                {
                                    AddPublishingPage(context, webPub, allPageLayouts, page);
                                }
                                catch (Exception ex)
                                {
                                    scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0__failed___1_____2_, name, ex.Message, ex.StackTrace);
                                }
                            }
                        }
                        else
                        {
                            //Create Page
                            try
                            {
                                AddPublishingPage(context, webPub, allPageLayouts, page);
                            }
                            catch (Exception ex)
                            {
                                scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0__failed___1_____2_, name, ex.Message, ex.StackTrace);
                            }
                        }

                        if (page.WebParts != null & page.WebParts.Any())
                        {
                            var existingWebParts = web.GetWebParts(urlFile);

                            foreach (var webpart in page.WebParts)
                            {
                                if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
                                {
                                    WebPartEntity wpEntity = new WebPartEntity();
                                    wpEntity.WebPartTitle = webpart.Title;
                                    wpEntity.WebPartXml   = parser.ParseString(webpart.Contents.Trim(new[] { '\n', ' ' }));
                                    wpEntity.WebPartZone  = webpart.Zone;
                                    wpEntity.WebPartIndex = (int)webpart.Order;
                                    web.AddWebPartToWebPartPage(urlFile, wpEntity);
                                }
                            }
                            var allWebParts = web.GetWebParts(urlFile);
                            foreach (var webpart in allWebParts)
                            {
                                parser.AddToken(new WebPartIdToken(web, webpart.WebPart.Title, webpart.Id));
                            }
                        }


                        CheckInAndPublishPage(context, webPub, urlFile);
                    }
                }
            }
            return(parser);
        }
示例#15
0
        public override void ProvisionObjects(Web web, ProvisioningTemplate template)
        {
            Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_Pages);

            var context = web.Context as ClientContext;

            if (!web.IsPropertyAvailable("ServerRelativeUrl"))
            {
                context.Load(web, w => w.ServerRelativeUrl);
                context.ExecuteQueryRetry();
            }

            foreach (var page in template.PublishingPages)
            {
                var url = String.Format("{0}/Pages/{1}.aspx", web.ServerRelativeUrl, page.PageName);


                if (!url.ToLower().StartsWith(web.ServerRelativeUrl.ToLower()))
                {
                    url = UrlUtility.Combine(web.ServerRelativeUrl, url);
                }


                var exists = true;
                Microsoft.SharePoint.Client.File file = null;
                try
                {
                    file = web.GetFileByServerRelativeUrl(url);
                    web.Context.Load(file);
                    web.Context.ExecuteQuery();
                }
                catch (ServerException ex)
                {
                    if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
                    {
                        exists = false;
                    }
                }

                if (exists)
                {
                    if (page.Overwrite)
                    {
                        file.DeleteObject();
                        web.Context.ExecuteQueryRetry();
                        web.AddPublishingPage(page.PageName, page.PageLayoutName, page.Title, page.Content, page.Properties, page.Publish);
                    }

                    //if (file.CheckOutType == CheckOutType.None)
                    //{
                    //    file.CheckOut();
                    //}
                }
                else
                {
                    web.AddPublishingPage(page.PageName, page.PageLayoutName, page.Title, page.Content, page.Properties, page.Publish);
                }

                if (page.WelcomePage)
                {
                    if (!web.IsPropertyAvailable("RootFolder"))
                    {
                        web.Context.Load(web.RootFolder);
                        web.Context.ExecuteQueryRetry();
                    }

                    var rootFolderRelativeUrl = url.Substring(web.RootFolder.ServerRelativeUrl.Length);
                    web.SetHomePage(rootFolderRelativeUrl);
                }

                // Check out the file if needed



                if (page.WebParts != null & page.WebParts.Any())
                {
                    if (!exists)
                    {
                        file = web.GetFileByServerRelativeUrl(url);
                        web.Context.Load(file);
                        web.Context.ExecuteQuery();
                    }
                    file.CheckOut();


                    var existingWebParts = web.GetWebParts(url);

                    foreach (var webpart in page.WebParts)
                    {
                        if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
                        {
                            WebPartEntity wpEntity = new WebPartEntity();
                            wpEntity.WebPartTitle = webpart.Title;
                            wpEntity.WebPartIndex = (int)webpart.Order;
                            wpEntity.WebPartZone  = webpart.Zone;

                            if (!string.IsNullOrWhiteSpace(webpart.ListUrl))
                            {
                                var list = web.GetListByUrl(webpart.ListUrl);

                                var contents = String.Format(webpart.Contents, list.Id, list.Title);
                                wpEntity.WebPartXml = contents.Trim(new[] { '\n', ' ' });
                            }
                            else
                            {
                                wpEntity.WebPartXml = webpart.Contents.ToParsedString().Trim(new[] { '\n', ' ' });
                            }

                            //wpEntity.WebPartXml = webpart.Contents.ToParsedString().Trim(new[] {'\n', ' '});
                            web.AddWebPartToWebPartPage(url, wpEntity);
                        }
                    }

                    file.CheckIn("", CheckinType.MajorCheckIn);
                    file.Publish("");
                }
            }
        }
示例#16
0
        public override void ProvisionObjects(Web web, ProvisioningTemplate template, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_Pages);

            var context = web.Context as ClientContext;

            if (!web.IsPropertyAvailable("ServerRelativeUrl"))
            {
                context.Load(web, w => w.ServerRelativeUrl);
                context.ExecuteQueryRetry();
            }

            foreach (var page in template.Pages)
            {
                var url = page.Url.ToParsedString();


                if (!url.ToLower().StartsWith(web.ServerRelativeUrl.ToLower()))
                {
                    url = UrlUtility.Combine(web.ServerRelativeUrl, url);
                }


                var exists = true;
                Microsoft.SharePoint.Client.File file = null;
                try
                {
                    file = web.GetFileByServerRelativeUrl(url);
                    web.Context.Load(file);
                    web.Context.ExecuteQuery();
                }
                catch (ServerException ex)
                {
                    if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
                    {
                        exists = false;
                    }
                }
                if (exists)
                {
                    if (page.Overwrite)
                    {
                        file.DeleteObject();
                        web.Context.ExecuteQueryRetry();
                        web.AddWikiPageByUrl(url);
                        web.AddLayoutToWikiPage(page.Layout, url);
                    }
                }
                else
                {
                    web.AddWikiPageByUrl(url);
                    web.AddLayoutToWikiPage(page.Layout, url);
                }

                if (page.WelcomePage)
                {
                    if (!web.IsPropertyAvailable("RootFolder"))
                    {
                        web.Context.Load(web.RootFolder);
                        web.Context.ExecuteQueryRetry();
                    }

                    var rootFolderRelativeUrl = url.Substring(web.RootFolder.ServerRelativeUrl.Length);
                    web.SetHomePage(rootFolderRelativeUrl);
                }

                if (page.WebParts != null & page.WebParts.Any())
                {
                    var existingWebParts = web.GetWebParts(url);

                    foreach (var webpart in page.WebParts)
                    {
                        if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
                        {
                            WebPartEntity wpEntity = new WebPartEntity();
                            wpEntity.WebPartTitle = webpart.Title;
                            wpEntity.WebPartXml   = webpart.Contents.ToParsedString().Trim(new[] { '\n', ' ' });
                            web.AddWebPartToWikiPage(url, wpEntity, (int)webpart.Row, (int)webpart.Column, false);
                        }
                    }
                }
            }
        }
示例#17
0
        public override TokenParser ProvisionObjects(Web web, ProvisioningTemplate template, TokenParser parser, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            using (var scope = new PnPMonitoredScope(this.Name))
            {
                var context = web.Context as ClientContext;

                web.EnsureProperties(w => w.ServerRelativeUrl, w => w.RootFolder.WelcomePage);

                foreach (var page in template.Pages)
                {
                    var url = parser.ParseString(page.Url);

                    if (!url.ToLower().StartsWith(web.ServerRelativeUrl.ToLower()))
                    {
                        url = UrlUtility.Combine(web.ServerRelativeUrl, url);
                    }

                    var exists = true;
                    Microsoft.SharePoint.Client.File file = null;
                    try
                    {
                        file = web.GetFileByServerRelativeUrl(url);
                        web.Context.Load(file);
                        web.Context.ExecuteQuery();
                    }
                    catch (ServerException ex)
                    {
                        if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
                        {
                            exists = false;
                        }
                    }
                    if (exists)
                    {
                        if (page.Overwrite)
                        {
                            try
                            {
                                scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0_, url);

                                if (page.WelcomePage && url.Contains(web.RootFolder.WelcomePage))
                                {
                                    web.SetHomePage(string.Empty);
                                }

                                file.DeleteObject();
                                web.Context.ExecuteQueryRetry();
                                web.AddWikiPageByUrl(url);
                                web.AddLayoutToWikiPage(page.Layout, url);
                            }
                            catch (Exception ex)
                            {
                                scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Overwriting_existing_page__0__failed___1_____2_, url, ex.Message, ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        try
                        {
                            scope.LogDebug(CoreResources.Provisioning_ObjectHandlers_Pages_Creating_new_page__0_, url);

                            web.AddWikiPageByUrl(url);
                            web.AddLayoutToWikiPage(page.Layout, url);
                        }
                        catch (Exception ex)
                        {
                            scope.LogError(CoreResources.Provisioning_ObjectHandlers_Pages_Creating_new_page__0__failed___1_____2_, url, ex.Message, ex.StackTrace);
                        }
                    }

                    if (page.WelcomePage)
                    {
                        web.RootFolder.EnsureProperty(p => p.ServerRelativeUrl);
                        var rootFolderRelativeUrl = url.Substring(web.RootFolder.ServerRelativeUrl.Length);
                        web.SetHomePage(rootFolderRelativeUrl);
                    }

                    if (page.WebParts != null & page.WebParts.Any())
                    {
                        var existingWebParts = web.GetWebParts(url);

                        foreach (var webpart in page.WebParts)
                        {
                            if (existingWebParts.FirstOrDefault(w => w.WebPart.Title == webpart.Title) == null)
                            {
                                WebPartEntity wpEntity = new WebPartEntity();
                                wpEntity.WebPartTitle = webpart.Title;
                                wpEntity.WebPartXml   = parser.ParseString(webpart.Contents).Trim(new[] { '\n', ' ' });
                                web.AddWebPartToWikiPage(url, wpEntity, (int)webpart.Row, (int)webpart.Column, false);
                            }
                        }
                    }
                    if (page.Security != null && page.Security.RoleAssignments.Count != 0)
                    {
                        file = web.GetFileByServerRelativeUrl(url);
                        web.Context.Load(file.ListItemAllFields);
                        web.Context.ExecuteQuery();
                        file.ListItemAllFields.SetSecurity(parser, page.Security);
                    }
                }
            }
            return(parser);
        }
示例#18
0
        public static bool Move(string currentLCU,
                                string newLCU,
                                ModuleName moduleName,
                                int moduleId,
                                string geographicRegionCd,
                                string sharepointCountryCd,
                                string customerNbr,
                                string fileName,
                                string newGeographicRegionCd, string newSharepointCountryCd, string newCustomerNbr)
        {
            bool          result    = false;
            var           _region   = geographicRegionCd;
            var           _country  = sharepointCountryCd;
            var           clientNbr = customerNbr;
            string        region    = string.Empty;
            string        newRegion = string.Empty;
            StringBuilder finalUri  = new StringBuilder("");

            if (_region == "EL")
            {
                region = "EME";
            }
            if (_region == "AP")
            {
                region = "APA";
            }
            if (_region != "EL" && _region != "AP")
            {
                region = "AMR";
            }

            _region = newGeographicRegionCd;
            if (_region == "EL")
            {
                newRegion = "EME";
            }
            if (_region == "AP")
            {
                newRegion = "APA";
            }
            if (_region != "EL" && _region != "AP")
            {
                newRegion = "AMR";
            }

            if (webUrl.Substring(webUrl.Length - 1, 1) != "/")
            {
                webUrl = webUrl + "/";
            }

            try
            {
                string uri              = webUrl + region + @"/" + sharepointCountryCd;
                string newUri           = webUrl + newRegion + @"/" + newSharepointCountryCd;
                var    newClientContext = new ClientContext(newUri);
                Web    newWeb           = newClientContext.Web;
                //newClientContext.Credentials = new NetworkCredential(userName, passWord, domain);
                CredentialCache cc = new CredentialCache();
                cc.Add(new Uri(webUrl),
                       "NTLM", new NetworkCredential(userName, passWord, domain));
                newClientContext.Credentials        = cc;
                newClientContext.AuthenticationMode = ClientAuthenticationMode.Default;
                newClientContext.Load(newWeb);
                newClientContext.ExecuteQuery();
                using (ClientContext context = new ClientContext(uri))
                {
                    Web web = context.Web;
                    //context.Credentials = new NetworkCredential(userName, passWord, domain);
                    CredentialCache ccs = new CredentialCache();
                    cc.Add(new Uri(webUrl),
                           "NTLM", new NetworkCredential(userName, passWord, domain));
                    context.Credentials        = ccs;
                    context.AuthenticationMode = ClientAuthenticationMode.Default;
                    context.Load(web);
                    context.ExecuteQuery();

                    string destinationUrl = EnsureParentFolder(newLCU, moduleId.ToString(), moduleName, newGeographicRegionCd, newSharepointCountryCd, newCustomerNbr, newClientContext);

                    finalUri.Append("/sites");
                    finalUri.Append("/");
                    finalUri.Append(region);
                    finalUri.Append("/");
                    finalUri.Append(sharepointCountryCd);
                    finalUri.Append("/");
                    finalUri.Append(docLib);
                    finalUri.Append("/");
                    finalUri.Append(clientNbr);
                    finalUri.Append("/");
                    finalUri.Append(currentLCU);
                    finalUri.Append("/");
                    finalUri.Append(moduleName.ToString());
                    finalUri.Append("/");
                    finalUri.Append(moduleId);
                    finalUri.Append("/");

                    string destUrl = finalUri.ToString() + fileName;
                    Microsoft.SharePoint.Client.File loadUrl = web.GetFileByServerRelativeUrl(destUrl);
                    if (region == newRegion)
                    {
                        loadUrl.MoveTo(destinationUrl + fileName, MoveOperations.Overwrite);
                        context.ExecuteQuery();
                        result = true;
                    }
                    if (region != newRegion)
                    {
                        var setMetadata = loadUrl.ListItemAllFields;
                        context.Load(setMetadata);
                        context.ExecuteQuery();
                        SharePointMetaData spModel = new SharePointMetaData();

                        spModel.operatingGrpCode     = (string)setMetadata["OperatingGroupCd"];
                        spModel.operatingGrp         = (string)setMetadata["OperatingGroupNm"];
                        spModel.operatingUnitCode    = (string)setMetadata["OperatingUnitCd"];
                        spModel.operatingUnit        = (string)setMetadata["OperatingUnitNm"];
                        spModel.clientServiceGrpCode = (string)setMetadata["OperatingUnitNm"];
                        spModel.clientServiceGrp     = (string)setMetadata["ClientServiceGroupDesc"];
                        spModel.clientName           = (string)setMetadata["CustomerNm"];
                        spModel.clientNumber         = (string)setMetadata["CustomerNbr"];
                        spModel.contractNumber       = (string)setMetadata["ContractNbr"];
                        spModel.strLCUId             = (string)setMetadata["LCUId"];
                        spModel.moduleName           = (string)setMetadata["ModuleNm"];
                        spModel.moduleId             = (string)setMetadata["ModuleId"];
                        spModel.userId           = (string)setMetadata["UserId"];
                        spModel.fileTypeCode     = (string)setMetadata["FileTypeCd"];
                        spModel.fileType         = (string)setMetadata["FileTypeNm"];
                        spModel.documentTypeCode = (string)setMetadata["DocumentTypeCd"];
                        spModel.documentType     = (string)setMetadata["DocumentTypeNm"];
                        spModel.documentName     = (string)setMetadata["DocumentNm"];

                        string          newDestUrl = destinationUrl + fileName;
                        FileInformation loadStream = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, destUrl);

                        Microsoft.SharePoint.Client.File.SaveBinaryDirect(newClientContext, destinationUrl + fileName, loadStream.Stream, true);

                        SetMeta(spModel, newUri, newDestUrl);

                        loadUrl.DeleteObject();
                        context.ExecuteQuery();

                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }