private IEnumerable <TemplateField> GetRelevantTemplateFields(
            RenderingDefinition renderingDefinition)
        {
            Item   renderingItem = GetRenderingItem(renderingDefinition);
            string text          = renderingItem["Parameters Template"];

            if (string.IsNullOrEmpty(text))
            {
                text = CustomRenderingParameters.StandardRenderingParametersTemplateId.ToString();
            }

            TemplateItem templateItem = renderingItem.Database.GetItem(
                new ID(text), renderingItem.Language);

            Template template = TemplateManager.GetTemplate(
                templateItem.ID, templateItem.Database);

            if (templateItem == null)
            {
                return(new List <TemplateField>());
            }

            IEnumerable <TemplateField> relevantFields =
                template.GetFields(true).Where(CustomRenderingParameters.IsDataField);

            return(relevantFields);
        }
        /// <summary>
        /// Gets the value.
        /// </summary>
        /// <param name="fieldName">
        /// The name.
        /// </param>
        /// <param name="renderingDefinition">
        /// The rendering definition.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// The value.
        /// </returns>
        private static string GetValue(
            string fieldName,
            RenderingDefinition renderingDefinition,
            Dictionary <string, string> parameters)
        {
            Assert.ArgumentNotNull(fieldName, "fieldName");
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Assert.ArgumentNotNull(parameters, "parameters");

            switch (fieldName.ToLowerInvariant())
            {
            case "placeholder":
                return(renderingDefinition.Placeholder ?? string.Empty);

            case "data source":
                return(renderingDefinition.Datasource ?? string.Empty);

            case "caching":
                return(GetCaching(renderingDefinition));

            case "personalization":
                return(renderingDefinition.Conditions ?? string.Empty);

            case "tests":
                return(renderingDefinition.MultiVariateTest ?? string.Empty);

            default:
                parameters.TryGetValue(fieldName, out string value);
                return(value);
            }
        }
Exemplo n.º 3
0
        public void AddRendering(Item item, string renderingID, string placeholder, Item datasource)
        {
            LayoutField      layoutField      = new LayoutField(item.Fields[FieldIDs.FinalLayoutField]);
            LayoutDefinition layoutDefinition = LayoutDefinition.Parse(layoutField.Value);
            DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(GetDefaultDeviceItem(item.Database).ID.ToString());

            foreach (RenderingDefinition rendering in deviceDefinition.Renderings)
            {
                if (rendering.ItemID.ToLower() == "{C1624533-ED68-41AC-B03C-BFDE4D9B1F2A}".ToLower())
                {
                    placeholder = StringUtil.EnsurePrefix('/', rendering.Placeholder + "/" + placeholder + "_" + new Guid(rendering.UniqueId).ToString("D").ToLower());
                    break;
                }
            }
            var newRendering = new RenderingDefinition
            {
                Placeholder = placeholder,
                ItemID      = renderingID,
                Datasource  = datasource.ID.ToString()
            };

            deviceDefinition.AddRendering(newRendering);
            using (new SecurityDisabler())
            {
                item.Editing.BeginEdit();
                layoutField.Value = layoutDefinition.ToXml();
                item.Editing.EndEdit();
            }
        }
        /// <summary>
        /// Sets the custom parameters.
        /// </summary>
        /// <param name="renderingDefinition">The rendering definition.</param>
        /// <param name="options">The options.</param>
        private void SetCustomParameters(
            RenderingDefinition renderingDefinition, RenderingParametersFieldEditorOptions options)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Assert.ArgumentNotNull(options, "options");

            Item item = (renderingDefinition.ItemID != null) ?
                        Client.ContentDatabase.GetItem(renderingDefinition.ItemID) : null;

            if (item != null)
            {
                options.Parameters["rendering"] = item.Uri.ToString();
            }
            if (Item != null)
            {
                options.Parameters["contentitem"] = Item.Uri.ToString();
            }
            if (WebEditUtil.IsRenderingPersonalized(renderingDefinition))
            {
                options.Parameters["warningtext"] = "There are personalization conditions defined for this control. Changing control properties may effect them.";
            }
            if (!string.IsNullOrEmpty(renderingDefinition.MultiVariateTest))
            {
                options.Parameters["warningtext"] = "There is a multivariate test set up for this control. Changing control properties may effect the test.";
            }
        }
Exemplo n.º 5
0
        protected override void ProcessItem(Item item)
        {
            var rendering = new RenderingDefinition
            {
                ItemID             = item.ID.ToString(),
                Placeholder        = PlaceHolder,
                Datasource         = DataSource?.ID.ToString(),
                Cachable           = Cacheable ? "1" : null,
                ClearOnIndexUpdate = ClearOnIndexUpdate ? "1" : null,
                VaryByData         = VaryByData ? "1" : null,
                VaryByDevice       = VaryByDevice ? "1" : null,
                VaryByLogin        = VaryByLogin ? "1" : null,
                VaryByParameters   = VaryByParameters ? "1" : null,
                VaryByQueryString  = VaryByQueryString ? "1" : null,
                VaryByUser         = VaryByUser ? "1" : null
            };

            if (Parameter != null)
            {
                var parameters = new UrlString();
                foreach (string name in Parameter.Keys)
                {
                    parameters.Add(name, Parameter[name].ToString());
                }
                rendering.Parameters = parameters.ToString();
            }

            //todo: add support for conditions
            //renderingDefinition.Conditions
            //todo: add support for multivariate tests
            //rendering.MultiVariateTest
            var psobj = ItemShellExtensions.WrapInItemOwner(SessionState, item, rendering);

            WriteObject(psobj);
        }
Exemplo n.º 6
0
        // REMOVED THIS since new configuration for placeholders is sufficient to check if rendering is dynamic
        //public override bool IsDynamic(RenderingDefinition rendering)
        //{
        //    return SxaProcessor.RenderingsWithDynamicPlaceholders.Contains(rendering.ItemID);
        //}


        public override int NextDynamicId(RenderingDefinition renderingDefinition, IEnumerable <RenderingDefinition> renderings)
        {
            int num = 0;

            if (renderings == null || !renderings.Any())
            {
                return(1);
            }
            foreach (RenderingDefinition renderingDefinition1 in renderings.Where((RenderingDefinition r) => {
                if (r == null || r.UniqueId == renderingDefinition.UniqueId)
                {
                    return(false);
                }
                if (r.ItemID == renderingDefinition.ItemID)
                {
                    return(true);
                }
                return(SxaProcessor.AreCompatibleRenderings(renderingDefinition, r));
            }))
            {
                if (string.IsNullOrEmpty(renderingDefinition1.Parameters))
                {
                    continue;
                }
                int num1 = (int.TryParse(WebUtil.ParseUrlParameters(renderingDefinition1.Parameters)[DynamicPlaceholderIdParam], out num1) ? num1 : num);
                if (num1 <= num)
                {
                    continue;
                }
                num = num1;
            }
            return(num + 1);
        }
