Exemplo n.º 1
0
        /// <summary>
        /// 保存模板绑定项
        /// </summary>
        /// <param name="bc"></param>
        /// <param name="skinFolder"></param>
        /// <param name="templateFile"></param>
        public void SaveTemplateBind(TemplateBindConfig bc, string skinFolder, string templateFile)
        {
            if (bc != null)
            {
                string handler = bc.Handler;
                string mode    = bc.Mode;
                string model   = bc.Model;
                bc = GetTemplateConfigSentence(bc);

                SkinInfo          tg   = GetSkinInfo(skinFolder + ".xml");//读取模板信息
                SkinInfo.SkinItem item = new SkinInfo.SkinItem();
                Template          tp   = GetTemplate(templateFile);
                if (tp != null)
                {
                    item.TemplateText = tp.Name;
                    item.Name         = tp.Name;
                    item.Description  = tp.Description;
                    item.Template     = tp.FileName;
                    if (handler == "model" && !string.IsNullOrEmpty(model))
                    {
                        ModelInfo mi = ModelHelper.GetModelInfoByName(model);
                        if (mi != null)
                        {
                            item.C_Model     = model;
                            item.C_ModelText = mi.Label;
                        }
                        else
                        {
                            throw new Exception("没有找到模型的信息文件,请重建内容模型索引再试。");
                        }
                    }

                    item.Location     = mode;
                    item.LocationText = bc.HandlerName + bc.ModeText;
                    item.Tag          = "";
                    item.Type         = handler;
                    if (!HaveSameItem(item, tg))
                    {
                        tg.Items.Add(item);
                        string sentence = item.C_ModelText + item.LocationText;
                        string fn       = SaveSkinInfoAndPreviewFile(tg, Path.GetFileNameWithoutExtension(skinFolder));
                        CreateMapFileFromSkinInfo(tg);
                        RefreshOneTempplateBindText(tg, tp);
                    }
                    else
                    {
                        throw new Exception("对不起,已经存在相同的绑定项,不能重复增加!如想修改绑定项,请先删除旧的再试。");
                    }
                }
                else
                {
                    throw new Exception("无法保存!不存在模板文件“" + templateFile + "”!");
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 删除模板指定项
        /// </summary>
        /// <param name="bc"></param>
        /// <param name="skinFolder"></param>
        /// <param name="fileName"></param>
        public void RemoveTemplateBind(TemplateBindConfig bc, string skinFolder, string fileName)
        {
            SkinInfo tg = GetSkinInfo(skinFolder + ".xml");//读取模板信息

            if (bc != null)
            {
                string handler = bc.Handler;
                string mode    = bc.Mode;
                string model   = bc.Model;

                foreach (SkinInfo.SkinItem item in tg.Items)
                {
                    SkinInfo.SkinItem skin = item;
                    skin = ConvertOldVersionToNew(item);
                    if (StringCompare(model, skin.C_Model) &&
                        StringCompare(mode, skin.Location) &&
                        StringCompare("", skin.Tag) &&
                        StringCompare(handler, skin.Type) &&
                        StringCompare(fileName, skin.Template))
                    {
                        tg.Items.Remove(skin);
                        break;
                    }
                }

                SaveSkinInfoAndPreviewFile(tg, Path.GetFileNameWithoutExtension(skinFolder));
                CreateMapFileFromSkinInfo(tg);
                Template t = GetTemplate(fileName, skinFolder);
                RefreshOneTempplateBindText(tg, t);
            }
            else
            {
                foreach (SkinInfo.SkinItem item in tg.Items)
                {
                    SkinInfo.SkinItem skin = item;
                    skin = ConvertOldVersionToNew(item);
                    if (StringCompare(fileName, skin.Template))
                    {
                        tg.Items.Remove(skin);
                        break;  //修正删除模板要删除两次的BUG。原因是集合修改后不能foreach,会有异常。Update By dl
                    }
                }
                SaveSkinInfoAndPreviewFile(tg, Path.GetFileNameWithoutExtension(skinFolder));
                CreateMapFileFromSkinInfo(tg);

                //清除模板列表缓存
                HttpContext Context = HttpContext.Current;
                string      key     = string.Format(TemplatesKeyID, skinFolder);
                Context.Cache.Remove(key);
            }
        }
Exemplo n.º 3
0
 public bool HaveSameItem(SkinInfo.SkinItem item, SkinInfo data)
 {
     foreach (SkinInfo.SkinItem skin in data.Items)
     {
         if (StringCompare(item.C_Model, skin.C_Model) &&
             StringCompare(item.Location, skin.Location) &&
             StringCompare(item.Tag, skin.Tag) &&
             StringCompare(item.Type, skin.Type))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 4
0
        /// <summary>
        /// 加载模板绑定项,并生成包含删除js的html代码
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        public string LoadTemplateBinds(string skinFile, string templateFile)
        {
            StringBuilder sb     = new StringBuilder();
            string        bindLi = "<LI id='{5}' ><IMG class=Icon height=16 src=\"/admin/images/icon_globe.gif\" width=16>{3}<A class=Del title=\"删除指定 {3}? \"  href=\"javascript:removeBind('{0}','{1}','{2}','{4}','{5}');\"  >[删除]</A> </LI>";

            SkinInfo skin = GetSkinInfoFromFile(skinFile);
            int      i    = 0;

            foreach (SkinInfo.SkinItem s in skin.Items)
            {
                if (string.Equals(s.Template, templateFile, StringComparison.OrdinalIgnoreCase))
                {
                    SkinInfo.SkinItem item = s;
                    item = ConvertOldVersionToNew(s);
                    i++;
                    sb.AppendLine(string.Format(bindLi, item.Type, item.Location, item.C_Model, item.C_ModelText + item.LocationText, templateFile, "li" + i.ToString()));
                }
            }
            return(sb.ToString());
        }
Exemplo n.º 5
0
 /// <summary>
 /// 兼容旧版2.6及以前版本
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 SkinInfo.SkinItem ConvertOldVersionToNew(SkinInfo.SkinItem item)
 {
     if (item.Type == "站点")
     {
         item.LocationText = item.Type + item.LocationText;
         item.Type         = "site";
     }
     if (item.Type == "栏目")
     {
         if (string.IsNullOrEmpty(item.C_Model))
         {
             item.Type         = "channel";
             item.LocationText = "通用" + item.LocationText;
         }
         else
         {
             item.Type         = "model";
             item.LocationText = "模型" + item.LocationText;
         }
     }
     return(item);
 }
Exemplo n.º 6
0
        /// <summary>
        /// 刷新单个模板信息中的冗余字段 DefaultBindText
        /// </summary>
        /// <param name="skin"></param>
        /// <param name="t"></param>
        void RefreshOneTempplateBindText(SkinInfo skin, Template t)
        {
            string defaultBindText = "";

            foreach (SkinInfo.SkinItem s in skin.Items)
            {
                if (string.Equals(s.Template, t.FileName, StringComparison.OrdinalIgnoreCase))
                {
                    SkinInfo.SkinItem item = s;
                    item = ConvertOldVersionToNew(s);
                    if (defaultBindText == "")
                    {
                        defaultBindText = item.C_ModelText + item.LocationText;
                    }
                    else
                    {
                        defaultBindText += "," + item.C_ModelText + item.LocationText;
                    }
                }
            }
            t.DefaultBindText = defaultBindText;
            SaveTemplate(t, skin.FileName);
        }
Exemplo n.º 7
0
        string LoadTemplateDictionary(string editorUrl)
        {
            string        itemString = "<a href=\"{4}?handler={0}&mode={1}&model={2}\" title=\"新建 {3} 模板? \" target=\"_blank\"  >{3}</a> ";
            string        itemTitle  = "<H3 >{0}</H3>";
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine("<h1>您想创建哪一个对应页面的模板?</h1>");
            SkinInfo data = TemplateHelper.GetSkinInfo(FileName);

            List <TemplateBindConfig> list = TemplateHelper.GetTemplateBindConfigList();
            string title = "";
            List <TemplateBindConfig> modelList = new List <TemplateBindConfig>();

            foreach (TemplateBindConfig tb in list)
            {
                if (tb.Handler == "model")
                {
                    modelList.Add(tb);
                }
                else
                {
                    SkinInfo.SkinItem item = new SkinInfo.SkinItem();
                    item.C_Model  = "";
                    item.Location = tb.Mode;
                    item.Tag      = "";
                    item.Type     = tb.Handler;
                    if (!TemplateHelper.HaveSameItem(item, data))
                    {
                        if (title != tb.HandlerName)
                        {
                            sb.AppendLine(string.Format(itemTitle, tb.HandlerName));
                            title = tb.HandlerName;
                        }
                        sb.AppendLine(string.Format(itemString, tb.Handler, tb.Mode, "", tb.Description, editorUrl));
                        sb.Append(" ┃ ");
                    }
                }
            }

            ContentModelCollection cmc = ModelHelper.GetContentModel(ModelType.ARTICLE);

            foreach (We7.Model.Core.ContentModel cm in cmc)
            {
                sb.AppendLine(string.Format(itemTitle, cm.Label + "模型"));
                foreach (TemplateBindConfig tb in modelList)
                {
                    SkinInfo.SkinItem item = new SkinInfo.SkinItem();
                    item.C_Model  = cm.Name;
                    item.Location = tb.Mode;
                    item.Tag      = "";
                    item.Type     = tb.Handler;
                    if (!TemplateHelper.HaveSameItem(item, data))
                    {
                        sb.AppendLine(string.Format(itemString, tb.Handler, tb.Mode, cm.Name, cm.Label + tb.Description, editorUrl));
                        sb.Append(" ┃ ");
                    }
                }
            }

            sb.AppendLine("<br>");
            sb.AppendLine("<h2>" + string.Format(itemString, "", "", "", "个性化模板(不做默认指定)", editorUrl) + "</h2>");
            sb.AppendLine("<br>");
            return(sb.ToString());
        }