Esempio n. 1
0
        private void ManagePageTemplateFolders(PageTemplate template, FolderManagingType type)
        {
            var stageDirectory = template.Site.StageDirectory + Path.DirectorySeparatorChar + template.TemplateFolder;
            var liveDirectory  = template.Site.LiveDirectory + Path.DirectorySeparatorChar + template.TemplateFolder;

            switch (type)
            {
            case FolderManagingType.CreateFolder:
                if (!Directory.Exists(stageDirectory))
                {
                    Directory.CreateDirectory(stageDirectory);
                }

                if (!Directory.Exists(liveDirectory))
                {
                    Directory.CreateDirectory(liveDirectory);
                }

                break;

            case FolderManagingType.DeleteFolder:
                if (!string.IsNullOrWhiteSpace(template.TemplateFolder))
                {
                    if (Directory.Exists(stageDirectory))
                    {
                        Directory.Delete(stageDirectory, true);
                    }

                    if (Directory.Exists(liveDirectory))
                    {
                        Directory.Delete(liveDirectory, true);
                    }
                }

                break;

            case FolderManagingType.ChangeFolder:
                var oldTemplate = ReadPageTemplateProperties(template.Id, false);
                if (oldTemplate == null)
                {
                    throw new ApplicationException(string.Format(TemplateStrings.TemplateNotFound, template.Id));
                }

                var oldFolder = oldTemplate.TemplateFolder;
                if (!string.IsNullOrWhiteSpace(oldTemplate.TemplateFolder))
                {
                    if (string.IsNullOrWhiteSpace(template.TemplateFolder))
                    {
                        ManagePageTemplateFolders(oldTemplate, FolderManagingType.DeleteFolder);
                        return;
                    }

                    if (template.TemplateFolder == oldFolder)
                    {
                        return;
                    }

                    var oldStageDirectory = oldTemplate.Site.StageDirectory + Path.DirectorySeparatorChar + oldFolder;
                    var oldLiveDirectory  = oldTemplate.Site.LiveDirectory + Path.DirectorySeparatorChar + oldFolder;
                    if (Directory.Exists(oldStageDirectory))
                    {
                        Directory.Move(oldStageDirectory, stageDirectory);
                    }

                    if (Directory.Exists(oldLiveDirectory))
                    {
                        Directory.Move(oldLiveDirectory, liveDirectory);
                    }
                }
                else if (!string.IsNullOrWhiteSpace(template.TemplateFolder))
                {
                    ManagePageTemplateFolders(template, FolderManagingType.CreateFolder);
                }

                break;
            }
        }
Esempio n. 2
0
        private void ManagePageFolders(Page page, FolderManagingType type)
        {
            var stageDirectory = page.PageTemplate.Site.StageDirectory + "\\" + page.PageTemplate.TemplateFolder + "\\" + page.Folder;
            var liveDirectory  = page.PageTemplate.Site.LiveDirectory + "\\" + page.PageTemplate.TemplateFolder + "\\" + page.Folder;

            if (type == FolderManagingType.CreateFolder)
            {
                if (!Directory.Exists(stageDirectory))
                {
                    Directory.CreateDirectory(stageDirectory);
                }
                if (!Directory.Exists(liveDirectory))
                {
                    Directory.CreateDirectory(liveDirectory);
                }
            }

            else if (type == FolderManagingType.DeleteFolder)
            {
                if (!string.IsNullOrWhiteSpace(page.Folder))
                {
                    if (Directory.Exists(stageDirectory))
                    {
                        Directory.Delete(stageDirectory, true);
                    }
                    if (Directory.Exists(liveDirectory))
                    {
                        Directory.Delete(liveDirectory, true);
                    }
                }
            }

            else if (type == FolderManagingType.ChangeFolder)
            {
                var oldPage = ReadPageProperties(page.Id, false);
                if (oldPage == null)
                {
                    throw new ApplicationException(string.Format(TemplateStrings.PageNotFound, page.Id));
                }

                var oldFolder = oldPage.Folder;
                if (!string.IsNullOrWhiteSpace(oldFolder))
                {
                    if (string.IsNullOrWhiteSpace(page.Folder))
                    {
                        ManagePageFolders(oldPage, FolderManagingType.DeleteFolder);
                        return;
                    }

                    if (page.Folder == oldFolder)
                    {
                        return;
                    }

                    var oldStageDirectory = oldPage.PageTemplate.Site.StageDirectory + "\\" + oldPage.PageTemplate.TemplateFolder + "\\" + oldFolder;
                    var oldLiveDirectory  = oldPage.PageTemplate.Site.LiveDirectory + "\\" + oldPage.PageTemplate.TemplateFolder + "\\" + oldFolder;
                    if (Directory.Exists(oldStageDirectory))
                    {
                        Directory.Move(oldStageDirectory, stageDirectory);
                    }
                    if (Directory.Exists(oldLiveDirectory))
                    {
                        Directory.Move(oldLiveDirectory, liveDirectory);
                    }
                }

                else if (!string.IsNullOrWhiteSpace(page.Folder))
                {
                    ManagePageFolders(page, FolderManagingType.CreateFolder);
                }
            }
        }