internal static ElementDescriptor ViewObjectField(this HtmlHelper html, PropertyContext propertyContext) { return new ElementDescriptor { TagType = "div", Label = html.GetLabel(propertyContext), Value = html.GetViewValue(propertyContext), Attributes = new RouteValueDictionary(new { id = propertyContext.GetFieldId(), @class = propertyContext.GetFieldClass() }) }; }
internal static ElementDescriptor EditObjectField(this HtmlHelper html, PropertyContext propertyContext, bool noFinder = false, IList<ElementDescriptor> childElements = null, string idToAddTo = null) { string editValue = html.GetEditValue(propertyContext, childElements, propertyContext.Property.Id == idToAddTo, noFinder); return new ElementDescriptor { TagType = "div", Label = html.GetLabel(propertyContext), Value = editValue, Attributes = new RouteValueDictionary(new { id = propertyContext.GetFieldId(), @class = propertyContext.GetFieldClass() }) }; }
private static string GetChildCollection(this HtmlHelper html, PropertyContext propertyContext) { string displayType = html.ViewData.ContainsKey(propertyContext.GetFieldId()) ? (string)html.ViewData[propertyContext.GetFieldId()] : String.Empty; bool renderEagerly = RenderEagerly(propertyContext.Property); var tag = new TagBuilder("div"); if (displayType == IdConstants.TableDisplayFormat || (String.IsNullOrWhiteSpace(displayType) && renderEagerly)) { tag.AddCssClass(IdConstants.CollectionTableName); tag.InnerHtml += html.GetCollectionAsTable(propertyContext); } else if (displayType == IdConstants.ListDisplayFormat) { tag.AddCssClass(IdConstants.CollectionListName); tag.InnerHtml += html.GetCollectionAsList(propertyContext); } else { tag.AddCssClass(IdConstants.CollectionSummaryName); tag.InnerHtml += html.GetCollectionAsSummary(propertyContext); } return tag.ToString(); }
private static string GetCollectionDisplayLinks(this HtmlHelper html, PropertyContext propertyContext) { IDictionary<string, object> collectionStatuses = GetDisplayStatuses(html); string collectionId = propertyContext.GetFieldId(); string actionName = propertyContext.IsEdit ? IdConstants.EditObjectAction : IdConstants.ViewAction; if (propertyContext.IsEdit || propertyContext.Target.IsTransient) { return GetSubmitButton(IdConstants.SummaryButtonClass, MvcUi.Summary, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.SummaryDisplayFormat }, { "editMode", propertyContext.IsEdit } }) + GetSubmitButton(IdConstants.ListButtonClass, MvcUi.List, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.ListDisplayFormat }, { "editMode", propertyContext.IsEdit } }) + GetSubmitButton(IdConstants.TableButtonClass, MvcUi.Table, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.TableDisplayFormat }, { "editMode", propertyContext.IsEdit } }); } var formTag = new TagBuilder("form"); formTag.MergeAttribute("method", "post"); formTag.MergeAttribute("action", html.GenerateUrl(actionName, propertyContext.OriginalTarget.Object)); formTag.InnerHtml += html.Hidden(html.IdHelper().GetDisplayFormatId(collectionId), ToNameValuePairs(collectionStatuses)); formTag.InnerHtml += GetSubmitButton(IdConstants.SummaryButtonClass, MvcUi.Summary, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.SummaryDisplayFormat }, { "editMode", propertyContext.IsEdit } }); formTag.InnerHtml += GetSubmitButton(IdConstants.ListButtonClass, MvcUi.List, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.ListDisplayFormat }, { "editMode", propertyContext.IsEdit } }); formTag.InnerHtml += GetSubmitButton(IdConstants.TableButtonClass, MvcUi.Table, IdConstants.RedisplayAction, new RouteValueDictionary { { collectionId, IdConstants.TableDisplayFormat }, { "editMode", propertyContext.IsEdit } }); formTag.InnerHtml = formTag.InnerHtml.WrapInDivTag(); return formTag.ToString(); }
private static string GetObjectDisplayLinks(this HtmlHelper html, PropertyContext propertyContext) { IDictionary<string, object> objectDisplayStatuses = GetDisplayStatuses(html); string actionName = propertyContext.IsEdit ? IdConstants.EditObjectAction : IdConstants.ViewAction; if (propertyContext.IsEdit || propertyContext.Target.IsTransient) { // for the moment no expand and delete on editable views return ""; } var formTag = new TagBuilder("form"); formTag.MergeAttribute("method", "post"); object objectToView; string objectId; //for ajax use the property if (html.ViewContext.RequestContext.HttpContext.Request.IsAjaxRequest()) { objectId = ""; objectToView = propertyContext.GetValue(html.Facade()).Object; } else { objectToView = propertyContext.OriginalTarget.Object; objectId = propertyContext.GetFieldId(); } formTag.MergeAttribute("action", html.GenerateUrl(actionName, objectToView)); formTag.InnerHtml += html.Hidden(html.IdHelper().GetDisplayFormatId(objectId), ToNameValuePairs(objectDisplayStatuses)); formTag.InnerHtml += GetSubmitButton(IdConstants.MinButtonClass, MvcUi.Collapse, IdConstants.RedisplayAction, new RouteValueDictionary { { objectId, IdConstants.MinDisplayFormat }, { "editMode", propertyContext.IsEdit } }); formTag.InnerHtml += GetSubmitButton(IdConstants.MaxButtonClass, MvcUi.Expand, IdConstants.RedisplayAction, new RouteValueDictionary { { objectId, IdConstants.MaxDisplayFormat }, { "editMode", propertyContext.IsEdit } }); formTag.InnerHtml = formTag.InnerHtml.WrapInDivTag(); return formTag.ToString(); }
private static string GetTextOrRefFieldValue(this HtmlHelper html, PropertyContext propertyContext, IObjectFacade valueNakedObject, bool inTable = false) { if (valueNakedObject.Specification.IsCollection) { valueNakedObject.Resolve(); } string link = "{0}"; if (!propertyContext.Property.Specification.IsParseable && !propertyContext.Property.IsCollection) { string displayType = html.ViewData.ContainsKey(propertyContext.GetFieldId()) ? (string)html.ViewData[propertyContext.GetFieldId()] : String.Empty; bool renderEagerly = RenderEagerly(propertyContext.Property); link = html.ObjectLink(link, IdConstants.ViewAction, valueNakedObject.Object) + (inTable ? "" : html.GetObjectDisplayLinks(propertyContext)); if (displayType == IdConstants.MaxDisplayFormat || renderEagerly) { var inlineNakedObject = propertyContext.GetValue(html.Facade()); bool anyEditableFields; TagBuilder elementSet = ElementDescriptor.BuildElementSet(html.ViewObjectFields(inlineNakedObject, propertyContext, x => true, null, out anyEditableFields)); html.AddAjaxDataUrlsToElementSet(inlineNakedObject, elementSet, propertyContext); elementSet.AddCssClass(IdConstants.FieldContainerName); elementSet.GenerateId(html.IdHelper().GetFieldContainerId(inlineNakedObject)); link = link + html.GetEditButtonIfRequired(anyEditableFields, inlineNakedObject) + elementSet; } } string title = html.GetDisplayTitle(propertyContext.Property, valueNakedObject); if (propertyContext.Property.NumberOfLines > 1) { int typicalLength = propertyContext.Property.TypicalLength; int width = propertyContext.Property.Width; typicalLength = typicalLength == 0 ? 20 : typicalLength; width = width == 0 ? typicalLength : width; if (inTable) { // truncate to width if (title.Length > width) { const string elipsis = "..."; int length = width - elipsis.Length; title = title.Substring(0, length > 0 ? length : 1) + elipsis; } } } return String.Format(link, title); }