public void BugCommitBefore(CBug bug, BugAction nBugAction, CBugEvent bugevent, bool fPublic) { /* Set the preCommitAwesomenessLevel member variable, but only set the plugin * field value if it's not -1 (no change) */ if (api.Request[api.AddPluginPrefix("ixAwesomeness")] != null) { preCommitAwesomenessLevel = Convert.ToInt32(bug.GetPluginField(PLUGIN_ID, "ixAwesomeness")); if (Convert.ToInt32(api.Request[api.AddPluginPrefix("ixAwesomeness")]) > 0) bug.SetPluginField(PLUGIN_ID, "ixAwesomeness", Convert.ToInt32(api.Request[api.AddPluginPrefix("ixAwesomeness")])); } return; }
public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText) { string columnName = "Hours"; switch (col.iType) { case 0: columnName = "Hours"; break; case 1: columnName = "LastEditor"; break; } var valuesAsStrings = new string[rgBug.Length]; for (int i = 0; i < rgBug.Length; i++) { object value = rgBug[i].GetPluginField(Statics.PluginId, columnName); if (col.iType == 0) { valuesAsStrings[i] = (value == null) ? "No" : "Yes"; } else { valuesAsStrings[i] = (value == null) ? "No" : "Yes"; } } return valuesAsStrings; }
public CPseudoBugEvent[] PseudoBugEvents(CBug bug, CBugEvent[] rgBugEvent) { int ixBug = bug.ixBug; var sanitizer = HtmlSanitizer.SimpleHtml5Sanitizer(); var query = ExtendedEventEntity.QueryEvents(this.api.Database, ixBug); var events = new List <CPseudoBugEvent>(); foreach (var entity in query) { string sMessage = entity.sMessage; string sTitle = ""; switch (entity.sEventType) { case "commit": sTitle = $"Revision {entity.sCommitRevision} commited"; sMessage = HttpUtility.HtmlEncode(sMessage); sMessage = sMessage.Replace("\n", "<br>\n"); break; case "build-success": sTitle = $"Build {entity.sBuildName} successful"; sMessage = sanitizer.Sanitize(sMessage); break; case "build-failure": sTitle = $"Build {entity.sBuildName} failed"; sMessage = sanitizer.Sanitize(sMessage); break; case "releasenote": sTitle = $"Releasenotes message"; sMessage = sanitizer.Sanitize(sMessage); break; case "deployment": sTitle = $"Deployed"; sMessage = sanitizer.Sanitize(sMessage); break; default: sMessage = HttpUtility.HtmlEncode(sMessage); break; } if (entity.ixPerson == 0 && !String.IsNullOrEmpty(entity.sPersonName)) { sTitle += " by " + HttpUtility.HtmlEncode(entity.sPersonName); } else if (entity.ixPerson > 0) { sTitle += " by"; } var sChanges = new StringBuilder(); if (!String.IsNullOrEmpty(entity.sModuleName)) { sChanges.Append(HttpUtility.HtmlEncode(entity.sModuleName)); } if (!String.IsNullOrEmpty(entity.sBranchName)) { if (sChanges.Length > 0) { sChanges.Append(": "); } sChanges.Append(HttpUtility.HtmlEncode(entity.sBranchName)); } if (!String.IsNullOrEmpty(entity.sExternalUrl)) { sChanges.Append($@" <a href=""{HttpUtility.HtmlAttributeEncode(entity.sExternalUrl)}"">View details</a>"); } var sHtml = this.api.UI.BugEvent(entity.dtEventUtc, entity.ixPerson, sTitle, sMessage, sChanges.ToString(), $"fbee-event fbee-{entity.sEventType}"); var evt = new CPseudoBugEvent(entity.dtEventUtc, sHtml); events.Add(evt); } return(events.ToArray()); }
// original opener comes up as blank if the case originated as an email public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText) { string[] rgsValues = new string[rgBug.Length]; for (int i = 0; i < rgBug.Length; i++) { CBug bug = rgBug[i]; bug.IgnorePermissions = true; object oQueryField = bug.QueryField(PLUGIN_FIELD_NAME); int ixPersonOriginallyOpenedBy = (oQueryField == DBNull.Value) ? IXPERSON_INVALID : Convert.ToInt32(oQueryField); if (ixPersonOriginallyOpenedBy == IXPERSON_INVALID) { rgsValues[i] = ""; } else { CPerson personOrigOpener = api.Person.GetPerson(ixPersonOriginallyOpenedBy); rgsValues[i] = (api.Person.GetCurrentPerson().CanSee(personOrigOpener.ixPerson)) ? GetPersonLink(personOrigOpener) : personOrigOpener.sFullName; } } return rgsValues; }
public CBugDisplayDialogItem[] BugDisplayViewTop(CBug[] rgbug, bool fPublic) { if (!AuthorizedCategorizers.Contains(UserName)) { return null; } var displayItem = new CBugDisplayDialogItem("BugDisplayViewTop") { iColumnSpan = 4, sContent = CategorizerForms.GetBugzViewHtml() }; return new[] { displayItem }; }
public CBugDisplayDialogItem[] BugDisplayViewLeft(CBug[] rgbug, bool fPublic) { return null; }
public CBugDisplayDialogItem[] BugDisplayEditTop(CBug[] rgbug, BugEditMode nMode, bool fPublic) { return null; }
public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText) { string sTableColumn = "sName"; switch (col.iType) { case 0: sTableColumn = "sName"; break; case 1: sTableColumn = "dtBirth"; break; } string[] sValues = new string[rgBug.Length]; for (int i = 0; i < rgBug.Length; i++) { /* For tables joined in IPluginBugJoin, use * GetPluginField to fetch the values you need * for the GridColumn. */ object pluginField = rgBug[i].GetPluginField(PLUGIN_ID, string.Format("{0}", sTableColumn)); sValues[i] = (pluginField == null) ? "" : HttpUtility.HtmlEncode(pluginField.ToString()); } return sValues; }
public void BugCommitRollback(CBug bug, BugAction nBugAction, bool fPublic) { }
public void BugCommitAfter(CBug bug, BugAction nBugAction, CBugEvent bugevent, bool fPublic) { }
protected bool PluginFieldVaries(CBug[] rgBug, string sKey) { if (rgBug == null || rgBug.Length == 0) return false; object start = rgBug[0].GetPluginField(PLUGIN_ID, sKey); /* If we find a different value from the first, return true. */ if (start != null) { for (int i = 1; i < rgBug.Length; i++) if (rgBug[i].GetPluginField(PLUGIN_ID, sKey) == null || !rgBug[i].GetPluginField(PLUGIN_ID, sKey).Equals(start)) return true; } else { for (int i = 1; i < rgBug.Length; i++) if (rgBug[i].GetPluginField(PLUGIN_ID, sKey) != null) return true; } return false; }
protected string GetAwesomenessSelect(CBug[] rgbug) { List<string> rgsAwesomenessLevels; List<string> rgsAwesomenessIxs; /* If we're editing multiple bugs, then we need to put in a * "no change" option if those bugs have varying values for * ixAwesomeness. */ bool fFieldVaries = PluginFieldVaries(rgbug, "ixAwesomeness"); 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 (fFieldVaries) { /* Insert a "No Change" value (-1); if this is selected we know * not to change the plugin field value in BugCommitBefore */ rgsAwesomenessLevels.Insert(0, "-- No Change --"); rgsAwesomenessIxs.Insert(0, "-1"); } /* If there's already an "Awesomeness" value, set the selected index of the drop-down * to the proper non-zero value */ if (rgbug.Length > 0 && !fFieldVaries && Convert.ToInt32(rgbug[0].GetPluginField(PLUGIN_ID, "ixAwesomeness")) != 0) ixSelectedIndex = Convert.ToInt32( rgbug[0].GetPluginField(PLUGIN_ID, "ixAwesomeness")) - 1; return Forms.SelectInput(api.PluginPrefix + "ixAwesomeness", rgsAwesomenessLevels.ToArray(), rgsAwesomenessIxs[ixSelectedIndex], rgsAwesomenessIxs.ToArray()); }
public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText) { string[] sValues = new string[rgBug.Length]; for (int i = 0; i < rgBug.Length; i++) { if (rgBug[i].GetPluginField(PLUGIN_ID, "ixAwesomeness") == null) sValues[i] = String.Empty; else sValues[i] = HttpUtility.HtmlEncode( GetAwesomenessString( Convert.ToInt32(rgBug[i].GetPluginField(PLUGIN_ID, "ixAwesomeness")) ) ); } return sValues; }
public CBugDisplayDialogItem[] BugDisplayViewLeft(CBug[] rgbug, bool fPublic) { /* if GetPluginField returns null or -1 ("Not specified"), don't show anything * in display mode. */ int ixAwesomeness = Convert.ToInt32(rgbug[0].GetPluginField(PLUGIN_ID, "ixAwesomeness")); if (ixAwesomeness < 2) return null; /* Note: The plugin field may be NULL, but Convert.ToInt32 can be used in this * case to make sure that NULL is converted to 0 without an exception */ string sAwesomeness = GetAwesomenessString( Convert.ToInt32(rgbug[0].GetPluginField(PLUGIN_ID, "ixAwesomeness")) ); CBugDisplayDialogItem dItem1 = new CBugDisplayDialogItem( "awesomeness", sAwesomeness, "Level of Awesomeness" ); return new CBugDisplayDialogItem[] { dItem1 }; }
public CBugDisplayDialogItem[] BugDisplayEditLeft(CBug[] rgbug, BugEditMode nMode, bool fPublic) { /* We're returning 1 dialog items: a drop-down box allowing the user to * select a level of awesomeness. */ CBugDisplayDialogItem dItem1 = new CBugDisplayDialogItem("awesomeness"); dItem1.sLabel = "Level of Awesomeness"; dItem1.sContent = GetAwesomenessSelect(rgbug); return new CBugDisplayDialogItem[] { dItem1 }; }