예제 #1
0
    private static string GetFileLinkHtml(string relativeUrl, SiteInfoIdentifier site)
    {
        var absoluteUrl = DocumentURLProvider.GetAbsoluteUrl(relativeUrl, site);
        var path        = new Uri(absoluteUrl).PathAndQuery;

        return(String.Format("<span class=\"form-control-text\"><a href=\"{0}\" target=\"_blank\">{1}</a></span>", absoluteUrl, path));
    }
예제 #2
0
        public async Task <ActionResult> Index(CancellationToken cancellationToken)
        {
            var pages = _pageRetriever.Retrieve <TreeNode>(query => query
                                                           .Path("/", PathTypeEnum.Children));

            var aboutUsPage = pages.FirstOrDefault(e => DocumentURLProvider.GetAbsoluteUrl(e).ToLower().Contains("/myblog/about"));

            _pageDataContextInitializer.Initialize(aboutUsPage);
            //var aboutUs = _dataRetriever.Retrieve<AboutUs>().Page;

            //var sideStories = await aboutUsRepository.GetSideStoriesAsync(aboutUs.NodeAliasPath, cancellationToken);

            //var reference = (await referenceRepository.GetReferencesAsync($"{aboutUs.NodeAliasPath}/References", cancellationToken, 1)).FirstOrDefault();
            var sideStories = new List <AboutUsSection> ();

            var documentQueryHome = AboutUsProvider.GetAboutUs(NodeGuid, "en-US", "BlogPost");
            var data = documentQueryHome.FirstOrDefault();

            AboutUsViewModel mode = new AboutUsViewModel()
            {
                ID    = data.AboutUsID,
                Title = data.AboutUsText,
                Desc  = data.AboutUsDesc
            };

            return(View(mode));
        }
예제 #3
0
    /// <summary>
    /// Loads summary box in the right upper corner.
    /// </summary>
    private void LoadSummaryBox()
    {
        var selectionParameters = new NodeSelectionParameters
        {
            AliasPath                 = ABTest.ABTestOriginalPage,
            CultureCode               = ABTest.ABTestCulture,
            SiteName                  = SiteContext.CurrentSiteName,
            SelectOnlyPublished       = true,
            CombineWithDefaultCulture = false
        };

        var node            = new TreeProvider().SelectSingleNode(selectionParameters);
        var shortUrl        = ShortenUrl(ABTest.ABTestOriginalPage);
        var encodedShortUrl = HTMLHelper.HTMLEncode(shortUrl);

        if (node == null)
        {
            lblTest.Text    = encodedShortUrl;
            lblTest.Visible = true;
        }
        else
        {
            lnkTest.HRef      = DocumentURLProvider.GetAbsoluteUrl(node);
            lnkTest.InnerText = encodedShortUrl;
            lnkTest.Target    = "_blank";
            lnkTest.Visible   = true;
        }

        // If Visitors conversion methodology selected, use "Visitors" instead of "Visits"
        if (drpCountingMethodology.SelectedValue == ABTestConstants.ABSESSIONCONVERSION_FIRST)
        {
            lblVisits.ResourceString = "abtesting.overview.summary.visitors";
        }

        lblStatus.Text = ABTestStatusEvaluator.GetFormattedStatus(TestStatus).ToString();
        int visits      = VariantsStatisticsData.Sum(d => d.Value.Visits);
        int conversions = VariantsStatisticsData.Sum(d => d.Value.ConversionsCount);

        lblTotalVisitors.Text    = String.Format("{0:N0}", visits);
        lblTotalConversions.Text = String.Format("{0:N0}", conversions);

        if (TestStatus == ABTestStatusEnum.Finished)
        {
            txtDuration.ResourceString = "abtesting.daysrun";
        }

        DateTime start  = ABTest.ABTestOpenFrom;
        DateTime finish = GetFinishDate();

        lblDuration.Text = (finish - start).Days.ToString();
    }
예제 #4
0
        private void GeneratePageVisitActivity(TreeNode document, ContactInfo contact)
        {
            var nameBuilder = new ActivityTitleBuilder();
            var url         = DocumentURLProvider.GetAbsoluteUrl(document);

            var activity = new ActivityInfo
            {
                ActivityContactID = contact.ContactID,
                ActivitySiteID    = mSite.SiteID,
                ActivityTitle     = nameBuilder.CreateTitle(PredefinedActivityType.PAGE_VISIT, document.GetDocumentName()),
                ActivityType      = PredefinedActivityType.PAGE_VISIT,
                ActivityURL       = url,
                ActivityURLHash   = mHashService.GetActivityUrlHash(url)
            };

            ActivityInfo.Provider.Set(activity);
        }
