Esempio n. 1
0
        private void GetEditorValue(Sitecore.Web.UI.HtmlControls.Control parent, ICollection <Hashtable> results)
        {
            var controlId = parent.ID;

            if (controlId != null && controlId.StartsWith("variable_"))
            {
                foreach (Sitecore.Web.UI.HtmlControls.Control control in parent.Controls)
                {
                    controlId = control.ID;
                    if (controlId != null && controlId.StartsWith("variable_"))
                    {
                        var result = GetVariableValue(control);
                        results.Add(result);
                    }
                }
            }
        }
        public virtual void RenderField(Control parent, Sitecore.Shell.Applications.ContentManager.Editor.Field field,
                                        Item fieldType, bool readOnly, string value)
        {
            Assert.ArgumentNotNull(parent, "parent");
            Assert.ArgumentNotNull(field, "field");
            Assert.ArgumentNotNull(fieldType, "fieldType");
            Assert.ArgumentNotNull(value, "value");
            bool    hasRibbon = false;
            string  str       = null;
            int     count     = 0;
            string  text      = string.Empty;
            Control editor    = this.GetEditor(fieldType);

            if (this.Arguments.ShowInputBoxes)
            {
                ChildList children = fieldType.Children;
                hasRibbon = !UserOptions.ContentEditor.ShowRawValues && (children["Ribbon"] != null);
                switch (field.TemplateField.TypeKey)
                {
                case "rich text":
                case "html":
                    hasRibbon = hasRibbon && (UserOptions.HtmlEditor.ContentEditorMode != UserOptions.HtmlEditor.Mode.Preview);
                    break;
                }
                if (!UserOptions.ContentEditor.ShowRawValues)
                {
                    Item item = children["Menu"];
                    if (((item != null) && item.HasChildren) && UserOptions.View.UseSmartTags)
                    {
                        str   = item.Children[0]["Display Name"];
                        count = item.Children.Count;
                    }
                }
            }
            string str4 = string.Empty;
            string str5 = string.Empty;
            int    @int = Registry.GetInt("/Current_User/Content Editor/Field Size/" + field.TemplateField.ID.ToShortID(), -1);

            if (@int != -1)
            {
                str4 = string.Format(" height:{0}px", @int);

                Sitecore.Web.UI.HtmlControls.Control control2 = editor as Sitecore.Web.UI.HtmlControls.Control;
                if (control2 != null)
                {
                    control2.Height = new Unit((double)@int, UnitType.Pixel);
                }
                else
                {
                    WebControl control3 = editor as WebControl;
                    if (control3 != null)
                    {
                        control3.Height = new Unit((double)@int, UnitType.Pixel);
                    }
                }
            }
            else if (editor is Frame)
            {
                string style = field.ItemField.Style;
                if (string.IsNullOrEmpty(style) || !style.ToLowerInvariant().Contains("height"))
                {
                    str5 = " class='defaultFieldEditorsFrameContainer'";
                }
            }
            if (!string.IsNullOrEmpty(str))
            {
                string str7 =
                    string.Concat(new object[]
                {
                    "<div onactivate='javascript:scContent.smartTag(this, event, \"", field.ControlID, "\", ",
                    StringUtil.EscapeJavascriptString(str), ",\"", count,
                    "\")' onmouseover='javascript:scContent.smartTag(this, event, \"", field.ControlID, "\", ",
                    StringUtil.EscapeJavascriptString(str), ",\"", count, "\")'", str4, ">"
                });
                this.AddLiteralControl(parent, str7);
            }
            else if (UserOptions.View.UseSmartTags)
            {
                string str8 =
                    "<div onmouseover=\"javascript:scContent.smartTag(this, event)\" onactivate=\"javascript:scContent.smartTag(this, event)\"" +
                    str4 + ">";
                this.AddLiteralControl(parent, str8);
            }
            else
            {
                this.AddLiteralControl(parent, "<div style='overflow:hidden; " + str4 + "' " + str5 + ">");
            }
            this.AddLiteralControl(parent, text);
            this.AddEditorControl(parent, editor, field, hasRibbon, readOnly, value);
            this.AddLiteralControl(parent, "</div>");
            this.RenderResizable(parent, field);
        }
