/*******************************************************************************
* iNethinkCMS - 网站内容管理系统
* Copyright (C) 2012-2013 inethink.com
*
* @author jackyang <69991000@qq.com>
* @website http://cms.inethink.com
* @version 1.3.6.0 (2013-08-14)
*
* This is licensed under the GNU LGPL, version 3.0 or later.
* For details, see: http://www.gnu.org/licenses/gpl-3.0.html
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iNethinkCMS.Command;
using iNethinkCMS.Web.UI;
namespace iNethinkCMS.Web.admin.sys
{
public partial class sys_template : Admin_BasePage
{
private string vNavInfo = "当前位置:";
private string vAct = "";
private string vTemplateFatherDir = "/template/";
private string vTemplate = "";
protected void Page_Load(object sender, EventArgs e)
{
CheckUserPower("e");
#region
vAct = Request.QueryString["Act"] != null ? Request.QueryString["Act"] : "";
vTemplate = Request.QueryString["Template"];
#endregion
this.navInfoID.InnerText = vNavInfo + "模板管理";
this.mainID.Visible = false;
switch (vAct)
{
case "enabled":
string strXmlFile = HttpContext.Current.Server.MapPath("~/config/sys.config");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(strXmlFile, "//sys_configuration", "TemplateDir", "");
string vSqlScriptFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + vTemplate + "/sqlscript.sql");
if (System.IO.File.Exists(vSqlScriptFile))
{
string[] vDatabaseTable = { "iNethinkCMS_Channel", "iNethinkCMS_Channel_CustomFields", "iNethinkCMS_Custom_Pages", "iNethinkCMS_Custom_Tags", "iNethinkCMS_Special" };
for (int i = 0; i < vDatabaseTable.Length; i++)
{
Helper.SQLHelper.ExecuteSql("delete from [" + vDatabaseTable[i] + "]");
Helper.SQLHelper.ExecuteSql("DBCC CHECKIDENT([" + vDatabaseTable[i] + "],reseed,0)");
}
//执行脚本文件
string sqlContent = File.ReadAllText(vSqlScriptFile, System.Text.Encoding.UTF8);
if (!string.IsNullOrEmpty(sqlContent))
{
Helper.SQLHelper.ExecuteSql(sqlContent);
}
//文件重命名
File.Move(vSqlScriptFile, vSqlScriptFile.Replace("sqlscript.sql", "sqlscript.sqlbak"));
}
Web.UI.WebUI_Function.Fun_CacheDel(); //清空一次系统缓存
MessageBox.ShowAndRedirect(this, "", "?");
break;
case "release":
string vConfigXml = Server.MapPath(vTemplateFatherDir + vTemplate + @"/config.xml");
if (!File.Exists(vConfigXml))
{
Helper.XMLHelper.CreateXmlDocument(vConfigXml, "skin", "1.0", "utf-8", null); //创建XML文件
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Name", "");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Version", "");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Author", "");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Contacts", "");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Thumbnail", "");
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Announcements", "");
}
Helper.XMLHelper.CreateOrUpdateXmlNodeByXPath(vConfigXml, "//skin", "Createdate", "");
#region 输出SQL脚本[待开发完善]
//string[] vDatabaseTable = { "iNethinkCMS_Channel", "iNethinkCMS_Channel_CustomFields", "iNethinkCMS_Custom_Pages", "iNethinkCMS_Custom_Tags", "iNethinkCMS_Special" };
//string rTemp = "";
//for (int i = 0; i < vDatabaseTable.Length; i++)
//{
// rTemp += "SET IDENTITY_INSERT [" + vDatabaseTable[i] + "] ON";
// rTemp += System.Environment.NewLine + System.Environment.NewLine;
// string strSQL = "SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE"
// + " syscolumns.xusertype = systypes.xusertype And syscolumns.id = object_id ('[" + vDatabaseTable[i] + "]')";
// rTemp += "SQL语句";
// rTemp += System.Environment.NewLine + System.Environment.NewLine;
// rTemp += "SET IDENTITY_INSERT [" + vDatabaseTable[i] + "] OFF" + System.Environment.NewLine;
// rTemp += System.Environment.NewLine;
//}
//string vSqlScriptlFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + vTemplate + "/sqlscript.sql");
//StreamWriter sw = null;
//try
//{
// sw = new StreamWriter(vSqlScriptlFile, false, System.Text.Encoding.Default);
// sw.WriteLine(rTemp);
//}
//catch { }
//finally
//{
// if (sw != null)
// {
// sw.Flush();
// sw.Close();
// }
//}
#endregion
MessageBox.ShowAndRedirect(this, @"模板发布成功!\n您可以将此模板(文件夹)提供给其他用户使用!", "?");
break;
default:
this.mainID.Visible = true;
Fun_TemplateList();
break;
}
}
private void Fun_TemplateList()
{
DataTable dt = new DataTable("Datas");
dt.Columns.Add("SkinThumbnail", Type.GetType("System.String"));
dt.Columns.Add("SkinInfo", Type.GetType("System.String"));
dt.Columns.Add("Announcements", Type.GetType("System.String"));
dt.Columns.Add("SkinState", Type.GetType("System.String"));
dt.Columns.Add("SkinManage", Type.GetType("System.String"));
int i = 0;
string vTemplateDir = Server.MapPath(vTemplateFatherDir);
DirectoryInfo di = new DirectoryInfo(vTemplateDir);
foreach (DirectoryInfo isFolder in di.GetDirectories())
{
string vSkinThumbnail = "";
string vSkinInfo = "";
string vAnnouncements = "";
string vSkinState = "0";
string vConfigXml = isFolder.FullName + @"\config.xml";
if (File.Exists(vConfigXml))
{
try
{
i++;
vSkinThumbnail = Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Thumbnail").InnerText.Trim();
vSkinThumbnail = vTemplateFatherDir + isFolder.Name + "/" + vSkinThumbnail;
vSkinInfo = "模板路径:" + vTemplateFatherDir + isFolder.Name + "/"
+ "
模板名称:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Name").InnerText.Trim()
+ "
适用版本:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Version").InnerText.Trim()
+ "
模板作者:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Author").InnerText.Trim()
+ "
联系方式:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Contacts").InnerText.Trim()
+ "
发布时间:" + Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Createdate").InnerText.Trim();
vAnnouncements = Helper.XMLHelper.GetXmlNodeByXpath(vConfigXml, "//skin//Announcements").InnerText.Trim();
}
catch (Exception ex)
{
MessageBox.ShowAndRedirect(this, ex.Message, "?");
}
}
else
{
vSkinInfo = "模板路径:" + vTemplateFatherDir + isFolder.Name + "/";
}
vSkinState = siteConfig.TemplateDir.Replace(vTemplateFatherDir, "").Replace("/", "") == isFolder.Name ? "1" : "0"; //模板是否启用
#region 管理操作按钮
string vSkinManage = "";
if (vSkinState == "0")
{
string vMsgInfo = @"该模板文件夹下含有[sqlscript.sql]数据库脚本文件!\n强烈建议您备份数据库后进行该操作!"
+ @"\n\n系统将清空以下表中内容“iNethinkCMS_Channel, iNethinkCMS_Channel_CustomFields,iNethinkCMS_Custom_Pages,iNethinkCMS_Custom_Tags,iNethinkCMS_Special”!"
+ @"\n\n这将不可逆转!您确定执行该操作吗?";
string vSqlScriptFile = HttpContext.Current.Server.MapPath(vTemplateFatherDir + isFolder.Name + "/sqlscript.sql");
if (System.IO.File.Exists(vSqlScriptFile))
{
vSkinManage += "启用模板
";
}
else
{
vSkinManage += "启用模板
";
}
}
vSkinManage += "发布模板";
#endregion
dt.Rows.Add(new object[] { vSkinThumbnail, vSkinInfo, vAnnouncements, vSkinState, vSkinManage });
}
Repeater.DataSource = dt;
Repeater.DataBind();
this.iNoInfo.Visible = dt.Rows.Count == 0 ? true : false;
}
}
}