Example #1
0
        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);
            }
        }
Example #3
0
        /// <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);
                        }
                    }
                }
            }
        }