Beispiel #1
0
        /// <summary>
        /// Generates SiteEdit tag for given page.
        /// </summary>
        /// <param name="page">Page the tag belongs to.</param>
        /// <returns>string representing the JSON SiteEdit tag.</returns>
        public static string GenerateSiteEditPageTag(IPage page)
        {
            if (!SiteEditSettings.Enabled)
            {
                return(string.Empty);
            }

            if (SiteEditSettings.Style == SiteEditStyle.SiteEdit2012)
            {
                string result = string.Format(Ui2012PageSeFormat, page.Id, string.Format("{0:s}", page.RevisionDate), page.PageTemplate.Id, string.Format("{0:s}", page.PageTemplate.RevisionDate));
                result += string.Format(Ui2012BootStrap, SiteEditSettings.TridionHostUrl);
                return(result);
            }

            string pubIdWithoutTcm = Convert.ToString(new TcmUri(page.Id).PublicationId);

            if (SiteEditSettings.ContainsKey(pubIdWithoutTcm))
            {
                SiteEditSetting setting        = SiteEditSettings[pubIdWithoutTcm];
                string          usePageContext = string.IsNullOrEmpty(setting.PagePublication) ? page.OwningPublication.Id : setting.PagePublication;
                TcmUri          pageContextUri = new TcmUri(usePageContext);
                if (setting.Enabled)
                {
                    return(string.Format(PageSeFormat, page.Id, Convert.ToString(page.Version), pageContextUri.ItemId, setting.ComponentPublication, setting.PublishPublication));
                }
            }
            return(string.Empty);
        }
Beispiel #2
0
        /// <summary>
        /// Generates a SiteEdit tag for a componentpresentation. It also needs to know which region it's in (for component
        /// swapping) and the order of the page (for a true unique ID).
        /// </summary>
        /// <param name="cp">The componentpresentation to mark.</param>
        /// <param name="queryBased">indicates whether the component presentation is the result of a query (true), or if it is really part of the page (false)</param>
        /// <param name="region">The region the componentpresentation is to be shown in.</param>
        /// <returns>string representing the JSON SiteEdit tag.</returns>
        public static string GenerateSiteEditComponentTag(IComponentPresentation cp, bool queryBased, string region)
        {
            if (!SiteEditSettings.Enabled)
            {
                return(string.Empty);
            }

            if (SiteEditSettings.Style == SiteEditStyle.SiteEdit2012)
            {
                // is query based tells us if the dcp was the result of a broker query and the component presentation is not embedded on the page
                string isQueryBased = queryBased ? ", \"IsQueryBased\" : true" : string.Empty;
                return(string.Format(Ui2012ComponentSeFormat, cp.Component.Id, string.Format("{0:s}", cp.Component.RevisionDate), cp.ComponentTemplate.Id, string.Format("{0:s}", cp.ComponentTemplate.RevisionDate), cp.IsDynamic.ToString().ToLower(), isQueryBased));
            }

            string pubIdWithoutTcm = Convert.ToString(new TcmUri(cp.Component.Id).PublicationId);

            if (SiteEditSettings.ContainsKey(pubIdWithoutTcm))
            {
                SiteEditSetting setting = SiteEditSettings[pubIdWithoutTcm];
                if (setting.Enabled)
                {
                    int cpId;
                    if (queryBased)
                    {
                        // for query based CPs, we are responsible for making the ID unique
                        cpId = GetUniqueCpId();
                    }
                    else
                    {
                        cpId = cp.OrderOnPage;
                    }
                    return(string.Format(ComponentSeFormat, cpId,
                                         cp.Component.Id,
                                         cp.ComponentTemplate.Id,
                                         cp.Component.Version,
                                         Convert.ToString(queryBased).ToLower(),
                                         region));
                }
            }
            return(string.Empty);
        }