jxycms
8/1/2017 - 5:25 AM

Download Calendar

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>