James Moger
2014-06-05 afbaebde11093fae8b420aaaf71dcd56d8c0f9fd
Add "email me on my ticket changes" preference
6 files modified
42 ■■■■■ changed files
src/main/java/com/gitblit/ConfigUserService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/models/UserPreferences.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/tickets/TicketNotifier.java 11 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/UserPage.html 3 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/UserPage.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/ConfigUserService.java
@@ -96,6 +96,8 @@
    private static final String LOCALE = "locale";
    private static final String EMAILONMYTICKETCHANGES = "emailMeOnMyTicketChanges";
    private static final String ACCOUNTTYPE = "accountType";
    private static final String DISABLED = "disabled";
@@ -711,6 +713,7 @@
                    String val = model.getPreferences().getLocale().getLanguage() + "_" + model.getPreferences().getLocale().getCountry();
                    config.setString(USER, model.username, LOCALE, val);
                }
                config.setBoolean(USER, model.username, EMAILONMYTICKETCHANGES, model.getPreferences().isEmailMeOnMyTicketChanges());
            }
            // user roles
@@ -887,6 +890,7 @@
                    // preferences
                    user.getPreferences().setLocale(config.getString(USER, username, LOCALE));
                    user.getPreferences().setEmailMeOnMyTicketChanges(config.getBoolean(USER, username, EMAILONMYTICKETCHANGES, true));
                    // user roles
                    Set<String> roles = new HashSet<String>(Arrays.asList(config.getStringList(
src/main/java/com/gitblit/models/UserPreferences.java
@@ -39,6 +39,8 @@
    private String locale;
    private Boolean emailMeOnMyTicketChanges;
    private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>();
    public UserPreferences(String username) {
@@ -100,4 +102,15 @@
        Collections.sort(list);
        return list;
    }
    public boolean isEmailMeOnMyTicketChanges() {
        if (emailMeOnMyTicketChanges == null) {
            return true;
        }
        return emailMeOnMyTicketChanges;
    }
    public void setEmailMeOnMyTicketChanges(boolean value) {
        this.emailMeOnMyTicketChanges = value;
    }
}
src/main/java/com/gitblit/tickets/TicketNotifier.java
@@ -545,7 +545,6 @@
                }
            }
        }
        mailing.setRecipients(toAddresses);
        //
        // CC recipients
@@ -554,7 +553,7 @@
        // repository owners
        if (!ArrayUtils.isEmpty(repository.owners)) {
            tos.addAll(repository.owners);
            ccs.addAll(repository.owners);
        }
        // cc users mentioned in last comment
@@ -595,6 +594,14 @@
        }
        ccAddresses.addAll(settings.getStrings(Keys.mail.mailingLists));
        // respect the author's email preference
        UserModel lastAuthor = userManager.getUserModel(lastChange.author);
        if (!lastAuthor.getPreferences().isEmailMeOnMyTicketChanges()) {
            toAddresses.remove(lastAuthor.emailAddress);
            ccAddresses.remove(lastAuthor.emailAddress);
        }
        mailing.setRecipients(toAddresses);
        mailing.setCCs(ccAddresses);
    }
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -728,6 +728,8 @@
gb.accountPreferencesDescription = Specify your account preferences
gb.languagePreference = Language Preference
gb.languagePreferenceDescription = Select your preferred translation for Gitblit
gb.emailMeOnMyTicketChanges = Email me on my ticket changes
gb.emailMeOnMyTicketChangesDescription  = Send me an email notification for changes that I make to a ticket
gb.displayNameDescription = The preferred name for display
gb.emailAddressDescription = The primary email address for receiving notifications
gb.sshKeys = SSH Keys
src/main/java/com/gitblit/wicket/pages/UserPage.html
@@ -64,7 +64,8 @@
        <form wicket:id="prefsForm">
            <div wicket:id="displayName"></div>
            <div wicket:id="emailAddress"></div>
            <div wicket:id="language"></div>
            <div wicket:id="language"></div>
            <div wicket:id="emailMeOnMyTicketChanges"></div>
            
            <div class="form-actions"><input class="btn btn-appmenu" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" /></div>
        </form>    
src/main/java/com/gitblit/wicket/pages/UserPage.java
@@ -48,6 +48,7 @@
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.GitblitRedirectException;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.BooleanOption;
import com.gitblit.wicket.panels.ChoiceOption;
import com.gitblit.wicket.panels.ProjectRepositoryPanel;
import com.gitblit.wicket.panels.SshKeysPanel;
@@ -219,6 +220,7 @@
        final IModel<String> displayName = Model.of(user.getDisplayName());
        final IModel<String> emailAddress = Model.of(user.emailAddress == null ? "" : user.emailAddress);
        final IModel<Language> language = Model.of(preferredLanguage);
        final IModel<Boolean> emailMeOnMyTicketChanges = Model.of(user.getPreferences().isEmailMeOnMyTicketChanges());
        prefs.add(new TextOption("displayName",
                getString("gb.displayName"),
@@ -236,6 +238,11 @@
                language,
                languages));
        prefs.add(new BooleanOption("emailMeOnMyTicketChanges",
                getString("gb.emailMeOnMyTicketChanges"),
                getString("gb.emailMeOnMyTicketChangesDescription"),
                emailMeOnMyTicketChanges).setVisible(app().notifier().isSendingMail()));
        prefs.add(new AjaxButton("save") {
            private static final long serialVersionUID = 1L;
@@ -253,6 +260,8 @@
                    user.getPreferences().setLocale(lang.code);
                }
                user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject());
                try {
                    app().gitblit().reviseUser(user.username, user);