private void IsTitleUsed(object sender, ConditionalEventArgs e)
        {
            IXmlPageTemplate newPageTemplate = this.GetBinding <IXmlPageTemplate>("NewPageTemplate");

            e.Result = PageTemplateFacade.GetPageTemplates()
                       .Any(f => f.Title.Equals(newPageTemplate.Title, StringComparison.InvariantCultureIgnoreCase));
        }
            public static PageTemplateFileWrapper Get(IXmlPageTemplate pageTemplate)
            {
                PageTemplateFileWrapper result = _cache.Get(pageTemplate.PageTemplateFilePath);

                if (result != null)
                {
                    return(result);
                }

                result = new PageTemplateFileWrapper(pageTemplate);
                _cache.Add(result._pageTemplateFilePath, result);
                return(result);
            }
        private static void ParseLayoutFile(IXmlPageTemplate pageTemplate, out PlaceholderDescriptor[] placeholders, out string defaultPlaceholder)
        {
            var placeholdersInfo = TemplateInfo.GetRenderingPlaceHolders(pageTemplate.Id);

            defaultPlaceholder = placeholdersInfo.DefaultPlaceholderId;

            placeholders = placeholdersInfo
                           .Placeholders
                           .Select(pair => new PlaceholderDescriptor {
                Id = pair.Key, Title = pair.Value
            })
                           .ToArray();
        }
        private void IsTitleUsed(object sender, System.Workflow.Activities.ConditionalEventArgs e)
        {
            IXmlPageTemplate newPageTemplate = this.GetBinding <IXmlPageTemplate>("PageTemplate");

            if (this.GetBinding <string>("OldTitle") == newPageTemplate.Title)
            {
                e.Result = false;
                return;
            }

            e.Result = DataFacade.GetData <IXmlPageTemplate>().ToList()
                       .Any(f => string.Compare(f.Title, newPageTemplate.Title, StringComparison.InvariantCultureIgnoreCase) == 0 &&
                            f.Id != newPageTemplate.Id);
        }
            internal PageTemplateFileWrapper(IXmlPageTemplate pageTemplate)
            {
                _pageTemplateFilePath = pageTemplate.PageTemplateFilePath;
                IFile file = IFileServices.GetFile <IPageTemplateFile>(_pageTemplateFilePath);

                _content = file.ReadAllText();

                var systemFile = file as FileSystemFileBase;

                Verify.IsNotNull(systemFile, "File should be of type '{0}'", typeof(FileSystemFileBase).Name);

                _fileFullPath = systemFile.SystemPath;

                file.SubscribeOnChanged(OnFileChanged);
            }
        private void ValidateFilePath(object sender, ConditionalEventArgs e)
        {
            IXmlPageTemplate newPageTemplate = this.GetBinding <IXmlPageTemplate>("NewPageTemplate");

            IPageTemplateFile pageTemplateFile = DataFacade.BuildNew <IPageTemplateFile>();

            pageTemplateFile.FolderPath = "/";
            pageTemplateFile.FileName   = GetTemplateFileName(newPageTemplate);

            if (!DataFacade.ValidatePath <IPageTemplateFile>(pageTemplateFile, "PageTemplateFileProvider"))
            {
                ShowFieldMessage("NewPageTemplate.Title", GetText("AddNewXmlPageTemplateWorkflow.TitleTooLong"));
                e.Result = false;
                return;
            }

            e.Result = true;
        }
        /// <exclude />
        public static XDocument GetTemplateDocument(Guid templateId)
        {
            IXmlPageTemplate template = GetTemplate(templateId);

            var    templateWrapper = PageTemplateFileWrapper.Get(template);
            string templateMarkup  = templateWrapper.Content;

            XDocument document;

            try
            {
                document = XDocument.Parse(templateMarkup);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Failed to parse template markup for file '{0}'"
                                                    .FormatWith(templateWrapper.RelativeFilePath), ex);
            }

            return(document);
        }
        private static IXmlPageTemplate GetTemplate(Guid templateId)
        {
            IXmlPageTemplate cachedValue = PageTemplateCache.Get(templateId);

            if (cachedValue != null)
            {
                return(cachedValue);
            }

            var templates =
                from template in DataFacade.GetData <Composite.Data.Types.IXmlPageTemplate>()
                where template.Id == templateId
                select template;

            IXmlPageTemplate result = templates.FirstOrDefault();

            Verify.That(result != null, "Failed to get a page template by id. Id = '{0}'", templateId);

            PageTemplateCache.Add(templateId, result);

            return(result);
        }
        private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
            IXmlPageTemplate newPageTemplate = DataFacade.BuildNew <IXmlPageTemplate>();

            newPageTemplate.Id    = Guid.NewGuid();
            newPageTemplate.Title = "";

            this.Bindings.Add("NewPageTemplate", newPageTemplate);

            List <KeyValuePair <Guid, string> > templatesOptions =
                (from template in PageTemplateFacade.GetPageTemplates()
                 where template is XmlPageTemplateDescriptor && template.IsValid
                 orderby template.Title
                 select new KeyValuePair <Guid, string>(template.Id, template.Title)).ToList();

            templatesOptions.Insert(0, new KeyValuePair <Guid, string>(
                                        Guid.Empty, GetText("AddNewXmlPageTemplate.LabelCopyFromEmptyOption")));

            Guid mostUsedTemplate = PageTemplateHelper.GetTheMostUsedTemplate(templatesOptions.Select(p => p.Key));

            this.Bindings.Add("CopyOfOptions", templatesOptions);
            this.Bindings.Add("CopyOfId", mostUsedTemplate);
        }
        private void codeActivity2_ExecuteCode(object sender, EventArgs e)
        {
            AddNewTreeRefresher addNewTreeRefresher = this.CreateAddNewTreeRefresher(this.EntityToken);

            IXmlPageTemplate newPageTemplate = this.GetBinding <IXmlPageTemplate>("NewPageTemplate");

            string newPageTemplateMarkup = null;
            Guid   copyOfId = this.GetBinding <Guid>("CopyOfId");

            if (copyOfId == Guid.Empty)
            {
                newPageTemplateMarkup = _defaultTemplateMarkup.Replace("    ", "\t");
            }
            else
            {
                XDocument copyDocument = TemplateInfo.GetTemplateDocument(copyOfId);
                newPageTemplateMarkup = copyDocument.ToString();
            }

            IPageTemplateFile pageTemplateFile = DataFacade.BuildNew <IPageTemplateFile>();

            pageTemplateFile.FolderPath = "/";
            pageTemplateFile.FileName   = string.Format("{0}.xml", PathUtil.CleanFileName(newPageTemplate.Title, true) ?? newPageTemplate.Id.ToString());
            //if (FileNameAlreadyUsed(pageTemplateFile)) pageTemplateFile.FileName = newPageTemplate.Id.ToString() + pageTemplateFile.FileName;
            pageTemplateFile.SetNewContent(newPageTemplateMarkup);

            DataFacade.AddNew <IPageTemplateFile>(pageTemplateFile, "PageTemplateFileProvider");

            newPageTemplate.PageTemplateFilePath = "/" + pageTemplateFile.FileName;
            newPageTemplate = DataFacade.AddNew <IXmlPageTemplate>(newPageTemplate);

            PageTemplateProviderRegistry.FlushTemplates();

            addNewTreeRefresher.PostRefreshMesseges(newPageTemplate.GetDataEntityToken());

            this.ExecuteAction(newPageTemplate.GetDataEntityToken(), new WorkflowActionToken(typeof(EditXmlPageTemplateWorkflow)));
        }
