diff --git a/blt/blt.yml b/blt/blt.yml index 95fdd10e5..e868c8816 100644 --- a/blt/blt.yml +++ b/blt/blt.yml @@ -10,7 +10,7 @@ git: remotes: - 'swshumsci@svn-4786.devcloud.hosting.acquia.com:swshumsci.git' deploy: - tag_source: true + tag_source: false exclude_file: '${repo.root}/blt/deploy/rsync-exclude.txt' gitignore_file: '${repo.root}/blt/deploy/.gitignore' drush: diff --git a/blt/src/Commands/HumsciCommand.php b/blt/src/Commands/HumsciCommand.php index 5ad641ef4..8eec9eb3b 100644 --- a/blt/src/Commands/HumsciCommand.php +++ b/blt/src/Commands/HumsciCommand.php @@ -124,8 +124,8 @@ public function syncDbDefault($environment = 'remote') { $task = $this->taskDrush() ->alias('') - ->drush('cache-clear drush') ->drush('sql-drop') + ->drush('cache-clear drush') ->drush('sql-sync') ->arg("@$remote_alias") ->arg($local_alias) @@ -139,7 +139,6 @@ public function syncDbDefault($environment = 'remote') { $task->drush('sql-sanitize'); } - $task->drush('cr'); $task->drush('sqlq "TRUNCATE cache_entity"'); $result = $task->run(); @@ -209,9 +208,6 @@ protected function updateSite($multisite) { $this->switchSiteContext($multisite); $this->invokeCommand('drupal:toggle:modules'); - $this->taskDrush() - ->drush("updb -y") - ->run(); $this->taskDrush() ->drush("cr") ->run(); diff --git a/blt/src/Hooks/HumsciHook.php b/blt/src/Hooks/HumsciHook.php index 79d99193a..493f2d072 100644 --- a/blt/src/Hooks/HumsciHook.php +++ b/blt/src/Hooks/HumsciHook.php @@ -33,6 +33,15 @@ public function preConfigImport() { $this->invokeCommand('drupal:toggle:modules'); } + /** + * Update database first. + * + * @hook pre-command drupal:toggle:modules + */ + public function preToggleModules() { + $this->taskDrush()->drush('updb')->run(); + } + /** * Import any missing entity form/display configs since they are ignored. * diff --git a/composer.json b/composer.json index f6e7f13f1..2454c022d 100644 --- a/composer.json +++ b/composer.json @@ -92,8 +92,8 @@ "require": { "acquia/blt": "9.x-dev", "beleneglorion/php-bugherd-api": "dev-master#f0fce97042bd05bc5560fbf37051cd74f802cea1", - "ckeditor-plugin/link": "4.10.1", "ckeditor-plugin/fakeobjects": "4.10.1", + "ckeditor-plugin/link": "4.10.1", "composer/installers": "^1.4", "consolidation/robo": "~1.2.4", "consolidation/site-alias": "1.1.5", @@ -123,7 +123,7 @@ "drupal/config_installer": "^1.8", "drupal/config_readonly": "dev-1.x", "drupal/config_update": "dev-1.x#5785588167279912d1e1f3a936fbf4a306265bd6", - "drupal/core": "~8.6.0-beta2", + "drupal/core": "~8.6.7", "drupal/default_content": "^1.0@alpha", "drupal/domain_301_redirect": "1.x-dev", "drupal/dropzonejs": "~2.0@alpha", @@ -181,6 +181,7 @@ "drupal/video_embed_field": "~2.0-alpha1", "drupal/viewfield": "^3.0@alpha", "drupal/views_block_filter_block": "^1.0@beta", + "drupal/views_bulk_operations": "^2.4", "drupal/views_infinite_scroll": "^1.5", "drupal/views_taxonomy_term_name_depth": "6.x-dev", "drupal/webform": "~5.0-beta18", @@ -331,6 +332,12 @@ }, "drupal/video_embed_field": { "https://www.drupal.org/project/video_embed_field/issues/2913925": "https://www.drupal.org/files/issues/2018-07-09/retrieve-title-2913925-5.patch" + }, + "drupal/viewfield": { + "https://www.drupal.org/project/viewfield/issues/2892073": "https://www.drupal.org/files/issues/2019-02-11/viewfield-same_view_arguments-2892073-11.patch" + }, + "drupal/fakeobjects": { + "https://www.drupal.org/project/fakeobjects/issues/3002953": "https://www.drupal.org/files/issues/2019-02-12/fakeobjects-missing_plugin-3002953.patch" } }, "merge-plugin": { diff --git a/composer.lock b/composer.lock index f3429ad71..33b411154 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fb4872c4ab25b28137d036e9693e187b", + "content-hash": "f2c5da9f1878185f3285101c501d822f", "packages": [ { "name": "acquia/blt", @@ -308,24 +308,24 @@ }, { "name": "chi-teck/drupal-code-generator", - "version": "1.27.0", + "version": "1.28.0", "source": { "type": "git", "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "a839bc89d385087d8a7a96a9c1c4bd470ffb627e" + "reference": "a43131309b56a4c1874f39a9eaa4f6cb1a9832cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/a839bc89d385087d8a7a96a9c1c4bd470ffb627e", - "reference": "a839bc89d385087d8a7a96a9c1c4bd470ffb627e", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/a43131309b56a4c1874f39a9eaa4f6cb1a9832cd", + "reference": "a43131309b56a4c1874f39a9eaa4f6cb1a9832cd", "shasum": "" }, "require": { "ext-json": "*", "php": ">=5.5.9", - "symfony/console": "~2.7|^3", - "symfony/filesystem": "~2.7|^3", - "twig/twig": "^1.23.1" + "symfony/console": "^3.4 || ^4.0", + "symfony/filesystem": "^3.4 || ^4.0", + "twig/twig": "^1.35" }, "bin": [ "bin/dcg" @@ -349,7 +349,7 @@ "GPL-2.0-or-later" ], "description": "Drupal code generator", - "time": "2018-10-11T08:05:59+00:00" + "time": "2019-01-30T10:34:16+00:00" }, { "name": "ckeditor-plugin/fakeobjects", @@ -622,21 +622,21 @@ }, { "name": "consolidation/annotated-command", - "version": "2.11.0", + "version": "2.11.2", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "edea407f57104ed518cc3c3b47d5b84403ee267a" + "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/edea407f57104ed518cc3c3b47d5b84403ee267a", - "reference": "edea407f57104ed518cc3c3b47d5b84403ee267a", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/004af26391cd7d1cd04b0ac736dc1324d1b4f572", + "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572", "shasum": "" }, "require": { "consolidation/output-formatters": "^3.4", - "php": ">=5.4.0", + "php": ">=5.4.5", "psr/log": "^1", "symfony/console": "^2.8|^3|^4", "symfony/event-dispatcher": "^2.5|^3|^4", @@ -714,7 +714,7 @@ } ], "description": "Initialize Symfony Console commands from annotated command class methods.", - "time": "2018-12-29T04:43:17+00:00" + "time": "2019-02-02T02:29:53+00:00" }, { "name": "consolidation/config", @@ -5292,6 +5292,9 @@ "status": "covered", "message": "Covered by Drupal's security advisory policy" } + }, + "patches_applied": { + "https://www.drupal.org/project/fakeobjects/issues/3002953": "https://www.drupal.org/files/issues/2019-02-12/fakeobjects-missing_plugin-3002953.patch" } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -8334,6 +8337,9 @@ "status": "not-covered", "message": "Alpha releases are not covered by Drupal security advisories." } + }, + "patches_applied": { + "https://www.drupal.org/project/viewfield/issues/2892073": "https://www.drupal.org/files/issues/2019-02-11/viewfield-same_view_arguments-2892073-11.patch" } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -8412,6 +8418,76 @@ "source": "http://cgit.drupalcode.org/views_block_filter_block" } }, + { + "name": "drupal/views_bulk_operations", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://git.drupal.org/project/views_bulk_operations", + "reference": "8.x-2.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "50c5778770f3a92e38ecf664301b77146e3cc931" + }, + "require": { + "drupal/core": "^8.4" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + }, + "drupal": { + "version": "8.x-2.4", + "datestamp": "1530516821", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Marcin Grabias", + "homepage": "https://www.drupal.org/u/graber" + }, + { + "name": "Jon Pugh", + "homepage": "https://www.drupal.org/user/17028" + }, + { + "name": "bojanz", + "homepage": "https://www.drupal.org/user/86106" + }, + { + "name": "infojunkie", + "homepage": "https://www.drupal.org/user/48424" + }, + { + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" + } + ], + "description": "Adds an ability to perform bulk operations on selected entities from view results. Provides an API to create such operations.", + "homepage": "https://www.drupal.org/project/views_bulk_operations", + "support": { + "source": "http://cgit.drupalcode.org/views_bulk_operations", + "issues": "https://www.drupal.org/project/issues/views_bulk_operations?version=8.x", + "docs": "https://www.drupal.org/docs/8/modules/views-bulk-operations-vbo" + } + }, { "name": "drupal/views_infinite_scroll", "version": "1.5.0", @@ -12284,16 +12360,16 @@ }, { "name": "symfony/config", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3" + "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/17c5d8941eb75a03d19bc76a43757738632d87b3", - "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3", + "url": "https://api.github.com/repos/symfony/config/zipball/c9bc510c217075d42d4a927e285917d0c2001cf4", + "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4", "shasum": "" }, "require": { @@ -12344,7 +12420,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-30T11:33:42+00:00" }, { "name": "symfony/console", @@ -12660,16 +12736,16 @@ }, { "name": "symfony/finder", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e" + "reference": "7c0c627220308928e958a87c293108e5891cde1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e", - "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e", + "url": "https://api.github.com/repos/symfony/finder/zipball/7c0c627220308928e958a87c293108e5891cde1d", + "reference": "7c0c627220308928e958a87c293108e5891cde1d", "shasum": "" }, "require": { @@ -12705,7 +12781,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-16T13:43:35+00:00" }, { "name": "symfony/http-foundation", @@ -13596,16 +13672,16 @@ }, { "name": "symfony/var-dumper", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a5f39641bb62e8b74e343467b145331273f615a2" + "reference": "2159335b452d929cbb9921fc4eb7d1bfed32d0be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a5f39641bb62e8b74e343467b145331273f615a2", - "reference": "a5f39641bb62e8b74e343467b145331273f615a2", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2159335b452d929cbb9921fc4eb7d1bfed32d0be", + "reference": "2159335b452d929cbb9921fc4eb7d1bfed32d0be", "shasum": "" }, "require": { @@ -13661,7 +13737,7 @@ "debug", "dump" ], - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-29T16:19:17+00:00" }, { "name": "symfony/yaml", @@ -16766,16 +16842,16 @@ }, { "name": "symfony/browser-kit", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "313512c878805971aebddb5d1707bcf3f4e25df7" + "reference": "ee4462581eb54bf34b746e4a5d522a4f21620160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/313512c878805971aebddb5d1707bcf3f4e25df7", - "reference": "313512c878805971aebddb5d1707bcf3f4e25df7", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ee4462581eb54bf34b746e4a5d522a4f21620160", + "reference": "ee4462581eb54bf34b746e4a5d522a4f21620160", "shasum": "" }, "require": { @@ -16819,20 +16895,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2019-01-03T09:07:35+00:00" + "time": "2019-01-16T21:31:25+00:00" }, { "name": "symfony/cache", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "dd223d4bb9a2f9a4b4992851800b349739c40860" + "reference": "7c5b85bcc5f87dd7938123be12ce3323be6cde5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/dd223d4bb9a2f9a4b4992851800b349739c40860", - "reference": "dd223d4bb9a2f9a4b4992851800b349739c40860", + "url": "https://api.github.com/repos/symfony/cache/zipball/7c5b85bcc5f87dd7938123be12ce3323be6cde5a", + "reference": "7c5b85bcc5f87dd7938123be12ce3323be6cde5a", "shasum": "" }, "require": { @@ -16896,7 +16972,7 @@ "caching", "psr6" ], - "time": "2019-01-03T09:07:35+00:00" + "time": "2019-01-31T15:08:08+00:00" }, { "name": "symfony/contracts", @@ -16968,16 +17044,16 @@ }, { "name": "symfony/css-selector", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "12f86295c46c36af9896cf21db6b6b8a1465315d" + "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/12f86295c46c36af9896cf21db6b6b8a1465315d", - "reference": "12f86295c46c36af9896cf21db6b6b8a1465315d", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", + "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", "shasum": "" }, "require": { @@ -17017,20 +17093,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2019-01-02T09:30:52+00:00" + "time": "2019-01-16T09:39:14+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "311f666d85d1075b0a294ba1f3de4ae9307d8180" + "reference": "32cb577c07bd900ee883a9d4b55d4098aa02e422" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/311f666d85d1075b0a294ba1f3de4ae9307d8180", - "reference": "311f666d85d1075b0a294ba1f3de4ae9307d8180", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32cb577c07bd900ee883a9d4b55d4098aa02e422", + "reference": "32cb577c07bd900ee883a9d4b55d4098aa02e422", "shasum": "" }, "require": { @@ -17074,20 +17150,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-16T13:27:11+00:00" }, { "name": "symfony/expression-language", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "55d6b84470157129ce30339d266563502af391d2" + "reference": "74631d47774cfa59bfb4a0de18cdf700fb98d658" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/55d6b84470157129ce30339d266563502af391d2", - "reference": "55d6b84470157129ce30339d266563502af391d2", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/74631d47774cfa59bfb4a0de18cdf700fb98d658", + "reference": "74631d47774cfa59bfb4a0de18cdf700fb98d658", "shasum": "" }, "require": { @@ -17124,7 +17200,7 @@ ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-16T12:52:19+00:00" }, { "name": "symfony/phpunit-bridge", @@ -17194,16 +17270,16 @@ }, { "name": "symfony/stopwatch", - "version": "v3.4.21", + "version": "v3.4.22", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "af55d31cb58c5452d2c160655fa1968b872a8084" + "reference": "2a651c2645c10bbedd21170771f122d935e0dd58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/af55d31cb58c5452d2c160655fa1968b872a8084", - "reference": "af55d31cb58c5452d2c160655fa1968b872a8084", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2a651c2645c10bbedd21170771f122d935e0dd58", + "reference": "2a651c2645c10bbedd21170771f122d935e0dd58", "shasum": "" }, "require": { @@ -17239,20 +17315,20 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" + "time": "2019-01-16T09:39:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "51bd782120fa2bfed89452f142d2a47c4b51101c" + "reference": "d8bf4424c232b55f4c1816037d3077a89258557e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/51bd782120fa2bfed89452f142d2a47c4b51101c", - "reference": "51bd782120fa2bfed89452f142d2a47c4b51101c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d8bf4424c232b55f4c1816037d3077a89258557e", + "reference": "d8bf4424c232b55f4c1816037d3077a89258557e", "shasum": "" }, "require": { @@ -17299,7 +17375,7 @@ "instantiate", "serialize" ], - "time": "2019-01-03T09:09:06+00:00" + "time": "2019-01-16T20:35:37+00:00" }, { "name": "textalk/websocket", diff --git a/config/default/core.extension.yml b/config/default/core.extension.yml index 44303e2ef..69052ec63 100644 --- a/config/default/core.extension.yml +++ b/config/default/core.extension.yml @@ -70,6 +70,7 @@ module: hal: 0 help: 0 honeypot: 0 + hs_actions: 0 hs_basic_page: 0 hs_basic_page_display: 0 hs_blocks: 0 @@ -106,6 +107,7 @@ module: hs_text_area_display: 0 hs_view: 0 hs_view_display: 0 + hs_views_helper: 0 hs_webform: 0 image: 0 inline_entity_form: 0 @@ -172,6 +174,7 @@ module: video_embed_media: 0 viewfield: 0 views_block_filter_block: 0 + views_bulk_operations: 0 views_infinite_scroll: 0 views_taxonomy_term_name_depth: 0 views_ui: 0 diff --git a/config/default/migrate_plus.migration.hs_events_importer.yml b/config/default/migrate_plus.migration.hs_events_importer.yml index 5e9c38708..989e3e686 100644 --- a/config/default/migrate_plus.migration.hs_events_importer.yml +++ b/config/default/migrate_plus.migration.hs_events_importer.yml @@ -89,6 +89,18 @@ source: name: speaker label: Speaker selector: People/person + - + name: drupal_type + label: 'Drupal Type' + selector: drupalType + - + name: drupal_video + label: 'Drupal Video' + selector: drupalVideo + - + name: drupal_video_name + label: 'Drupal Video Name' + selector: drupalVideoName ids: guid: type: string @@ -208,6 +220,40 @@ process: - plugin: default_value default_value: null + field_hs_event_type: + - + plugin: skip_on_empty + method: process + source: drupal_type + - + plugin: explode + source: drupal_type + delimiter: ',' + - + plugin: callback + callable: htmlspecialchars_decode + - + plugin: entity_generate + entity_type: taxonomy_term + bundle_key: vid + bundle: hs_event_type + value_key: name + - + plugin: default_value + default_value: null + field_hs_event_video: + - + plugin: skip_on_empty + method: process + source: drupal_video + - + plugin: entity_generate + entity_type: media + bundle_key: bundle + bundle: video + value_key: field_media_video_embed_field + values: + name: drupal_video_name destination: plugin: 'entity:node' migration_dependencies: diff --git a/config/default/system.action.node_clone_action.yml b/config/default/system.action.node_clone_action.yml new file mode 100644 index 000000000..74d82a309 --- /dev/null +++ b/config/default/system.action.node_clone_action.yml @@ -0,0 +1,11 @@ +uuid: 1e4793b2-2b70-45c3-b8f6-9486d9a33ea2 +langcode: en +status: true +dependencies: + module: + - node +id: node_clone_action +label: 'Clone Content' +type: node +plugin: node_clone_action +configuration: { } diff --git a/config/default/views.view.content.yml b/config/default/views.view.content.yml index 42395dbcb..f8fe545e6 100644 --- a/config/default/views.view.content.yml +++ b/config/default/views.view.content.yml @@ -5,6 +5,7 @@ dependencies: module: - node - user + - views_bulk_operations _core: default_config_hash: tS8PbpJX90aRFC3-UTgXzdqkq7_2frk2pz4TMijEebM id: content @@ -141,22 +142,87 @@ display: row: type: fields fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form - label: '' + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form + relationship: none + group_type: group + admin_label: '' + label: Action exclude: false alter: alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' element_default_classes: true empty: '' hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: node_bulk_form - entity_type: node + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 + action_title: Action + selected_actions: + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: 0 + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + node_clone_action: node_clone_action + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + node_clone_action: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data diff --git a/config/default/views.view.hs_manage_content.yml b/config/default/views.view.hs_manage_content.yml index 6a3cc4a56..49d618a00 100644 --- a/config/default/views.view.hs_manage_content.yml +++ b/config/default/views.view.hs_manage_content.yml @@ -44,6 +44,7 @@ dependencies: - stanford_media - taxonomy - user + - views_bulk_operations id: hs_manage_content label: 'Manage Content' module: views @@ -972,14 +973,14 @@ display: groups: 1: AND fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -1012,7 +1013,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -1020,11 +1021,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -1581,14 +1612,14 @@ display: path: admin/content/manage/course title: Courses fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -1621,7 +1652,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -1629,11 +1660,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -2335,14 +2396,14 @@ display: path: admin/content/manage/event-series title: 'Event Series' fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -2375,7 +2436,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -2383,11 +2444,39 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: 0 + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -2986,14 +3075,14 @@ display: path: admin/content/manage/event title: Events fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -3026,7 +3115,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -3034,11 +3123,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -3764,14 +3883,14 @@ display: groups: 1: AND fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -3804,7 +3923,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -3812,11 +3931,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -4378,14 +4527,14 @@ display: path: admin/content/manage/news title: News fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -4418,7 +4567,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -4426,11 +4575,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form title: id: title table: node_field_data @@ -5262,14 +5441,14 @@ display: path: admin/content/manage/people title: People fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -5302,7 +5481,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -5310,11 +5489,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form field_hs_person_image: id: field_hs_person_image table: node__field_hs_person_image @@ -6277,14 +6486,14 @@ display: path: admin/content/manage/publications title: Publications fields: - node_bulk_form: - id: node_bulk_form - table: node - field: node_bulk_form + views_bulk_operations_bulk_form: + id: views_bulk_operations_bulk_form + table: views + field: views_bulk_operations_bulk_form relationship: none group_type: group admin_label: '' - label: '' + label: Actions exclude: false alter: alter_text: false @@ -6317,7 +6526,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -6325,11 +6534,41 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true + batch: true + batch_size: 10 + form_step: true + buttons: false + clear_on_exposed: 0 action_title: Action - include_exclude: exclude - selected_actions: { } - entity_type: node - plugin_id: node_bulk_form + selected_actions: + node_clone_action: node_clone_action + node_unpublish_action: node_unpublish_action + node_save_action: 0 + node_make_unsticky_action: 0 + node_unpublish_by_keyword_action: 0 + node_publish_action: node_publish_action + node_assign_owner_action: node_assign_owner_action + node_promote_action: 0 + node_make_sticky_action: 0 + node_unpromote_action: 0 + views_bulk_operations_delete_entity: views_bulk_operations_delete_entity + pathauto_update_alias: 0 + 'entity:save_action:node': 0 + 'entity:unpublish_action:node': 0 + 'entity:delete_action:node': 0 + 'entity:publish_action:node': 0 + preconfiguration: + node_clone_action: + label_override: '' + node_unpublish_action: + label_override: '' + node_publish_action: + label_override: '' + node_assign_owner_action: + label_override: '' + views_bulk_operations_delete_entity: + label_override: '' + plugin_id: views_bulk_operations_bulk_form field_hs_publication_image: id: field_hs_publication_image table: node__field_hs_publication_image diff --git a/docroot/modules/humsci/hs_actions/config/install/system.action.node_clone_action.yml b/docroot/modules/humsci/hs_actions/config/install/system.action.node_clone_action.yml new file mode 100644 index 000000000..4d61f650c --- /dev/null +++ b/docroot/modules/humsci/hs_actions/config/install/system.action.node_clone_action.yml @@ -0,0 +1,10 @@ +langcode: en +status: true +dependencies: + module: + - node +id: node_clone_action +label: 'Clone Content' +type: node +plugin: node_clone_action +configuration: { } diff --git a/docroot/modules/humsci/hs_actions/hs_actions.info.yml b/docroot/modules/humsci/hs_actions/hs_actions.info.yml new file mode 100644 index 000000000..ffeb11154 --- /dev/null +++ b/docroot/modules/humsci/hs_actions/hs_actions.info.yml @@ -0,0 +1,8 @@ +name: 'H&S Actions' +type: module +description: 'Provides action plugins to work with VBO module.' +core: 8.x +version: 8.x +package: 'Humanities & Sciences' +dependencies: + - drupal:views_bulk_operations diff --git a/docroot/modules/humsci/hs_actions/hs_actions.module b/docroot/modules/humsci/hs_actions/hs_actions.module new file mode 100644 index 000000000..a6e2a78b5 --- /dev/null +++ b/docroot/modules/humsci/hs_actions/hs_actions.module @@ -0,0 +1,24 @@ +' . t('About') . ''; + $output .= '

' . t('Provides action plugins to work with VBO module.') . '

'; + return $output; + + default: + } +} diff --git a/docroot/modules/humsci/hs_actions/src/Plugin/Action/CloneNode.php b/docroot/modules/humsci/hs_actions/src/Plugin/Action/CloneNode.php new file mode 100644 index 000000000..79dba0bea --- /dev/null +++ b/docroot/modules/humsci/hs_actions/src/Plugin/Action/CloneNode.php @@ -0,0 +1,183 @@ +get('entity_field.manager'), + $container->get('entity_type.manager') + ); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityFieldManagerInterface $entity_field_manager, EntityTypeManagerInterface $entity_type_manager) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + $this->entityFieldManager = $entity_field_manager; + $this->entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return [ + 'clone_count' => 1, + ]; + } + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $values = range(1, 10); + $form['clone_count'] = [ + '#type' => 'select', + '#title' => $this->t('Clone how many times'), + '#options' => array_combine($values, $values), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + $this->configuration['clone_count'] = $form_state->getValue('clone_count'); + } + + /** + * {@inheritdoc} + */ + public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { + /** @var \Drupal\node\NodeInterface $object */ + $result = $object->access('update', $account, TRUE) + ->andIf($object->access('create', $account, TRUE)); + + return $return_as_object ? $result : $result->isAllowed(); + } + + /** + * {@inheritdoc} + */ + public function execute($entity = NULL) { + if (!isset($this->configuration['clone_count'])) { + $this->configuration['clone_count'] = 1; + } + + for ($i = 0; $i < $this->configuration['clone_count']; $i++) { + $duplicate_node = $this->duplicateEntity($entity); + $duplicate_node->save(); + } + } + + /** + * Recursively clone an entity and any dependent entities in reference fields. + * + * @param \Drupal\Core\Entity\ContentEntityInterface $entity + * Entity to clone. + * + * @return \Drupal\Core\Entity\ContentEntityInterface + * Cloned entity. + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException + */ + protected function duplicateEntity(ContentEntityInterface $entity) { + $duplicate_entity = $entity->createDuplicate(); + + // Loop through paragraph and eck fields to clone those entities. + foreach ($this->getReferenceFields($entity->getEntityTypeId(), $entity->bundle()) as $field) { + foreach ($duplicate_entity->{$field->getName()} as $value) { + $value->entity = $this->duplicateEntity($value->entity); + } + } + + return $duplicate_entity; + } + + /** + * Get fields that need to have their referenced entities cloned. + * + * @param string $entity_type_id + * The entity type ID. + * @param string $bundle + * The entity bundle. + * + * @return \Drupal\field\Entity\FieldConfig[] + * Array of fields that need cloned values. + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException + */ + protected function getReferenceFields($entity_type_id, $bundle) { + $fields = $this->entityFieldManager->getFieldDefinitions($entity_type_id, $bundle); + + if ($this->entityTypeManager->hasDefinition('eck_entity_type')) { + $eck_types = $this->entityTypeManager->getStorage('eck_entity_type') + ->loadMultiple(); + $clone_target_types = array_keys($eck_types); + } + + $clone_target_types[] = 'paragraph'; + + // Filter out fields that we dont care about. We only need entity reference + // fields that are not base fields. Also we only want entity reference + // fields that target specific entity types as defined above that require + // cloning.. + $reference_fields = array_filter($fields, function ($field) use ($clone_target_types) { + $target_entity_id = $field->getFieldStorageDefinition() + ->getSetting('target_type'); + $types = ['entity_reference', 'entity_reference_revisions']; + + return $field instanceof FieldConfig && in_array($field->getType(), $types) && in_array($target_entity_id, $clone_target_types); + }); + + return $reference_fields; + } + +} diff --git a/docroot/modules/humsci/hs_actions/tests/src/Kernel/Plugin/Action/CloneNodeTest.php b/docroot/modules/humsci/hs_actions/tests/src/Kernel/Plugin/Action/CloneNodeTest.php new file mode 100644 index 000000000..dc724eb85 --- /dev/null +++ b/docroot/modules/humsci/hs_actions/tests/src/Kernel/Plugin/Action/CloneNodeTest.php @@ -0,0 +1,109 @@ +installEntitySchema('user'); + $this->installEntitySchema('node'); + + NodeType::create(['type' => 'page', 'name' => 'page'])->save(); + + $this->node = Node::create([ + 'title' => $this->randomMachineName(), + 'type' => 'type', + ]); + $this->node->save(); + } + + /** + * Test the action methods. + * + * @covers ::defaultConfiguration + * @covers ::buildConfigurationForm + * @covers ::submitConfigurationForm + * @covers ::execute + */ + public function testAction() { + $this->assertEquals(1, $this->getNodeCount()); + + /** @var \Drupal\Core\Action\ActionManager $action_manager */ + $action_manager = $this->container->get('plugin.manager.action'); + /** @var \Drupal\hs_actions\Plugin\Action\CloneNode $action */ + $action = $action_manager->createInstance('node_clone_action'); + $this->assertEquals(CloneNode::class, get_class($action)); + + // Simple methods. + $this->assertCount(1, $action->defaultConfiguration()); + $this->assertArrayHasKey('clone_count', $action->defaultConfiguration()); + + $form = []; + $form_state = new FormState(); + $this->assertCount(1, $action->buildConfigurationForm($form, $form_state)); + $this->assertArrayHasKey('clone_count', $action->buildConfigurationForm($form, $form_state)); + + $form_state->setValue('clone_count', 7); + $action->submitConfigurationForm($form, $form_state); + $this->assertEquals(7, $action->getConfiguration()['clone_count']); + + $action->execute($this->node); + $this->assertEquals(8, $this->getNodeCount()); + } + + /** + * Get the number of nodes in the database with the name we need. + * + * @return int + * Count of rows. + * + * @throws \Exception + */ + protected function getNodeCount() { + /** @var \Drupal\Core\Database\Connection $database */ + $database = $this->container->get('database'); + + return $database->select('node_field_data', 'n') + ->fields('n') + ->condition('title', $this->node->getTitle()) + ->countQuery() + ->execute() + ->fetchField(); + } + +} diff --git a/docroot/modules/humsci/hs_basic_page/hs_basic_page.info.yml b/docroot/modules/humsci/hs_basic_page/hs_basic_page.info.yml index 386dd19ee..4ba453c04 100755 --- a/docroot/modules/humsci/hs_basic_page/hs_basic_page.info.yml +++ b/docroot/modules/humsci/hs_basic_page/hs_basic_page.info.yml @@ -2,7 +2,7 @@ name: 'H&S Basic Page' description: 'Basic Page content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - entity_reference_revisions diff --git a/docroot/modules/humsci/hs_basic_page/modules/hs_basic_page_display/hs_basic_page_display.info.yml b/docroot/modules/humsci/hs_basic_page/modules/hs_basic_page_display/hs_basic_page_display.info.yml index 6405d5a3e..84b44ce6b 100755 --- a/docroot/modules/humsci/hs_basic_page/modules/hs_basic_page_display/hs_basic_page_display.info.yml +++ b/docroot/modules/humsci/hs_basic_page/modules/hs_basic_page_display/hs_basic_page_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Basic Page Display' description: 'Basic Page content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_blocks/hs_blocks.info.yml b/docroot/modules/humsci/hs_blocks/hs_blocks.info.yml index 07ca13c54..ceac3387c 100644 --- a/docroot/modules/humsci/hs_blocks/hs_blocks.info.yml +++ b/docroot/modules/humsci/hs_blocks/hs_blocks.info.yml @@ -2,7 +2,7 @@ name: 'H&S Blocks' type: module description: 'Custom blocks for Humsci' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - block diff --git a/docroot/modules/humsci/hs_bugherd/hs_bugherd.info.yml b/docroot/modules/humsci/hs_bugherd/hs_bugherd.info.yml index f9ba9fa46..7ddd56206 100644 --- a/docroot/modules/humsci/hs_bugherd/hs_bugherd.info.yml +++ b/docroot/modules/humsci/hs_bugherd/hs_bugherd.info.yml @@ -2,7 +2,7 @@ name: 'H&S Bugherd' description: 'Bugherd API connection with JIRA' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - encrypt diff --git a/docroot/modules/humsci/hs_capx/hs_capx.info.yml b/docroot/modules/humsci/hs_capx/hs_capx.info.yml index dbeb4928a..34ecd210e 100644 --- a/docroot/modules/humsci/hs_capx/hs_capx.info.yml +++ b/docroot/modules/humsci/hs_capx/hs_capx.info.yml @@ -2,7 +2,7 @@ name: 'H&S CAPx' description: 'Simple form to change the workgroup or organization for CAPx importer' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - migrate_plus diff --git a/docroot/modules/humsci/hs_config_prefix/hs_config_prefix.info.yml b/docroot/modules/humsci/hs_config_prefix/hs_config_prefix.info.yml index 345b4b542..24b1cb2d8 100644 --- a/docroot/modules/humsci/hs_config_prefix/hs_config_prefix.info.yml +++ b/docroot/modules/humsci/hs_config_prefix/hs_config_prefix.info.yml @@ -2,5 +2,5 @@ name: 'H&S Config Prefix' type: module description: 'Prefix any configuration entities with a specified string' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' diff --git a/docroot/modules/humsci/hs_config_readonly/hs_config_readonly.info.yml b/docroot/modules/humsci/hs_config_readonly/hs_config_readonly.info.yml index b33e81068..0fd73f7c3 100644 --- a/docroot/modules/humsci/hs_config_readonly/hs_config_readonly.info.yml +++ b/docroot/modules/humsci/hs_config_readonly/hs_config_readonly.info.yml @@ -2,7 +2,7 @@ name: 'H&S Config Read Only' description: 'Modify the Config Read Only to blacklist specific config' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - config_readonly diff --git a/docroot/modules/humsci/hs_courses/hs_courses.info.yml b/docroot/modules/humsci/hs_courses/hs_courses.info.yml index 52df6c961..1d03e142f 100644 --- a/docroot/modules/humsci/hs_courses/hs_courses.info.yml +++ b/docroot/modules/humsci/hs_courses/hs_courses.info.yml @@ -2,7 +2,7 @@ name: 'H&S Courses' type: module description: 'Courses content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - datetime diff --git a/docroot/modules/humsci/hs_event_series/hs_event_series.info.yml b/docroot/modules/humsci/hs_event_series/hs_event_series.info.yml index 1a179adb0..625860099 100644 --- a/docroot/modules/humsci/hs_event_series/hs_event_series.info.yml +++ b/docroot/modules/humsci/hs_event_series/hs_event_series.info.yml @@ -2,7 +2,7 @@ name: 'H&S Event Series' description: 'Event Series content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - hs_events diff --git a/docroot/modules/humsci/hs_event_series/modules/hs_event_series_display/hs_event_series_display.info.yml b/docroot/modules/humsci/hs_event_series/modules/hs_event_series_display/hs_event_series_display.info.yml index 87908fa23..f85168f2f 100644 --- a/docroot/modules/humsci/hs_event_series/modules/hs_event_series_display/hs_event_series_display.info.yml +++ b/docroot/modules/humsci/hs_event_series/modules/hs_event_series_display/hs_event_series_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Event Series Display' description: 'Event Series content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_events/hs_events.info.yml b/docroot/modules/humsci/hs_events/hs_events.info.yml index 20381b05b..f1889e3a2 100755 --- a/docroot/modules/humsci/hs_events/hs_events.info.yml +++ b/docroot/modules/humsci/hs_events/hs_events.info.yml @@ -2,7 +2,7 @@ name: 'H&S Events' description: 'Events content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - allowed_formats diff --git a/docroot/modules/humsci/hs_events/modules/hs_events_display/hs_events_display.info.yml b/docroot/modules/humsci/hs_events/modules/hs_events_display/hs_events_display.info.yml index 042f6c62b..b96079f13 100644 --- a/docroot/modules/humsci/hs_events/modules/hs_events_display/hs_events_display.info.yml +++ b/docroot/modules/humsci/hs_events/modules/hs_events_display/hs_events_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Events Display' description: 'Events content type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_events/modules/hs_events_importer/hs_events_importer.info.yml b/docroot/modules/humsci/hs_events/modules/hs_events_importer/hs_events_importer.info.yml index fa6510fc1..8148fe81a 100644 --- a/docroot/modules/humsci/hs_events/modules/hs_events_importer/hs_events_importer.info.yml +++ b/docroot/modules/humsci/hs_events/modules/hs_events_importer/hs_events_importer.info.yml @@ -2,7 +2,7 @@ name: 'H&S Events Importer' description: 'Migrate importer for stanford events.' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - hs_events diff --git a/docroot/modules/humsci/hs_events/modules/hs_events_importer/src/Form/EventsImporterForm.php b/docroot/modules/humsci/hs_events/modules/hs_events_importer/src/Form/EventsImporterForm.php index 2832cfc05..f7c505e4e 100644 --- a/docroot/modules/humsci/hs_events/modules/hs_events_importer/src/Form/EventsImporterForm.php +++ b/docroot/modules/humsci/hs_events/modules/hs_events_importer/src/Form/EventsImporterForm.php @@ -100,12 +100,8 @@ protected function validateUrl($url, array &$form, FormStateInterface $form_stat return; } - $parsed_url = parse_url($url); - if ($parsed_url['host'] != 'events.stanford.edu') { - $form_state->setError($form['urls'], $this->t('@url is not an events.stanford.edu url.', ['@url' => $url])); - } - - if (!isset($parsed_url['path']) || strpos($parsed_url['path'], 'xml') === FALSE) { + $url_headers = get_headers($url, 1); + if (!isset($url_headers['Content-Type']) || strpos($url_headers['Content-Type'], 'text/xml') === FALSE) { $form_state->setError($form['urls'], $this->t('@url is not an xml url.', ['@url' => $url])); } } diff --git a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.info.yml b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.info.yml index 3f3287dd4..3d91bbed3 100644 --- a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.info.yml +++ b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.info.yml @@ -2,7 +2,7 @@ name: 'H&S Field Helpers' type: module description: 'Additional field widgets and display formatters' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - ui_patterns_views diff --git a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.install b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.install index 9667e7ead..d30f26ac7 100644 --- a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.install +++ b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.install @@ -18,3 +18,10 @@ function hs_field_helpers_install() { function hs_field_helpers_update_8001() { \Drupal::service('module_installer')->install(['hs_migrate']); } + +/** + * Install hs_views_helper module that now contains the views plugins. + */ +function hs_field_helpers_update_8002() { + \Drupal::service('module_installer')->install(['hs_views_helper']); +} diff --git a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.libraries.yml b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.libraries.yml index 806af0b93..5b8297310 100644 --- a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.libraries.yml +++ b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.libraries.yml @@ -10,10 +10,3 @@ date_exception: css: base: css/hs_field_helpers.date_exception.css: { } - -views_reset: - version: VERSION - js: - js/hs_field_helpers.views_reset.js: {} - dependencies: - - core/drupal.ajax diff --git a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.module b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.module index 6c4ed847b..4366718d6 100644 --- a/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.module +++ b/docroot/modules/humsci/hs_field_helpers/hs_field_helpers.module @@ -20,51 +20,12 @@ use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\ui_patterns\UiPatterns; use Drupal\ui_patterns\Element\PatternContext; use Drupal\eck\Entity\EckEntity; -use Drupal\field\Entity\FieldStorageConfig; use Drupal\Core\Entity\Display\EntityViewDisplayInterface; use Drupal\Component\Utility\UrlHelper; -use Drupal\views\ViewExecutable; -use Drupal\views\Plugin\views\query\QueryPluginBase; -use Drupal\hs_field_helpers\Plugin\views\query\Sql as HsViewsSql; use Drupal\Component\Utility\Html; use Drupal\field\FieldStorageConfigInterface; use Drupal\field_permissions\Plugin\FieldPermissionTypeInterface; -/** - * Implements hook_views_plugins_query_alter(). - */ -function hs_field_helpers_views_plugins_query_alter(&$definitions) { - $definitions['views_query']['class'] = HsViewsSql::class; -} - -/** - * Implements hook_views_query_alter(). - */ -function hs_field_helpers_views_query_alter(ViewExecutable $view, QueryPluginBase $query) { - if ($query instanceof HsViewsSql) { - $query->alterQuery($view); - } -} - -/** - * Implements hook_views_data_alter(). - */ -function hs_field_helpers_views_data_alter(array &$data) { - /** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */ - foreach (FieldStorageConfig::loadMultiple() as $field_storage) { - if ($field_storage->getType() != 'datetime') { - continue; - } - $entity_type = $field_storage->getTargetEntityTypeId(); - $field_name = $field_storage->getName(); - - // Change the filter id to our custom filter. This will give us an optional - // exception window for academic calendars. - $value_data = &$data["{$entity_type}__{$field_name}"]["{$field_name}_value"]; - $value_data['filter']['id'] = 'academic_datetime'; - } -} - /** * Implements hook_form_FORM_ID_alter(). */ @@ -381,16 +342,6 @@ function hs_field_helpers_node_validate_date(array &$element, FormStateInterface } } -/** - * Implements hook_preprocess_views_view_pattern(). - */ -function hs_field_helpers_preprocess_views_view_pattern(&$variables) { - /** @var \Drupal\views\ViewExecutable $view */ - $view = $variables['view']; - $pattern = $view->style_plugin->options['pattern']; - $variables['pattern'] = $pattern; -} - /** * Implements hook_field_formatter_settings_summary_alter(). */ @@ -572,21 +523,6 @@ function _he_field_helpers_clean_eck() { } } -/** - * Implements hook_form_FORM_ID_alter(). - */ -function hs_field_helpers_form_views_exposed_form_alter(&$form, FormStateInterface $form_state) { - if (empty($form['actions']['reset'])) { - return; - } - - // Ajax blocks using the module views_block_filter_block do not display the - // "Reset" button after the form has been submitted. So we are going to change - // the access and apply some javascript to help keep the ajaxy feel. - $form['actions']['reset']['#access'] = TRUE; - $form['#attached']['library'][] = 'hs_field_helpers/views_reset'; -} - /** * Implements hook_ENTITY_TYPE_presave(). */ diff --git a/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml b/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml index 7690b10c4..12c92f78d 100644 --- a/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml +++ b/docroot/modules/humsci/hs_layouts/hs_layouts.info.yml @@ -2,7 +2,7 @@ name: 'H&S Layouts' type: module description: 'Layout options for H&S' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - layout_discovery diff --git a/docroot/modules/humsci/hs_masquerade/hs_masquerade.info.yml b/docroot/modules/humsci/hs_masquerade/hs_masquerade.info.yml index cf805aa87..9d36fa974 100644 --- a/docroot/modules/humsci/hs_masquerade/hs_masquerade.info.yml +++ b/docroot/modules/humsci/hs_masquerade/hs_masquerade.info.yml @@ -2,7 +2,7 @@ name: 'H&S Masquerade' type: module description: 'Provide a masquerade page and menu link' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - masquerade diff --git a/docroot/modules/humsci/hs_news/hs_news.info.yml b/docroot/modules/humsci/hs_news/hs_news.info.yml index 3c063f5ff..e00808825 100644 --- a/docroot/modules/humsci/hs_news/hs_news.info.yml +++ b/docroot/modules/humsci/hs_news/hs_news.info.yml @@ -2,7 +2,7 @@ name: 'H&S News' type: module description: 'News content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - file diff --git a/docroot/modules/humsci/hs_news/modules/hs_news_display/hs_news_display.info.yml b/docroot/modules/humsci/hs_news/modules/hs_news_display/hs_news_display.info.yml index 1757bdb76..bea640c02 100644 --- a/docroot/modules/humsci/hs_news/modules/hs_news_display/hs_news_display.info.yml +++ b/docroot/modules/humsci/hs_news/modules/hs_news_display/hs_news_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S News Display' type: module description: 'News content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/hs_paragraph_types.info.yml b/docroot/modules/humsci/hs_paragraph_types/hs_paragraph_types.info.yml index 4b0f78a35..7ec02aaaa 100644 --- a/docroot/modules/humsci/hs_paragraph_types/hs_paragraph_types.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/hs_paragraph_types.info.yml @@ -2,7 +2,7 @@ name: 'H&S Paragraph Types' description: 'Generic Helpers for paragraphs.' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - paragraphs diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/hs_hero_image.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/hs_hero_image.info.yml index f80063515..d76f784f2 100755 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/hs_hero_image.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/hs_hero_image.info.yml @@ -2,7 +2,7 @@ name: 'H&S Hero Image Paragraph' description: 'Hero Image Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - entity_browser diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/modules/hs_hero_image_display/hs_hero_image_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/modules/hs_hero_image_display/hs_hero_image_display.info.yml index 7bf5a6420..a497606c9 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/modules/hs_hero_image_display/hs_hero_image_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_hero_image/modules/hs_hero_image_display/hs_hero_image_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Hero Image Paragraph Display' description: 'Hero Image Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 hidden: true package: 'Humanities & Sciences' dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/hs_postcard.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/hs_postcard.info.yml index be75c990a..fd5c15477 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/hs_postcard.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/hs_postcard.info.yml @@ -2,7 +2,7 @@ name: H&S Postcard Paragraph description: A paragraph type with a postcard display. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - media diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/modules/hs_postcard_display/hs_postcard_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/modules/hs_postcard_display/hs_postcard_display.info.yml index 1fd520158..9107ba7b4 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/modules/hs_postcard_display/hs_postcard_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_postcard/modules/hs_postcard_display/hs_postcard_display.info.yml @@ -2,7 +2,7 @@ name: H&S Postcard Display description: A paragraph type with a postcard display. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/hs_row.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/hs_row.info.yml index c1be9ef3a..ec2ca167c 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/hs_row.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/hs_row.info.yml @@ -2,7 +2,7 @@ name: H&S Row Paragraph description: A paragraph type with a simple image. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - allowed_formats diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/modules/hs_row_display/hs_row_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/modules/hs_row_display/hs_row_display.info.yml index 04bb88779..40b6a4ebe 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/modules/hs_row_display/hs_row_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_row/modules/hs_row_display/hs_row_display.info.yml @@ -2,7 +2,7 @@ name: H&S Row Paragraph Display description: A paragraph type with a simple image. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/hs_slide.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/hs_slide.info.yml index 46b240651..9a68eb42d 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/hs_slide.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/hs_slide.info.yml @@ -2,7 +2,7 @@ name: H&S Slide Paragraph description: A paragraph type with a simple image. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - allowed_formats diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/modules/hs_slide_display/hs_slide_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/modules/hs_slide_display/hs_slide_display.info.yml index 8d568e771..4e0224f4b 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/modules/hs_slide_display/hs_slide_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slide/modules/hs_slide_display/hs_slide_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Slide Paragraph Display' description: 'A paragraph type with a simple image.' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/hs_slideshow.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/hs_slideshow.info.yml index 2ab08f8ec..b0414cdfe 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/hs_slideshow.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/hs_slideshow.info.yml @@ -2,7 +2,7 @@ name: H&S Slideshow Paragraph description: A paragraph type with a slideshow. core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - entity_reference_revisions diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/modules/hs_slideshow_display/hs_slideshow_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/modules/hs_slideshow_display/hs_slideshow_display.info.yml index 75462a719..1ba6e6a3b 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/modules/hs_slideshow_display/hs_slideshow_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_slideshow/modules/hs_slideshow_display/hs_slideshow_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Slideshow Paragraph Display' description: 'A paragraph type with a slideshow.' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/hs_text_area.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/hs_text_area.info.yml index 95ec42218..6b9bce576 100755 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/hs_text_area.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/hs_text_area.info.yml @@ -2,7 +2,7 @@ name: 'H&S Text Area Paragraph' description: 'Text Area Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - paragraphs diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/modules/hs_text_area_display/hs_text_area_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/modules/hs_text_area_display/hs_text_area_display.info.yml index e3cf24193..6a03fcf2d 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/modules/hs_text_area_display/hs_text_area_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_text_area/modules/hs_text_area_display/hs_text_area_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Text Area Paragraph Display' description: 'Text Area Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/hs_view.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/hs_view.info.yml index 93208ef0d..b0b22b0d7 100755 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/hs_view.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/hs_view.info.yml @@ -2,7 +2,7 @@ name: 'H&S View Paragraph' description: 'View Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - paragraphs diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/modules/hs_view_display/hs_view_display.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/modules/hs_view_display/hs_view_display.info.yml index 2fe6a8885..5effa999c 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/modules/hs_view_display/hs_view_display.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_view/modules/hs_view_display/hs_view_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S View Paragraph Display' description: 'View Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_paragraph_types/modules/hs_webform/hs_webform.info.yml b/docroot/modules/humsci/hs_paragraph_types/modules/hs_webform/hs_webform.info.yml index 618c2b375..5a67fd23a 100644 --- a/docroot/modules/humsci/hs_paragraph_types/modules/hs_webform/hs_webform.info.yml +++ b/docroot/modules/humsci/hs_paragraph_types/modules/hs_webform/hs_webform.info.yml @@ -2,7 +2,7 @@ name: 'H&S Webform Paragraph' description: 'Webform Paragraph type' core: 8.x type: module -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - paragraphs diff --git a/docroot/modules/humsci/hs_paragraphs_between/hs_paragraphs_between.info.yml b/docroot/modules/humsci/hs_paragraphs_between/hs_paragraphs_between.info.yml index b4d025d4b..0fa31f04f 100644 --- a/docroot/modules/humsci/hs_paragraphs_between/hs_paragraphs_between.info.yml +++ b/docroot/modules/humsci/hs_paragraphs_between/hs_paragraphs_between.info.yml @@ -3,6 +3,6 @@ description: Allows the addition of paragraphs between existing ones. core: 8.x package: 'Humanities & Sciences' type: module -version: 8.x +version: 8.0.17 dependencies: - drupal:paragraphs diff --git a/docroot/modules/humsci/hs_person/hs_person.info.yml b/docroot/modules/humsci/hs_person/hs_person.info.yml index 9f28ae2bf..e437abebd 100644 --- a/docroot/modules/humsci/hs_person/hs_person.info.yml +++ b/docroot/modules/humsci/hs_person/hs_person.info.yml @@ -2,7 +2,7 @@ name: 'H&S Person' type: module description: 'Person content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - address diff --git a/docroot/modules/humsci/hs_person/modules/hs_person_display/hs_person_display.info.yml b/docroot/modules/humsci/hs_person/modules/hs_person_display/hs_person_display.info.yml index e3b032897..89de8d3c5 100644 --- a/docroot/modules/humsci/hs_person/modules/hs_person_display/hs_person_display.info.yml +++ b/docroot/modules/humsci/hs_person/modules/hs_person_display/hs_person_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Person Display' type: module description: 'Publications content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_publications/hs_publications.info.yml b/docroot/modules/humsci/hs_publications/hs_publications.info.yml index 61dab9c35..6d068f5ff 100644 --- a/docroot/modules/humsci/hs_publications/hs_publications.info.yml +++ b/docroot/modules/humsci/hs_publications/hs_publications.info.yml @@ -2,7 +2,7 @@ name: 'H&S Publications' type: module description: 'Publications content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - datetime diff --git a/docroot/modules/humsci/hs_publications/modules/hs_publications_display/hs_publications_display.info.yml b/docroot/modules/humsci/hs_publications/modules/hs_publications_display/hs_publications_display.info.yml index c7df425f0..a4bd1b4a2 100644 --- a/docroot/modules/humsci/hs_publications/modules/hs_publications_display/hs_publications_display.info.yml +++ b/docroot/modules/humsci/hs_publications/modules/hs_publications_display/hs_publications_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Publications Display' type: module description: 'Publications content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_research/hs_research.info.yml b/docroot/modules/humsci/hs_research/hs_research.info.yml index f5ba2e9c6..b91d79340 100644 --- a/docroot/modules/humsci/hs_research/hs_research.info.yml +++ b/docroot/modules/humsci/hs_research/hs_research.info.yml @@ -2,7 +2,7 @@ name: 'H&S Reesarch' type: module description: 'Research content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' dependencies: - field diff --git a/docroot/modules/humsci/hs_research/modules/hs_research_display/hs_research_display.info.yml b/docroot/modules/humsci/hs_research/modules/hs_research_display/hs_research_display.info.yml index 4816e16b2..2d7a1df04 100644 --- a/docroot/modules/humsci/hs_research/modules/hs_research_display/hs_research_display.info.yml +++ b/docroot/modules/humsci/hs_research/modules/hs_research_display/hs_research_display.info.yml @@ -2,7 +2,7 @@ name: 'H&S Research Display' type: module description: 'Publications content type' core: 8.x -version: 8.x +version: 8.0.17 package: 'Humanities & Sciences' hidden: true dependencies: diff --git a/docroot/modules/humsci/hs_views_helper/config/optional/views.view.data_export.yml b/docroot/modules/humsci/hs_views_helper/config/optional/views.view.data_export.yml new file mode 100644 index 000000000..5dac4622d --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/config/optional/views.view.data_export.yml @@ -0,0 +1,1515 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.media.field_media_video_embed_field + - field.storage.node.body + - field.storage.node.field_s_event_admission + - field.storage.node.field_s_event_audience + - field.storage.node.field_s_event_category + - field.storage.node.field_s_event_contact_email + - field.storage.node.field_s_event_contact_phone + - field.storage.node.field_s_event_date + - field.storage.node.field_s_event_link + - field.storage.node.field_s_event_location + - field.storage.node.field_s_event_map_link + - field.storage.node.field_s_event_speaker + - field.storage.node.field_s_event_sponsor + - field.storage.node.field_s_event_type + - node.type.stanford_event + module: + - bricks + - file + - hs_field_helpers + - link + - media + - node + - rest + - serialization + - text + - user + - video_embed_field +id: data_export +label: 'Data Export' +module: views +description: '' +tag: '' +base_table: node_field_data +base_field: nid +core: 8.x +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: mini + options: + items_per_page: 10 + offset: 0 + id: 0 + total_pages: null + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + tags: + previous: ‹‹ + next: ›› + style: + type: serializer + row: + type: fields + options: + inline: { } + separator: '' + hide_empty: false + default_field_elements: true + fields: + uuid: + id: uuid + table: node + field: uuid + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: node + entity_field: uuid + plugin_id: field + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: false + ellipsis: false + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: node + entity_field: title + plugin_id: field + field_s_event_date: + id: field_s_event_date + table: node__field_s_event_date + field: field_s_event_date + relationship: none + group_type: group + admin_label: 'Content: Start Date' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: datetime_hs + settings: + timezone_override: '' + date_format: 'Y-m-d H:i:s O' + display: start_date + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_date_1: + id: field_s_event_date_1 + table: node__field_s_event_date + field: field_s_event_date + relationship: none + group_type: group + admin_label: 'Content: End Date' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: datetime_hs + settings: + timezone_override: '' + date_format: 'Y-m-d H:i:s O' + display: end_date + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_link: + id: field_s_event_link + table: node__field_s_event_link + field: field_s_event_link + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: uri + type: link + settings: + trim_length: 80 + url_only: true + url_plain: true + rel: '0' + target: '0' + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + body: + id: body + table: node__body + field: body + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: text_default + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_admission: + id: field_s_event_admission + table: node__field_s_event_admission + field: field_s_event_admission + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: text_default + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_map_link: + id: field_s_event_map_link + table: node__field_s_event_map_link + field: field_s_event_map_link + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: uri + type: link + settings: + trim_length: 80 + url_only: true + url_plain: true + rel: '0' + target: '0' + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_location: + id: field_s_event_location + table: node__field_s_event_location + field: field_s_event_location + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: true + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: true + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: basic_string + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_sponsor: + id: field_s_event_sponsor + table: node__field_s_event_sponsor + field: field_s_event_sponsor + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: basic_string + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_contact_email: + id: field_s_event_contact_email + table: node__field_s_event_contact_email + field: field_s_event_contact_email + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: basic_string + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_contact_phone: + id: field_s_event_contact_phone + table: node__field_s_event_contact_phone + field: field_s_event_contact_phone + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_audience: + id: field_s_event_audience + table: node__field_s_event_audience + field: field_s_event_audience + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: false + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_s_event_category: + id: field_s_event_category + table: node__field_s_event_category + field: field_s_event_category + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: false + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + uri: + id: uri + table: file_managed + field: uri + relationship: field_media_image_target_id + group_type: group + admin_label: 'Field: Image' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: file_uri + settings: + link_to_file: false + file_download_path: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: file + entity_field: uri + plugin_id: field + field_s_event_speaker: + id: field_s_event_speaker + table: node__field_s_event_speaker + field: field_s_event_speaker + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: true + text: '
{{ field_s_event_speaker }}
' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: true + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: false + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: bricks_nested + settings: + view_mode: default + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: '' + field_api_classes: false + plugin_id: field + field_s_event_type: + id: field_s_event_type + table: node__field_s_event_type + field: field_s_event_type + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: false + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + field_media_video_embed_field: + id: field_media_video_embed_field + table: media__field_media_video_embed_field + field: field_media_video_embed_field + relationship: field_mrc_video + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: video_embed_field_video + settings: + autoplay: false + responsive: false + width: 854 + height: 480 + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + plugin_id: field + name: + id: name + table: media_field_data + field: name + relationship: field_mrc_video + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: media + entity_field: name + plugin_id: field + filters: + status: + value: '1' + table: node_field_data + field: status + plugin_id: boolean + entity_type: node + entity_field: status + id: status + expose: + operator: '' + group: 1 + type: + id: type + table: node_field_data + field: type + value: + stanford_event: stanford_event + entity_type: node + entity_field: type + plugin_id: bundle + sorts: + created: + id: created + table: node_field_data + field: created + order: DESC + entity_type: node + entity_field: created + plugin_id: date + relationship: none + group_type: group + admin_label: '' + exposed: false + expose: + label: '' + granularity: second + header: { } + footer: { } + empty: { } + relationships: + field_mrc_image: + id: field_mrc_image + table: node__field_mrc_image + field: field_mrc_image + relationship: none + group_type: group + admin_label: 'field_mrc_image: Media' + required: false + plugin_id: standard + field_mrc_video: + id: field_mrc_video + table: node__field_mrc_video + field: field_mrc_video + relationship: none + group_type: group + admin_label: 'field_mrc_video: Media' + required: false + plugin_id: standard + field_media_image_target_id: + id: field_media_image_target_id + table: media__field_media_image + field: field_media_image_target_id + relationship: field_mrc_image + group_type: group + admin_label: 'image from field_media_image' + required: false + plugin_id: standard + arguments: { } + display_extenders: { } + title: Events + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - url.query_args + - 'user.node_grants:view' + - user.permissions + tags: + - 'config:field.storage.media.field_media_video_embed_field' + - 'config:field.storage.node.body' + - 'config:field.storage.node.field_s_event_admission' + - 'config:field.storage.node.field_s_event_audience' + - 'config:field.storage.node.field_s_event_category' + - 'config:field.storage.node.field_s_event_contact_email' + - 'config:field.storage.node.field_s_event_contact_phone' + - 'config:field.storage.node.field_s_event_date' + - 'config:field.storage.node.field_s_event_link' + - 'config:field.storage.node.field_s_event_location' + - 'config:field.storage.node.field_s_event_map_link' + - 'config:field.storage.node.field_s_event_speaker' + - 'config:field.storage.node.field_s_event_sponsor' + - 'config:field.storage.node.field_s_event_type' + - extensions + rest_export_1: + display_plugin: rest_export + id: rest_export_1 + display_title: 'REST export' + position: 1 + display_options: + display_extenders: { } + path: api/events + pager: + type: none + options: + offset: 0 + style: + type: serializer + options: + formats: + xml: xml + root_tag: EventList + item_tag: Event + row: + type: data_field + options: + field_options: + uuid: + alias: guid + raw_output: false + title: + alias: title + raw_output: false + field_s_event_date: + alias: isoEventDate + raw_output: false + field_s_event_date_1: + alias: isoEventEndDate + raw_output: false + field_s_event_link: + alias: link + raw_output: false + body: + alias: description + raw_output: false + field_s_event_admission: + alias: admissionDescription + raw_output: false + field_s_event_map_link: + alias: mapUrl + raw_output: false + field_s_event_location: + alias: locationText + raw_output: false + field_s_event_sponsor: + alias: sponsor + raw_output: false + field_s_event_contact_email: + alias: contactEmail + raw_output: false + field_s_event_contact_phone: + alias: contactPhone + raw_output: false + field_s_event_audience: + alias: audiences + raw_output: false + field_s_event_category: + alias: categories + raw_output: false + uri: + alias: imageUrl + raw_output: false + field_s_event_speaker: + alias: People + raw_output: false + field_s_event_type: + alias: drupalType + raw_output: false + field_media_video_embed_field: + alias: drupalVideo + raw_output: true + name: + alias: drupalVideoName + raw_output: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - 'user.node_grants:view' + - user.permissions + tags: + - 'config:field.storage.media.field_media_video_embed_field' + - 'config:field.storage.node.body' + - 'config:field.storage.node.field_s_event_admission' + - 'config:field.storage.node.field_s_event_audience' + - 'config:field.storage.node.field_s_event_category' + - 'config:field.storage.node.field_s_event_contact_email' + - 'config:field.storage.node.field_s_event_contact_phone' + - 'config:field.storage.node.field_s_event_date' + - 'config:field.storage.node.field_s_event_link' + - 'config:field.storage.node.field_s_event_location' + - 'config:field.storage.node.field_s_event_map_link' + - 'config:field.storage.node.field_s_event_speaker' + - 'config:field.storage.node.field_s_event_sponsor' + - 'config:field.storage.node.field_s_event_type' + - extensions diff --git a/docroot/modules/humsci/hs_views_helper/hs_views_helper.info.yml b/docroot/modules/humsci/hs_views_helper/hs_views_helper.info.yml new file mode 100644 index 000000000..82650a2dd --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/hs_views_helper.info.yml @@ -0,0 +1,8 @@ +name: 'H&S Views Helper' +type: module +description: 'Provides additional plugins and support for views module' +core: 8.x +package: 'Humanities & Sciences' +dependencies: + - drupal:hs_field_helpers + - drupal:views diff --git a/docroot/modules/humsci/hs_views_helper/hs_views_helper.libraries.yml b/docroot/modules/humsci/hs_views_helper/hs_views_helper.libraries.yml new file mode 100644 index 000000000..77b66c17c --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/hs_views_helper.libraries.yml @@ -0,0 +1,6 @@ +views_reset: + version: VERSION + js: + js/hs_views_helper.views_reset.js: {} + dependencies: + - core/drupal.ajax diff --git a/docroot/modules/humsci/hs_views_helper/hs_views_helper.module b/docroot/modules/humsci/hs_views_helper/hs_views_helper.module new file mode 100644 index 000000000..f1a550543 --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/hs_views_helper.module @@ -0,0 +1,96 @@ +' . t('About') . ''; + $output .= '

' . t('Provides additional plugins and support for views module.') . '

'; + return $output; + + default: + } +} + +/** + * Implements hook_views_plugins_style_alter(). + */ +function hs_views_helper_views_plugins_style_alter(array &$plugins) { + $plugins['serializer']['class'] = '\Drupal\hs_views_helper\Plugin\views\style\HumsciSerializer'; +} + +/** + * Implements hook_views_plugins_query_alter(). + */ +function hs_views_helper_views_plugins_query_alter(array &$plugins) { + $plugins['views_query']['class'] = '\Drupal\hs_views_helper\Plugin\views\query\Sql'; +} + +/** + * Implements hook_views_query_alter(). + */ +function hs_views_helper_views_query_alter(ViewExecutable $view, QueryPluginBase $query) { + if ($query instanceof HsViewsSql) { + $query->alterQuery($view); + } +} + +/** + * Implements hook_views_data_alter(). + */ +function hs_views_helper_views_data_alter(array &$data) { + /** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */ + foreach (FieldStorageConfig::loadMultiple() as $field_storage) { + if ($field_storage->getType() != 'datetime') { + continue; + } + $entity_type = $field_storage->getTargetEntityTypeId(); + $field_name = $field_storage->getName(); + + // Change the filter id to our custom filter. This will give us an optional + // exception window for academic calendars. + $value_data = &$data["{$entity_type}__{$field_name}"]["{$field_name}_value"]; + $value_data['filter']['id'] = 'academic_datetime'; + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function hs_views_helper_form_views_exposed_form_alter(&$form, FormStateInterface $form_state) { + if (empty($form['actions']['reset'])) { + return; + } + + // Ajax blocks using the module views_block_filter_block do not display the + // "Reset" button after the form has been submitted. So we are going to change + // the access and apply some javascript to help keep the ajaxy feel. + $form['actions']['reset']['#access'] = TRUE; + $form['#attached']['library'][] = 'hs_views_helper/views_reset'; +} + +/** + * Implements hook_preprocess_views_view_pattern(). + */ +function hs_views_helper_preprocess_views_view_pattern(&$variables) { + /** @var \Drupal\views\ViewExecutable $view */ + $view = $variables['view']; + $pattern = $view->style_plugin->options['pattern']; + $variables['pattern'] = $pattern; +} diff --git a/docroot/modules/humsci/hs_views_helper/hs_views_helper.services.yml b/docroot/modules/humsci/hs_views_helper/hs_views_helper.services.yml new file mode 100644 index 000000000..0686793f0 --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/hs_views_helper.services.yml @@ -0,0 +1,6 @@ +services: + hs_views_helper.normalizer.markup_normalizer: + class: Drupal\hs_views_helper\Normalizer\HumsciMarkupNormalizer + arguments: ['@logger.factory'] + tags: + - { name: normalizer, priority: 5 } diff --git a/docroot/modules/humsci/hs_field_helpers/js/hs_field_helpers.views_reset.js b/docroot/modules/humsci/hs_views_helper/js/hs_views_helper.views_reset.js similarity index 100% rename from docroot/modules/humsci/hs_field_helpers/js/hs_field_helpers.views_reset.js rename to docroot/modules/humsci/hs_views_helper/js/hs_views_helper.views_reset.js diff --git a/docroot/modules/humsci/hs_views_helper/src/Normalizer/HumsciMarkupNormalizer.php b/docroot/modules/humsci/hs_views_helper/src/Normalizer/HumsciMarkupNormalizer.php new file mode 100644 index 000000000..6f977ef4d --- /dev/null +++ b/docroot/modules/humsci/hs_views_helper/src/Normalizer/HumsciMarkupNormalizer.php @@ -0,0 +1,77 @@ +logger = $logger_factory->get('hs_views_helper'); + } + + /** + * {@inheritdoc} + */ + public function normalize($object, $format = NULL, array $context = []) { + $normalized = parent::normalize($object, $format, $context); + if (strpos($normalized, 'data-attribute-tag') !== FALSE) { + $normalized = $this->parseMultipleFields($normalized); + } + return $normalized; + } + + /** + * Parse the data output and build a multi-value array. + * + * @param string $data + * Markup html string. + * + * @return array|string + * Associated array with html text as the values. + */ + protected function parseMultipleFields($data) { + try { + $dom = new \DOMDocument(); + $dom->loadHTML($data); + $xpath = new \DOMXPath($dom); + } + catch (\Exception $e) { + $this->logger->error('Unable to parse multiple field data. Message: @message', [ + '@message', + $e->getMessage(), + ]); + return $data; + } + + $key = $xpath->query('//@data-attribute-tag')->item(0)->nodeValue; + $results = $xpath->query('//div[@data-attribute-tag]'); + $values = []; + for ($i = 0; $i < $results->length; $i++) { + $item = $results->item($i); + $values[] = trim($item->textContent); + } + $data_array = [$key => $values]; + return $values ? $data_array : $data; + } + +} diff --git a/docroot/modules/humsci/hs_field_helpers/src/Plugin/views/filter/AcademicDateFilter.php b/docroot/modules/humsci/hs_views_helper/src/Plugin/views/filter/AcademicDateFilter.php similarity index 99% rename from docroot/modules/humsci/hs_field_helpers/src/Plugin/views/filter/AcademicDateFilter.php rename to docroot/modules/humsci/hs_views_helper/src/Plugin/views/filter/AcademicDateFilter.php index 8e57eea29..7b064d168 100644 --- a/docroot/modules/humsci/hs_field_helpers/src/Plugin/views/filter/AcademicDateFilter.php +++ b/docroot/modules/humsci/hs_views_helper/src/Plugin/views/filter/AcademicDateFilter.php @@ -1,6 +1,6 @@ NULL]; + $options['item_tag'] = ['default' => NULL]; + return $options; + } + + /** + * {@inheritdoc} + */ + public function buildOptionsForm(&$form, FormStateInterface $form_state) { + parent::buildOptionsForm($form, $form_state); + $form['root_tag'] = [ + '#type' => 'textfield', + '#title' => $this->t('Root Tag'), + '#description' => $this->t('Customize the root name in an XML document. Leave empty for default name.'), + '#default_value' => $this->options['root_tag'], + '#states' => [ + 'visible' => [ + ':input[name="style_options[formats][xml]"]' => ['checked' => TRUE], + ], + ], + ]; + $form['item_tag'] = [ + '#type' => 'textfield', + '#title' => $this->t('Item Tag'), + '#description' => $this->t('Customize the item name in an XML document. Leave empty for default name.'), + '#default_value' => $this->options['item_tag'], + '#states' => [ + 'visible' => [ + ':input[name="style_options[formats][xml]"]' => ['checked' => TRUE], + ], + ], + ]; + } + + /** + * {@inheritdoc} + * + * Duplicate everything from the parent class, but change the serialized data + * and context to set tag names. + */ + public function render() { + $preview = FALSE; + // Get the content type configured in the display or fallback to the + // default. + if ((empty($this->view->live_preview))) { + $content_type = $this->displayHandler->getContentType(); + } + else { + $preview = TRUE; + $content_type = !empty($this->options['formats']) ? reset($this->options['formats']) : 'json'; + } + + if ($content_type != 'xml') { + // Customized tags only work with XML output. If its a json, we just let + // it do its thing. + return parent::render(); + } + + $rows = []; + // If the Data Entity row plugin is used, this will be an array of entities + // which will pass through Serializer to one of the registered Normalizers, + // which will transform it to arrays/scalars. If the Data field row plugin + // is used, $rows will not contain objects and will pass directly to the + // Encoder. + foreach ($this->view->result as $row_index => $row) { + $this->view->row_index = $row_index; + $rows[] = $this->view->rowPlugin->render($row); + } + unset($this->view->row_index); + + // This is the customized portion that sets the appropriate tag names. + $context = ['views_style_plugin' => $this]; + if ($this->options['root_tag']) { + $context['xml_root_node_name'] = $this->options['root_tag']; + } + + // For easier changes in views UI, lets format the xml output. + if ($preview) { + $context['xml_format_output'] = 'formatOutput'; + } + + $data = $this->options['item_tag'] ? [$this->options['item_tag'] => $rows] : $rows; + // Now that we have our tag names, serialize the data. + return $this->serializer->serialize($data, $content_type, $context); + } + +} diff --git a/docroot/modules/humsci/hs_field_helpers/src/Plugin/views/style/PatternsStyle.php b/docroot/modules/humsci/hs_views_helper/src/Plugin/views/style/PatternsStyle.php similarity index 99% rename from docroot/modules/humsci/hs_field_helpers/src/Plugin/views/style/PatternsStyle.php rename to docroot/modules/humsci/hs_views_helper/src/Plugin/views/style/PatternsStyle.php index b81ba139b..f1b0bc689 100644 --- a/docroot/modules/humsci/hs_field_helpers/src/Plugin/views/style/PatternsStyle.php +++ b/docroot/modules/humsci/hs_views_helper/src/Plugin/views/style/PatternsStyle.php @@ -1,6 +1,6 @@ setupNodes(); @@ -120,7 +120,7 @@ public function testAcademicFilter() { 'id' => 'academic_datetime', 'field_name' => $this->field->getName(), ]; - /** @var \Drupal\hs_field_helpers\Plugin\views\filter\AcademicDateFilter $filter */ + /** @var \Drupal\hs_views_helper\Plugin\views\filter\AcademicDateFilter $filter */ $filter = $filter_manager->createInstance('academic_datetime', $configuration); $this->assertEquals(AcademicDateFilter::class, get_class($filter)); diff --git a/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.info.yml b/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.info.yml index 39b6882cb..00eaa4159 100644 --- a/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.info.yml +++ b/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.info.yml @@ -1,7 +1,7 @@ name: Stanford HumSci type: profile description: 'Installation profile for HumSci' -version: 8.x +version: 8.0.17 core: 8.x themes: diff --git a/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.install b/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.install index b4010375f..ba210019f 100644 --- a/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.install +++ b/docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.install @@ -289,6 +289,8 @@ function _su_humsci_profile_update_fix_menuposition_sections(array $sections) { * Uninstall material admin theme and theme switcher module. */ function su_humsci_profile_update_8012() { + drupal_flush_all_caches(); + $config_factory = \Drupal::configFactory(); // Get all the humsci admin theme block names. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 722ebdac2..1dcf7f665 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,14 @@ # HumSci +8.0.17 +-------------------------------------------------------------------------------- +_Release Date: 2019-02-06_ + +* HSD8-531 refactor admin theme to remove material admin theme +* HS-110 Added course code integer field and mapping +* HSD8-545 events exporter for MRC to create an XML feed to be consumed on mathematics site +* HSD8-546 node clone action allowing users to clone a node 1 to 10 times. + 8.0.16 -------------------------------------------------------------------------------- _Release Date: 2019-01-24_