private static Guid GetTemplateWidgetId(PageManager pageManager, Controller controller, string controlId)
        {
            // check if action is after save or cancel in template
            if (controller.HttpContext.Items[FormControlId] != null)
            {
                return((Guid)controller.HttpContext.Items[FormControlId]);
            }

            var templateId = GetTemplateIdKey(controller.ControllerContext.HttpContext);
            var versionId  = GetVersionNumberKey(controller.ControllerContext.HttpContext);

            if (templateId != null && versionId != null)
            {
                var template = pageManager.GetTemplate(new Guid(templateId));
                if (template != null)
                {
                    var           versionManager = Telerik.Sitefinity.Versioning.VersionManager.GetManager();
                    TemplateDraft draft          = new TemplateDraft();
                    versionManager.GetSpecificVersionByChangeId(draft, new Guid(versionId));

                    var control = GetControl(draft.Controls, controlId);
                    if (control != null)
                    {
                        return(control.OriginalControlId);
                    }
                }
            }

            // check if loaded in template
            var templateData = controller.HttpContext.Items[TemplateDraftProxy] as TemplateDraftProxy;

            if (templateData != null)
            {
                var template = pageManager.GetTemplate(templateData.ParentItemId);
                if (template != null)
                {
                    if (SystemManager.IsDesignMode || SystemManager.IsPreviewMode)
                    {
                        var control = GetControl(template.Drafts.FirstOrDefault(p => p.IsTempDraft).Controls, controlId);
                        if (control != null)
                        {
                            return(control.Id);
                        }
                    }
                    else
                    {
                        var control = GetControl(template.Controls, controlId);
                        if (control != null)
                        {
                            return(control.Id);
                        }
                    }
                }
            }

            return(Guid.Empty);
        }
Beispiel #2
0
        /// <summary>
        /// Generates Id for template based on the controls count.
        /// </summary>
        /// <param name="template">The template.</param>
        /// <returns>The generated Id.</returns>
        public string GenerateUniqueControlIdForTemplate(TemplateDraft template)
        {
            int controlsCount = 0;

            if (template != null)
            {
                controlsCount = template.Controls.Count;
            }

            return(string.Format(CultureInfo.InvariantCulture, "T" + controlsCount.ToString(CultureInfo.InvariantCulture).PadLeft(3, '0')));
        }
Beispiel #3
0
        private Guid GetLastControlInPlaceHolderInTemplateId(TemplateDraft template, string placeHolder)
        {
            var id = Guid.Empty;
            TemplateDraftControl control;

            var controls = new List <TemplateDraftControl>(template.Controls.Where(c => c.PlaceHolder == placeHolder));

            while (controls.Count > 0)
            {
                control = controls.Where(c => c.SiblingId == id).SingleOrDefault();
                if (control != null)
                {
                    id = control.Id;

                    controls.Remove(control);
                }
            }

            return(id);
        }
Beispiel #4
0
        private static TemplateDraftControl GetLayoutControl(PageManager manager, string @class, TemplateDraft draftTemplate)
        {
            var layoutControls = draftTemplate.Controls;

            foreach (var control in layoutControls)
            {
                var ctrlData = manager.GetControl <TemplateDraftControl>(control.Id);
                var layProp  = ctrlData.PropertiesLang.Single(p => p.Name == "Layout");
                var layout   = layProp.Value;
                if (!layout.StartsWith("~/") && !layout.EndsWith(".ascx", StringComparison.OrdinalIgnoreCase))
                {
                    var found = TryFindControl(ctrlData, layout, @class);
                    if (found)
                    {
                        return(ctrlData);
                    }
                }
                else
                {
                    layout = GetDefaultLayoutControlsHtml(ctrlData, layout);
                    var found = TryFindControl(ctrlData, layout, @class);
                    if (found)
                    {
                        return(ctrlData);
                    }
                }
            }

            return(new TemplateDraftControl());
        }
        public static Guid GetWidgetId(Controller controller)
        {
            var pageManager      = PageManager.GetManager();
            var viewBagControlId = controller.ViewData[ControllerKey];

            if (viewBagControlId == null)
            {
                return(Guid.Empty);
            }

            string controlId = (string)viewBagControlId;

            // templates
            if (controller.HttpContext.Items[IsTemplate] != null && (bool)controller.HttpContext.Items[IsTemplate] == true)
            {
                // check if action is after save or cancel in template
                if (controller.HttpContext.Items[FormControlId] != null)
                {
                    return((Guid)controller.HttpContext.Items[FormControlId]);
                }

                var templateId = GetTemplateIdKey(controller.ControllerContext.HttpContext);
                var versionId  = GetVersionNumberKey(controller.ControllerContext.HttpContext);

                if (templateId != null && versionId != null)
                {
                    var template = pageManager.GetTemplate(new Guid(templateId));
                    if (template != null)
                    {
                        var           versionManager = Telerik.Sitefinity.Versioning.VersionManager.GetManager();
                        TemplateDraft draft          = new TemplateDraft();
                        versionManager.GetSpecificVersionByChangeId(draft, new Guid(versionId));

                        var control = GetControl(draft.Controls, controlId);
                        if (control != null)
                        {
                            return(control.OriginalControlId);
                        }
                    }
                }

                // check if loaded in template
                var templateData = controller.HttpContext.Items[TemplateDraftProxy] as Telerik.Sitefinity.Modules.Pages.TemplateDraftProxy;
                if (templateData != null)
                {
                    var template = pageManager.GetTemplate(templateData.ParentItemId);
                    if (template != null)
                    {
                        if (SystemManager.IsDesignMode || SystemManager.IsPreviewMode)
                        {
                            var control = GetControl(template.Drafts.FirstOrDefault(p => p.IsTempDraft).Controls, controlId);
                            if (control != null)
                            {
                                return(control.Id);
                            }
                        }
                        else
                        {
                            var control = GetControl(template.Controls, controlId);
                            if (control != null)
                            {
                                return(control.Id);
                            }
                        }
                    }
                }
            }
            else
            {
                // pages
                var pageId = SiteMapBase.GetCurrentNode().PageId;
                var page   = pageManager.GetPageData(pageId);

                if (page.Template != null)
                {
                    var templateControl = GetControl(page.Template.Controls, controlId);
                    if (templateControl != null)
                    {
                        return(templateControl.Id);
                    }
                }

                if (SystemManager.IsDesignMode || SystemManager.IsPreviewMode)
                {
                    var pageDraft = page.Drafts.FirstOrDefault(p => p.IsTempDraft);

                    // Draft, if page is created page template is null, only draft is avalaible
                    if (page.Template == null && pageDraft.TemplateId != Guid.Empty)
                    {
                        var template = pageManager.GetTemplate(pageDraft.TemplateId);
                        if (template != null)
                        {
                            var templateControl = GetControl(template.Controls, controlId);
                            if (templateControl != null)
                            {
                                return(templateControl.Id);
                            }
                        }
                    }

                    var control = GetControl(pageDraft.Controls, controlId);
                    if (control != null)
                    {
                        return(control.Id);
                    }
                }
                else
                {
                    var control = GetControl(page.Controls, controlId);
                    if (control != null)
                    {
                        return(control.Id);
                    }
                }
            }

            return(Guid.Empty);
        }
        private Guid GetLastControlInPlaceHolderInTemplateId(TemplateDraft template, string placeHolder)
        {
            var id = Guid.Empty;
            TemplateDraftControl control;

            var controls = new List<TemplateDraftControl>(template.Controls.Where(c => c.PlaceHolder == placeHolder));

            while (controls.Count > 0)
            {
                control = controls.Where(c => c.SiblingId == id).SingleOrDefault();
                if (control != null)
                {
                    id = control.Id;

                    controls.Remove(control);
                }
            }

            return id;
        }
        /// <summary>
        /// Generates Id for template based on the controls count.
        /// </summary>
        /// <param name="template">The template.</param>
        /// <returns>The generated Id.</returns>
        public string GenerateUniqueControlIdForTemplate(TemplateDraft template)
        {
            int controlsCount = 0;

            if (template != null)
            {
                controlsCount = template.Controls.Count;
            }

            return string.Format(CultureInfo.InvariantCulture, "T" + controlsCount.ToString(CultureInfo.InvariantCulture).PadLeft(3, '0'));
        }