using System;
using System.ComponentModel;
using System.Configuration;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.UI;
using Dealeasy.Ex;
using System.Web.UI.WebControls;
[DesignerCategory("ASPXCodeBehind")]
public class Base: PageBase
{
private static readonly string EventSetMultiLanguage = "EventSetMultiLanguage";
private static readonly string EventSetDocumentTitle = "EventSetDocumentTitle";
private static readonly string EventAddClientScriptForControls = "EventAddClientScriptForControls";
private static readonly string EventProcessControlsWithStatus = "EventProcessControlsWithStatus";
private static readonly string EventSetValueForDataControls = "EventSetValueForDataControls";
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (Events != null)
{
EventHandler handler = Events[EventSetDocumentTitle] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
// set page's title
if (!DocumentTitle.Equals(string.Empty))
{
ClientScript.RegisterClientScriptBlock(GetType(), "___asp2TrainingSetDocumentTitleJavascript",
"<script language=/"javascript/">document.title=/"" +
DocumentTitle + "/";</script>");
}
// register javascript from JavascriptFileUrl
RegisterJavaScript();
// event: add javascript event for controls on page in it
if (Events != null)
{
EventHandler handler = Events[EventAddClientScriptForControls] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
if (!IsPostBack)
{
// verify whether current user can run this page.
//CheckPermission();
// event: set multi-language for controls on page in it.
if (Events != null)
{
EventHandler handler = Events[EventSetMultiLanguage] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
// change controls' state on page by page state
if (Events != null)
{
EventHandler handler = Events[EventProcessControlsWithStatus] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
// event: initialize data for controls on page in it
if (Events != null)
{
EventHandler handler = Events[EventSetValueForDataControls] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}
}
[Description(" Event, set multi-language for controls on page in it. /n Only occured before page PostBack. ")]
public virtual event EventHandler SetMultiLanguage
{
add { Events.AddHandler(EventSetMultiLanguage, value); }
remove { Events.RemoveHandler(EventSetMultiLanguage, value); }
}
[Description(" Event, set title of the page. /n Occur page every PostBack. ")]
public virtual event EventHandler SetDocumentTitle
{
add { Events.AddHandler(EventSetDocumentTitle, value); }
remove { Events.RemoveHandler(EventSetDocumentTitle, value); }
}
[Description(" Event, change controls' state on page by page state. /n Only occured before page PostBack. ")]
public virtual event EventHandler ProcessControlsWithStatus
{
add { Events.AddHandler(EventProcessControlsWithStatus, value); }
remove { Events.RemoveHandler(EventProcessControlsWithStatus, value); }
}
[Description(" Event, add javascript event for controls on page in it./n Only occured before page PostBack. ")]
public virtual event EventHandler AddClientScriptForControls
{
add { Events.AddHandler(EventAddClientScriptForControls, value); }
remove { Events.RemoveHandler(EventAddClientScriptForControls, value); }
}
[Description(
" Event, initialize data for controls on page in it. /n eg. DropDownList, DataGrid... /n Only occured before page PostBack. "
)]
public virtual event EventHandler SetValueForDataControls
{
add { Events.AddHandler(EventSetValueForDataControls, value); }
remove { Events.RemoveHandler(EventSetValueForDataControls, value); }
}
[Description(" Property, page's state. /n Save it in a hidden TextBox. ")]
public virtual string PageStatus
{
get
{
object ps = GetFromViewState("___asp2TrainingPageStatusTextBox");
if (ps != null)
{
return ps.ToString();
}
return "";
}
set { SaveToViewState("___asp2TrainingPageStatusTextBox", value); }
}
private string javascriptUrl = "";
[Description(" Url of javascript file. /n All script will write in the first of body tag. ")]
public virtual string JavascriptFileUrl
{
set { javascriptUrl = value; }
get { return javascriptUrl; }
}
private string pageId = "";
[Description(" Property: id of page. ")]
public virtual string PageId
{
get { return pageId; }
set { pageId = value; }
}
private string userId = "";
[Description(" Property: user id of logined user. ")]
public virtual string UserId
{
get { return userId; }
set { userId = value; }
}
private string documentTitle = "";
[Description(" Property: title of page ")]
public virtual string DocumentTitle
{
set { documentTitle = value; }
get { return documentTitle; }
}
protected virtual void CheckPermission()
{
}
protected virtual void RegisterJavaScript()
{
if (!JavascriptFileUrl.Equals(string.Empty) &&
!ClientScript.IsClientScriptBlockRegistered(GetType(), "___asp2TrainingFunctionJavascript"))
{
string path = Server.MapPath(JavascriptFileUrl);
if (File.Exists(path))
{
StreamReader sr = new StreamReader(path);
string script = sr.ReadToEnd();
sr.Close();
if (!script.Trim().ToLower().StartsWith("<script"))
{
script = "<script language=/"javascript/"" + script;
}
if (script.Trim().ToLower().EndsWith("</script>"))
{
script += "</script>";
}
ClientScript.RegisterClientScriptBlock(GetType(), "___asp2TrainingFunctionJavascript", script);
}
}
}
protected virtual void SaveToViewState(string name, object value)
{
if (ViewState[name] == null)
{
ViewState.Add(name, value);
}
else
{
ViewState[name] = value;
}
}
protected virtual object GetFromViewState(string name)
{
return ViewState[name];
}
protected virtual void SaveToSession(string name, object value)
{
if (Session[name] == null)
{
Session.Add(name, value);
}
else
{
Session[name] = value;
}
}
protected virtual object GetFromSession(string name)
{
return Session[name];
}
protected virtual void ShowMessage(string msg)
{
ClientScript.RegisterStartupScript(GetType(), "___asp2TrainingShowMessage",
"<script language=/"javascript/">var str=/"" +
msg.Replace("//", "").Replace("/r/n", " ").Replace("/"", "'") +
"/";alert(str.replace(/<br>/g,'//n').replace(/<BR>/g,'//n'));</script>");
}
protected virtual bool IsFromPageB()
{
// If requested url is null, then NOT back from page B
if (Request.UrlReferrer != null)
{
// Current request url
string refererUrl = Request.UrlReferrer.GetLeftPart(UriPartial.Path).ToUpper();
// Priv request url
string currentUrl = Request.Url.GetLeftPart(UriPartial.Path).ToUpper();
// If equal when replaced "B.ASPX" with "A.ASPX", then back from page B
if (refererUrl.Replace("B.ASPX", "A.ASPX").Equals(currentUrl))
{
return true;
}
}
return false;
}
protected virtual void ShowMessage(DealeasyException dex)
{
dex.UserId = UserId;
if (dex.Msg == null || dex.Msg.Equals(string.Empty))
{
dex.Msg = dex.Message;
}
if (dex.ErrorType == MessageType.Warning || dex.ErrorType == MessageType.Error)
{
ShowMessage(dex.Msg);
}
else
{
DealeasyException.Dex = dex;
string errPageUrl = Request.ApplicationPath + ConfigurationManager.AppSettings["ErrorPageUrl"];
if (IsValidUrl(errPageUrl))
{
Response.Redirect(errPageUrl);
}
}
}
public bool IsValidUrl(string url)
{
string pattern = @"^(/w+):([^/:]+)(:/d*)?([^# ]*)";
if (Regex.IsMatch(url, pattern))
{
return true;
}
return false;
}
/// <summary>
/// open a client window type is modal
/// </summary>
/// <param name="url"></param>
/// <param name="features"></param>
protected virtual void OpenModalWindow(string url, string features)
{
StringBuilder script = new StringBuilder();
if (url != null && !url.Equals(string.Empty))
{
#if ( DEBUG )
//script = script.AppendFormat("window.open(/"../frames.aspx?framePage={0}/"", url);
script = script.AppendFormat("window.open(/"{0}/"", url);
#else
//script = script.AppendFormat("window.showModalDialog(/"../frames.aspx?framePage={0}/"", url);
script = script.AppendFormat("window.showModalDialog(/"{0}/"", url);
if (features != null && !features.Equals(string.Empty))
{
script = script.AppendFormat(",window,{0}", features);
}
#endif
script = script.Append(");");
ClientScript.RegisterStartupScript(GetType(), "__scmhubShowModalDialog",
"<script language=/"javascript/">" + script + "</script>");
}
}
protected virtual void CloseClientWindow()
{
StringBuilder script = new StringBuilder();
script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener=null; close();");
ClientScript.RegisterStartupScript(GetType(), "__scmhubCloseWindow", script.ToString());
}
protected virtual void ParamentSubmit()
{
StringBuilder script = new StringBuilder();
script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener.document.form1.submit(); close();");
ClientScript.RegisterStartupScript(GetType(), "__hubCloseWindow", script.ToString());
}
protected virtual void SubmitParent()
{
StringBuilder script = new StringBuilder();
script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener.document.form1.submit(); close();");
ClientScript.RegisterStartupScript(GetType(), "__scmCloseWindow", script.ToString());
}
protected virtual void ShowWindowWithButton(Button btn, string WindowPageName, int WinTop, int WinLeft, int WinHeight, int WinWidth)
{
string strScript = "javascript:window.showModalDialog(/"{0}/",window,/"dialogTop:{1}px;dialogLeft:{2}px;" +
"dialogHeight:{3}px;dialogWidth:{4}px;edge:raised;status:no;help:no;/"); return false; ";
strScript = string.Format(strScript, WindowPageName, WinTop, WinLeft, WinHeight, WinWidth);
btn.Attributes.Add("onclick", strScript);
}
protected virtual void ShowWindowWithButton(Button btn, string WindowPageName)
{
string strScript = "javascript:window.showModalDialog(/"{0}/",window,/"dialogTop:200px;dialogLeft:400px;" +
"dialogHeight:300px;dialogWidth:400px;edge:raised;status:no;help:no;/"); return false; ";
strScript = string.Format(strScript, WindowPageName);
btn.Attributes.Add("onclick", strScript);
}
}
}