コード例 #1
0
ファイル: ViewHelper.cs プロジェクト: texyh/IssueTracker
 public static IEnumerable <SelectListItem> GetStatusSelect(IssueStatusEnum id)
 {
     return(Enum.GetValues(typeof(IssueStatusEnum))
            .Cast <IssueStatusEnum>()
            .Select(x => new SelectListItem
     {
         Text = x.ToString(),
         Value = ((int)x).ToString(),
         Selected = x == id
     }));
 }
コード例 #2
0
    /// <summary>
    /// Handles the UniGrid's OnExternalDataBound event.
    /// </summary>
    /// <param name="sender">The sender</param>
    /// <param name="sourceName">Name of the source</param>
    /// <param name="parameter">The data row</param>
    /// <returns>Formatted value to be used in the UniGrid</returns>
    protected object UniGrid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "issuesubject":
            return(HTMLHelper.HTMLEncode(MacroSecurityProcessor.RemoveSecurityParameters(parameter.ToString(), true, null)));

        case "issueopenedemails":
            return(GetOpenedEmails(parameter as DataRowView));

        case "issuestatus":
            IssueStatusEnum status = IssueStatusEnum.Idle;
            if ((parameter != DBNull.Value) && (parameter != null))
            {
                status = (IssueStatusEnum)parameter;
            }
            return(GetString(String.Format("newsletterissuestatus." + Convert.ToString(status))));

        case "viewclickedlinks":
            if (sender is CMSGridActionButton)
            {
                // Hide 'view clicked links' action if tracking is not available or if the issue has no tracked links
                CMSGridActionButton imageButton = sender as CMSGridActionButton;
                if (!mTrackingEnabled)
                {
                    imageButton.Visible = false;
                }
                else
                {
                    GridViewRow gvr = parameter as GridViewRow;
                    if (gvr != null)
                    {
                        DataRowView drv = gvr.DataItem as DataRowView;
                        if (drv != null)
                        {
                            int issueId = ValidationHelper.GetInteger(drv["IssueID"], 0);
                            // Try to get one tracked link (only ID) of the issue
                            var links = LinkInfoProvider.GetLinks().WhereEquals("LinkIssueID", issueId).TopN(1).Column("LinkID");
                            if (!links.Any())
                            {
                                imageButton.Visible = false;
                            }
                        }
                    }
                }
            }
            return(sender);

        default:
            return(parameter);
        }
    }
コード例 #3
0
    /// <summary>
    /// Gets info message depending on issue status.
    /// </summary>
    /// <param name="issueStatus">Issue status</param>
    /// <returns>Info message</returns>
    private string GetInfoMessage(IssueStatusEnum issueStatus)
    {
        switch (issueStatus)
        {
        case IssueStatusEnum.Finished:
            return(GetString("Newsletter_Issue_Header.AlreadySent"));

        case IssueStatusEnum.ReadyForSending:
            return(GetString("Newsletter_Issue_Header.AlreadyScheduled"));

        default:
            return(GetString("Newsletter_Issue_Header.NotSentYet"));
        }
    }
    /// <summary>
    /// Gets info message depending on issue status.
    /// </summary>
    /// <param name="issueStatus">Issue status</param>
    /// <returns>Info message</returns>
    private string GetInfoMessage(IssueStatusEnum issueStatus)
    {
        switch (issueStatus)
        {
        case IssueStatusEnum.Finished:
            return(GetString("Newsletter_Issue_Header.AlreadySent"));

        case IssueStatusEnum.ReadyForSending:
        {
            var message = GetString("Newsletter_Issue_Header.AlreadyScheduled");
            return(AppendReachingLimitMessage(message));
        }

        case IssueStatusEnum.Idle:
        {
            var message = GetString("Newsletter_Issue_Header.NotSentYet");
            return(AppendReachingLimitMessage(message));
        }
        }

        return(GetString("Newsletter_Issue_Header.NotSentYet"));
    }
