private void codeActivity2_ExecuteCode(object sender, EventArgs e) { AddNewTreeRefresher addNewTreeRefresher = this.CreateAddNewTreeRefresher(this.EntityToken); Guid newTemplateId = Guid.NewGuid(); string newTitle = this.GetBinding <string>(Binding_Title); string newPageTemplate_Markup, newPageTemplate_Codebehind, templateFolder; Guid copyOfId = this.GetBinding <Guid>("CopyOfId"); if (copyOfId == Guid.Empty) { newPageTemplate_Markup = NewMasterPage_Markup; newPageTemplate_Codebehind = NewMasterPage_Codebehind; templateFolder = GetMasterPagesRootFolder(); } else { ParseTemplateForCopying(copyOfId, out newPageTemplate_Markup, out newPageTemplate_Codebehind, out templateFolder); } string masterFilePath, codeFilePath; GenerateFileNames(templateFolder, newTitle, newTemplateId, out masterFilePath, out codeFilePath); newPageTemplate_Markup = newPageTemplate_Markup.Replace(Marker_Codebehind, Path.GetFileName(codeFilePath)); newPageTemplate_Codebehind = newPageTemplate_Codebehind .Replace(Marker_TemplateId, newTemplateId.ToString()) .Replace(Marker_TemplateTitle, CSharpEncodeString(newTitle)); C1File.WriteAllText(codeFilePath, newPageTemplate_Codebehind); C1File.WriteAllText(masterFilePath, newPageTemplate_Markup); var entityToken = new PageTemplateEntityToken(newTemplateId); PageTemplateProviderRegistry.FlushTemplates(); addNewTreeRefresher.PostRefreshMesseges(entityToken); this.ExecuteAction(entityToken, new WorkflowActionToken(typeof(EditMasterPageWorkflow))); }
private void codeActivity2_ExecuteCode(object sender, EventArgs e) { AddNewTreeRefresher addNewTreeRefresher = this.CreateAddNewTreeRefresher(this.EntityToken); Guid newTemplateId = Guid.NewGuid(); string newTitle = this.GetBinding <string>(Binding_Title); string newPageTemplateMarkup, folderPath; Guid copyOfId = this.GetBinding <Guid>("CopyOfId"); if (copyOfId == Guid.Empty) { newPageTemplateMarkup = DefaultRazorTemplateMarkup; folderPath = GetRazorTemplatesRootFolder(); } else { ParseExistingTemplateForCopying(copyOfId, out newPageTemplateMarkup, out folderPath); } newPageTemplateMarkup = newPageTemplateMarkup .Replace(Marker_TemplateId, newTemplateId.ToString()) .Replace(Marker_TemplateTitle, CSharpEncodeString(newTitle)); string filePath = GeneratedCshtmlFileName(folderPath, newTitle, newTemplateId); C1File.WriteAllText(filePath, newPageTemplateMarkup); var entityToken = new PageTemplateEntityToken(newTemplateId); PageTemplateProviderRegistry.FlushTemplates(); addNewTreeRefresher.PostRefreshMesseges(entityToken); this.ExecuteAction(entityToken, new WorkflowActionToken(typeof(EditRazorPageTemplateWorkflow))); }
private bool ValidateMarkup(string virtualPath, string content, out EntityToken newEntityToken) { newEntityToken = null; string filePath = PathUtil.Resolve(virtualPath); string fileName = Path.GetFileName(filePath); string tempFileName = RazorPageTemplateProvider.TempFilePrefix + fileName; string tempFileVirtualPath = virtualPath.Substring(0, virtualPath.Length - fileName.Length) + tempFileName; string tempFile = Path.Combine(Path.GetDirectoryName(filePath), tempFileName); try { C1File.WriteAllText(tempFile, content); WebPageBase webPageBase; try { webPageBase = WebPage.CreateInstanceFromVirtualPath(tempFileVirtualPath); } catch (Exception ex) { Log.LogWarning(LogTitle, "Compilation failed while validating changes to '{0}'", virtualPath); Log.LogWarning(LogTitle, ex); string message = ex.Message; if (message.StartsWith(tempFile, StringComparison.OrdinalIgnoreCase)) { message = fileName + message.Substring(tempFile.Length); } ShowWarning(GetText("EditTemplate.Validation.CompilationFailed") .FormatWith(message)); return(false); } if (!(webPageBase is RazorPageTemplate)) { if (IsPageTemplate) { var templateDescriptor = GetPageTemplateDescriptor(); if (templateDescriptor.IsValid) { ShowWarning(GetText("EditTemplate.Validation.IncorrectBaseClass") .FormatWith(typeof(RazorPageTemplate).FullName)); return(false); } newEntityToken = new SharedCodeFileEntityToken(virtualPath); return(true); } return(true); } Guid templateId; var pageTemplate = webPageBase as RazorPageTemplate; pageTemplate.Configure(); try { templateId = pageTemplate.TemplateId; } catch (Exception ex) { ShowPropertyError("TemplateId", ex); return(false); } try { string templateTitle = pageTemplate.TemplateTitle; } catch (Exception ex) { ShowPropertyError("TemplateTitle", ex); return(false); } if (!IsPageTemplate) { newEntityToken = new PageTemplateEntityToken(templateId); return(true); } var pageTemplateDescriptor = GetPageTemplateDescriptor(); if (pageTemplateDescriptor.IsValid) { // Forbidding to change template id from this workflow in order to avoid mistakes if (templateId != pageTemplateDescriptor.Id) { ShowWarning(GetText("EditTemplate.Validation.TemplateIdChanged").FormatWith(pageTemplateDescriptor.Id)); return(false); } } else { newEntityToken = new PageTemplateEntityToken(templateId); } } finally { C1File.Delete(tempFile); } return(true); }
private bool Validate(MasterPage masterPage, out EntityToken newEntityToken) { newEntityToken = null; if (!(this.EntityToken is PageTemplateEntityToken)) { return(true); } var pageTemplate = GetPageTemplate(); var templateDefinition = masterPage as MasterPagePageTemplate; if (templateDefinition == null) { if (!pageTemplate.IsValid) { return(true); } ShowWarning(GetText("EditTemplate.Validation.IncorrectBaseClass") .FormatWith(typeof(MasterPagePageTemplate).FullName)); return(false); } Guid templateId; try { templateId = templateDefinition.TemplateId; } catch (Exception ex) { ShowPropertyError("TemplateId", ex); return(false); } try { string newTitle = templateDefinition.TemplateTitle; } catch (Exception ex) { ShowPropertyError("TemplateTitle", ex); return(false); } if (pageTemplate.IsValid) { if (templateId != pageTemplate.Id) { ShowWarning(GetText("EditTemplate.Validation.TemplateIdChanged").FormatWith(pageTemplate.Id)); return(false); } } else { newEntityToken = new PageTemplateEntityToken(templateId); } return(true); }