Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
U
uw_cfg_common
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
WCMS
uw_cfg_common
Commits
e0032fa1
Commit
e0032fa1
authored
2 years ago
by
Eric Bremner
Committed by
Kevin Paxman
2 years ago
Browse files
Options
Downloads
Patches
Plain Diff
ISTWCMS-5880: adding update hook for media fields
parent
9979bb0a
No related branches found
No related tags found
3 merge requests
!284
Feature/istwcms 5880 ebremner banners above
,
!274
Draft: ISTWCMS-5551: fixing office hours display
,
!260
Feature/istwcms 5668 a5kulkar rename references to publications
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
uw_cfg_common.install
+171
-0
171 additions, 0 deletions
uw_cfg_common.install
with
171 additions
and
0 deletions
uw_cfg_common.install
+
171
−
0
View file @
e0032fa1
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
*/
*/
use
Drupal\Core\Config\FileStorage
;
use
Drupal\Core\Config\FileStorage
;
use
Drupal\field\Entity\FieldConfig
;
use
Drupal\node\Entity\Node
;
use
Drupal\node\Entity\Node
;
use
Drupal\taxonomy\Entity\Term
;
use
Drupal\taxonomy\Entity\Term
;
use
Drupal\user\Entity\Role
;
use
Drupal\user\Entity\Role
;
...
@@ -458,3 +459,173 @@ function uw_cfg_common_update_9105(&$sandbox) {
...
@@ -458,3 +459,173 @@ function uw_cfg_common_update_9105(&$sandbox) {
$active_storage
=
\Drupal
::
service
(
'config.storage'
);
$active_storage
=
\Drupal
::
service
(
'config.storage'
);
$active_storage
->
write
(
$name
,
$source
->
read
(
$name
));
$active_storage
->
write
(
$name
,
$source
->
read
(
$name
));
}
}
/**
* Add new fields for banners above.
*/
function
uw_cfg_common_update_9106
(
&
$sandbox
)
{
// The content types that are not getting any changes.
$cts_not_to_install
=
[
'uw_ct_sidebar'
,
'uw_ct_site_footer'
,
'uw_ct_expand_collapse_group'
,
];
// The content types with media already in it (hero image).
$cts_with_media
=
[
'uw_ct_blog'
,
'uw_ct_event'
,
'uw_ct_news_item'
,
];
// Get all the node types.
$node_types
=
\Drupal
::
entityTypeManager
()
->
getStorage
(
'node_type'
)
->
loadMultiple
();
// Step through each node type and get the path to
// the module and the machine name.
foreach
(
$node_types
as
$node_type
)
{
// Get the id from the node type.
$id
=
$node_type
->
id
();
// Ensure we are only getting the node type
// that need updating.
if
(
!
in_array
(
$id
,
$cts_not_to_install
))
{
// Catalogs and opportunities have different paths
// and ids, so setup the content types array with
// the correct info.
if
(
$id
==
'uw_ct_catalog_item'
)
{
$content_types
[
'uw_ct_catalog'
]
=
$id
;
}
else
if
(
$id
==
'uw_ct_opportunity'
)
{
$content_types
[
'uw_ct_opportunities'
]
=
$id
;
}
else
{
$content_types
[
$id
]
=
$id
;
}
}
}
// Get the type of media field that we need to udpate.
$type_of_media
=
current
(
\Drupal
::
entityTypeManager
()
->
getStorage
(
'field_storage_config'
)
->
loadByProperties
(
array
(
'id'
=>
'node.field_uw_type_of_media'
)));
// Get the type of media settings.
$settings
=
$type_of_media
->
getSettings
();
// Update the settings to remove the allowed values and
// add the allowed values function.
$settings
[
'allowed_values'
]
=
[];
$settings
[
'allowed_values_function'
]
=
'_uw_cfg_common_allowed_media_types'
;
// Set the update settings.
$type_of_media
->
setSettings
(
$settings
);
// Save the field.
$type_of_media
->
save
();
// The names of the fields we need to install.
$names
=
[
'field.storage.node.field_uw_banner'
,
'field.storage.node.field_uw_media_width'
,
'field.storage.node.field_uw_slide_speed'
,
'field.storage.node.field_uw_transition_speed'
,
'field.storage.node.field_uw_text_overlay_style'
,
];
// Get the path to cfg common config install directory.
$path
=
\Drupal
::
service
(
'extension.list.module'
)
->
getPath
(
'uw_cfg_common'
)
.
'/config/install/'
;
$config_dir
=
new
FileStorage
(
$path
);
// Step through each of the field names and install them.
foreach
(
$names
as
$name
)
{
// Get the config from the yml file into an array.
$config_record
=
$config_dir
->
read
(
$name
);
// Get the entity type.
$entity_type
=
\Drupal
::
service
(
'config.manager'
)
->
getEntityTypeIdByName
(
$name
);
// Get the storage.
$storage
=
\Drupal
::
entityTypeManager
()
->
getStorage
(
$entity_type
);
// Create the new field from the converted yml.
$field
=
$storage
->
createFromStorageRecord
(
$config_record
);
// Save the new field.
$field
->
save
();
}
// Step through each of the content types and install the fields,
// and also setup default values for the fields.
foreach
(
$content_types
as
$path
=>
$id
)
{
// Get the path to the content type.
$path
=
\Drupal
::
service
(
'extension.list.module'
)
->
getPath
(
$path
)
.
'/config/install/'
;
$config_dir
=
new
FileStorage
(
$path
);
// The names of the fields to install.
$names
=
[
'field.field.node.'
.
$id
.
'.field_uw_banner'
,
'field.field.node.'
.
$id
.
'.field_uw_type_of_media'
,
'field.field.node.'
.
$id
.
'.field_uw_media_width'
,
'field.field.node.'
.
$id
.
'.field_uw_text_overlay_style'
,
'field.field.node.'
.
$id
.
'.field_uw_transition_speed'
,
];
// Step through each of the fields and install them.
foreach
(
$names
as
$name
)
{
// Get the config from the yml into an array.
$config_record
=
$config_dir
->
read
(
$name
);
// If the field config is not install, install it.
if
(
!
FieldConfig
::
loadByName
(
$config_record
[
'entity_type'
],
$config_record
[
'bundle'
],
$config_record
[
'field_name'
])
)
{
FieldConfig
::
create
(
$config_record
)
->
save
();
}
}
// If there is no media yet on the content type,
// then install the type of hero image field.
if
(
!
in_array
(
$id
,
$cts_with_media
))
{
// Name of the hero image field.
$name
=
'field.field.node.'
.
$id
.
'.field_uw_hero_image'
;
// Get the config from the yml into an array.
$config_record
=
$config_dir
->
read
(
$name
);
// If the field config is not install, install it.
if
(
!
FieldConfig
::
loadByName
(
$config_record
[
'entity_type'
],
$config_record
[
'bundle'
],
$config_record
[
'field_name'
]))
{
FieldConfig
::
create
(
$config_record
)
->
save
();
}
}
// Get all the nodes of the content type.
$nodes
=
\Drupal
::
entityTypeManager
()
->
getStorage
(
'node'
)
->
loadByProperties
([
'type'
=>
$id
]);
// Step through each of the nodes and set the default
// values of the fields.
foreach
(
$nodes
as
$node
)
{
// Set default values for banners.
$node
->
field_uw_banner
=
NULL
;
$node
->
field_uw_media_width
=
'uw_lbs_full_width'
;
$node
->
field_uw_slide_speed
=
7000
;
$node
->
field_uw_transition_speed
=
400
;
$node
->
field_uw_text_overlay_style
=
'full-width'
;
// If the content type does not have media yet,
// set the default value for type of media.
if
(
!
in_array
(
$id
,
$cts_with_media
))
{
$node
->
field_uw_type_of_media
=
NULL
;
}
// Save the node.
$node
->
save
();
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment