Skip to content

Commit

Permalink
SHS-5904: Add new "log out" block to existing sites (#1696)
Browse files Browse the repository at this point in the history
  • Loading branch information
codechefmarc authored Dec 19, 2024
1 parent 5031c64 commit d087ab8
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
uuid: 7e424b1f-3692-41a3-a48a-dd1a450e0203
langcode: en
status: true
dependencies:
module:
- stanford_samlauth
theme:
- humsci_colorful
id: humsci_colorful_samlsunetidlogoutblock
theme: humsci_colorful
region: footer
weight: 0
provider: null
plugin: stanford_samlauth_logout_block
settings:
id: stanford_samlauth_logout_block
label: 'SAML SUNetID Logout Block'
label_display: '0'
provider: stanford_samlauth
link_text: 'SUNetID Logout'
visibility: { }
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
uuid: 2f7f0d52-c463-411d-a2e2-656d185acd4d
langcode: en
status: true
dependencies:
module:
- stanford_samlauth
theme:
- humsci_traditional
id: humsci_traditional_samlsunetidlogoutblock
theme: humsci_traditional
region: footer
weight: 0
provider: null
plugin: stanford_samlauth_logout_block
settings:
id: stanford_samlauth_logout_block
label: 'SAML SUNetID Logout Block'
label_display: '0'
provider: stanford_samlauth
link_text: 'SUNetID Logout'
visibility: { }
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,13 @@ use Drupal\hs_entities\Entity\HsEntityType;
use Drupal\node\NodeInterface;
use Drupal\paragraphs\Entity\ParagraphsType;
use Drupal\user\RoleInterface;
use Drush\Drush;

/**
* Implements hook_requirements().
*/
function su_humsci_profile_requirements($phase) {
$requirements = [];
if ($phase == 'runtime') {

$site_path = DrupalKernel::findSitePath(\Drupal::request());
$site_path = explode('/', $site_path);
$site_name = $site_path[1];
Expand Down Expand Up @@ -75,7 +73,11 @@ function su_humsci_profile_update_9606() {
$entity_type_manager = \Drupal::entityTypeManager();
$config_factory = \Drupal::configFactory();

\Drupal::service('module_installer')->install(['menu_link', 'cshs', 'token_or']);
\Drupal::service('module_installer')->install([
'menu_link',
'cshs',
'token_or',
]);
$config_factory->getEditable('menu_link_weight.settings')
->set('menu_parent_form_selector', 'cshs')
->save();
Expand Down Expand Up @@ -110,7 +112,8 @@ function su_humsci_profile_update_9607() {
$field_config_storage = $entity_type_manager->getStorage('field_config');
$bundles = [];
/** @var \Drupal\node\Entity\NodeType $node_type */
foreach ($entity_type_manager->getStorage('node_type')->loadMultiple() as $node_type) {
foreach ($entity_type_manager->getStorage('node_type')
->loadMultiple() as $node_type) {
if ($node_type->getThirdPartySetting('menu_ui', 'available_menus')) {
$bundles[] = $node_type->id();
$node_type->setThirdPartySetting('menu_ui', 'available_menus', []);
Expand Down Expand Up @@ -479,7 +482,8 @@ function su_humsci_profile_update_9701(&$sandbox) {

// Clear entity caches.
$entity_type_manager->getStorage($eck_type)->resetCache([$id]);
$entity_type_manager->getStorage('hs_entity')->resetCache([$new_entity->id()]);
$entity_type_manager->getStorage('hs_entity')
->resetCache([$new_entity->id()]);
}
$sandbox['#finished'] = empty($sandbox['items']) ? 1 : ($sandbox['count'] - count($sandbox['items'])) / $sandbox['count'];

Expand Down Expand Up @@ -852,7 +856,8 @@ function _su_humsci_profile_get_uuid(string $config_name): string|null {
* Uninstall legacy themes.
*/
function su_humsci_profile_update_9705() {
$installed_themes = \Drupal::service('extension.list.theme')->getAllInstalledInfo();
$installed_themes = \Drupal::service('extension.list.theme')
->getAllInstalledInfo();
$legacy_themes = [
'archaeology',
'francestanford',
Expand Down Expand Up @@ -1096,7 +1101,7 @@ function su_humsci_profile_update_9718() {
// Remove webform existing config - needs to be done before uninstall.
$config_factory = \Drupal::configFactory();

$config_names = array_filter($config_factory->listAll(), function ($item) {
$config_names = array_filter($config_factory->listAll(), function($item) {
return str_contains($item, 'webform');
});

Expand All @@ -1114,5 +1119,59 @@ function su_humsci_profile_update_9718() {
*/
function su_humsci_profile_update_9719() {
// Uninstalls modules after removing configs to prevent updb errors.
\Drupal::service('module_installer')->uninstall(['hs_webform', 'webform_ui', 'webform']);
\Drupal::service('module_installer')->uninstall([
'hs_webform',
'webform_ui',
'webform',
]);
}

/**
* Add new logout block to existing sites.
*/
function su_humsci_profile_update_9720() {
$block_storage = \Drupal::entityTypeManager()->getStorage('block');
/** @var Drupal\block\Entity\Block[] $login_blocks */
$login_blocks = $block_storage->loadByProperties([
'plugin' => 'stanford_samlauth_login_block',
]);
$log_out = 'SUNetID Logout';

if ($login_blocks) {
$login_block = reset($login_blocks);
$settings = $login_block->get('settings');

$log_in = $settings['link_text'];
$log_out = preg_replace('/in\b/', 'out', $log_in);
$log_out = preg_replace('/In\b/', 'Out', $log_out);
$log_out = str_replace(' to ', ' from ', $log_out);
$log_out = str_replace(' To ', ' From ', $log_out);
}

$block_info = [
'status' => TRUE,
'region' => 'footer',
'plugin' => 'stanford_samlauth_logout_block',
'weight' => 0,
'settings' => [
'id' => 'stanford_samlauth_logout_block',
'label' => 'SAML SUNetID Logout Block',
'label_display' => 0,
'provider' => 'stanford_samlauth',
'link_text' => $log_out,
],
'visibility' => [],
];
$block_storage->create([
'uuid' => '7e424b1f-3692-41a3-a48a-dd1a450e0203',
'id' => 'humsci_colorful_samlsunetidlogoutblock',
'theme' => 'humsci_colorful',
...$block_info,
])->save();
$block_storage->create([
'uuid' => '2f7f0d52-c463-411d-a2e2-656d185acd4d',
'id' => 'humsci_traditional_samlsunetidlogoutblock',
'theme' => 'humsci_traditional',
...$block_info,
])->save();
}
Original file line number Diff line number Diff line change
Expand Up @@ -875,11 +875,22 @@ function su_humsci_profile_form_user_register_form_alter(&$form, FormStateInterf
/**
* Implements hook_preprocess_HOOK().
*/
function su_humsci_profile_preprocess_block__stanford_samlauth(&$variables) {
$variables['content']['login']['#attributes']['class'] = [
function su_humsci_profile_preprocess_block(&$variables) {
$classes = [
'text-align-right',
'hs-secondary-button',
];

$base_plugin_id = $variables['base_plugin_id'];

switch ($base_plugin_id) {
case 'stanford_samlauth_login_block':
$variables['content']['login']['#attributes']['class'] = $classes;
break;

case 'stanford_samlauth_logout_block':
$variables['content']['logout']['#attributes']['class'] = $classes;
}
}

/**
Expand Down

0 comments on commit d087ab8

Please sign in to comment.