?? addnewsletter.aspx.cs
字號:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;
namespace ASPNET.StarterKit.Communities.Admin.SendNewsletter
{
/// <summary>
/// Summary description for AddNewsletter.
/// </summary>
public class AddNewsletter : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList dropNewsletterTemplates;
protected System.Web.UI.WebControls.Button btnDeleteTemplate;
protected System.Web.UI.WebControls.Button btnSaveAsNewTemplate;
protected System.Web.UI.WebControls.Button btnSaveTemplate;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected System.Web.UI.WebControls.TextBox txtTemplateName;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
protected System.Web.UI.WebControls.TextBox txtNewsletterSubject;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3;
protected System.Web.UI.WebControls.TextBox txtNewsletterBody;
protected System.Web.UI.WebControls.RadioButtonList rdlNewsletterBodyFormat;
protected System.Web.UI.WebControls.Button btnPreviewNewsletter;
protected System.Web.UI.WebControls.Button btnSaveAndSendNewsletter;
protected System.Web.UI.WebControls.Button btnSendTest;
protected System.Web.UI.WebControls.TextBox txtTestEmail;
protected System.Web.UI.WebControls.Panel pnlForm;
protected System.Web.UI.WebControls.Label lblSubject;
protected System.Web.UI.WebControls.Label lblBody;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Panel pnlPreview;
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.dropNewsletterTemplates.SelectedIndexChanged += new System.EventHandler(this.Template_Changed);
this.btnDeleteTemplate.Click += new System.EventHandler(this.DeleteTemplate);
this.btnSaveAsNewTemplate.Click += new System.EventHandler(this.SaveAsNewTemplate);
this.btnSaveTemplate.Click += new System.EventHandler(this.SaveTemplate);
this.btnPreviewNewsletter.Click += new System.EventHandler(this.Preview);
this.btnSaveAndSendNewsletter.Click += new System.EventHandler(this.SendNewsletter);
this.btnSendTest.Click += new System.EventHandler(this.SendTest);
this.Button1.Click += new System.EventHandler(this.Continue);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
//*******************************************************
//
// When the page loads, grab the list of newsletter
// template names from the database and bind them to
// a dropdown list..
//
//*******************************************************
void Page_Load(object sender, System.EventArgs e) {
if (!Page.IsPostBack) {
BindTemplates();
if (dropNewsletterTemplates.Items.Count > 0)
GetTemplate(Int32.Parse(dropNewsletterTemplates.SelectedItem.Value));
}
}
//*******************************************************
//
// Take an existing template and save it as a
// new template.
//
//*******************************************************
void SaveAsNewTemplate(Object s, EventArgs e) {
int templateID = AdminUtility.AddNewsletterTemplate
(
txtTemplateName.Text,
txtNewsletterSubject.Text,
txtNewsletterBody.Text,
Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
);
BindTemplates();
SelectTemplate(templateID);
}
//*******************************************************
//
// Save a newsletter template to the database.
//
//*******************************************************
void SaveTemplate(Object s, EventArgs e) {
// if no templates, save as new template
if (dropNewsletterTemplates.Items.Count == 0) {
SaveAsNewTemplate(s, e);
return;
}
int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
AdminUtility.EditNewsletterTemplate
(
templateID,
txtTemplateName.Text,
txtNewsletterSubject.Text,
txtNewsletterBody.Text,
Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
);
BindTemplates();
SelectTemplate(templateID);
}
//*******************************************************
//
// Delete an existing newsletter template.
//
//*******************************************************
void DeleteTemplate(Object s, EventArgs e) {
// don't delete if there are not templates
if (dropNewsletterTemplates.Items.Count == 0)
return;
int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
AdminUtility.DeleteTemplate(templateID);
BindTemplates();
if (dropNewsletterTemplates.Items.Count > 0)
GetTemplate(Int32.Parse(dropNewsletterTemplates.SelectedItem.Value));
}
//*******************************************************
//
// User has selected a new newsletter template
// from the dropdown list.
//
//*******************************************************
void Template_Changed(Object s, EventArgs e) {
int templateID = Int32.Parse(dropNewsletterTemplates.SelectedItem.Value);
GetTemplate(templateID);
SelectTemplate(templateID);
}
//*******************************************************
//
// Get newsletter template information from the database
//
//*******************************************************
void GetTemplate(int templateID) {
SqlDataReader dr = AdminUtility.GetNewsletterTemplate(templateID);
if (dr.Read()) {
txtTemplateName.Text = (string)dr["Template_Name"];
txtNewsletterSubject.Text = (string)dr["Template_Subject"];
txtNewsletterBody.Text = (string)dr["Template_Body"];
int bodyFormat = (int)dr["Template_BodyFormat"];
rdlNewsletterBodyFormat.SelectedIndex = -1;
rdlNewsletterBodyFormat.Items.FindByValue(bodyFormat.ToString()).Selected = true;
}
dr.Close();
}
//*******************************************************
//
// Bind the templates to the dropdown list.
//
//*******************************************************
void BindTemplates() {
dropNewsletterTemplates.DataSource = AdminUtility.GetNewsletterTemplateNames();
dropNewsletterTemplates.DataTextField = "Template_Name";
dropNewsletterTemplates.DataValueField = "Template_ID";
dropNewsletterTemplates.DataBind();
}
//*******************************************************
//
// Display the selected template in the form.
//
//*******************************************************
void SelectTemplate(int templateID) {
dropNewsletterTemplates.SelectedIndex = -1;
dropNewsletterTemplates.Items.FindByValue(templateID.ToString()).Selected = true;
}
//*******************************************************
//
// Send a test newsletter to the specified email address.
//
//*******************************************************
void SendTest(Object s, EventArgs e) {
// Don't send if no email
if (txtTestEmail.Text.Trim() == String.Empty)
return;
// Get user profile
ProfileInfo profileInfo = UserUtility.GetProfile(User.Identity.Name);
// Get body format info
MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
// Get SMTP Server
string smtpServer = CommunityGlobals.SmtpServer;
// Create FROM address
string from = String.Format("news@{0}", smtpServer);
// Send formated text
string subject = EmailUtility.FormatEmailText(txtNewsletterSubject.Text, bodyFormat, profileInfo);
string body = EmailUtility.FormatEmailText(txtNewsletterBody.Text, bodyFormat, profileInfo);
EmailUtility.SendEmail(from, txtTestEmail.Text, subject, body, bodyFormat, CommunityGlobals.SmtpServer);
}
//*******************************************************
//
// Display preview of the newsletter.
//
//*******************************************************
void Preview(Object s, EventArgs e) {
// Get user profile
ProfileInfo profileInfo = UserUtility.GetProfile(User.Identity.Name);
// Get body format info
MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
// Display formated text
lblSubject.Text = EmailUtility.FormatEmailText(txtNewsletterSubject.Text, bodyFormat, profileInfo);
lblBody.Text = EmailUtility.FormatEmailText(txtNewsletterBody.Text, bodyFormat, profileInfo);
// Format Plain Text
if (bodyFormat == MailFormat.Text) {
lblSubject.Text = String.Format("\n<pre>{0}</pre>\n", Server.HtmlEncode(lblSubject.Text));
lblBody.Text = String.Format("\n<pre>{0}</pre>\n", Server.HtmlEncode(lblBody.Text));
}
pnlForm.Visible = false;
pnlPreview.Visible = true;
}
//*******************************************************
//
// Finish previewing a newsletter and return to
// editing.
//
//*******************************************************
void Continue(Object s, EventArgs e) {
pnlForm.Visible = true;
pnlPreview.Visible = false;
}
//*******************************************************
//
// Begin sending the newsletter and redirect to
// Sending.aspx page to display send progress.
//
//*******************************************************
void SendNewsletter(Object s, EventArgs e) {
if (Page.IsValid) {
// Get body format info
MailFormat bodyFormat = (MailFormat)Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value);
int newsletterID = AdminUtility.AddNewsletter
(
txtNewsletterSubject.Text,
txtNewsletterBody.Text,
Int32.Parse(rdlNewsletterBodyFormat.SelectedItem.Value)
);
// Redirect to status page before sending emails.
// ScriptTimeout is set so that all the emails must be sent within an hour.
// You can set this to a higher value when you have a huge number of emails to send.
Server.ScriptTimeout = 60 * 60;
Response.Redirect(String.Format("Sending.aspx?id={0}", newsletterID), false);
Response.Flush();
Response.Close();
// Send the Emails
EmailUtility.SendNewsletter
(
newsletterID,
txtNewsletterSubject.Text,
txtNewsletterBody.Text,
bodyFormat
);
}
}
private void Page_Load()
{
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -