This is a sub-task of #1545922: [META] Issue page redesign, see that issue summary for the high-level picture.

This issue is about the single UI for updating an issue whenever a user wants to change *anything* about it. This includes changing the status, changing the summary, attaching additional files, anything.

Background

We discussed various possible approaches:

  • Using the edit tab
  • In place editing right on the issue page
  • Modal popup (edit form in an overlay)
  • Hidden inline update form on the issue page after the comments. Clicking the update link simultaneously toggles the visibility and scrolls the page to the update form.
  • Merged update/comment form. If any issue values were updated, submit it as a new node revision. If there's just a "reason/comment" value, submit it as a plain comment.
  • Inject a current (edit|comment) form into a hidden div at the bottom of the page, and scroll you down there automatically.

More details, pros and cons of each approach can be found in the older revision of this summary.

Given a number of considerations, for the D7 upgrade MVP we decided to stick with the core node edit UI, with some enhancements.

Remaining tasks (to make the core node edit UI not suck)

Blockers

  1. #1965124: Perform detailed security review prior to inclusion in D7 drupal.org
  2. #2001010: Convert body field on default issue node type to "Long text" (no summary)

Important

  1. #1733820: Make the 'project' entity reference field on issue nodes honor the 'project_selection_widget' setting

Post launch tasks

  1. #1964094: Discuss positioning of 'Show Hidden Files' toggle on file upload widget
  2. #1965514: Mark rows and add a warning that changes won't be saved until the form is submitted
  3. #1955854: Group together files posted in the same revision.
  4. #1956166: Auto-generate interdiffs between patch files (from patches uploaded previously).
  5. #1628034: Show current issue comments and summary when updating an issue
  6. #1966010: Provide real-time notification of concurrent edit conflicts

Completed tasks

  1. #1551228: AJAX-ify dependent fields when changing a project on issues
  2. #1559578: D7 solution for when multiple users are updating an issue simultaneously
  3. #1823346: Version field on issues can't be required on projects that have no versions
  4. #1831966: Enable and properly configure conflict.module during upgrade
  5. #1833684: Need a file widget that gracefully handles lots of hidden files
  6. #1964202: Display the number of hidden files next to the 'Show hidden files' toggle link in the file upload widget.
  7. #1965078: Allow users to remove their own newly uploaded file, even if the widget is configured to hide the remove button
  8. #1965082: Give spam-fighters a way to remove other people's files
  9. #1824560: Custom selector plugin for 'assigned' entity_reference doesn't handle project changes
  10. #1962930: Make the file upload widget as flexible as the display formatter: alter hook, configurable table columns
  11. #1970046: Properly configure issue fields on rebuild
  12. #1821570: Improve the UI for updating issue status
  13. #1977308: Make sure blocks on issue pages only display on view, not edit
  14. #1979556: Do something Special(tm) with the revision log property if the node uses nodechanges
  15. #1558630: Decide if we should do something about previewing issue updates in D7

Comments

senpai’s picture

StatusFileSize
new165.9 KB

Uploading v1 of the issue-editing-in-an-overlay wireframe .

senpai’s picture

Issue summary: View changes

Displaying the wireframe.

senpai’s picture

StatusFileSize
new206.32 KB

Uploading v2 of the issue-editing-in-an-overlay wireframe. Includes a file_upload field and a better modal overlay color.

senpai’s picture

Issue summary: View changes

Setting the width to 95%.

richthegeek’s picture

Not sure why the overlay is see-through.

The typical overlay has two properties:
* full-page covering of semi-transparent color (usually black) to make it modal (ie, other things can't happen whilst this overlay is open)
* content of the dialog has a solid background to make stuff visible (usable).

Consider more carefully the *purpose* of the elements in a design, instead of the tradition.

mustanggb’s picture

If you're asking for opinions/votes I'd personally go with option B

dww’s picture

Overlay is see-through since that's what senpai's random mockup tool provided. ;) These are *approximate* rough mock-ups for the basic functionality, not exact replicas of what the screens will look like. Why didn't you complain about the fonts and color palette, while you were at it? ;)

I know it's nearly impossible in this community, but can we please just focus on the basics and get some general agreement on that before we start nit-picking every last pixel?

Thanks,
-Derek

mikey_p’s picture

I'd like to propose

D: Hidden inline form

This is basically just the current form of having the update form at the end of the stream of comments, but make the div surrounding it hidden by default. Clicking the update button would toggle the visibility of the form, and be a link to an anchor so that clicking "update" would scroll the user to the form as well.

