Closed Bug 456385 Opened 16 years ago Closed 15 years ago

Thunderbird3: Integrate Calendar and Task mode menu items into new menu

Categories

(Calendar :: Calendar Frontend, defect, P1)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: chris.j.bugzilla, Assigned: Fallen)

References

(Blocks 6 open bugs)

Details

(Whiteboard: [needed beta][has l10n impact])

Attachments

(2 files, 2 obsolete files)

The following items need to be integrated, or removed for an integration into the new menu structure [1]

* New Calendar
* Import Calendar
* Export Calendar
* Show Work Days Only
* Show Tasks in Calendar
* Show Completed Tasks
* Rotate View -> we don't want to have this in tb3, right? ;-)
* View Day
* View Week
* View Multi Week
* View Month
* View Minimonth
* View Calendars
* View Invitations
* Go Today
* Reload Calendar
* Publish
* Delete Calendar
* Find Calendar
* Filter Tasks
* Mark Completed
* Progress
* Calendar
* Convert to

[1] https://wiki.mozilla.org/Thunderbird:Menus
Flags: tb-integration?
Flags: tb-integration? → tb-integration+
Flags: blocking-calendar1.0+
Priority: -- → P1
Keywords: uiwanted
Does link [1] above contain the final state of how the menus should look? Is tere any menu mode switching planned? Please also decide for elements above that are not supposed to be in the menus, where they should alternativly be.
Assignee: nobody → clarkbw
I'd like to see some traction on this bug...
As suggested in Bug 467909 comment 4 and Bug 467909 comment 6 it should be evaluated if Sunbird´s menuitem Go/Date that raises the date dialog should not be integrated to a menu of Lightning as a substitution for the removed datepicker beneath the minimonth in the calendar view.
Bryan, any update on this?
Assignee: clarkbw → christian.jansen
Christian put together this proposal that I think looks pretty good.  There is some integration into the view menu, otherwise everything sits in the Events and Tasks menu.

View

    Calendar
        Day View
        Week View
        Multi Week View
        Month View
        ------------
        Hide Mini Month
        Hide Calendar List
        ------------
        Show
            Work Days Only
            Tasks in Calendar
            Completed Tasks
            Rotate View Clock-Wise
        Reload
    Tasks
        Hide Mini Month
        Hide Calendar List
        Hide Task Filter



Events and Tasks

    Schedule Event
    Create Task
    ----------
    Find Calendar
    New Calendar
    ----------
    Go to Today
    ----------
    Calendar
        Open from File ...
        ------
        Import
        Export
        --------
        Delete
       
    Publish Calendar
    Tasks
        Mark completed
        Progress
        Priority

    ----------
    Convert to
        Message
        Event
        Task
    Show Invitations
