sys_template.aspx.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /*******************************************************************************
  2. * iNethinkCMS - 网站内容管理系统
  3. * Copyright (C) 2012-2013 inethink.com
  4. *
  5. * @author jackyang <69991000@qq.com>
  6. * @website http://cms.inethink.com
  7. * @version 1.3.6.0 (2013-08-14)
  8. *
  9. * This is licensed under the GNU LGPL, version 3.0 or later.
  10. * For details, see: http://www.gnu.org/licenses/gpl-3.0.html
  11. *******************************************************************************/
  12. using System;
  13. using System.Collections.Generic;
  14. using System.IO;
  15. using System.Data;
  16. using System.Data.SqlClient;
  17. using System.Web;
  18. using System.Web.UI;
  19. using System.Web.UI.WebControls;
  20. using iNethinkCMS.Command;
  21. using iNethinkCMS.Web.UI;
  22. namespace iNethinkCMS.Web.admin.sys
  23. {
  24. public partial class sys_template : Admin_BasePage
  25. {
  26. private string vNavInfo = "当前位置:";
  27. private string vAct = "";
  28. private string vTemplateFatherDir = "/template/";
  29. private string vTemplate = "";
  30. protected void Page_Load(object sender, EventArgs e)
  31. {
  32. CheckUserPower("e");
  33. #region
  34. vAct = Request.QueryString["Act"] != null ? Request.QueryString["Act"] : "";
  35. vTemplate = Request.QueryString["Template"];
  36. #endregion
  37. this.navInfoID.InnerText = vNavInfo + "模板管理";
  38. this.mainID.Visible = false;
  39. switch (vAct)
  40. {
  41. case "enabled":
  42. string strXmlFile = HttpContext.Current.Server.MapPath("~/config/sys.config");
  43. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(strXmlFile, "//sys_configuration", "TemplateDir", "<![CDATA[" + vTemplateFatherDir + vTemplate + "/]]>");
  44. string vSqlScriptFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + vTemplate + "/sqlscript.sql");
  45. if (System.IO.File.Exists(vSqlScriptFile))
  46. {
  47. string[] vDatabaseTable = { "iNethinkCMS_Channel", "iNethinkCMS_Channel_CustomFields", "iNethinkCMS_Custom_Pages", "iNethinkCMS_Custom_Tags", "iNethinkCMS_Special" };
  48. for (int i = 0; i < vDatabaseTable.Length; i++)
  49. {
  50. Helper.SQLHelper.ExecuteSql("delete from [" + vDatabaseTable[i] + "]");
  51. Helper.SQLHelper.ExecuteSql("DBCC CHECKIDENT([" + vDatabaseTable[i] + "],reseed,0)");
  52. }
  53. //执行脚本文件
  54. string sqlContent = File.ReadAllText(vSqlScriptFile, System.Text.Encoding.UTF8);
  55. if (!string.IsNullOrEmpty(sqlContent))
  56. {
  57. Helper.SQLHelper.ExecuteSql(sqlContent);
  58. }
  59. //文件重命名
  60. File.Move(vSqlScriptFile, vSqlScriptFile.Replace("sqlscript.sql", "sqlscript.sqlbak"));
  61. }
  62. Web.UI.WebUI_Function.Fun_CacheDel(); //清空一次系统缓存
  63. MessageBox.ShowAndRedirect(this, "", "?");
  64. break;
  65. case "release":
  66. string vConfigXml = Server.MapPath(vTemplateFatherDir + vTemplate + @"/config.xml");
  67. if (!File.Exists(vConfigXml))
  68. {
  69. Helper.XMLHelper.CreateXmlDocument(vConfigXml, "skin", "1.0", "utf-8", null); //创建XML文件
  70. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Name", "<![CDATA[" + vTemplate + "]]>");
  71. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Version", "<![CDATA[" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "]]>");
  72. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Author", "<![CDATA[" + SysLoginUserTrueName + "]]>");
  73. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Contacts", "<![CDATA[http://cms.inethink.com]]>");
  74. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Thumbnail", "<![CDATA[thumb.jpg]]>");
  75. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Announcements", "<![CDATA[]]>");
  76. }
  77. Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Createdate", "<![CDATA[" + DateTime.Now + "]]>");
  78. #region 输出SQL脚本[待开发完善]
  79. //string[] vDatabaseTable = { "iNethinkCMS_Channel", "iNethinkCMS_Channel_CustomFields", "iNethinkCMS_Custom_Pages", "iNethinkCMS_Custom_Tags", "iNethinkCMS_Special" };
  80. //string rTemp = "";
  81. //for (int i = 0; i < vDatabaseTable.Length; i++)
  82. //{
  83. // rTemp += "SET IDENTITY_INSERT [" + vDatabaseTable[i] + "] ON";
  84. // rTemp += System.Environment.NewLine + System.Environment.NewLine;
  85. // string strSQL = "SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE"
  86. // + " syscolumns.xusertype = systypes.xusertype And syscolumns.id = object_id ('[" + vDatabaseTable[i] + "]')";
  87. // rTemp += "SQL语句";
  88. // rTemp += System.Environment.NewLine + System.Environment.NewLine;
  89. // rTemp += "SET IDENTITY_INSERT [" + vDatabaseTable[i] + "] OFF" + System.Environment.NewLine;
  90. // rTemp += System.Environment.NewLine;
  91. //}
  92. //string vSqlScriptlFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + vTemplate + "/sqlscript.sql");
  93. //StreamWriter sw = null;
  94. //try
  95. //{
  96. // sw = new StreamWriter(vSqlScriptlFile, false, System.Text.Encoding.Default);
  97. // sw.WriteLine(rTemp);
  98. //}
  99. //catch { }
  100. //finally
  101. //{
  102. // if (sw != null)
  103. // {
  104. // sw.Flush();
  105. // sw.Close();
  106. // }
  107. //}
  108. #endregion
  109. MessageBox.ShowAndRedirect(this, @"模板发布成功!\n您可以将此模板(文件夹)提供给其他用户使用!", "?");
  110. break;
  111. default:
  112. this.mainID.Visible = true;
  113. Fun_TemplateList();
  114. break;
  115. }
  116. }
  117. private void Fun_TemplateList()
  118. {
  119. DataTable dt = new DataTable("Datas");
  120. dt.Columns.Add("SkinThumbnail", Type.GetType("System.String"));
  121. dt.Columns.Add("SkinInfo", Type.GetType("System.String"));
  122. dt.Columns.Add("Announcements", Type.GetType("System.String"));
  123. dt.Columns.Add("SkinState", Type.GetType("System.String"));
  124. dt.Columns.Add("SkinManage", Type.GetType("System.String"));
  125. int i = 0;
  126. string vTemplateDir = Server.MapPath(vTemplateFatherDir);
  127. DirectoryInfo di = new DirectoryInfo(vTemplateDir);
  128. foreach (DirectoryInfo isFolder in di.GetDirectories())
  129. {
  130. string vSkinThumbnail = "";
  131. string vSkinInfo = "";
  132. string vAnnouncements = "";
  133. string vSkinState = "0";
  134. string vConfigXml = isFolder.FullName + @"\config.xml";
  135. if (File.Exists(vConfigXml))
  136. {
  137. try
  138. {
  139. i++;
  140. vSkinThumbnail = Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Thumbnail").InnerText.Trim();
  141. vSkinThumbnail = vTemplateFatherDir + isFolder.Name + "/" + vSkinThumbnail;
  142. vSkinInfo = "模板路径:<font color=\"#ff0000\">" + vTemplateFatherDir + isFolder.Name + "/</font>"
  143. + "<br />模板名称:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Name").InnerText.Trim()
  144. + "<br />适用版本:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Version").InnerText.Trim()
  145. + "<br />模板作者:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Author").InnerText.Trim()
  146. + "<br />联系方式:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Contacts").InnerText.Trim()
  147. + "<br />发布时间:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Createdate").InnerText.Trim();
  148. vAnnouncements = Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Announcements").InnerText.Trim();
  149. }
  150. catch (Exception ex)
  151. {
  152. MessageBox.ShowAndRedirect(this, ex.Message, "?");
  153. }
  154. }
  155. else
  156. {
  157. vSkinInfo = "模板路径:<font color=\"#ff0000\">" + vTemplateFatherDir + isFolder.Name + "/</font>";
  158. }
  159. vSkinState = siteConfig.TemplateDir.Replace(vTemplateFatherDir, "").Replace("/", "") == isFolder.Name ? "1" : "0"; //模板是否启用
  160. #region 管理操作按钮
  161. string vSkinManage = "";
  162. if (vSkinState == "0")
  163. {
  164. string vMsgInfo = @"该模板文件夹下含有[sqlscript.sql]数据库脚本文件!\n强烈建议您备份数据库后进行该操作!"
  165. + @"\n\n系统将清空以下表中内容“iNethinkCMS_Channel, iNethinkCMS_Channel_CustomFields,iNethinkCMS_Custom_Pages,iNethinkCMS_Custom_Tags,iNethinkCMS_Special”!"
  166. + @"\n\n这将不可逆转!您确定执行该操作吗?";
  167. string vSqlScriptFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + isFolder.Name + "/sqlscript.sql");
  168. if (System.IO.File.Exists(vSqlScriptFile))
  169. {
  170. vSkinManage += "<a href=\"javascript:if(confirm('" + vMsgInfo + "')){location.href='?act=enabled&template=" + isFolder.Name + "';}\">启用模板</a><br />";
  171. }
  172. else
  173. {
  174. vSkinManage += "<a href=\"?act=enabled&template=" + isFolder.Name + "\">启用模板</a><br />";
  175. }
  176. }
  177. vSkinManage += "<a href=\"?act=release&template=" + isFolder.Name + "\">发布模板</a>";
  178. #endregion
  179. dt.Rows.Add(new object[] { vSkinThumbnail, vSkinInfo, vAnnouncements, vSkinState, vSkinManage });
  180. }
  181. Repeater.DataSource = dt;
  182. Repeater.DataBind();
  183. this.iNoInfo.Visible = dt.Rows.Count == 0 ? true : false;
  184. }
  185. }
  186. }