Provide a "Edit All Occurrences" button in calendar summary dialog, improve recurring event workflow.
Categories
(Calendar :: Dialogs, enhancement)
Tracking
(thunderbird_esr78 unaffected)
Tracking | Status | |
---|---|---|
thunderbird_esr78 | --- | unaffected |
People
(Reporter: lasana, Assigned: lasana)
References
Details
(Keywords: ux-discovery, ux-efficiency)
Attachments
(7 files, 12 obsolete files)
67.05 KB,
image/png
|
Details | |
22.74 KB,
image/png
|
Details | |
16.73 KB,
image/png
|
Details | |
62.71 KB,
image/png
|
aleca
:
feedback+
|
Details |
15.72 KB,
patch
|
mkmelin
:
review+
|
Details | Diff | Splinter Review |
11.81 KB,
patch
|
mkmelin
:
review+
|
Details | Diff | Splinter Review |
10.28 KB,
patch
|
mkmelin
:
review+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
![]() |
Assignee | |
Comment 1•5 years ago
|
||
See this comment here.
Comment 2•5 years ago
|
||
Note: you can auto link bugzilla comments just by writing "bug" and "comment", like bug 1575195 comment 30.
But please do copy over a description: when someone is following by email all (or at least most) information should be there.
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Comment 3•5 years ago
|
||
Enhancement proposed by Paul:
For UX, for repeating events, offer not just "edit" but "edit this occurrence" and "edit all occurrences" buttons in this dialog, and drop the extra step of clicking through the separate dialog.
![]() |
Assignee | |
Comment 4•5 years ago
|
||
Requires this patch applied first: https://bug1575195.bmoattachments.org/attachment.cgi?id=9160129
It's a bit tricky to change the text of the buttons via Fluent then attach event listeners so I left the label as "Edit all occurrences" and "Edit" respectively if the event is recurring.
![]() |
Assignee | |
Comment 5•5 years ago
|
||
Added access keys. Hide the "Edit all occurrences" button when not relevant.
Comment 6•5 years ago
|
||
Comment 7•5 years ago
|
||
Eventually we would like to offer an "Edit all future occurrences" option. (There is already scaffolding for this in the occurrence dialog code.) So that's another reason to use "Edit only this occurrence" instead of just "Edit" for the button. When there are three buttons instead of two it will help make it clear what each one does.
![]() |
Assignee | |
Comment 8•5 years ago
|
||
Also following the occurrence prompt dialog, I think we should also add the text "This is a repeating event." above the buttons when it is a repeating event. It might be worth asking Alex what he thinks on that though.
Is that necessary? The event summary dialog already has a "Repeat" field for events that do.
![]() |
Assignee | |
Comment 9•5 years ago
|
||
Using the formatValue
API to retrieve the translation. Comment updated.
![]() |
Assignee | |
Comment 10•5 years ago
|
||
Here is a screenshot for convenience.
Comment 11•5 years ago
|
||
Thanks for the screenshot, that's really helpful!
(In reply to Lasana Murray from comment #8)
Also following the occurrence prompt dialog, I think we should also add the text "This is a repeating event." above the buttons when it is a repeating event. It might be worth asking Alex what he thinks on that though.
Is that necessary? The event summary dialog already has a "Repeat" field for events that do.
Hm, yeah, seeing the screenshot I think it's okay to do it as you have done it there. I'm needinfo-ing Alex for his thoughts on this.
I think it would be good to add some white space (like the equivalent of one line of text) above the buttons to separate them a bit from the rest. (I'll try to get to the review soon.)
Comment 12•5 years ago
|
||
I think it's slightly problematic to be adding many buttons like this since it doesn't scale. Like: there should really be a delete button too and that would have similar functionality. (Should also have at least for delete an "and all future occurrences", once we implement that.) Check the Fastmail calendar UI.
Comment 13•5 years ago
•
|
||
Here's the Fastmail calendar UI. Clicking on the "Delete" button shows the same menu of options for deleting the event(s).
Updated•5 years ago
|
Comment 14•5 years ago
•
|
||
Thanks for the ping on this.
Regarding the UI
The dialog as it is looks a bit rough, but I don't think it's a major problem as we're focusing more on the usability rather than the interface.
I'd be more than happy to do a UI refresh in a follow up bug once this lands.
For now, focusing on readability and usability is the key.
Regarding buttons
The Fastmail UI is a decent starting point we could look at in order to get inspirations (shamefully admitting that my mock-up is inspired by that: https://bug1575195.bmoattachments.org/attachment.cgi?id=9139613).
We already have the paradigm of a bollbarbutton opening a menulist for multiple actions (Account Settings > Account Actions button at the bottom of the left sidebar).
I think the optimal solution would be to try to be smart and adapt those buttons base on the situation.
So, if the event is only one and doesn't repeat:
--------------------------
[Delete] [Edit]
--------------------------
If the event has multiple instances:
---------------------------------
[Delete ▼] [Edit ▼]
---------------------------------
With the buttons opening menulists for multiple actions.
Also, little note, let's try to always follow the semantic convention of having the Primary Action to the Right and Secondary Actions to the Left.
I guess the primary is to Edit and not Delete, so Edit should be on the Right.
Comment 15•5 years ago
|
||
(In reply to Alessandro Castellani (:aleca) from comment #14)
Also, little note, let's try to always follow the semantic convention of having the Primary Action to the Right and Secondary Actions to the Left.
I guess the primary is to Edit and not Delete, so Edit should be on the Right.
On Windows this is normally inverted.
Comment 16•5 years ago
|
||
On Windows this is normally inverted.
Yuk!
Even in our Preference/Account settings subdialogs?
Comment 17•5 years ago
|
||
(In reply to Alessandro Castellani (:aleca) from comment #16)
On Windows this is normally inverted.
Yuk!
Even in our Preference/Account settings subdialogs?
Yes, toolkit dialogs do this automatically. You only define the accept and cancel buttons and toolkit places them according to the OS.
Comment 18•5 years ago
•
|
||
Alex, thanks for the input. Lasana, let's go with what Alex describes in comment 14. To keep things more incremental, let's proceed as follows:
- In this bug let's just focus on implementing the edit button first (with menu for repeating events, etc.).
- Fix the reminders menu, bug 1651779.
- Add edit context menu item, bug 1651783
- In another follow-up bug add the delete button (with menu for repeating events, etc.)
- Any other follow-ups.
After this bug is done we'll be ready to land what we have so far. (Lasana, sorry the design is changing out from underneath you after you've already implemented it in one way.)
![]() |
Assignee | |
Comment 19•5 years ago
|
||
We already have the paradigm of a bollbarbutton opening a menulist for multiple actions (Account Settings > Account Actions button at the bottom of the left sidebar).
...
In this bug let's just focus on implementing the edit button first (with menu for repeating events, etc.).
Is this possible with
To be clear, this means reverting to using explicit buttons in the calendar-item-summary.xhtml
instead of the dialog's buttons
attribute?
Comment 20•5 years ago
•
|
||
(In reply to Lasana Murray from comment #19)
To be clear, this means reverting to using explicit buttons in the
calendar-item-summary.xhtml
instead of the dialog'sbuttons
attribute?
Hm, that's a good point. Yeah, if the dialog buttons don't support a button-with-menu (and I doubt that they do) then yeah, I think we'll need to supply our own buttons (either in the xhtml file or via JS) instead of using the built-in dialog buttons. That's unfortunate, but sounds like it will be necessary to implement this design.
Comment 21•5 years ago
|
||
![]() |
Assignee | |
Comment 22•5 years ago
|
||
This adds a button menu to the dialog if the event is repeating with the occurrence options. In those cases the accept button will be hidden.
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Comment 23•5 years ago
|
||
Here is a screenshot of how it looks on my machine. CC'ing Alessandro for opinion.
Comment 24•5 years ago
|
||
Comment 25•5 years ago
|
||
![]() |
Assignee | |
Comment 26•5 years ago
|
||
(In reply to Alessandro Castellani (:aleca) from comment #25)
Comment on attachment 9167366 [details]
with-edit-menu.pngI think this looks good.
Will this button adapt to match if the event is single or repeated? Eg. if
single we don't need the dropdown with the disabled "Edit all occurrences".
Yes. For non-repeating events a regular "Edit" button is shown.
![]() |
Assignee | |
Comment 27•5 years ago
|
||
Made the <menupopup>
a child of the <button>
I was under the impression that we could not nest data-l10n-id
when the parent has one, so I was adding the menu manually. Seems to work this way though.
Made both the single edit and repeating edit custom buttons with the single edit still retaining the dlgtype="accept"
attribute.
Cleaned up the stray stopPropagation()
calls. They should not be needed with this route as we don't hook into the "dialogaccept" event when the event repeats.
Comment 28•5 years ago
|
||
![]() |
Assignee | |
Comment 29•5 years ago
|
||
Updated the failing tests affected by this change. Introduced an invokeEditingRepeatEventDialog
function and did a little clean up from prior patches.
![]() |
Assignee | |
Comment 30•5 years ago
|
||
Try run, errors seem unrelated.
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=8264e397dca8c823aedf6e1e6d9a6503aeb60967
Comment 31•5 years ago
|
||
![]() |
Assignee | |
Comment 32•5 years ago
|
||
This is not applying cleanly for me at this point (bitrot)
You may need to apply the patches from bug 1575195 first.
What about replacing this with two functions
onEditThisOccurrence()
andonEditAllOccurrences()
...
I implemented it like this in anticipation of more menu times in the future and possibly handling the delete action here as well. I can add a throw clause at the end for invalid strings if that works.
Can we just use the new CSS file to achieve this spacing, or is the <spacer> still needed?
I can try. I was just following the markup of the dialog footer to keep things simple for now. I'll put it in the css file I created.
Comment 33•5 years ago
|
||
(In reply to Lasana Murray from comment #32)
You may need to apply the patches from bug 1575195 first.
Yep, I did that when I tried to apply this patch.
I implemented it like this in anticipation of more menu times in the future and possibly handling the delete action here as well. I can add a throw clause at the end for invalid strings if that works.
Okay, a throw clause would be good, and that works for me if you prefer that approach. (On the other hand, we could always add more functions in the future too. And if the concern is about having too many of them at the top level we could put them in a single top level object like buttonHandler.onEditThisOccurrence()
. But I leave it up to you.)
I can try. I was just following the markup of the dialog footer to keep things simple for now. I'll put it in the css file I created.
Ah, okay, good idea. It's good to keep consistency with the standard dialog footer.
Comment 34•5 years ago
|
||
![]() |
Assignee | |
Comment 35•5 years ago
|
||
Added comment on editButton.focus()
. Using individual functions instead of a switch statement for menu items.
![]() |
Assignee | |
Comment 37•5 years ago
|
||
The patches from 1575195 need to be applied in the order mentioned on bug 1575195 comment 63 otherwise hg import
will refuse to apply this one.
Comment 38•5 years ago
|
||
Comment 39•5 years ago
|
||
Updated•5 years ago
|
![]() |
Assignee | |
Comment 40•5 years ago
|
||
I left out a part from the previous patch by mistake while trying to figure out why it was not applying cleanly.
This should take care of the occurrence prompt. Sorry!
![]() |
Assignee | |
Comment 41•5 years ago
|
||
Here is another try run. Current failures seem unrelated.
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=33c906c8a06bb4c4a9647109f47be13983ce22ce
Comment 42•5 years ago
|
||
Comment 43•5 years ago
|
||
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Comment 44•5 years ago
|
||
Just fixing the typo. Sorry!
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Comment 46•5 years ago
|
||
I'm going to do a fresh clone of comm-central and do this one over manually.
![]() |
Assignee | |
Comment 47•5 years ago
|
||
Sames as the previous one except for the metadata.
I tested it with a fresh clone and applies cleanly.
![]() |
Assignee | |
Comment 48•5 years ago
|
||
Made the parameter change in this one otherwise same as before.
Comment 49•5 years ago
•
|
||
Part 1 doesn't have a proper commit message.
But why is it two patches? Isn't part2 just updating tests for part1? Such things should be kept in the same commit. Separate commits are only useful if they can be landed independently/incrementally and still not break stuff.
![]() |
Assignee | |
Comment 50•5 years ago
|
||
Commit message updated.
![]() |
Assignee | |
Comment 51•5 years ago
|
||
But why is it two patches? Isn't part2 just updating tests for part1?
It was easier on me. I would have figured out how to make the changes first then start working on the tests. I'm still getting used to testing so it would have taken some time, during which, I would have wanted some feedback on the changes.
Such things should be kept in the same commit. Separate commits are only useful if they can be landed independently/incrementally and still not break stuff.
Ok. I still want to add another test for this though, without using the elementslib stuff.
Comment 52•5 years ago
|
||
I see. But doing it that way (in general) makes it harder to review.
I think we should now squash them into one patch, since they are not independent code changes.
Comment 53•5 years ago
|
||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 54•5 years ago
|
||
Comment 55•5 years ago
|
||
Was there anything left to do in this bug, or should it be closed and other work moved elsewhere?
![]() |
Assignee | |
Comment 56•5 years ago
|
||
I want to add a test for this. Will get it done soon.
![]() |
Assignee | |
Comment 57•5 years ago
|
||
Adds a test for this change. Apologies on the delay, initially I was using this to get more familiar with the non-mozmill apis.
![]() |
Assignee | |
Updated•5 years ago
|
![]() |
Assignee | |
Comment 58•5 years ago
•
|
||
I figure this and the other calendar patch I submitted will need to be updated for the recent changes in bug 1659558
![]() |
Assignee | |
Comment 59•5 years ago
|
||
Updated for recent calendar changes. Here is a try run in progress:
Comment 60•5 years ago
|
||
Comment 61•5 years ago
|
||
Updated•5 years ago
|
Updated•5 years ago
|
Description
•