(In reply to comment #5)
> Christian put together this proposal that I think looks pretty good.  There is
> some integration into the view menu, otherwise everything sits in the Events
> and Tasks menu.
> 
> View
>     Calendar
>     Tasks
Where in the view menu should these items go?


>         Hide Mini Month
>         Hide Calendar List
>         Hide Task Filter
I'd prefer to formulate these in a positive manner (i.e Show Minimonth)


> Events and Tasks
>     Schedule Event
Why not "Create Event" ?

>     Create Task
>     ----------
>     Find Calendar
>     New Calendar
>     ----------
>     Go to Today
>     ----------
>     Calendar
>         Open from File ...
>         ------
>         Import
>         Export
>         --------
>         Delete
Why don't we integrate Open/New into the File Menu? The "Calendar" submenu looks quite misplaced to me.
Keywords: uiwanted
Assignee: chris.j.bugzilla → bugzilla
Status: NEW → ASSIGNED
Whiteboard: [needed beta][has l10n impact]
Philipp will take over as this turned out too hard for me
Assignee: bugzilla → philipp
Attached patch WiP Patch - v1 (obsolete) — Splinter Review
I don't really agree to the proposal above. Sorry for bashing it, but I think the menu elements fit in much better the way they are in this patch.

Whats missing in this patch is to fine-tune all the strings to make sure it fits well and to make sure the menuitems actually do what they are supposed to and are disabled when they are supposed to.

Something to note about the menu-restructure: Its not quite clear to me how stateful menuitems should behave that are valid for more than one mode:

* making them mode dependant might confuse the user
* making them mode independant destroys the possibility to have different options
  per mode.
Attachment #363659 - Flags: ui-review?(clarkbw)
Blocks: 466170
Some comments regarding the menu structure proposal:

(In reply to comment #5)
> View
> 
>     Calendar
[...]
>         Hide Mini Month
>         Hide Calendar List

I don't we need neither "Hide" nor "Show" as a prefix if we have a menuitem of type checkbox.

[...]
>         Reload

I don't think this belongs in the View menu because it's an action and not just a setting like the other menuitems.

>     Tasks
>         Hide Mini Month
>         Hide Calendar List
>         Hide Task Filter

I don't we need neither "Hide" nor "Show" as a prefix if we have a menuitem of type checkbox.


> Events and Tasks
> 
>     Schedule Event

I agree with Philipp. "Create Event" sounds more common to me although "Schedule" might be the "better" verb.

[...]

>     Calendar
>         Open from File ...
>         ------
>         Import
>         Export
>         --------
>         Delete
> 
>     Publish Calendar

Where might the user look for these action first? "File" menu imho!

[...]


Should there be any menuitems for the "Today Pane" in the "View" menu?

Regarding the stateful menuitems, I see just following critical ones, where you must have selected a specific task/event/email to proceed:

    Tasks
        Mark completed
        Progress
        Priority

    ----------
    Convert to
        Message
        Event
        Task
This is my current menu structure as in the patch. I agree its not ideal (i.e the "Show..." issue Martin mentioned), but I think it better integrates the items into the existing menus.

In the below proposal there are probably more critical menuitems we need to think about.

=============================


File
  New
    Message
    Event
    Task
    ---
    Folder
    Saved Search
    ---
    Account
    Calendar
    ---
    AB Contact
  Open
    Saved Message
    Calendar File
  ...


Edit
  ...
  Folder Properties
  Account Settings
  Calendar Settings
  Preferences

View
  ...
  Folders
  ---
  Today Pane
    Show Today Pane
    ---
    Show Minimonth
    Show Mini-day
    Shoe none
  Calendar
    Day
    Week
    Multiweek
    Month
    ---
    Minimonth
    Calendar List
    ---
    Current View
      Workweek days only
      Show Tasks in view
      Show Completed Tasks
      Rotate View
  Tasks
    Filter Tasks
    ---
    All
    Today
    Next 7 Days
    Not Started
    ...(our other filters)...
  ---
  Sort by
  ...

Go
  ...
  Forward
  Back
  Today
  ---
  Mail Start Page


Events and Tasks
  New Event
  New Task
  ---
  Calendar
  Tasks
  ---
  Export
  Import
  Publish
  Delete Selected Calendar
  ---
  Mark Completed
  Priority
    Not specified
    Low
    Medium
    High
  ---
  Find Events
Blocks: 492723
Large patches always tend to give you the feeling you need lots of time to fix it right. I've finally found some time to sit down and work on this. Since I haven't gotten any answer on the previous comment, I'm going to finish this patch and send it through review.
Attached patch Fix - v2 (obsolete) — Splinter Review
This is the patch, in its full beauty. Assigning primary review to dbo, but I'd appreciate if others could take a look also.
Attachment #379483 - Flags: ui-review?(clarkbw)
Attachment #379483 - Flags: review?(dbo.moz)
Attachment #363659 - Attachment is obsolete: true
Attachment #363659 - Flags: ui-review?(clarkbw)
Looks good on first glance.
Attachment #379483 - Flags: review?(dbo.moz) → review?(mschroeder)
Comment on attachment 379483 [details] [diff] [review]
Fix - v2

We have a new volunteer :-)
Comment on attachment 379483 [details] [diff] [review]
Fix - v2

I think the File -> New -> Event, Task, Calendar is unnecessary.  It's both a duplicate and I don't think people would go there when there is already an Events & Tasks top level menu.  

Otherwise it looks good to me.

I like the Edit -> Cal Settings, that makes a lot more sense.
Comment on attachment 379483 [details] [diff] [review]
Fix - v2

This is a a review with two parts: code and functional review. I will start with the results of my code review. In general, I seems the ids for the menuitems are not consistent. Maybe you can have another look, but it is not that important.

>diff --git a/calendar/base/content/calendar-task-tree.js b/calendar/base/content/calendar-task-tree.js
>--- a/calendar/base/content/calendar-task-tree.js
>+++ b/calendar/base/content/calendar-task-tree.js
>@@ -286,16 +283,14 @@
> }
> 
> /**
>- * Toggle the completed state on tasks retrieved from the given event.
>+ * Toggle the completed state on selected tasks.
>  *
>- * XXXberend Please clarify if this is correct and describe more clearly.
>- *
>- * @param aEvent    The command event that holds information about the tasks.
>+ * @param aEvent    The originating event, can be null.
>  */
> function toggleCompleted(aEvent) {
>     if (aEvent.target.getAttribute("checked") == "true") {
>+        contextChangeTaskProgress(aEvent, 0);
>+    } else {
>         contextChangeTaskProgress(aEvent, 100);
>-    } else {
>-        contextChangeTaskProgress(aEvent, 0);
>     }
> }

