Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[com_fields] Use timezone and format of the calendar field #13606

Closed
wants to merge 9 commits into from

Conversation

laoneo
Copy link
Member

@laoneo laoneo commented Jan 16, 2017

Summary of Changes

When the Joomla timezone is set to none UTC, eg. Chicago, and a calendar form field is created for an article, then the time is moving backwards on every save of the article.

This is an upstream fix, reported by a DPFields user Digital-Peak/DPFields@375eee2.

Testing Instructions

  • Set the global Joomla timezone to Chicage (or something else which is not UTC)
  • Create a calendar form field for articles
  • Set the format of the field to %Y-%m-%d %H:%M
  • Edit an article
  • Define a date in the custom field
  • Save the article (not save and close)

Expected result

The date in the calendar custom field should stay as set. On the front end the same date with the same format of the plugin should be shown.

Actual result

The date is moving backwards. On the front, the date is shown with the database format.

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

Imho, better would be to allow the filter to be set in the field. Default would be USER_UTC, the other option is SERVER_UTC and all other values basically disable the feature.
I think the issue is because the formfield defaults to USER_UTC if nothing is specified but there is no such default during the save process.

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

I tried both filters and none of them work as expected. They are wrong IMO anyway as they are doing the opposite of what is expected.

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

At least for core they do what is expected 😄
USER_UTC converts the datetime from the user timezone to UTC (saving) and back (display)
SERVER_UTC converts the datetime from the server timezone to UTC (saving) and back (display)

It is mostly useless when you want to store only a date. Eg a birthday shouldn't be changed based on timezones.
If you want to show the date and time of an event (eg article creation, television broadcast), then you need to adjust the time to the users setting or he will be off by some hours.

It depends on the usecase. That's why I think a parameter may be useful, depending on what the user wants to do here.

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

IMO, it should be the other side, to assume the value comes in the user timezone and then convert it to UTC and not assume that the time which comes is in UTC and we need to convert it to the user timezone.

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

IMO, it should be the other side, to assume the value comes in the user timezone and then convert it to UTC

That is what is done during save. The value is taken from the user, assumed it is in his timezone and then converted to UTC and saved as UTC in the database.
When displayed, it is converted back from UTC to the timezone of the user (which may be another timezone depending on user).

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

It does the oposite, it takes the date and assumes it is in UTC and sets then the timezone and convertes it to the user tz on this line.

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

Yep, that is during display. Because the data is coming from the database (UTC) and is shown to the user in his timezone.
The save part doesn't happen in the formfield, it happens in JForm: https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/form/form.php#L1310. That's where it gets converted from user timezone to UTC for saving into the database.

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

Ok, now it starts to make sense. So why the time shift then as all should be ok, when no filter is set?

@joomdonation
Copy link
Contributor

Actually, right now, during saving, no filter is applied for calendar custom fields. The value is saved as how it entered, then when it is displays, it is converted using USER_UTC

@joomdonation
Copy link
Contributor

It seems there is no place for setting filter for calendar custom field at the moment. So during saving, no filter is being applied to the value

However, when the value is displayed again, USER_UTC is applied because no filter is set for calendar custom field https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/form/fields/calendar.php#L165

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

But then it is a bug in Joomla as you can't do something on save and then do something different on load.

@joomdonation
Copy link
Contributor

Yes. Seems to be a bug in JForm field calendar in this case

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

There is a bug in behavior if the filter isn't set, yes. Not sure how to fix it without breaking anything, because the current default value USER_UTC goes back a long time and is even documented in https://docs.joomla.org/Calendar_form_field_type. Removing that default may have unexpected results.
However in JForm itself, we can't just add the same default because it is used in all fields.

So I think fixing this may have to wait until 4.0 where we can either make the filter a required attrbute or remove the default value for the filter.

@joomdonation
Copy link
Contributor

How the custom fields values are being saved to database? Is it using the filtered/validated data from form object or using data directly from application input?

I ask the question because if we add the following command

$this->element['filter'] = $this->filter;

After this line

https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/form/fields/calendar.php#L165

Then the data is properly filtered using correct filter. However, I checked the value stored in jos_fields_values table and see that it is still storing unfiltered data, so maybe a bug in saving custom fields data, too?

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

Good point, can be the problem that we are not sending the data trough the form validate here https://github.com/joomla/joomla-cms/blob/staging/plugins/system/fields/fields.php#L65 as I was pointing out here #13565 (comment)?

@joomdonation
Copy link
Contributor

Yes, that's the reason of the problem. I don't know we support custom fields data filtering or not, but if you want to support filter like how it is supported in JForm, then we need to find a way to get filtered/validated data to store instead of getting data directly from input

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

At the moment, the only way I see is to remove the onsave events in the system plugin and move the logic to the save function in the model. For example in DPCalendar, all the custom fields are available in the params field, so this point here is reached, which is the filtered/validated data.

@Bakual
Copy link
Contributor

Bakual commented Jan 16, 2017

It would be great for sure to have the input data validated/sanitised. I'm not sure how easy that will be.

@joomdonation
Copy link
Contributor

Not sure why Joomla doesn't pass the validated/sanitised data while triggering the event at https://github.com/joomla/joomla-cms/blob/staging/libraries/legacy/model/admin.php#L1192 , If it was, then the work would be much simpler

I don't know the custom fields code enough to see a solution :(. How about storing validated data back to input object before calling save method at https://github.com/joomla/joomla-cms/blob/staging/libraries/legacy/controller/form.php#L745

Something like

$this->input->post->set('jform_validated_data', $validData);

Then that validated data can be accessed via input object later?

@laoneo
Copy link
Member Author

laoneo commented Jan 16, 2017

For example on articles is the problem that the params fieldsets are displayed on the edit form, but they are not sent with the object on the plugin save event because the field is attribs and not params as before. So for me would be the right approach to send also this data with the plugin event, otherwise all the params from other custom fields extensions don't get saved anyway.

@joomdonation
Copy link
Contributor

Send that data via plugin event would be the correct way. However, do we have a way to code it so that it doesn't affect existing plugins process this event?

I think the other option would be use $app->setUserState like this https://github.com/joomla/joomla-cms/blob/staging/libraries/legacy/controller/form.php#L768

That would be safe option for Joomla 3? We pass data to plugin in the same way in com_users https://github.com/joomla/joomla-cms/blob/staging/components/com_users/controllers/user.php#L100

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

