using framework_business;
using framework_library;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class controls_admin_templates : System.Web.UI.UserControl
{
#region methods
///
/// Method to Bind Template Data
///
private void BindTemplateData()
{
try
{
ArrayList TemplateList = xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "", "", "templateName");
rptTemplatePages.DataSource = TemplateList;
rptTemplatePages.DataBind();
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Bind Templates
///
private void BindTemplateTypes()
{
ArrayList templateTypes = new ArrayList();
try
{
templateTypes = xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplateType), "isActive", "1", "sequence");
ddTemplateTypes.DataSource = templateTypes;
ddTemplateTypes.DataTextField = "templateType";
ddTemplateTypes.DataValueField = "recId";
ddTemplateTypes.DataBind();
}
catch (Exception ex)
{
exception.HandleException("Admin:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("Error.aspx", false);
}
}
///
/// Populate Form Values
///
///
private void PopulatePageFormValues(ref oTemplate _Template)
{
try
{
txtTemplateName.Value = _Template.templateName;
if (_Template.templateTypeId > 0)
ddTemplateTypes.SelectedValue = _Template.templateTypeId.ToString();
EditorContent = _Template.templateContent;
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Save Form Values
///
///
private void SavePageFormValues(ref oTemplate _Template)
{
try
{
_Template.templateName = txtTemplateName.Value;
if(ddTemplateTypes.SelectedValue != String.Empty)
_Template.templateTypeId = int.Parse(ddTemplateTypes.SelectedValue);
_Template.templateContent = EditorContent;
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Method to Toggle Panels
///
///
private void TogglePanels(string panelName)
{
switch (panelName)
{
case "pnlTemplatePage":
pnlTemplatePage.Visible = true;
pnlTemplateList.Visible = false;
break;
case "pnlTemplateList":
pnlTemplatePage.Visible = false;
pnlTemplateList.Visible = true;
break;
}
//clear result
pnlResult.Visible = false;
}
#endregion
#region events
///
/// Page Load Event
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
//CVH 2017-11-08 Set radeditor / textbox visible depending on device
SetControlsVisibility();
BindTemplateData();
BindTemplateTypes();
}
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// New Template Click
///
///
///
protected void btnNewTemplate_Click(object sender, EventArgs e)
{
try
{
//show Template Specific
TogglePanels("pnlTemplatePage");
Session["TemplateId"] = 0;
utils.disposeSession("Template");
oTemplate Template = new oTemplate();
PopulatePageFormValues(ref Template);
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Edit the Template page
///
///
///
protected void lnkEdit_Click(object sender, EventArgs e)
{
oTemplate _Template = new oTemplate();
ArrayList catList = new ArrayList();
try
{
if (sender.GetType() == typeof(LinkButton))
{
//
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
Session["TemplateId"] = recId;
//get cat
catList = xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "recId", recId.ToString());
//enumerate list
foreach (oTemplate cat in catList)
{
//assign object
_Template = cat;
//populate page form
PopulatePageFormValues(ref _Template);
Session["Template"] = _Template;
break;
}
//show Template Form
TogglePanels("pnlTemplatePage");
}
}
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Remove the Template
///
///
///
protected void lnkRemove_Click(object sender, EventArgs e)
{
try
{
if (sender.GetType() == typeof(LinkButton))
{
//
int recId = int.Parse(((LinkButton)sender).CommandArgument);
//Delete cat
if (xData.DeleteTyped("recId", recId.ToString(), typeof(oTemplate)))
{
//rebind pages grid
BindTemplateData();
pnlResult.Visible = true;
//display successful result
lblResult.Text = "the selected Template was deleted successfully.";
}
}
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Cancel
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
try
{
Session["TemplateId"] = 0;
utils.disposeSession("Template");
BindTemplateData();
//show cat list
TogglePanels("pnlTemplateList");
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save Click
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
oTemplate Template = new oTemplate();
try
{
if (utils.verifySession("Template"))//update mode
{
Template = (oTemplate)Session["Template"];
//save form values
SavePageFormValues(ref Template);
if (xData.UpdateTyped("recId", Template.recId.ToString(), typeof(oTemplate), Template))
{
Session["TemplateId"] = Template.recId;
Session["Template"] = Template;
BindTemplateData();
pnlResult.Visible = true;
lblResult.Text = "your changes were updated successfully.";
}
}
else
{
if (!xData.VerifyExists("recId", typeof(oTemplate), "templateName", txtTemplateName.Value))
{
//save form values
SavePageFormValues(ref Template);
Template.recId = xData.SaveTyped("recId", typeof(oTemplate), Template);
if (Template.recId > 0)
{
Session["TemplateId"] = Template.recId;
Session["Template"] = Template;
BindTemplateData();
pnlResult.Visible = true;
lblResult.Text = "your Template was created successfully.";
}
}
else
{
pnlResult.Visible = true;
lblResult.Text = "A Template with this name already exists on the system";
}
}
}
catch (Exception ex)
{
exception.HandleException("Template:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region iOS
///
/// RadEditor not working great on iPhone & iPad, replace with textbox
///
public string EditorContent
{
get
{
if (isiPhone())
{
return txtTemplate.Text;
}
else
{
return edTemplate.Content;
}
}
set
{
if (isiPhone())
{
txtTemplate.Text = value;
}
else
{
edTemplate.Content = value;
}
}
}
private bool isiPhone()
{
string userAgent = Request.Headers["User-Agent"];
if (!string.IsNullOrEmpty(userAgent))
{
return userAgent.ToLowerInvariant().Contains("iphone") || userAgent.ToLowerInvariant().Contains("ipad");
}
else
{
return false;
}
}
private void SetControlsVisibility()
{
txtTemplate.Visible = isiPhone();
edTemplate.Visible = !isiPhone();
}
#endregion
}