Exemplo n.º 7
0
        ///<summary>
        ///	When working with the Presentation Layer for Sitecore, you can specify a Datasource as a property
        ///	for a control.  However, accessing the item that is set brings a bit of a challenge.  Hopefully this fixes that.
        ///</summary>
        ///<param name = "database">Sitecore Database to Use.  Usually From Context.</param>
        ///<param name = "device">Sitecore Device to Use.  Usually from Context.</param>
        ///<param name = "item">Item to get the Layout Renderings from.</param>
        ///<param name = "sublayoutItem">
        ///	Item reference to the Sublayout or Webcontrol that you would like to use for getting the datasource from.
        ///</param>
        ///<returns>Datasource Item.  If no Datasource Item is listed in the layout properties, returns Null.</returns>
        ///<exception cref = "ItemNotFoundException">Thrown when Sitecore can't find a specified datasource item entry.</exception>
        public static Item GetDatasourceFromControl(Database database, DeviceItem device, Item item, Item sublayoutItem)
        {
            Item datasourceItem = null;

            // Get the Layout definition from the current item
            string           rend   = item.Fields["__renderings"].Value;
            LayoutDefinition layout = LayoutDefinition.Parse(rend);
            // Get the current device definition
            DeviceDefinition deviceDef = layout.GetDevice(device.ID.ToString());
            // Get the sublayout to find
            Item mySublayout = database.GetItem(sublayoutItem.ID);
            // Get the definition for the sublayout
            RenderingDefinition rendering = deviceDef.GetRendering(mySublayout.ID.ToString());

            if (!String.IsNullOrEmpty(rendering.Datasource))
            {
                datasourceItem = database.GetItem(rendering.Datasource);
                if (datasourceItem == null)
                {
                    throw new ItemNotFoundException("Could not find datasource item at " + rendering.Datasource);
                }
            }

            return(datasourceItem);
        }
        public void Process(PipelineArgs args)
        {
            Assert.ArgumentNotNull((object)args, "args");
            IInsertRenderingArgs insertRenderingArgs = args as IInsertRenderingArgs;

            if (insertRenderingArgs == null)
                return;

            Item renderingItem = insertRenderingArgs.RenderingItem;
            Assert.IsNotNull((object)renderingItem, "renderingItem");
            string placeholderKey = insertRenderingArgs.PlaceholderKey;
            Assert.IsNotNullOrEmpty(placeholderKey, "placeholderKey");
            string lastPart = StringUtil.GetLastPart(placeholderKey, '/', placeholderKey);
            string[] arrKey = lastPart.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            string lastPartKey = arrKey[0];

            RenderingDefinition renderingDefinition = new RenderingDefinition()
            {
                ItemID = renderingItem.ID.ToString(),
                Placeholder = lastPartKey
            };

            if (insertRenderingArgs.Datasource != null)
                renderingDefinition.Datasource = insertRenderingArgs.Datasource.ID.ToString();

            Assert.IsNotNull((object)insertRenderingArgs.Device, "device");

            this.InsertRenderingAt(insertRenderingArgs.Device, renderingDefinition, insertRenderingArgs.Position, insertRenderingArgs.AllowedRenderingsIds, arrKey[1]);

            insertRenderingArgs.Result = new RenderingReference(renderingDefinition, insertRenderingArgs.Language, insertRenderingArgs.ContentDatabase);
        }
Exemplo n.º 9
0
        protected virtual RenderingDefinition DoReplaceRendering(
            RenderingDefinition sourceRendering,
            RenderingDefinition targetRendering, DeviceDefinition device)
        {
            var renderingDefinition = new RenderingDefinition
            {
                Cachable           = sourceRendering.Cachable,
                Conditions         = sourceRendering.Conditions,
                Datasource         = sourceRendering.Datasource,
                ItemID             = targetRendering.ItemID,
                MultiVariateTest   = sourceRendering.MultiVariateTest,
                Parameters         = sourceRendering.Parameters,
                Placeholder        = sourceRendering.Placeholder,
                Rules              = sourceRendering.Rules,
                VaryByData         = sourceRendering.VaryByData,
                ClearOnIndexUpdate = sourceRendering.ClearOnIndexUpdate,
                VaryByDevice       = sourceRendering.VaryByDevice,
                VaryByLogin        = sourceRendering.VaryByLogin,
                VaryByParameters   = sourceRendering.VaryByParameters,
                VaryByQueryString  = sourceRendering.VaryByQueryString,
                VaryByUser         = sourceRendering.VaryByUser
            };

            if (device.Renderings == null)
            {
                return(renderingDefinition);
            }

            var index = device.Renderings.IndexOf(sourceRendering);

            device.Renderings.RemoveAt(index);
            device.Renderings.Insert(index, renderingDefinition);

            return(renderingDefinition);
        }
        /// <summary>
        /// Sets the caching.
        /// </summary>
        /// <param name="renderingDefinition">
        /// The rendering definition.
        /// </param>
        /// <param name="value">
        /// The value.
        /// </param>
        private static void SetCaching(RenderingDefinition renderingDefinition, string value)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Assert.ArgumentNotNull(value, "value");
            if (string.IsNullOrEmpty(value))
            {
                value = "0|0|0|0|0|0|0|0";
            }
            string[] array = value.Split('|');
            Assert.IsTrue(array.Length == 8, "Invalid caching value format");

            renderingDefinition.Cachable =
                ((array[0] == "1") ? "1" : ((renderingDefinition.Cachable != null) ? "0" : null));

            renderingDefinition.ClearOnIndexUpdate = ((array[1] == "1") ?
                                                      "1" : ((renderingDefinition.ClearOnIndexUpdate != null) ? "0" : null));

            renderingDefinition.VaryByData = ((array[2] == "1") ?
                                              "1" : ((renderingDefinition.VaryByData != null) ? "0" : null));

            renderingDefinition.VaryByDevice = ((array[3] == "1") ?
                                                "1" : ((renderingDefinition.VaryByDevice != null) ? "0" : null));

            renderingDefinition.VaryByLogin = ((array[4] == "1") ?
                                               "1" : ((renderingDefinition.VaryByLogin != null) ? "0" : null));

            renderingDefinition.VaryByParameters = ((array[5] == "1") ?
                                                    "1" : ((renderingDefinition.VaryByParameters != null) ? "0" : null));

            renderingDefinition.VaryByQueryString = ((array[6] == "1") ?
                                                     "1" : ((renderingDefinition.VaryByQueryString != null) ? "0" : null));

            renderingDefinition.VaryByUser = ((array[7] == "1") ?
                                              "1" : ((renderingDefinition.VaryByUser != null) ? "0" : null));
        }
 /// <summary>
 /// Renders the renderings.
 ///
 /// </summary>
 /// <param name="output">The output.</param><param name="list">The list.</param>
 private void RenderRenderings(HtmlTextWriter output, List <RenderingDefinition> list)
 {
     Assert.ArgumentNotNull((object)output, "output");
     Assert.ArgumentNotNull((object)list, "list");
     for (int index = 0; index < list.Count; ++index)
     {
         RenderingDefinition renderingDefinition = list[index];
         string itemId = renderingDefinition.ItemID;
         if (!string.IsNullOrEmpty(itemId))
         {
             Item rendering = Sitecore.Context.Database.GetItem(itemId);
             if (rendering != null)
             {
                 if (Placeholder72.IsSublayout(rendering))
                 {
                     this.RenderSublayout(output, rendering, renderingDefinition, index);
                 }
                 else
                 {
                     this.RenderRendering(output, rendering, renderingDefinition, index);
                 }
             }
         }
     }
 }