コード例 #5
0
    protected object grdElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName)
        {
        case "IssueVariantName":
        {
            DataRowView drv    = (DataRowView)parameter;
            string      result = ValidationHelper.GetString(drv["IssueVariantName"], string.Empty);

            // Issue has not been sent yet => get mail out time from scheduled task
            if (ValidationHelper.GetInteger(drv["IssueID"], 0) == WinnerIssueID)
            {
                result += " " + GetString("newsletterabtest.winner");
            }

            return(result);
        }

        case "MailoutTime":
        {
            string      result = null;
            DataRowView drv    = (DataRowView)parameter;
            DateTime    dt     = ValidationHelper.GetDateTime(drv["IssueMailoutTime"], DateTimeHelper.ZERO_TIME);

            if (dt == DateTimeHelper.ZERO_TIME)
            {
                // Issue has not been sent yet => get mail out time from scheduled task
                int      taskId = ValidationHelper.GetInteger(drv["IssueScheduledTaskID"], 0);
                TaskInfo task   = TaskInfoProvider.GetTaskInfo(taskId);
                if (task != null)
                {
                    if (task.TaskNextRunTime < DateTime.Now)
                    {
                        result = String.Format("{0} {1}", task.TaskNextRunTime.ToString(), GetString("newsletterissue_send.asap"));
                    }
                    else
                    {
                        result = task.TaskNextRunTime.ToString();
                    }
                    dt = task.TaskNextRunTime;
                }
                else
                {
                    result = GetString("general.na");
                }
            }
            else
            {
                result = dt.ToString();
            }

            if (mHighestMailoutTime < dt)
            {
                mHighestMailoutTime = dt;
            }

            return(result);
        }

        case "IssueStatus":
            IssueStatusEnum status = IssueStatusEnum.Idle;
            if ((parameter != DBNull.Value) && (parameter != null))
            {
                status = (IssueStatusEnum)parameter;
            }
            return(IssueHelper.GetStatusFriendlyName(status, null));

        case "IssueOpenedEmails":
            return(GetOpenedEmails(parameter as DataRowView));

        case "UniqueClicks":
            int issueId = ValidationHelper.GetInteger(parameter, 0);
            return(GetUniqueClicks(IssueHelper.GetIssueTotalUniqueClicks(issueId), issueId));
        }
        return(parameter);
    }
コード例 #6
0
    /// <summary>
    /// Handles the UniGrid's OnExternalDataBound event.
    /// </summary>
    /// <param name="sender">The sender</param>
    /// <param name="sourceName">Name of the source</param>
    /// <param name="parameter">The data row</param>
    /// <returns>Formatted value to be used in the UniGrid</returns>
    protected object UniGrid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        string tooltipText = null;
        var    webControl  = sender as WebControl;

        // Prepare a tooltip for the column
        switch (sourceName.ToLowerCSafe())
        {
        case "issueopenedemails":
            tooltipText = GetString(mBounceMonitoringEnabled ? "newsletter.openratetooltip.delivered" : "newsletter.openratetooltip.sent");
            break;

        case "issueclickedlinks":
            tooltipText = GetString(mBounceMonitoringEnabled ? "newsletter.clickratetooltip.delivered" : "newsletter.clickratetooltip.sent");
            break;

        case "deliveryrate":
            tooltipText = GetString("newsletter.deliveryratetooltip");
            break;

        case "unsubscriberate":
            tooltipText = GetString(mBounceMonitoringEnabled ? "newsletter.unsubscriptionratetooltip.delivered" : "newsletter.unsubscriptionratetooltip.sent");
            break;

        default:
            break;
        }

        // If the sender is from a column with a tooltip, append tooltip to the control
        if ((webControl != null) && !String.IsNullOrEmpty(tooltipText))
        {
            ScriptHelper.AppendTooltip(webControl, tooltipText, null);
        }

        switch (sourceName.ToLowerCSafe())
        {
        case "issuesubject":
            return(GetIssueSubject(parameter as DataRowView));

        case "issuestatus":
            IssueStatusEnum status   = EnumHelper.GetDefaultValue <IssueStatusEnum>();
            var             statusID = ValidationHelper.GetInteger(parameter, -1);

            if (Enum.IsDefined(typeof(IssueStatusEnum), statusID))
            {
                status = (IssueStatusEnum)statusID;
            }

            return(IssueHelper.GetStatusFriendlyName(status, null));

        case "issuesentemails":
            var num = ValidationHelper.GetInteger(parameter, 0);
            return((num > 0) ? num.ToString() : String.Empty);

        case "issueopenedemails":
            return(GetOpenedEmails(parameter as DataRowView));

        case "issueclickedlinks":
            return(GetClickRate(parameter as DataRowView));

        case "deliveryrate":
            return(GetDeliveryRate(parameter as DataRowView));

        case "unsubscriberate":
            return(GetUnsubscriptionRate(parameter as DataRowView));

        default:
            return(parameter);
        }
    }
