Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of ContentEditorField class.
        /// </summary>
        /// <param name="form">The form object.</param>
        /// <param name="field">The content field.</param>
        public ContentEditorField(ContentFormDecorator form, ContentField field)
        {
            this.ParentForm = form;
            this.Parent = form.Parent;
            field.CopyTo(this, "Parent");
            Template = new ContentTemplate();

            switch ((ContentFormTypes)form.FormType)
            {
                case ContentFormTypes.Display:
                    if (field.HasDisplayTemlpate)
                        Template.Source = field.DisplayTemplate;
                    break;
                case ContentFormTypes.Activity:
                    if (field.HasActivityTemplate)
                        Template.Source = field.ActivityTemplate;
                    break;
                case ContentFormTypes.Edit:
                    if (field.HasEditTemlpate)
                        Template.Source = field.EditTemplate;
                    break;
                case ContentFormTypes.New:
                    if (field.HasNewTemlpate)
                        Template.Source = field.NewTemplate;
                    break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of ContentEditorField class.
        /// </summary>
        /// <param name="form">The form object.</param>
        /// <param name="field">The content field.</param>
        public ContentEditorField(ContentFormDecorator form, ContentField field)
        {
            this.ParentForm = form;
            this.Parent     = form.Parent;
            field.CopyTo(this, "Parent");
            Template = new ContentTemplate();

            switch ((ContentFormTypes)form.FormType)
            {
            case ContentFormTypes.Display:
                if (field.HasDisplayTemlpate)
                {
                    Template.Source = field.DisplayTemplate;
                }
                break;

            case ContentFormTypes.Activity:
                if (field.HasActivityTemplate)
                {
                    Template.Source = field.ActivityTemplate;
                }
                break;

            case ContentFormTypes.Edit:
                if (field.HasEditTemlpate)
                {
                    Template.Source = field.EditTemplate;
                }
                break;

            case ContentFormTypes.New:
                if (field.HasNewTemlpate)
                {
                    Template.Source = field.NewTemplate;
                }
                break;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Converts the content form url virtual (relative) path to an application absolute path.
        /// </summary>
        /// <param name="helper">The url helper object.</param>
        /// <param name="form">The form object.</param>
        /// <param name="urlparams"></param>
        /// <returns>A absolute url of content form.</returns>
        public static string Content(this UrlHelper helper, ContentFormDecorator form, params object[] urlparams)
        {
            if (form == null)
                throw new ArgumentNullException("form");

            var url = form.Url(urlparams);
            if (!string.IsNullOrEmpty(url))
                return helper.Content(url);
            return "javascript:void(0);";
        }
Exemplo n.º 4
0
        /// <summary>
        /// Renders the data item with form item template.
        /// </summary>
        /// <param name="html">The html helper object.</param>
        /// <param name="form">The form object.</param>
        /// <param name="dataItem">The data item object.</param>
        /// <returns></returns>
        public static HelperResult RenderFormTemplate(this HtmlHelper html, ContentFormDecorator form, ContentDataItemDecorator dataItem = null)
        {
            return new HelperResult(writer =>
            {
                var body = form.Body;
                var _contentType = body.ContentType;

                #region razor template
                if (_contentType == TemplateContentTypes.Razor)
                {
                    var viewFile = string.Format("_form_{0}_tmpl.cshtml", form.FormTypeString.ToLower());
                    var viewUrl = TemplateHelper.SaveAsView(form.Parent, body.Text, viewFile);
                    html.RenderPartial(viewUrl, dataItem);
                    return;
                }
                #endregion

                if (_contentType == TemplateContentTypes.Html)
                {
                    throw new NotImplementedException();
                }

                #region xml template

                if (_contentType == TemplateContentTypes.Xml)
                {
                    var doc = XDocument.Parse(body.Text);

                    foreach (var element in doc.Elements())
                    {
                        if (element.Name == "label")
                        {
                            var nameAttr = element.StrAttr("name");
                            var field = form.Parent.Fields[nameAttr];
                            if (field != null)
                                html.ViewContext.Writer.Write(html.Label(field));
                            continue;
                        }

                        if (element.Name == "notes")
                        {
                            var nameAttr = element.StrAttr("name");
                            var field = form.Parent.Fields[nameAttr];
                            if (field != null)
                                html.ViewContext.Writer.Write(html.Notes(field));
                            continue;
                        }

                        if (element.Name.Equals("col"))
                        {
                            var nameAttr = element.StrAttr("name");
                            var field = form.Fields[nameAttr];
                            var hasLabel = element.BoolAttr("hasLabel");
                            var hasNotes = element.BoolAttr("hasNotes");

                            if (field != null)
                            {
                                switch ((ContentFormTypes)form.FormType)
                                {
                                    case ContentFormTypes.Display:
                                        html.ForDisp(field, dataItem, hasLabel);
                                        break;
                                    case ContentFormTypes.Edit:
                                        html.ForEdit(field, dataItem, hasLabel, hasNotes);
                                        break;
                                    case ContentFormTypes.New:
                                        html.ForNew(field, hasLabel, hasNotes);
                                        break;
                                }
                            }
                        }

                        if (element.Name == "html")
                        {
                            writer.Write(element.InnerXml());
                            continue;
                        }
                    }
                }

                #endregion

                #region xslt template

                if (_contentType == TemplateContentTypes.Xslt)
                {
                    throw new NotImplementedException();
                }

                #endregion

            });
        }
Exemplo n.º 5
0
        /// <summary>
        /// Render the form html to response output by specified the form object.This method will auto determine which mode to render.
        /// </summary>
        /// <param name="helper">The html helper object.</param>
        /// <param name="form">The content form object.</param>
        /// <param name="model">The data item for edit,display and activity form</param>
        /// <returns></returns>
        public static HelperResult RenderForm(this HtmlHelper helper, ContentFormDecorator form, ContentDataItemDecorator model = null)
        {
            return new HelperResult(writer =>
            {
                var server = helper.ViewContext.HttpContext.Server;
                var list = form.Parent;
                var defaultViewFile = "";
                var format = "~/content/types/base/forms/{0}.cshtml";

                switch (form.FormType)
                {
                    case (int)ContentFormTypes.New:
                        defaultViewFile = string.Format(format, "_new");
                        break;
                    case (int)ContentFormTypes.Edit:
                        defaultViewFile = string.Format(format, "_edit");
                        break;
                    case (int)ContentFormTypes.Activity:
                        defaultViewFile = string.Format(format, "_activity");
                        break;
                    default:
                        defaultViewFile = string.Format(format, "_detail");
                        break;
                }

                var body = form.Body;
                if (form.HasTemplate)
                {
                    //The form must be has template
                    if (!string.IsNullOrEmpty(body.Source))
                    {
                        #region file template
                        var viewFile = list.Package.ResolveUri(form.Body.Source);
                        if (!File.Exists(server.MapPath(viewFile)))
                        {
                            viewFile = defaultViewFile;
                        }
                        #endregion

                        if (model != null)
                            helper.RenderPartial(viewFile, model, helper.ViewData);
                        else
                            helper.RenderPartial(viewFile, helper.ViewData);
                    }
                    else
                    {
                        helper.RenderFormTemplate(form, model);
                    }
                }
                else
                {
                    //The form has no any template definition
                    if (model != null)
                        helper.RenderPartial(defaultViewFile, model, helper.ViewData);
                    else
                        helper.RenderPartial(defaultViewFile, helper.ViewData);
                }
            });
        }
Exemplo n.º 6
0
 /// <summary>
 /// Render the form html to repsonse by specified the form object for query result item.
 /// </summary>
 /// <remarks>
 /// Supports for 3.0.3
 /// </remarks>
 /// <param name="helper">The html helper object.</param>
 /// <param name="form">The content form object.</param>
 /// <param name="queryResultItem">The query result item.</param>
 /// <returns></returns>
 public static HelperResult RenderForm(this HtmlHelper helper, ContentFormDecorator form, ContentQueryResultItem queryResultItem)
 {
     return RenderForm(helper, form, queryResultItem.RawItem);
 }
Exemplo n.º 7
0
 /// <summary>
 /// Render fields elements to response output by specified form and item object.
 /// </summary>
 /// <param name="helper">The html helper object.</param>
 /// <param name="form">The form object.</param>
 /// <param name="item">The data item to render.</param>
 public static void RenderFields(this HtmlHelper helper, ContentFormDecorator form, ContentDataItemDecorator item = null)
 {
     foreach (var f in form.Fields)
     {
         switch ((ContentFormTypes)form.FormType)
         {
             case ContentFormTypes.New:
                 helper.ForNew(f);
                 break;
             case ContentFormTypes.Edit:
                 helper.ForEdit(f, item);
                 break;
             case ContentFormTypes.Activity:
                 helper.ForAct(f, item, null);
                 break;
             default:
                 helper.ForDisp(f, item, null);
                 break;
         }
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// Create a new web page by specified content form.
 /// </summary>
 /// <param name="form">The content form object.</param>
 /// <param name="parentId">The parent page id.</param>
 /// <param name="title">The page title</param>
 /// <param name="desc">The page description</param>
 /// <returns>A web page decorator object that wrapps the web page model.</returns>
 public WebPageDecorator CreatePage(ContentFormDecorator form, int parentId = 0, string title = "", string desc = "")
 {
     throw new NotImplementedException();
 }
Exemplo n.º 9
0
        /// <summary>
        /// Initializes a new instance of the ContentEditorFieldCollection class.
        /// </summary>
        /// <param name="context">The data context.</param>
        /// <param name="parent">The content form object.</param>
        public ContentEditorFieldCollection(IDataContext context, ContentFormDecorator parent)
        {
            this.DataContext = context;
            this.Parent      = parent;

            if (string.IsNullOrEmpty(this.Parent.Model.FieldsXml))
            {
                var fields = parent.Parent.Fields;
                foreach (var f in fields)
                {
                    this.Add(new ContentEditorField(parent, f));
                }
            }
            else
            {
                var element = XElement.Parse(parent.Model.FieldsXml);

                foreach (var fieldElement in element.Elements())
                {
                    var ns   = fieldElement.GetDefaultNamespace();
                    var _ref = parent.Parent.Fields[fieldElement.StrAttr("name")];
                    if (_ref == null)
                    {
                        continue;
                    }
                    var _editor = new ContentEditorField(parent, _ref);
                    _editor.IsCaption = fieldElement.BoolAttr("caption");
                    _editor.ShowLabel = fieldElement.BoolAttr("showLabel");

                    if (fieldElement.HasAttributes && fieldElement.Attribute("hidden") != null)
                    {
                        _editor.IsHidden = fieldElement.BoolAttr("hidden");
                    }

                    if (fieldElement.HasElements && fieldElement.Element(ns + "tmpl") != null)
                    {
                        _editor.Template = new ContentTemplate(fieldElement.Element(ns + "tmpl").OuterXml());
                    }
                    else
                    {
                        switch ((ContentFormTypes)this.Parent.FormType)
                        {
                        case ContentFormTypes.Display:
                            _editor.Template = new ContentTemplate()
                            {
                                Source = _editor.DisplayTemplate
                            };
                            break;

                        case ContentFormTypes.Activity:
                            _editor.Template = new ContentTemplate()
                            {
                                Source = _editor.ActivityTemplate
                            };
                            break;

                        case ContentFormTypes.Edit:
                            _editor.Template = new ContentTemplate()
                            {
                                Source = _editor.EditTemplate
                            };
                            break;

                        case ContentFormTypes.New:
                            _editor.Template = new ContentTemplate()
                            {
                                Source = _editor.NewTemplate
                            };
                            break;
                        }
                    }
                    this.Add(_editor);
                }
            }
        }