I'm adding the params from the request as _params to the table when the params field doesn't exist on the table. Like that the data is filtered and validated, there is no need then to fetch it directly from the request anymore.

It is not possible to add it as $table->params, otherwise we get an error on save that the table doesn't contain a params field in the table.

This allows to set the filter to USER_UTC. Any feedback on my last change?

@joomdonation
Copy link
Contributor

joomdonation commented Jan 17, 2017

The changes should be OK. Haven't looked at the code carefully yet, but I have some questions:

  1. In this line of code if (isset($data['params']) && !isset($table->params)), could you explain the reason of adding !isset($table->params) ?

  2. In this line of code $table->_params = $data['params'];, is _params safe to use? I mean do we have to worry if existing code use that field before for whatever purpose ?

  3. Seems in custom fields setup, we don't have place to setup the filter for field? If so, I think you will have to set it in the code to set filter for calendar custom field type to use USER_UTC by default?

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

  1. If $table->paramsexists, all is working as expected. No need to attach the params as it is done already on $table->bind.
  2. Perhaps another check would make sense, see commit 6812621.
  3. That's what I do.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

Please use my last commit as I the date is now also properly printed on the front. I'v updated the testing instructions as well.

@Bakual this would introduce a dependency in JModelAdmin to com_fields (there was once a discussion about that with com_categories 🙊), similar to tags. Honestly I would not like it. Params is used to add new fields so params should also being validated and filtered and made available on the item in some way.

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

this would introduce a dependency in JModelAdmin to com_fields

You don't have to change anything in JModelAdmin. As you see in my other PR it works fine when using another property. All JModelAdmin does with "params" is in the getItem method it is converting it to a registry object if it exists, but that has nothing to do with validating a formfield.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

On both PR's we have the problem that the data is fetched from the request and not from the item in the plugin event as I'v pointed out here as well #13353 (review).

With my recent changes in this PR, the problem is eliminated with the _params property. In your PR, this must then be _com_fields on JModelAdmin (except when you give it a different name like _bakual).

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

That's what I meant. We could just name it eg _com_fields instead of _params and don't have the reference to params anymore. They don't have to match any name, it's just the starting underscore which makes a different behavior if I'm right. No need to change anything in JModelAdmin.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

It doesn't get attached to the $item because there is no such field, that's the reason why we can't do it with _com_fields, see my change here https://github.com/joomla/joomla-cms/pull/13606/files#diff-39b4bc5cb02bbace2ee4febe8f54583eR1161.

@joomdonation
Copy link
Contributor

joomdonation commented Jan 17, 2017

OK. So I tested with two different formats (with and without parameters), two different timezones, the data is saved/displayed properly. So basically, this PR fixed the issue.

For the correct way of passing data from model to the plugin for processing, I will leave it to you two as you have been working on custom fields from beginning.

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

Ah I missed that you have changed that in JModelAdmin. That doesn't look good.
Also you can forget the changeformat stuff, that's not going to pass. Why do you need that?
To me the proposed code looks like a big hack. There mus be a better way to fix this.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

Thanks for testing, please mark it as success here https://issues.joomla.org/tracker/joomla-cms/13606.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

That doesn't look good.

Eager to see a proper solution then. Hacks are in JModelAdmin all over.

Also you can forget the changeformat stuff, that's not going to pass. Why do you need that?

Because JDate needs a PHP date format and not this unreadable strftime format.

There mus be a better way to fix this.

Go for it.

For me getting the data unvalidated/filtered is also not an option. So this approach solves it at least in an understandable way.

@joomdonation
Copy link
Contributor

How about my suggestions about passing data before:

I think the other option would be use $app->setUserState like this https://github.com/joomla/joomla-cms/blob/staging/libraries/legacy/controller/form.php#L768

That would be safe option for Joomla 3 and in Joomla 4, we can pass that data directly to event trigger? We pass data to plugin in the same way in com_users https://github.com/joomla/joomla-cms/blob/staging/components/com_users/controllers/user.php#L100

Use that approach will not only allow this plugin but also other plugins access to validated/sanitized data data, too.

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

The display part shouldn't rely on the format set in the field. It should use one of the translated formats available in the language strings, see https://github.com/joomla/joomla-cms/blob/staging/language/en-GB/en-GB.ini#L303-L308.
That is how we display a date in each other location. Forms where an exception but with 3.7.0 there will be a solution here as well to use those translated formats.
We could add a parameter field where the user can select the display format. I do something similar in my extension using this code: https://github.com/Bakual/SermonSpeaker/blob/master/com_sermonspeaker/admin/models/fields/dateformat.php#L53-L72 to fetch the available formats.

Another and maybe better approach is to add the new parameters of the new calendar. There is a showtime toggle which enables/disables the time part of the calendar popup. It is also used in the translateFormat feature and would allow us to toggle between two translated formats (with and without time). That would likely solve most of the usecases for the display part and the other can easily do it in an override anyway.

So that would remove the need for the changeFormat stuff.

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

Agree, an output format parameter would make more sense. What about adding the ones from the language strings and give the admin the ability to define a custom one?

The params issue is still not solved yet. @joomdonation, honestly I'm not a fan of getting the validated data from the user state. When check in failed, then it makes sense, but in our case, I'm not sure.

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

What about adding the ones from the language strings and give the admin the ability to define a custom one?

We could allow a custom one, but imho it's useless in most cases and will not work for multilingual sites. I would just offer the existing ones and if he needs a different one he can either override the existing language strings or the layout. Both would be easy.

The params issue is still not solved yet.

I started to look into it but was stuck in the basement of a train station with only the laptop screen. So I was quite handycapped 😄

@dgrammatiko
Copy link
Contributor

@laoneo @Bakual how about reverting to the old calendar and rename the new one as datetime and

  • The js part will ALWAYS return the date as local (UTC + timezone)
  • The field could use a param to either respect the timezone or just keep the UTC
    will this take us out of the current mess?

@laoneo
Copy link
Member Author

laoneo commented Jan 17, 2017

No, datetime is already taken by DPCalendar 😁

The format is not a big deal, just the usual disagreement between @Bakual and me 🙊.

More importantly is how the custom field data get's all the way along to the onContentBeforeSave event that it gets filtered and validated.

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

@dgt41 It's not an issue with the calendar, it's an issue within com_fields that just surfaces here. I'm sure we can solve it 😄

