using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.DocumentEngine; using CMS.UIControls; using CMS.ExtendedControls; public partial class CMSModules_EventManager_Controls_EventList : CMSAdminControl { #region "Private variables" private UserInfo currentUserInfo = null; private SiteInfo currentSiteInfo = null; private bool mUsePostBack = false; private int mSelectedEventID = 0; private string mOrderBy = "EventDate DESC"; private string mItemsPerPage = String.Empty; private string mEventScope = "all"; private string mSiteName = String.Empty; #endregion #region "Properties" /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } /// /// Indicates if control is used on live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { plcMess.IsLiveSite = value; base.IsLiveSite = value; } } /// /// Indicates whether change location or postback if edit. /// public bool UsePostBack { get { return mUsePostBack; } set { mUsePostBack = value; } } /// /// Site name filter. /// public string SiteName { get { return mSiteName; } set { mSiteName = value; } } /// /// ID of selected event. /// public int SelectedEventID { get { return mSelectedEventID; } set { mSelectedEventID = value; } } /// /// Gets or sets the order by condition. /// public string OrderBy { get { return mOrderBy; } set { mOrderBy = value; } } /// /// Gets or sets the value of items per page. /// public string ItemsPerPage { get { return mItemsPerPage; } set { mItemsPerPage = value; } } /// /// Gets or sets event date filter. /// public string EventScope { get { return mEventScope; } set { mEventScope = value; } } /// /// Stop processing. /// public override bool StopProcessing { get { return base.StopProcessing; } set { base.StopProcessing = value; gridElem.StopProcessing = value; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { if (!URLHelper.IsPostback()) { drpEventScope.Items.Add(new ListItem(GetString("general.selectall"), "all")); drpEventScope.Items.Add(new ListItem(GetString("eventmanager.eventscopeupcoming"), "upcoming")); drpEventScope.SelectedValue = QueryHelper.GetString("scope", "all"); } EventScope = drpEventScope.SelectedValue; btnFilter.Text = GetString("general.show"); gridElem.HideControlForZeroRows = false; gridElem.ZeroRowsText = GetString("Events_List.NoBookingEvent"); gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction); if ((!RequestHelper.IsPostBack()) && (!string.IsNullOrEmpty(ItemsPerPage))) { gridElem.Pager.DefaultPageSize = ValidationHelper.GetInteger(ItemsPerPage, -1); } gridElem.OrderBy = OrderBy; gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound); if (UsePostBack) { gridElem.GridName = "~/CMSModules/EventManager/Controls/Events_List_Control.xml"; } else { gridElem.GridName = "~/CMSModules/EventManager/Controls/Events_List.xml"; } SetWhereCondition(); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "editEventScript", ScriptHelper.GetScript("function EditEvent(eventId) { location.replace('Events_Edit.aspx?eventId=' + eventId); }")); } #endregion #region "Methods" /// /// Reloads data. /// public override void ReloadData() { SetWhereCondition(); gridElem.ReloadData(); base.ReloadData(); } private void SetWhereCondition() { // Check existence of CMS.BookingEvent dataclass if (DataClassInfoProvider.GetDataClass("CMS.BookingEvent") != null) { // Filter site name string siteName = SiteName; if (siteName == String.Empty) { siteName = CMSContext.CurrentSiteName; } // If not show all if (siteName != TreeProvider.ALL_SITES) { gridElem.WhereCondition = "(NodeLinkedNodeID IS NULL AND SiteName LIKE '" + siteName + "')"; } else { gridElem.WhereCondition = "NodeLinkedNodeID IS NULL"; } // Filter time interval if (EventScope != "all") { if (EventScope == "upcoming") { gridElem.WhereCondition = SqlHelperClass.AddWhereCondition(gridElem.WhereCondition, "EventDate >= @Date"); } else { gridElem.WhereCondition = SqlHelperClass.AddWhereCondition(gridElem.WhereCondition, "EventDate <= @Date"); } QueryDataParameters parameters = new QueryDataParameters(); parameters.Add("@Date", DateTime.Now); gridElem.QueryParameters = parameters; } } else { // Document type with code name 'CMS.BookingEvent' does not exist ShowError(GetString("Events_List.NoBookingEventClass")); } } #endregion #region "Grid events" /// /// Manage if user edit event. /// /// Edit /// Id of event protected void gridElem_OnAction(string actionName, object actionArgument) { switch (actionName.ToLowerCSafe()) { case "view": SelectedEventID = Convert.ToInt32(actionArgument); break; } } /// /// Handles data bound event. /// protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { string result = string.Empty; DataRowView data = null; switch (sourceName.ToLowerCSafe()) { // Create link to event document case "documentname": { data = (DataRowView)parameter; string siteName = ValidationHelper.GetString(data["SiteName"], String.Empty); string documentName = ValidationHelper.GetString(data["DocumentName"], String.Empty); string culture = ValidationHelper.GetString(data["DocumentCulture"], String.Empty); int nodeID = ValidationHelper.GetInteger(data["NodeID"], 0); SiteInfo si = SiteInfoProvider.GetSiteInfo(siteName); if (si != null) { // Get current app path string appPath = URLHelper.ApplicationPath.TrimEnd('/'); string domain = si.DomainName; // If domain contains app path don't add it if (domain.Contains("/")) { appPath = null; } string path = URLHelper.ResolveUrl("~/CMSDesk/default.aspx?section=content&action=edit&nodeid=" + nodeID + "&culture=" + culture); return "" + HTMLHelper.HTMLEncode(documentName) + ""; } } return HTMLHelper.HTMLEncode(parameter.ToString()); case "eventtooltip": data = (DataRowView)parameter; return UniGridFunctions.DocumentNameTooltip(data); case "eventdate": case "eventopenfrom": case "eventopento": case "eventdatetooltip": case "eventopenfromtooltip": case "eventopentotooltip": if (!String.IsNullOrEmpty(parameter.ToString())) { if (currentUserInfo == null) { currentUserInfo = CMSContext.CurrentUser; } if (currentSiteInfo == null) { currentSiteInfo = CMSContext.CurrentSite; } bool displayGMT = sourceName.EndsWithCSafe("tooltip"); DateTime time = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); return TimeZoneHelper.ConvertToUserTimeZone(time, displayGMT, currentUserInfo, currentSiteInfo); } return result; case "eventenddate": case "eventenddatetooltip": data = (DataRowView)parameter; try { parameter = data["eventenddate"]; } catch { parameter = null; } if ((parameter != null) && !String.IsNullOrEmpty(parameter.ToString())) { if (currentUserInfo == null) { currentUserInfo = CMSContext.CurrentUser; } if (currentSiteInfo == null) { currentSiteInfo = CMSContext.CurrentSite; } bool displayGMT = sourceName.EndsWithCSafe("tooltip"); DateTime time = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); return TimeZoneHelper.ConvertToUserTimeZone(time, displayGMT, currentUserInfo, currentSiteInfo); } return result; } return parameter; } #endregion }