Pros: hidden by default, somewhat similar to current workflow, loads instantly (no page loads), allows the user to see and view other comments while composing their update
Cons: Form is at bottom of page, unexpected scrolling could disorient the user

mikey_p’s picture

Issue summary: View changes

Displaying v2 of the editing wireframe.

mikey_p’s picture

Issue summary: View changes

added cons to A & C

tvn’s picture

I'd prefer inplace editing but am concerned about the following things:

- with inplace edit separate for each field - sort of like in this wireframe - there might be too many comments as they are generated each time you edit something - title, summary, status, tags etc.
- will preview be available for issue summary in this case

senpai’s picture

@tvn, yes, that's my biggest problem right now with trying to integrate in-place editing and this new project.module issues concept. We'd have to make an 'edit all the things' button, and then take it out of edit mode with a 'save' button, which A) defeats the purpose of an in-place ajax editor, and B) essentially replaces the view|edit model we have now with something bordering on arcane (and which is not worth taking the time to iterate through because it's no better than what we have).

I'm working up a new set of wireframes today based upon a few conversations I had with Diana, Eliza411, and Webchick about who uses these tools and in what capacity. I'm also looking sideways at Leisa's mocks as I architect this thing, but it's apparent now that the initial ideas I captured aren't 'good enough'. :)

Back to the drafting table! (does anyone still use those things?)

mustanggb’s picture

Or we don't have to generate an actual comment for a change but instead have dynamic comments that are inserted at run time
i.e. Pull real comments from comments table, create dynamic comments from issue revisions table and display them both in the same list
Then in the dynamic comment creation code we can amalgamate adjacent entries in the revisions table by the same user into a single comment and work out an appropriate timestamp (I think of the first entry would make most sense)

dww’s picture

#9 sounds way too complicated and crazy. Part of why we *want* real comments for this is that we get lots of things "for free" like tracker integration, etc. Furthermore, we're aiming for a great experience here, but also less crazy (and therefore more maintainable) code under the hood.

IMHO, the better approach would be to make the UI clear and intuitive so you can just update a bunch of stuff all at once. Namely, the edit tab/modal approach as opposed to a bunch of individual fields you edit in place.

I also think having a modal (or equivalent) will make it less likely that you get conflicts during "cross-posting" since you'll only have the edit form open once you request you want to start updating something, not the moment you load the issue page in the first place. That said, it'd really be nice to avoid problems where two users are updating an issue at once and one of them can save their changes and the other just gets a "someone else edited this, you lose" message. :( That's something it might be worth pouring some Special Sauce(tm) on so that the experience doesn't completely suck. Not exactly sure what ingredients we'd need in that sauce, yet, but we should ponder it.

mustanggb’s picture

Off the back of #10 feedback it makes a lot of sense so here is another suggestion to facilitate an edit-in-place solution without the multiple comment concern.

Clicking to edit one field turns all fields to editable and a save button appears. After making changes clicking save updates the issue, generates a comment and turns all fields back to view mode.

senpai’s picture

@akamustang Yeah, that's pretty much exactly what I posited earlier in this discussion, but as I said before, I don't see the value of coding and testing all of that new functionality during a D6->D7 upgrade if all it gets us is the same workflow as clicking an edit button and having the edit form pop up in a modal overlay. Smells like scope creep to me. :)

mustanggb’s picture

Yea fair enough, it is a bit of a scope creep. Perhaps more suited to a 3.0 release than an initial port/update.

C is an awful option and would require a fallback to (probably) A anyway.

So guess going for A or D would be the thing to do at this stage.
A - Meh cons massively outway the pros
D - Great suggestion!

Bojhan’s picture

I love all the advanced ideas, but realistically this will be an edit page - as far as I know, and the accessibility team can definitively proof me wrong here are there no fully accessible modal dialog/inline text editing interfaces.

I honestly, do not see this improvement as very useful - I am happy to be proven wrong though. Because we are investing all this time and resources into inventing a whole new UI model just to accommodate status change at the top instead of at the bottom. While from my point of view its going to be more common to change the status in the flow of a discussion (therefor at the bottom).

dww’s picture

We can easily embed the edit form at the bottom in a hidden div, as mikey_p suggests in option D and make the links at the top jump you down and reveal the form. The point isn't about top vs. bottom. It's about not requiring "Post new comment" to update the issue.

Cheers,
-Derek

Everett Zufelt’s picture

After reading the issue summary and 30 seconds of consideration A and D seem relatively low impact for accessibility. B / C would require a review of a prototype. I have never seen an inline edit widget that I really liked for accessibility, and modals are completely out for d.o as far as I'm concerned.

Happy to evaluate widgets, including modals, that others find and have reason to believe are accessible.

sun’s picture

Turning the "Edit" link on the node into a jump link to the issue update/comment form at the bottom makes sense to me.

mustanggb’s picture

Why do we need separate "Update this issue" and "Add a comment" buttons?

Can't we just have it as one button that jump links to the form at the bottom of the page, submitted forms can then update the issue and generate a comment if anything has changed or just generate a comment if no issue settings have changed.

If you're worried about people changing issue settings when they don't need to then just hide that fieldset by default or put an "Also update the issue" button next to the form that magically makes the issue settings appear.

senpai’s picture

@akamustang in #18, adding a comment to an issue will *never* change any metadata about the issue, nor will it allow you to upload a patch file while doing so. Clicking 'save' on your newly typed comment will only ever generate a new comment that's attached to the node in a stream-of-discussion style. That's it.

*Everything* else is done by editing the node itself.

mustanggb’s picture

I thought during the "editing the node itself" there was going to be a box to explain the reason for the change which would then become the body of the generated comment.

If so, then what is the difference between:
- Editing the issue node without changing any metadata but adding a reason for the change
- Adding a comment in the tradition way

My presumption is that they are effectively the same...

dww’s picture

@akamustang: Yeah, that's all basically correct on a technical level. So it's interesting to consider if we should hide this detail from the end users and just have a single "Update me" workflow. However, my concerns with that are:

- Many users are confused that by adding comments they're updating the entire issue. They think all those fields are related to their own comment, not to the issue as a whole. So, I think it's a feature to have a separate "I just want to comment" workflow from "I want to update this issue". Many people just want to add their opinions and perspectives on a discussion, but they get all these fields when they try to comment and think they have to do something with them. I'd prefer that the comment form was just like any other comment form so it's obvious they're just adding a comment, nothing more.

- We're trying to remove custom magic in project_issue as much as possible, and having a node edit form that tries to figure out if they changed anything, and if not, submit a comment form instead, seems like the kinds of hacks we're trying to avoid here. We're trying to balance a "delightful experience" for our users (pardon the expression) and ensuring that project and project_issue are maintainable and extensible for a much wider community than the small handful of us who maintain the Drupal.org collaboration tools today.

dww’s picture

p.s. And for people who do know they want to actually update the issue, it's annoying to have to click twice to actually be able to do anything useful. That's why I'm less keen on "Update this issue" bringing you to a comment form where you have to click "No, really, update the issue" to actually, you know, update the issue. ;)

dww’s picture

I just split out the last paragraph of my comment #10 in here into #1559578: D7 solution for when multiple users are updating an issue simultaneously and escalated that aspect to critical.

Bojhan’s picture

StatusFileSize
new10.71 KB

So I had a chat with dww, one of the solutions we came up with is having one form at the bottom but having visual separation between Updating the issue and adding a comment. This is no perfect solution, because there is still an affordance that commenting is combined. But it does give you just one UI to do it all, and we are not making two custom UI's.

Taxoman’s picture

Personally, I am reluctant to anything that involves a dependency on the overlay module (or such effects), which should be left as an option to site developers.

In general, I am curious and positive to any development towards inline editing, and here option D) looks the most promising, "all things considered" (pros/cons, etc.).

