We currently only have module_exists. If there were respective functions for themes and layouts, then code like this:
function _installer_browser_is_project_enabled($type, $name) {
switch ($type) {
case 'module':
return module_exists($name);
break;
case 'theme':
$themes = list_themes();
return isset($themes[$name]);
break;
case 'layout':
$layout = layout_load($name);
return !empty($layout);
break;
}
return FALSE;
}
...which is actually not working to effectively determine whether a layout is enabled or not (#2336) and the best that I could come up with to correct it is this:
function _installer_browser_is_project_enabled($type, $name) {
switch ($type) {
case 'module':
return module_exists($name);
break;
case 'theme':
$themes = list_themes();
return isset($themes[$name]);
break;
case 'layout':
$excluded_templates = config_get('layout.settings', 'excluded_templates');
return (!empty(layout_get_layout_info($name)) && !in_array($name, $excluded_templates));
break;
}
return FALSE;
}
...would be much simpler:
function _installer_browser_is_project_enabled($type, $name) {
switch ($type) {
case 'module':
return module_exists($name);
break;
case 'theme':
return theme_exists($name);
break;
case 'layout':
return layout_exists($name);
break;
}
return FALSE;
}
And if there was a generic project_exists function, then we wouldn't need _installer_browser_is_project_enabled() in the first place.
In fact, I don't think that *_exists as function names are precise. We should consider separate *_exists and *_enabled functions. Especially now that we have Project Installer where we need to distinguish between downloaded vs installed/enabled projects.
PS: this is a sibling issue to #332
Recent comments
Thanks for replying. I was expecting that it be relatively easy to manage overlay layers (not the base layers that are indeed controlled form the Leaflet More Maps module's settings page). That...
Layer management in Leaflet
for instance, to set up a layer for water basins and another for mining concessions... Are those tiles from a tile server, or some GeometryCollection in local file in json...
Layer management in Leaflet
We were able to add overlays and polygons to leaflet with a custom module as mentioned in https://github.com/backdrop-contrib/leaflet/issues/73#issuecomment-2907873081 with a combination of php...
Layer management in Leaflet