/pigeoncms/Modules/PigeonCms.UpdatesAdmin/views/Default.ascx.cs

http://pigeoncms.googlecode.com/ · C# · 385 lines · 293 code · 55 blank · 37 comment · 32 complexity · f08dcecd17acda05dbfed07978ae2b93 MD5 · raw file

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Web.Caching;
  12. using System.Collections.Generic;
  13. using PigeonCms;
  14. using Ionic.Zip;
  15. using System.IO;
  16. using System.Data.Common;
  17. public partial class Controls_UpdatesAdmin : PigeonCms.BaseModuleControl
  18. {
  19. private enum ViewIndex
  20. {
  21. Install = 0,
  22. SeeModules,
  23. SeeTemplates,
  24. EditModule,
  25. Sql
  26. }
  27. int targetLabelsPopup = 0;
  28. protected int TargetLabelsPopup
  29. {
  30. get { return GetIntParam("TargetLabelsPopup", targetLabelsPopup); }
  31. set { targetLabelsPopup = value; }
  32. }
  33. string labelsPopupUrl = "";
  34. protected string LabelsPopupUrl
  35. {
  36. get
  37. {
  38. if (string.IsNullOrEmpty(labelsPopupUrl) && this.TargetLabelsPopup > 0)
  39. {
  40. var menuMan = new MenuManager();
  41. var menuTarget = new PigeonCms.Menu();
  42. menuTarget = menuMan.GetByKey(this.TargetLabelsPopup);
  43. labelsPopupUrl = Utility.GetRoutedUrl(menuTarget);
  44. }
  45. return labelsPopupUrl;
  46. }
  47. }
  48. protected void Page_Load(object sender, EventArgs e)
  49. {
  50. if (!Roles.IsUserInRole("admin"))
  51. throw new HttpException(404, "Page not found");
  52. if (!Page.IsPostBack)
  53. {
  54. loadDropCoreFilter();
  55. }
  56. else
  57. {
  58. ////reload params on every postback, because cannot manage dinamically fields
  59. //PigeonCms.Menu currMenu = new PigeonCms.Menu();
  60. //PigeonCms.Module currModule = new PigeonCms.Module();
  61. //if (base.CurrentId > 0)
  62. //{
  63. //}
  64. //else
  65. //{
  66. //}
  67. //MenuHelper.LoadListMenu(ListParentId, base.CurrentId);
  68. }
  69. }
  70. protected void DropCoreFilter_SelectedIndexChanged(object sender, EventArgs e)
  71. {
  72. try { GridModules.DataBind(); }
  73. catch (Exception ex)
  74. {
  75. LblErr.Text = ex.Message;
  76. }
  77. }
  78. protected void TxtNameFilter_TextChanged(object sender, EventArgs e)
  79. {
  80. try { GridModules.DataBind(); }
  81. catch (Exception ex)
  82. {
  83. LblErr.Text = ex.Message;
  84. }
  85. }
  86. protected void ObjDs1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
  87. {
  88. var filter = new ModuleTypeFilter();
  89. switch (DropCoreFilter.SelectedValue)
  90. {
  91. case "1":
  92. filter.IsCore = Utility.TristateBool.True;
  93. break;
  94. case "0":
  95. filter.IsCore = Utility.TristateBool.False;
  96. break;
  97. default:
  98. filter.IsCore = Utility.TristateBool.NotSet;
  99. break;
  100. }
  101. if (!string.IsNullOrEmpty(TxtNameFilter.Text))
  102. {
  103. filter.FullNamePart = TxtNameFilter.Text;
  104. }
  105. e.InputParameters["filter"] = filter;
  106. }
  107. protected void ObjDsTemplates_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
  108. {
  109. ThemeObjFilter filter = new ThemeObjFilter();
  110. e.InputParameters["filter"] = filter;
  111. }
  112. protected void GridModules_RowCommand(object sender, GridViewCommandEventArgs e)
  113. {
  114. if (e.CommandName == "Select")
  115. {
  116. editModule(e.CommandArgument.ToString());
  117. }
  118. if (e.CommandName == "DeleteRow")
  119. {
  120. uninstallModule(e.CommandArgument.ToString());
  121. }
  122. }
  123. protected void GridModules_RowCreated(object sender, GridViewRowEventArgs e)
  124. {
  125. if (e.Row.RowType == DataControlRowType.Header)
  126. Utility.AddGlyph(GridModules, e.Row);
  127. }
  128. protected void GridModules_RowDataBound(object sender, GridViewRowEventArgs e)
  129. {
  130. if (e.Row.RowType == DataControlRowType.DataRow)
  131. {
  132. PigeonCms.ModuleType item = new PigeonCms.ModuleType();
  133. item = (PigeonCms.ModuleType)e.Row.DataItem;
  134. //Literal LitName = (Literal)e.Row.FindControl("LitName");
  135. //if (item.ContentType == MenuContentType.Url && !string.IsNullOrEmpty(item.Link))
  136. // LitName.Text = "<a href='" + item.Link + "' target='_blank' title='" + item.Link + "'>" +
  137. // Utility.GetTextPreview(item.Name, 20, "") + "</a>";
  138. //else
  139. // LitName.Text = Utility.GetTextPreview(item.Name, 20, "");
  140. var LnkModuleLabels = (HyperLink)e.Row.FindControl("LnkModuleLabels");
  141. LnkModuleLabels.NavigateUrl = this.LabelsPopupUrl
  142. + "?ModuleFullName=" + item.FullName;
  143. //Uninstall button
  144. ImageButton img1 = (ImageButton)e.Row.FindControl("LnkDel");
  145. if (item.IsCore)
  146. img1.Visible = false;
  147. else
  148. img1.Visible = true;
  149. }
  150. }
  151. protected void GridTemplates_RowCommand(object sender, GridViewCommandEventArgs e)
  152. {
  153. }
  154. protected void GridTemplates_RowCreated(object sender, GridViewRowEventArgs e)
  155. {
  156. if (e.Row.RowType == DataControlRowType.Header)
  157. Utility.AddGlyph(GridModules, e.Row);
  158. }
  159. protected void GridTemplates_RowDataBound(object sender, GridViewRowEventArgs e)
  160. {
  161. if (e.Row.RowType == DataControlRowType.DataRow)
  162. {
  163. }
  164. }
  165. protected void FileUpload1_AfterUpload()
  166. {
  167. string destFolder = "";
  168. if (FileUpload1.UploadedFiles.Count > 0)
  169. {
  170. using (ZipFile zip =
  171. ZipFile.Read(
  172. HttpContext.Current.Request.MapPath(
  173. FileUpload1.FilePath + FileUpload1.UploadedFiles[0])))
  174. {
  175. destFolder = HttpContext.Current.Request.MapPath("~/installation/tmp/" +
  176. FileUpload1.UploadedFiles[0].Substring(0, FileUpload1.UploadedFiles[0].Length - 4));
  177. if (Directory.Exists(destFolder)) Directory.Delete(destFolder, true);
  178. zip.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
  179. zip.ExtractAll(
  180. HttpContext.Current.Request.MapPath("~/installation/tmp/"));
  181. }
  182. InstallHelper.Install(destFolder);
  183. }
  184. }
  185. protected void BtnSaveModule_Click(object sender, EventArgs e)
  186. {
  187. LblErr.Text = "";
  188. LblOk.Text = "";
  189. try
  190. {
  191. //PigeonCms.Menu o1 = new PigeonCms.Menu();
  192. //Module currModule = new Module();
  193. //if (base.CurrentId == 0)
  194. //{
  195. //}
  196. //else
  197. //{
  198. //}
  199. //GridModules.DataBind();
  200. //LblOk.Text = Utility.GetLabel("RECORD_SAVED_MSG");
  201. //MultiView1.ActiveViewIndex = 0;
  202. }
  203. catch (Exception e1)
  204. {
  205. LblErr.Text = Utility.GetLabel("RECORD_ERR_MSG") + "<br />" + e1.ToString();
  206. }
  207. finally
  208. {
  209. }
  210. }
  211. protected void BtnCancelModule_Click(object sender, EventArgs e)
  212. {
  213. LblErr.Text = "";
  214. LblOk.Text = "";
  215. MultiView1.ActiveViewIndex = (int)ViewIndex.SeeModules;
  216. }
  217. protected void BtnSqlRun_Click(object sender, EventArgs e)
  218. {
  219. DbProviderFactory myProv = Database.ProviderFactory;
  220. DbConnection myConn = myProv.CreateConnection();
  221. DbDataReader myRd = null;
  222. DbCommand myCmd = myConn.CreateCommand();
  223. LitSqlResult.Text = "";
  224. string sqlQuery = ""; //full sql query
  225. try
  226. {
  227. myConn.ConnectionString = Database.ConnString;
  228. myConn.Open();
  229. myCmd.Connection = myConn;
  230. sqlQuery = Database.ParseSql(TxtSql.Text);
  231. LitSqlResult.Text = Database.ExecuteQuery(myRd, myCmd, sqlQuery);
  232. }
  233. catch (Exception ex)
  234. {
  235. LitSqlResult.Text = ex.ToString();
  236. }
  237. finally
  238. {
  239. myConn.Dispose();
  240. }
  241. }
  242. protected void BtnSqlCancel_Click(object sender, EventArgs e)
  243. {
  244. TxtSql.Text = "";
  245. LitSqlResult.Text = "";
  246. }
  247. protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)
  248. {
  249. if (MultiView1.ActiveViewIndex == (int)ViewIndex.EditModule)
  250. { }
  251. else if (MultiView1.ActiveViewIndex == (int)ViewIndex.Install)
  252. { }
  253. else if (MultiView1.ActiveViewIndex == (int)ViewIndex.SeeModules)
  254. { }
  255. else if (MultiView1.ActiveViewIndex == (int)ViewIndex.SeeTemplates)
  256. { }
  257. }
  258. protected void LnkInstall_Click(object sender, EventArgs e)
  259. {
  260. LblErr.Text = "";
  261. LblOk.Text = "";
  262. MultiView1.ActiveViewIndex = (int)ViewIndex.Install;
  263. }
  264. protected void LnkModules_Click(object sender, EventArgs e)
  265. {
  266. LblErr.Text = "";
  267. LblOk.Text = "";
  268. MultiView1.ActiveViewIndex = (int)ViewIndex.SeeModules;
  269. }
  270. protected void LnkTemplates_Click(object sender, EventArgs e)
  271. {
  272. LblErr.Text = "";
  273. LblOk.Text = "";
  274. MultiView1.ActiveViewIndex = (int)ViewIndex.SeeTemplates;
  275. }
  276. protected void LnkSql_Click(object sender, EventArgs e)
  277. {
  278. LblErr.Text = "";
  279. LblOk.Text = "";
  280. MultiView1.ActiveViewIndex = (int)ViewIndex.Sql;
  281. }
  282. #region private methods
  283. private void clearForm()
  284. {
  285. LblId.Text = "";
  286. TxtName.Text = "";
  287. }
  288. private void form2obj(PigeonCms.Menu obj)
  289. {
  290. obj.Id = base.CurrentId;
  291. //obj.MenuType = DropMenuTypes.SelectedValue;
  292. }
  293. private void obj2form(PigeonCms.ModuleType obj)
  294. {
  295. LblModuleId.Text = obj.FullName;
  296. }
  297. private void editModule(string recordId)
  298. {
  299. var obj = new PigeonCms.ModuleType();
  300. LblOk.Text = "";
  301. LblErr.Text = "";
  302. clearForm();
  303. base.CurrentKey = recordId;
  304. obj = new ModuleTypeManager().GetByFullName(base.CurrentKey);
  305. obj2form(obj);
  306. MultiView1.ActiveViewIndex = (int)ViewIndex.EditModule;
  307. }
  308. private void uninstallModule(string recordId)
  309. {
  310. LblOk.Text = "";
  311. LblErr.Text = "";
  312. //try
  313. //{
  314. // new MenuManager().DeleteById(recordId);
  315. //}
  316. //catch (Exception e)
  317. //{
  318. // LblErr.Text = e.Message;
  319. //}
  320. GridModules.DataBind();
  321. }
  322. private void loadDropCoreFilter()
  323. {
  324. DropCoreFilter.Items.Clear();
  325. DropCoreFilter.Items.Add(new ListItem(Utility.GetLabel("LblSelectCore", "Select core state"), ""));
  326. DropCoreFilter.Items.Add(new ListItem("Core item", "1"));
  327. DropCoreFilter.Items.Add(new ListItem("Optional item", "0"));
  328. }
  329. #endregion
  330. }