Exemplo n.º 12
0
        protected virtual int ConvertPosition(DeviceDefinition device, string targetPlaceholder, int insertPosition)
        {
            Assert.ArgumentNotNull(device, "device");
            if (insertPosition == 0 || device.Renderings == null)
            {
                return(0);
            }

            int num = 0;

            for (int i = 0; i < device.Renderings.Count; i++)
            {
                RenderingDefinition item = device.Renderings[i] as RenderingDefinition;
                Assert.IsNotNull(item, "rendering");
                string placeholder = item.Placeholder;
                if (AreEqualPlaceholders(placeholder, targetPlaceholder))
                {
                    num++;
                }
                if (num == insertPosition)
                {
                    return(i + 1);
                }
            }

            return(device.Renderings.Count);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Updates the state of the commands.
        /// </summary>
        private void UpdateRenderingsCommandsState()
        {
            if (this.SelectedIndex < 0)
            {
                this.ChangeButtonsState(true);
                return;
            }
            LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition();
            DeviceDefinition device           = layoutDefinition.GetDevice(this.DeviceID);

            System.Collections.ArrayList renderings = device.Renderings;
            if (renderings == null)
            {
                this.ChangeButtonsState(true);
                return;
            }
            RenderingDefinition renderingDefinition = renderings[this.SelectedIndex] as RenderingDefinition;

            if (renderingDefinition == null)
            {
                this.ChangeButtonsState(true);
                return;
            }
            this.ChangeButtonsState(false);
            this.Personalize.Disabled = !string.IsNullOrEmpty(renderingDefinition.MultiVariateTest);
            this.Test.Disabled        = DeviceEditorForm.HasRenderingRules(renderingDefinition);
        }
Exemplo n.º 14
0
        protected void SortUp(Message message)
        {
            Assert.ArgumentNotNull(message, "message");
            if (this.SelectedIndex <= 0)
            {
                return;
            }
            LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition();
            DeviceDefinition device           = layoutDefinition.GetDevice(this.DeviceID);

            System.Collections.ArrayList renderings = device.Renderings;
            if (renderings == null)
            {
                return;
            }
            RenderingDefinition renderingDefinition = renderings[this.SelectedIndex] as RenderingDefinition;

            if (renderingDefinition == null)
            {
                return;
            }
            renderings.Remove(renderingDefinition);
            renderings.Insert(this.SelectedIndex - 1, renderingDefinition);
            this.SelectedIndex--;
            DeviceEditorForm.SetDefinition(layoutDefinition);
            this.Refresh();
        }
Exemplo n.º 15
0
 public ReplaceRenderingRuleContext(RenderingDefinition sourceRendering, Item targetRenderingItem, DeviceDefinition device)
     : base(new ID(sourceRendering.ItemID))
 {
     SourceRendering     = sourceRendering;
     TargetRenderingItem = targetRenderingItem;
     Device = device;
 }
Exemplo n.º 16
0
        protected void SortUp(Message message)
        {
            Assert.ArgumentNotNull((object)message, "message");
            if (this.SelectedIndex <= 0)
            {
                return;
            }
            LayoutDefinition layoutDefinition = CustomDeviceEditor.GetLayoutDefinition();
            ArrayList        renderings       = layoutDefinition.GetDevice(this.DeviceID).Renderings;

            if (renderings == null)
            {
                return;
            }
            RenderingDefinition renderingDefinition = renderings[this.SelectedIndex] as RenderingDefinition;

            if (renderingDefinition == null)
            {
                return;
            }
            renderings.Remove((object)renderingDefinition);
            renderings.Insert(this.SelectedIndex - 1, (object)renderingDefinition);
            --this.SelectedIndex;
            CustomDeviceEditor.SetDefinition(layoutDefinition);
            this.Refresh();
        }
Exemplo n.º 17
0
 /// <summary>Updates the state of the commands.</summary>
 private void UpdateRenderingsCommandsState()
 {
     if (this.SelectedIndex < 0)
     {
         this.ChangeButtonsState(true);
     }
     else
     {
         ArrayList renderings = CustomDeviceEditor.GetLayoutDefinition().GetDevice(this.DeviceID).Renderings;
         if (renderings == null)
         {
             this.ChangeButtonsState(true);
         }
         else
         {
             RenderingDefinition definition = renderings[this.SelectedIndex] as RenderingDefinition;
             if (definition == null)
             {
                 this.ChangeButtonsState(true);
             }
             else
             {
                 this.ChangeButtonsState(false);
                 this.Personalize.Disabled = !string.IsNullOrEmpty(definition.MultiVariateTest);
                 this.Test.Disabled        = CustomDeviceEditor.HasRenderingRules(definition);
             }
         }
     }
 }
Exemplo n.º 18
0
        /// <summary>
        ///     Checks to see if the passed in item has presentation settings for the provided device and sublayout.
        /// </summary>
        /// <param name = "theItem">The item.</param>
        /// <param name = "device">The device.</param>
        /// <param name = "sublayoutItem">The sublayout item.</param>
        /// <returns>True if the item contains the device and sublayout in it's presentation settings, false otherwise.</returns>
        public static bool ItemHasPresentationSettingsForSublayout(Item theItem, DeviceItem device,
                                                                   SublayoutItem sublayoutItem)
        {
            if (theItem == null || device == null || sublayoutItem == null)
            {
                return(false);
            }

            //If the item does not contain settings for the passed in device do not bother with the
            // rest of the check.
            if (!ItemHasPresentationSettingsForDevice(theItem, device))
            {
                return(false);
            }

            //Try and get the device definition from the layout definition
            DeviceDefinition deviceDef = GetDeviceDefinition(theItem, device);

            if (deviceDef == null)
            {
                return(false);
            }

            //Try and get the rendering for the passed in display item
            RenderingDefinition rendering = deviceDef.GetRendering(sublayoutItem.ID.ToString());

            return(!(rendering == null));
        }
Exemplo n.º 19
0
        public virtual void SetDynamicId(RenderingDefinition rendering, string id)
        {
            var parameters = WebUtil.ParseUrlParameters(rendering.Parameters);

            parameters[DynamicPlaceholderIdParam] = id;
            rendering.Parameters = new UrlString(parameters).GetUrl();
        }
Exemplo n.º 20
0
 public virtual string NextDynamicId(RenderingDefinition rendering, PrefabGetRenderingsArgs args)
 {
     return(System.Math.Max(
                NextDynamicId(rendering, args.DeviceLayout.Renderings.Cast <RenderingDefinition>()),
                NextDynamicId(rendering, args.Result)
                ).ToString());
 }
Exemplo n.º 21
0
        protected override RenderingDefinition DoReplaceRendering(RenderingDefinition sourceRendering, Item targetRenderingItem, DeviceDefinition device)
        {
            Assert.ArgumentNotNull(sourceRendering, "sourceRendering");
            Assert.ArgumentNotNull(targetRenderingItem, "targetRenderingItem");
            Assert.ArgumentNotNull(device, "device");
            RenderingDefinition definition = new RenderingDefinition
            {
                UniqueId = sourceRendering.UniqueId,
                Cachable = sourceRendering.Cachable,
                Conditions = sourceRendering.Conditions,
                Datasource = sourceRendering.Datasource,
                ItemID = targetRenderingItem.ID.ToString(),
                MultiVariateTest = sourceRendering.MultiVariateTest,
                Parameters = sourceRendering.Parameters,
                Placeholder = sourceRendering.Placeholder,
                Rules = sourceRendering.Rules,
                VaryByData = sourceRendering.VaryByData,
                ClearOnIndexUpdate = sourceRendering.ClearOnIndexUpdate,
                VaryByDevice = sourceRendering.VaryByDevice,
                VaryByLogin = sourceRendering.VaryByLogin,
                VaryByParameters = sourceRendering.VaryByParameters,
                VaryByQueryString = sourceRendering.VaryByQueryString,
                VaryByUser = sourceRendering.VaryByUser
            };

            if (device.Renderings != null)
            {
                int index = device.Renderings.IndexOf(sourceRendering);
                device.Renderings.RemoveAt(index);
                device.Renderings.Insert(index, definition);
            }
            return definition;
        }
        protected override RenderingReference DoActivateCondition(RenderingDefinition rendering, ID conditionID, Language lang, Database database, Item item, SiteContext site)
        {
            var reference = base.DoActivateCondition(rendering, conditionID, lang, database, item, site);

            ExtensionMethods.TransferRenderingParameters(rendering, reference);
            return(reference);
        }
        protected override RenderingDefinition DoReplaceRendering(RenderingDefinition sourceRendering, Item targetRenderingItem, DeviceDefinition device)
        {
            Assert.ArgumentNotNull(sourceRendering, "sourceRendering");
            Assert.ArgumentNotNull(targetRenderingItem, "targetRenderingItem");
            Assert.ArgumentNotNull(device, "device");
            RenderingDefinition definition = new RenderingDefinition
            {
                UniqueId           = sourceRendering.UniqueId,
                Cachable           = sourceRendering.Cachable,
                Conditions         = sourceRendering.Conditions,
                Datasource         = sourceRendering.Datasource,
                ItemID             = targetRenderingItem.ID.ToString(),
                MultiVariateTest   = sourceRendering.MultiVariateTest,
                Parameters         = sourceRendering.Parameters,
                Placeholder        = sourceRendering.Placeholder,
                Rules              = sourceRendering.Rules,
                VaryByData         = sourceRendering.VaryByData,
                ClearOnIndexUpdate = sourceRendering.ClearOnIndexUpdate,
                VaryByDevice       = sourceRendering.VaryByDevice,
                VaryByLogin        = sourceRendering.VaryByLogin,
                VaryByParameters   = sourceRendering.VaryByParameters,
                VaryByQueryString  = sourceRendering.VaryByQueryString,
                VaryByUser         = sourceRendering.VaryByUser
            };

            if (device.Renderings != null)
            {
                int index = device.Renderings.IndexOf(sourceRendering);
                device.Renderings.RemoveAt(index);
                device.Renderings.Insert(index, definition);
            }
            return(definition);
        }
Exemplo n.º 24
0
        public Item FindDatasource(IDataMap map, Item item, RenderingDefinition rendering)
        {
            var ds = rendering.DynamicProperties.FirstOrDefault(a => a.LocalName.Equals("ds"));

            if (string.IsNullOrWhiteSpace(ds?.Value))
            {
                Logger.Log("The rendering has no datasource property", item.Paths.FullPath, Providers.LogType.PresentationService, "rendering", rendering.ToXml());
                return(null);
            }

            Item dsItem = null;

            if (ID.IsID(ds.Value))
            {
                dsItem = map.ToDB.GetItem(new ID(ds.Value));
            }
            else if (ds.Value.Contains("local:"))
            {
                dsItem = map.ToDB.GetItem($"{item.Paths.FullPath}{ds.Value.Replace("local:", "")}");
            }
            else
            {
                dsItem = map.ToDB.GetItem(ds.Value);
            }

            if (dsItem == null)
            {
                Logger.Log("The datasource item is null", item.Paths.FullPath, Providers.LogType.PresentationService, "ds.Value", ds.Value);
            }

            return(dsItem);
        }
Exemplo n.º 25
0
        protected void Add(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull((object)args, "args");
            if (args.IsPostBack)
            {
                if (!args.HasResult)
                {
                    return;
                }
                string[]            strArray            = args.Result.Split(',');
                string              str1                = strArray[0];
                string              str2                = strArray[1].Replace("-c-", ",");
                bool                flag                = strArray[2] == "1";
                LayoutDefinition    layoutDefinition    = CustomDeviceEditor.GetLayoutDefinition();
                DeviceDefinition    device              = layoutDefinition.GetDevice(this.DeviceID);
                RenderingDefinition renderingDefinition = new RenderingDefinition()
                {
                    ItemID      = str1,
                    Placeholder = str2
                };
                device.AddRendering(renderingDefinition);
                CustomDeviceEditor.SetDefinition(layoutDefinition);
                this.Refresh();
                if (flag)
                {
                    ArrayList renderings = device.Renderings;
                    if (renderings != null)
                    {
                        this.SelectedIndex = renderings.Count - 1;
                        Context.ClientPage.SendMessage((object)this, "device:edit");
                    }
                }
                Registry.SetString("/Current_User/SelectRendering/Selected", str1);
            }
            else
            {
                Item itm = UIUtil.GetItemFromQueryString(Sitecore.Client.ContentDatabase);
                SelectRenderingOptions renderingOptions = new SelectRenderingOptions()
                {
                    ShowOpenProperties  = true,
                    ShowPlaceholderName = true,
                    PlaceholderName     = string.Empty
                };
                string @string = Registry.GetString("/Current_User/SelectRendering/Selected");
                if (!string.IsNullOrEmpty(@string))
                {
                    renderingOptions.SelectedItem = Client.ContentDatabase.GetItem(@string);
                }

                //Modify the following line to include id and deviceid parameters
                SheerResponse.ShowModalDialog(renderingOptions.ToUrlString(Sitecore.Client.ContentDatabase).ToString() + "&ciId=" +
                                              System.Web.HttpUtility.UrlEncode(itm.ID.ToString()) + "&deviceid=" +
                                              System.Web.HttpUtility.UrlEncode(this.DeviceID), true);

                //SheerResponse.ShowModalDialog(renderingOptions.ToUrlString(Client.ContentDatabase).ToString(), true);

                args.WaitForPostBack();
            }
        }
        /// <summary>
        /// Sets the value.
        /// </summary>
        /// <param name="renderingDefinition">
        /// The rendering definition.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <param name="fieldName">
        /// Name of the field.
        /// </param>
        /// <param name="value">
        /// The value.
        /// </param>
        private static void SetValue(
            RenderingDefinition renderingDefinition,
            UrlString parameters,
            string fieldName,
            string value)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Assert.ArgumentNotNull(fieldName, "fieldName");
            Assert.ArgumentNotNull(value, "value");
            Assert.ArgumentNotNull(parameters, "parameters");

            switch (fieldName.ToLowerInvariant())
            {
            case "placeholder":
                renderingDefinition.Placeholder = value;
                break;

            case "data source":
                renderingDefinition.Datasource = value;
                break;

            case "caching":
                SetCaching(renderingDefinition, value);
                break;

            case "personalization":
                renderingDefinition.Conditions = value;
                break;

            case "tests":
            {
                if (string.IsNullOrEmpty(value))
                {
                    renderingDefinition.MultiVariateTest = string.Empty;
                }
                Item item = Client.ContentDatabase.GetItem(value);
                if (item != null)
                {
                    renderingDefinition.MultiVariateTest = item.ID.ToString();
                }
                else
                {
                    renderingDefinition.MultiVariateTest = value;
                }
                break;
            }

            case "additional parameters":
            {
                NameValueCollection parameters2 = new UrlString(value).Parameters;
                parameters.Parameters.Add(parameters2);
                break;
            }

            default:
                parameters[fieldName] = value;
                break;
            }
        }
