Problem/Motivation
When creating a date format, when typing the PHP format the focus is lost. Moving the cursor also makes that the focus is lost. So you end writing your format in a text editor and pasting it in Drupal.
Proposed resolution
The focus should not be lost. Additionally, it is not actually necessary to send an Ajax request. The proposed solution instead provides sample formatting values to the form element so that the sample output can be generated entirely on the client side, without the overhead of extra requests.
Beta phase evaluation
Issue category | Bug because this is definitely not the intended behavior. |
---|---|
Issue priority | Major because the form is virtually unusable, but not critical because there is a workaround (typing the value first and pasting it in the field) and only this one form is impacted. |
Prioritized changes | The main goal of this issue is a usability bugfix, so it is a prioritized change during the beta. |
Disruption | Minor changes to the date format form which would impact modules altering this form. The system JS files are also moved to a subdirectory (as of #62 - #65). |
Remaining tasks
The patch has been manually tested and was reviewed by a JavaScript maintainer in an earlier version. Automated testing for the form element is not possible because the patch now uses a purely JS approach. Patch needs final review (and possibly a unit test for the new getSampleDateFormats()
method).
User interface changes
Date format preview is shown in real time, but without losing focus.
API changes
None.
Comment | File | Size | Author |
---|---|---|---|
#140 | Screen Shot 2015-05-16 at 11.55.15.png | 181.27 KB | vijaycs85 |
#140 | Screen Shot 2015-05-16 at 11.55.04.png | 211.22 KB | vijaycs85 |
#140 | 2429443-diff-136-140.txt | 4.35 KB | vijaycs85 |
#140 | 2429443-140.patch | 20.12 KB | vijaycs85 |
#136 | 2429443-diff-134-136.txt | 3.13 KB | vijaycs85 |
Comments
Comment #1
geertvd CreditAttribution: geertvd commentedI can confirm this one, looks like a system.module issue though.
Comment #2
geertvd CreditAttribution: geertvd commentedThis at least makes it a bit more usable. I think there is still room for improvement though.
Comment #3
penyaskitoThanks @geertvd! Patch works as expected. However we should have test coverage exposing the bug and ensuring the fix is right.
Comment #4
geertvd CreditAttribution: geertvd commentedAs far as I know it's not possible to test (using simpletests) if an element lost focus or not. In any case someone else should probably have a look at this since the fix is not really ideal.
Comment #5
penyaskitoShouldn't we test that the InvokeCommand is added at least?
Comment #6
xjmThis bug is maddening for sure. Things like the Add field form write to the page output without the field losing focus -- maybe we could look at how those work? (I thought the Place Block form used to as well but it's not behaving as I expect.)
WRT test coverage, there's some POST testing of the form in
\Drupal\system\Tests\Common\FormatDateTest
; maybe we could add web test coverage for the Ajax there? (The unit test coverage for the commands themselves is in\Drupal\Tests\Core\Ajax\AjaxCommandsTest
, for reference, and also a wholeajax_forms_test
test module it uses.)Comment #7
geertvd CreditAttribution: geertvd commentedI don't think the add form field does an ajax call on textinput, any idea where something like that is happening besides the date format form?
I'll try that.
Comment #8
xjmYeah true, that may be just Javascript. (Though actually, is there any reason the date format form couldn't also be purely client-side? All it's doing is calculating the rendered output based on the date formula. I guess It'd require something like http://phpjs.org/functions/date/ for that since it's about the PHP date format.)
Anyway, autocomplete the other example I can think of that does an Ajax call on input keystrokes, but that probably doesn't have the same problem since the rewriting is done in the field that already has focus. And actually, turns out that autocompletion doesn't use our Ajax API at all; FAPI just includes an #autocomplete_route_name property which attaches its own separate JS library and returns its own JSON response as far as I can see.
I grepped for:
grep -rl "use Drupal\\\\Core\\\\Ajax" *
Modals, editor, the upload widgets, Views UI... nothing that seems exactly analogous.
TBH I'm fine with the fix, though it does seem unintuitive that this would require two separate commands. "Do a thing and retain current focus" seems like a pretty basic expectation for Ajax. I'll ping a couple people who might know more about the API.
Comment #9
geertvd CreditAttribution: geertvd commentedThat was my guess also.
While I was investigating this a bit further I stumbled on #1904912: Display updating Javascript triggered in Format string of date formats interfers with keyboard navigation, not clear to me which one should stay open.
Definitely worth looking into.
Comment #10
vijaycs85+1
http://jsfiddle.net/vijaycs85/3834m8fz/1/ just does the jquery format very well.
Comment #11
Wim LeersPatch looks legit, but this points to one of the major flaws in our AJAX API. For as long as the client is talking to the server (i.e. Drupal), focus is going to be lost. This should not be implemented using purely the AJAX API, but should have some custom JS to avoid this.
Give this a try while adding a
sleep(4)
in the AJAX callback. I'm sure you'll find it incredibly frustrating still.Changing it to the
blur
event instead ofkeyup
would be better already.Comment #12
Wim LeersOh, #8 & #10 +++++, yes, this could and should be purely client-side, for the reasons outlined in #11.
Comment #13
geertvd CreditAttribution: geertvd commented$.datepicker.formatDate()
and PHP's dateformatter format characters don't match though.D7 didn't use the ajax api for this, I think we should do the same thing and do some custom ajax implementation here.
Comment #14
vijaycs85Looks like all we need is to just generate this array(in demo link) and set it in Drupal.settings.
http://jsfiddle.net/vijaycs85/3834m8fz/2/
Comment #15
geertvd CreditAttribution: geertvd commented#14 seems like a very fragile approach wouldn't go down that lane.
Comment #16
vijaycs85#15: Do you have any scenario in mind that would fail with this approach? It looks fine to me?
Here is a patch. Can be improved a lot. This is MVP (minimal viable product) to prove that this approach can work.
Comment #17
geertvd CreditAttribution: geertvd commentedTried this, it works smoothly. Still some formatting issues and we should probably implement this for the translate form also.
Still not a big fan of sending the $date_chars array via js settings like this, somehow this seems like a dirty approach.
Can't find anyway this might break though (besides the fact that it's not showing the real time date but that can be ignored IMO).
Still I'd like to hear someone else's opinion on this.
Comment #18
Wim LeersCan individual fields associate a specific timezone? If so, the data sent via JS settings won't be universally applicable.
This removes another occurrence of "talking to the server needlessly", so I'm happy with that, but also have my doubts about the approach — it feels icky, but can't immediately think of something better :)
Assigning to our JS maintainer, nod_, to get his feedback.
Comment #19
Wim LeersSince this still needs more reviews, back to NR.
Comment #20
Fabianx CreditAttribution: Fabianx commentedI like that approach, kinda slick to run the date() function in JS, when all it does is string replacements anyway :).
Comment #21
nod_I'd be cool with the JS date function. Not too keen on adding new JS for this, see below.
In the end it's somewhat of a gimick, we don't do that for image format for example. Since we say 'refer to the PHP doc' I don't see why we absolutely have to make a dynamic preview. Once you save the format you get a preview anyway. We could just get rid of all the JS/PHP involved.
Comment #22
Fabianx CreditAttribution: Fabianx commentedI really like that gimmick though and it has helped me in the past to find the right date format.
I think it would be a UX regression if we removed it and that JS is only added conditionally on this admin page, so should be fine.
Comment #23
geertvd CreditAttribution: geertvd commented+1 on keeping that gimmick
Comment #24
Fabianx CreditAttribution: Fabianx commentedAs it is JS it can't have tests right now. It was manually tested by several people though.
As that approach has gotten a +1 from xjm (originally proposed client side) and Wim and a 'meh' (at least that is my interpretation) from nod_ and several have said it would be nice to keep this functionality, and the code looks good, I think this is ready to go.
Hence: RTBC
Comment #25
geertvd CreditAttribution: geertvd commentedThis is still not working for the same form in config_translation though.
Comment #26
geertvd CreditAttribution: geertvd commentedComment #27
Wim Leers#24: I hadn't actually reviewed the code yet, only the concept. Here's a review.
The indentation of the first quoted line is fine.
All other quoted lines are intended too much though.
Needs docs.
Let's put these on a single line, or even better, do something like
$date_chars = explode('', 'dDjlNS…')
— that will be easier for futuregit blame
ing, to see why the list of available "date chars" has changed.Comment #28
nod_JS file should be in the system module, not misc.
Eslint errors should be fixed.
Please add some data- attribute that we can use to select relevant elements, we don't want to rely on classes or ids.
Also it's probably a good idea to use
.once()
on them.$
is only for jQuery-related variables, this is just an array, no need for it here.Pick one way of declaring functions, I suggest you pick the one used for
dateFormatHandler
Also functions should be at the top, or at the very least, before they're used in the code.
Comment #29
vijaycs85Cool, thanks for summarising @Fabianx and all for valuable input. I'll work on both #27 and #28 and may be some tests.
Comment #30
vijaycs85#27:
1. Fixed.
2. Fixed.
3. Fixed.
#28:
1. Not Fixed - Tried like some other core example(e.g. data-table), but no luck. Will try again later. any help/tip/ most welcome.
2. Not Fixed - Same as above^
3. Fixed - Moved.
On top of those reviews, this patch touches few more items:
1. Moved all system module js to system/js/
2. Removed the form() override of DateFormatEditForm
3. Unified preview text prefix - Looks like we used to have 'Displayed as' for edit and nothing for add.
Yet to do:
1. Fix #28.1
2. Add test.
3. Fix other instances like config_translation.
4. Eslint errors should be fixed.
Comment #32
vijaycs85Fixed test fails...
Comment #33
vijaycs85Here is the patch to fix this element in config_translation module. Added D8MI tags to get the review from them.
Side-effect is, now we get the format displayed in the translated language (attached screenshot).
Fixes:
1. Fix other instances like config_translation.
Yet to list:
1. Fix #28.1
2. Add test - It doesn't look like we can test this in UI.
3. Eslint errors should be fixed.
Comment #34
vijaycs85Comment #35
Gábor HojtsyThat's only one of the arguments, can you please explain the others (and document this one too?)
Also why are you duplicating this code in two places? Can we reuse the same code in config translation?
Please explain what form attributes may be and what kind of return values are possible.
@inheritdoc missing
Comment #36
vijaycs85Updated as per #35
Comment #37
Gábor HojtsyCan you please post an interdiff?
Comment #38
vijaycs85sorry, forgot to upload.
Comment #39
Wim LeersThis wasn't the case yet?
Comment #40
vijaycs85We had all options, but wasn't implemented
never handled language code part.
Comment #41
Gábor HojtsyAll right, I tried this manually too, it works like a charm, real great work. Its way better than before and we don't need the HTTP roundtrip indeed when we can do it all on the client :) I was thinking of test coverage but not sure how can that be done at this point (no frontend tests possible). So just some more nitpicks left AFAIS:
What if not provided? Let's document that it falls back on the current language of the request.
These are never provided in the calling code now. Why do we need them to be possible to provide? If we need them to be optional, let's document what it means when they are not provided.
One too many spaces.
One too many blank lines.
Comment #42
vijaycs85#41.1 - Fixed.
#41.2 - Documented. We are sending all the param that DateFormatter->format() accept to make this function flexible to use other places (e.g. config_translation need to pass langcode, but not the origin date format form.)
#41.3 - Fixed.
#41.4 - Fixed.
Yep, there isn't anyway to test this UI. May be we can add some unit test for the getSampleDateFormat() method.
Yet to fix:
1. Eslint errors should be fixed.
2.
Please add some data- attribute that we can use to select relevant elements, we don't want to rely on classes or ids.
Also it's probably a good idea to use .once() on them.
Comment #43
Gábor HojtsyAs per https://www.drupal.org/coding-standards/docs#param optional params should get a doc line prefix "(optional)"
Comment #44
vijaycs85Updated as per #43.
Comment #46
Gábor HojtsyGreat, looks good for me, works well. No concerns left on my end. Copied remainng tasks from #42 to issue summary.
Comment #47
nod_Simplified the code and fixed the issues left.
I'm using the formUpdated event, while making the patch I noticed it wasn't complete so I'll open a followup to fix it (try hitting backspace, it doesn't update the form). But it's not a concern for this issue.
@Gabor: what about :
Isn't it a translation issue?
Comment #48
vijaycs85great cleanup @nod_. It looks much better now.
IMHO, this issue is a no-go, without the back space fix.
Comment #49
Fabianx CreditAttribution: Fabianx commentedIndeed, good catch, this needs to be:
The context is a little tricky, but not sure its better to put em into the text.
Comment #50
nod_Reused the thing from DateFormat.
Comment #51
Gábor HojtsyI think the remaining tasks in the summary are not up to date. What is left to be done here?
Comment #52
vijaycs85Comment #53
vijaycs85Comment #54
xjmTested manually; this is so much better. The patch is so so much more usable than what is in HEAD.
The fact that backspace doesn't work is indeed a bug, but I think that's just a normal bug. It only matters if you only press backspace and do not enter anything new in the field; a workaround is to simply re-enter a different character in the string.
That said, if we do want to fix the thing with the backspace before this goes in, then this is NW.
Comment #55
xjmSorry wrong screenshot.
Comment #56
xjmPer #54 / #55.
Comment #57
xjmOh, I just noticed forward-delete also has the same bug. No idea what character that is...
Comment #58
nod_You mean delete?
Comment #59
Fabianx CreditAttribution: Fabianx commentedShould we just use .change() event for now with a @todo to change it back to .formUpdated() even once the bug fix for that lands?
Comment #60
nod_It's the same thing, formUpdated uses change event as well as keypress. The issue here is that keypress is not triggered for keys that don't add a character of some sort. It doesn't register copy/paste either. That's why we need a more comprehensive formUpdated event and that's outside of this scope.
Comment #61
nod_Comment #62
vijaycs85Let's go with the normal event on this issue. We can replace them with formUpdated as part of #2456225: Improve formUpdated event.
Comment #63
xjmI manually tested again and confirmed the delete bug is gone. Yay!
I made some docs improvements (attached). A few other questions:
I didn't touch this, but is there a reason we're not injecting a dependency on the date formatter? Edit: I guess my comment is out of scope since it was already using
\Drupal::service()
in HEAD, two lines down, and we're just assigning the service to a variable to use it again later.Is moving these files really in scope? (Maybe it is, just seemed a bit like an unrelated cleanup.)
Comment #65
xjmOops.
Comment #66
xjmAdding a beta evaluation to the summary.
Should we add a unit test for this method?
Comment #67
rteijeiro CreditAttribution: rteijeiro commentedJust fixed a couple of nitpicks.
Comment #68
vijaycs85Thanks @rteijeiro. I'm working on the unit-testing. Currently introduced two follow ups - #2457345: Remove unnecessary formatDate call for 'custom' format & code cleanup. and #2457251: Remove unnecessary call to drupal_get_user_timezone() in Drupal/Core/Datetime/DrupalDateTime::prepareTimezone() method.
Comment #69
tim.plunkettWhy not just use $timezone? This assignment to $tz looks like a no-op
I think this should overwrite $timestamp instead of abbreviating to $ts, which we usually don't do.
Is this related? Can we get a code comment and some test coverage?
Should use new []
Comment #70
rteijeiro CreditAttribution: rteijeiro commentedAddressed @tim.plunkett points 1, 2 and 4. Not sure about point 3. Also fixed wrong type in js comment.
Comment #71
xjmHm, as per @tim.plunkett's comment, do we need this at all? The default is NULL. If someone passes in FALSE, zero, or emptystring, do we need to recast that?
Comment #72
rteijeiro CreditAttribution: rteijeiro commentedYou are right! Just skipped that, sorry.
Comment #74
tim.plunkettSame goes for this. No need to rename the variable. Sorry for missing it earlier.
Comment #75
vijaycs85Adding test... added changes from #2457345: Remove unnecessary formatDate call for 'custom' format & code cleanup. and #2457251: Remove unnecessary call to drupal_get_user_timezone() in Drupal/Core/Datetime/DrupalDateTime::prepareTimezone() method. to make the test work. Since they are not *JUST* to fix this test, added as separate issues(easy to get them in as well).
Reg #69.3 - Yes, they are related to this issue on config_translation module part. Will add some test coverage...
Comment #76
tim.plunkettYou shouldn't have to do either of these, but definitely not both!
Comment #77
vijaycs85good catch @tim.plunkett. Removing it.
Comment #78
vijaycs85AFAIK, #69.3 - "Add test coverage for getFormAttributes()" is the only pending item.
Comment #79
rteijeiro CreditAttribution: rteijeiro commentedA few nitpicks more :)
Comment #80
nod_The current code to declare variables in the JS is according to standards. We want several
var
, not just one.Comment #81
rteijeiro CreditAttribution: rteijeiro commentedSorry for the mess :(
Comment #82
vijaycs85Reroll after #2457251: Remove unnecessary call to drupal_get_user_timezone() in Drupal/Core/Datetime/DrupalDateTime::prepareTimezone() method. is in.
Comment #83
andypost$date_characters = str_split('dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU');
more readable
@return should be updated, also confusing to returning NULL when string expected
Needs description for param, and setters mostly returns themselves.
Maybe better setCountryCode() better?
Comment #84
vijaycs85fixed items in #83. thanks @andypost
Comment #86
vijaycs85Comment #87
rteijeiro CreditAttribution: rteijeiro commentedSorry for the nitpicks again :(
The rest of the code looks good! :)
Comment #88
vijaycs85In this patch:
1. removed changes related to #2457345: Remove unnecessary formatDate call for 'custom' format & code cleanup.
2. Addressed #69.3
I think, all done here and ready for reviews...
Comment #94
xjmWhen a patch fails the bot multiple times like that, we should investigate why rather than continuing to requeue it... Actually we should do that also when it fails only once, but especially when it fails multiple times. I'd like to see the exact failure documented on this issue with an explanation.
Comment #95
vijaycs85Sorry, I should have done some documentation before sending the patch in #88 to test second time. However the reason behind testing twice is, the only change that I added in #88 compare to #87 is one line addition in test file. However just that change works fine(no fatal) in test-only patch. Finally sent #87 to make sure, still it's fine.
Anyway, sorry for the noise...
Comment #96
penyaskitoRerolled, automatic 3-way merge.
Comment #99
penyaskitoFixed the exception with
core/tests/Drupal/Tests/Core/Datetime/DateTest
.Comment #101
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedGenerally looks good. Some feedback on the php code:
You shouldn't use the REQUEST_TIME constant, but the one on the $_SERVER object. See #2459155: Remove REQUEST_TIME from bootstrap.php.
"if there are any attributes on the form element"? Or just drop the whole comment, since the code is readable enough.
REQUEST_TIME should not be used.
'Make sure that the date library is added.'
$timestamp is not that long of a variable name ;)
Comment #102
Fabianx CreditAttribution: Fabianx commented#101: Thanks for the review, I want that this patch can go in some time, so gonna add a focus based reply - even though its not my own patch.
1. / 3. : Yes, REQUEST_TIME is deprecated, but it is pre-existing in this class and the code only moves it and hence this should be done in a follow-up to keep this patch focused. Unless the author really wants to do so ...
2./4. Agree
5. Yep, abbreviations are a coding style violation. Good catch!
Comment #103
penyaskitoAttended #101, #102. Thanks for the reviews!
Comment #104
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedI manually tested this again to verify this still works as expected, and it does.
I looked over the new patch again. This looks almost ready, but I fear I have found some more nitpicks (see below). After those are fixed, we can RTBC this.
This comment should be adjusted as well: "The request time"
This should be @covers instead of @see?
Comment #105
gloob CreditAttribution: gloob commentedNitpickers free ;-)
I added:
- * @see \Drupal\Core\Datetime\DateFormatter::formatInterval()
+ * @covers \Drupal\Core\Datetime\DateFormatter::formatInterval()
because I think is also covering that method instead that using a reference to check that method. Maybe I'm wrong.
Comment #106
gloob CreditAttribution: gloob commentedComment #107
penyaskitoComments should be max 80 chars length.
Suggestion: "(optional) The Unix timestamp to format, defaults to the request time."
Comment #108
gloob CreditAttribution: gloob commentedShortened the comments to less than 80 chars length.
Comment #110
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedComment looks good now.
Remove the parentheses at the end to fix the test failures.
Comment #112
geertvd CreditAttribution: geertvd at XIO commentedShould be @covers and without parentheses.
Comment #113
gloob CreditAttribution: gloob at Cocomore AG commentedAddressed #110 and #112.
Comment #114
gloob CreditAttribution: gloob at Cocomore AG commentedComment #115
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedThis looks almost ready. The patch already looks great, IS is up to date and we have a beta evaluation. And manually testing reveals that this works very smooth!
I just have one question left:
It seems like this is only added to be able to set the country code in a test case. Can we alter 'country.default' from the 'system.date' in that test case instead?
Comment #116
vijaycs85Thanks for the review @pjonckiere. Here is the patch...
Comment #117
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedI think this is ready now.
Comment #119
xjmI now get to commit this patch -- yay! (My work on it was minor and awhile ago; there have been many thorough reviews since.)
This issue addresses a major bug and is allowed per https://www.drupal.org/core/beta-changes. Committed and pushed to 8.0.x with profligate credit for reviewers. :)
Comment #120
alexpottThis broke running unit tests from the command line.
cd core; phpunit --testsuite unit;
.The error indicates that something is bleeding across unit test runs.
Comment #122
alexpottThis is the culprit. We shouldn't be including procedural code in a unit test.
Comment #123
penyaskitoLooks like it was done because we need
_format_date_callback
. Let's move that one to\Drupal\Core\Datetime\DrupalDateTime
, which is the only usage.Comment #124
alexpottThis is introducing a dependency on the request. I think it would be okay to default to something else here. For example Dries' birthday.
Comment #125
alexpottI think the change here is out-of-scope. Unless using
REQUEST_TIME
is impossible due to additional unit testing being added.Comment #126
vijaycs85Updated as per above comments.
Comment #127
alexpottThis can be rewritten to not use the passing of the langcode to set the static. There is no need for the method to be static. And the cache can be stored as a property on the class.
Comment #128
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedThe patch in #126 is not right, it's way too big. The interdiff seems to display the proper attempt though.
Apart from the above, I have another concern:
This is called "callback", but that is not what is happening here I think. I verified that this is the only place where this is used. Now, if we move it, I think we should rename it properly to what it does (what does it do?). And then clean up the unneeded code (e.g. parameter $matches is always NULL).
Comment #129
vijaycs85Changed the function a bit. Please let me know, if it's not OK.
Updated.
Yeah, some update on 8.0.x caused some issue with my patch script. I have issued new patch now.
yeah, updated.
Comment #130
vijaycs85Comment #131
geertvd CreditAttribution: geertvd at XIO commentedWhy not
$this->getFormatTranslation()
?Shouldn't we use
$this->t()
here?Adding an interdiff for easier reviews.
Comment #132
vijaycs85Just spoke with @pjonckiere and @alexpott online. Here is an update.
Comment #134
vijaycs852 Fails:
1. Fatal error
2. DateTest.php fails
#1 seems random testbot error. Updated fix for #2.
Comment #135
alexpottThese can all be removed now.
We don't have to use $_SERVER here - let's just use a hard coded timestamp. For example,
280299600
- Dries's birthday. Or we do something random here.This should not be needed - why is it needed? If it is using
Drupal\Component\Utility\String;
is wrong.Can remove AjaxResponse and ReplaceCommand from the use statements.
Comment #136
vijaycs85#135.1 - Fixed
#135.2 - As discussed with @alexpott on IRC, replacing it with time().
#135.3 - Fixed. Yes added to cover the t() inside which has been replaced by $this->t()
#135.4 Fixed
Comment #137
gloob CreditAttribution: gloob at Cocomore AG commentedLast patch addressed all the last suggested changes in #135 and it works. Seems RTBC to me.
Comment #138
alexpottadmin/config/regional/date-time/formats/add
and it works great - nice!Why do we need
getFormAttributes()
? Why can't it go in the #attached in thegetTranslationElement()
?If we do need this I think this needs better documentation. Also the need for these changes seems to be completely undocumented in the issue summary.
Comment #139
alexpottAs per #69.3 I'm not sure we have appropriate coverage of this complexity (if it is required see #139)
Comment #140
vijaycs85#139: yeah, the initially added this, so that we will have a way to add additional elements/attributes to form level. I agree that this is unnecessary for this issue scope. Removed them all and still functionality is working as before.
P.S: The translation page looks bit mis-aligned when you look at desktop, but fine in lower screen size. Not related to this issue, will create an issue.
Comment #141
vijaycs85Comment #142
Saphyel CreditAttribution: Saphyel as a volunteer commentedI tried everything and now works fine. don't lose the focus and refresh the date while you write.
You need use cache-rebuild after apply the patch!
Comment #144
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedThe error of the failure doesn't look patch related, so let's just retest.
Comment #146
Anonymous (not verified) CreditAttribution: Anonymous at XIO commentedThe previous testbot failure (not able to checkout from repo) doesn't occur anymore, resulting in green. So back to RTBC.
Comment #147
alexpottI reviewed this many times and manually tested it after the last patch - everything is working nicely and we have good test coverage. Thanks everyone. I've added myself to the commit credit since my comments on this issue provided feedback that was incorporated into the final patch.
Committed 4e3e39c and pushed to 8.0.x. Thanks!
Thanks for adding the beta evaluation to the issue summary.
Comment #149
vijaycs85Thanks everyone. special thanks to @alexpott for valuable feedback, reviews and commit.
Comment #150
Fabianx CreditAttribution: Fabianx as a volunteer commentedCongratulations, vijaycs85 & @all!
Comment #151
Gábor HojtsyThis is amazing! Thanks @vijaycs85 for sticking to this! Yay!