コード例 #7
0
    /// <summary>
    /// Handles the UniGrid's OnExternalDataBound event.
    /// </summary>
    /// <param name="sender">The sender</param>
    /// <param name="sourceName">Name of the source</param>
    /// <param name="parameter">The data row</param>
    /// <returns>Formatted value to be used in the UniGrid</returns>
    private object UniGrid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        var webControl = sender as WebControl;

        // Prepare a tooltip for the column
        string tooltipText = GetTooltipText(sourceName);

        // If the sender is from a column with a tooltip, append tooltip to the control
        if ((webControl != null) && !String.IsNullOrEmpty(tooltipText))
        {
            ScriptHelper.AppendTooltip(webControl, tooltipText, null);
        }

        switch (sourceName.ToLowerInvariant())
        {
        case "issuedisplayname":
            return(GetIssueDisplayName(parameter as DataRowView));

        case "issuestatus":
            IssueStatusEnum status   = EnumHelper.GetDefaultValue <IssueStatusEnum>();
            var             statusID = ValidationHelper.GetInteger(parameter, -1);

            if (Enum.IsDefined(typeof(IssueStatusEnum), statusID))
            {
                status = (IssueStatusEnum)statusID;
            }

            return(IssueHelper.GetStatusFriendlyName(status, null));

        case "issuesentemails":
            var num = ValidationHelper.GetInteger(parameter, 0);
            return((num > 0) ? num.ToString() : String.Empty);

        case "issueopenedemailsrate":
            return(GetOpenedEmailsRate(parameter as DataRowView));

        case "issueopenedemails":
            return(GetOpenedEmailsCount(parameter as DataRowView));

        case "issueclickedlinksrate":
            return(GetClickRate(parameter as DataRowView));

        case "issueclickedlinks":
            return(GetClickCount(parameter as DataRowView));

        case "deliveryrate":
            return(GetDeliveryRate(parameter as DataRowView));

        case "delivered":
            return(GetDeliveryCount(parameter as DataRowView));

        case "unsubscriberate":
            return(GetUnsubscriptionRate(parameter as DataRowView));

        case "unsubscribtions":
            return(GetUnsubscriptionCount(parameter as DataRowView));

        default:
            return(parameter);
        }
    }
コード例 #8
0
    /// <summary>
    /// Handles the UniGrid's OnExternalDataBound event.
    /// </summary>
    /// <param name="sender">The sender</param>
    /// <param name="sourceName">Name of the source</param>
    /// <param name="parameter">The data row</param>
    /// <returns>Formatted value to be used in the UniGrid</returns>
    protected object UniGrid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "issuesubject":
            return(HTMLHelper.HTMLEncode(MacroResolver.RemoveSecurityParameters(parameter.ToString(), true, null)));

        case "issueopenedemails":
            return(GetOpenedEmails(parameter as DataRowView));

        case "issuestatus":
            IssueStatusEnum status = IssueStatusEnum.Idle;
            if ((parameter != DBNull.Value) && (parameter != null))
            {
                status = (IssueStatusEnum)parameter;
            }
            return(GetString(String.Format("newsletterissuestatus." + Convert.ToString(status))));

        case "edit":
            if (sender is ImageButton)
            {
                if (mNewsletter.NewsletterType.EqualsCSafe(NewsletterType.Dynamic) && !mNewsletter.NewsletterEnableResending)
                {
                    // Hide 'edit' action if newsletter is dynamic and resending is disabled
                    ImageButton imageButton = sender as ImageButton;
                    imageButton.Style.Add(HtmlTextWriterStyle.Display, "none");
                }
            }
            return(sender);

        case "viewclickedlinks":
            if (sender is ImageButton)
            {
                // Hide 'view clicked links' action if tracking is not available or if the issue has no tracked links
                ImageButton imageButton = sender as ImageButton;
                if (!mTrackingEnabled)
                {
                    imageButton.Style.Add(HtmlTextWriterStyle.Display, "none");
                }
                else
                {
                    GridViewRow gvr = parameter as GridViewRow;
                    if (gvr != null)
                    {
                        DataRowView drv = gvr.DataItem as DataRowView;
                        if (drv != null)
                        {
                            int issueId = ValidationHelper.GetInteger(drv["IssueID"], 0);
                            // Try to get one tracked link (only ID) of the issue
                            InfoDataSet <LinkInfo> links = LinkInfoProvider.GetLinks("LinkIssueID=" + issueId, null, 1, "LinkID");
                            if (DataHelper.DataSourceIsEmpty(links))
                            {
                                imageButton.Style.Add(HtmlTextWriterStyle.Display, "none");
                            }
                        }
                    }
                }
            }
            return(sender);

        default:
            return(parameter);
        }
    }