Exemplo n.º 27
0
 private void RunReplaceRenderingRules(RenderingDefinition sourceRendering, Item targetRenderingItem, DeviceDefinition device)
 {
     using (new TraceOperation("Run replace rendering rules"))
     {
         var context = new ReplaceRenderingRuleContext(sourceRendering, targetRenderingItem, device);
         _rulesRunner.RunGlobalRules(RuleIDs.ReplaceRenderingGlobalRulesRootId, targetRenderingItem.Database, context);
     }
 }
Exemplo n.º 28
0
        protected override void ProcessLayout(Item item, LayoutDefinition layout, DeviceDefinition device)
        {
            if (!ShouldProcess(item.GetProviderPath(), "Add rendering " + Instance.ItemID))
            {
                return;
            }
            var rendering = new RenderingDefinition
            {
                ItemID             = Instance.ItemID,
                Placeholder        = PlaceHolder ?? Instance.Placeholder,
                Datasource         = DataSource ?? Instance.Datasource,
                Cachable           = Instance.Cachable,
                ClearOnIndexUpdate = Instance.ClearOnIndexUpdate,
                VaryByData         = Instance.VaryByData,
                VaryByDevice       = Instance.VaryByDevice,
                VaryByLogin        = Instance.VaryByLogin,
                VaryByParameters   = Instance.VaryByParameters,
                VaryByQueryString  = Instance.VaryByQueryString,
                VaryByUser         = Instance.VaryByUser
            };

            if (Parameter != null)
            {
                var parameters = new UrlString(rendering.Parameters ?? string.Empty);
                foreach (string name in Parameter.Keys)
                {
                    if (parameters.Parameters.AllKeys.Contains(name))
                    {
                        parameters.Parameters[name] = Parameter[name].ToString();
                    }
                    else
                    {
                        parameters.Add(name, Parameter[name].ToString());
                    }
                }
                rendering.Parameters = parameters.ToString();
            }

            //todo: add support for conditions
            //renderingDefinition.Conditions
            //todo: add support for multivariate tests
            //rendering.MultiVariateTest

            if (Index > -1)
            {
                device.Insert(Index, rendering);
            }
            else
            {
                device.AddRendering(rendering);
            }

            item.Edit(p =>
            {
                var outputXml = layout.ToXml();
                LayoutField.SetFieldValue(item.Fields[LayoutFieldId], outputXml);
            });
        }
