James Moger
2014-11-20 e2c0c97867829f7db5a95f5e055bb6251cad6a65
Revise severity & priority permissions

Ticket reporters should be able to specify severity whereas only those with repository push access should be able to specify priority. This also fixes a bug related to non-admin users creating tickets.
4 files modified
39 ■■■■■ changed files
src/main/java/com/gitblit/wicket/pages/EditTicketPage.html 8 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/EditTicketPage.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/NewTicketPage.html 8 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/NewTicketPage.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/EditTicketPage.html
@@ -39,10 +39,10 @@
                </div>
            </td></tr>
            <tr wicket:id="status"></tr>
            <tr><th><wicket:message key="gb.severity"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="severity"></select></td></tr>
            <tr wicket:id="priority"></tr>
            <tr wicket:id="responsible"></tr>
            <tr wicket:id="milestone"></tr>
            <tr><th><wicket:message key="gb.priority"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="priority"></select></td></tr>
            <tr><th><wicket:message key="gb.severity"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="severity"></select></td></tr>
            <tr wicket:id="mergeto"></tr>
        </table>
    </div>
@@ -73,5 +73,9 @@
    <th><wicket:message key="gb.mergeTo"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="mergeto"></select></td>
</wicket:fragment>
<wicket:fragment wicket:id="priorityFragment">
    <th><wicket:message key="gb.priority"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="priority"></select></td>
</wicket:fragment>
</wicket:extend>
</html>
src/main/java/com/gitblit/wicket/pages/EditTicketPage.java
@@ -167,6 +167,9 @@
        status.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices));
        form.add(status);
        List<TicketModel.Severity> severityChoices = Arrays.asList(TicketModel.Severity.choices());
        form.add(new DropDownChoice<TicketModel.Severity>("severity", severityModel, severityChoices));
        if (currentUser.canAdmin(ticket, getRepositoryModel())) {
            // responsible
            Set<String> userlist = new TreeSet<String>(ticket.getParticipants());
@@ -220,18 +223,16 @@
                milestones.add(new TicketMilestone(NIL));
            }
            // milestone
            Fragment milestone = new Fragment("milestone", "milestoneFragment", this);
            milestone.add(new DropDownChoice<TicketMilestone>("milestone", milestoneModel, milestones));
            form.add(milestone.setVisible(!milestones.isEmpty()));
            // priority
            Fragment priority = new Fragment("priority", "priorityFragment", this);
            List<TicketModel.Priority> priorityChoices = Arrays.asList(TicketModel.Priority.choices());
            form.add(new DropDownChoice<TicketModel.Priority>("priority", priorityModel, priorityChoices));
            // severity
            List<TicketModel.Severity> severityChoices = Arrays.asList(TicketModel.Severity.choices());
            form.add(new DropDownChoice<TicketModel.Severity>("severity", severityModel, severityChoices));
            priority.add(new DropDownChoice<TicketModel.Priority>("priority", priorityModel, priorityChoices));
            form.add(priority);
                        
            // mergeTo (integration branch)
            List<String> branches = new ArrayList<String>();
@@ -252,6 +253,7 @@
            form.add(new Label("responsible").setVisible(false));
            form.add(new Label("milestone").setVisible(false));
            form.add(new Label("mergeto").setVisible(false));
            form.add(new Label("priority").setVisible(false));
        }
        form.add(new AjaxButton("update") {
src/main/java/com/gitblit/wicket/pages/NewTicketPage.html
@@ -39,10 +39,10 @@
                </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.severity"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="severity"></select></td></tr>
            <tr wicket:id="priority"></tr>
            <tr wicket:id="responsible"></tr>
            <tr wicket:id="milestone"></tr>
            <tr><th><wicket:message key="gb.priority"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="priority"></select></td></tr>
            <tr><th><wicket:message key="gb.severity"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="severity"></select></td></tr>
            <tr wicket:id="mergeto"></tr>
        </table>
    </div>
@@ -69,5 +69,9 @@
    <th><wicket:message key="gb.mergeTo"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="mergeto"></select></td>
</wicket:fragment>
<wicket:fragment wicket:id="priorityFragment">
    <th><wicket:message key="gb.priority"></wicket:message></th><td class="edit"><select class="input-large" wicket:id="priority"></select></td>
</wicket:fragment>
</wicket:extend>
</html>
src/main/java/com/gitblit/wicket/pages/NewTicketPage.java
@@ -111,6 +111,7 @@
        form.add(new DropDownChoice<TicketModel.Type>("type", typeModel, Arrays.asList(TicketModel.Type.choices())));
        form.add(new TextField<String>("title", titleModel));
        form.add(new TextField<String>("topic", topicModel));
        form.add(new DropDownChoice<TicketModel.Severity>("severity", severityModel, Arrays.asList(TicketModel.Severity.choices())));
        final IModel<String> markdownPreviewModel = Model.of();
        descriptionPreview = new Label("descriptionPreview", markdownPreviewModel);
@@ -159,10 +160,9 @@
            form.add(milestone.setVisible(!milestones.isEmpty()));
            // priority
            form.add(new DropDownChoice<TicketModel.Priority>("priority", priorityModel, Arrays.asList(TicketModel.Priority.choices())));
            //severity
            form.add(new DropDownChoice<TicketModel.Severity>("severity", severityModel, Arrays.asList(TicketModel.Severity.choices())));
            Fragment priority = new Fragment("priority", "priorityFragment", this);
            priority.add(new DropDownChoice<TicketModel.Priority>("priority", priorityModel, Arrays.asList(TicketModel.Priority.choices())));
            form.add(priority);
            
            // integration branch
            List<String> branches = new ArrayList<String>();
@@ -183,6 +183,7 @@
            form.add(new Label("responsible").setVisible(false));
            form.add(new Label("milestone").setVisible(false));
            form.add(new Label("mergeto").setVisible(false));
            form.add(new Label("priority").setVisible(false));
        }
        form.add(new AjaxButton("create") {