Skip to content

Commit

Permalink
ACMS-4237: Remove Dependency of acquia_cms_common from Site Studio.
Browse files Browse the repository at this point in the history
  • Loading branch information
rajeshreeputra committed Jan 7, 2025
1 parent ca42150 commit 7060e33
Show file tree
Hide file tree
Showing 5 changed files with 138 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ description: 'Module for Site Studio Installation Code.'
core_version_requirement: ^9.5 || ^10 || ^11
type: module
dependencies:
- acquia_cms_common:acquia_cms_common
- cohesion_base_styles # phpcs:ignore
- cohesion_custom_styles # phpcs:ignore
- cohesion_elements # phpcs:ignore
Expand Down
20 changes: 12 additions & 8 deletions modules/acquia_cms_site_studio/acquia_cms_site_studio.install
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Contains install-time code for the Acquia CMS profile.
*/

use Drupal\acquia_cms_common\Facade\ConfigHandlerFacade;
use Drupal\acquia_cms_site_studio\Facade\ConfigHandlerFacade;
use Drupal\cohesion\Controller\AdministrationController;
use Drupal\cohesion_sync\Event\SiteStudioSyncFilesEvent;
use Drupal\cohesion_sync\EventSubscriber\Import\SiteStudioSyncFilesSubscriber;
Expand Down Expand Up @@ -129,14 +129,18 @@ function acquia_cms_site_studio_install($is_syncing) {
'sitestudio_config_management',
];
$module_installer->install($modules_to_install);
}
}

/**
* Implements hook_module_preinstall().
*/
function acquia_cms_site_studio_module_preinstall($module) {
\Drupal::service('acquia_cms_common.utility')->setModulePreinstallTriggered($module);
// Add text format permission to developer role.
$role = \Drupal::entityTypeManager()->getStorage('user_role')->load('developer');
$editors = $entity_type_manager->getStorage('editor')->loadMultiple([
'cohesion',
'filtered_html',
'full_html',
]);
foreach($editors as $editor) {
$role->grantPermission('use text format ' . $editor->id());
}
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* File for the Site Studio Installation Code.
*/

use Drupal\acquia_cms_common\Facade\ConfigHandlerFacade;
use Drupal\acquia_cms_site_studio\Facade\ConfigHandlerFacade;
use Drupal\acquia_cms_site_studio\Facade\CohesionFacade;
use Drupal\acquia_cms_site_studio\Form\AcquiaCmsSiteStudioSiteConfigureForm;
use Drupal\acquia_cms_site_studio\Helper\SiteStudioPermissionHelper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ dependencies: { }
id: developer
label: 'Low Code Site Builder'
weight: -9
is_admin: null
is_admin: false
permissions:
# The above comment is only applicable till here.
- 'use text format filtered_html'
- 'use text format full_html'
- 'view the administration theme'
- 'access animate on view'
- 'access component builder elements group'
- 'access component content'
Expand All @@ -28,7 +25,6 @@ permissions:
- 'access media elements group'
- 'access menu elements group'
- 'access view elements group'
- 'use text format cohesion'
- 'access analytics'
- 'access cohesion sync'
- 'access color_picker'
Expand All @@ -53,3 +49,4 @@ permissions:
- 'administer style helpers'
- 'administer view templates'
- 'administer website settings'
- 'view the administration theme'
123 changes: 123 additions & 0 deletions modules/acquia_cms_site_studio/src/Facade/ConfigHandlerFacade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?php

namespace Drupal\acquia_cms_site_studio\Facade;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
* Handles the configuration and settings for ACMS.
*
* @internal
* This is a totally internal part of Acquia CMS and may be changed in any
* way, or removed outright, at any time without warning. External code should
* not use this class!
*/
final class ConfigHandlerFacade implements ContainerInjectionInterface {

/**
* The config factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;

/**
* The EntityTypeManager service.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;

/**
* The Module name.
*
* @var string
*/
protected string $moduleName;

/**
* ConfigHandlerFacade constructor.
*
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* Used to obtain data from various entity types.
*/
public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) {
$this->configFactory = $config_factory;
$this->entityTypeManager = $entity_type_manager;
}

/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('config.factory'),
$container->get('entity_type.manager')
);
}

/**
* Set module name.
*
* @param string $name
* Module name.
*
* @return void
* Setting the module name.
*/
public function setModuleName(string $name): void {
$this->moduleName = $name;
}

/**
* Function to add default settings of node revision delete.
*
* @param array $settings
* Config settings data.
*
* @return void
* Saving the default settings.
*/
public function processConfigSettings(array $settings): void {
$config = $this->configFactory->getEditable("$this->moduleName.settings");
foreach ($settings as $key => $value) {
$config->set($key, $value);
}
$config->save();
}

/**
* Set third party settings for entity.
*
* @param array $entity
* Entity data.
* @param array $settings
* Third party setting data.
*
* @return void
* Saving the third party settings.
*/
public function processThirdPartySettings(array $entity, array $settings): void {
if ($entity) {
// Get the entity storage with respective entity_type.
$type = $this->entityTypeManager->getStorage($entity['entity_type']);
$entityLoad = $type->load($entity['bundle']);
// @phpstan-ignore-next-line
$getThirdPartySettings = $entityLoad ? $entityLoad->get('third_party_settings') : NULL;
// Set the third party settings.
if (!empty($entityLoad) && !isset($getThirdPartySettings[$this->moduleName])) {
foreach ($settings as $key => $value) {
// @phpstan-ignore-next-line
$entityLoad->setThirdPartySetting($this->moduleName, $key, $value);
}
$entityLoad->save();
}
}
}

}

0 comments on commit 7060e33

Please sign in to comment.