Exemplo n.º 29
0
        protected void Change(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            if (this.SelectedIndex < 0)
            {
                return;
            }
            LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition();
            DeviceDefinition device           = layoutDefinition.GetDevice(this.DeviceID);

            System.Collections.ArrayList renderings = device.Renderings;
            if (renderings == null)
            {
                return;
            }
            RenderingDefinition renderingDefinition = renderings[this.SelectedIndex] as RenderingDefinition;

            if (renderingDefinition == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(renderingDefinition.ItemID))
            {
                return;
            }
            if (args.IsPostBack)
            {
                if (args.HasResult)
                {
                    string[] array = args.Result.Split(new char[]
                    {
                        ','
                    });
                    renderingDefinition.ItemID = array[0];
                    bool flag = array[2] == "1";
                    DeviceEditorForm.SetDefinition(layoutDefinition);
                    this.Refresh();
                    if (flag)
                    {
                        Context.ClientPage.SendMessage(this, "device:edit");
                        return;
                    }
                }
            }
            else
            {
                SelectRenderingOptions selectRenderingOptions = new SelectRenderingOptions
                {
                    ShowOpenProperties  = true,
                    ShowPlaceholderName = false,
                    PlaceholderName     = string.Empty,
                    SelectedItem        = Client.ContentDatabase.GetItem(renderingDefinition.ItemID)
                };
                string url = selectRenderingOptions.ToUrlString(Client.ContentDatabase).ToString();
                SheerResponse.ShowModalDialog(url, true);
                args.WaitForPostBack();
            }
        }
        protected virtual void InsertRenderingAt(DeviceDefinition device, RenderingDefinition renderingDefinition, int insertPosition, IEnumerable <ID> allowedRenderingsIds, string renderingUniqueId = "")
        {
            Assert.ArgumentNotNull((object)device, "device");
            Assert.ArgumentNotNull((object)renderingDefinition, "renderingDefinition");

            // Insert Rendering by it's Unique Id
            if (!string.IsNullOrEmpty(renderingUniqueId) && device != null && device.Renderings != null)
            {
                string uniqueId = string.Concat("{", renderingUniqueId, "}");
                // Try
                for (int index = 0; index < device.Renderings.Count; ++index)
                {
                    RenderingDefinition rendering = device.Renderings[index] as RenderingDefinition;

                    if (rendering.UniqueId.Equals(uniqueId, StringComparison.InvariantCultureIgnoreCase))
                    {
                        device.Insert(index + 1, renderingDefinition);
                    }
                }
            }

            if (insertPosition == 0)
            {
                device.Insert(insertPosition, renderingDefinition);
            }
            else if (device.Renderings == null)
            {
                device.AddRendering(renderingDefinition);
            }
            else
            {
                ID[] idArray = Enumerable.ToArray <ID>(allowedRenderingsIds);
                int  num     = 0;
                for (int index = 0; index < device.Renderings.Count; ++index)
                {
                    RenderingDefinition rendering = device.Renderings[index] as RenderingDefinition;
                    Assert.IsNotNull((object)rendering, "rendering");
                    string placeholder = rendering.Placeholder;
                    if (string.IsNullOrEmpty(placeholder) && Enumerable.Any <ID>((IEnumerable <ID>)idArray, (Func <ID, bool>)(p => p == ID.Parse(rendering.ItemID))))
                    {
                        placeholder = renderingDefinition.Placeholder;
                    }

                    if (InsertRendering.AreEqualPlaceholders(placeholder, renderingDefinition.Placeholder))
                    {
                        ++num;
                    }

                    if (num == insertPosition)
                    {
                        device.Insert(index + 1, renderingDefinition);
                        break;
                    }
                }
            }
        }
Exemplo n.º 31
0
        protected bool MatchesParamCriteria(RenderingDefinition r)
        {
            var urlString = new UrlString(r.Parameters);

            if (string.IsNullOrWhiteSpace(urlString[Param]))
            {
                return(false);
            }
            return(Compare(HttpUtility.UrlDecode(urlString[Param]), HttpUtility.UrlDecode(Value)));
        }
Exemplo n.º 32
0
 protected void Add(ClientPipelineArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     if (args.IsPostBack)
     {
         if (args.HasResult)
         {
             string[] array = args.Result.Split(new char[]
             {
                 ','
             });
             string              text                = array[0];
             string              placeholder         = array[1].Replace("-c-", ",");
             bool                flag                = array[2] == "1";
             LayoutDefinition    layoutDefinition    = DeviceEditorForm.GetLayoutDefinition();
             DeviceDefinition    device              = layoutDefinition.GetDevice(this.DeviceID);
             RenderingDefinition renderingDefinition = new RenderingDefinition
             {
                 ItemID      = text,
                 Placeholder = placeholder
             };
             device.AddRendering(renderingDefinition);
             DeviceEditorForm.SetDefinition(layoutDefinition);
             this.Refresh();
             if (flag)
             {
                 System.Collections.ArrayList renderings = device.Renderings;
                 if (renderings != null)
                 {
                     this.SelectedIndex = renderings.Count - 1;
                     Context.ClientPage.SendMessage(this, "device:edit");
                 }
             }
             Registry.SetString("/Current_User/SelectRendering/Selected", text);
             return;
         }
     }
     else
     {
         SelectRenderingOptions selectRenderingOptions = new SelectRenderingOptions
         {
             ShowOpenProperties  = true,
             ShowPlaceholderName = true,
             PlaceholderName     = string.Empty
         };
         string @string = Registry.GetString("/Current_User/SelectRendering/Selected");
         if (!string.IsNullOrEmpty(@string))
         {
             selectRenderingOptions.SelectedItem = Client.ContentDatabase.GetItem(@string);
         }
         string url = selectRenderingOptions.ToUrlString(Client.ContentDatabase).ToString();
         SheerResponse.ShowModalDialog(url, true);
         args.WaitForPostBack();
     }
 }
Exemplo n.º 33
0
        protected override void ProcessLayout(Item item, LayoutDefinition layout, DeviceDefinition device)
        {
            if (!ShouldProcess(item.GetProviderPath(), "Add rendering " + Instance.ItemID))
            {
                return;
            }
            var rendering = new RenderingDefinition
            {
                ItemID = Instance.ItemID,
                Placeholder = PlaceHolder ?? Instance.Placeholder,
                Datasource = DataSource ?? Instance.Datasource,
                Cachable = Instance.Cachable,
                VaryByData = Instance.VaryByData,
                VaryByDevice = Instance.VaryByDevice,
                VaryByLogin = Instance.VaryByLogin,
                VaryByParameters = Instance.VaryByParameters,
                VaryByQueryString = Instance.VaryByQueryString,
                VaryByUser = Instance.VaryByUser
            };

            if (Parameter != null)
            {
                var parameters = new UrlString(rendering.Parameters ?? string.Empty);
                foreach (string name in Parameter.Keys)
                    if (parameters.Parameters.AllKeys.Contains(name))
                    {
                        parameters.Parameters[name] = Parameter[name].ToString();
                    }
                    else
                    {
                        parameters.Add(name, Parameter[name].ToString());
                    }
                rendering.Parameters = parameters.ToString();
            }

            //todo: add support for conditions
            //renderingDefinition.Conditions
            //todo: add support for multivariate tests
            //rendering.MultiVariateTest

            if (Index > -1)
            {
                device.Insert(index, rendering);
            }
            else
            {
                device.AddRendering(rendering);
            }

            item.Edit(p =>
            {
                var outputXml = layout.ToXml();
                Item["__Renderings"] = outputXml;
            });
        }
        protected virtual string GetCaching(RenderingDefinition renderingDefinition)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");

            return (renderingDefinition.Cachable == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.ClearOnIndexUpdate == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByData == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByDevice == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByLogin == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByParameters == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByQueryString == "1" ? "1" : "0") + "|" +
                   (renderingDefinition.VaryByUser == "1" ? "1" : "0");
        }
        protected virtual void InsertRenderingAt(DeviceDefinition device, RenderingDefinition renderingDefinition, int insertPosition, IEnumerable<ID> allowedRenderingsIds, string renderingUniqueId = "")
        {
            Assert.ArgumentNotNull((object)device, "device");
            Assert.ArgumentNotNull((object)renderingDefinition, "renderingDefinition");

            // Insert Rendering by it's Unique Id
            if (!string.IsNullOrEmpty(renderingUniqueId) && device != null && device.Renderings != null)
            {
                string uniqueId = string.Concat("{", renderingUniqueId, "}");
                // Try
                for (int index = 0; index < device.Renderings.Count; ++index)
                {
                    RenderingDefinition rendering = device.Renderings[index] as RenderingDefinition;

                    if (rendering.UniqueId == uniqueId)
                    {
                        device.Insert(index + 1, renderingDefinition);
                    }
                }
            }

            if (insertPosition == 0)
                device.Insert(insertPosition, renderingDefinition);
            else if (device.Renderings == null)
            {
                device.AddRendering(renderingDefinition);
            }
            else
            {
                ID[] idArray = Enumerable.ToArray<ID>(allowedRenderingsIds);
                int num = 0;
                for (int index = 0; index < device.Renderings.Count; ++index)
                {
                    RenderingDefinition rendering = device.Renderings[index] as RenderingDefinition;
                    Assert.IsNotNull((object)rendering, "rendering");
                    string placeholder = rendering.Placeholder;
                    if (string.IsNullOrEmpty(placeholder) && Enumerable.Any<ID>((IEnumerable<ID>)idArray, (Func<ID, bool>)(p => p == ID.Parse(rendering.ItemID))))
                        placeholder = renderingDefinition.Placeholder;

                    if (InsertRendering.AreEqualPlaceholders(placeholder, renderingDefinition.Placeholder))
                        ++num;

                    if (num == insertPosition)
                    {
                        device.Insert(index + 1, renderingDefinition);
                        break;
                    }
                }
            }
        }
        protected virtual void SetValue(RenderingDefinition renderingDef, UrlString parameters, string fieldName, string value)
        {
            Assert.ArgumentNotNull(renderingDef, "renderingDef");
            Assert.ArgumentNotNull(fieldName, "fieldName");
            Assert.ArgumentNotNull(value, "value");
            Assert.ArgumentNotNull(parameters, "parameters");

            var name = fieldName.ToLowerInvariant();
            switch (name)
            {
                case "placeholder":
                    renderingDef.Placeholder = value;
                    return;
                case "data source":
                    renderingDef.Datasource = value;
                    return;
                case "caching":
                    SetCaching(renderingDef, value);
                    return;
                case "personalization":
                    renderingDef.Conditions = value;
                    return;
                case "tests":
                    if (string.IsNullOrEmpty(value))
                    {
                        renderingDef.MultiVariateTest = string.Empty;
                    }

                    var item = Sitecore.Client.ContentDatabase.GetItem(value);
                    if (item != null)
                    {
                        renderingDef.MultiVariateTest = item.ID.ToString();
                        return;
                    }

                    renderingDef.MultiVariateTest = value;
                    return;
            }

            if (name == "additional parameters")
            {
                var additionalParameters = new UrlString(value);
                parameters.Append(additionalParameters);
                return;
            }

            parameters[fieldName] = value;
        }
        protected virtual void SetCaching(RenderingDefinition renderingDef, string value)
        {
            Assert.ArgumentNotNull(renderingDef, "renderingDef");
            Assert.ArgumentNotNull(value, "value");

            if (string.IsNullOrEmpty(value))
            {
                value = "0|0|0|0|0|0|0|0";
            }

            var parts = value.Split('|');
            Assert.IsTrue(parts.Length == 8, "Invalid caching value format");

            renderingDef.Cachable = parts[0] == "1" ? "1" : null;
            renderingDef.ClearOnIndexUpdate = parts[1] == "1" ? "1" : null;
            renderingDef.VaryByData = parts[2] == "1" ? "1" : null;
            renderingDef.VaryByDevice = parts[3] == "1" ? "1" : null;
            renderingDef.VaryByLogin = parts[4] == "1" ? "1" : null;
            renderingDef.VaryByParameters = parts[5] == "1" ? "1" : null;
            renderingDef.VaryByQueryString = parts[6] == "1" ? "1" : null;
            renderingDef.VaryByUser = parts[7] == "1" ? "1" : null;
        }
        private static bool HasRenderingRules(RenderingDefinition definition)
        {
            if (definition.Rules == null)
            {
                return false;
            }

            IEnumerable<XElement> rules = new RulesDefinition(definition.Rules.ToString()).GetRules();
            if (rules == null)
            {
                return false;
            }

            foreach (XContainer xcontainer in rules)
            {
                XElement xelement = Enumerable.FirstOrDefault(xcontainer.Descendants("actions"));
                if (xelement != null && Enumerable.Any(xelement.Descendants()))
                {
                    return true;
                }
            }
            return false;
        }
