[[PageOutline(2-5,Contents,pullout)]] = Toggle sending Announcer emails upon ticket changes == Description This plugin provides a link (in the contextual nav) to toggle on and off sending emails for your ticket changes. The purpose is to reduce superfluous emails for changes the author deems low-value. [[Image(quiet.png)]] This plugin is dependent upon the [wiki:AnnouncerPlugin Announcer plugin] (which must already be installed) and Javascript. The toggling is handled via ajax so you can remain on the same page and not disrupt any current work. The toggle link will appear on {{{/newticket}}}, {{{/ticket}}}, {{{/query}}}, and {{{/report}}} pages since ticket changes are possible on all of these, eg via [wiki:BatchModifyPlugin BatchModify] or [wiki:GridModifyPlugin GridModify]. == Bugs/Feature Requests Existing bugs and feature requests for QuietPlugin are [report:9?COMPONENT=QuietPlugin here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=QuietPlugin&owner=robguttman new ticket]. [[TicketQuery(component=QuietPlugin,group=type,format=progress)]] == Download Download the zipped source from [download:quietplugin here]. == Source You can check out QuietPlugin from [http://trac-hacks.org/svn/quietplugin here] using Subversion, or [source:quietplugin browse the source] with Trac. == Installation 1. Install the plugin after downloading and unzipping: {{{#!sh cd quietplugin/0.12 sudo python setup.py install }}} See [http://trac.edgewall.org/wiki/TracPlugins TracPlugins] for more installation details and options. 2. Restart Trac's web server. 3. Enable the plugin and disable {{{announcer.distributors.mail.EmailDistributor}}} in {{{trac.ini}}}: {{{#!ini [components] announcer.* = enabled announcer.distributors.mail.EmailDistributor = disabled quiet.* = enabled }}} Alternatively, you can use the Trac Web Admin GUI. The trac.ini lines above ensure that the quietplugin uses its own email distributor. This distributor effectively wraps the announcer's !EmailDistributor with an extra check to see if the user entered quiet mode or not. == Configuration There are the following optional steps for configuration. 1. Customize the quiet mode labels in {{{trac.ini}}}: {{{#!ini [quiet] enter_label = Enter Quiet Mode leave_label = Leave Quiet Mode }}} 1. Add the {{{QUIET_MODE}}} permission to users or groups as appropriate on the Admin > Permissions page. == Examples The following are typical scenarios of how this plugin could be used: * During planning, I can now avoid barraging people with emails when I move large batches of tickets from one milestone to another using [wiki:BatchModifyPlugin BatchModify]. * I want to make a minor fix to a ticket's description that doesn't call for yet another email to be sent - enter quiet mode! * I'm triaging many tickets in a [wiki:QueuesPlugin Queue report] with new positions using [wiki:GridModifyPlugin GridModify] and I don't want an email sent for each change. * I'm managing dependencies using the [wiki:AnalyzePlugin Analyze plugin] and don't want to inundate the team with emails of its fixes. === Trigger quiet mode To help you remember to enter quiet mode for the above use cases or similar ones, you can create trigger rules on DOM elements that will prompt you to enter or leave quiet mode (if you're not already in that state): {{{#!ini [quiet] 1.selector = #analyzebutton 1.action = enter 2.selector = #batchmod_submit 2.action = enter 2.submit = true 3.selector = #propertyform[action*=ticket] .buttons input[name=submit] 3.action = leave 3.only_if = #comment:first=.+ 3.submit = true }}} The above example defines three trigger rules explained as follows: 1. When the "Analyze.." button is clicked, prompt to enter quiet mode. 1. When the "Batch Modify" button is clicked, prompt to enter quiet mode (and prevent the submission - but then they can submit again). 1. When a ticket's "Submit changes" button is clicked ''and'' there's some text in the comment field, then prompt to enter quiet mode (and prevent the submission - but then they can submit again). The {{{only_if}}} option can either be just a CSS selector or also include an expected regex value (e.g., the {{{=.+}}} above). If just a selector, then the selector must exist. If also an expected rege value, then the selected item's jQuery {{{val()}}} must match the expected value. == [/log/quietplugin Recent Changes] [[ChangeLog(quietplugin, 3)]] == Author/Contributors '''Author:''' [wiki:robguttman] [[BR]] '''Maintainer:''' [[Maintainer]] [[BR]] '''Contributors:''' rjollos