/*------------------------------------------------------------------------------------------------------- ** Constructors **-----------------------------------------------------------------------------------------------------*/ public CheckBoxContentControl(ApplicationField ApplicationField) : base(ApplicationField) { XmlDocument xml = new XmlDocument(); xml.LoadXml(ApplicationField.Parameters[0]); XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xml.NameTable); namespaceManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); namespaceManager.AddNamespace("w14", "http://schemas.microsoft.com/office/word/2010/wordml"); XmlNodeList xnList = xml.SelectNodes("/w:sdt/w:sdtPr/w14:checkbox", namespaceManager); foreach (XmlNode xn in xnList) { foreach (XmlNode subnode in xn.ChildNodes) { switch (subnode.LocalName) { case "checked": if (subnode.Attributes["w14:val"] != null) _bChecked = ((Convert.ToInt32(subnode.Attributes["w14:val"].Value) != 0)); break; } } } }
/// <summary> /// Adds a new field to an app. /// <para>Podio API Reference: https://developers.podio.com/doc/applications/get-app-field-22353 </para> /// </summary> /// <example> /// <![CDATA[ /// //Example Usage: Adding a new text field. /// /// var applicationField = new ApplicationField(); /// applicationField.Type = "text"; /// applicationField.Config.Label = "New text field"; /// applicationField.Config.Settings = new Dictionary<string, object> /// { /// {"size", "large"} /// }; /// podio.ApplicationService.AddNewAppField(APP_ID, applicationField); /// ]]> /// </example> /// <param name="appId"></param> /// <param name="field"></param> public async Task <int> AddNewAppField(int appId, ApplicationField field) { string url = string.Format("/app/{0}/field/", appId); dynamic response = await _podio.PostAsync <dynamic>(url, field); return((int)response["field_id"]); }
private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e) { // cast the field to an ApplicationField ApplicationField field = e.TextField as ApplicationField; if (field != null) { // check whether the field is a checkbox field if ((field.TypeName == "FORMCHECKBOX")) { // create a new adapter field FormCheckBox chkb = new FormCheckBox(field); if (chkb.Enabled == false) { return; } // change the checked state if (field.Text == UNCHECKED) { chkb.Checked = true; chkb.Text = CHECKED; } else if (field.Text == CHECKED) { chkb.Checked = false; chkb.Text = UNCHECKED; } } } }
/*------------------------------------------------------------------------------------------------------- ** Constructors **-----------------------------------------------------------------------------------------------------*/ public DropDownListContentControl(ApplicationField ApplicationField) : base(ApplicationField) { _lstListItems = new List<DropDownListItem>(); XmlDocument xml = new XmlDocument(); xml.LoadXml(ApplicationField.Parameters[0]); XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xml.NameTable); namespaceManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); XmlNodeList xnList = xml.SelectNodes("/w:sdt/w:sdtPr/w:dropDownList", namespaceManager); foreach (XmlNode xn in xnList) { foreach (XmlNode subnode in xn.ChildNodes) { switch (subnode.LocalName) { case "listItem": DropDownListItem listItem = new DropDownListItem(); if (subnode.Attributes["w:value"] != null) listItem.Value = subnode.Attributes["w:value"].Value; if (subnode.Attributes["w:displayText"] != null) listItem.DisplayText = subnode.Attributes["w:displayText"].Value; _lstListItems.Add(listItem); break; } } } }
/// <summary> /// Makes a mailmerge field adapter from an application field if possible. /// Returns null if field is not a MERGEFIELD. /// </summary> internal static MergeField MakeAdapterFrom(ApplicationField fld) { switch (fld.TypeName) { case MergeField.TYPE_NAME: return(new MergeField(fld)); } return(null); }
/// <summary> /// Checks if an application field lies inside any block in a list of merge blocks. /// </summary> public static bool IsInside(ApplicationField field, List <MergeBlock> blocks) { foreach (var block in blocks) { if (IsInside(field, block)) { return(true); } } return(false); }
/// <summary> /// Updates the configuration of an app field. The type of the field cannot be updated, only the configuration. /// <para>Supply the application object with AppId, and the field to be updated</para> /// <para>Podio API Reference: https://developers.podio.com/doc/applications/update-an-app-field-22356 </para> /// </summary> /// <param name="application"></param> public async System.Threading.Tasks.Task UpdateAnAppField(Application application) { /* * Example Usage: Updating the configuration of a text field. * * var application = new Application(); * application.AppId = APP_ID; * var textField = application.Field<TextApplicationField>(); * textField.FieldId = 57037270; * textField.Config.Label = "Updated label"; * textField.Config.Description = "Updated description"; * textField.Size = "large"; */ ApplicationField fieldToUpdate = application.Fields.FirstOrDefault(); await UpdateAnAppField(application.AppId, fieldToUpdate.FieldId.Value, fieldToUpdate.InternalConfig); }
/// <summary> /// Adds a new field to an app. /// <para>Podio API Reference: https://developers.podio.com/doc/applications/get-app-field-22353 </para> /// </summary> /// <param name="appId"></param> /// <param name="field"></param> public async Task <int> AddNewAppField(int appId, ApplicationField field) { /* * Example Usage: Adding a new text field. * * var applicationField = new ApplicationField(); * applicationField.Type = "text"; * applicationField.Config.Label = "New text field"; * applicationField.Config.Settings = new Dictionary<string, object> * { * {"size", "large"} * }; * podio.ApplicationService.AddNewAppField(APP_ID, applicationField); */ string url = string.Format("/app/{0}/field/", appId); dynamic response = await _podio.Post <dynamic>(url, field); return((int)response["field_id"]); }
/*------------------------------------------------------------------------------------------------------- ** Constructors **-----------------------------------------------------------------------------------------------------*/ public DateContentControl(ApplicationField ApplicationField) : base(ApplicationField) { XmlDocument xml = new XmlDocument(); xml.LoadXml(ApplicationField.Parameters[0]); XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xml.NameTable); namespaceManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); XmlNodeList xnList = xml.SelectNodes("/w:sdt/w:sdtPr/w:date", namespaceManager); foreach (XmlNode xn in xnList) { if (xn.Attributes["w:fullDate"].Value != null) _dtDate = Convert.ToDateTime(xn.Attributes["w:fullDate"].Value); foreach (XmlNode subnode in xn.ChildNodes) { switch (subnode.LocalName) { case "dateFormat": if (subnode.Attributes["w:val"] != null) _strDateFormat = subnode.Attributes["w:val"].Value; break; case "lid": if (subnode.Attributes["w:val"] != null) _strLanguageID = subnode.Attributes["w:val"].Value; break; case "storeMappedDataAs": if (subnode.Attributes["w:val"] != null) _strStoreMappedDataAs = subnode.Attributes["w:val"].Value; break; case "calendar": if (subnode.Attributes["w:val"] != null) _strCalendar = subnode.Attributes["w:val"].Value; break; } } } this.Date = _dtDate; }
/// <summary> /// 添加或者修改申请书领域 /// </summary> /// <param name="fieldDTO">申请书领域信息</param> /// <returns></returns> public List <ApplicationField> AddOrUpdateApplicationField(List <AddApplicationFieldDTO> fieldDTOs, Func <Application, CurrentUser, bool> privilege) { var userInfo = UserHelper.GetCurrentUser(); List <ApplicationField> fields = new List <ApplicationField>(); using (var ctx = new AspodesDB()) { foreach (var fieldDTO in fieldDTOs) { var application = ctx.Applications.FirstOrDefault(a => a.ApplicationId == fieldDTO.ApplicationId); if (null == application) { throw new NotFoundException("未找到申请书"); } if (!privilege(application, userInfo) /**/ && false /**/) { throw new UnauthorizationException(); //2018-03-15 取消填申请书草稿的年限验证 } ApplicationField newField = Mapper.Map <ApplicationField>(fieldDTO); var oldField = ctx.ApplicationFields.FirstOrDefault(ef => ef.ApplicationFieldId == newField.ApplicationFieldId); if (null == oldField) { if (ctx.ApplicationFields.Where(af => af.ApplicationId == newField.ApplicationId).Count() >= SystemConfig.ApplicationFieldAmount) { throw new OtherException("申请书领域数目超过限制"); } newField = ctx.ApplicationFields.Add(newField); } else { //不允许修改的属性 newField.ApplicationId = oldField.ApplicationId; ctx.Entry(oldField).CurrentValues.SetValues(newField); } fields.Add(newField); } ctx.SaveChanges(); return(fields); } }
public static Type GetContentControlType(ApplicationField ApplicationField) { if (ApplicationField.TypeName != "SDTRUN" && ApplicationField.TypeName != "SDTBLOCK") return null; XmlDocument xml = new XmlDocument(); xml.LoadXml(ApplicationField.Parameters[0]); XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xml.NameTable); namespaceManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); XmlNodeList xnList = xml.SelectNodes("/w:sdt/w:sdtPr", namespaceManager); foreach (XmlNode xn in xnList) { foreach (XmlNode subnode in xn.ChildNodes) { switch (subnode.LocalName) { case "text": return typeof(PlainTextContentControl); case "checkbox": return typeof(CheckBoxContentControl); case "comboBox": return typeof(ComboBoxContentControl); case "dropDownList": return typeof(DropDownListContentControl); case "date": return typeof(DateContentControl); } } return typeof(RichTextContentControl); } return null; }
private void mailMerge1_FieldMerged(object sender, TXTextControl.DocumentServer.MailMerge.FieldMergedEventArgs e) { ApplicationField field = e.MailMergeFieldAdapter.ApplicationField; field.Text = field.Text.Replace(@"\r\n", "\r\n"); }
/// <summary> /// Updates the configuration of an app field. The type of the field cannot be updated, only the configuration. /// <para>Supply the application object with AppId, and the field to be updated</para><para>Podio API Reference: https://developers.podio.com/doc/applications/update-an-app-field-22356 </para> /// </summary> /// <example> /// <![CDATA[ /// //Example Usage: Updating the configuration of a text field. /// /// var application = new Application(); /// application.AppId = APP_ID; /// var textField = application.Field<TextApplicationField>(); /// textField.FieldId = 57037270; /// textField.Config.Label = "Updated label"; /// textField.Config.Description = "Updated description"; /// textField.Size = "large"; /// ]]> /// </example> /// <param name="application">The application.</param> /// <returns>Task.</returns> public async Task UpdateAnAppField(Application application) { ApplicationField fieldToUpdate = application.Fields.FirstOrDefault(); await UpdateAnAppField(application.AppId, fieldToUpdate.FieldId.Value, fieldToUpdate.InternalConfig); }
private static bool IsInside(ApplicationField field, MergeBlock block) { int nFldEnd = field.Start + field.Length; return((block.StartMarker.Start <= field.Start) && (block.EndMarker.Start >= nFldEnd)); }
/*------------------------------------------------------------------------------------------------------- ** Constructors **-----------------------------------------------------------------------------------------------------*/ public ContentControlFieldAdapter(ApplicationField ApplicationField) { _afApplicationField = ApplicationField; GetParameters(); }
public PlainTextContentControl(ApplicationField ApplicationField) : base(ApplicationField) { }
/*------------------------------------------------------------------------------------------------------- ** Constructors **-----------------------------------------------------------------------------------------------------*/ public RichTextContentControl(ApplicationField ApplicationField) : base(ApplicationField) { }
/// <summary> /// Adds a new field to an app. /// <para>Podio API Reference: https://developers.podio.com/doc/applications/get-app-field-22353 </para> /// </summary> /// <example> /// <![CDATA[ /// //Example Usage: Adding a new text field. /// /// var applicationField = new ApplicationField(); /// applicationField.Type = "text"; /// applicationField.Config.Label = "New text field"; /// applicationField.Config.Settings = new Dictionary<string, object> /// { /// {"size", "large"} /// }; /// podio.ApplicationService.AddNewAppField(APP_ID, applicationField); /// ]]> /// </example> /// <param name="appId"></param> /// <param name="field"></param> public async Task<int> AddNewAppField(int appId, ApplicationField field) { string url = string.Format("/app/{0}/field/", appId); dynamic response = await _podio.PostAsync<dynamic>(url, field); return (int)response["field_id"]; }
/// <summary> /// Adds a new field to an app. /// <para>Podio API Reference: https://developers.podio.com/doc/applications/get-app-field-22353 </para> /// </summary> /// <param name="appId"></param> /// <param name="field"></param> public int AddNewAppField(int appId, ApplicationField field) { /* Example Usage: Adding a new text field. var applicationField = new ApplicationField(); applicationField.Type = "text"; applicationField.Config.Label = "New text field"; applicationField.Config.Settings = new Dictionary<string, object> { {"size", "large"} }; podio.ApplicationService.AddNewAppField(APP_ID, applicationField); */ string url = string.Format("/app/{0}/field/", appId); dynamic response = _podio.Post<dynamic>(url, field); return (int)response["field_id"]; }