User tests: Successful: Unsuccessful:
This is a redo of PR #43748 since new features have to go into 5.2-dev.
The idea for this PR came from a workshop in which we analysed a survey in the joomla community of the D-A-CH region. The survey and the workshop was organized by Oliver Schuldt and @SniperSister. Thank you very much for your effort.
One of the points that was mentioned very frequently in the survey is that there is no good entry point for new, interested volunteers. It is difficult and confusing for newcomers to get the necessary information on how to participate in the Joomla! community. This is what we want to solve with the help of this backend dashboard module.
It provides the most important information and links to join and participate in the Joomla community at the most visible place; The dashboard/cpanel of the backend.
The links and information are retrieved from an API endpoint at joomla.org based on the user's current location. This ensures that the user sees the information that is most relevant to him and minimises the barrier to make it as easy as possible to get started in the community.
The module provides the following information:
The current location of the user gets evaluated in the following order. If the location couldnt be found the next approach is used:
Main entry point
In order to fetch local community information, the module calls an endpoint (API). The endpoint used by the module is set in the module settings and gets set during installation. In this PR for testing reasons it is set to be https://test.joomla.spuur.ch/joomla-community-api/links.php.
This is just a proof-of-concept endpoint set up to test this PR. It will be exchanged when the PR is in a state ready to be merged. The final endpoint will be hosted at https://www.joomla.org/. It is thought that we could expand the already existing https://community.joomla.org/user-groups.html directory. Such that every Joomla user group or association can enter the information and links there which they want show to the users close to them in this directory. The API will then fetch the data from the directory and provide it as json response to the module.
News feed
The news feed is fetched from a source which provides an XML/RSS feed. The source is declared in the response of the main entry point API. This could e.g be a website with a category blog of Joomla articles from which the view format RSS is requested.
(e.g. https://community.joomla.org/blogs?format=feed&type=rss)
Events feed
The upcoming events are fetched from a middle ware API endpoint hosted at the same location as the main entry point API for the links. It will parse a calendar from https://community.joomla.org/events.html based on the current location.
(e.g. https://test.joomla.spuur.ch/joomla-community-api/events.php)
The module can also be found in this repository. Here is an installable version of the module if you dont want to build Joomla from source to test this PR:
https://github.com/Elfangor93/mod_community_info
No community module in the administrator dashboard.
New module called "Joomla! Community and News" (mod_community_info) community module in the administrator dashboard.
Please select:
Documentation link for docs.joomla.org:
No documentation changes for docs.joomla.org needed
Pull Request link for manual.joomla.org:
No documentation changes for manual.joomla.org needed
| Status | New | ⇒ | Pending | 
| Category | ⇒ | Administration Language & Strings Modules Repository NPM Change JavaScript SQL Installation | 
| Labels | 
                                        Added: 
Language Change
NPM Resource Changed
PR-5.2-dev
 | 
    ||
There are ISO standards for this which are actively maintained and do not contain the modifications you have made to satisfy one single country.
Can you point me to the ISO standard you are looking for? Then I can update the list accordingly.
I see that the current langages supported by Joomla are the following: https://update.joomla.org/language/translationlist_5.xml
So I guess it would make sense to create a list with countires based on the ISO standard and map to each a language tag available at https://update.joomla.org/language/translationlist_5.xml, right?
There are ISO standards for this which are actively maintained and do not contain the modifications you have made to satisfy one single country.
Can you point me to the ISO standard you are looking for? Then I can update the list accordingly. I see that the current langages supported by Joomla are the following: https://update.joomla.org/language/translationlist_5.xml
So I guess it would make sense to create a list with countires based on the ISO standard and map to each a language tag available at https://update.joomla.org/language/translationlist_5.xml, right?
No. You should not be creating your own list. That is a maintenance nightmare.
Please fix the CS:
+ npm run lint:js
> joomla@5.2.0 lint:js
> eslint --config build/.eslintrc --ignore-pattern '/media/' --ext .es6.js,.es6,.vue .
/drone/src/build/media_source/mod_community_info/js/community-info.es6.js
    3:3    error    Trailing spaces not allowed                                          no-trailing-spaces
    5:73   error    Trailing spaces not allowed                                          no-trailing-spaces
    7:5    error    'openModal' is never reassigned. Use 'const' instead                 prefer-const
    7:5    error    'openModal' is assigned a value but never used                       no-unused-vars
    7:25   error    Missing space before function parentheses                            space-before-function-paren
    7:35   error    'location' is defined but never used                                 no-unused-vars
    8:7    error    'modal' is never reassigned. Use 'const' instead                     prefer-const
    8:12   error    Multiple spaces found before '='                                     no-multi-spaces
    9:7    error    'modalBody' is never reassigned. Use 'const' instead                 prefer-const
    9:16   error    Multiple spaces found before '='                                     no-multi-spaces
   10:22   error    Multiple spaces found before '='                                     no-multi-spaces
   10:50   error    Unexpected string concatenation                                      prefer-template
   10:61   error    Operator '+' must be spaced                                          space-infix-ops
   10:69   error    Operator '+' must be spaced                                          space-infix-ops
   12:3    error    'bsmodal' is not defined                                             no-undef
   12:67   error    A space is required after '{'                                        object-curly-spacing
   12:83   error    A space is required before '}'                                       object-curly-spacing
   13:3    error    'bsmodal' is not defined                                             no-undef
   14:1    error    Trailing spaces not allowed                                          no-trailing-spaces
   15:3    error    Expected space(s) after "if"                                         keyword-spacing
   15:14   error    Expected '===' and instead saw '=='                                  eqeqeq
   17:74   error    Unexpected unnamed function                                          func-names
   17:74   error    Unexpected function expression                                       prefer-arrow-callback
   17:82   error    Missing space before function parentheses                            space-before-function-paren
   26:2    error    Missing semicolon                                                    semi
   31:5    error    'autoLoc' is never reassigned. Use 'const' instead                   prefer-const
   31:5    error    'autoLoc' is assigned a value but never used                         no-unused-vars
   31:29   error    Missing space before function parentheses                            space-before-function-paren
   32:7    error    'location' is never reassigned. Use 'const' instead                  prefer-const
   32:24   error    'getCurrentLocation' was used before it was defined                  no-use-before-define
   34:3    error    Use array destructuring                                              prefer-destructuring
   35:3    error    Use array destructuring                                              prefer-destructuring
   40:2    error    Missing semicolon                                                    semi
   45:5    error    'saveLoc' is never reassigned. Use 'const' instead                   prefer-const
   45:5    error    'saveLoc' is assigned a value but never used                         no-unused-vars
   45:23   error    Missing space before function parentheses                            space-before-function-paren
   49:2    error    Missing semicolon                                                    semi
   54:5    error    'searchLocation' is never reassigned. Use 'const' instead            prefer-const
   54:5    error    'searchLocation' is assigned a value but never used                  no-unused-vars
   54:36   error    Missing space before function parentheses                            space-before-function-paren
   55:7    error    'search' is never reassigned. Use 'const' instead                    prefer-const
   58:7    error    'res' is never reassigned. Use 'const' instead                       prefer-const
   58:19   error    'fetchAPI' was used before it was defined                            no-use-before-define
   58:76   error    A space is required after ','                                        comma-spacing
   58:77   error    A space is required after '{'                                        object-curly-spacing
   58:78   error    Unnecessarily quoted property 'q' found                              quote-props
   58:91   error    Unnecessarily quoted property 'format' found                         quote-props
   58:109  error    A space is required before '}'                                       object-curly-spacing
   60:3    warning  Unexpected console statement                                         no-console
   62:3    error    Expected space(s) after "if"                                         keyword-spacing
   64:18   error    Unexpected string concatenation                                      prefer-template
   64:54   error    Operator '+' must be spaced                                          space-infix-ops
   64:79   error    Operator '+' must be spaced                                          space-infix-ops
   66:7    error    'selected' is not defined                                            no-undef
   68:9    error    'selected' is not defined                                            no-undef
   71:16   error    Unexpected string concatenation                                      prefer-template
   71:35   error    Operator '+' must be spaced                                          space-infix-ops
   71:36   error    'selected' is not defined                                            no-undef
   71:44   error    Operator '+' must be spaced                                          space-infix-ops
   71:54   error    Operator '+' must be spaced                                          space-infix-ops
   71:65   error    Operator '+' must be spaced                                          space-infix-ops
   71:69   error    Operator '+' must be spaced                                          space-infix-ops
   71:80   error    Operator '+' must be spaced                                          space-infix-ops
   71:85   error    Operator '+' must be spaced                                          space-infix-ops
   71:97   error    Operator '+' must be spaced                                          space-infix-ops
   71:102  error    Operator '+' must be spaced                                          space-infix-ops
   73:5    error    Assignment (=) can be replaced with operator assignment (+=)         operator-assignment
   73:14   error    Unexpected string concatenation                                      prefer-template
   88:62   error    Unexpected string concatenation                                      prefer-template
   88:67   error    Operator '+' must be spaced                                          space-infix-ops
   88:121  error    Operator '+' must be spaced                                          space-infix-ops
   93:2    error    Missing semicolon                                                    semi
   98:5    error    'locationSelectChange' is never reassigned. Use 'const' instead      prefer-const
   98:5    error    'locationSelectChange' is assigned a value but never used            no-unused-vars
   98:36   error    Missing space before function parentheses                            space-before-function-paren
   99:7    error    'selectedValue' is never reassigned. Use 'const' instead             prefer-const
  102:3    error    Use array destructuring                                              prefer-destructuring
  103:3    error    Use array destructuring                                              prefer-destructuring
  107:2    error    Missing semicolon                                                    semi
  111:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  115:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  119:5    error    'ajaxLocation' is never reassigned. Use 'const' instead              prefer-const
  119:5    error    'ajaxLocation' is assigned a value but never used                    no-unused-vars
  119:34   error    Missing space before function parentheses                            space-before-function-paren
  119:45   error    Identifier 'module_id' is not in camel case                          camelcase
  121:7    error    'formData' is never reassigned. Use 'const' instead                  prefer-const
  126:7    error    'parameters' is never reassigned. Use 'const' instead                prefer-const
  136:7    error    'url' is never reassigned. Use 'const' instead                       prefer-const
  139:7    error    'response' is never reassigned. Use 'const' instead                  prefer-const
  140:7    error    'txt' is never reassigned. Use 'const' instead                       prefer-const
  140:10   error    Multiple spaces found before '='                                     no-multi-spaces
  144:9    error    'message' is never reassigned. Use 'const' instead                   prefer-const
  145:9    error    'message2' is never reassigned. Use 'const' instead                  prefer-const
  146:27   error    A space is required after '{'                                        object-curly-spacing
  146:28   error    Unnecessarily quoted property 'error' found                          quote-props
  146:36   error    Missing space before value for key 'error'                           key-spacing
  146:37   error    Unexpected string concatenation                                      prefer-template
  146:44   error    Operator '+' must be spaced                                          space-infix-ops
  146:48   error    Operator '+' must be spaced                                          space-infix-ops
  146:49   error    'sprintf' was used before it was defined                             no-use-before-define
  146:84   error    A space is required before '}'                                       object-curly-spacing
  148:5    warning  Unexpected console statement                                         no-console
  149:5    warning  Unexpected console statement                                         no-console
  149:17   error    Unexpected string concatenation                                      prefer-template
  149:32   error    Operator '+' must be spaced                                          space-infix-ops
  149:48   error    Operator '+' must be spaced                                          space-infix-ops
  149:62   error    Operator '+' must be spaced                                          space-infix-ops
  155:3    error    Expected space(s) after "if"                                         keyword-spacing
  157:9    error    'res' is never reassigned. Use 'const' instead                       prefer-const
  166:9    error    'message' is never reassigned. Use 'const' instead                   prefer-const
  167:9    error    'message2' is never reassigned. Use 'const' instead                  prefer-const
  168:27   error    A space is required after '{'                                        object-curly-spacing
  168:28   error    Unnecessarily quoted property 'error' found                          quote-props
  168:36   error    Missing space before value for key 'error'                           key-spacing
  168:37   error    Unexpected string concatenation                                      prefer-template
  168:44   error    Operator '+' must be spaced                                          space-infix-ops
  168:48   error    Operator '+' must be spaced                                          space-infix-ops
  168:49   error    'sprintf' was used before it was defined                             no-use-before-define
  168:80   error    A space is required before '}'                                       object-curly-spacing
  170:5    warning  Unexpected console statement                                         no-console
  171:5    warning  Unexpected console statement                                         no-console
  174:9    error    'split' is never reassigned. Use 'const' instead                     prefer-const
  175:9    error    'temp' is never reassigned. Use 'const' instead                      prefer-const
  175:13   error    Multiple spaces found before '='                                     no-multi-spaces
  175:28   error    Unexpected string concatenation                                      prefer-template
  175:32   error    Operator '+' must be spaced                                          space-infix-ops
  176:9    error    'data' is never reassigned. Use 'const' instead                      prefer-const
  176:9    error    'data' is already declared in the upper scope on line 153 column 7   no-shadow
  176:13   error    Multiple spaces found before '='                                     no-multi-spaces
  178:9    error    'message' is never reassigned. Use 'const' instead                   prefer-const
  179:9    error    'message2' is never reassigned. Use 'const' instead                  prefer-const
  180:27   error    A space is required after '{'                                        object-curly-spacing
  180:28   error    Unnecessarily quoted property 'error' found                          quote-props
  180:36   error    Missing space before value for key 'error'                           key-spacing
  180:37   error    Unexpected string concatenation                                      prefer-template
  180:44   error    Operator '+' must be spaced                                          space-infix-ops
  180:48   error    Operator '+' must be spaced                                          space-infix-ops
  180:49   error    'sprintf' was used before it was defined                             no-use-before-define
  180:83   error    A space is required before '}'                                       object-curly-spacing
  181:5    warning  Unexpected console statement                                         no-console
  182:5    warning  Unexpected console statement                                         no-console
  182:17   error    Unexpected string concatenation                                      prefer-template
  182:28   error    Operator '+' must be spaced                                          space-infix-ops
  183:5    warning  Unexpected console statement                                         no-console
  183:17   error    Unexpected string concatenation                                      prefer-template
  183:29   error    Operator '+' must be spaced                                          space-infix-ops
  184:5    warning  Unexpected console statement                                         no-console
  184:17   error    Unexpected string concatenation                                      prefer-template
  184:25   error    Operator '+' must be spaced                                          space-infix-ops
  187:3    error    Async function expected no return value                              consistent-return
  192:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  196:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  199:30   error    Missing space before function parentheses                            space-before-function-paren
  199:45   error    Operator '=' must be spaced                                          space-infix-ops
  199:56   error    Operator '=' must be spaced                                          space-infix-ops
  200:7    error    'urlSearchParams' is never reassigned. Use 'const' instead           prefer-const
  202:3    error    Expected space(s) after "if"                                         keyword-spacing
  202:36   error    Expected '!==' and instead saw '!='                                  eqeqeq
  203:5    error    Assignment to function parameter 'url'                               no-param-reassign
  203:11   error    Unexpected string concatenation                                      prefer-template
  203:14   error    Operator '+' must be spaced                                          space-infix-ops
  203:18   error    Operator '+' must be spaced                                          space-infix-ops
  207:7    error    'parameters' is never reassigned. Use 'const' instead                prefer-const
  212:29   error    Missing trailing comma                                               comma-dangle
  216:7    error    'response' is never reassigned. Use 'const' instead                  prefer-const
  220:9    error    'message' is never reassigned. Use 'const' instead                   prefer-const
  221:27   error    A space is required after '{'                                        object-curly-spacing
  221:28   error    Unnecessarily quoted property 'error' found                          quote-props
  221:36   error    Missing space before value for key 'error'                           key-spacing
  221:37   error    'sprintf' was used before it was defined                             no-use-before-define
  221:97   error    A space is required before '}'                                       object-curly-spacing
  222:5    warning  Unexpected console statement                                         no-console
  222:17   error    Unexpected string concatenation                                      prefer-template
  222:77   error    Operator '+' must be spaced                                          space-infix-ops
  222:93   error    Operator '+' must be spaced                                          space-infix-ops
  222:107  error    Operator '+' must be spaced                                          space-infix-ops
  227:7    error    'txt' is never reassigned. Use 'const' instead                       prefer-const
  227:10   error    Multiple spaces found before '='                                     no-multi-spaces
  228:12   error    Multiple spaces found before '='                                     no-multi-spaces
  232:3    error    Expected space(s) after "if"                                         keyword-spacing
  232:13   error    Expected '===' and instead saw '=='                                  eqeqeq
  235:14   error    'error' is already declared in the upper scope on line 228 column 7  no-shadow
  236:7    error    Do not assign to the exception parameter                             no-ex-assign
  236:12   error    Multiple spaces found before '='                                     no-multi-spaces
  239:10   error    Expected space(s) after "if"                                         keyword-spacing
  239:20   error    Expected '===' and instead saw '=='                                  eqeqeq
  240:9    error    'parser' is never reassigned. Use 'const' instead                    prefer-const
  241:40   error    Strings must use singlequote                                         quotes
  243:5    error    Expected space(s) after "if"                                         keyword-spacing
  243:34   error    Strings must use singlequote                                         quotes
  244:12   error    Multiple spaces found before '='                                     no-multi-spaces
  245:45   error    Strings must use singlequote                                         quotes
  251:3    error    Expected space(s) after "if"                                         keyword-spacing
  253:9    error    'message' is never reassigned. Use 'const' instead                   prefer-const
  254:27   error    A space is required after '{'                                        object-curly-spacing
  254:28   error    Unnecessarily quoted property 'error' found                          quote-props
  254:36   error    Missing space before value for key 'error'                           key-spacing
  254:37   error    'sprintf' was used before it was defined                             no-use-before-define
  254:75   error    A space is required before '}'                                       object-curly-spacing
  255:5    warning  Unexpected console statement                                         no-console
  255:17   error    Unexpected string concatenation                                      prefer-template
  255:89   error    Operator '+' must be spaced                                          space-infix-ops
  257:5    error    Async function expected no return value                              consistent-return
  259:2    error    Missing semicolon                                                    semi
  263:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  266:40   error    Missing space before function parentheses                            space-before-function-paren
  275:11   error    Expected the Promise rejection reason to be an Error                 prefer-promise-reject-errors
  275:18   error    Unexpected string concatenation                                      prefer-template
  275:67   error    Operator '+' must be spaced                                          space-infix-ops
  275:71   error    Operator '+' must be spaced                                          space-infix-ops
  276:10   error    Missing trailing comma                                               comma-dangle
  286:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  288:3    error    Trailing spaces not allowed                                          no-trailing-spaces
  291:23   error    Missing space before function parentheses                            space-before-function-paren
  292:3    error    Unexpected var, use let or const instead                             no-var
  292:41   error    Use the rest parameters instead of 'arguments'                       prefer-rest-params
  293:3    error    Unexpected var, use let or const instead                             no-var
  294:30   error    Unexpected unnamed function                                          func-names
  294:30   error    Unexpected function expression                                       prefer-arrow-callback
  294:38   error    Missing space before function parentheses                            space-before-function-paren
  295:17   error    Unary operator '++' used                                             no-plusplus
  297:2    error    Missing semicolon                                                    semi
✖ 222 problems (211 errors, 11 warnings)
  172 errors and 0 warnings potentially fixable with the `--fix` option.
                    Please change this to draft until it actually works. That way testers like myself wont waste time on this until you think it is ready.
I was able to reduce the JS errors from npm run lint:js to
 76:5   warning  Unexpected console statement                                           no-console
 109:5   warning  Unexpected console statement                                         no-console
 126:3   warning  Unexpected console statement                                         no-console
 201:5   warning  Unexpected console statement                                         no-console
 202:5   warning  Unexpected console statement                                         no-console
 222:5   warning  Unexpected console statement                                         no-console
 223:5   warning  Unexpected console statement                                         no-console
 233:5   warning  Unexpected console statement                                         no-console
 234:5   warning  Unexpected console statement                                         no-console
 235:5   warning  Unexpected console statement                                         no-console
 236:5   warning  Unexpected console statement                                         no-console
 245:7   error    'autoLoc' is assigned a value but never used                        no-unused-vars
 260:7   error    'saveLoc' is assigned a value but never used                        no-unused-vars
 269:7   error    'locationSelectChange' is assigned a value but never used  no-unused-vars
 287:38  error    'location' is defined but never used                                     no-unused-vars
 336:7   error    'iniModule' is assigned a value but never used                    no-unused-vars
 368:7   warning  Unexpected console statement                                         no-console
 371:7   warning  Unexpected console statement                                         no-console
 373:7   warning  Unexpected console statement                                         no-console
@dgrammatiko  How do I make the no-unused-vars disappear?
@dgrammatiko How do I make the no-unused-vars disappear?
I'm guessing those functions/variables are not used inside the script but rather in the inline script thus the tools assume not used anywhere? Move all the JS code in the file that would allow the tools to be more accurate on the code sniffing
I guess now its ready for testing again...
previous reported issues still present but now with additional issue
Seems like there is a problem in the installation script. Can you try to add https://test.joomla.spuur.ch/joomla-community-api/links.php to the module configurations by hand?
The last commits were a rebase with the joomla:5.2-dev branch in order to make drone work correctly.
| Category | Administration Language & Strings Modules Repository NPM Change JavaScript SQL Installation | ⇒ | Administration Language & Strings Modules Repository NPM Change JavaScript SQL Installation Postgresql | 
@richard67 Do you mind looking over the installation sql files of this PR, if everything is correctly added. Its my first PR with core database changes...
@richard67 Do you mind looking over the installation sql files of this PR, if everything is correctly added. Its my first PR with core database changes...
I don't know if I will have the time today to review ALL SQL changes (including the assets table).
But what is missing is a new update SQL script for each database. You could name it "5.2.0-2024-08-24.sql".
You could look up in existing update SQL scripts how we add new modules. E.g. we insert them with asset ID zero and do not insert assets into the assets table on update.
@Elfangor93 Regarding how the update SQL script for adding a new module you can check PR #43738 as example. In that case it is a site module (client_id=0), in your case it is an admin module (client_id=1).
| Category | Administration Language & Strings Modules Repository NPM Change JavaScript SQL Installation Postgresql | ⇒ | SQL Administration com_admin Postgresql Language & Strings Modules Repository NPM Change JavaScript Installation | 
Im not an sql expert. Anyone an idea whats the problem?
@Elfangor93 For the base.sql file for MySQL see my latest review comment. The base.sql for PostgreSQL is not complete compared to the one for MySQL, it is missing the insert into the extensions table and for the module.
@Elfangor93 The system tests are failing at test "Test that modules administrator API endpoint 1) can deliver a list of administrator modules". See the log here https://ci.joomla.org/joomla/joomla-cms/78449/1/22 . It seems it gets 'mod_community_info' where it expects to get 'mod_sampledata'. It might be that the system tests need some adjustment for your PR. @muhme Could you have a look if this is the case?
@Elfangor93 The system tests are failing at test "Test that modules administrator API endpoint 1) can deliver a list of administrator modules". See the log here https://ci.joomla.org/joomla/joomla-cms/78449/1/22 . It seems it gets 'mod_community_info' where it expects to get 'mod_sampledata'. It might be that the system tests need some adjustment for your PR. @muhme Could you have a look if this is the case?
AS @richard67 wrote, the reason is, the test expects the first module returned by API is mod_sampledata. That is now no more true, the first module now returned is mod_community_info.
A fix for this is in tests/System/integration/api/com_modules/Administrator.cy.js:
  it('can deliver a list of administrator modules', () => {
    cy.api_get('/modules/administrator')
      .then((response) => {
        // Search for the module 'mod_sampledata' in any entry
        const modules = response.body.data.map(item => item.attributes.module);
        expect(modules).to.satisfy(modulesArray => modulesArray.some(module => module.includes('mod_sampledata')));
      });
  });@Elfangor93 Would you like to checkin, or should I make a PR to Elfangor93:mod_community_info?
A fix for this is in tests/System/integration/api/com_modules/Administrator.cy.js
Your suggestion looks completely different than what is currently available in Administrator.cy.js:
it('can deliver a list of administrator modules', () => {
    cy.api_get('/modules/administrator')
      .then((response) => cy.wrap(response).its('body').its('data.0').its('attributes')
        .its('module')
        .should('include', 'mod_sampledata'));
  });
I'm not sure what to change here. @muhme would be helpful to receive a PR. Thanks for your help!
Other problem. Drone can't build the packages for testing. Reason: node build/build.js --versioning fails:
> node build/build.js --versioning
[Error: ENOENT: no such file or directory, lstat '/drone/src/build/tmp/1724864249/media/mod_community_info/js/community-info.es6.js'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/drone/src/build/tmp/1724864249/media/mod_community_info/js/community-info.es6.js'
}
`npm run versioning` did not complete as expected.
@dgrammatiko Does it need to add the path to the new module's JS somewhere in the build JS scripts?
This comment was somehow overlooked by me. Thank you for your help!
| Category | Administration Language & Strings Modules Repository NPM Change JavaScript SQL Installation Postgresql com_admin | ⇒ | SQL Administration com_admin Postgresql Language & Strings Modules Repository NPM Change JavaScript Installation Unit Tests | 
| Labels | 
                                        Added: 
Unit/System Tests
 | 
    ||
Drone is still failing. Any ideas @muhme?
@Elfangor93 I've updated the branch to latest 5.2-dev to see if that helps with Drone. I've also had again a quick look on the base.sql files and have noticed that some lft and rgt values where not increased where they should have been increased. In general all lft and rgt values need to be increased by 2 for assets where the lft value is greater that the old rgt value of com_modules. This has been done for some, but for some it has not been done, e.g. com_users, com_wrapper, com_finder, ...
The following drawing shows the principle of our nested tables (or nested set if you search for in in Wikipedia) for the user groups table. The numbers inside the boxes are the ids (not relevant for the nested set). Left and right beside the boxes are the lft and rgt values. The thin arrows show how they are incremented. The level can be seen by the tree structure.
Maybe that helps you to fix your base.sql changes. I know it is some work to manually do that, and if you need help I can help when I find the time. But maybe you can fix it yourself with the above information.
Drone is still failing. Any ideas @muhme?
@Elfangor93 What I see in drone logs is that for the phpmin-system-mysql all test specs passed. I can reproduce this with JBT, installation with mysqli is working and all test specs passed:
scripts/create.sh 52 https://github.com/Elfangor93/joomla-cms:mod_community_info mysqli
scripts/test.sh
Drone log problem is in phpmax-system-postgres.  Already the Joomla Installation with postgresql fails with:
42601, 7, ERROR: VALUES lists must all be the same length LINE 28: (0, 'mod_community_info', 'module', 'mod_community_info', ''... ^
Tested with the following (additionally opened the Cypress GUI to be able to copy and paste the error that can already be seen on the screenshot):
scripts/create.sh 52 https://github.com/Elfangor93/joomla-cms:mod_community_info pgsql
scripts/cypress.sh 52 local
Therefore the problem is not in System Tests, it is in the PostgreSQL scripts.
Drone log problem is in
phpmax-system-postgres. Already the Joomla Installation withpostgresqlfails with:42601, 7, ERROR: VALUES lists must all be the same length LINE 28: (0, 'mod_community_info', 'module', 'mod_community_info', ''... ^
Therefore the problem is not in System Tests, it is in the PostgreSQL scripts.
@muhme Thanks for the hint. I should have seen that when reviewing the base.sql for PostgreSQL. Seems I need either glasses or more coffee. This will be fixed with my code change suggestion.
@Elfangor93 please remove the code for the debug part and all the console logs. It's like you're doing this in PHP
if (JDEBUG) {
  var_dump($this);
} else {
  /* some other code */
}If you want to debug javascript there's the debugger statement which gives you all the step functionality and observability of the variables. Console logs are not for production...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger
Console logs are not for production...
@dgrammatiko And what would be the equivalent of Joomla\CMS\Log\Log::add($txt, $priority);?
When I dont want to throw an error, but want to give some information why something is not wroking as expected?
As a website administrator, I would expect this kind of information to be found in the browser console, no?
In idea:
I could post the logging information with the help of com_ajax to the module helper and process them there with the help of the Joomla logger (Joomla\CMS\Log\Log). Would you like this approach more?
As a website administrator, I would expect this kind of information to be found in the browser console, no?
No, the developer should be able to work out the bug/error through the Error, no need to dump things in the console and also it'snot something that Joomla does either for JS or PHP!
And what would be the equivalent of Joomla\CMS\Log\Log::add($txt, $priority);?
That's not 1 to 1 to console.log. The equivalent of console.log in php is the var_dump. Why is it though so important to log something? Use the debugger statements when you developing/debugging the script you get way more power than console.log
Would you like this approach more?
The thing is that in Joomla we don't do any of that. The JS code is expected to be production grade (tested, debugged, etc) and personally I don't like the idea that there are code dumps in the client side. Anyways ask the maintainers, if they're ok probably you can do it (I'm not a maintainer).
This pull request has been automatically rebased to 5.3-dev.
| Title | 
            
            
  | 
    ||||||
The thing is that in Joomla we don't do any of that. The JS code is expected to be production grade (tested, debugged, etc) and personally I don't like the idea that there are code dumps in the client side.
The module if fetching data asynchronous from openstreetmap to provide the manual location selection. If something fails during this fetch I would like to log something about the error.
External API: https://nominatim.openstreetmap.org/search.php
For all the rest I guess I can remove any reporting in the JS and add logging in the module helper instead.
@Elfangor93 all I'm saying is that we don't do such things with production code in this project...
| Labels | 
                                        Added: 
Feature
PR-5.3-dev
 Removed: PR-5.2-dev  | 
    ||
I've also had again a quick look on the base.sql files and have noticed that some lft and rgt values where not increased where they should have been increased.
@richard67 I hope, I catched now all of them and the insert statement is now correct. Thanks for helping me with this!
There are still a lot of code issues with this PR but I think its really unfair to keep asking for changes if this has no chance of being accepted.
This pull request has been automatically rebased to 6.0-dev.
| Title | 
            
            
  | 
    ||||||
There are still a lot of code issues with this PR but I think its really unfair to keep asking for changes if this has no chance of being accepted.
Maintainers please make a decision
Update regarding the required API on community.joomla.org: I've been working on it in the last couple of weeks, 80% completed
There are still a lot of code issues with this PR but I think its really unfair to keep asking for changes if this has no chance of being accepted.
Maintainers please make a decision
@SniperSister How far are you with the backend implementation?
This pull request has been automatically rebased to 6.1-dev.
| Title | 
            
            
  | 
    ||||||
the list of countries is a non-standard list that has been modified from a questionable source. We should not be reinventing the wheel for a list of countries that we will need to maintain ourselves. There are ISO standards for this which are actively maintained and do not contain the modifications you have made to satisfy one single country. This is wrong.