Beispiel #11
0
            public static PageTemplateFileWrapper Get(IXmlPageTemplate pageTemplate)
            {
                PageTemplateFileWrapper result = _cache.Get(pageTemplate.PageTemplateFilePath);
                if(result != null)
                {
                    return result;
                }

                result = new PageTemplateFileWrapper(pageTemplate);
                _cache.Add(result._pageTemplateFilePath, result);
                return result;
            }
Beispiel #12
0
            internal PageTemplateFileWrapper(IXmlPageTemplate pageTemplate)
            {
                _pageTemplateFilePath = pageTemplate.PageTemplateFilePath;
                IFile file = IFileServices.GetFile<IPageTemplateFile>(_pageTemplateFilePath);
                _content = file.ReadAllText();

                var systemFile = file as FileSystemFileBase;
                Verify.IsNotNull(systemFile, "File should be of type '{0}'", typeof(FileSystemFileBase).Name);

                _fileFullPath = systemFile.SystemPath;

                file.SubscribeOnChanged(OnFileChanged);
            }
 public XmlPageTemplateDeleter(DataEntityToken entityToken)
 {
     var dataEntityToken = entityToken;
     _pageTemplate = (IXmlPageTemplate)dataEntityToken.Data;
 }
        private string GetTemplateFileName(IXmlPageTemplate xmlTemplateFile)
        {
            string name = PathUtil.CleanFileName(xmlTemplateFile.Title, true) ?? xmlTemplateFile.Id.ToString();

            return(name + ".xml");
        }
        private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
            IXmlPageTemplate pageTemplate       = this.GetBinding <IXmlPageTemplate>("PageTemplate");
            string           pageTemplateMarkup = this.GetBinding <string>("PageTemplateMarkup");

            bool   xhtmlParseable = true;
            string parseError     = null;

            try
            {
                XDocument parsedElement = XDocument.Parse(pageTemplateMarkup);

                ValidatePageTemplate(parsedElement);
            }
            catch (Exception ex)
            {
                xhtmlParseable = false;
                parseError     = ex.Message;
            }

            if (!xhtmlParseable)
            {
                FlowControllerServicesContainer serviceContainer = WorkflowFacade.GetFlowControllerServicesContainer(WorkflowEnvironment.WorkflowInstanceId);
                var consoleMessageService = serviceContainer.GetService <IManagementConsoleMessageService>();
                consoleMessageService.ShowMessage(
                    DialogType.Error,
                    GetString("EditXmlPageTemplateWorkflow.InvalidXmlTitle"),
                    GetString("EditXmlPageTemplateWorkflow.InvalidXmlMessage").FormatWith(parseError));
                return;
            }

            // Renaming related file if necessary
            string fileName = GetTemplateFileName(pageTemplate);

            if (Path.GetFileName(pageTemplate.PageTemplateFilePath) != fileName)
            {
                IPageTemplateFile file          = IFileServices.GetFile <IPageTemplateFile>(pageTemplate.PageTemplateFilePath);
                string            systemPath    = (file as FileSystemFileBase).SystemPath;
                string            newSystemPath = Path.Combine(Path.GetDirectoryName(systemPath), fileName);

                if (string.Compare(systemPath, newSystemPath, true) != 0 && C1File.Exists(newSystemPath))
                {
                    FlowControllerServicesContainer serviceContainer = WorkflowFacade.GetFlowControllerServicesContainer(WorkflowEnvironment.WorkflowInstanceId);
                    var consoleMessageService = serviceContainer.GetService <IManagementConsoleMessageService>();
                    consoleMessageService.ShowMessage(
                        DialogType.Error,
                        GetString("EditXmlPageTemplateWorkflow.InvalidXmlTitle"),
                        GetString("EditXmlPageTemplateWorkflow.CannotRenameFileExists").FormatWith(newSystemPath));
                    return;
                }

                C1File.Move(systemPath, newSystemPath);

                string newRelativePath = Path.Combine(Path.GetDirectoryName(pageTemplate.PageTemplateFilePath), fileName);
                pageTemplate.PageTemplateFilePath = newRelativePath;
            }

            IPageTemplateFile templateFile = IFileServices.GetFile <IPageTemplateFile>(pageTemplate.PageTemplateFilePath);

            templateFile.SetNewContent(pageTemplateMarkup);
            DataFacade.Update(templateFile);

            DataFacade.Update(pageTemplate);

            UpdateTreeRefresher updateTreeRefresher = this.CreateUpdateTreeRefresher(this.EntityToken);

            updateTreeRefresher.PostRefreshMesseges(pageTemplate.GetDataEntityToken());

            SetSaveStatus(true);
        }
 private string GetTemplateFileName(IXmlPageTemplate xmlTemplateFile)
 {
     string name = PathUtil.CleanFileName(xmlTemplateFile.Title, true) ?? xmlTemplateFile.Id.ToString();
     return name + ".xml";
 }
 public XmlPageTemplateDescriptor(IXmlPageTemplate pageTemplate)
 {
     _xmlPageTemplate = pageTemplate;
 }
Beispiel #18
0
            public XmlPageTemplateDeleter(DataEntityToken entityToken)
            {
                var dataEntityToken = entityToken;

                _pageTemplate = (IXmlPageTemplate)dataEntityToken.Data;
            }
Beispiel #19
0
 public XmlPageTemplateDescriptor(IXmlPageTemplate pageTemplate)
 {
     _xmlPageTemplate = pageTemplate;
 }
        private static void ParseLayoutFile(IXmlPageTemplate pageTemplate, out PlaceholderDescriptor[] placeholders, out string defaultPlaceholder)
        {
            var placeholdersInfo = TemplateInfo.GetRenderingPlaceHolders(pageTemplate.Id);

            defaultPlaceholder = placeholdersInfo.DefaultPlaceholderId;

            placeholders = placeholdersInfo
                           .Placeholders
                           .Select(pair => new PlaceholderDescriptor { Id = pair.Key, Title = pair.Value })
                           .ToArray();
        }