From f11592770694e9d0a391a31fa23f455bc05756c1 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 31 Oct 2014 09:22:01 -0400 Subject: [PATCH] Merged #212 "Gracefully handle missing integration branch in ticket page" --- src/main/java/com/gitblit/wicket/pages/TicketPage.java | 37 ++++++++++++++++++++++--------------- 1 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java index b1f94a5..4890874 100644 --- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java +++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java @@ -37,7 +37,6 @@ import org.apache.wicket.PageParameters; import org.apache.wicket.RestartResponseException; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.ContextImage; @@ -287,7 +286,9 @@ desc = getString("gb.noDescriptionGiven"); } else { String bugtraq = bugtraqProcessor().processText(getRepository(), repositoryName, ticket.body); - desc = MarkdownUtils.transformGFM(app().settings(), bugtraq, ticket.repository); + String html = MarkdownUtils.transformGFM(app().settings(), bugtraq, ticket.repository); + String safeHtml = app().xssFilter().relaxed(html); + desc = safeHtml; } add(new Label("ticketDescription", desc).setEscapeModelStrings(false)); @@ -518,13 +519,20 @@ * TICKET METADATA */ add(new Label("ticketType", ticket.type.toString())); + + add(new Label("priority", ticket.priority.toString())); + add(new Label("severity", ticket.severity.toString())); + if (StringUtils.isEmpty(ticket.topic)) { add(new Label("ticketTopic").setVisible(false)); } else { // process the topic using the bugtraq config to link things String topic = bugtraqProcessor().processText(getRepository(), repositoryName, ticket.topic); - add(new Label("ticketTopic", topic).setEscapeModelStrings(false)); + String safeTopic = app().xssFilter().relaxed(topic); + add(new Label("ticketTopic", safeTopic).setEscapeModelStrings(false)); } + + /* @@ -684,15 +692,6 @@ Label status = new Label("statusChange", entry.getStatus().toString()); String css = TicketsUI.getLozengeClass(entry.getStatus(), false); WicketUtils.setCssClass(status, css); - for (IBehavior b : status.getBehaviors()) { - if (b instanceof SimpleAttributeModifier) { - SimpleAttributeModifier sam = (SimpleAttributeModifier) b; - if ("class".equals(sam.getAttribute())) { - status.add(new SimpleAttributeModifier("class", "status-change " + sam.getValue())); - break; - } - } - } frag.add(status); addUserAttributions(frag, entry, avatarWidth); addDateAttributions(frag, entry); @@ -703,6 +702,7 @@ */ String bugtraq = bugtraqProcessor().processText(getRepository(), repositoryName, entry.comment.text); String comment = MarkdownUtils.transformGFM(app().settings(), bugtraq, repositoryName); + String safeComment = app().xssFilter().relaxed(comment); Fragment frag = new Fragment("entry", "commentFragment", this); Label commentIcon = new Label("commentIcon"); if (entry.comment.src == CommentSource.Email) { @@ -711,7 +711,7 @@ WicketUtils.setCssClass(commentIcon, "iconic-comment-alt2-stroke"); } frag.add(commentIcon); - frag.add(new Label("comment", comment).setEscapeModelStrings(false)); + frag.add(new Label("comment", safeComment).setEscapeModelStrings(false)); addUserAttributions(frag, entry, avatarWidth); addDateAttributions(frag, entry); item.add(frag); @@ -972,7 +972,8 @@ sb.append("</td></tr>"); } sb.append("</tbody></table>"); - item.add(new Label("fields", sb.toString()).setEscapeModelStrings(false)); + String safeHtml = app().xssFilter().relaxed(sb.toString()); + item.add(new Label("fields", safeHtml).setEscapeModelStrings(false)); } else { item.add(new Label("fields").setVisible(false)); } @@ -1430,6 +1431,12 @@ Fragment mergePanel = new Fragment("mergePanel", "alreadyMergedFragment", this); mergePanel.add(new Label("mergeTitle", MessageFormat.format(getString("gb.patchsetAlreadyMerged"), ticket.mergeTo))); return mergePanel; + } else if (MergeStatus.MISSING_INTEGRATION_BRANCH == mergeStatus) { + // target/integration branch is missing + Fragment mergePanel = new Fragment("mergePanel", "notMergeableFragment", this); + mergePanel.add(new Label("mergeTitle", MessageFormat.format(getString("gb.patchsetNotMergeable"), ticket.mergeTo))); + mergePanel.add(new Label("mergeMore", MessageFormat.format(getString("gb.missingIntegrationBranchMore"), ticket.mergeTo))); + return mergePanel; } else { // patchset can not be cleanly merged Fragment mergePanel = new Fragment("mergePanel", "notMergeableFragment", this); @@ -1508,7 +1515,7 @@ */ protected RepositoryUrl getRepositoryUrl(UserModel user, RepositoryModel repository) { HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest(); - List<RepositoryUrl> urls = app().gitblit().getRepositoryUrls(req, user, repository); + List<RepositoryUrl> urls = app().services().getRepositoryUrls(req, user, repository); if (ArrayUtils.isEmpty(urls)) { return null; } -- Gitblit v1.9.1