diff --git a/.gitignore b/.gitignore index 00fae60..564365f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ # Ignore configuration files that may contain sensitive information /web/sites/*/settings.local.php +# Ignore ddev settings +/web/sites/*/settings.ddev.php # Ignore paths that may contain user-generated content /web/sites/*/files diff --git a/README.md b/README.md index db9d13c..7eb20ff 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,10 @@ Sajt je dostopen preko naslova: https://yufu-manifest.ddev.site/ Lahko pa napišemo tudi `ddev launch` +v `web/sites/default/settings.local.php` dodamo vrstico, ki vključi services nastavitve, ki omogočijo CORS: + +`$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/default/yufu.services.yml';` + ### Postavitev (vuejs) "prednjegadela" Najprej gremo v podfolder `nuxt` in namestimo odvisne javascript pakete: diff --git a/composer.json b/composer.json index 48d691d..4dae1e8 100644 --- a/composer.json +++ b/composer.json @@ -20,11 +20,11 @@ "drupal/cer": "^5.0@beta", "drupal/config_ignore": "^3.1", "drupal/content_as_config": "^1.0", + "drupal/content_moderation_notifications": "^3.6", "drupal/core-composer-scaffold": "^10.0", "drupal/core-project-message": "^10.0", - "drupal/core-recommended": "^10.0", - "drupal/diff": "^1.1", "drupal/core-recommended": "^10.2.4", + "drupal/diff": "^1.1", "drupal/gin": "^3.0@RC", "drupal/gin_toolbar": "^1.0@RC", "drupal/jsonapi_menu_items": "^1.2", diff --git a/composer.lock b/composer.lock index 0b0b543..282695c 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": "1e4c156c402a50481a77ff4b24a87020", + "content-hash": "39f3d592b41324eb32edb9388cc9682b", "packages": [ { "name": "asm89/stack-cors", @@ -1446,6 +1446,58 @@ "issues": "https://www.drupal.org/project/issues/content_as_config" } }, + { + "name": "drupal/content_moderation_notifications", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/content_moderation_notifications.git", + "reference": "8.x-3.6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/content_moderation_notifications-8.x-3.6.zip", + "reference": "8.x-3.6", + "shasum": "f475721b95de8d0520053d3101c35c48ea22f61c" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "require-dev": { + "drupal/token": "^1.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.6", + "datestamp": "1695836640", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "jhedstrom", + "homepage": "https://www.drupal.org/user/208732" + }, + { + "name": "Rob Holmes", + "homepage": "https://www.drupal.org/user/1774034" + } + ], + "description": "Manage notifications for content moderation transitions.", + "homepage": "https://www.drupal.org/project/content_moderation_notifications", + "support": { + "source": "https://git.drupalcode.org/project/content_moderation_notifications", + "issues": "https://www.drupal.org/project/issues/content_moderation_notifications" + } + }, { "name": "drupal/core", "version": "10.2.4", @@ -2567,72 +2619,6 @@ ], "time": "2023-10-06T06:47:41+00:00" }, - { - "name": "enlightn/security-checker", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "68df5c7256c84b428bf8fcff0d249de06ce362d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/68df5c7256c84b428bf8fcff0d249de06ce362d2", - "reference": "68df5c7256c84b428bf8fcff0d249de06ce362d2", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5|^6|^7", - "symfony/finder": "^3|^4|^5|^6|^7", - "symfony/process": "^3.4|^4|^5|^6|^7", - "symfony/yaml": "^3.4|^4|^5|^6|^7" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18|^3.0", - "phpunit/phpunit": "^5.5|^6|^7|^8|^9" - }, - "bin": [ - "security-checker" - ], - "type": "library", - "autoload": { - "psr-4": { - "Enlightn\\SecurityChecker\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - } - ], - "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", - "keywords": [ - "package", - "php", - "scanner", - "security", - "security advisories", - "vulnerability scanner" - ], - "support": { - "issues": "https://github.com/enlightn/security-checker/issues", - "source": "https://github.com/enlightn/security-checker/tree/v1.11.0" - }, - "time": "2023-11-17T07:53:29+00:00" - }, { "name": "ezyang/htmlpurifier", "version": "v4.17.0", diff --git a/config/sync/content_moderation_notifications.content_moderation_notification.nov_osnutek.yml b/config/sync/content_moderation_notifications.content_moderation_notification.nov_osnutek.yml new file mode 100644 index 0000000..b03e0f8 --- /dev/null +++ b/config/sync/content_moderation_notifications.content_moderation_notification.nov_osnutek.yml @@ -0,0 +1,19 @@ +uuid: ef0653bf-ad20-4659-bb94-9273264eb15b +langcode: en +status: true +dependencies: { } +id: nov_osnutek +workflow: concept_workflow +transitions: + create_new_draft: create_new_draft +roles: + editor: editor + maska: maska +author: false +site_mail: false +emails: '' +subject: '[YUFU] New draft of [node:original:title]' +body: + value: "New draft pending moderation: [node:title] ([node:nid]) by [node:author:mail].\r\n\r\n[node:url]/revisions/view/[node:original:vid]/[node:vid]/visual_inline\r\n\r\n[node:body]" + format: plain_text +label: 'Nov osnutek' diff --git a/config/sync/content_moderation_notifications.content_moderation_notification.spremembe_sprejete.yml b/config/sync/content_moderation_notifications.content_moderation_notification.spremembe_sprejete.yml new file mode 100644 index 0000000..537af79 --- /dev/null +++ b/config/sync/content_moderation_notifications.content_moderation_notification.spremembe_sprejete.yml @@ -0,0 +1,18 @@ +uuid: c048753b-259e-4210-8e53-031ae5cbae0f +langcode: en +status: true +dependencies: { } +id: spremembe_sprejete +workflow: concept_workflow +transitions: + publish: publish +roles: + editor: editor +author: true +site_mail: false +emails: '' +subject: '[YUFU] Changes approved' +body: + value: 'Proposed changes to [node:title] ([node:url]) by [node:author:mail] were approved.' + format: plain_text +label: 'Spremembe sprejete' diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index ac517ee..973b689 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -14,6 +14,7 @@ module: config_translation: 0 content_as_config: 0 content_moderation: 0 + content_moderation_notifications: 0 contextual: 0 datetime: 0 dblog: 0 diff --git a/config/sync/language/hr/block.block.olivero_syndicate.yml b/config/sync/language/hr/block.block.olivero_syndicate.yml new file mode 100644 index 0000000..4061ce2 --- /dev/null +++ b/config/sync/language/hr/block.block.olivero_syndicate.yml @@ -0,0 +1,2 @@ +settings: + label: 'RSS feed' diff --git a/config/sync/language/hr/core.entity_view_mode.node.rss.yml b/config/sync/language/hr/core.entity_view_mode.node.rss.yml new file mode 100644 index 0000000..cd77ee8 --- /dev/null +++ b/config/sync/language/hr/core.entity_view_mode.node.rss.yml @@ -0,0 +1 @@ +label: RSS diff --git a/config/sync/language/hr/views.view.content.yml b/config/sync/language/hr/views.view.content.yml index bfad416..737d57f 100644 --- a/config/sync/language/hr/views.view.content.yml +++ b/config/sync/language/hr/views.view.content.yml @@ -12,6 +12,7 @@ display: name: label: Autor status: + label: Status settings: format_custom_true: Objavljeno changed: @@ -25,6 +26,9 @@ display: exposed_sorts_label: 'Rasporedi po' sort_asc_label: Uzlazno sort_desc_label: Silazno + empty: + area_text_custom: + content: 'Na voljo ni nobene vsebine.' filters: title: expose: @@ -33,6 +37,8 @@ display: expose: label: 'Vrsta sadržaja' status: + expose: + label: Status group_info: group_items: 1: diff --git a/config/sync/language/hr/views.view.media.yml b/config/sync/language/hr/views.view.media.yml index d090b5b..a8457d9 100644 --- a/config/sync/language/hr/views.view.media.yml +++ b/config/sync/language/hr/views.view.media.yml @@ -12,6 +12,7 @@ display: uid: label: Autor status: + label: Status settings: format_custom_true: Objavljeno changed: diff --git a/config/sync/language/hr/views.view.media_library.yml b/config/sync/language/hr/views.view.media_library.yml index c01aa5f..df68a0a 100644 --- a/config/sync/language/hr/views.view.media_library.yml +++ b/config/sync/language/hr/views.view.media_library.yml @@ -36,6 +36,7 @@ display: delete_media: text: Ukloni widget: + display_title: Widget display_options: arguments: bundle: diff --git a/config/sync/language/hr/views.view.moderated_content.yml b/config/sync/language/hr/views.view.moderated_content.yml index d7d4a40..e2b143d 100644 --- a/config/sync/language/hr/views.view.moderated_content.yml +++ b/config/sync/language/hr/views.view.moderated_content.yml @@ -7,18 +7,12 @@ display: fields: title: label: Naziv - separator: ', ' type: label: 'Vrsta sadržaja' - separator: ', ' name: label: Autor - separator: ', ' - moderation_state: - separator: ', ' changed: label: Osvježeno - separator: ', ' operations: label: Operacije exposed_form: diff --git a/config/sync/language/sl/block.block.olivero_syndicate.yml b/config/sync/language/sl/block.block.olivero_syndicate.yml new file mode 100644 index 0000000..4061ce2 --- /dev/null +++ b/config/sync/language/sl/block.block.olivero_syndicate.yml @@ -0,0 +1,2 @@ +settings: + label: 'RSS feed' diff --git a/config/sync/language/sl/core.entity_view_mode.node.rss.yml b/config/sync/language/sl/core.entity_view_mode.node.rss.yml new file mode 100644 index 0000000..cd77ee8 --- /dev/null +++ b/config/sync/language/sl/core.entity_view_mode.node.rss.yml @@ -0,0 +1 @@ +label: RSS diff --git a/config/sync/language/sl/views.view.block_content.yml b/config/sync/language/sl/views.view.block_content.yml index fc1f408..0cb9803 100644 --- a/config/sync/language/sl/views.view.block_content.yml +++ b/config/sync/language/sl/views.view.block_content.yml @@ -15,10 +15,10 @@ display: exposed_form: options: submit_button: Primjeni - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče empty: area_text_custom: content: 'There are no custom blocks available.' diff --git a/config/sync/language/sl/views.view.comment.yml b/config/sync/language/sl/views.view.comment.yml index 2d5e1b2..8722783 100644 --- a/config/sync/language/sl/views.view.comment.yml +++ b/config/sync/language/sl/views.view.comment.yml @@ -27,10 +27,10 @@ display: exposed_form: options: submit_button: Počisti - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče empty: area_text_custom: content: 'Nema dostupnih komentara.' diff --git a/config/sync/language/sl/views.view.media.yml b/config/sync/language/sl/views.view.media.yml index 496e52f..02e13a5 100644 --- a/config/sync/language/sl/views.view.media.yml +++ b/config/sync/language/sl/views.view.media.yml @@ -12,6 +12,7 @@ display: uid: label: Avtor status: + label: Status settings: format_custom_true: Objavljeno changed: @@ -21,10 +22,10 @@ display: exposed_form: options: submit_button: Počisti - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče filters: bundle: expose: diff --git a/config/sync/language/sl/views.view.media_library.yml b/config/sync/language/sl/views.view.media_library.yml index 017cef9..9a42eaf 100644 --- a/config/sync/language/sl/views.view.media_library.yml +++ b/config/sync/language/sl/views.view.media_library.yml @@ -8,10 +8,10 @@ display: action_title: Akcija exposed_form: options: - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče filters: status: group_info: @@ -36,6 +36,7 @@ display: delete_media: text: Ukloni widget: + display_title: Widget display_options: arguments: bundle: diff --git a/config/sync/language/sl/views.view.moderated_content.yml b/config/sync/language/sl/views.view.moderated_content.yml index bc51f86..84479bd 100644 --- a/config/sync/language/sl/views.view.moderated_content.yml +++ b/config/sync/language/sl/views.view.moderated_content.yml @@ -7,18 +7,10 @@ display: fields: title: label: Naslov - separator: ', ' - type: - label: 'Tip vsebin' - separator: ', ' name: label: Avtor - separator: ', ' - moderation_state: - separator: ', ' changed: label: Posodobljeno - separator: ', ' operations: label: Operacije exposed_form: @@ -32,9 +24,6 @@ display: title: expose: label: Naslov - type: - expose: - label: '' langcode: expose: label: Jezik diff --git a/config/sync/language/sl/views.view.taxonomy_term.yml b/config/sync/language/sl/views.view.taxonomy_term.yml index 0b61907..059d806 100644 --- a/config/sync/language/sl/views.view.taxonomy_term.yml +++ b/config/sync/language/sl/views.view.taxonomy_term.yml @@ -6,10 +6,10 @@ display: exposed_form: options: submit_button: Primjeni - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče arguments: tid: exception: diff --git a/config/sync/language/sr/block.block.olivero_syndicate.yml b/config/sync/language/sr/block.block.olivero_syndicate.yml new file mode 100644 index 0000000..4061ce2 --- /dev/null +++ b/config/sync/language/sr/block.block.olivero_syndicate.yml @@ -0,0 +1,2 @@ +settings: + label: 'RSS feed' diff --git a/config/sync/language/sr/core.entity_view_mode.node.rss.yml b/config/sync/language/sr/core.entity_view_mode.node.rss.yml new file mode 100644 index 0000000..cd77ee8 --- /dev/null +++ b/config/sync/language/sr/core.entity_view_mode.node.rss.yml @@ -0,0 +1 @@ +label: RSS diff --git a/config/sync/language/sr/views.view.content.yml b/config/sync/language/sr/views.view.content.yml index bfad416..737d57f 100644 --- a/config/sync/language/sr/views.view.content.yml +++ b/config/sync/language/sr/views.view.content.yml @@ -12,6 +12,7 @@ display: name: label: Autor status: + label: Status settings: format_custom_true: Objavljeno changed: @@ -25,6 +26,9 @@ display: exposed_sorts_label: 'Rasporedi po' sort_asc_label: Uzlazno sort_desc_label: Silazno + empty: + area_text_custom: + content: 'Na voljo ni nobene vsebine.' filters: title: expose: @@ -33,6 +37,8 @@ display: expose: label: 'Vrsta sadržaja' status: + expose: + label: Status group_info: group_items: 1: diff --git a/config/sync/language/sr/views.view.media.yml b/config/sync/language/sr/views.view.media.yml index d090b5b..a8457d9 100644 --- a/config/sync/language/sr/views.view.media.yml +++ b/config/sync/language/sr/views.view.media.yml @@ -12,6 +12,7 @@ display: uid: label: Autor status: + label: Status settings: format_custom_true: Objavljeno changed: diff --git a/config/sync/language/sr/views.view.media_library.yml b/config/sync/language/sr/views.view.media_library.yml index c01aa5f..df68a0a 100644 --- a/config/sync/language/sr/views.view.media_library.yml +++ b/config/sync/language/sr/views.view.media_library.yml @@ -36,6 +36,7 @@ display: delete_media: text: Ukloni widget: + display_title: Widget display_options: arguments: bundle: diff --git a/config/sync/language/sr/views.view.moderated_content.yml b/config/sync/language/sr/views.view.moderated_content.yml index d7d4a40..e2b143d 100644 --- a/config/sync/language/sr/views.view.moderated_content.yml +++ b/config/sync/language/sr/views.view.moderated_content.yml @@ -7,18 +7,12 @@ display: fields: title: label: Naziv - separator: ', ' type: label: 'Vrsta sadržaja' - separator: ', ' name: label: Autor - separator: ', ' - moderation_state: - separator: ', ' changed: label: Osvježeno - separator: ', ' operations: label: Operacije exposed_form: diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 20f21cb..06ec436 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -371,11 +371,11 @@ display: options: submit_button: Počisti reset_button: true - reset_button_label: Poništi + reset_button_label: Ponastavi exposed_sorts_label: 'Rasporedi po' expose_sort_order: true - sort_asc_label: Uzlazno - sort_desc_label: Silazno + sort_asc_label: Naraščajoče + sort_desc_label: Padajoče access: type: perm options: diff --git a/web/modules/custom/yufu_admin/yufu_admin.module b/web/modules/custom/yufu_admin/yufu_admin.module index d88736c..fe38e69 100644 --- a/web/modules/custom/yufu_admin/yufu_admin.module +++ b/web/modules/custom/yufu_admin/yufu_admin.module @@ -57,39 +57,39 @@ function yufu_admin_mail($key, &$message, $params) { /** * Implements hook_ENTITY_TYPE_presave(). */ -function yufu_admin_node_presave(EntityInterface $entity) { - if ($entity instanceOf NodeInterface && $entity->bundle() == 'concept') { - // Get transition: concept_drafted, concept_approved, concept_rejected. - if ($entity->isNew()) { - $transition = 'concept_drafted'; - } - else { - $transition = _yufu_admin_get_node_transition($entity); - } - switch ($transition) { - case 'stay_draft': - case 'concept_drafted': - // Send email to editors. - $params = _yufu_admin_concept_drafted_mail($entity); - $result = _yufu_admin_send_email($transition, $params['to'], $params); - _yufu_admin_status_message($result['result'], $transition, $entity, $params['to']); - break; - case 'concept_approved': - // Send email to revision creator (user). - // @TODO Maybe notify other editors. - $params = _yufu_admin_concept_approved_get_message($entity); - $result = _yufu_admin_send_email($transition, $params['to'], $params); - _yufu_admin_status_message($result['result'], $transition, $entity, $params['to']); - break; - case 'concept_rejectd': - // Send email to revision creator (user). - // This transition happens on revision delete. - // Curently it is dead. - // @TODO https://git.kompot.si/yufu/manifest/issues/45 - break; - } - } -} +// function yufu_admin_node_presave(EntityInterface $entity) { +// if ($entity instanceOf NodeInterface && $entity->bundle() == 'concept') { +// // Get transition: concept_drafted, concept_approved, concept_rejected. +// if ($entity->isNew()) { +// $transition = 'concept_drafted'; +// } +// else { +// $transition = _yufu_admin_get_node_transition($entity); +// } +// switch ($transition) { +// case 'stay_draft': +// case 'concept_drafted': +// // Send email to editors. +// $params = _yufu_admin_concept_drafted_mail($entity); +// $result = _yufu_admin_send_email($transition, $params['to'], $params); +// _yufu_admin_status_message($result['result'], $transition, $entity, $params['to']); +// break; +// case 'concept_approved': +// // Send email to revision creator (user). +// // @TODO Maybe notify other editors. +// $params = _yufu_admin_concept_approved_get_message($entity); +// $result = _yufu_admin_send_email($transition, $params['to'], $params); +// _yufu_admin_status_message($result['result'], $transition, $entity, $params['to']); +// break; +// case 'concept_rejectd': +// // Send email to revision creator (user). +// // This transition happens on revision delete. +// // Curently it is dead. +// // @TODO https://git.kompot.si/yufu/manifest/issues/45 +// break; +// } +// } +//} /** * Compare original node moderation state with current state. @@ -130,13 +130,13 @@ function _yufu_admin_concept_drafted_mail(NodeInterface $node) { if ($node->isNew()) { $params['message'] = t('New concept created: @title - @url', [ '@title' => $node->getTitle(), - '@url' => !$node->isNew() ? $node?->toUrl()?->toString() : '', + '@url' => '', ]); } else { $params['message'] = t('New changes to concept proposed: @title - @url', [ '@title' => $node->getTitle(), - '@url' => !$node->isNew() ? $node?->toUrl()?->toString() : '', + '@url' => $node?->toUrl()?->toString(), ]); } $params['node_title'] = $node->getTitle(); @@ -276,3 +276,15 @@ function _yufu_admin_get_all_pioneer_emails() { // @TODO: Think it through if it is really needed. return []; } + +/** + * Invoke hook_content_moderation_notification_mail_data_alter(). + */ +// function yufu_admin_content_moderation_notification_mail_data_alter(EntityInterface $entity, array &$data) { +// // Add an extra email address to the list. +// if ($entity instanceOf NodeInterface) { +// if ($email = _yufu_admin_get_pioneer_email($entity)) { +// $data['to'][] = $email; +// } +// } +// } diff --git a/web/modules/custom/yufu_concept/src/Plugin/rest/resource/AddConcept.php b/web/modules/custom/yufu_concept/src/Plugin/rest/resource/AddConcept.php index 318568c..dd8ad60 100644 --- a/web/modules/custom/yufu_concept/src/Plugin/rest/resource/AddConcept.php +++ b/web/modules/custom/yufu_concept/src/Plugin/rest/resource/AddConcept.php @@ -8,10 +8,10 @@ use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\TypedData\Exception\MissingDataException; use Drupal\node\NodeInterface; use Drupal\rest\Plugin\ResourceBase; -use Drupal\rest\ResourceResponse; use Psr\Log\LogLevel; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; @@ -100,7 +100,7 @@ class AddConcept extends ResourceBase { * @param \Symfony\Component\HttpFoundation\Request; * Post request. * - * @return \Drupal\rest\ResourceResponse + * @return \Symfony\Component\HttpFoundation\JsonResponse * Returns rest resource. */ public function post(Request $request) { @@ -123,11 +123,15 @@ class AddConcept extends ResourceBase { $concept->setRevisionUserId($uid); $concept->set('title', $data['title']); $concept->set('body', $data['text'] ?? $concept->body->value); + if ($uid) { + $uids = $concept->get('uid')->getValue(); + $uids[] = ['target_id' => $uid]; + $concept->set('uid', array_reverse($uids)); + } $concept->isDefaultRevision(FALSE); $concept->setRevisionLogMessage('New revision by concept endpoint.'); - $concept->moderation_state->target_id = 'draft'; + $concept->set('moderation_state', 'draft'); $concept->set('status', 0); - $concept->setUnpublished(); $concept->save(); $this->logger->notice('New concept @title revision @revid created by uid @uid.', [ '@title' => $concept->getTitle(), @@ -163,7 +167,7 @@ class AddConcept extends ResourceBase { 'revision_uid' => $concept->getRevisionUserId(), 'uid' => $concept->uid->target_id, ]; - $response = new ResourceResponse($response_status); + $response = new JsonResponse($response_status); return $response; } @@ -182,7 +186,8 @@ class AddConcept extends ResourceBase { return NULL; } $node_storage = $this->entityTypeManager->getStorage('node'); - if ($concept = end($node_storage->loadByProperties(['uuid' => $uuid]))) { + $concepts = $node_storage->loadByProperties(['uuid' => $uuid]); + if ($concept = end($concepts)) { return $concept; } return NULL; diff --git a/web/modules/custom/yufu_concept/yufu_concept.module b/web/modules/custom/yufu_concept/yufu_concept.module index 0a8a750..cdf143f 100644 --- a/web/modules/custom/yufu_concept/yufu_concept.module +++ b/web/modules/custom/yufu_concept/yufu_concept.module @@ -1,6 +1,28 @@ bundle() == 'concept') { + $transition = \Drupal::service('content_moderation_notifications.notification_information')->getTransition($entity); + if ($transition->id() == 'publish') { + if ($user = $entity->uid->entity) { + if (!$user->status->value) { + $user->set('status', 1); + $user->addRole('editor'); + $user->save(); + } + } + } + } +} diff --git a/web/sites/default/settings.ddev.php b/web/sites/default/settings.ddev.php deleted file mode 100644 index 870ff0a..0000000 --- a/web/sites/default/settings.ddev.php +++ /dev/null @@ -1,50 +0,0 @@ - "db", - 'username' => "db", - 'password' => "db", - 'host' => $host, - 'driver' => $driver, - 'port' => $port, - 'prefix' => "", -); - -$settings['hash_salt'] = 'kShGqBypYstnMBJYmaRocqYLQcvBTMgvGbLQkdODVMavjRUyDhgBFcSAideqnFoM'; - -// This will prevent Drupal from setting read-only permissions on sites/default. -$settings['skip_permissions_hardening'] = TRUE; - -// This will ensure the site can only be accessed through the intended host -// names. Additional host patterns can be added for custom configurations. -$settings['trusted_host_patterns'] = ['.*']; - -// Don't use Symfony's APCLoader. ddev includes APCu; Composer's APCu loader has -// better performance. -$settings['class_loader_auto_detect'] = FALSE; - -// Set $settings['config_sync_directory'] if not set in settings.php. -if (empty($settings['config_sync_directory'])) { - $settings['config_sync_directory'] = 'sites/default/files/sync'; -} - -// Override drupal/symfony_mailer default config to use Mailhog -$config['symfony_mailer.mailer_transport.sendmail']['plugin'] = 'smtp'; -$config['symfony_mailer.mailer_transport.sendmail']['configuration']['user']=''; -$config['symfony_mailer.mailer_transport.sendmail']['configuration']['pass']=''; -$config['symfony_mailer.mailer_transport.sendmail']['configuration']['host']='localhost'; -$config['symfony_mailer.mailer_transport.sendmail']['configuration']['port']='1025'; - -// Deveopment services (for CORS) -$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml'; diff --git a/web/sites/default/yufu.services.yml b/web/sites/default/yufu.services.yml new file mode 100644 index 0000000..08ea88c --- /dev/null +++ b/web/sites/default/yufu.services.yml @@ -0,0 +1,4 @@ +services: + cors.config: + enabled: true +