/*-------------------------------------------------------------------------------------------------------
        ** 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;
                    }
                }
            }
        }
Beispiel #2
0
        /// <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"]);
        }
Beispiel #3
0
        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);
        }
Beispiel #7
0
        /// <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);
        }
Beispiel #8
0
        /// <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;
        }
Beispiel #12
0
        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");
        }
Beispiel #13
0
        /// <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)
        {

        }
Beispiel #18
0
		/// <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"];
        }