Difference between revisions of "Drupal"

From Wasya Wiki
Jump to: navigation, search
 
(17 intermediate revisions by the same user not shown)
Line 42: Line 42:
 
     apt install php-bcmath php8.1-bcmath
 
     apt install php-bcmath php8.1-bcmath
 
     composer require 'drupal/commerce_stripe:^1.1'
 
     composer require 'drupal/commerce_stripe:^1.1'
 +
    composer require 'drupal/commerce_recurring:^1.0@RC'
 
   composer require 'drupal/linkit:^6.0'
 
   composer require 'drupal/linkit:^6.0'
 
   composer require 'drupal/redirect_after_login:^3.0'
 
   composer require 'drupal/redirect_after_login:^3.0'
Line 71: Line 72:
 
   composer require 'drupal/group:^1.6'
 
   composer require 'drupal/group:^1.6'
 
     composer require 'drupal/group_join_link:^1.0'
 
     composer require 'drupal/group_join_link:^1.0'
 +
  composer require 'drupal/social_auth:^4.1'
 +
    composer require 'drupal/social_auth_google:^4.0'
 +
 
  
 
== evaluating ==
 
== evaluating ==
Line 88: Line 92:
  
 
== Setting up dev environment ==
 
== Setting up dev environment ==
 
  composer require 'drupal/examples:^4.0'
 
  
 
* From: https://github.com/composer/composer/issues/9393
 
* From: https://github.com/composer/composer/issues/9393
Line 95: Line 97:
 
* probably not useful: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/creating-functional-tests-simulated-browser
 
* probably not useful: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/creating-functional-tests-simulated-browser
  
   composer require --dev drupal/core-dev
+
 
  composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver
+
   composer require --dev --no-update symfony/filesystem:4.4.42
 
   composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies
 
   composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies
  composer require --dev --no-update symfony/filesystem:4.4.42
+
    composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver
  composer update -W
+
    composer update -W
  composer update symfony/filesystem:4.4.42 drush/drush -W
+
    composer update symfony/filesystem:4.4.42 drush/drush -W
  composer require --dev drupal/core-dev -W
+
    composer require --dev drupal/core-dev -W
  composer require --dev phpspec/prophecy-phpunit:^2
+
    composer require --dev phpspec/prophecy-phpunit:^2
 +
 
  
 +
Not useful:
  
 +
  composer require 'drupal/examples:^4.0'
  
 
== Configure Apache ==
 
== Configure Apache ==
Line 205: Line 210:
  
 
== Default Attachments ==
 
== Default Attachments ==
   txt pdf doc docx html csv xlsx xlsm sh json
+
   txt pdf doc docx html csv xlsx xlsm sh json svg
   cer pem pub key
+
   cer pem pub key kdbx
 
   png jpg jpeg gif
 
   png jpg jpeg gif
 
   mkv sfv avi mp3 mp4 webm mov
 
   mkv sfv avi mp3 mp4 webm mov
 
   zip tar gz
 
   zip tar gz
 +
 +
= Testing =
 +
From: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/running-phpunit-tests
 +
 +
For me, in my drupal images and containers, drupal is installed in the following folder, which is also my workdir:
 +
 +
  WORKDIR /var/www/html
 +
 +
The below is optional, I call the specific phpunit executable every time:
 +
 +
  export PATH="$PATH:/var/www/html/vendor/bin"
 +
 +
You need to change minimum stability to "dev" for the testing libraries to be loaded.
 +
 +
DO NOT RUN THIS IN PRODUCTION!
 +
 +
  composer require --dev phpunit/phpunit # trash
 +
    composer require --dev phpunit/phpunit:^9.5 --with-all-dependencies
 +
  composer require --dev drupal/core-dev
 +
    composer require --dev drupal/core-dev --update-with-all-dependencies # trash
 +
  composer require --dev behat/mink:1.8.0 --with-all-dependencies
 +
  composer require --dev symfony/phpunit-bridge
 +
  composer require --dev phpspec/prophecy-phpunit
 +
  composer require --dev behat/mink-browserkit-driver
 +
 +
