/// <summary> /// Gets Form controls that implement IFormPageBreak interface from "Body" placeholder /// </summary> private static IList <FormDraftControl> GetPageBreakControls(FormDraft form) { var behaviorResolver = ObjectFactory.Resolve <IControlBehaviorResolver>(); IList <FormDraftControl> orderedControls = new List <FormDraftControl>(); var bodyControls = form.Controls.Where(c => c.PlaceHolder == "Body").ToList(); var siblingId = Guid.Empty; while (bodyControls.Count > 0) { var currentControl = bodyControls.FirstOrDefault(c => c.SiblingId == siblingId); if (currentControl == null) { break; } bodyControls.Remove(currentControl); siblingId = currentControl.Id; orderedControls.Add(currentControl); } IList <FormDraftControl> pageBreakControls = new List <FormDraftControl>(); foreach (var control in orderedControls.Where(c => c.IsLayoutControl == false)) { var controlType = TypeResolutionService.ResolveType(behaviorResolver.GetBehaviorObjectType(control), false); if (controlType != null && controlType.ImplementsInterface(typeof(IFormPageBreak))) { pageBreakControls.Add(control); } } return(pageBreakControls); }
public IControlsContainer GetControlsContainer(Guid id) { Guid currentUserId = SecurityManager.GetCurrentUserId(); FormDraft formDraft = FManager.GetDrafts().Where(d => d.ParentForm.Id == id && d.Owner == currentUserId && d.IsTempDraft).SingleOrDefault <FormDraft>(); if (formDraft != null) { return(formDraft); } return(FManager.GetForm(id)); }
private void AppendFormControlsToPlaceholder(string formName, IList <Control> formControls, FormsManager formManager, FormDraft master, string containerId) { if (formControls != null && formControls.Any()) { Guid siblingId = Guid.Empty; int controlsCounter = 0; foreach (var control in formControls) { controlsCounter++; control.ID = string.Format(CultureInfo.InvariantCulture, formName + "_" + containerId + "_C" + controlsCounter.ToString(CultureInfo.InvariantCulture).PadLeft(3, '0')); var formControl = formManager.CreateControl <FormDraftControl>(control, containerId); formControl.SiblingId = siblingId; formControl.Caption = ObjectFactory.Resolve <IControlBehaviorResolver>().GetBehaviorObject(control).GetType().Name; siblingId = formControl.Id; master.Controls.Add(formControl); formControl.SetPersistanceStrategy(); } } }
/// <summary> /// Persists modified SerializedPages property /// </summary> private void SaveProperties(FormDraftControl controlData, FormsManager manager, FormDraft form) { WcfPropertyManager propManager = new WcfPropertyManager(); object formControl = manager.LoadControl(controlData); string parentPropertyPath = null; var property = propManager.GetProperties(formControl, controlData, -1, parentPropertyPath).Where(p => p.PropertyName == "SerializedPages").FirstOrDefault(); if (property != null) { property.PropertyValue = this.Model.SerializedPages; ControlPropertyService service = new ControlPropertyService(); service.SaveProperties(new WcfControlProperty[] { property }, controlData.Id.ToString(), null, form.Id.ToString(), "Form"); } }