Esempio n. 3
0
        private Hashtable GetVariableValue(Sitecore.Web.UI.HtmlControls.Control control)
        {
            var controlId = control.ID;
            var parts     = controlId.Split('_');

            var result = new Hashtable(2)
            {
                { "Name", string.Join("_", parts.Skip(1).Take(parts.Length - 2).ToArray()) }
            };

            var controlValue = control.Value;

            if (controlValue != null)
            {
                if (control is DateTimePicker)
                {
                    result.Add("Value", DateUtil.IsoDateToDateTime(controlValue));
                }
                else if (control is TreePicker)
                {
                    var picker    = control as TreePicker;
                    var contextID = picker.DataContext;
                    var context   = (DataContext)DataContextPanel.FindControl(contextID);
                    result.Add("Value", string.IsNullOrEmpty(picker.Value) ? null : context.CurrentItem);
                }
                else if (control is Border && ((Border)control).Class == "checkBoxWrapper")
                {
                    var checkboxBorder = control as Border;
                    foreach (var boolValue in checkboxBorder.Controls.OfType <Checkbox>().Select(ctl => ctl.Checked))
                    {
                        result.Add("Value", boolValue);
                    }
                }
                else if (control is Border && (control as Border).Class == "rulesWrapper")
                {
                    result.Add("Value", Sitecore.Context.ClientPage.ServerProperties[control.ID]);
                }
                else if (control is Combobox)
                {
                    var boolValue = (control as Combobox).Value;
                    result.Add("Value", boolValue);
                }
                else if (control is TreeList)
                {
                    var treeList = control as TreeList;
                    var strIds   = treeList.GetValue();
                    var ids      = strIds.Split('|');
                    var db       = Database.GetDatabase(treeList.DatabaseName);
                    var items    = ids.Select(p => db.GetItem(p)).ToList();
                    result.Add("Value", items);
                }
                else if (control is MultilistEx)
                {
                    var multilist = control as MultilistEx;
                    var strIds    = multilist.GetValue();
                    var ids       = strIds.Split('|');
                    var items     = ids.Select(p => Sitecore.Context.ContentDatabase.GetItem(p)).ToList();
                    result.Add("Value", items);
                }
                else if (control is LookupEx)
                {
                    var lookup = control as LookupEx;
                    result.Add("Value",
                               !string.IsNullOrEmpty(lookup.Value)
                            ? Sitecore.Context.ContentDatabase.GetItem(lookup.Value)
                            : null);
                }
                else if (control is Border && ((Border)control).Class == "checkListWrapper")
                {
                    var checkboxBorder = control as Border;
                    var checkList      = checkboxBorder.Controls.OfType <PSCheckList>().FirstOrDefault();
                    var values         =
                        checkList?.Controls.Cast <Control>()
                        .Where(item => item is ChecklistItem)
                        .Cast <ChecklistItem>()
                        .Where(checkItem => checkItem.Checked)
                        .Select(checkItem => checkItem.Value)
                        .ToArray();
                    result.Add("Value", values);
                }
                else if (control is Groupbox && control.Class.Contains("scRadioGroup"))
                {
                    foreach (
                        var radioItem in
                        control.Controls.OfType <Radiobutton>()
                        .Select(item => item)
                        .Where(radioItem => radioItem.Checked))
                    {
                        result.Add("Value", radioItem.Value);
                        break;
                    }
                }
                else if (control is Edit || control is Memo)
                {
                    var value = control.Value;
                    var type  = GetClrTypeName(control.Class);
                    switch (type)
                    {
                    case "Int16":
                        result.Add("Value", short.Parse(value));
                        break;

                    case "Int32":
                        result.Add("Value", int.Parse(value));
                        break;

                    case "Int64":
                        result.Add("Value", long.Parse(value));
                        break;

                    case "UInt16":
                        result.Add("Value", ushort.Parse(value));
                        break;

                    case "UInt32":
                        result.Add("Value", uint.Parse(value));
                        break;

                    case "UInt64":
                        result.Add("Value", ulong.Parse(value));
                        break;

                    case "Byte":
                        result.Add("Value", byte.Parse(value));
                        break;

                    case "Single":
                        result.Add("Value", float.Parse(value));
                        break;

                    case "Double":
                        result.Add("Value", double.Parse(value));
                        break;

                    case "Decimal":
                        result.Add("Value", decimal.Parse(value));
                        break;

                    default:
                        result.Add("Value", value);
                        break;
                    }
                }
                else if (control is UserPicker)
                {
                    result.Add("Value", control.Value.Split('|'));
                }
            }
            return(result);
        }