public void ProcessRequest(HttpContext context) { string result = ""; context.Response.ContentType = "text/html"; TemplateBindConfig bc = new TemplateBindConfig(); bc.Handler = context.Request["handler"]; bc.Mode = context.Request["mode"]; bc.Model = context.Request["model"]; string fileName = context.Request["filename"]; string skinFolder = GeneralConfigs.GetConfig().DefaultTemplateGroupFileName; skinFolder = skinFolder.Remove(skinFolder.Length - 4); try { TemplateHelper TemplateHelper = HelperFactory.Instance.GetHelper <TemplateHelper>(); TemplateHelper.SaveTemplateBind(bc, skinFolder, fileName); if (We7.Framework.AppCtx.IsDemoSite) { context.Response.Write("对不起,此演示站点您没有该操作权限!"); } else { context.Response.Write("0"); } } catch (Exception ex) { context.Response.Write(ex.Message); } }
/// <summary> /// 获取模板绑定配置项列表 /// </summary> /// <returns></returns> public List <TemplateBindConfig> GetTemplateBindConfigList() { XmlDocument doc = new XmlDocument(); XmlNodeList nodes = null; string typePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config"); string typeName = Path.Combine(typePath, "TemplateType.xml"); doc.Load(typeName); nodes = doc.SelectNodes("/configuration/item"); List <TemplateBindConfig> list = new List <TemplateBindConfig>(); foreach (XmlNode nodeType in nodes) { string name = nodeType.Attributes["name"].Value; string value = nodeType.Attributes["value"].Value; foreach (XmlNode subItem in nodeType.ChildNodes) { TemplateBindConfig tbc = new TemplateBindConfig(); tbc.Handler = value; tbc.HandlerName = name; string n = subItem.Attributes["name"].Value; string v = subItem.Attributes["value"].Value; tbc.Description = name + n; tbc.Mode = v; tbc.ModeText = n; list.Add(tbc); } } return(list); }
/// <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 + "”!"); } } }
/// <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); } }
/// <summary> /// 获取模板指定配置中文描述 /// </summary> /// <param name="bc"></param> /// <returns></returns> public TemplateBindConfig GetTemplateConfigSentence(TemplateBindConfig bc) { if (bc.Handler == "site" && string.IsNullOrEmpty(bc.Mode)) { bc.Mode = "home"; } else if (string.IsNullOrEmpty(bc.Mode)) { bc.Mode = "default"; } XmlDocument doc = new XmlDocument(); XmlNodeList nodes = null; string typePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config"); string typeName = Path.Combine(typePath, "TemplateType.xml"); doc.Load(typeName); nodes = doc.SelectNodes("/configuration/item"); string sentence = ""; foreach (XmlNode nodeType in nodes) { string name = nodeType.Attributes["name"].Value; string value = nodeType.Attributes["value"].Value; if (value == bc.Handler) { sentence = name; bc.HandlerName = name; foreach (XmlNode subItem in nodeType.ChildNodes) { string n = subItem.Attributes["name"].Value; string v = subItem.Attributes["value"].Value; if (v == bc.Mode) { sentence += n; bc.ModeText = n; bc.Description = sentence; break; } } break; } } if (!string.IsNullOrEmpty(bc.Model)) { ModelInfo mi = ModelHelper.GetModelInfoByName(bc.Model); bc.Description = mi.Label + bc.Description; } return(bc); }