public static IHtmlString FormActionLinkListItem(this HtmlHelper html, ViewActionLink viewActionLink, ActionButtonStyle actionButtonStyle) { var listItem = new TagBuilder("li"); listItem.Attributes["role"] = "group"; var link = html.FormActionLink(viewActionLink, actionButtonStyle); listItem.InnerHtml += link.ToString(); return(new HtmlString(listItem.ToString())); }
private void DisableActionLinkBasedOnFilterCriteria(OrganizationServiceContext context, ViewActionLink link, string entityName, Guid entityId) { if (link == null || string.IsNullOrEmpty(link.FilterCriteria)) { return; } // The condition for the filter on primary key var primaryAttributeCondition = new Condition { Attribute = entityName + "id", Operator = ConditionOperator.Equal, Value = entityId }; // Primary key filter var primaryAttributeFilter = new Filter { Conditions = new[] { primaryAttributeCondition }, Type = LogicalOperator.And }; Fetch fetch = null; try { fetch = Fetch.Parse(link.FilterCriteria); } catch (Exception ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, ex.Message); return; } if (fetch.Entity == null) { ADXTrace.Instance.TraceError(TraceCategory.Application, "Fetch XML query is not valid. Entity can't be Null."); return; } // Set number of fields to fetch to 0. fetch.Entity.Attributes = FetchAttribute.None; if (fetch.Entity.Filters == null) { fetch.Entity.Filters = new List <Filter>(); } // Add primary key filter fetch.Entity.Filters.Add(primaryAttributeFilter); RetrieveMultipleResponse response; try { response = (RetrieveMultipleResponse)context.Execute(new RetrieveMultipleRequest { Query = fetch.ToFetchExpression() }); } catch (Exception ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, ex.Message); return; } link.Enabled = response.EntityCollection.Entities.Count > 0; }
private static void AddActionLinkToSet(List <ViewActionLink> topItemActionLinks, List <ViewActionLink> bottomItemActionLinks, ViewActionLink actionLink) { if (actionLink.ActionButtonPlacement == JsonConfiguration.ActionButtonPlacement.AboveForm) { topItemActionLinks.Add(actionLink); } else { bottomItemActionLinks.Add(actionLink); } }
private static IEnumerable <DisabledItemActionLink> AddActionLinkToDisabledActionLinksList(OrganizationServiceContext context, EntityMetadata entityMetadata, ViewActionLink link, EntityRecord[] records) { var disabledLinks = new List <DisabledItemActionLink>(); if (string.IsNullOrEmpty(link.FilterCriteria) || records == null || !records.Any()) { return(disabledLinks); } // Get Entity Record IDs for filter. var ids = records.Select(record => record.Id).Cast <object>().ToList(); // The condition for the filter on primary key var primaryAttributeCondition = new Condition { Attribute = entityMetadata.PrimaryIdAttribute, Operator = ConditionOperator.In, Values = ids }; // Primary key filter var primaryAttributeFilter = new Filter { Conditions = new[] { primaryAttributeCondition }, Type = LogicalOperator.And }; Fetch fetch = null; try { fetch = Fetch.Parse(link.FilterCriteria); } catch (Exception ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, ex.Message); return(disabledLinks); } if (fetch.Entity == null) { ADXTrace.Instance.TraceError(TraceCategory.Application, "Fetch XML query is not valid. Entity can't be Null."); return(disabledLinks); } // Set number of fields to fetch to 0. fetch.Entity.Attributes = FetchAttribute.None; if (fetch.Entity.Filters == null) { fetch.Entity.Filters = new List <Filter>(); } // Add primary key filter fetch.Entity.Filters.Add(primaryAttributeFilter); RetrieveMultipleResponse response; try { response = (RetrieveMultipleResponse)context.Execute(new RetrieveMultipleRequest { Query = fetch.ToFetchExpression() }); } catch (Exception ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, ex.Message); return(disabledLinks); } if (response == null) { return(disabledLinks); } disabledLinks.AddRange(from record in records where response.EntityCollection.Entities.All(entity => entity.Id != record.Id) select new DisabledItemActionLink(record.Id, link.FilterCriteriaId)); return(disabledLinks); }
public static IHtmlString FormActionLink(this HtmlHelper html, ViewActionLink viewActionLink, ActionButtonStyle actionButtonStyle) { TagBuilder link; if (actionButtonStyle == ActionButtonStyle.DropDown) { link = new TagBuilder("a"); link.Attributes["role"] = "menuitem"; link.Attributes["tabindex"] = "-1"; link.Attributes["title"] = ""; if (!string.IsNullOrEmpty(viewActionLink.ButtonCssClass)) { link.AddCssClass(viewActionLink.ButtonCssClass); } } else if (actionButtonStyle == ActionButtonStyle.ButtonGroup) { link = new TagBuilder("button"); link.Attributes["type"] = "button"; link.AddCssClass("btn"); link.AddCssClass(!string.IsNullOrEmpty(viewActionLink.ButtonCssClass) ? viewActionLink.ButtonCssClass : "btn-default"); } else { throw new InvalidDataException("ActionButtonStyle must be one of ButtonGroup or DropDown"); } link.InnerHtml += viewActionLink.Label; switch (viewActionLink.Type) { case LinkActionType.Activate: link.AddCssClass("activate-link"); break; case LinkActionType.ActivateQuote: link.AddCssClass("activate-quote-link"); break; case LinkActionType.CalculateOpportunity: link.AddCssClass("calculate-opportunity-link"); break; case LinkActionType.CancelCase: link.AddCssClass("cancel-case-link"); break; case LinkActionType.CloseIncident: link.AddCssClass("close-case-link"); var closeCaseActionLink = viewActionLink as CloseIncidentActionLink; link.MergeAttribute("data-resolution", closeCaseActionLink.DefaultResolution); link.MergeAttribute("data-description", closeCaseActionLink.DefaultResolutionDescription); break; case LinkActionType.ConvertOrder: link.AddCssClass("convert-order-link"); break; case LinkActionType.ConvertQuote: link.AddCssClass("convert-quote-link"); break; case LinkActionType.Deactivate: link.AddCssClass("deactivate-link"); break; case LinkActionType.Delete: link.AddCssClass("delete-link"); break; case LinkActionType.GenerateQuoteFromOpportunity: link.AddCssClass("generate-quote-from-opportunity-link"); break; case LinkActionType.LoseOpportunity: link.AddCssClass("lose-opportunity-link"); break; case LinkActionType.QualifyLead: link.AddCssClass("qualify-lead-link"); break; case LinkActionType.ReopenCase: link.AddCssClass("reopen-case-link"); break; case LinkActionType.ResolveCase: link.AddCssClass("resolve-case-link"); break; case LinkActionType.SetOpportunityOnHold: link.AddCssClass("set-opportunity-on-hold-link"); break; case LinkActionType.ReopenOpportunity: link.AddCssClass("reopen-opportunity-link"); break; case LinkActionType.UpdatePipelinePhase: link.AddCssClass("update-pipeline-phase-link"); break; case LinkActionType.WinOpportunity: link.AddCssClass("win-opportunity-link"); break; case LinkActionType.Workflow: link.AddCssClass("workflow-link"); var workflowActionLink = viewActionLink as WorkflowActionLink; var id = workflowActionLink.Workflow.Id; link.MergeAttribute("data-workflowid", id.ToString()); if (workflowActionLink.CustomizeModal) { link.MergeAttribute("data-modal-confirmation", workflowActionLink.Confirmation); link.MergeAttribute("data-modal-title", workflowActionLink.Modal.Title); link.MergeAttribute("data-modal-primary-action", workflowActionLink.Modal.PrimaryButtonText); link.MergeAttribute("data-modal-cancel-action", workflowActionLink.Modal.CloseButtonText); } break; case LinkActionType.CreateRelatedRecord: link.AddCssClass("create-related-record-link"); link.MergeAttribute("data-filtercriteriaid", viewActionLink.FilterCriteriaId.ToString()); break; default: throw new Exception("LinkActionType is not a valid value"); } link.Attributes["href"] = viewActionLink.URL != null ? viewActionLink.URL.PathWithQueryString : null; link.MergeAttribute("data-url", viewActionLink.URL != null? viewActionLink.URL.PathWithQueryString : null); return(new HtmlString(link.ToString())); }