src/main/java/com/gitblit/models/UserModel.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/EditTicketPage.html | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/EditTicketPage.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/TicketPage.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/gitblit/models/UserModel.java
@@ -447,16 +447,23 @@ return canAdmin() || model.isUsersPersonalRepository(username) || model.isOwner(username); } public boolean canEdit(TicketModel ticket, RepositoryModel repository) { return isAuthenticated() && (username.equals(ticket.createdBy) || username.equals(ticket.responsible) || canPush(repository)); } public boolean canReviewPatchset(RepositoryModel model) { return isAuthenticated && canClone(model); return isAuthenticated() && canClone(model); } public boolean canApprovePatchset(RepositoryModel model) { return isAuthenticated && canPush(model); return isAuthenticated() && canPush(model); } public boolean canVetoPatchset(RepositoryModel model) { return isAuthenticated && canPush(model); return isAuthenticated() && canPush(model); } /** @@ -540,6 +547,10 @@ return false; } public boolean isAuthenticated() { return !UserModel.ANONYMOUS.equals(this) && isAuthenticated; } public boolean isTeamMember(String teamname) { for (TeamModel team : teams) { if (team.name.equalsIgnoreCase(teamname)) { src/main/java/com/gitblit/wicket/pages/EditTicketPage.html
@@ -38,8 +38,7 @@ </div> </div> </td></tr> <tr><th><wicket:message key="gb.type"></wicket:message><span style="color:red;">*</span></th><td class="edit"><select class="input-large" wicket:id="type"></select></td></tr> <tr><th><wicket:message key="gb.status"></wicket:message><span style="color:red;">*</span></th><td class="edit"><select class="input-large" wicket:id="status"></select></td></tr> <tr wicket:id="status"></tr> <tr wicket:id="responsible"></tr> <tr wicket:id="milestone"></tr> <tr wicket:id="mergeto"></tr> @@ -56,6 +55,10 @@ </div> </body> <wicket:fragment wicket:id="statusFragment"> <tr><th><wicket:message key="gb.status"></wicket:message><span style="color:red;">*</span></th><td class="edit"><select class="input-large" wicket:id="status"></select></td></tr> </wicket:fragment> <wicket:fragment wicket:id="responsibleFragment"> <th><wicket:message key="gb.responsible"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="responsible"></select></td> </wicket:fragment> src/main/java/com/gitblit/wicket/pages/EditTicketPage.java
@@ -88,11 +88,6 @@ currentUser = UserModel.ANONYMOUS; } if (!currentUser.isAuthenticated || !app().tickets().isAcceptingTicketUpdates(getRepositoryModel())) { // tickets prohibited setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); } long ticketId = 0L; try { String h = WicketUtils.getObject(params); @@ -102,8 +97,10 @@ } TicketModel ticket = app().tickets().getTicket(getRepositoryModel(), ticketId); if (ticket == null) { setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); if (ticket == null || !currentUser.canEdit(ticket, getRepositoryModel()) || !app().tickets().isAcceptingTicketUpdates(getRepositoryModel())) { setResponsePage(TicketsPage.class, WicketUtils.newObjectParameter(repositoryName, "" + ticketId)); } typeModel = Model.of(ticket.type); @@ -223,18 +220,6 @@ } form.add(new DropDownChoice<TicketModel.Type>("type", typeModel, typeChoices)); List<Status> statusChoices; if (ticket.isClosed()) { statusChoices = Arrays.asList(ticket.status, Status.Open); } else if (ticket.isProposal()) { statusChoices = Arrays.asList(TicketModel.Status.proposalWorkflow); } else if (ticket.isBug()) { statusChoices = Arrays.asList(TicketModel.Status.bugWorkflow); } else { statusChoices = Arrays.asList(TicketModel.Status.requestWorkflow); } form.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices)); form.add(new TextField<String>("title", titleModel)); form.add(new TextField<String>("topic", topicModel)); @@ -249,7 +234,21 @@ descriptionEditor.setText(ticket.body); form.add(descriptionEditor); if (currentUser != null && currentUser.isAuthenticated && currentUser.canPush(getRepositoryModel())) { // status List<Status> statusChoices; if (ticket.isClosed()) { statusChoices = Arrays.asList(ticket.status, Status.Open); } else if (ticket.isProposal()) { statusChoices = Arrays.asList(TicketModel.Status.proposalWorkflow); } else if (ticket.isBug()) { statusChoices = Arrays.asList(TicketModel.Status.bugWorkflow); } else { statusChoices = Arrays.asList(TicketModel.Status.requestWorkflow); } Fragment status = new Fragment("status", "statusFragment", this); status.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices)); form.add(status); // responsible Set<String> userlist = new TreeSet<String>(ticket.getParticipants()); @@ -314,13 +313,6 @@ Fragment mergeto = new Fragment("mergeto", "mergeToFragment", this); mergeto.add(new DropDownChoice<String>("mergeto", mergeToModel, branches)); form.add(mergeto.setVisible(!branches.isEmpty())); } else { // user does not have permission to assign milestone or responsible form.add(new Label("responsible").setVisible(false)); form.add(new Label("milestone").setVisible(false)); form.add(new Label("mergeto").setVisible(false)); } form.add(new Button("update")); Button cancel = new Button("cancel") { src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -115,7 +115,6 @@ super(params); final UserModel user = GitBlitWebSession.get().getUser() == null ? UserModel.ANONYMOUS : GitBlitWebSession.get().getUser(); final boolean isAuthenticated = !UserModel.ANONYMOUS.equals(user) && user.isAuthenticated; final RepositoryModel repository = getRepositoryModel(); final String id = WicketUtils.getObject(params); long ticketId = Long.parseLong(id); @@ -327,7 +326,7 @@ /* * UPDATE FORM (DISCUSSION TAB) */ if (isAuthenticated && app().tickets().isAcceptingTicketUpdates(repository)) { if (user.canEdit(ticket, repository) && app().tickets().isAcceptingTicketUpdates(repository)) { if (ticket.isOpen()) { /* * OPEN TICKET