Everett Zufelt’s picture

@Taxoman

Can you please provide a rationale for your decision? Also, are you aware of any accessible (WCAG 2.0) inline edit widgets?

Taxoman’s picture

#27: Well, performance-wise, for one, and not everybody like the overlay feature, so I think there should be an option not to use it.

I have not dug into the accessibility issues with inline editing yet, but assume that it is possible to overcome such concerns if we decide to set the focus in that direction.
(Accessibility is important, and should not be neglected.)

mustanggb’s picture

#25
Yea, something like this is what I was driving at when I said we only need one button. So much less confusing for occasional users and more user friendly for regular users.

Taxoman’s picture

#25: They could even be vertically tiled; Meta data (update categories) on the left side with the save button beneath, and comment text field to the right, so that it might be even more obvious that one does not have to fill in anything in the comment field if only wanting to update the meta data.

That is actually almost like the initial sketch at the top here, possibly with everything from "Reason" and below behind collapsed labels.

senpai’s picture

Issue summary: View changes

Added option D

dww’s picture

Issue summary: View changes

updated pros/cons on all options and split out to use ol's

dww’s picture

Issue summary: View changes

added relevant links to #1628034

dww’s picture

We need to move this forward. I just updated the summary to try to more clearly spell out some pros/cons based on further thinking about the options and a long conversation with Senpai.

