Browse Source

Add "email me on my ticket changes" preference

tags/v1.6.0
James Moger 10 years ago
parent
commit
afbaebde11

+ 4
- 0
src/main/java/com/gitblit/ConfigUserService.java View File

private static final String LOCALE = "locale"; private static final String LOCALE = "locale";
private static final String EMAILONMYTICKETCHANGES = "emailMeOnMyTicketChanges";
private static final String ACCOUNTTYPE = "accountType"; private static final String ACCOUNTTYPE = "accountType";
private static final String DISABLED = "disabled"; private static final String DISABLED = "disabled";
String val = model.getPreferences().getLocale().getLanguage() + "_" + model.getPreferences().getLocale().getCountry(); String val = model.getPreferences().getLocale().getLanguage() + "_" + model.getPreferences().getLocale().getCountry();
config.setString(USER, model.username, LOCALE, val); config.setString(USER, model.username, LOCALE, val);
} }
config.setBoolean(USER, model.username, EMAILONMYTICKETCHANGES, model.getPreferences().isEmailMeOnMyTicketChanges());
} }
// user roles // user roles
// preferences // preferences
user.getPreferences().setLocale(config.getString(USER, username, LOCALE)); user.getPreferences().setLocale(config.getString(USER, username, LOCALE));
user.getPreferences().setEmailMeOnMyTicketChanges(config.getBoolean(USER, username, EMAILONMYTICKETCHANGES, true));
// user roles // user roles
Set<String> roles = new HashSet<String>(Arrays.asList(config.getStringList( Set<String> roles = new HashSet<String>(Arrays.asList(config.getStringList(

+ 13
- 0
src/main/java/com/gitblit/models/UserPreferences.java View File



private String locale; private String locale;


private Boolean emailMeOnMyTicketChanges;

private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>(); private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>();


public UserPreferences(String username) { public UserPreferences(String username) {
Collections.sort(list); Collections.sort(list);
return list; return list;
} }

public boolean isEmailMeOnMyTicketChanges() {
if (emailMeOnMyTicketChanges == null) {
return true;
}
return emailMeOnMyTicketChanges;
}

public void setEmailMeOnMyTicketChanges(boolean value) {
this.emailMeOnMyTicketChanges = value;
}
} }

+ 9
- 2
src/main/java/com/gitblit/tickets/TicketNotifier.java View File

} }
} }
} }
mailing.setRecipients(toAddresses);


// //
// CC recipients // CC recipients


// repository owners // repository owners
if (!ArrayUtils.isEmpty(repository.owners)) { if (!ArrayUtils.isEmpty(repository.owners)) {
tos.addAll(repository.owners);
ccs.addAll(repository.owners);
} }


// cc users mentioned in last comment // cc users mentioned in last comment
} }
ccAddresses.addAll(settings.getStrings(Keys.mail.mailingLists)); 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); mailing.setCCs(ccAddresses);
} }



+ 2
- 0
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties View File

gb.accountPreferencesDescription = Specify your account preferences gb.accountPreferencesDescription = Specify your account preferences
gb.languagePreference = Language Preference gb.languagePreference = Language Preference
gb.languagePreferenceDescription = Select your preferred translation for Gitblit 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.displayNameDescription = The preferred name for display
gb.emailAddressDescription = The primary email address for receiving notifications gb.emailAddressDescription = The primary email address for receiving notifications
gb.sshKeys = SSH Keys gb.sshKeys = SSH Keys

+ 2
- 1
src/main/java/com/gitblit/wicket/pages/UserPage.html View File

<form wicket:id="prefsForm"> <form wicket:id="prefsForm">
<div wicket:id="displayName"></div> <div wicket:id="displayName"></div>
<div wicket:id="emailAddress"></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> <div class="form-actions"><input class="btn btn-appmenu" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" /></div>
</form> </form>

+ 9
- 0
src/main/java/com/gitblit/wicket/pages/UserPage.java View File

import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.GitblitRedirectException; import com.gitblit.wicket.GitblitRedirectException;
import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.BooleanOption;
import com.gitblit.wicket.panels.ChoiceOption; import com.gitblit.wicket.panels.ChoiceOption;
import com.gitblit.wicket.panels.ProjectRepositoryPanel; import com.gitblit.wicket.panels.ProjectRepositoryPanel;
import com.gitblit.wicket.panels.SshKeysPanel; import com.gitblit.wicket.panels.SshKeysPanel;
final IModel<String> displayName = Model.of(user.getDisplayName()); final IModel<String> displayName = Model.of(user.getDisplayName());
final IModel<String> emailAddress = Model.of(user.emailAddress == null ? "" : user.emailAddress); final IModel<String> emailAddress = Model.of(user.emailAddress == null ? "" : user.emailAddress);
final IModel<Language> language = Model.of(preferredLanguage); final IModel<Language> language = Model.of(preferredLanguage);
final IModel<Boolean> emailMeOnMyTicketChanges = Model.of(user.getPreferences().isEmailMeOnMyTicketChanges());
prefs.add(new TextOption("displayName", prefs.add(new TextOption("displayName",
getString("gb.displayName"), getString("gb.displayName"),
language, language,
languages)); languages));
prefs.add(new BooleanOption("emailMeOnMyTicketChanges",
getString("gb.emailMeOnMyTicketChanges"),
getString("gb.emailMeOnMyTicketChangesDescription"),
emailMeOnMyTicketChanges).setVisible(app().notifier().isSendingMail()));
prefs.add(new AjaxButton("save") { prefs.add(new AjaxButton("save") {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
user.getPreferences().setLocale(lang.code); user.getPreferences().setLocale(lang.code);
} }
user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject());
try { try {
app().gitblit().reviseUser(user.username, user); app().gitblit().reviseUser(user.username, user);

Loading…
Cancel
Save