Check if aEvent is null?


>diff --git a/calendar/lightning/content/lightning-scripts.inc b/calendar/lightning/content/lightning-scripts.inc
>--- a/calendar/lightning/content/lightning-scripts.inc
>+++ b/calendar/lightning/content/lightning-scripts.inc
>@@ -46,11 +46,3 @@
> <script type="application/javascript" src="chrome://lightning/content/messenger-overlay-sidebar.js"/>
> <script type="application/javascript" src="chrome://lightning/content/messenger-overlay-toolbar.js"/>
> <script type="application/javascript" src="chrome://calendar/content/calendar-invitations-manager.js"/>
>-<script type="application/javascript">
>-    var calendarmenulabel = "&lightning.calendar.label;";
>-    var calendarmenuaccesskey = "&lightning.calendar.accesskey;";
>-    var messagemenulabel = "&msgMenu.label;";
>-    var messagemenuaccesskey = "&msgMenu.accesskey;";
>-    var tasksmenulabel = "&lightning.tasks.label;";
>-    var tasksmenuaccesskey = "&lightning.tasks.accesskey;";
>-</script>

Please, also remove the line including messenger-overlay-toolbar.js as you remove it with your patch.


>diff --git a/calendar/lightning/content/messenger-overlay-sidebar.js b/calendar/lightning/content/messenger-overlay-sidebar.js
>--- a/calendar/lightning/content/messenger-overlay-sidebar.js
>+++ b/calendar/lightning/content/messenger-overlay-sidebar.js
>@@ -133,6 +133,7 @@
>     var filter = document.getElementById("task-tree-filtergroup");
>     filter.value = filter.value || "all";
>     document.getElementById("modeBroadcaster").setAttribute("mode", gCurrentMode);
>+    document.getElementById("modeBroadcaster").setAttribute("checked", "true");
> 
>     let mailContextPopup = document.getElementById("mailContext");
>     if (mailContextPopup)

What is the 'checked' attribute for?


>+function ltnSwitch2Mail() {
>+  if (gCurrentMode != 'mail') {
>+    var switch2mail = document.getElementById("switch2mail");
>+    var switch2calendar = document.getElementById("switch2calendar");
>+    var switch2task = document.getElementById("switch2task");
>+    switch2mail.setAttribute("checked", "true");
>+    switch2calendar.removeAttribute("checked");
>+    switch2task.removeAttribute("checked");
>+
>+    gCurrentMode = 'mail';
>+    document.getElementById("modeBroadcaster").setAttribute("mode", gCurrentMode);
>+
>+    document.commandDispatcher.updateCommands('calendar_commands');
>+
>+    // Disable the rotate view menuitem
>+    document.getElementById("calendar_toggle_orientation_command")
>+            .setAttribute("disabled", "true");
>+    window.setCursor("auto");
>+  }
>+}

Why is the rotation of day/week view handled here?


>diff --git a/calendar/lightning/content/messenger-overlay-sidebar.xul b/calendar/lightning/content/messenger-overlay-sidebar.xul
>--- a/calendar/lightning/content/messenger-overlay-sidebar.xul
>+++ b/calendar/lightning/content/messenger-overlay-sidebar.xul