We discussed the fact that sometimes you really want to be able to read the whole issue and see all the comments while you're composing your update. So, I'm reluctant to go the modal route, since that makes it harder to see the context. I submitted #1628034: Show current issue comments and summary when updating an issue as one possible solution to this, even for the approaches that wouldn't otherwise make this easy.

At this point, for ease-of-implementation reasons and because the pros tend to outweigh the cons, we're leaning towards option A and just using the core edit form (although probably with some additional UI/CSS effort to make it not quite so ugly). That said, I acknowledge it's not ideal in terms of the unified update/comment stuff from comment #25 and later. However, option D has some draw-backs, especially in terms of increasing the likelihood of weird conflicts when other users update, and additional implementation costs/effort.

I'm still willing to entertain the ideas of #25 and a unified form that has additional magic, but we don't have unlimited resources to implement all of this, and we still have a lot of other porting to do. Plus, we can always iterate and improve things after the initial launch. So for now, I'd propose we just implement this via D7 core and the smallest amount of custom code possible, get that working, and then see where we're at. If by some miracle we have lots of help and time and we're totally ready to go with everything else, we can circle back and do another iteration here. But I'm feeling the need to be hyper-pragmatic right now...

And given that we're just talking about the core edit form (more or less), I don't think we need to be worried about accessibility, so I'm removing that tag (for now). To me, that's one of the major reasons to just go with something we know is going to be accessible, since I'm worried about building something slick but not accessible.

Thanks,
-Derek

dww’s picture

Issue summary: View changes

added link to #1628042

dww’s picture

Priority: Normal » Major

FYI: I just updated the summary again to add 2 more options. E is basically my summary of Bojhan's #25. F is something Senpai and I came up with.