@dgrammatiko
Copy link
Contributor

@Bakual @laoneo ok then, I'll mute myself here 😀

@Bakual
Copy link
Contributor

Bakual commented Jan 17, 2017

I guess he thinks that we can pass a strftime time format to JDate::format.

See https://github.com/joomla/joomla-cms/compare/staging...Bakual:FieldCalendarPlugin?expand=1 for what I think :-p
This applies the user timezone plus applies a localised date format. The date format needs to be customised to a degree as I wrote above.

@Bakual Bakual mentioned this pull request Jan 18, 2017
@Bakual
Copy link
Contributor

Bakual commented Jan 18, 2017

See #13638 for my approach.

@laoneo
Copy link
Member Author

laoneo commented Jan 23, 2017

Closing in favor of #13638.

@laoneo laoneo closed this Jan 23, 2017
@laoneo laoneo deleted the calendar-move-day branch January 23, 2017 09:58
brianteeman added a commit to brianteeman/joomla-cms that referenced this pull request Feb 28, 2018
PR joomla#13606 introduced translatable admin menu item creation but the code didnt check if the menu item was for the frontend or the admin before doing the translation

### Test Instructions
1. Install any additional language eg italian
2. Create a menu item called "Sun"
3. On the list of all the menu items you will see it is displayed as "Dom" - the italian translation
4. Enable language debug
5. On the list of all the menu items you will see all your menu item titles are surrounded by ?? - to indicate no translation found -  except for "Dom" which has ** instead to show it has been translated
6. Apply this PR
7. Sun still says Sun
8. There are NO ?? or ** when in language debug mode
9. Bonus - check a custom admin menu item and you will see it can be translated
mbabker pushed a commit that referenced this pull request Mar 17, 2018
* Front end menu items translated in error

PR #13606 introduced translatable admin menu item creation but the code didnt check if the menu item was for the frontend or the admin before doing the translation

### Test Instructions
1. Install any additional language eg italian
2. Create a menu item called "Sun"
3. On the list of all the menu items you will see it is displayed as "Dom" - the italian translation
4. Enable language debug
5. On the list of all the menu items you will see all your menu item titles are surrounded by ?? - to indicate no translation found -  except for "Dom" which has ** instead to show it has been translated
6. Apply this PR
7. Sun still says Sun
8. There are NO ?? or ** when in language debug mode
9. Bonus - check a custom admin menu item and you will see it can be translated

* code style

* cs
wilsonge pushed a commit that referenced this pull request Jun 14, 2018
* Prepare 3.8.4 Release Candidate

* Reset for dev

* Regression in the ISIS backed css

PR for #19411

