示例#1
0
        public override void Execute(CommandContext context)
        {
            string           formValue        = WebUtil.GetFormValue("scLayout");
            string           xml              = WebEditUtil.ConvertJSONLayoutToXML(formValue);
            string           id               = ShortID.Decode(WebUtil.GetFormValue("scDeviceID"));
            LayoutDefinition layoutDefinition = LayoutDefinition.Parse(xml);

            if (layoutDefinition == null)
            {
                ReturnLayout();
                return;
            }
            DeviceDefinition device = layoutDefinition.GetDevice(id);

            if (device == null)
            {
                ReturnLayout();
                return;
            }
            string uniqueId = Guid.Parse(context.Parameters["renderingUid"]).ToString("B").ToUpperInvariant();
            RenderingDefinition renderingByUniqueId = device.GetRenderingByUniqueId(uniqueId);

            if (renderingByUniqueId == null)
            {
                ReturnLayout();
                return;
            }
            if (string.IsNullOrEmpty(renderingByUniqueId.Parameters))
            {
                if (!string.IsNullOrEmpty(renderingByUniqueId.ItemID))
                {
                    RenderingItem renderingItem = Client.ContentDatabase.GetItem(renderingByUniqueId.ItemID);
                    renderingByUniqueId.Parameters = ((renderingItem != null) ? renderingItem.Parameters : string.Empty);
                }
                else
                {
                    renderingByUniqueId.Parameters = string.Empty;
                }
            }
            NameValueCollection nameValueCollection = WebUtil.ParseUrlParameters(renderingByUniqueId.Parameters);
            string input = nameValueCollection["FieldNames"];
            string text  = context.Parameters["variant"];

            if (Guid.TryParse(input, out Guid result) && result == Guid.Parse(text))
            {
                ReturnLayout();
                return;
            }
            nameValueCollection["FieldNames"] = text;
            renderingByUniqueId.Parameters    = new UrlString(nameValueCollection.EscapeDataValues()).GetUrl();
            formValue = WebEditUtil.ConvertXMLLayoutToJSON(layoutDefinition.ToXml());
            ReturnLayout(formValue);
        }
        public override void Execute(CommandContext context)
        {
            var id = ShortID.Decode(WebUtil.GetFormValue("scDeviceID"));
            var layoutDefinition = GetLayoutDefinition();

            if (layoutDefinition == null)
            {
                this.ReturnLayout();
            }
            else
            {
                var device = layoutDefinition.GetDevice(id);
                if (device == null)
                {
                    this.ReturnLayout();
                }
                else
                {
                    var renderingByUniqueId = device.GetRenderingByUniqueId(context.Parameters["referenceId"]);
                    if (renderingByUniqueId == null)
                    {
                        this.ReturnLayout();
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(renderingByUniqueId.Parameters))
                        {
                            if (!string.IsNullOrEmpty(renderingByUniqueId.ItemID))
                            {
                                var renderingItem = (RenderingItem)Sitecore.Client.ContentDatabase.GetItem(renderingByUniqueId.ItemID);
                                renderingByUniqueId.Parameters = renderingItem != null ? renderingItem.Parameters : string.Empty;
                            }
                            else
                            {
                                renderingByUniqueId.Parameters = string.Empty;
                            }
                        }

                        var parameters = WebUtil.ParseUrlParameters(renderingByUniqueId.Parameters);

                        parameters[this.ParamKey] = this.ParamValue as string;

                        renderingByUniqueId.Parameters = new UrlString(parameters).GetUrl();
                        this.ReturnLayout(WebEditUtil.ConvertXMLLayoutToJSON(layoutDefinition.ToXml()));
                    }
                }
            }
        }
 /// <summary>
 /// Get Layout
 /// </summary>
 /// <param name="layout">
 /// The layout.
 /// </param>
 /// <returns>
 /// returns layout as string
 /// </returns>
 private static string GetLayout(string layout)
 {
     Assert.ArgumentNotNull(layout, "layout");
     return(WebEditUtil.ConvertXMLLayoutToJSON(layout));
 }