Example #1
0
        public RenderingItem([CanBeNull] IRenderingContainer renderingContainer, [NotNull] DatabaseUri databaseUri, [NotNull] XElement element, bool isDuplicate) : this(renderingContainer, databaseUri, element)
        {
            Assert.ArgumentNotNull(databaseUri, nameof(databaseUri));
            Assert.ArgumentNotNull(element, nameof(element));

            hasParameters = isDuplicate;
            if (!isDuplicate)
            {
                return;
            }

            UniqueId = Guid.NewGuid().ToString("B").ToUpperInvariant();

            var idProperty = DynamicProperties.FirstOrDefault(p => string.Compare(p.Name, @"id", StringComparison.InvariantCultureIgnoreCase) == 0);

            if (idProperty != null)
            {
                var n = idProperty.Value as string;
                if (!string.IsNullOrEmpty(n))
                {
                    n = n.TrimEnd('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
                }
                else
                {
                    n = Name;
                }

                disableRenaming  = true;
                idProperty.Value = GetNewControlId(n.GetSafeCodeIdentifier());
                disableRenaming  = false;
            }
        }
Example #2
0
        public RenderingItem([CanBeNull] IRenderingContainer renderingContainer, [NotNull] IItem item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            RenderingContainer = renderingContainer;
            Name = item.Name;

            Cacheable           = false;
            Conditions          = string.Empty;
            DataSource          = string.Empty;
            ItemId              = item.ItemUri.ItemId.ToString();
            MultiVariateTests   = string.Empty;
            Parameters          = string.Empty;
            PlaceholderKey      = new PlaceHolderKey(string.Empty);
            UniqueId            = Guid.NewGuid().Format();
            VaryByData          = false;
            VaryByDevice        = false;
            VaryByLogin         = false;
            VaryByParameters    = false;
            VaryByQueryString   = false;
            VaryByUser          = false;
            PlaceHolders        = string.Empty;
            DataSourceLocation  = string.Empty;
            DataSourceTemplate  = string.Empty;
            FilePath            = string.Empty;
            ParameterTemplateId = string.Empty;
            Ruleset             = string.Empty;
            SpeakCoreVersion    = string.Empty;
            SpeakCoreVersionId  = string.Empty;

            ParameterDictionary = new ParameterDictionary(new Dictionary <string, string>());

            Icon    = item.Icon;
            ItemUri = item.ItemUri;
        }
        public override void GetRenderings(IRenderingContainer renderingContainer, Action <IEnumerable <RenderingItem> > completed)
        {
            Assert.ArgumentNotNull(renderingContainer, nameof(renderingContainer));
            Assert.ArgumentNotNull(completed, nameof(completed));

            var dialog = new SpeakFormRenderingChunkDialog
            {
                RenderingContainer = renderingContainer,
                DatabaseUri        = renderingContainer.DatabaseUri
            };

            if (!dialog.ShowModal())
            {
                completed(Enumerable.Empty <RenderingItem>());
                return;
            }

            var renderingItems = dialog.Renderings;

            if (renderingItems == null)
            {
                completed(Enumerable.Empty <RenderingItem>());
                return;
            }

            completed(renderingItems);
        }
Example #4
0
        public override void GetRenderings(IRenderingContainer renderingContainer, Action <IEnumerable <RenderingItem> > completed)
        {
            Assert.ArgumentNotNull(renderingContainer, nameof(renderingContainer));
            Assert.ArgumentNotNull(completed, nameof(completed));

            var text = AppHost.Files.ReadAllText(FileName);

            ExecuteCompleted getLayoutCompleted = delegate(string response, ExecuteResult executeResult)
            {
                var root = response.ToXElement();
                if (root == null)
                {
                    completed(Enumerable.Empty <RenderingItem>());
                    return;
                }

                var result = Enumerable.Empty <RenderingItem>();

                var layoutElement = root.Element("layout");
                if (layoutElement != null)
                {
                    var deviceElement = layoutElement.Elements().FirstOrDefault(d => d.HasElements);
                    if (deviceElement != null)
                    {
                        result = deviceElement.Elements().Select(element => new RenderingItem(renderingContainer, renderingContainer.DatabaseUri, element)).ToList();
                    }
                }

                completed(result);
            };

            ExecuteCompleted getDevicesCompleted = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var root = response.ToXElement();
                if (root == null)
                {
                    return;
                }

                var deviceElement = root.Elements().FirstOrDefault();
                if (deviceElement == null)
                {
                    return;
                }

                var deviceId = deviceElement.GetAttributeValue("id");

                text = text.Replace("<d>", "<d id=\"" + deviceId + "\">");

                AppHost.Server.GetLayout(text, renderingContainer.DatabaseUri, getLayoutCompleted);
            };

            AppHost.Server.Layouts.GetDevices(renderingContainer.DatabaseUri, getDevicesCompleted);
        }