Copy and configure phpunit.xml:
 +
 +
  phpunit --testsuite unit --filter CurrentUserBlock # trash?
 +
  cd /var/www/html
 +
  ../vendor/bin/phpunit  -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php
 +
  ../vendor/bin/phpunit  -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php -v --debug

Latest revision as of 15:51, 3 October 2025

Install & Configure

 composer create-project drupal/recommended-project:9.5.10 html
 composer require 'drupal/devel:^5.1'
 composer require 'drupal/s3fs:^3.3'
 # composer require 'wasya-co/consent_popup: 1.0.4.x-dev'
 composer require 'drupal/consent_popup:^1.0'
 composer require 'drush/drush:^11.6'
 composer require 'drupal/metatag:^2.0'
 composer require 'drupal/redirect:^1.9'
 composer require 'drupal/superfish:^1.6'
 composer require 'drupal/webform:^6.0'
 composer require 'drupal/captcha:^1.14'
 composer require 'drupal/typed_data:^1.0@alpha'
 composer require 'drupal/rules:^3.0@alpha'
 composer require 'drupal/smtp:^1.2'
 composer require 'drupal/hal:^1.0'
 composer require 'drupal/restui:^1.21'
 composer require 'drupal/keycloak:^2.2@beta'
 composer require 'drupal/nodeaccess:^2.0@alpha'
 composer require 'drupal/backup_migrate:^5.0'
 composer require 'drupal/email_registration:^2.0@RC'
 composer require 'drupal/content_access:^2.0'
 composer require 'drupal/social_media:^2.0'
 composer require 'drupal/wordpress_migrate:^3.0@alpha'
 composer require 'drupal/migrate_tools:^6.0'
 composer require 'drupal/codefilter:^2.0'
 composer require 'drupal/views_taxonomy_term_name_depth:^7.2'
 composer require 'drupal/pathauto:^1.12'
 composer require 'drupal/metatag:^2.0'
 composer require 'drupal/twig_tweak:^3.3'
 composer require 'drupal/simplenews:^4.0'
   # composer require 'drupal/migrate_plus:^6.0' ## didn't need it the second time
 composer require 'drupal/ctools:^4.0'
 composer require 'drupal/commerce:^2.40'
   composer require drupal/inline_entity_form @RC --no-update
   apt install php-bcmath php8.1-bcmath
   composer require 'drupal/commerce_stripe:^1.1'
   composer require 'drupal/commerce_recurring:^1.0@RC'
 composer require 'drupal/linkit:^6.0'
 composer require 'drupal/redirect_after_login:^3.0'
 composer require 'drupal/symfony_mailer:^1.4'
 composer require 'drupal/custom_search:^1.0@beta'
 composer require 'drupal/fullcalendar_view:^5.2' 
 composer require 'drupal/date_recur:^3.3@RC'
 composer require 'drupal/date_recur_modular:^3.1'
 composer require 'drupal/colorbox:2.0.2'
 composer require 'drupal/tagclouds:^2.0'
 composer require 'drupal/filelog:^3.0'
 composer require 'drupal/message:^1.6'
 composer require 'drupal/flag:^4.0@beta'
 composer require 'drupal/message_subscribe:^1.4'
 composer require 'drupal/message_digest:^1.5'
 composer require 'drupal/message_ui:^1.3'
 composer require 'drupal/layout_builder_usage_reports:^1.0'
 composer require 'drupal/views_tree:^2.0@RC'
 composer require 'drupal/vote_up_down:^1.0@alpha'
 composer require 'drupal/formblock:^2.0@beta'
 composer require 'drupal/views_pdf:^3.0@alpha'
 composer require 'drupal/field_permissions:^1.4'
 composer require 'drupal/scheduler:^2.2'
 composer require 'drupal/simplenews_scheduler:^4.0@alpha'
 composer require 'drupal/insert_view:^2.1'
 composer require drush/drush
 composer require 'drupal/keycloak:^1.8'
 composer require 'drupal/simple_oauth:^5.2'
 composer require 'drupal/group:^1.6'
   composer require 'drupal/group_join_link:^1.0'
 composer require 'drupal/social_auth:^4.1'
   composer require 'drupal/social_auth_google:^4.0'
 