Exemplo n.º 39
0
        private void SetLayoutFieldValue(RenderingDefinition renderingDefinition, LayoutDefinition layoutDefinition, Item item)
        {
            Assert.ArgumentNotNull(item, "item");

            using (new Sitecore.Data.Items.EditContext(item))
            {
                renderingDefinition.Datasource = _datasourceId.ToString();
                item[Sitecore.FieldIDs.LayoutField] = layoutDefinition.ToXml();
            }
        }
        private void BuildRendering(Border border, DeviceDefinition deviceDefinition, RenderingDefinition renderingDefinition, int index, int conditionsCount)
        {
            Assert.ArgumentNotNull(border, "border");
            Assert.ArgumentNotNull(deviceDefinition, "deviceDefinition");
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");

            string itemId = renderingDefinition.ItemID;
            if (itemId == null)
            {
                return;
            }

            Item obj = Client.ContentDatabase.GetItem(itemId);
            if (obj == null)
            {
                return;
            }

            string displayName = obj.DisplayName;
            string icon = obj.Appearance.Icon;
            string str1 = string.Empty;
            string str2 = displayName;

            if (str1.Length > 0 && str1 != "content")
            {
                str2 = string.Format("{0} {1} {2}.", str2, Translate.Text("in"), str1);
            }

            if (Settings.Analytics.Enabled && conditionsCount > 1)
            {
                str2 += string.Format("<span class=\"{0}\">{1}</span>", conditionsCount > 9
                        ? "scConditionContainer scLongConditionContainer"
                        : "scConditionContainer",
                    conditionsCount);
            }

            Border border1 = new Border();
            border1.Style.Add("float", "left");

            Border borderX = new Border();

            var renderingIconAnchor = new HtmlGenericControl
            {
                InnerHtml = "<a onclick='window.open(\"/sitecore/shell/Applications/Content%20Editor.aspx?fo=" +
                    itemId + "\",\"myWin\",\"width=800,height=600\"); return false;' taget='_blank' class='linkIcon'>" +
                    Images.GetImage(icon, 16, 16, "absmiddle", "0px 4px 0px 0px") + "</a>",
            };
            renderingIconAnchor.Style.Add("float", "left");

            borderX.Controls.Add(renderingIconAnchor);
            borderX.Controls.Add(border1);

            var clearBoth = new HtmlGenericControl("div");
            clearBoth.Style.Add("clear","both");
            borderX.Controls.Add(clearBoth);

            border.Controls.Add(borderX);

            string str3 = StringUtil.GetString(EditRenderingClick).Replace("$Device", deviceDefinition.ID).Replace("$Index", index.ToString());

            if (!string.IsNullOrEmpty(str3))
            {
                border1.RollOver = true;
                border1.Class = "scRollOver";
                border1.Click = str3;
            }

            var literal = new Sitecore.Web.UI.HtmlControls.Literal(
                string.Format("<div class='scRendering' style='padding:2px;position:relative'>{0}</div>", str2)
                );

            border1.Controls.Add(literal);
        }
Exemplo n.º 41
0
        protected override void ProcessItem(Item item)
        {
            var rendering = new RenderingDefinition
            {
                ItemID = item.ID.ToString(),
                Placeholder = PlaceHolder,
                Datasource = DataSource != null ? DataSource.ID.ToString() : null,
                Cachable = Cacheable ? "1" : null,
                VaryByData = VaryByData ? "1" : null,
                VaryByDevice = VaryByDevice ? "1" : null,
                VaryByLogin = VaryByLogin ? "1" : null,
                VaryByParameters = VaryByParameters ? "1" : null,
                VaryByQueryString = VaryByQueryString ? "1" : null,
                VaryByUser = VaryByUser ? "1" : null
            };

            if (Parameter != null)
            {
                var parameters = new UrlString();
                foreach (string name in Parameter.Keys)
                    parameters.Add(name, Parameter[name].ToString());
                rendering.Parameters = parameters.ToString();
            }

            //todo: add support for conditions
            //renderingDefinition.Conditions
            //todo: add support for multivariate tests
            //rendering.MultiVariateTest
            var psobj = ItemShellExtensions.WrapInItemOwner(SessionState, item, rendering);
            WriteObject(psobj);
        }
        private static RenderingDefinition GetHtmlRendering()
        {
            RenderingDefinition definition = new RenderingDefinition();
             definition.ItemID = HtmlHeaderRenderingID;
             definition.UniqueId = ID.NewID.ToString();
             definition.Placeholder = "html-head-meta-data";

             return definition;
        }
 protected void Add(ClientPipelineArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     if (!args.IsPostBack)
     {
         SelectRenderingOptions selectRenderingOption = new SelectRenderingOptions()
         {
             ShowOpenProperties = true,
             ShowPlaceholderName = true,
             PlaceholderName = string.Empty
         };
         SelectRenderingOptions item = selectRenderingOption;
         string str = Registry.GetString("/Current_User/SelectRendering/Selected");
         if (!string.IsNullOrEmpty(str))
         {
             item.SelectedItem = Client.ContentDatabase.GetItem(str);
         }
         string str1 = item.ToUrlString(Client.ContentDatabase).ToString();
         SheerResponse.ShowModalDialog(str1, true);
         args.WaitForPostBack();
     }
     else if (args.HasResult)
     {
         string[] strArrays = args.Result.Split(new char[] { ',' });
         string str2 = strArrays[0];
         string str3 = strArrays[1].Replace("-c-", ",");
         bool flag = strArrays[2] == "1";
         LayoutDefinition layoutDefinition = AdvancedDeviceEditorForm.GetLayoutDefinition();
         DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID);
         RenderingDefinition renderingDefinition = new RenderingDefinition()
         {
             ItemID = str2,
             Placeholder = str3
         };
         device.AddRendering(renderingDefinition);
         AdvancedDeviceEditorForm.SetDefinition(layoutDefinition);
         this.Refresh();
         if (flag)
         {
             ArrayList renderings = device.Renderings;
             if (renderings != null)
             {
                 this.SelectedIndex = renderings.Count - 1;
                 Context.ClientPage.SendMessage(this, "device:edit");
             }
         }
         Registry.SetString("/Current_User/SelectRendering/Selected", str2);
         return;
     }
 }
