rsp
30 April 2025 17:22
1
We create a custom module using module builder option. We deployed it into the SuiteCRM, but it not displaying in the navbar menu.
Additionally, we tried another way too. We published module and then installed using the module loader option. We got same issue.
We tried QR&R and also checked in the “display modules and subpanel” option, it is only displaying backend name of module. Not the name that we choose in the module builder.
It is creating a tables in the database too.
Does anyone know how to solve this problem? Please guide!
Guide we used:
@BastianHammer
Can you go to admin → display modules and sub panels and check if the module is enabled/displayed
rsp
30 April 2025 19:41
3
As I mentioned, the module is under the enabled section, but it is only displaying the key_modulename. It is not displaying the module label. I can see the tables in the DB too.
It is pretty weird. What settings or code files should we check out?
Happens all the time. Its a menu cache issue. Just navigate to the new module by editing the URL. Once you visit it once it will appear in the menu.
1 Like
https://website/suitecrm/index.php?module=Demo
It is adding something like below in URL
index.php?action=ajaxui#ajaxUILoc=index.php%3Faction%3DDetailView%26module%3D
It did not add the module name to navbar menu yet.
Also, when I click on CREATE and try to select security group, it is not working.
PHP ERROR:
PHP Fatal error: Uncaught Error: Call to a member function add() on null in /var/www/html/suitecrm/include/generic/Save2.php:200
CRM ERROR:
MysqliManager: Empty query
Root Cause
SuiteCRM 7.13 fails to auto-generate the necessary entries in:
$app_list_strings['moduleList']
$app_list_strings['moduleListSingular']
These entries are what the system uses for proper UI display labels , and without them, it defaults to the raw module name.
Fix
File:
custom/include/language/en_us.lang.php
Add These Lines
$app_list_strings['moduleList']['key_moduleName'] = 'moduleLabels';
$app_list_strings['moduleListSingular']['key_moduleName'] = 'moduleLabel';
Then:
Save the file
Run Admin > Repair > Quick Repair and Rebuild
Navigate to Admin > Display Modules & Subpanels
Now your module will show as “moduleLabel”
Drag to display if needed
It should also now show properly in:
Navigation menu
Studio
Subpanel configuration
May be related to this?
opened 02:54AM - 26 Apr 25 UTC
Type: Bug
Type:Suggestion
Priority:Moderate
Area: Module
Area: Studio
Severity: Minor
### Issue
I am creating a module, when using the module loader to install this … with errors in the language files the process happily finishes and no errors are reported but the navigation menu item of the main module/bean does NOT show up.
Yes I made a mistake (shown below), but the Module Loader should pick this up and tell me off.
Here's the manifest with lots of stuff chopped:
```
$manifest = array (
'name' => 'MyModule',
'description' => 'module to show the loading error',
'version' => 1.0,
'author' => 'Jobst Schmalenbach',
'is_uninstallable' => true,
'published_date' => '2025-04-30 23:23:59',
'type' => 'module',
'remove_tables' => 'prompt',
);
'id' => 'MyModule',
'beans' =>
array (
0 =>
array (
'module' => 'MyModule',
'class' => 'MyClass',
'path' => 'modules/MyModule/MyClass.php',
'tab' => true,
),
),
'layoutdefs' =>
array (
),
'relationships' =>
array (
),
'language' =>
array (
0 =>
array (
'from' => '<basepath>/SugarModules/language/application/en_us.MyModule.php',
'to_module' => 'application',
'language' => 'en_us',
),
2 =>
array (
'from' => '<basepath>/SugarModules/language/application/en_us.MyModuleAdmin.php',
'to_module' => 'Administration',
'language' => 'en_us',
),
),
'scheduledefs' =>
array(
0 =>
array(
'from' => '<basepath>/extensions/daily.php',
),
1 =>
array(
'from' => '<basepath>/extensions/hourly.php',
),
),
'administration' =>
array (
0 => array (
'from' => '<basepath>/admin/MyModuleAdminMenu.php'
),
),
);
```
Here are the two errors, I basically swapped the contents of the module application and admin language files:
In the admin file I had:
```
<?php
$app_list_strings['moduleList']['CalDavSync'] = 'CalDavSync';
```
In the module application file I had
```
<?php
$mod_strings['LBL_CALDAVSYNC_ADMIN_PANEL'] = 'CalDavSync Administration Panel';
```
The install goes through happily, no warning in the PHP (php errors setting is not limited).
The menu of the module never shows up.
As soon as I fixed hte language files I had no issues.
I know it was my error, but the error reporting system of the module loader is not good enough.
Took me hours to find ...
### Possible Fix
No idea, sorry.
### Steps to Reproduce the Issue
```bash
1.upload and install a module with errors in language files via Module Loader
2.process finishes
3.no errors reported
4.Menu item of the module (the main bean) missing
```
### Context
I spend quite a few hours on this to figure out why this happened.
I basically started with a file from the module builder then added my stuff.
Even then I had trouble to spot it because the language files were installed in the tree with no errors reported.
I am a long time user/admin/developer of sugar/suitecrm, this really baffled me.
### Version
7.14.6
### What browser are you currently using?
Firefox
### Browser Version
N/A, it's NOT related to the browser
### Environment Information
mysql 8.0.41, php 8.2.28
### Operating System and Version
AlmaLinux 8.X (not related to this)
It also looks somehow similar to the bug we reported recently:
opened 10:06AM - 12 Mar 25 UTC
Type: Bug
Priority:Important
Area: Studio
Severity: Major
### Issue
When a package/module is created via ModuleBuilder, all instance appl… ication labels are incorrectly added in the package application language path.
This might provoque an inconsistency with other labels when the package is deployed.
Example:

This problem is even worse when working with multi-language instances.
### Possible Fix
This bug was introduced with the Rector changes in this commit: [b966550ea57bfc68926258d6e32d0e8a1416a798](https://github.com/salesagility/SuiteCRM/commit/b966550ea57bfc68926258d6e32d0e8a1416a798).
It is incorrectly adding all app_list_strings to the package application strings:
[MBLanguage.php (lines 97-104)](https://github.com/salesagility/SuiteCRM/blob/a69b8fdce5e70d490ddd8f91f16395ee426b0e01/modules/ModuleBuilder/MB/MBLanguage.php#L97-L104).
It seems that the variable `$app_list_strings` has always been empty, and the system was functioning just fine. However, this might have been an unnoticed bug until now.
Since we are unsure about the purpose of that condition, we have decided, for now, to simply remove line 86. This is effectively the same as removing the entire function, as it is currently doing nothing. Therefore, the `loadAppListStrings` function should be properly analyzed to assess its necessity.
### Steps to Reproduce the Issue
```bash
1.Create a new Package
2.Add a new basic module and save it
3.Check in custom/modulesbuilder/packages/.../application/language that the file has all application labels.
4. After deploy, in a multi-language environment, many core labels are overriden.
```
### Context
We consider this as an critical issue.
### Version
7.14.6
### What browser are you currently using?
Chrome
### Browser Version
_No response_
### Environment Information
PHP 8.3 and 8.4
### Operating System and Version
Ubuntu 23.10
1 Like
So is this a fix for that issue?
SinergiaTIC:enhancement/coreUpgradeSuiteCRM7.14.4
← SinergiaTIC:bug/moduleBuilderAppLabels
opened 04:08PM - 13 Mar 25 UTC
- Relacionado con: https://github.com/salesagility/SuiteCRM/issues/10646
## D… escripción
Al crear un paquete o módulo con el constructor de módulos, se añaden en el paquete todas las etiquetas globales definidas en el crm.
Al desplegar el paquete provoca que las etiquetas se carguen de forma inconsistente, mezclando idiomas en ciertas etiquetas según cómo se hayan cargado (de la aplicación o del módulo)
## Cambios realizados
Tal y como se describe en https://github.com/salesagility/SuiteCRM/issues/10646, el error se introduce en la refactorización aplicando Rector en el módulo ModuleBuilder por SuiteCRM: https://github.com/salesagility/SuiteCRM/commit/b966550ea57bfc68926258d6e32d0e8a1416a798
Concretamente en la función `loadAppListStrings`: Antes no cargaba la lista global de etiquetas, ahora sí.
Se procede a no cargar la lista global de etiquetas, iniciando la variable `$app_list_strings` (de ámbito local) a un array vacío.
## Pruebas
1. Crear un nuevo Paquete
2. Añadir un módulo nuevo y guardarlo
3. Verificar que en la carpeta `custom/modulesbuilder/packages/.../application/language` el fichero NO contiene todas las cadenas generales
Yes.
As mentioned in the SuiteCRM Issue, it’s just a temporal fix until a proper evaluation of the entire function is done.
Since we are unsure about the purpose of that condition, we have decided, for now, to simply remove line 86. This is effectively the same as removing the entire function, as it is currently doing nothing. Therefore, the loadAppListStrings
function should be properly analyzed to assess its necessity.
But we haven’t tested it with your case.
I need to add this line and create another package for custom module using Module Builder:
$app_list_strings = [];
GITHUB:
public function loadAppListStrings($file)
{
// global $app_list_strings;
// $app_list_strings = $app_list_strings ?? [];
$app_list_strings = [];
}