>+        <menuitem id="tasks-view-filter-all"
>+                  name="filtergroup"
>+                  value="all"
>+                  type="radio"
>+                  command="calendar_task_filter_command"
>+                  label="&calendar.task.filter.all.label;"
>+                  accesskey="&calendar.task.filter.all.accesskey;"/>

name="filtergroup" seems to be obsolete for this and the other menuitems!


>diff --git a/calendar/locales/en-US/chrome/calendar/menuOverlay.dtd b/calendar/locales/en-US/chrome/calendar/menuOverlay.dtd
>--- a/calendar/locales/en-US/chrome/calendar/menuOverlay.dtd
>+++ b/calendar/locales/en-US/chrome/calendar/menuOverlay.dtd

>-<!ENTITY calendar.export.calendar.label         "Export Calendarâ?¦">
>-<!ENTITY calendar.export.calendar.accesskey     "E">
>+<!ENTITY calendar.export.label                  "Exportâ?¦">
>+<!ENTITY calendar.export.accesskey              "E">

Why do you drop the 'Calendar' part?


>-<!ENTITY calendar.importcalendar.label          "Import Calendarâ?¦">
>-

Why do you drop the 'Calendar' part?
(In reply to comment #15)
> (From update of attachment 379483 [details] [diff] [review])
> I think the File -> New -> Event, Task, Calendar is unnecessary.  It's both a
> duplicate and I don't think people would go there when there is already an
> Events & Tasks top level menu.
I just thought it may make sense for sake of consistancy. Different users may have different ways of creating new items. Users that are used to using File > New > Message may wonder why there is no File > New > Event. Your call, should I really remove them?
Comment on attachment 379483 [details] [diff] [review]
Fix - v2

Now the observations from functional review. Maybe some issue are better suited for follow-up bugs. ;)

'View' menu:
------------
* 'Calendar > Minimonth' enables/disables the minimonth also in Task mode, intended?
* 'Tasks' enabled in Calendar tab, intended?
* Missing 'Show Tasks', 'Show Events', 'Show Events and Tasks' are needed for 'Today Pane'.
* Possibility to change calendar view in Task tab should be removed.
* 'Current View > Workweek Days Only' active in calendar day view where it does not make sense
* 'Tasks': No filter selected after start up
* 'Rotate View' the same for day & week view, intended?

'Go' menu:
----------
* Separator above 'Today'

'Events and Tasks' menu:
------------------------
* 'Find Events' also active in Task mode, intended?
* Missing 'Privacy', 'Priority' and 'Status' for editing events and task.
* Today Pane in Mail tab does not allow to edit a shown task using the 'Events and Tasks' menu.
* Contrast problem with <menupopup type="task-priority"/> (with Windows XP, Classic theme; also see additional attachment).
Comment on attachment 379483 [details] [diff] [review]
Fix - v2