* Regression: Isis RTL forgotten in 19417 (#19423)

* [com_content] - archived legacy SEF fix (#19397)

* [com_content] - archived legacy sef fix

* cs

* Fix media manager 'up' button (#19443)

* Regression at createUri from #19099 (#19415)

* [installer] - sanitize extensions type as lower case (#18416)

* Fix filter by multiple categories (#19450)

* Fix filter by multiple categories

* Remove debug code

* 2nd Release Candidate for 3.8.4

* Do not add unnecessary parameters in the archive link (#19447)

* Do not add unnecessary parameters in the archive link

* Remove php notice

* Unset parameter month=0 when year is not set

* Prepare 3.8.4 release

* Reset for development

* Move from protocol relative links to https for google fonts imports (#19488)

* move to protocol relative links to https

* fix one broken font link

* Revert "Regression at createUri from #19099 (#19415)"

This reverts commit 128a4d4.

* Revert "Correctly redirect after logging into the multilingual joomla with association enabled (#19295)"

This reverts commit 5994eb1.

* Revert "Fix parser error in plugin languagefilter on php5 (#19268)"

This reverts commit 05fd1d9.

* Revert "Do not add default or active Itemid to every link without own menu item (#19099)"

This reverts commit d068868.

* Update CMSApplication.php (#19514)

* CodeMirror Updated to 5.34.0 (#19533)

* Prepare 3.8.5 release candidate

* Reset to dev

* Revert "Do not add unnecessary parameters in the archive link (#19447)"

This reverts commit 0155f35.

* Revert "[com_content] - archived legacy SEF fix (#19397)"

This reverts commit 01a9147.

* Prepare 3.8.5 release

* Reset for dev

* Changed parameter to bool (#19573)

* Removed orphan weblinks languages (#19495)

* Changing loading order for between Redirect and Logout system plugins at (#19489)

install time

* mod_articles_news. Define $item_heading only if needed (#19439)

* mod_articles_news. Define $item_heading only if needed

* Update _item.php

* Update _item.php

* Fix count() in PHP 7.2 (#19396)

* Fix count()

* Simplify check

* [CS] Code style Tabs must be used to indent lines; round 1 (#19350)

* Tabs must be used to indent lines; round 1

Tabs must be used to indent lines; spaces are not allowed

* Fix some indent issues not fixed by the auto fixer

nothing is perfect, sometimes we need to make some minor adjustments.

* fix line issue

* Make suggested changes to reflect general code style

* Add space after ;

- correct indenting
- remove extra ;
- correct spaces

*   was on it's own line

* fix missing semicolon

* align equals

replace tab with spaces on line 25

* remove extra space

* fix missing semicolons

fix some spacing around operators

* com_mailto remove unused params (#19290)

I was checking to see why we had an untranslated string and as far as i can tell this entire params section is not used

To test apply pr and make sure that the send to friend functionality works as before

* [com_fields] Fields are not copied when batch duplicating an article (#16958)

* [#16740] - [com_fields] Fields are not copied when batch duplicating an article

* user deploy version over the wrong since tag ;)

* [#16740] - [com_fields] Fields are not copied when batch duplicating an article

* Handle modified date in Document objects consistently (#19592)

* Delete existing user_keys, if password is changed (#17827)

* Delete existing user_keys, if password is changed

* corrected styling issues

* deploy version - as I said, this is my first pr

* pushing to patch-2

* newline after }

* push to patch-2

* push to patch-2

* Update en-GB.com_users.ini

* Update remember.php

* Update remember.xml

* configuration option in XML file

radio button option to activate/deactivate the "reset RememberMe" functionality on password-change.

* Update en-GB.plg_system_remember.ini

* hm...

* Update remember.php

* Update remember.php

* XML styles

* commenting out the user message

* Update remember.php

* Update en-GB.plg_system_remember.ini

* btn-group-yesno

* Update remember.php

* Update remember.php

* reference to Alice Ruggles removed!

* making it mandatory

* Update remember.php

* making it mandatory

* making it mandatory

* making it mandatory

* as per the remarks of Quy

changed

* changed as per Quy's remarks

* [CS] Code style Tabs must be used to indent lines; round 2 (#19351)

* [CS] Code style Tabs must be used to indent lines; round 2

- Tabs must be used to indent lines; spaces are not allowed

* fix some indenting not fixed by the auto fixer

* Fix some more indenting and spacing

* use and/or in template mixed HTML/PHP files

For consistancy, Until a decision is made on joomla/coding-standards#191
use `and`/`or` in template mixed HTML/PHP files rather than our normal
required `&&`/`||` requierment that we have for full PHP files

* Use the && and || operators

preferences to Use the && and || operators

* Remove space indent exceptions (#19609)

* remove space indent exceptions

* tab indent not spaces

* Tabs must be used to indent lines; spaces are not allowed

* Tabs must be used to indent lines; spaces are not allowed

try using the concatenation to fix space indent strangeness

* Tabs must be used to indent lines; spaces are not allowed

* [3.9] Tweak update percentage message to include %-sign (#19628)

* Tweak update percentage message to include %-sign

* Add minified version.

* Typo Joomla is vegetarian (#19649)

Quick fix to the spelling of meet

* Plain English cont. (#19654)

The accessibility standard Web Content Accessibility Guidelines (WCAG) 2.0 Section 3 states https://www.w3.org/TR/WCAG20/#understandable

>### 3. Understandable
> Information and the operation of user interface must be understandable.

>#### Guideline 3.1 Readable
> Make text content readable and understandable.

> #### Success Criterion 3.1.5 Reading Level
> When text requires reading ability more advanced than the lower secondary education level after removal of proper names and titles, supplemental content, or a version that does not require reading ability more advanced than the lower secondary education level, is available.

To achieve this we should use "plain language" wherever possible

1. Word choice: use the simplest word that conveys your meaning.
http://plainlanguagenetwork.org/plain-language/what-is-plain-language/

2. Prefer the short word to the long.
https://www.plainlanguage.gov/guidelines/words/

This PR continues the work and removes the superfluous text " to make it possible"

* Plain English (#19629)

* accordingly

* advised => recommended

* assist => help

* attempt=>try

* concerning => relevant

* contains => has

* containing -> with

* contains=-> has

* Currently -> (omit)

* designated -> marked

* initial -> first

* initialise->start

* in order to -> to

* it is -> (omit)

* optimal -> best

* regarding->on

* remain -> stay

* terminated -> stopped

* word order

* Fix PHP Warning for Session on PHP 7.2 (#19199)

* Fix PHP Warning for Session on PHP 7.2

* CS

* Correctly call function with the parameter by reference (#19233)

* Better code for set category view layout (#19238)

* [Modern Routing] make a simpler loop in StandardRules::build (#19271)

* Simpler loop in build method of StandardRules

* Now use last_id only

* Remove useless code

* Remove support for new router configuration

* Improve performance of the com_content category view for a huge number of articles (#19284)

* Multilingual: Associated categories should display only when published (#19551)

* Multilingual: Associated categories should display only when published

* cs

* cs

* [CS] Array list style (#19610)

* array list style

* array list style

* array list style

* array list style

* Prevent compounding inputmode attribute (#19632)

* Fix user profile plugin (#19633)

* Update pagebreak plugin description (#19653)

Simple PR to update the very outdated text suggesting that the page break button is normally found under the article text area.

* Chinese calendar js files don't load on Linux because they are not (#19662)

lowercase.

* Typo (#19675)

Simple PR to fix a typo in a string

* Implement Session GC Cli (#19548)

* Implement Session GC Cli

* CS add new line

* Add deprecate log message for the pathway name attribute (#19700)

* Add deprecate log message for the name attribute

* Spelling

* typo (#19691)

* typo

can be merged on review

* more

* Possible misprint (#19688)

I think $ids array stores articles ids, because $articleModel->getItem()->id. Maybe copy-paste from line 159/line 206?
Also, this possible misprint can be found in  4.0 branch.

* Add the missing import in the application (#19709)

* Add the missing import in the application

* Use the local logger

* fix 404 on github dokukmentation links (#19775)

* Articles - Latest (#19664)

The descriptions says "This module shows a list of the most recently published and current Articles."

So if they are "current" then they cant also "may have expired"

Simple PR to correct that on the front end

For the admin version of the module the change is a little different as here the list will show all the articles irrespective of their current published state so the string change is different and is just a simplification and not a correction

* reCAPTCHA V1 stops on March 31 (#19648)

* reCAPTCHA V1 stops on March 31

Google have emailed directly anyone using v1 reCAPTCHA keys but users don't read their email.

This PR adds a post-installation message IF they have the reCAPTCHA plugin enabled AND they are using v1 keys.

This PR also updates the messages in the plugin informing them that V1 will not work after march 31

@mbabker already completely refactored the plugin for J4 to remove V1 etc this PR is ust for the messages

* CS - new lines

* use query to find the extension_id and not haardcoded

* docblock

* 3.8.6

* Update actions.php

* System Information (#19764)

* System Information

We had the db version and the db collation but not the type
This PR adds the database type eg postgresql, mysql etc

* Update sysinfo.php

* rename and move

* rename

* Overrides do not find 3rd party plugins languages when files are in the (#19740)

plugin

* Com_redirect: Differentiating utf8 old_url (#19734)

* TinyMCE: uglify the inline XTD-btns script (#19731)

* remove tabs and returns and spaces

* more compression

* Add some comments so others can follow the code

* Doh, this code was for J4

* reninitialise the array 😡

* Update bootstrap-rtl.css (#19715)

* Update bootstrap-rtl.css

Duplicate entry .radio.btn-group > label:first-of-type

* Update bootstrap-rtl.less

Removed 2nd occurrence of  .btn-group > .btn:first-child, .radio.btn-group > label:first-of-type

* Hide global configuration and system information from non super users (#19697)

* Hide global configuration and system information from non super users

* Use identical operator

* [a11y] Cache toolbar (#19686)

We use the icon name to populate the ID. This toolbar has the same icon for both buttons so we have two buttons with the same id which is an accessibility failure

This pr ensures every id attribute value is unique

Because the icon has multiple names we can simply use one of the alternative names as a quick and dirty fix.

There is no visual change

* Wrong desc fixed. Changed title to document! (#19685)

* Wrong desc fixed. Changed title to document!

* Update Document.php

* Move custom buttons to the other buttons in TinyMCE (#19656)

* Proxy to a higher error handler if there is one available (#19645)

* Correct output_buffering check in 3.8.x (#19611)

* correct output_buffering check in 3.8.x

* simplified the check @Quy

* this is why we can not have nice things.. fixing the check for output_buffering

* Pass the configuration tmp_path to the archive package for extension installations (#19608)

* pass the configuration tmp_path to the archive package for extension installations

* add missing \

* Improve header handling in PageController cache (#19591)

* Defining typeAlias (#19647)

* Fix JRoute('&var=...') not adding current URL variables when current URL is the home page (#19582)

* Fix loosing current URL vars when in home page

* Update SiteRouter.php

* Test units

* Test units

* [TemplateAdapter.php] Rewrote hardcoded SQL to query object (#17923)

* rewrote hardcoded SQL to query object

* correction in SQL for home field is declared as char/varchar

* correction in SQL for home field is declared as char/varchar + ->q()

* the requested change from @Quy

* added microdata (#17689)

* [Schema checker] (Database FIX) Add support for checking NULL and DEFAULT column attributes (#17351)

* [Schema checker] (Database FIX) Add support for checking NULL and DEFAULT column attributes

* CS

* Update en-GB.com_installer.ini

* english

* The One Right Session Management Configuration For Joomla! 3 (#19687)

* Session garbage collection plugin

* Session metadata manager

* Expand metadata manager to allow all apps, CLI for metadata cleaner

* Move metadata cleanup to the plugin

* Misc fixes from feedback

* Language tweaks

* Change to uint filter, if it'll get people to review and accept the damn PR...

* Fix mssql installation (#19796)

* Prepare 3.8.6 RC1 Release

* Reset for dev

* Update Greek Installation language files (#19806)

* Another typo in Greek (#19816)

* checksum extensions light (#17619)

* [3.8] - checksum extensions

porting checksum extensions from 4.0

* install checksum

add install checksum

* update checksum

add update checksum

* lang

add lang string

* doc block

add missing parameter

* tab

tab

* PHP cs

* PHP CS

* return integer

return integer instead of mixed

* switch

switch inteder

* switch

switch integer

* add CONST and remove sha1/md5

add CONST and remove sha1/md5

* hash algos

hash algos

* sha256,sh384,sha512

hash algos

* alpha order

alpha order

* fix docbloc

fix docbloc

* Revert "checksum extensions light (#17619)" (#19873)

This reverts commit 4d79fe2.

* Update spanish installation language (#19878)

* implement check provided by @ggppdk (#19791)

* Fix undefined index: password_clear (#19892)

* Prepare 3.8.6 release

* Reset for development

* Fix appveyor builds and bump driver dll version (#19805)

* bump driver dll version and add php 7.2

* remove php 7.2 until drivers are available

* Use powershell 'Invoke-WebRequest' Workaround

When you use appveyor command-line utility to download, its user-agent is empty, 
Some sites do not allow empty user-agents to download. 
Use powershell 'Invoke-WebRequest' Workaround until appveyor fixes their command-line utility to have a user agent

* Don't have a metadataManager class property to avoid circular dependency problem when instantiating multiple applications (#19912)

* typo (#19910)

typo

* Clear button in article publish date (#17809)

* For clear button issue

* Update calendar.js

* Update module.php

* Remove commented line

* [com_templates] Rewrote hardcoded SQL to query object (#17921)

* rewrote hardcoded SQL to query object

* correction in SQL for home field is declared as char/varchar

* correction in SQL for home field is declared as char/varchar + ->q()

* Break where clauses up

* Fix Help URLs and update to Help38 (#19181)

* Fix Help URLs

* Update to Help38

* Fixed trig on change event (#19538)

* [com_content] - fix link when layout and association (#19681)

* Date format localise (#19690)

* Add new date format LC6

* LC6

* commit 2

* [behavior.formvalidator] - pattern attribute behaviour fix (#19771)

* [behavior.formvalidator] - pattern behaviour fix

* minify

* Fix a subform table layout to be more strict to rows container (#19774)

* mod_breadcrumbs. remove JHtml::bootstrap.tooltip (#19787)

* Debug plugin style (#19790)

* Debug plugin style

Wrong css on the buttons for Log Category Mode

It should be green for the positive action (include) and red for the negative action (exclude)

This simple PR ensures that is the case

* oops

* Front end menu items translated in error (#19802)

* Front end menu items translated in error

PR #13606 introduced translatable admin menu item creation but the code didnt check if the menu item was for the frontend or the admin before doing the translation

### Test Instructions
1. Install any additional language eg italian
2. Create a menu item called "Sun"
3. On the list of all the menu items you will see it is displayed as "Dom" - the italian translation
4. Enable language debug
5. On the list of all the menu items you will see all your menu item titles are surrounded by ?? - to indicate no translation found -  except for "Dom" which has ** instead to show it has been translated
6. Apply this PR
7. Sun still says Sun
8. There are NO ?? or ** when in language debug mode
9. Bonus - check a custom admin menu item and you will see it can be translated

* code style

* cs

* CodeMirror 5.35.0 (#19809)

* Correcting finder feeds items date when language is not English (#19815)

* Correcting finder feeds items date when language is not English

* typo

* [com_ajax] Change modules check (#19818)

* Add com_ajax check in getModuleList query

* Restore getModuleList query

* Change module check inside com_ajax

* Categories: Allow sorting by Associations (#19821)

* Categories: Allow sorting by Associations

* moving assoc sorting after access

* Article and contact modal should not use addslashes (#19826)

* Menu tems select field: no need to escape string value (#19828)

* Allow limiting calendar field to current year (#19846)

* Allow locking to min and / or max year to current year

* Update calendar.php

* Cleared non-set variable notices

* Update JHtml::calendar to support relative years limits (#19847)

* Simplify switch statement (#19849)

* [CS] Code style Fix some inline doc blocks for IDE hinting - round 1 (#19862)

* Fix Operator Spacing

* Fix inline doc blocks for IDE hinting

* Fix some docblocks and comments (#19863)

* Custom admin menus: Translating menu items titles (#19900)

* adapt default values (#19924)

* Use getter method (#19925)

* Custom Admin menu item edit: Display Title, Parent Item and Ordering translations (#19916)

* Admin menu item edit: Display Title, Parent Item and Ordering
translations

* Modifs suggested by izharaazmi

* cs

* display translated title only when item exists

* Correcting label alignment

* Cosmetic changes

* In theory, you may not always be working with the default database. So use the correct one. (#19474)

* [plugin][content] - loadmodule by id (#19362)

* [plugin][content] - loadmodule by id

* [plugin][content] - loadmodule by id

* getModuleById

* getModuleById

* id not found

* id not found

* simple syntax

* js side

* modal

* minify js

* regex only digits

* remove title

* use static load()

* regex

* cs

* return

* cs tabs removed

* simplify code

* clean code

* no style

* replace loadmodule with loadmoduleid

* cs

* replace loadmodule with loadmoduleid

* replace

* missed echo

* moved back

* Update loadmodule.php

fixed cs

* Revert "[plugin][content] - loadmodule by id (#19362)" (#19931)

This reverts commit 4172f79.

* Category Modal - add notes (#19131)

* Category Modal - add notes

If you add a note to a category then it is displayed in the category list but not displayed in the category modal (eg when you select a category for a blog menu item)

This PR adds the note, alias, and full path (on hover) to the modal to make it consistent with the list view

* space

* Please consider a blank line preceding your comment (#19936)

* Fix typo in editor field (#19938)

* [CS] long form function return types; round 1 (#19934)

* PHPCS2 - fixes

* 2 spaces after

* Expected 2 spaces after the longest param type

* [libraries][legacy][request] - fix php 7.1 warning not numeric (#19710)

* [libraries][legacy][request] - fix php 7.1 warning not numeric

* dry

* [com_fields] Normalise the request com_fields data (#19884)

* Normalise the request com_fields data

* CS

* PHP 5.3 compat

* Fields in com_fields array (#9)

Fields should be set in com_fields array and not direcly in $data

* Spelling

* Also normalise request data on front-end user profile save (#10)

* Also normalise request data on front-end user profile save

* correct context and option

* Handle 0 properly in empty check

* Simplify

* allowing value 0 to be saved (#11)

when setting a value of 0 in a text field the function empty will return true > setting the value to null

* correct needsUpdate when strlen (or count) = 1 which incorrectly equa… (#12)

* correct needsUpdate when strlen (or count) = 1 which incorrectly equaled to 'true'

* Update field.php

* Update field.php

* [event dispatcher]  - use strict comparison (#19907)

* [com_users] Fix display of custom field of value 0 (#19933)

* [CS] long form function return types; round 2 (#19935)

* PHPCS2 Auto Fixes

- Expected "boolean" but found "bool" for function return type
- Expected "integer" but found "int" for function return type

* Manual correction of docBlock spacing

* Manual correction of docBlock spacing

* Manual correction of docBlock spacing

* Manual correction of docBlock spacing

* Add some Member var comments

* Manual correction of docBlock spacing

* Add some Member Var comments

* return tag after access tag

* 3 spaces after var tag before the type

* add tag since 3.1 to Class Properties and align var tags

* add tag since 3.1 and align var tag

* adjust some tag alignments

* Two spaces after type

* integer not int

* Redirects Plugin - Make Relative or Absolute. (#19942)

* Redirects Plugin - Make Relative or Absolute.

* Orderiing and capital I.

* Update en-GB.plg_system_redirect.ini

* Update en-GB.plg_system_redirect.ini

updated as per @quys comment.

* Update en-GB.plg_system_redirect.ini

* Make calendar output usable in other css-frameworks (#19944)

* Revert changes expect css

* Make calendar output usable in other css-frameworks

* A min-width makes look better

* Fix for duplicate url check bug introduced by #19734 and support utf8… (#19950)

* Fix for duplicate url check bug introduced by #19734 and support utf8 on old_urls.
Couldn't find a solution to handle this within mysql. So a simple foreach handles it perfectly.

* Update link.php

* solved issue number #19930 (#19969)

corrected typo to ensure proper checkbox functionality

* Removed text-output and enabled a disabled tick box for consistency (#19974)

* Change to allow str_pos to match when the exclude term is at the root… (#19979)

* Change to allow str_pos to match when the exclude term is at the root of the path

* updated redirect.php - clearly I was tired with the first pr.

* Fix for #11070 (tag-category) - Improve also views newsfeed-category … (#16627)

* Fix for #11070 (tag-category) - Improve also views newsfeed-category and category-list

* Correctly modifying .LESS and regenerate .CSS (#16627)

* Simple enhancement to allow the user to make all Post Install Messages read (#19958)

* Simple enhancement to allow the user to make all Post Install Messages as read.

* Update message.php

* Update messages.php

* Update messages.php

* Added onDisplay function for handling the display of the button.

* removed blank lines.

* updated quotes around ints.

As per @alikon comments

* Added (int) just to be safe.

* Update messages.php

* Update messages.php

* Update messages.php

* [com_mailto] Add missing placeholder (#19999)

* Make sure items is an array. (#20000)

* Make sure items is an array.

Resolved #19998

* Update default_items.php

* Update tag.php

* Update tag.php

* Update tag.php

* Update tag.php

* [com_fields] Fix fields display HTML prepared 4 or 5 times per article, make it be prepared only twice (#17895)

* Pass field displayType (aka event type) to getFields

* Update getFields to respect the 'display' parameter of every field

* Update onContentPrepare to respect 'display' parameter of every field

* Prepare for manual display

* Do not create $item->jcfields multiple times

* Revert the code for manual display to always prepare the field value

* Wrong function name

* Fix docblock

* Better comment for parameter of getFields method

* fix media field in ISIS Template (#17205)

* fix media field in ISIS Template

* fix media field in ISIS Template

* [3.x] New sessiongc plugin is not declared as core plugin for manifest cache refresh (#20038)

* add sessiongc plugin to the core plugins

* alphasorting thanks @brianteeman

* [module] [articles category] filter by multiple tags (#19983)

* [module] [articles category] filter by multiple tags

* multiple tags

* spelling

* [com_finder] Remove unused params (#20009)

* [com_finder] Unused params

* Update en-GB.com_finder.ini

* Update sample_learn.sql

* Update sample_testing.sql

* Update sample_learn.sql

* Update sample_testing.sql

* Update sample_learn.sql

* Update sample_testing.sql

* Update jos_menu.csv

* Restore and deprecate strings

* Two new fonts for CodeMirror: IBM Plex Mono, Nanum Gothic Coding (#20017)

* CategoryEdit field published filter (#20018)

* Smart Search: Highlighting terms also in fulltext when using readmore (#20019)

* Smart Search: Highlighting terms also in fulltext when using readmore

* parsing summary + body to get text only

* Escape full query in NestedTable debug mode (#20024)

* Changed viewname filter in RouteHelper (#20031)

* Fix GMail plugin so it doesn't crash and burn on 4.0 upgrades (#20043)

* Tweak build script for added flexibility (#19848)

* Refresh Manifest Cache failed: Extension is not currently installed (#19560)

* Refresh Manifest Cache failed: Extension is not currently installed

PR for #17604

Change the message to include the name of the extension.

I have no idea how to test this - sorry - only code review - unless someone knows how?

* partial revert

* revert comment

* Remove rtrim() since it allows invalid emails (#20080)

* Custom Fields toggle display on read only rights (#20068)

* [com_fields] Normalise the request com_fields data (#19884)

* Normalise the request com_fields data

* CS

* PHP 5.3 compat

* Fields in com_fields array (#9)

Fields should be set in com_fields array and not direcly in $data

* Spelling

* Also normalise request data on front-end user profile save (#10)

* Also normalise request data on front-end user profile save

* correct context and option

* Handle 0 properly in empty check

* Simplify

* allowing value 0 to be saved (#11)

when setting a value of 0 in a text field the function empty will return true > setting the value to null

* correct needsUpdate when strlen (or count) = 1 which incorrectly equa… (#12)

* correct needsUpdate when strlen (or count) = 1 which incorrectly equaled to 'true'

* Update field.php

* Update field.php

* Custom fields view on form via toggle on read-only rights

* fix back-end new article

* first / seperate check on read-only access

* refactor code so show_on parameter is part of helper function

* implement inherit value in fields + language things

* loadmodel only when needed

* changed function comment

* change values order so default value (inherit) is displayed first

* Must use self:: for local static member reference

* Fixed page with multiple codemirror editors fields with different syntax highlighting (#20063)

* Fix for: Can't choose module using editor plugin if you search first (#20005)

* fixit

* cs

* Update modal.php

* Basic check to make sure the bulk import seperator is being used. (#19982)

* Basic check to make sure the bulk import seperator is being used.
Added Import State function as to how the urls should be imported, enabled or disabled.

* force int.

* Update config.xml

* Update links.php

* Update en-GB.com_redirect.ini

* Update config.xml

* Update links.php

* Update en-GB.com_redirect.ini

* Update config.xml

As per standards i.e:
https://github.com/joomla/joomla-cms/blob/staging/administrator/components/com_config/model/form/application.xml

i.e. endtag inline with options and closing tag inline with opening tag.

* Update links.php

* Changed none selected to none, to be used when there are none availab… (#19977)

* Changed none selected to none, to be used when there are none available to select and when none are selected.
Set select to be readonly is they cannot select any options

* Update plugins.php

* Update plugins.php

* Update en-GB.ini

* Update en-GB.ini

* Update plugins.php

* Update plugins.php

* Update plugins.php

* Update plugins.php

* Update plugins.php

Space/tabbing for drone.

* Update plugins.php

* Corrected bug on empty subject of com_mailto (#19956)

* Corrected bug on empty subject

If the subject is empty, the posted value is an empty string (exists) so the default value is never added.

* Updated code to include null value

* text corrections (#20111)

* Typo and copy paste error (#20123)

Someone couldn't spell and then someone else must have copy pasted the error

No idea how to test but this has been wrong since 3.5

* correct the use of the use command and move it below the defined command (#20130)

* Prepare 3.8.7 RC

* Reset for dev

* Add a security policy (#20163)

* Add a security policy

Many projects now add a SECURITY.md document to their repository. Often this is related to using HackerOne but not always.

This PR adds a policy to our github repo. It is based on the existing policy on the d.j.o web site

The file doesn't need to be distributed so it has been added to the exclude list in the github repo.

* tweek

* copy paste

* Update SECURITY.md

* Update SECURITY.md

* Prepare 3.8.7 release

* Reset for dev

* Introduce CODEOWNERS (#20137)

* Tidy writeDynaList() (#12184)

* Cleaned writeDynaList() in core.js

* Removed explanation comments

* removed all API changes

* updated compressed core.js

* [fix] publish/unpublish does not work with tables using null as default checked_out value (#20204)

* Fix overwrite by .table-striped (#20180)

Fix overwrite by administrator/templates/isis/css/template.css line 1787

table.table-striped tbody > tr:nth-child(odd) > td,
table.table-striped tbody > tr:nth-child(odd) > th {
	background-color: #f9f9f9;
}

* Fix overwrite by .table-striped (#20179)

Fix overwrite by administrator/templates/isis/css/template.css line 1787

table.table-striped tbody > tr:nth-child(odd) > td,
table.table-striped tbody > tr:nth-child(odd) > th {
	background-color: #f9f9f9;
}

* Tooltips not loading com_users (#20177)

The edit profile form is not loading the bootstrap tooltip code. So any tooltip (not popovers) are displayed as html as seen in the screenshot below when TFA is enabled.

This was spotted by @o2tsen and @sandewt while testing #20051 but as it is a bug effecting more than that PR I have created a new PR. (a pr should only fix one problem)

* [a11y] Headings consecutive order Debug Console (#20167)

> Headings communicate the organization of the content on the page. Web browsers, plug-ins, and assistive technologies can use them to provide in-page navigation.

> Skipping heading ranks can be confusing and should be avoided where possible: Make sure that a < h2> is not followed directly by an < h4>, for example.

Source (https://www.w3.org/WAI/tutorials/page-structure/headings/)

The headings were probably chosen for cosmetic reasons and not structural reasons which they should have been

This PR changes the heading in the debug console from h1 to h2

There is a very small visual change as a result but imho the benefits outweigh the small cost

* [a11y] Headings consecutive order (#20166)

* [WIP] [a11y] Headings consecutive order

> Headings communicate the organization of the content on the page. Web browsers, plug-ins, and assistive technologies can use them to provide in-page navigation.

> Skipping heading ranks can be confusing and should be avoided where possible: Make sure that a <h2> is not followed directly by an <h4>, for example.

Source (https://www.w3.org/WAI/tutorials/page-structure/headings/)

This PR changes the heading in the plugin and modules from h3 to h2 and in the template styles to h4

### todo
joomla.edit.item_title layout uses h4 but before I change it I need to check everywhere that it is being used

* layout

* Fix typos in InstallerControllerUpdate (#20154)

* Fix typos in InstallerControllerUpdate

* Fix same error on other places. Thanks @Quy

* Remove similar unnecessary code

* Revert "Remove similar unnecessary code"

This reverts commit 56410c0.

* One more

* Revert "One more"

This reverts commit aa1b101.

* [com_contact] Don't hide contact filter form (#20126)

* Update default_items.php

* Correct implode order.

* Codestyle

* More codestyle

* Fix for JUserHelper::addUserToGroup() when user group title is a number. (#20091)

* Update UserHelper.php

* Update UserHelper.php

* Fix count() in PHP 7.2 (#20044)

* [com_content][Multilanguage] - remove duplicated queries (#19683)

* [com_content][Multilanguage] - remove duplicated queries

* cs

* add $db->qn()

* removed ()

* Make CodeMirror work in repeatable subforms (#12542)

* One function to initialize any and all CodeMirror instances rather than individual functions to initialize one-by-one. Call on page load and also on subform-row-add

* Minor js changes

* Codemirror fullscreen modifier message (do we still need this?)

* Call the popover init function when creating new subform rows. (#20222)

* Call the popover init function when creating new subform rows.

* Update teh popover test

* [a11y] post-installation message in control panel (#20220)

> Headings communicate the organization of the content on the page. Web browsers, plug-ins, and assistive technologies can use them to provide in-page navigation.

> Skipping heading ranks can be confusing and should be avoided where possible: Make sure that a < h2> is not followed directly by an < h4>, for example.

Source (https://www.w3.org/WAI/tutorials/page-structure/headings/)

The heading was probably chosen for cosmetic reasons and not structural reasons which they should have been

This PR changes the heading for the post-installtion message i the control panel from h4 to h3

There is a very small visual change as a result but imho the benefits outweigh the small cost

* Solves issue #20195 (#20214)

* [plugin][search][content] give priority on result when title is matched (#20197)

* [plugin][search][content] give priority on result when title is matched

* Missed comma

* Add relevance weighting according to number of words

* Relevance by number of words in title only, removed introtext relevance

* Fix order string concatenation

* You've Got Mail (#20162)

* You've Got Mail

Since 2003 the internet has changed. We no longer get a message to say that we have a message. Instead we just give you the message. You probably never use the messages component (especially for private message to a specific user) as they are the equivalent of https://www.youtube.com/watch?v=gFBLiHpkcOk

The Joomla com_messages component is used in two instances

1. Notification of a new article
2. Sending a message to another user

### Current email for Notification of a new article
Subject: A new private message has arrived from [sitename]
Body:
> Please log in to [link] to read your message.

### New email for Notification of a new article
Subject: New message from [user] at [sitename]
Body:
> New Article
A new Article has been submitted by 'user' entitled 'blog post'.
> Please log in to [link] to read your message.

### Current email when sending a message to another user
Subject: A new private message has arrived from [sitename]
Body:
> Please log in to [link] to read your message.

### New email when sending a message to another user
Subject: New message from [user] at [sitename]
Body:
> [subject]
 [message]
[login link]

## Backwards Compatibility
No issues. The message contains the old login message PLUS the content of the message. So if you were using this message in a custom workflow there is no change required to that workflow

* subj

* cs

* add new string and mark existing string for deprecation

* Support Codemirror's included key mappings (#19833)

* Support Codemirror's included key mappings

* Use a list instead of radio buttons

* Don't expose LDAP authentication usage. (#18531)

* Don't expose LDAP authentication usage.

* Use new language strings for LDAP authentication.

* remove bind string

* remove bind string

* use connect string

* alpha order

* alpha order

* Handle the case that JFolder::files returns 'false' (#11715)

* Initialize tooltips when a new a row is added in a subform (#12996)

* Initialize tooltips when a new a row is added in a subform

* Fix a test since the init function has changed

* Replace htaccess which was removed inexplicably

* Missing space (#20260)

* Tiny JLanguage::loadLanguage() code improvement (#20257)

* [com_content] Remove redundant check (#20254)

* Update articles.php (#20245)

* [com_config] Capitalize label (#20299)

* Implement Issue Templates as discussen in #20298

#20298

* [fix] openbase_dir processing (#20280)

* CodeMirror updated to version 5.37.0 (#20269)

* Use title from menu item (#20267)

* Change the defaults for new installs to disable com_mailto in articles (#20266)

* change the defaults for new installs to disable com_mailto in articles

* change more defaults to 0 thanks @Quy

* Don't enable sending the PW on new installs (#20247)

* disable plaun pw sending per default on new installs

* make sure we have to set a PW when we dont send the plain pw via mail

* chagne the default in the xml to thanks @Quy

* update the sample data thanks @Quy

* make sure the mail to user does not include the PW too

* Revert "make sure the mail to user does not include the PW too"

This reverts commit 9095819.

* address comments by @Bakual thanks

* Optimization and fix of multilingual associations and add layouts to com_content links (#20229)

* Revert #19681

* Revert #19683

* Remove addition query and check after #19314

* Add layout to com_content links

* Add layout to com_content article associations

* Add layout to category associations

* add advanced where clause param

* add advanced where clause for com_content article associations

* drone code formatting fix

* drone code formatting fix

* drone code formatting fix

* Line exceeds 150 characters

* PHPCS rules

* Remove parenthesis

* Change queryKey

* Fix typo

* Improve description

* Add checksum generation to the build script

* Replace "label" classes with the new "badge" ones

* Replace "label" classes with the new "badge" ones

* Siwtch back comment about labels

* Revert "Merge branch 'staging' into 4.0-dev"

This reverts commit 831e986, reversing
changes made to b8c7f7f.

* Replace label classes on js files

* Replace missing label classes

* Use the "danger" to replace "important" in badges

* Use the "danger" to replace "important" in badges

* Replace label classes on a language file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants