public static TagBuilder FormActions(this HtmlHelper html, FormConfiguration formConfiguration, TagBuilder container) { var deleteActionLink = formConfiguration.DeleteActionLink; var closeCaseActionLink = formConfiguration.CloseIncidentActionLink; var resolveCaseActionLink = formConfiguration.ResolveCaseActionLink; var reopenCaseActionLink = formConfiguration.ReopenCaseActionLink; var cancelCaseActionLink = formConfiguration.CancelCaseActionLink; var qualifyLeadActionLink = formConfiguration.QualifyLeadActionLink; var convertQuoteActionLink = formConfiguration.ConvertQuoteToOrderActionLink; var convertOrderActionLink = formConfiguration.ConvertOrderToInvoiceActionLink; var calculateOpportunityActionLink = formConfiguration.CalculateOpportunityActionLink; var deactivateActionLink = formConfiguration.DeactivateActionLink; var activateActionLink = formConfiguration.ActivateActionLink; var activateQuoteActionLink = formConfiguration.ActivateQuoteActionLink; var opportunityOnHoldActionLink = formConfiguration.SetOpportunityOnHoldActionLink; var reopenOpportunityActionLink = formConfiguration.ReopenOpportunityActionLink; var winOpportunityActionLink = formConfiguration.WinOpportunityActionLink; var loseOpportunityActionLink = formConfiguration.LoseOpportunityActionLink; var generateQuoteFromOpportunityActionLink = formConfiguration.GenerateQuoteFromOpportunityActionLink; var updatePipelinePhaseAction = formConfiguration.UpdatePipelinePhaseActionLink; var createRelatedRecordAction = formConfiguration.CreateRelatedRecordActionLink; DisassociateActionLink disassociateAction = null; WorkflowActionLink firstWorkflow = null; List <string> actionLinks = new List <string> { }; foreach (var action in formConfiguration.TopFormActionLinks) { if (action is DeleteActionLink && deleteActionLink.Enabled) { var deleteHtml = html.FormActionLinkListItem(deleteActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(deleteHtml.ToString()); } if (action is CloseIncidentActionLink && closeCaseActionLink.Enabled) { var closeCaseHtml = html.FormActionLinkListItem(closeCaseActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(closeCaseHtml.ToString()); } if (action is ResolveCaseActionLink && resolveCaseActionLink.Enabled) { var resolveCaseHtml = html.FormActionLinkListItem(resolveCaseActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(resolveCaseHtml.ToString()); } if (action is ReopenCaseActionLink && reopenCaseActionLink.Enabled) { var reopenCaseHtml = html.FormActionLinkListItem(reopenCaseActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(reopenCaseHtml.ToString()); } if (action is CancelCaseActionLink && cancelCaseActionLink.Enabled) { var cancelCaseHtml = html.FormActionLinkListItem(cancelCaseActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(cancelCaseHtml.ToString()); } if (action is QualifyLeadActionLink && qualifyLeadActionLink.Enabled) { var qualifyLeadHtml = html.FormActionLinkListItem(qualifyLeadActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(qualifyLeadHtml.ToString()); } if (action is ConvertQuoteToOrderActionLink && convertQuoteActionLink.Enabled) { var convertQuoteActionHtml = html.FormActionLinkListItem(convertQuoteActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(convertQuoteActionHtml.ToString()); } if (action is ConvertOrderToInvoiceActionLink && convertOrderActionLink.Enabled) { var convertOrderHtml = html.FormActionLinkListItem(convertOrderActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(convertOrderHtml.ToString()); } if (action is CalculateOpportunityActionLink && calculateOpportunityActionLink.Enabled) { var calculateOpportunityHtml = html.FormActionLinkListItem(calculateOpportunityActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(calculateOpportunityHtml.ToString()); } if (action is DeactivateActionLink && deactivateActionLink.Enabled) { var deactivateHtml = html.FormActionLinkListItem(deactivateActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(deactivateHtml.ToString()); } if (action is ActivateActionLink && activateActionLink.Enabled) { var activateHtml = html.FormActionLinkListItem(activateActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(activateHtml.ToString()); } if (action is ActivateQuoteActionLink && activateQuoteActionLink.Enabled) { var activateQuoteHtml = html.FormActionLinkListItem(activateQuoteActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(activateQuoteHtml.ToString()); } if (action is SetOpportunityOnHoldActionLink && opportunityOnHoldActionLink.Enabled) { var setOpportunityOnHoldHtml = html.FormActionLinkListItem(opportunityOnHoldActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(setOpportunityOnHoldHtml.ToString()); } if (action is ReopenOpportunityActionLink && reopenOpportunityActionLink.Enabled) { var reopenOpportunityHtml = html.FormActionLinkListItem(reopenOpportunityActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(reopenOpportunityHtml.ToString()); } if (action is WinOpportunityActionLink && winOpportunityActionLink.Enabled) { var winOpportunityHtml = html.FormActionLinkListItem(winOpportunityActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(winOpportunityHtml.ToString()); } if (action is LoseOpportunityActionLink && loseOpportunityActionLink.Enabled) { var resolveCaseHtml = html.FormActionLinkListItem(loseOpportunityActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(resolveCaseHtml.ToString()); } if (action is GenerateQuoteFromOpportunityActionLink && generateQuoteFromOpportunityActionLink.Enabled) { var generateQuoteFromOpportunityHtml = html.FormActionLinkListItem(generateQuoteFromOpportunityActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(generateQuoteFromOpportunityHtml.ToString()); } if (action is UpdatePipelinePhaseActionLink && updatePipelinePhaseAction.Enabled) { var updatePipelinePhaseHtml = html.FormActionLinkListItem(updatePipelinePhaseAction, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(updatePipelinePhaseHtml.ToString()); } if (action is WorkflowActionLink && action.Enabled) { var workflowHtml = html.FormActionLinkListItem(action as WorkflowActionLink, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(workflowHtml.ToString()); firstWorkflow = action as WorkflowActionLink; } if (action is DisassociateActionLink && action.Enabled) { disassociateAction = action as DisassociateActionLink; var disassociateHtml = html.FormActionLinkListItem(disassociateAction, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(disassociateHtml.ToString()); } if (action is CreateRelatedRecordActionLink && action.Enabled) { var createRelatedRecordHtml = html.FormActionLinkListItem(createRelatedRecordAction, formConfiguration.ActionButtonStyle ?? ActionButtonStyle.DropDown); actionLinks.Add(createRelatedRecordHtml.ToString()); } } if (formConfiguration.ActionButtonStyle == ActionButtonStyle.ButtonGroup) { foreach (var link in actionLinks) { container.InnerHtml += link; } } else //if (formConfiguration.ActionButtonStyle == ActionButtonStyle.DropDown) { //Create the links as a dropdownmenu var dropDownMenu = html.FormActionDropDownMenu(); foreach (var link in actionLinks) { dropDownMenu.InnerHtml += link; } //the meat of the dropdown var dropDown = html.FormActionDropDown(formConfiguration); //add the items to the dropdown dropDown.InnerHtml += dropDownMenu.ToString(); //add the dropdown to the container container.InnerHtml += dropDown; } html.ActionModalWindows(container, deleteActionLink, qualifyLeadActionLink, closeCaseActionLink, resolveCaseActionLink, reopenCaseActionLink, cancelCaseActionLink, convertQuoteActionLink, convertOrderActionLink, calculateOpportunityActionLink, deactivateActionLink, activateActionLink, activateQuoteActionLink, opportunityOnHoldActionLink, reopenOpportunityActionLink, winOpportunityActionLink, loseOpportunityActionLink, generateQuoteFromOpportunityActionLink, updatePipelinePhaseAction, firstWorkflow, disassociateAction, createRelatedRecordAction); return(container); }