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))); }
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; }
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; }