예제 #5
0
    private void SetPreviewLinks()
    {
        string liveUrl = DocumentURLProvider.GetAbsoluteUrl(Node);

        if (string.IsNullOrEmpty(liveUrl) && PageRoutingHelper.GetRoutingMode(Node.NodeSiteID) == PageRoutingModeEnum.Custom)
        {
            litMissingPattern.Visible = true;
        }

        if (!string.IsNullOrEmpty(liveUrl))
        {
            plcLive.Visible      = true;
            lnkLiveURL.HRef      = liveUrl;
            lnkLiveURL.InnerText = liveUrl;
        }

        var previewUrl = Node.GetPreviewLink(CurrentUser.UserGUID);

        if (!string.IsNullOrEmpty(previewUrl))
        {
            plcPreview.Visible                = true;
            btnResetPreviewGuid.ToolTip       = GetString("content.ui.properties.invalidatepreviewurl");
            btnResetPreviewGuid.Click        += btnResetPreviewGuid_Click;
            btnResetPreviewGuid.OnClientClick = "if(!confirm(" + ScriptHelper.GetLocalizedString("content.ui.properties.generatepreviewurlconf") + ")){return false;}";

            SetPreviewUrl(previewUrl);
        }

        if (MembershipContext.AuthenticatedUser.IsAuthorizedPerDocument(Node, NodePermissionsEnum.Modify) != AuthorizationResultEnum.Allowed)
        {
            btnResetPreviewGuid.Enabled  = false;
            btnResetPreviewGuid.CssClass = "Disabled";
        }

        UpdateLiveSiteButtonUrl(liveUrl);
    }
예제 #6
0
        private void CreateFormSubmission(TreeNode document, string formName, ContactInfo contact)
        {
            var form      = BizFormInfo.Provider.Get(formName, mSite.SiteID);
            var classInfo = DataClassInfoProvider.GetDataClassInfo(form.FormClassID);
            var formItem  = new BizFormItem(classInfo.ClassName);
            var url       = DocumentURLProvider.GetAbsoluteUrl(document);

            CopyDataFromContactToForm(contact, classInfo, formItem);
            SetFormSpecificData(formName, contact, formItem);
            formItem.Insert();

            var activity = new ActivityInfo
            {
                ActivityContactID    = contact.ContactID,
                ActivityItemID       = form.FormID,
                ActivityItemDetailID = formItem.ItemID,
                ActivitySiteID       = mSite.SiteID,
                ActivityTitle        = nameBuilder.CreateTitle(PredefinedActivityType.BIZFORM_SUBMIT, form.FormDisplayName),
                ActivityType         = PredefinedActivityType.BIZFORM_SUBMIT,
                ActivityURL          = url
            };

            ActivityInfo.Provider.Set(activity);
        }
