Пример #1
0
        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;
        }
Пример #3
0
        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;
 }
Пример #8
0
        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;
        }
Пример #9
0
 public void BugCommitRollback(CBug bug, BugAction nBugAction, bool fPublic)
 {
 }
Пример #10
0
        public void BugCommitAfter(CBug bug, BugAction nBugAction, CBugEvent bugevent,
			bool fPublic)
        {
        }
Пример #11
0
        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;
        }
Пример #12
0
        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());
        }
Пример #13
0
        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;
        }
Пример #14
0
        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 };
        }
Пример #15
0
        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 };
        }