evaluating

 composer require 'drupal/seo_checklist:^5.2'
 composer require 'drupal/yoast_seo:^1.9'
 composer require 'drupal/tvi:^2.0' ## From: https://www.drupal.org/project/tvi
 composer require 'drupal/advanced_text_formatter:^3.0@RC'
 composer require 'drupal/token_filter:^2.1'
 composer require 'drupal/form_mode_control:^2.4'
 composer require 'drupal/queue_mail:^1.7'
 composer require 'drupal/googlelogin-googlelogin:^9.5'

not using

 # composer require 'drupal/oauth_login_oauth2:^3.0'## not free! very limited.

Setting up dev environment


 composer require --dev --no-update symfony/filesystem:4.4.42
 composer require --dev drupal/core-dev:9.5.11 --with-all-dependencies
   composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver
   composer update -W
   composer update symfony/filesystem:4.4.42 drush/drush -W
   composer require --dev drupal/core-dev -W
   composer require --dev phpspec/prophecy-phpunit:^2
 

Not useful:

 composer require 'drupal/examples:^4.0'

Configure Apache

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Configure s3fs

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions"
            ],
            "Resource": [
                "arn:aws:s3:::<ze bucket>"
            ]
        },
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::<ze bucket>/*"
            ]
        }
    ]
}


Disable caching

From: https://www.drupal.org/docs/develop/development-tools/disable-caching

  • Add the settings.local.php and
  • Modify development.services.yml:
parameters:
  http.response.debug_cacheability_headers: true
  twig.config:
    debug: true
    auto_reload: true
    cache: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

ReST



curl --include \
  --request POST \
  --user admin:<> \
  --header 'Content-type: application/hal+json' \
  http://pi.local/node?_format=hal_json \
  --data-binary '{
    "_links": {
      "type":{"href":"http://pi.local/rest/type/node/article"}
    },
    "title":[{"value":"Node +++ 123 bac +++" }],
    "body":[{"value": "<b>hello, wor</b>ld!", "format": "full_html" }],
    "type":[{"target_id":"article"}],
    "status": [{"value": 1}],
    "_embedded": {
      "http://pi.local/rest/relation/node/article/field_issue": [
        { "uuid": [{ "value": "56229a95-d675-43e1-99b1-f9e11b5579c5" }] }
      ],
      "http://pi.local/rest/relation/node/article/field_tags": [
        { "uuid": [{ "value": "45646a7d-1a16-42e8-b758-f6e1c8d976f7" }] },
        { "uuid": [{ "value": "834e34e2-05ae-498d-b876-453798872ce1" }] }
      ]
    }

  }'

Default Attachments

 txt pdf doc docx html csv xlsx xlsm sh json svg
 cer pem pub key kdbx
 png jpg jpeg gif
 mkv sfv avi mp3 mp4 webm mov
 zip tar gz

Testing

From: https://www.drupal.org/docs/develop/automated-testing/phpunit-in-drupal/running-phpunit-tests

For me, in my drupal images and containers, drupal is installed in the following folder, which is also my workdir:

 WORKDIR /var/www/html

The below is optional, I call the specific phpunit executable every time:

 export PATH="$PATH:/var/www/html/vendor/bin"

You need to change minimum stability to "dev" for the testing libraries to be loaded.

DO NOT RUN THIS IN PRODUCTION!

 composer require --dev phpunit/phpunit # trash
   composer require --dev phpunit/phpunit:^9.5 --with-all-dependencies
 composer require --dev drupal/core-dev
   composer require --dev drupal/core-dev --update-with-all-dependencies # trash
 composer require --dev behat/mink:1.8.0 --with-all-dependencies
 composer require --dev symfony/phpunit-bridge
 composer require --dev phpspec/prophecy-phpunit
 composer require --dev behat/mink-browserkit-driver

Copy and configure phpunit.xml:

 phpunit --testsuite unit --filter CurrentUserBlock # trash?
 cd /var/www/html
 ../vendor/bin/phpunit  -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php
 ../vendor/bin/phpunit  -c ../phpunit.xml modules/ish_drupal_module/tests/src/Functional/CurrentUserBlockTest.php -v --debug