Example #5
0
        public RenderingItem([CanBeNull] IRenderingContainer renderingContainer, [NotNull] DatabaseUri databaseUri, [NotNull] XElement element)
        {
            Assert.ArgumentNotNull(databaseUri, nameof(databaseUri));
            Assert.ArgumentNotNull(element, nameof(element));

            RenderingContainer = renderingContainer;
            Name              = element.GetAttributeValue("name");
            Cacheable         = element.GetAttributeValue("cac") == @"1";
            Conditions        = element.GetAttributeValue("cnd");
            DataSource        = element.GetAttributeValue("ds");
            ItemId            = element.GetAttributeValue("id");
            MultiVariateTests = element.GetAttributeValue("mvt");
            Parameters        = element.GetAttributeValue("par");
            PlaceholderKey    = new PlaceHolderKey(element.GetAttributeValue("ph"));
            UniqueId          = element.GetAttributeValue("uid");
            VaryByData        = element.GetAttributeValue("vbd") == @"1";
            VaryByDevice      = element.GetAttributeValue("vbdev") == @"1";
            VaryByLogin       = element.GetAttributeValue("vbl") == @"1";
            VaryByParameters  = element.GetAttributeValue("vbp") == @"1";
            VaryByQueryString = element.GetAttributeValue("vbqs") == @"1";
            VaryByUser        = element.GetAttributeValue("vbu") == @"1";
            Ruleset           = element.GetAttributeValue("rls");

            ParameterDictionary = new ParameterDictionary(new Dictionary <string, string>());
            PlaceHolders        = element.GetAttributeValue("placeholders");
            DataSourceLocation  = element.GetAttributeValue("dsl");
            DataSourceTemplate  = element.GetAttributeValue("dst");
            FilePath            = element.GetAttributeValue("path");
            ParameterTemplateId = element.GetAttributeValue("templateid");
            ItemUri             = ItemUri.Empty;
            Icon               = new Icon(databaseUri.Site, element.GetAttributeValue("ic"));
            SpeakCoreVersion   = element.GetAttributeValue("speakcoreversion");
            SpeakCoreVersionId = element.GetAttributeValue("speakcoreversionid");

            if (!string.IsNullOrEmpty(ItemId))
            {
                ItemUri = new ItemUri(databaseUri, new ItemId(new Guid(ItemId)));
            }

            var parameterValues = new UrlString(Parameters);

            foreach (string key in parameterValues.Parameters.Keys)
            {
                ParameterDictionary.Parameters[key] = parameterValues.Parameters[key];
            }

            var templateElement = element.Element("template");

            if (templateElement != null)
            {
                ParseTemplate(templateElement);
            }
        }
        public void Initialize([NotNull] string title, [NotNull] string selectedValue, [NotNull] IRenderingContainer container)
        {
            Assert.ArgumentNotNull(title, nameof(title));
            Assert.ArgumentNotNull(selectedValue, nameof(selectedValue));
            Assert.ArgumentNotNull(container, nameof(container));

            Title         = title;
            SelectedValue = selectedValue;
            Container     = container;

            DatabaseUri = Container.DatabaseUri;
        }
        public List <RenderingItem> GetItems([NotNull] IRenderingContainer container, [NotNull] DatabaseUri databaseUri, [NotNull] string text)
        {
            Assert.ArgumentNotNull(container, nameof(container));
            Assert.ArgumentNotNull(databaseUri, nameof(databaseUri));
            Assert.ArgumentNotNull(text, nameof(text));

            if (text.StartsWith(@"Sitecore.Clipboard.Renderings:"))
            {
                text = text.Mid(30);
            }

            var root = text.ToXElement();

            if (root == null)
            {
                return(null);
            }

            return(root.Elements().Select(element => new RenderingItem(container, databaseUri, element)).ToList());
        }
Example #8
0
 public void Register(string key, IRenderingContainer container)
 {
     throw CreateException(nameof(IWidgetContainerManagement));
 }
 public void Register(string key, IRenderingContainer container)
 {
     map[key] = container;
 }
        public static void GetRenderingContainerDataBindingValues([NotNull] this IRenderingContainer container, [NotNull] RenderingItem renderingItem, [NotNull] DynamicProperty dynamicProperty, [NotNull] List <string> values)
        {
            Assert.ArgumentNotNull(container, nameof(container));
            Assert.ArgumentNotNull(renderingItem, nameof(renderingItem));
            Assert.ArgumentNotNull(dynamicProperty, nameof(dynamicProperty));
            Assert.ArgumentNotNull(values, nameof(values));

            var primary   = new List <string>();
            var secondary = new List <string>();

            foreach (var rendering in container.Renderings)
            {
                if (rendering == renderingItem)
                {
                    continue;
                }

                var idProperty = rendering.DynamicProperties.FirstOrDefault(p => string.Compare(p.Name, @"id", StringComparison.InvariantCultureIgnoreCase) == 0);
                if (idProperty == null)
                {
                    continue;
                }

                var name = idProperty.Value as string;
                if (string.IsNullOrEmpty(name))
                {
                    continue;
                }

                foreach (var property in rendering.DynamicProperties)
                {
                    if (property == idProperty)
                    {
                        continue;
                    }

                    if (!property.CanRead())
                    {
                        continue;
                    }

                    if (string.Compare(dynamicProperty.TypeName, "Checkbox", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(property.TypeName, "Checkbox", StringComparison.InvariantCultureIgnoreCase) != 0)
                    {
                        continue;
                    }

                    var subtype0 = dynamicProperty.Attributes["subtype"] as string ?? string.Empty;
                    var subtype1 = property.Attributes["subtype"] as string ?? string.Empty;
                    if (!string.IsNullOrEmpty(subtype0) && string.Compare(subtype0, subtype1, StringComparison.InvariantCultureIgnoreCase) != 0)
                    {
                        continue;
                    }

                    var text = string.Format("{{Binding {0}.{1}}}", name, property.Name);

                    if (string.Compare(property.Name, dynamicProperty.Name, StringComparison.InvariantCultureIgnoreCase) == 0)
                    {
                        primary.Add(text);
                    }
                    else
                    {
                        secondary.Add(text);
                    }
                }
            }

            primary.Sort();
            secondary.Sort();

            values.AddRange(primary);
            values.AddRange(secondary);
        }
 public abstract void GetRenderings(IRenderingContainer renderingContainer, Action <IEnumerable <RenderingItem> > completed);