Download Calendar
using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.Membership;
using CMS.PortalControls;
using CMS.SiteProvider;
using System;
using System.IO;
using System.Web;
using System.Web.UI;
public partial class CMSWebParts_FO_DownloadCalendar : CMSAbstractWebPart
{
public override void OnContentLoaded()
{
base.OnContentLoaded();
SetupControl();
}
protected void SetupControl()
{
if (this.StopProcessing)
{
// Do not process
}
else
{
}
}
public override void ReloadData()
{
base.ReloadData();
SetupControl();
}
protected void lbtnCalendarDownloaddownload_Click(object sender, EventArgs e)
{
TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
TreeNode node = tree.SelectSingleNode(CurrentDocument.NodeID);
DateTime startDate = ValidationHelper.GetDateTime(node.GetDateTimeValue("EventDate", DateTime.MinValue), DateTime.MinValue);
DateTime endDate = ValidationHelper.GetDateTime(node.GetDateTimeValue("EventDateTo", DateTime.MinValue), DateTime.MinValue);
string organizer = "Alvin.Valdez@o365financials.com";
string location = ValidationHelper.GetString(node.GetStringValue("EventCity", String.Empty), String.Empty) +"," + ValidationHelper.GetString(node.GetStringValue("EventState", String.Empty), String.Empty) +","+ ValidationHelper.GetString(node.GetStringValue("EventCountry", String.Empty), String.Empty);
string summary = ValidationHelper.GetString(node.GetStringValue("EventSummary", String.Empty), String.Empty);
string description = ValidationHelper.GetString(node.GetStringValue("EventDetails", String.Empty), String.Empty);
string eventName = ValidationHelper.GetString(node.GetStringValue("EventName", String.Empty), String.Empty);
Response.Clear();
Response.Charset = "";
Response.ContentType = "text/calendar";
Response.AddHeader("Content-disposition", "attachment; filename="+ eventName + ".ics");
StringWriter stringWrite = new System.IO.StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
stringWrite.Write("BEGIN:VCALENDAR");
stringWrite.Write("\nVERSION:2.0");
stringWrite.Write("\nMETHOD:PUBLISH");
stringWrite.Write("\nBEGIN:VEVENT");
stringWrite.Write("\nORGANIZER:MAILTO:" + organizer);
stringWrite.Write("\nDTSTART:" + startDate.ToUniversalTime().ToString(DateFormat));
stringWrite.Write("\nDTEND:" + endDate.ToUniversalTime().ToString(DateFormat));
stringWrite.Write("\nLOCATION:" + location);
stringWrite.Write("\nUID:" + DateTime.Now.ToUniversalTime().ToString(DateFormat) + "@o365financials.com");
stringWrite.Write("\nDTSTAMP:" + DateTime.Now.ToUniversalTime().ToString(DateFormat));
stringWrite.Write("\nSUMMARY:" + summary);
stringWrite.Write("\nDESCRIPTION:" + description);
stringWrite.Write("\nPRIORITY:5");
stringWrite.Write("\nCLASS:PUBLIC");
stringWrite.Write("\nEND:VEVENT");
stringWrite.Write("\nEND:VCALENDAR");
Response.Write(stringWrite.ToString());
Response.End();
}
private string DateFormat
{
get { return "yyyyMMddTHHmmssZ"; } // 20060215T092000Z
}
}
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DownloadCalendar.ascx.cs" Inherits="CMSWebParts_FO_DownloadCalendar" %>
<asp:LinkButton Text="" ID="lbtnCalendarDownloaddownload" OnClick="lbtnCalendarDownloaddownload_Click" runat="server" CssClass="btn btn-primary">Add to Calendar</asp:LinkButton>