public bool FilterCommitBefore(CFilter filter) { if (api.Request[api.AddPluginPrefix("HoursFilterType")] != null) { var pluginField = filter.GetPluginField(Statics.PluginId, "HoursFilterType"); PreCommitHoursSelection = pluginField == null ? "Unset" : pluginField.ToString(); var newValue = api.Request[api.AddPluginPrefix("HoursFilterType")].ToLower(); FilterType type = FilterType.Unset; switch (newValue) { case "yes": type = FilterType.Yes; break; case "no": type = FilterType.No; break; } filter.SetPluginField(Statics.PluginId, "HoursFilterType", type.ToString()); } if (api.Request[api.AddPluginPrefix("SplitFilterType")] != null) { var pluginField = filter.GetPluginField(Statics.PluginId, "SplitFilterType"); PreCommitSplitSelection = pluginField == null ? "Unset" : pluginField.ToString(); var newValue = api.Request[api.AddPluginPrefix("SplitFilterType")].ToLower(); FilterType type = FilterType.Unset; switch (newValue) { case "yes": type = FilterType.Yes; break; case "no": type = FilterType.No; break; } filter.SetPluginField(Statics.PluginId, "SplitFilterType", type.ToString()); } return true; }
public string FilterBugEntryUrlParams(CFilter filter) { return api.PluginPrefix + "HoursFilterType=" + filter.GetPluginField(Statics.PluginId, "HoursFilterType") + "&SplitFilterType=" + filter.GetPluginField(Statics.PluginId, "SplitFilterType"); }
protected virtual FilterType GetSplitFilterType(CFilter filter) { if (filter.GetPluginField(Statics.PluginId, "SplitFilterType") != null) { return (FilterType)Enum.Parse(typeof(FilterType), Convert.ToString(filter.GetPluginField(Statics.PluginId, "SplitFilterType"))); } return FilterType.Unset; }
public bool FilterCommitBefore(CFilter Filter) { if (api.Request[sPluginFieldNamePrefixed] != null) { ixPersonOriginallyOpenedByPreCommit = Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME)); int ixPersonOriginallyOpenedBy = IXPERSON_INVALID; /* use tryparse in case the URL querystring value isn't a valid integer */ if (Int32.TryParse(api.Request[sPluginFieldNamePrefixed].ToString(), out ixPersonOriginallyOpenedBy)) { // if the requested value isn't an actual CPerson, set the plugin field to "any" if (!IsValidPerson(ixPersonOriginallyOpenedBy)) ixPersonOriginallyOpenedBy = IXPERSON_ANY; Filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonOriginallyOpenedBy); } } return true; }
/// <summary> /// Read the filter's ixPersonOriginallyOpenedBy. If it's invalid, fix it (set it to "any") /// </summary> /// <param name="filter">Filter to check (and possibly update)</param> /// <returns>The validated ixPersonOriginallyOpenedBy</returns> protected int GetFieldValueFromFilter(CFilter filter) { filter.IgnorePermissions = true; int ixPersonFromFilter = Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME)); if (!IsValidPerson(ixPersonFromFilter)) { ixPersonFromFilter = IXPERSON_ANY; filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonFromFilter); } return ixPersonFromFilter; }
public string FilterOptionsUrlParams(CFilter filter) { /* To make the filter saveable, we need to assign a querystring * parameter to this filter setting. */ int ixAwesomeness = Convert.ToInt32( filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); if (ixAwesomeness < 1) return ""; else return api.PluginPrefix + "ixAwesomeness=" + Convert.ToString(ixAwesomeness); }
protected string GetAwesomenessSelect(CFilter Filter) { List<string> rgsAwesomenessLevels; List<string> rgsAwesomenessIxs; int ixSelectedIndex = 0; CSelectQuery sq = api.Database.NewSelectQuery(sAwesomenessTableName); sq.AddSelect("*"); /* Iterate through the data set and populate the drop-down */ DataSet ds = sq.GetDataSet(); if (ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0) return string.Empty; int numOptions = ds.Tables[0].Rows.Count; rgsAwesomenessLevels = new List<string>(); rgsAwesomenessIxs = new List<string>(); for (int i = 0; i < numOptions; i++) { rgsAwesomenessLevels.Add(ds.Tables[0].Rows[i]["sAwesomenessLevel"].ToString()); rgsAwesomenessIxs.Add(ds.Tables[0].Rows[i]["ixAwesomeness"].ToString()); } /* If there's already an "Awesomeness" value, set the selected index of the drop-down * to the proper non-zero value */ if (Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) != 0) ixSelectedIndex = Convert.ToInt32( Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) - 1; return Forms.SelectInput(api.PluginPrefix + "ixAwesomeness", rgsAwesomenessLevels.ToArray(), rgsAwesomenessIxs[ixSelectedIndex], rgsAwesomenessIxs.ToArray()); }
public CSelectQuery FilterOptionsQuery(CFilter filter) { /* Specify a query for the list of cases to be returned when the * filter is imposed. */ int ixAwesomeness = ToAwesomenessSelectRange( Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"))); CSelectQuery query = api.Database.NewSelectQuery("Bug"); if (ixAwesomeness == 0) return query; query.AddLeftJoin(sBugAwesomenessTableName, "Bug.ixBug = joinedBug.ixBug", "joinedBug"); query.SetParamInt("ixAwesomeness", ixAwesomeness); if (ixAwesomeness == 1) { query.AddWhere( @"joinedBug.ixAwesomeness IS NULL OR joinedBug.ixAwesomeness = @ixAwesomeness"); } else { query.AddWhere("joinedBug.ixAwesomeness = @ixAwesomeness"); } return query; }
public CFilterStringList FilterOptionsString(CFilter filter) { int ixAwesomeness = Convert.ToInt32( filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); CFilterStringList list = new CFilterStringList(); /* Return a string for the "Filter:" message at the top of the case list * so that the the user can clearly interpret current filter settings. * ixAwesomeness = 0 will correspond to "any level of awesomeness," so * no message is shown at all in that case. */ string sFilterString; /* if there is an awesomeness in the range of possible values, * generate the filter string */ if (ixAwesomeness > 0 && ixAwesomeness <= rgsAwesomenessIxs.Length) { if (ixAwesomeness == 1) { sFilterString = "with no level of awesomeness specified"; } else { sFilterString = String.Format(@"with awesomeness level ""{0}""", GetAwesomenessString(ixAwesomeness)); } /* the second parameter to CFilterStringList.Add specifies the * CFilterOption by name to display when the text is clicked */ list.Add(sFilterString, "awesomeness"); } return list; }
public CFilterOption[] FilterOptions(CFilter filter) { /* Create a new filter option to be included in the list of options * available in the "Filter:" drop-down at the top of the case * list. */ int ixAwesomeness = ToAwesomenessSelectRange( Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"))); CFilterOption fo = api.Filter.NewFilterOption(); /* Specify a single-select drop-down, and add a default value of "any" */ fo.SetSelectOne(rgsAwesomenessLevels, Convert.ToString(ixAwesomeness), rgsAwesomenessIxs); fo.SetDefault("0", "Any"); fo.sQueryParam = api.PluginPrefix + "ixAwesomeness"; fo.fShowDialogItem = true; fo.sHeader = "Level of Awesomeness"; fo.sName = "awesomeness"; return new CFilterOption[] { fo }; }
public string[] FilterDisplayListFields(CFilter Filter) { int ixAwesomeness = Convert.ToInt32( Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); /* including dashes to match those automatically added on the * edit filter page, so the user knows it's not the literal * awesomeness value "Any" */ string s = (ixAwesomeness < 2) ? "-- Any --" : GetAwesomenessString(ixAwesomeness); return new string[] { s }; }
public bool FilterCommitBefore(CFilter Filter) { /* Set the preCommitAwesomenessLevel member variable */ if (api.Request[api.AddPluginPrefix("ixAwesomeness")] != null) { int ixAwesomenessNew = -1; preCommitAwesomenessLevel = Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")); /* use tryparse in case the URL querystring value isn't a valid integer */ if (Int32.TryParse(api.Request[api.AddPluginPrefix("ixAwesomeness")].ToString(), out ixAwesomenessNew) && (ixAwesomenessNew > -1) ) Filter.SetPluginField(PLUGIN_ID, "ixAwesomeness", ixAwesomenessNew); } return true; }
public string FilterBugEntryUrlParams(CFilter filter) { return api.PluginPrefix + "ixAwesomeness=" + Convert.ToString( Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"))); }
public bool FilterBugEntryCanCreate(CFilter filter) { //For this plugin example, we won't offer users an "Add Case" control in the //grid view if the current filter has a level of awesomeness of "Low." if (Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) == 2) return false; else return true; }