r-, but just to set a flag, and because I want to have a look at the next/final patch. ;)
Attachment #379483 - Flags: review?(mschroeder) → review-
Hardware: x86 → All
(In reply to comment #16)


> > function toggleCompleted(aEvent) {
> Check if aEvent is null?
I think we shouldn't. Since the function only works if there is an event anyway, we should not swallow the error if no event is passed to make sure developers don't accidentally forget to pass the event.

> >+    document.getElementById("modeBroadcaster").setAttribute("checked", 
> What is the 'checked' attribute for?
Not quite sure, I moved this out of ltnInitializeMenus, I think things didn't work without.

> >+function ltnSwitch2Mail() {
> Why is the rotation of day/week view handled here?
Good question. Probably historical reasons. I moved this into our command handler.

> name="filtergroup" seems to be obsolete for this and the other menuitems!
In case someone decides to put another radio group into that menu, I'd rather leave them in there.

> >-<!ENTITY calendar.export.calendar.label         "Export Calendarâ?¦">
> >-<!ENTITY calendar.importcalendar.label          "Import Calendarâ?¦">
> Why do you drop the 'Calendar' part?
Because I changed the entity (also, why another calendar when there is already one? ;-)

(In reply to comment #18)
> 'View' menu:
> ------------
> * 'Calendar > Minimonth' enables/disables the minimonth also in Task mode,
> intended?
> * 'Rotate View' the same for day & week view, intended?
Kind of. This is one of the issues mentioned in the above comments. How do we decide whether a menuitem is mode dependant or not? Doing so may make it confusing for the user, but not doing so may make users complain that they can not set it independantly.



> * Missing 'Show Tasks', 'Show Events', 'Show Events and Tasks' are needed for
> 'Today Pane'.
Did we have this before?

> * Possibility to change calendar view in Task tab should be removed.
Kind of hard to do, we don't want to disable those commands since they are also used to switch from mail mode to calendar mode. Disabling the menu might work, but right now hiding the minimonth is not mode-dependent. I'll leave this for later.

> * 'Tasks': No filter selected after start up
Works for me


> 'Events and Tasks' menu:
> ------------------------
> * Missing 'Privacy', 'Priority' and 'Status' for editing events and task.
We don't have bindings for status and privacy. I added progress though, priority was already there. Unfortunately there is a problem here again with selection and focus. right now todo_items_selected returns true if you select a task and then switch modes, we have no good and easy way to check if any <calendar-task-tree> is visible. I'll leave this to a follow up bug too.


> * Today Pane in Mail tab does not allow to edit a shown task using the 'Events
> and Tasks' menu.
Same issue, same follow up bug.


> * Contrast problem with <menupopup type="task-priority"/> (with Windows XP,
> Classic theme; also see additional attachment).
I have no working windows platform to develop this on, maybe you can look into this? Otherwise followup bug.


Other issues taken care, will attach patch later
Attached patch Fix - v3Splinter Review
Attachment #379483 - Attachment is obsolete: true
Attachment #383237 - Flags: review?
Attachment #379483 - Flags: ui-review?(clarkbw)
Attachment #383237 - Flags: review? → review?(mschroeder)
(In reply to comment #17)
> (In reply to comment #15)
> > (From update of attachment 379483 [details] [diff] [review] [details])
> > I think the File -> New -> Event, Task, Calendar is unnecessary.  It's both a
> > duplicate and I don't think people would go there when there is already an
> > Events & Tasks top level menu.
> I just thought it may make sense for sake of consistancy. Different users may
> have different ways of creating new items. Users that are used to using File >
> New > Message may wonder why there is no File > New > Event. Your call, should
> I really remove them?

Since it's a submenu I don't think it's a big deal to leave them in and is a win for consistency.
Attachment #383237 - Flags: review?(mschroeder) → review+
Comment on attachment 383237 [details] [diff] [review]
Fix - v3

Two things you could have a look at before checkin:
* Setting priority from the menu does not work for events.
* View > Calendar should be disabled in Mail mode.

I still observe problems with no selected filter, and also no priority/progress for selected tasks. For this and other issues followup bugs should be filed.

r=mschroeder
Blocks: 499472
Blocks: 499474
Blocks: 499475
Blocks: 499476
Blocks: 499478
Blocks: 499480
(In reply to comment #24)
> (From update of attachment 383237 [details] [diff] [review])
> Two things you could have a look at before checkin:
> * Setting priority from the menu does not work for events.
This causes some more work, since the binding is currently only implemented for the selected tasks. I filed a followup bug for this.

> * View > Calendar should be disabled in Mail mode.
Done


I have filed the following followup bugs: 

bug 499472 - Menu View > Tasks: No filter selected at startup
bug 499474 - Task operations can be done when selecting a task and then changing modes
bug 499475 - Task in Today Pane in Mail mode does not allow editing using the 'Events and Tasks' menu
bug 499476 - Text color is wrong for menus that use the "task-priority" binding
bug 499478 - Can't set priority for events from the new "Events and Tasks" menu
bug 499480 - Create bindings or menu items for setting progress and status from the events and tasks menu
Pushed to comm-central <http://hg.mozilla.org/comm-central/rev/ffb301b5cd6b>

-> FIXED
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Target Milestone: --- → 1.0
Target Milestone: 1.0 → 1.0b1
You need to log in before you can comment on or make changes to this bug.