/// <summary> /// 修改NODE显示的TEXT /// </summary> /// <param name="strNewText"></param> public virtual void ChangeNodeText(string strNewText) {//对节点重命名暂时仅支持页面片的重命名! TmpltBaseTreeNode tmpltBaseTreeNode = this; //找到对应的模板1 while (!(tmpltBaseTreeNode is TmpltElementNode)) { tmpltBaseTreeNode = (TmpltBaseTreeNode)tmpltBaseTreeNode.Parent; } TmpltSimpleExXmlElement tmpltElement = tmpltBaseTreeNode.Element as TmpltSimpleExXmlElement; //得到对应的模板文件DOC TmpltXmlDocument tmpltDocument = tmpltElement.GetIndexXmlDocument(); if (this is SnipElementNode) { SnipXmlElement snipElement = ((this as SnipElementNode).Element) as SnipXmlElement; snipElement.SnipName = strNewText; //通知页面设计器,更改FORM的TEXT string[] strArray = new string[2]; strArray[0] = snipElement.Id; strArray[1] = strNewText; SdsiteXmlDocument.OnSnipDesignerFormTextChange(new EventArgs <string[]>(strArray)); } }
/// <summary> /// 页面的Css设置 /// </summary> /// <param name="doc">对应的模板文档</param> public CssSetupForm(TmpltXmlDocument doc) { InitializeComponent(); if (!Service.Util.DesignMode) { this.tabControlGeneral.TabPages.Clear(); } Doc = doc; XmlElement ele = doc.DocumentElement; CSSText = ele.GetAttribute("webCss"); _webPageDicA = CssSection.Parse(ele.GetAttribute("a")); _webPageDicA_visited = CssSection.Parse(ele.GetAttribute("a_visited")); this.checkBoxUsingCurImg.Visible = false; checkBoxIsAutoSize.Enabled = true; tabControlGeneral.TabPages.Add(this.tabPageBackGroud); tabControlGeneral.TabPages.Add(this.tabPageBorder); tabControlGeneral.TabPages.Add(this.tabPageFont); this.groupBoxLinkOption.Visible = true; //this.cssDesignerDisplayControl.NumericUpDown.Enabled = true; _curType = CurType.WebPage; this.textBoxCurType.Text = StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.cssSetupFormType.tmplt}"); this.Text = StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.cssSetupFormText.tmplt}"); _tmpltID = doc.Id; this.textBoxTitle.Enabled = false; this.textBoxTitle.Text = ele.GetAttribute("title"); //InitEvent(); }
/// <summary> /// 生成正文页面片内容 /// </summary> static public string GetContentPageContent(string contentId) { try { PageSimpleExXmlElement pageEle = ToHtmlSdsiteService.SdsiteXmlDocument.GetPageElementById(contentId); TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(pageEle.TmpltId); SnipXmlElement snipEle = tmpltDoc.GetContentSnipEle(); string contentHtml = null; if (snipEle != null) { // lukan, 2008-6-23 10:38:45, 重构 //contentHtml = snipEle.ToRealContentHtml(contentId); //if (snipEle.IsHaveContent == false && tmpltDoc.TmpltType == TmpltType.General) //{ // contentHtml += "<span>您在正文页面片中还没有添加正文,正文部分将无法显示</span>"; //} //if (!string.IsNullOrEmpty(snipEle.ToRealCss())) //{ // ActiveTmpltAndSnip.AddSnipElementIntoDictionary(snipEle); //} } else { return("您还没有添加正文页面片!"); } return(contentHtml); } catch (Exception e) { ExceptionService.CreateException(e); return(string.Empty); } }
/// <summary> /// /// </summary> public static string GetKeywordListSnip(string tmpltId, string pageId) { PageSimpleExXmlElement pageEle = ToHtmlSdsiteService.SdsiteXmlDocument.GetPageElementById(pageId); TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId); SnipXmlElement snipXmlEle = tmpltDoc.GetKeyListSnip(); return("");// snipXmlEle.ToKeywordHtml(pageEle); }
protected override void LoadChildNodes(TmpltTreeNodeType NodeFilterType) { this.Nodes.Clear(); TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(ID); foreach (SnipXmlElement snipEle in tmpltDoc.GetSnipElementList()) { AddElementNode(snipEle, NodeFilterType); } SetNoChildNodesText(); }
public TmpltDesignerPanel(int width, int height, Image backImage, TmpltXmlDocument doc) : base(width, height, backImage) { _backImg = backImage; TmpltID = doc.Id; InitializeComponent(); InitEvents(); TmpltDoc = doc; LoadTmplt(doc); strRectsData = TmpltDoc.GetRectsElement().InnerXml; }
public PasteSnipDataCommand(DesignPanel tdPanel, List <Rect> pastedSnipRects, SnipData newData, TmpltXmlDocument doc) { PastedSnipRects = pastedSnipRects; Doc = doc; NewSnipData = newData; dPanel = tdPanel; foreach (Rect rect in PastedSnipRects) { OldSnipDatas[rect] = rect.SnipData; } CommandInfo = "粘贴页面片数据"; }
/// <summary> /// 在模板视图树上新添加一个页面片节点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CurrentDocument_SnipAdd(object sender, EventArgs <SnipXmlElement> e) { //查找该页面所对应的模板的ID TmpltXmlDocument tmpltDoc = (TmpltXmlDocument)e.Item.OwnerDocument; //测试增加页面片是 TmpltBaseTreeNode elementNode; if (_dicNodeIndexs.TryGetValue(tmpltDoc.Id, out elementNode)) { //如果一开始没有页面片, 当添加时,要处理一下没有页面片的TEXT elementNode.AddElementNode(e.Item, SnipFilter); } }
private void TmpltTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) { e.Cancel = expandCollapse; //展开前的判断 if (!e.Cancel && e.Node is TmpltElementNode) { TmpltElementNode tmpltNode = e.Node as TmpltElementNode; TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltNode.ID); if (tmpltDoc.GetSnipElementList().Count <= 0) { tmpltNode.ClearTmpltNode(); } } }
/// <summary> /// 判断模板是否存在正文型面片 /// </summary> /// <param name="tmpltID"></param> /// <returns></returns> private bool IshasContentSnip(string tmpltID) { TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltID); XmlNodeList snips = tmpltDoc.GetElementsByTagName("snip"); foreach (XmlNode snip in snips) { if (((SnipXmlElement)snip).SnipType == PageSnipType.Content) { return(true); } } return(false); }
/// <summary> /// 通过模板ID获得模板的TOHTML,并将该TmpltDoc实例加入到字典中,为Tocss做准备 /// </summary> static public string GetTmpltContent(string tmpltId) { try { TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId); ActiveTmpltAndSnip.AddTmpltDocIntoDictionary(tmpltDoc); return(tmpltDoc.ToHtml()); } catch (Exception e) { ExceptionService.CreateException(e); return(string.Empty); } }
private void TmpltTreeView_AfterExpand(object sender, TreeViewEventArgs e) { //生成树 if (e.Node is TmpltElementNode) { TmpltElementNode tmpltNode = e.Node as TmpltElementNode; TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltNode.ID); if (tmpltDoc.GetSnipElementList().Count <= 0 || tmpltNode.NodeExpand) { return; } tmpltNode.NodeExpand = true; tmpltNode.LoadData(SnipFilter); ResetDicNodeIndexs(); } }
/// <summary> /// 载入模板数据 /// </summary> /// <param name="tmpltID"></param> public void LoadTmplt(TmpltXmlDocument doc) { try { HasContentSnip = bool.Parse(doc.DocumentElement.GetAttribute("hasContent")); } catch (Exception) { HasContentSnip = false; } LoadLines(doc); LoadRects(doc); //DrawPanel.TmpltDoc = doc; ((TmpltDrawPanel)DrawPanel).TmpltDoc = doc; TmpltDoc = doc; DrawPanel.Invalidate(); }
/// <summary> /// 将已经运行过Tohtml的TmpltDoc实例加入字典,以便ToCSS的产生 /// </summary> static public void AddTmpltDocIntoDictionary(TmpltXmlDocument tmpltDoc) { if (_activeTmpltDictionary == null) { _activeTmpltDictionary = new Dictionary <string, TmpltXmlDocument>(); _activeTmpltDictionary.Add(tmpltDoc.Id, tmpltDoc); } else { if (_activeTmpltDictionary.ContainsKey(tmpltDoc.Id) == true) { _activeTmpltDictionary[tmpltDoc.Id] = tmpltDoc; } else { _activeTmpltDictionary.Add(tmpltDoc.Id, tmpltDoc); } } }
/// <summary> /// 通过模板及snipID获得页面片的HTml,并将该SnipEle实例加入到字典中,为Tocss做准备 /// </summary> static public string GetSnipContent(string tmpltId, string snipId) { try { TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId); SnipXmlElement snipEle = tmpltDoc.GetSnipElementById(snipId); string snipHtml = "";// lukan, 2008-6-23 10:38:45, 重构 snipEle.ToRealHtml(); //if (!string.IsNullOrEmpty(snipEle.ToRealCss())) //{ // ActiveTmpltAndSnip.AddSnipElementIntoDictionary(snipEle); //} return(snipHtml); } catch (Exception e) { ExceptionService.CreateException(e); return(string.Empty); } }
/// <summary> /// 打开或添加页面片属性 /// </summary> /// <param name="selectedRect"></param> private void ChangeSnipPerperty(SnipRect selectedRect) { if (selectedRect.HasSnip) { ///打开页面片 Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID); } else { TmpltXmlDocument doc = TmpltDoc; TmpltDesignerPanel tDpanel = TDPanel as TmpltDesignerPanel; //tDpanel.SaveTmplt(doc); tDpanel.SaveRects(); NewSnipSetupForm form = new NewSnipSetupForm(doc, selectedRect, GetHasContentSnip()); if (form.ShowDialog() == DialogResult.OK) { SnipXmlElement snipElement = doc.GetSnipElementById(selectedRect.SnipID); snipElement.SnipName = form.SnipName; snipElement.SnipType = form.SnipType; snipElement.Width = selectedRect.Width.ToString() + "px"; snipElement.Height = selectedRect.Height.ToString() + "px"; snipElement.Title = form.SnipName; snipElement.HasSnip = true; tDpanel.SaveRects(); selectedRect.HasSnip = true; TDPanel.Modified = true; selectedRect.SnipType = form.IsContent ? PageSnipType.Content : PageSnipType.General; if (form.IsContent) { if (!doc.HasContentSnip) { doc.HasContentSnip = true; } } TDPanel.HasContentSnip = form.IsContent; ///打开页面片 Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID); } } }
private void NewMethod(string channelId) { //查找拥有此页面直属的频道节点的所有的模板节点,返回模板ID集合 string[] tmpltIdArray = SdsiteDocument.GetTmpltIdArray(channelId); foreach (var tmpltId in tmpltIdArray) { TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId); //得到当前模板下拥有此页面所属频道的类型为list的所有part的父父级snip的集合 string[] snipIdArray = SdsiteDocument.GetSnipIdArray(tmpltId, channelId); //循环snip集合,获得每个snip节点下的分别有拥有此页面所属的频道的类型为list的part节点的集合 foreach (var snipId in snipIdArray) { //重新生成 snip 页面 SnipXmlElement snipEle = tmpltDoc.GetSnipElementById(snipId); if (!snipEle.IsModified) { snipEle.SaveXhtml(ToHtmlHelperObj); } //对其part 的处理 snipEle.GetPartsElement(); } //不论按哪种排序,则先将其所属的snip节点重新生成一遍 //如果其排序方式为自动提取关键字,则取出此part下的所有频道id,及页面类型集合 //循环这些频道,找出页面类型为以上类型集合的所有页面 //此处应有一些分支操作:=====isModified = false的一定要重新生成(并记录下isModified=false,并记录重新生成过的页面),而ismodified为真或是isAlreadyPublish =false,或是isdeleted=true自然会有一些相应的操作 //最后,将重新生成这些页面 } }
public BuildSite() { ToHtmlHelper siteHelper = new ToHtmlHelper("", @"D:\_abc\myabc"); TmpltXmlDocument tmpltDoc = null; tmpltDoc.SaveXhtml(siteHelper); tmpltDoc.DeleteXhtml(siteHelper); PageXmlDocument pageDoc = null; pageDoc.SaveXhtml(siteHelper); pageDoc.DeleteXhtml(siteHelper); foreach (var item in tmpltDoc.GetSnipElementList()) { SnipXmlElement snip = (SnipXmlElement)item; snip.SaveXhtml(siteHelper); snip.DeleteXhtml(siteHelper); } }
/// <summary> /// 保存模板 /// </summary> public void SaveTmplt(TmpltXmlDocument doc) { if (doc.HasContentSnip != HasContentSnip) { TmpltDoc.HasContentSnip = HasContentSnip; Internal.InternalService.OnTmpltDocumentHealthChanged(new EventArgs <string>(TmpltID)); } float x = DrawPanel.CurZoom; DrawPanel.CurZoom = 1; SaveLines(); SaveRects(); DrawPanel.CurZoom = x; doc.Save(); //保存XML文档内容,如果恢复的话这里就是起点 strRectsData = doc.GetRectsElement().InnerXml; }
private void TmpltHtmlCreator(TmpltXmlDocument tmpltdoc) { this.codeTextBox.Clear(); this.outXmlTextBox.Clear(); this.tree.Nodes.Clear(); string source = tmpltdoc.GetRectsElement().OuterXml.Replace(">", ">\r\n"); if (tmpltdoc.SaveXhtml(this._htmlHelper)) { string html = File.ReadAllText(tmpltdoc.HtmlFile).Replace(">", ">\r\n"); this.codeTextBox.Text = html; } this.outXmlTextBox.Text = source; TreeNode treenode = new TreeNode(); this.SetTmpltTree(tmpltdoc.GetRectsElement(), treenode); this.tree.Nodes.Add(treenode); this.tree.ExpandAll(); }
public override bool CannelSave() { if (string.IsNullOrEmpty(TmpltDesign.strRectsData)) { return(false); } //得到该模板对应的 TmpltSimpleExXmlElement TmpltSimpleExXmlElement ele = Service.Sdsite.CurrentDocument.GetTmpltElementById(TmpltID); if (ele != null) { TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(TmpltID); tmpltDoc.DocumentElement.RemoveChild(tmpltDoc.GetRectsElement()); XmlElement newRects = tmpltDoc.CreateElement("rects"); newRects.InnerXml = TmpltDesign.strRectsData; tmpltDoc.DocumentElement.AppendChild(newRects); } return(true); }
public MdiTmpltDesignForm(string tmpltID) { ResourcesReader.SetControlPropertyHelper(this); TmpltID = tmpltID; SnipDesignerForms = new List <Form>(); InitializeComponent(); this.ShowIcon = true; this.Icon = Icon.FromHandle(ResourceService.GetResourceImage("tree.img.templet").GetHicon()); TmpltSimpleExXmlElement tmpltEle = Service.Sdsite.CurrentDocument.GetTmpltElementById(tmpltID); if (tmpltEle == null) { MessageService.Show("文件不存在,打开失败!", MessageBoxButtons.OK, MessageBoxIcon.Error); BeginClose(); return; } this.Text = tmpltEle.Title; Service.Sdsite.CurrentDocument.ElementTitleChanged += new EventHandler <ChangeTitleEventArgs>(CurrentDocument_ElementTitleChanged); Service.Workbench.WorkDocumentNewOpened += new EventHandler <EventArgs <FormData> >(WorkbenchService_WorkDocumentNewOpened); Debug.Assert(!string.IsNullOrEmpty(TmpltID)); TmpltSimpleExXmlElement ele = Service.Sdsite.CurrentDocument.GetTmpltElementById(TmpltID); if (ele == null || !File.Exists(ele.AbsoluteFilePath)) { MessageService.Show(StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.message.mdiFormLoad}"), MessageBoxButtons.OK, MessageBoxIcon.Error); BeginClose(); return; } TmpltDoc = ele.GetIndexXmlDocument(); InitTmpltInfo(); TmpltDesign.Dock = DockStyle.Fill; this.Controls.Add(TmpltDesign); TmpltDesign.BringToFront(); }
/// <summary> /// 生成模板文件 /// </summary> /// <param name="simpleEle"></param> public void BuildTmpltFile(SimpleExIndexXmlElement simpleEle) { //添加模板到Dictionary字典中 AddElementToDictionary(simpleEle); /// tmpltFolderAbsPath ="Y:\zha\zhangling\projectname\TmpltRootFolder"; ///string tmpltFolderAbsPath = Path.Combine(sdsiteAbsPath, SdsiteDocument.TmpltFolder.FileName); TmpltSimpleExXmlElement tmpltEle = (TmpltSimpleExXmlElement)simpleEle; string tmpltId = tmpltEle.Id; TmpltXmlDocument tmpltDoc = ToHtmlHelperObj.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId); if (tmpltEle.IsDeletedRecursive) { //删除模板本身的文件 //删除此模板文件对应的模板文件夹(内有多个snip文件) //删除相应的css文件 //string filePath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc; //FileService.FileDelete(filePath); //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId; //FolderService.FolderDelete(folderPath); //string cssPath = tmpltFolderAbsPath + @"\" + CommonService.Css + @"\" + tmpltId + CssDAT; //FileService.FileDelete(cssPath); tmpltDoc.DeleteXhtml(ToHtmlHelperObj); } else if (!tmpltEle.IsAlreadyPublished) //新建 { //打开相应的模板 //生成本身的文件.css //遍历生成相应的snip文件 //string tmpltPath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc; //TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId); //tmpltDoc.SaveXhtml(); //tmpltDoc.SaveXhtml(tmpltPath); //string tmpltCssPath = tmpltFolderAbsPath + @"\" + tmpltId + @"\" + CssDAT; //tmpltDoc.SaveCss(); tmpltDoc.SaveXhtml(ToHtmlHelperObj); //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId; XmlNodeList snipList = tmpltDoc.GetSnipElementList(); foreach (var item in snipList) { SnipXmlElement snipEle = item as SnipXmlElement; //string snipfile = snipEle.Id + CommonService.Inc; //string snipFilePath = Path.Combine(folderPath, snipfile); //snipEle.SaveXhtml(); //snipEle.SaveXhtml(snipFilePath); snipEle.SaveXhtml(ToHtmlHelperObj); } } else { //此处没有路径改变的问题 if (tmpltEle.IsModified) { //打开相应的模板文件 //则需要重新生成本身的文件,及有改变过的snip的对应的文件 //tmpltDoc.SaveXhtml(); //方法内部在保存此文件时,还需要检查此文件是否存在,存在,则删除掉,然后将其在保存 //tmpltDoc.SaveCss(); tmpltDoc.SaveXhtml(ToHtmlHelperObj); Dictionary <string, string> dic = new Dictionary <string, string>(); XmlNodeList snipList = tmpltDoc.GetSnipElementList(); foreach (var item in snipList) { SnipXmlElement snipEle = item as SnipXmlElement; if (snipEle.IsModified) { //则需要重新生成 // snipEle.SaveXhtml(); snipEle.SaveXhtml(ToHtmlHelperObj); } string snipFileName = snipEle.Id + CommonService.Inc; dic.Add(snipFileName, ""); } //看是否存在多余的snip文件,并将其删除 string snipFolderPath = sdWebAbsPath + @"\" + SdsiteDocument.TmpltFolder.Name + @"\" + tmpltId; string[] allSnipFile = GetAllSnipFile(snipFolderPath); foreach (var file in allSnipFile) { if (!dic.ContainsKey(file)) { //删除此文件 string filePath = snipFolderPath + @"\" + file; FileService.FileDelete(filePath); } } } } }
/// <summary> /// 初始化工具箱中的工具组与工具 /// </summary> /// <param name="isOnlyHasBase">是否仅载入基础的工具组</param> /// <param name="type">当前WorkDocument的类型</param> private void InitToolBox(bool isOnlyHasBase, WorkDocumentType type) { if (this.IsDisposed) { return; } _toolBox.Nodes.Clear(); //_toolBox.Nodes.Add(this.BuildBaseTreeNode());//"常规"工具组 if (isOnlyHasBase) { return;//仅载入基础的工具组 } switch (Service.Workbench.ActiveWorkDocumentType) { case WorkDocumentType.SnipDesigner: #region 创建页面片的基本工具组和扩展工具组 { MdiSnipDesignerForm form = WorkbenchForm.MainForm.ActiveView as MdiSnipDesignerForm; //增加基本的页面片工具箱中的工具 _toolBox.Nodes.Add(BuildSnipBaseTreeNode()); //根据定制特性增加扩展的页面片工具箱中的工具 TmpltXmlDocument tmpltDoc = form.SnipElement.OwnerAnyDocument as TmpltXmlDocument; if (form.SnipElement.SnipType != PageSnipType.Content) { return; } if (tmpltDoc.TmpltType != TmpltType.Home) { Type pageType = null; switch (tmpltDoc.TmpltType) { case TmpltType.General: pageType = typeof(GeneralPageXmlDocument); break; case TmpltType.Product: pageType = typeof(ProductXmlDocument); break; case TmpltType.Project: pageType = typeof(ProjectXmlDocument); break; case TmpltType.InviteBidding: pageType = typeof(InviteBiddingXmlDocument); break; case TmpltType.Knowledge: pageType = typeof(KnowledgeXmlDocument); break; case TmpltType.Hr: pageType = typeof(HrXmlDocument); break; default: Debug.Fail("TmpltType is Fail!!!!!!"); break; } ToolBox.VSTreeNode node = BuildSnipAttributeTreeNode(pageType.GetProperties(), pageType); _toolBox.Nodes.Add(node); } break; } #endregion case WorkDocumentType.TmpltDesigner: #region 创建模板下的工具集 { //MdiTmpltDesignForm form = WorkbenchForm.MainForm.ActiveView as MdiTmpltDesignForm; //_toolBox.Nodes.Add(BuildRectBaseTreeNode()); break; } #endregion default: break; } }