예제 #1
0
        private void AddControl(ControlCollection container, ContentRepository.Field field)
        {
            var control = GenericFieldControl.CreateDefaultFieldControl(field);

            control.ID = String.Concat("Generic", _id++);

            var fv = GenericFieldControl.GetFieldVisibility(ViewMode, field);

            if (fv == FieldVisibility.Advanced && AdvancedPanel != null)
            {
                AdvancedPanel.Controls.Add(control);
            }
            else
            {
                container.Add(control);
            }
        }
예제 #2
0
        protected override void OnViewInitialize()
        {
            this.ViewControlFrameMode = FieldControlFrameMode.ShowFrame;

            ControlCollection container;
            var c = this.FindControl("GenericControls") ?? this;

            try
            {
                var ivc = c.FindControl("InlineViewContent");
                if (ivc == null)
                {
                    return;
                }

                container = ivc.Controls; // c.Controls;
                container.Clear();

                var fields = this.Content.Fields;
                _id = 0;
                var fieldNames = GenericFieldControl.GetVisibleFieldNames(this.Content, ViewMode);

                // name and urlname comes first
                var nameField = fieldNames.Where(f => f == "DisplayName").FirstOrDefault();
                if (nameField != null)
                {
                    var field = fields[nameField];
                    AddControl(container, field);
                }
                var urlNameField = fieldNames.Where(f => f == "Name").FirstOrDefault();
                if (urlNameField != null)
                {
                    var field = fields[urlNameField];
                    AddControl(container, field);
                }

                // add the rest
                foreach (var fieldName in fieldNames)
                {
                    if (fieldName == "Name" || fieldName == "DisplayName")
                    {
                        continue;
                    }

                    var field = fields[fieldName];
                    AddControl(container, field);
                }

                if (AdvancedPanel != null && AdvancedPanel.Controls.Count > 0)
                {
                    var advancedButton = Page.LoadControl("/Root/System/SystemPlugins/Controls/AdvancedPanelButton.ascx") as AdvancedPanelButton;

                    if (advancedButton != null)
                    {
                        container.Add(advancedButton);
                        container.Add(AdvancedPanel);

                        advancedButton.AdvancedPanel = AdvancedPanel;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteException(ex);
            }
        }
예제 #3
0
        private object[] DefaultValueTest(string[][] data)
        {
            var result         = new List <object>();
            var defaultStrings = new string[fieldNames.Count];

            //var expectedValues = new string[fieldNames.Count];

            foreach (var record in data)
            {
                //new string[]{"ShortTextField", "Default short text value.", "Default short text value."},
                string fieldName  = record[0];
                int    fieldIndex = fieldNames.IndexOf(fieldName);
                defaultStrings[fieldIndex] = String.Concat("<DefaultValue>", record[1], "</DefaultValue>");
                //expectedValues[fieldIndex] = record[2];
            }

            //----
            var ctd = String.Format(ctdFormat, defaultStrings);

            ContentTypeInstaller.InstallContentType(ctd);

            //----
            var contentTypeName = "DefaultValueTesterContentType";
            var contentType     = ContentType.GetByName(contentTypeName);

            //==== create a new Content
            var    newContent = Content.CreateNew(contentTypeName, _testRoot, "Content1");
            object fieldValue;

            for (int i = 0; i < data.Length; i++)
            {
                var    record    = data[i];
                string fieldName = record[0];
                var    field     = newContent.Fields[fieldName];
                try
                {
                    //==== simulating contentview:
                    //-- create control
                    FieldControl control    = GenericFieldControl.CreateDefaultFieldControl(field);
                    var          controlAcc = new FieldControlAccessor(control);
                    //-- RegisterFieldControl
                    controlAcc.ConnectToField(field);
                    //-- SetData
                    controlAcc.SetDataInternal();
                    //-- Post default value
                    field.SetData(control.GetData());
                    //-- check posted value
                    fieldValue = newContent[fieldName];
                    result.Add(fieldValue);
                }
                catch (Exception e)
                {
                    Exception     ee = e;
                    StringBuilder sb = new StringBuilder();
                    while (ee != null)
                    {
                        sb.Append(ee.Message);
                        ee = ee.InnerException;
                    }
                    result.Add(String.Concat(fieldName, "{Exception:\"", sb.ToString(), "\"}"));
                }
            }

            return(result.ToArray());
        }
예제 #4
0
        protected override void OnViewInitialize()
        {
            this.ViewControlFrameMode = FieldControlFrameMode.ShowFrame;

            ControlCollection container;
            var c = this.FindControl("GenericControls") ?? this;

            try
            {
                var ivc = c.FindControl("InlineViewContent");
                if (ivc == null)
                {
                    return;
                }

                container = ivc.Controls; // c.Controls;
                container.Clear();

                var fields = this.Content.Fields;
                _id = 0;
                var fieldNames = GenericFieldControl.GetVisibleFieldNames(this.Content, ViewMode);

                // name and urlname comes first
                var nameField = fieldNames.Where(f => f == "DisplayName").FirstOrDefault();
                if (nameField != null)
                {
                    var field = fields[nameField];
                    AddControl(container, field);
                }
                var urlNameField = fieldNames.Where(f => f == "Name").FirstOrDefault();
                if (urlNameField != null)
                {
                    var field = fields[urlNameField];
                    AddControl(container, field);
                }

                // add the rest
                foreach (var fieldName in fieldNames)
                {
                    if (fieldName == "Name" || fieldName == "DisplayName")
                    {
                        continue;
                    }

                    var field = fields[fieldName];
                    AddControl(container, field);
                }

                if (AdvancedPanel != null && AdvancedPanel.Controls.Count > 0)
                {
                    var controlPath = string.Empty;
                    // Try to load the control from under the skin.
                    // If it is not found there, the fallback is the old global path.
                    if (!SkinManager.TryResolve(SkinControlPath, out controlPath))
                    {
                        controlPath = GlobalControlPath;
                    }

                    var advancedButton = Page.LoadControl(controlPath) as AdvancedPanelButton;

                    if (advancedButton != null)
                    {
                        container.Add(advancedButton);
                        container.Add(AdvancedPanel);

                        advancedButton.AdvancedPanel = AdvancedPanel;
                    }
                }
            }
            catch (Exception ex)
            {
                SnLog.WriteException(ex);
            }
        }