IMHO, every single option in this issue sucks for various reasons. :( They're either semi-reasonable UI and utterly crap to implement, or they're pretty easy to implement and crappy UI. I don't think we've found a happy compromise yet.

Other folks should feel free to flesh-out pros/cons if they think I've missed any.

Other proposals are still very welcome.

Also, bumping this to major, since we desperately need to converge on something and start implementing it in the next few days. We'd like to have something more-or-less functional that we could demo by the end of next week, if possible.

mustanggb’s picture

Priority: Major » Normal

My opinion is any option that forces you to choose if you're going to either add a comment or update the issue fields ahead of time is a step backwards. Both should be able to be done in the same place and at the same time. So I think it's worth it to spend the effort getting this right first time around.

mustanggb’s picture

Issue summary: View changes

added two new options: E (Bojhan's #25) and F (something Senpai and I came up with in IRC)

mustanggb’s picture

danepowell’s picture

Priority: Normal » Major

I updated the issue summary to include the Editable Fields module as a possible means of implementing option B (editing in place)

tvn’s picture

From all options in the issue summary now I'd consider 2 only - A and E.

I see main benefit of E - keeping workflow same as right now, what most of "old" users got used to. But if we take a look at the current comment form from new user's eyes - the form is scary with all the options available.

Another thing about this approach - I find logic a bit broken when you update everything about the issue in one place but issue summary at another. Or other way around - you are updating issue summary in one place but to change issue title you have to go to comment form?
"Edit issue" operation should let you edit everything about an issue from title, to body, to tags etc.

We could possibly think of a way to fix this even with option E, but being pragmatic about our time/resource constraints, with option A being much easier to implement than E - I'd probably go with A, recognizing that it is not ideal at all.

The main concern about option A is the change to current workflow - you'll need to decide what you want to do - edit an issue or add a comment - before doing it. Generally I would think people mostly know what they are planning to do. Or if they don't - they often realize it after saving comment anyway, we often see double comments from people with 2nd one changing issue meta data.

However I might be wrong here and I definitely don't want to see everyone frustrated after we upgrade to D7. So I'd love if we could implement A, show it on some demo site and get initial reaction from users. If it is clearly very negative, we'd then have to consider another approach.

dww’s picture

Agreed that A might be our "best" option so far. At least it basically already exists. ;) Also agreed on getting that a little cleaned up and available on a test site (along with stuff like #1628042: Implement the "Update this issue" button when viewing an issue) and then see what people actually think when trying to use it. I predict an avalanche of "it's different, I hate it!" comments, with a healthy side order of "I have to make 2 clicks, I hate it!". But, maybe we'll learn something and get some replies we don't expect.

Also note that E doesn't re-introduce the weirdness of "comment for some fields, edit for others". Maybe that's not clear from the summary. The point is that you just have a *single* form to do *everything* and if you don't actually touch any fields that update the issue, we just add a comment for you. If you touched any issue fields, we instead create a new node revision (which in turn will automatically post the new comment including the issue changes). However, it's going to be an even more massive and potentially intimidating form than the one we already have in D6, since it's also going to include the issue body (summary) and other stuff like that...

Anyway, thanks for your feedback!

Cheers,
-Derek

klonos’s picture

Since I see in-place editing being on the table here... Edit anybody?

klonos’s picture

Issue summary: View changes

Updated to include Editable Fields as an option

dww’s picture

Title: UI for updating an issue in D7 » [META] UI for updating an issue in D7

Turning this into a meta issue and updated the summary with a list of sub-tasks...

dww’s picture

Issue summary: View changes

re-organizing summary to explain the current plan and a list of sub-tasks

dww’s picture

Issue summary: View changes

moving #1559578 here (although it's already done)

senpai’s picture

Issue summary: View changes

Adding an ordered list.

dww’s picture

FYI: just updated the summary based on recent progress related to file attachments:
https://drupal.org/node/1545952/revisions/view/2432380/2640666

dww’s picture

Issue summary: View changes

Updating the summary based on recent work related to file handling for issues.

dww’s picture

Issue summary: View changes

added #1821570

tvn’s picture

Issue summary: View changes

update

tvn’s picture

Issue summary: View changes

.

tvn’s picture

Issue summary: View changes

.

dww’s picture

Issue summary: View changes

split remaining tasks into blockers, important, and wish-list (and added a few more to the wishlist)

dww’s picture

Note: tvn and I just finished updating this summary to both simplify it tremendously (all the old text about all the stuff we decided not to do is linked via an older node revision, but it's not cluttering the current summary) and to split up the remaining tasks into blocker, important and wish-list.

webchick’s picture

Any way to get a mockup of what it'll look like when done? It's a bit hard to tell from just the list of issues.

dww’s picture

We're trying to get git7site to run all the latest code so we can just start posting screenshots of how it's actually looking now with bluecheese. See #1954454: Use extended_file_field for issue node file fields for d.o D7 port. We're actually pretty close now to a workable UI. Meanwhile, here are some screenies from my local test site.

Disclaimers:
- not running bluecheese
- don't let devel_generate create your projects -- it has a fun time with your components. ;)
- #1821570: Improve the UI for updating issue status is a mess right now on my local site, so all that is fubar and needs to be resolved before this will look really good.

With that, here's the initial edit tab (so you can see nodechange's injected "Revision comment" field -- aka the comment body if you change something:
issue edit tab

Here's the file upload widget when you first load the page (thanks to Extended File Field so anyone can get this):
Default file edit widget

Here's what happens when you click "Show 2 hidden files" (and yes, the placement/size of that link isn't necessarily ideal -- that's what #1964094: Discuss positioning of 'Show Hidden Files' toggle on file upload widget is about):
File edit widget expanded to show hidden files

And here's what it looks like after you upload a file:
File edit widget after uploading a new file
Note that the 'Remove' button (and corresponding 'Operations' column) is back, but only for the file I just uploaded. Generally, once the revision has been saved, you can't remove a file, only hide it. There will have to be some kind of exception for #1965082: Give spam-fighters a way to remove other people's files -- TBD.

dww’s picture

Issue summary: View changes

added #1964094 to top of wishlist

dww’s picture

Issue summary: View changes

added #1966010 to the end of the wishlist

dww’s picture

Issue summary: View changes

added #1628034 to the wishlist

dww’s picture

Issue summary: View changes

restored completed tasks so we don't loose track of everything we did for this, and moved #1965082 there.

dww’s picture

Issue summary: View changes

separate h3 for completed

tvn’s picture

Issue summary: View changes

upd

tvn’s picture

Issue summary: View changes

.

dww’s picture

Issue summary: View changes

added #1970046 and moved #1821570 to completed

dww’s picture

Issue summary: View changes

added #1977308 as another important task

dww’s picture

Issue summary: View changes

added #1979556 as "blocker" since tvn told me to. ;) --dww

tvn’s picture

Issue summary: View changes

upd

dww’s picture

Issue summary: View changes

moved #1979556 and #1558630 to completed

drumm’s picture

Status: Active » Fixed

According to the issues linked in the summary, this is done.

#1965124: Perform detailed security review prior to inclusion in D7 drupal.org doesn't affect the UI and we are already running the module on D7 staging & dev sites.

Automatically closed -- issue fixed for 2 weeks with no activity.

Anonymous’s picture

Issue summary: View changes

added #2001010 as a blocker (since it's easier to fix pre-launch so the migration just works) --dww