예제 #7
0
    /// <summary>
    /// Handles Unigrid's OnExternalDataBound event.
    /// </summary>
    protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerInvariant())
        {
        case "status":
        {
            if (Enum.TryParse(parameter.ToString(), out ABTestStatusEnum status))
            {
                return(ABTestStatusEvaluator.GetFormattedStatus(status));
            }
            break;
        }

        case "page":
        {
            var dataRowView = parameter as DataRowView;
            if (dataRowView == null)
            {
                return(String.Empty);
            }

            var abTestInfo = new ABTestInfo(dataRowView.Row);

            var selectionParameters = new NodeSelectionParameters
            {
                AliasPath                 = abTestInfo.ABTestOriginalPage,
                CultureCode               = abTestInfo.ABTestCulture,
                SiteName                  = SiteContext.CurrentSiteName,
                SelectOnlyPublished       = true,
                CombineWithDefaultCulture = false
            };

            var node            = new TreeProvider().SelectSingleNode(selectionParameters);
            var encodedTestPage = HTMLHelper.HTMLEncode(abTestInfo.ABTestOriginalPage);

            return(node == null
                    ? (object)encodedTestPage
                    : new HyperLink
                {
                    NavigateUrl = DocumentURLProvider.GetAbsoluteUrl(node),
                    Text = encodedTestPage,
                    Target = "_blank"
                });
        }

        case "visitors":
        case "conversions":
        {
            string statisticsCodeName = (sourceName.ToLowerInvariant() == "visitors" ? "abvisitfirst" : "absessionconversionfirst");

            var dataRowView = parameter as DataRowView;
            if (dataRowView == null)
            {
                return(0);
            }

            var abTestInfo = new ABTestInfo(dataRowView.Row);

            return(ValidationHelper.GetInteger(HitsInfoProvider.GetAllHitsInfo(SiteContext.CurrentSiteID, HitsIntervalEnum.Year, statisticsCodeName + ";" + abTestInfo.ABTestName + ";%", "SUM(HitsCount)", abTestInfo.ABTestCulture).Tables[0].Rows[0][0], 0));
        }

        case "delete":
            CMSGridActionButton btn = (CMSGridActionButton)sender;
            btn.Enabled = IsAuthorizedToManage;
            if (!IsAuthorizedToManage)
            {
                btn.ToolTip = permissionsRequiredTooltip;
            }
            break;
        }

        return(null);
    }
        private IEnumerable <CampaignConversionData> PrepareCafeSamplePromotionConversions()
        {
            var pageCoffeeSamples    = CampaignDataGeneratorHelpers.GetDocument(PAGE_PATH_COFFEE_SAMPLES);
            var formCoffeeSampleList = BizFormInfo.Provider.Get(COFFEE_SAMPLE_LIST_FORM_CODE_NAME, mSite.SiteID);

            var liveUrl = DocumentURLProvider.GetAbsoluteUrl(pageCoffeeSamples);

            return(new List <CampaignConversionData>
            {
                /*  Campaign conversions. */
                new CampaignConversionData
                {
                    ConversionName = "coffee_samples",
                    ConversionDisplayName = pageCoffeeSamples.DocumentName,
                    ConversionActivityType = PredefinedActivityType.PAGE_VISIT,
                    ConversionItemID = null,
                    ConversionOrder = 1,
                    ConversionIsFunnelStep = false,
                    ConversionUrl = liveUrl
                },
                new CampaignConversionData
                {
                    ConversionName = "coffee_sample_list",
                    ConversionDisplayName = CONVERSION_FORMSUBMISSION_COFFEE_SAMPLE_LIST,
                    ConversionActivityType = PredefinedActivityType.BIZFORM_SUBMIT,
                    ConversionItemID = formCoffeeSampleList.FormID,
                    ConversionOrder = 2,
                    ConversionIsFunnelStep = false
                },

                /* Campaign journey steps. */
                new CampaignConversionData
                {
                    ConversionName = "coffee_samples_1",
                    ConversionDisplayName = pageCoffeeSamples.DocumentName,
                    ConversionActivityType = PredefinedActivityType.PAGE_VISIT,
                    ConversionItemID = null,
                    ConversionOrder = 1,
                    ConversionIsFunnelStep = true,
                    ConversionUrl = liveUrl
                },
                new CampaignConversionData
                {
                    ConversionName = "coffee_sample_list_1",
                    ConversionDisplayName = CONVERSION_FORMSUBMISSION_COFFEE_SAMPLE_LIST,
                    ConversionActivityType = PredefinedActivityType.BIZFORM_SUBMIT,
                    ConversionItemID = formCoffeeSampleList.FormID,
                    ConversionOrder = 2,
                    ConversionIsFunnelStep = true
                },
                new CampaignConversionData
                {
                    ConversionName = "purchase",
                    ConversionDisplayName = CONVERSION_PURCHASE,
                    ConversionActivityType = PredefinedActivityType.PURCHASE,
                    ConversionItemID = 0,
                    ConversionOrder = 3,
                    ConversionIsFunnelStep = true
                }
            });
        }
        private void GenerateActivities(string campaignName, Dictionary <string, IEnumerable <ActivityDataParameters> > conversionHits, int contactsCount)
        {
            var campaignCafePromotion = CampaignInfo.Provider.Get(campaignName, mSite.SiteID);

            var pageVisitColombia = CampaignDataGeneratorHelpers.GetDocument(PAGE_PATH_COFFEE_SAMPLES);
            var formFreeSample    = BizFormInfo.Provider.Get(COFFEE_SAMPLE_LIST_FORM_CODE_NAME, mSite.SiteID);

            /* Generate activities for campaign */
            CampaignDataGeneratorHelpers.DeleteOldActivities(campaignCafePromotion.CampaignUTMCode);
            var campaignContactsIDs = new ContactsIDData(mContactFirstNamePrefix, contactsCount);

            CampaignDataGeneratorHelpers.GenerateActivities(conversionHits[CONVERSION_PAGEVISIT_COFFEE_SAMPLES], campaignCafePromotion, PredefinedActivityType.PAGE_VISIT, campaignContactsIDs, activityUrl: DocumentURLProvider.GetAbsoluteUrl(pageVisitColombia));
            CampaignDataGeneratorHelpers.GenerateActivities(conversionHits[CONVERSION_FORMSUBMISSION_COFFEE_SAMPLE_LIST], campaignCafePromotion, PredefinedActivityType.BIZFORM_SUBMIT, campaignContactsIDs, formFreeSample.FormID);
            CampaignDataGeneratorHelpers.GenerateActivities(conversionHits[CONVERSION_PURCHASE], campaignCafePromotion, PredefinedActivityType.PURCHASE, campaignContactsIDs);
        }
    private void UpdateLiveSiteButtonUrl()
    {
        var url = DocumentURLProvider.GetAbsoluteUrl(Node);

        ScriptHelper.RegisterSetLiveSiteURL(this, url);
    }