5

Just purchased Postmaster, and its working great. Kind of wish I had got it ages ago and saved myself loads of manual emails!

My users submit entries via a safecracker form, that come to me with a status of "pending". I have set up two parcels. The first one sends the user a notification that I have received their entry. This is easily achieved by using the "New" entry trigger & "Pending" status trigger. Works fine.

I then review the entry, make any edits where needed, set the status to "open" and publish the entry.

My next parcel send the entry author an email to tell them the entry is now live on the site. I have set this up via the "edit" entry trigger, and the "open" status.

This works very well. However, if I was to go in and edit that entry again, say simply for a typo, when I save it, it will fire of the original email again.

i do not want this, I only want the original first email to go out, so I am wondering what would be the best way to achieve this?

The only ways I can think, are to have a custom field that maybe identifies that the entry has been edited, and use that in the extra conditionals, or to set up another status of "edited" and ensure that if I make an edit, I change the status to edited.

Can anyone think of an easier way? Ideally I would like it to be as automated as possible!

1

Here's how we handled this exact situation.

Create a "Send Email" Select Dropdown field with the options "Yes", "No" and within the Field Instructions add the following jQuery.

<script>
$(function() {
    $("#field_id_14").val('No');
});
</script>

Note: You will need to change field_id_14 to whatever your field's id attribute is. You can get this by saving the field, loading the publish entry screen and using Safari/Firefox "Inspect Element" debugging tools.

What this will do is reset the drop down menu to "No" every time the Publish/Edit entry page loads, thus defaulting to not sending an email.

ExpressionEngine Edit Field ExpressionEngine Edit Field Options

Then within your Parcel Extra Conditionals, add the following condition:

{if parcel:advisory_send_email == "No"}FALSE{/if}

As a result, when you edit/add a new entry. You will have the option to not send, or to send a Parcel that will automatically default to not send/"No". Change the jQuery/conditional logic if you want it to always default to send/"Yes".

ExpressionEngine Edit Entry

| improve this answer | |
  • Thank you for adding this. It's certainly an alternative solution and one that I feel might be a bit better. My work around that I posted above has been fine, but I did on an occasion forget to select my "Edited Entry" field and it fired off an email again. I think I shall look to do it the way that you have described, with the default being to not send. Then when I am approving an entry it will be more of a conscious decision to choose to email the author. Thanks! – shorn Dec 17 '13 at 23:51
  • Just to add, I have just implemented this. Haven't had a chance to properly test it yet, but the drop down is reverting to 'No' each time so it looks good! Also, I have just noticed a new option for the parcel called 'Send Only Once' - I'm guessing this will take care of the problem, although the solution provided does give a bit more flexibility. cl.ly/image/013D0c3I1x36/… – shorn Jan 12 '14 at 23:32
1

Thanks for purchasing Postmaster, and glad you like it.

Couple of questions to ask yourself:

  • What trigger do you want to use?
  • Perhaps we can use the logged_in_group_id variable in some fashion in the extra conditionals?

So one way would be to use the logged_in_group_id variable and say if Admins or member group X edit the post, the email will not get send. So in theory, it could look like this in the extra conditional fields:

{if parcel:logged_in_group_id == 1}FALSE{/if}

I just tested this and it doesn't work currently, but out of sheer curiosity I modified the code and added it real quick to the parcel and hook parsing routines. So if you think this method would work for you, just let me know. If not, I have a nice place to add more variables should you need them.

Email support[at]objectivehtml.com if you want the latest code. I won't have a chance to release for several more weeks.

| improve this answer | |
  • Justin, thanks for the reply. I get what your saying, however , if I'm understanding correctly, it wouldn't work in my case, as I still want an initial email sent, when the super admin first changes the entry from a pending to an open status. Using what you suggested above would stop all emails when a super admin (or whatever chosen member group) edits the entry, right? – shorn Feb 26 '13 at 9:31
  • Ok, the way I am going with this at the moment is this. I have created a custom channel field (checkboxes) entitled Edited Entry, with a single Yes option. Then, if I edit an entry after it has been initially accepted, I just hit the checkbox. I then have this in my extra conditional field in the parcel {if parcel:edited_entry == "Yes"}FALSE{/if} This seems to do the job, and means I do not have to play around with Status's, but I am always open to hearing any other ideas that do not require that user intervention step of checking the box! :) – shorn Feb 26 '13 at 16:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.