Exemplo n.º 44
0
        /// <summary>
        /// The render component.
        /// </summary>
        /// <param name="output">
        /// The output.
        /// </param>
        /// <param name="rendering">
        /// The rendering.
        /// </param>
        protected virtual void RenderComponent(System.Web.UI.HtmlTextWriter output, RenderingDefinition rendering, int goalNum, CommandContext context)
        {
            Assert.ArgumentNotNull(output, "output");
            Assert.ArgumentNotNull(rendering, "rendering");
            if (string.IsNullOrEmpty(rendering.ItemID))
            {
                return;
            }
            RenderingItem renderingItem = Client.ContentDatabase.GetItem(rendering.ItemID);
            if (renderingItem == null)
            {
                return;
            }
            SmallButtonAnalytics sublayoutButton = new SmallButtonAnalytics();
            string text = "r_" + ShortID.Encode(rendering.UniqueId);
            sublayoutButton.ID = text;
            sublayoutButton.Header = StringUtil.Clip(renderingItem.DisplayName, ComponentAnalyze.MaxDisplayNameLength,
                true);

            sublayoutButton.Icon = renderingItem.Icon;
            sublayoutButton.Command = StringUtil.EscapeQuote("javascript:Sitecore.PageEditorProxy.selectElement(\"{0}\", this, event);".FormatWith(new object[]
            {
                text
            }), "#quote#");
            sublayoutButton.Enabled = renderingItem.Editable;
            sublayoutButton.ToolTip = (string.IsNullOrEmpty(renderingItem.InnerItem.Appearance.ShortDescription) ? renderingItem.DisplayName : renderingItem.InnerItem.Appearance.ShortDescription);
            sublayoutButton.RenderControl(output);

            var datasourceItem = Factory.GetDatabase("master").GetItem(rendering.Datasource);
            if (datasourceItem != null)
            {
                SmallButtonAnalytics datasourceButton = new SmallButtonAnalytics();
                text = "d_" + ShortID.Encode(datasourceItem.ID);
                datasourceButton.ID = text;
                datasourceButton.Header = StringUtil.Clip(datasourceItem.DisplayName, ComponentAnalyze.MaxDisplayNameLength,
                    true);
                datasourceButton.Command = "";
                datasourceButton.Icon = datasourceItem.Appearance.Icon;
                datasourceButton.ToolTip = (string.IsNullOrEmpty(datasourceItem.Appearance.ShortDescription) ? datasourceItem.DisplayName : datasourceItem.Appearance.ShortDescription);
                datasourceButton.RenderControl(output);

                SmallButtonAnalytics goalButton = new SmallButtonAnalytics();
                text = "g_" + goalNum;
                goalButton.ID = text;
                goalButton.Header = "";
                CommandBuilder commandBuilder = new CommandBuilder(string.Format("webedit:setdatasource"));
                commandBuilder.Arguments.Add("referenceId", rendering.UniqueId);
                commandBuilder.Arguments.Add("renderingId", renderingItem.ID.ToString());
                //context.Parameters.Add("uniqueId", datasourceItem.GetUniqueId());
                commandBuilder.Add("id", datasourceItem.ID.ToString());

                goalButton.Command = commandBuilder.ToString();
                goalButton.Icon = "BusinessV2/16x16/cabinet_open.png";
                goalButton.ToolTip = "Set associated content.";
                goalButton.RenderControl(output);

                //People/24x24/megaphone.png
                //analytics:opentrackingfield

                //Business/24x24/chart.png
                //analytics:authoringfeedback

                SmallButtonAnalytics eventButton = new SmallButtonAnalytics();
                text = "e_" + goalNum;
                eventButton.ID = text;
                eventButton.Header = "";
                commandBuilder = new CommandBuilder("analytics:opentrackingfield");
                commandBuilder.Add("id", datasourceItem.ID.ToString());
                eventButton.Command = commandBuilder.ToString();
                eventButton.Icon = "People/24x24/megaphone.png";
                eventButton.ToolTip = "Click to edit the page event";
                eventButton.RenderControl(output);

                SmallButtonAnalytics reportButton = new SmallButtonAnalytics();
                text = "rep_" + goalNum;
                reportButton.ID = text;
                reportButton.Header = "";
                commandBuilder = new CommandBuilder("analytics:authoringfeedback");
                commandBuilder.Add("id", datasourceItem.ID.ToString());
                reportButton.Command = commandBuilder.ToString();
                reportButton.Icon = "Business/24x24/chart.png";
                reportButton.ToolTip = "Click to edit the page event";
                reportButton.RenderControl(output);
            }
        }
Exemplo n.º 45
0
 private void SetLayoutFieldValueIfApplicable(RenderingDefinition renderingDefinition, LayoutDefinition layoutDefinition, Item item)
 {
     if (renderingDefinition.ItemID == _renderingId.ToString())
     {
         SetLayoutFieldValueIfEditMode(renderingDefinition, layoutDefinition, item);
     }
 }
Exemplo n.º 46
0
 private void SetLayoutFieldValueIfEditMode(RenderingDefinition renderingDefinition, LayoutDefinition layoutDefinition, Item item)
 {
     if (IsEditMode)
     {
         SetLayoutFieldValue(renderingDefinition, layoutDefinition, item);
     }
 }
 /// <summary>
 /// Get Description Value 
 /// </summary>
 /// <param name="renderingDefinition">
 /// The RenderingDefinition.
 /// </param>
 private static string GetDescriptionValue(RenderingDefinition renderingDefinition)
 {
     Assert.ArgumentNotNull(renderingDefinition, "RenderingDefinition");
     string descriptionValue = string.Empty;
     if (renderingDefinition.Parameters != null)
     {
         NameValueCollection renderingParameters = Sitecore.Web.WebUtil.ParseUrlParameters(renderingDefinition.Parameters);
         descriptionValue = renderingParameters["Description"];
     }
     return descriptionValue;
 }
        private static RenderingDefinition CreateRenderingNode(RenderingSettings setting)
        {
            RenderingDefinition definition = new RenderingDefinition();

             definition.ItemID = setting.ID;
             definition.UniqueId = ID.NewID.ToString();
             definition.Placeholder = setting.PlaceholderName;

             StringBuilder parametrs = new StringBuilder();

             string settingsName;
             if (mappingNameParamerts.TryGetValue(setting.ID, out settingsName) &&
             setting.ViewItemPath != null && setting.ViewItemPath != string.Empty)
             {
            parametrs.Append(settingsName).Append("=");
            parametrs.Append(setting.ViewItemPath);
            parametrs.Append("&");
             }

             parametrs.Append(siteSettingsPathName).Append("=");
             parametrs.Append(setting.SiteSettingsPath);
             parametrs.ToString();

             definition.Parameters = parametrs.ToString();
             return definition;
        }
 /// <summary>
 /// Determines whether [has rendering rules] [the specified definition].
 /// </summary>
 /// <param name="definition">The definition.</param>
 /// <returns><c>true</c> if the definition has a defined rule with action; otherwise, <c>false</c>.</returns>
 private static bool HasRenderingRules(RenderingDefinition definition)
 {
     bool flag;
     if (definition.Rules == null)
     {
         return false;
     }
     RulesDefinition rulesDefinition = new RulesDefinition(definition.Rules.ToString());
     IEnumerable<XElement> rules = rulesDefinition.GetRules();
     if (rules == null)
     {
         return false;
     }
     using (IEnumerator<XElement> enumerator = rules.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             XElement current = enumerator.Current;
             XElement xElement = current.Descendants("actions").FirstOrDefault<XElement>();
             if (xElement == null || !xElement.Descendants().Any<XElement>())
             {
                 continue;
             }
             flag = true;
             return flag;
         }
         return false;
     }
     return flag;
 }
Exemplo n.º 50
0
        private void SetLayoutFieldValueIfEditMode(RenderingDefinition renderingDefinition, LayoutDefinition layoutDefinition, Item item)
        {
            if (_processingResults.ContainsKey(item.ID))
            {
                _processingResults[item.ID].Updated = true;
            }

            if (IsEditMode)
            {
                SetLayoutFieldValue(renderingDefinition, layoutDefinition, item);
            }
        }
        protected virtual void SetCustomParameters(RenderingDefinition renderingDefinition, RenderingParametersFieldEditorOptions options, Item item)
        {
            Assert.ArgumentNotNull(renderingDefinition, "renderingDefinition");
            Assert.ArgumentNotNull(options, "options");

            var renderingItem = renderingDefinition.ItemID != null ? Sitecore.Client.ContentDatabase.GetItem(renderingDefinition.ItemID) : null;
            if (renderingItem != null)
            {
                options.Parameters["rendering"] = renderingItem.Uri.ToString();
            }

            if (item != null)
            {
                options.Parameters["contentitem"] = item.Uri.ToString();
            }

            if (Sitecore.Web.WebEditUtil.IsRenderingPersonalized(renderingDefinition))
            {
                options.Parameters["warningtext"] = Sitecore.Texts.PersonalizationConditionsDefinedWarning;
            }

            if (!string.IsNullOrEmpty(renderingDefinition.MultiVariateTest))
            {
                options.Parameters["warningtext"] = Sitecore.Texts.Thereisamultivariatetestsetupforthiscontro;
            }
        }