# Port for https (defaults to 443)
46 |
47 | # xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart"
48 | # Note that for most people the commands
49 | # "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better,
50 | # as leaving xdebug enabled all the time is a big performance hit.
51 |
52 | # xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart"
53 | # Note that for most people the commands
54 | # "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better,
55 | # as leaving xhprof enabled all the time is a big performance hit.
56 |
57 | # webserver_type: nginx-fpm # or apache-fpm
58 |
59 | # timezone: Europe/Berlin
60 | # This is the timezone used in the containers and by PHP;
61 | # it can be set to any valid timezone,
62 | # see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
63 | # For example Europe/Dublin or MST7MDT
64 |
65 | # composer_version: "2"
66 | # if composer_version:"2" it will use the most recent composer v2
67 | # It can also be set to "1", to get most recent composer v1
68 | # or "" for the default v2 created at release time.
69 | # It can be set to any existing specific composer version.
70 | # After first project 'ddev start' this will not be updated until it changes
71 |
72 | # additional_hostnames:
73 | # - somename
74 | # - someothername
75 | # would provide http and https URLs for "somename.ddev.site"
76 | # and "someothername.ddev.site".
77 |
78 | # additional_fqdns:
79 | # - example.com
80 | # - sub1.example.com
81 | # would provide http and https URLs for "example.com" and "sub1.example.com"
82 | # Please take care with this because it can cause great confusion.
83 |
84 | # upload_dir: custom/upload/dir
85 | # would set the destination path for ddev import-files to custom/upload/dir.
86 |
87 | # working_dir:
88 | # web: /var/www/html
89 | # db: /home
90 | # would set the default working directory for the web and db services.
91 | # These values specify the destination directory for ddev ssh and the
92 | # directory in which commands passed into ddev exec are run.
93 |
94 | # omit_containers: [db, dba, ddev-ssh-agent]
95 | # Currently only these containers are supported. Some containers can also be
96 | # omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
97 | # the "db" container, several standard features of ddev that access the
98 | # database container will be unusable. In the global configuration it is also
99 | # possible to omit ddev-router, but not here.
100 |
101 | # nfs_mount_enabled: false
102 | # Great performance improvement but requires host configuration first.
103 | # See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container
104 |
105 | # mutagen_enabled: false
106 | # Experimental performance improvement using mutagen asynchronous updates.
107 | # See https://ddev.readthedocs.io/en/latest/users/performance/#using-mutagen
108 |
109 | # fail_on_hook_fail: False
110 | # Decide whether 'ddev start' should be interrupted by a failing hook
111 |
112 | # host_https_port: "59002"
113 | # The host port binding for https can be explicitly specified. It is
114 | # dynamic unless otherwise specified.
115 | # This is not used by most people, most people use the *router* instead
116 | # of the localhost port.
117 |
118 | # host_webserver_port: "59001"
119 | # The host port binding for the ddev-webserver can be explicitly specified. It is
120 | # dynamic unless otherwise specified.
121 | # This is not used by most people, most people use the *router* instead
122 | # of the localhost port.
123 |
124 | # host_db_port: "59002"
125 | # The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
126 | # unless explicitly specified.
127 |
128 | # phpmyadmin_port: "8036"
129 | # phpmyadmin_https_port: "8037"
130 | # The PHPMyAdmin ports can be changed from the default 8036 and 8037
131 |
132 | # host_phpmyadmin_port: "8036"
133 | # The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed
134 | # through ddev-router, but it can be specified and bound.
135 |
136 | # mailhog_port: "8025"
137 | # mailhog_https_port: "8026"
138 | # The MailHog ports can be changed from the default 8025 and 8026
139 |
140 | # host_mailhog_port: "8025"
141 | # The mailhog port is not normally bound on the host at all, instead being routed
142 | # through ddev-router, but it can be bound directly to localhost if specified here.
143 |
144 | # webimage_extra_packages: [php7.4-tidy, php-bcmath]
145 | # Extra Debian packages that are needed in the webimage can be added here
146 |
147 | # dbimage_extra_packages: [telnet,netcat]
148 | # Extra Debian packages that are needed in the dbimage can be added here
149 |
150 | # use_dns_when_possible: true
151 | # If the host has internet access and the domain configured can
152 | # successfully be looked up, DNS will be used for hostname resolution
153 | # instead of editing /etc/hosts
154 | # Defaults to true
155 |
156 | # project_tld: ddev.site
157 | # The top-level domain used for project URLs
158 | # The default "ddev.site" allows DNS lookup via a wildcard
159 | # If you prefer you can change this to "ddev.local" to preserve
160 | # pre-v1.9 behavior.
161 |
162 | # ngrok_args: --subdomain mysite --auth username:pass
163 | # Provide extra flags to the "ngrok http" command, see
164 | # https://ngrok.com/docs#http or run "ngrok http -h"
165 |
166 | # disable_settings_management: false
167 | # If true, ddev will not create CMS-specific settings files like
168 | # Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php
169 | # In this case the user must provide all such settings.
170 |
171 | # You can inject environment variables into the web container with:
172 | # web_environment:
173 | # - SOMEENV=somevalue
174 | # - SOMEOTHERENV=someothervalue
175 |
176 | # no_project_mount: false
177 | # (Experimental) If true, ddev will not mount the project into the web container;
178 | # the user is responsible for mounting it manually or via a script.
179 | # This is to enable experimentation with alternate file mounting strategies.
180 | # For advanced users only!
181 |
182 | # bind_all_interfaces: false
183 | # If true, host ports will be bound on all network interfaces,
184 | # not just the localhost interface. This means that ports
185 | # will be available on the local network if the host firewall
186 | # allows it.
187 |
188 | # Many ddev commands can be extended to run tasks before or after the
189 | # ddev command is executed, for example "post-start", "post-import-db",
190 | # "pre-composer", "post-composer"
191 | # See https://ddev.readthedocs.io/en/stable/users/extending-commands/ for more
192 | # information on the commands that can be extended and the tasks you can define
193 | # for them. Example:
194 | #hooks:
195 | # post-import-db:
196 | # - exec: drush cr
197 | # - exec: drush updb
198 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Drupal editor configuration normalization
2 | # @see http://editorconfig.org/
3 |
4 | # This is the top-most .editorconfig file; do not search in parent directories.
5 | root = true
6 |
7 | # All files.
8 | [*]
9 | end_of_line = LF
10 | indent_style = space
11 | indent_size = 2
12 | charset = utf-8
13 | trim_trailing_whitespace = true
14 | insert_final_newline = true
15 |
16 | [composer.{json,lock}]
17 | indent_size = 4
18 |
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | #
2 | # Copy and rename this file to .env at root of this project.
3 | #
4 |
5 | # A common use case is to supply database credentials via the environment. Edit settings.php
6 | # like so:
7 | #
8 | # $databases['default']['default'] = [
9 | # 'database' => $_ENV['MYSQL_DATABASE'],
10 | # 'driver' => 'mysql',
11 | # 'host' => $_ENV['MYSQL_HOSTNAME'],
12 | # 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
13 | # 'password' => $_ENV['MYSQL_PASSWORD'],
14 | # 'port' => $_ENV['MYSQL_PORT'],
15 | # 'prefix' => '',
16 | # 'username' => $_ENV['MYSQL_USER'],
17 | # ];
18 | #
19 | # Uncomment and populate as needed.
20 | # MYSQL_DATABASE=
21 | # MYSQL_HOSTNAME=
22 | # MYSQL_PASSWORD=
23 | # MYSQL_PORT=
24 | # MYSQL_USER=
25 |
26 | # Another common use case is to set Drush's --uri via environment.
27 | # DRUSH_OPTIONS_URI=http://example.com
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Drupal git normalization
2 | # @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
3 | # @see https://www.drupal.org/node/1542048
4 |
5 | # Normally these settings would be done with macro attributes for improved
6 | # readability and easier maintenance. However macros can only be defined at the
7 | # repository root directory. Drupal avoids making any assumptions about where it
8 | # is installed.
9 |
10 | # Define text file attributes.
11 | # - Treat them as text.
12 | # - Ensure no CRLF line-endings, neither on checkout nor on checkin.
13 | # - Detect whitespace errors.
14 | # - Exposed by default in `git diff --color` on the CLI.
15 | # - Validate with `git diff --check`.
16 | # - Deny applying with `git apply --whitespace=error-all`.
17 | # - Fix automatically with `git apply --whitespace=fix`.
18 |
19 | *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
20 | *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
21 | *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
22 | *.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
23 | *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
24 | *.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
25 | *.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
26 | *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
27 | *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
28 | *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
29 | *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
30 | *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
31 | *.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
32 | *.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
33 | *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
34 | *.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
35 | *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
36 | *.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
37 | *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
38 | *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
39 | *.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php
40 | *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
41 | *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
42 | *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
43 | *.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
44 |
45 | # Define binary file attributes.
46 | # - Do not treat them as text.
47 | # - Include binary diff in patches instead of "binary files differ."
48 | *.eot -text diff
49 | *.exe -text diff
50 | *.gif -text diff
51 | *.gz -text diff
52 | *.ico -text diff
53 | *.jpeg -text diff
54 | *.jpg -text diff
55 | *.otf -text diff
56 | *.phar -text diff
57 | *.png -text diff
58 | *.svgz -text diff
59 | *.ttf -text diff
60 | *.woff -text diff
61 | *.woff2 -text diff
62 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore directories generated by Composer
2 | /drush/contrib/
3 | /vendor/
4 | /web/core/
5 | /web/modules/contrib/
6 | /web/themes/contrib/
7 | /web/profiles/contrib/
8 | /web/libraries/
9 |
10 | # Ignore sensitive information
11 | /web/sites/*/settings.local.php
12 |
13 | # Ignore Drupal's file directory
14 | /web/sites/*/files/
15 |
16 | # Ignore SimpleTest multi-site environment
17 | /web/sites/simpletest
18 |
19 | # Ignore files generated by common IDEs
20 | /.idea/
21 | /.vscode/
22 |
23 | # Ignore .env files as they are personal
24 | /.env
25 | /web/.htaccess
26 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 | dist: trusty
3 | sudo: false
4 |
5 | php:
6 | - 5.6
7 | - 7.0
8 | - 7.1
9 | - 7.2
10 |
11 | env:
12 | global:
13 | - SIMPLETEST_DB=sqlite://tmp/site.sqlite
14 | - SIMPLETEST_BASE_URL="http://127.0.0.1:8080"
15 | matrix:
16 | - RELEASE=stable COMPOSER_CHANNEL=stable
17 | - RELEASE=dev COMPOSER_CHANNEL=stable
18 | - RELEASE=stable COMPOSER_CHANNEL=snapshot
19 |
20 | matrix:
21 | exclude:
22 | - php: 5.6
23 | env: RELEASE=dev COMPOSER_CHANNEL=stable
24 | - php: 5.6
25 | env: RELEASE=stable COMPOSER_CHANNEL=snapshot
26 |
27 | before_install:
28 | - if [[ $TRAVIS_PHP_VERSION = 5.6 ]]; then export COMPOSER_MEMORY_LIMIT=-1; fi;
29 | - echo 'sendmail_path = /bin/true' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
30 | - phpenv config-rm xdebug.ini
31 | - composer --verbose self-update --$COMPOSER_CHANNEL
32 | - composer --version
33 |
34 | install:
35 | - composer --verbose validate
36 | - composer --verbose install
37 |
38 | script:
39 | - if [[ $RELEASE = dev ]]; then composer --verbose remove --no-update drupal/console; fi;
40 | - if [[ $RELEASE = dev ]]; then composer --verbose require --no-update drupal/core:8.7.x-dev webflo/drupal-core-require-dev:8.7.x-dev; fi;
41 | - if [[ $RELEASE = dev ]]; then composer --verbose update; fi;
42 | - cd $TRAVIS_BUILD_DIR/web
43 | - ./../vendor/bin/drush site-install --verbose --yes --db-url=sqlite://tmp/site.sqlite
44 | - ./../vendor/bin/drush runserver $SIMPLETEST_BASE_URL &
45 | - until curl -s $SIMPLETEST_BASE_URL; do true; done > /dev/null
46 | # Skip core/tests/Drupal/Tests/ComposerIntegrationTest.php because web/ has no composer.json
47 | # Ignore PageCache group temporarily, @see https://www.drupal.org/node/2770673
48 | # Ignore Setup group temporarily, @see https://www.drupal.org/node/2962157
49 | - ./../vendor/bin/phpunit -c core --testsuite unit --exclude-group Composer,DependencyInjection,PageCache,Setup
50 | - ./../vendor/bin/drush
51 | - if [[ $RELEASE = stable ]]; then ./../vendor/bin/drupal; fi;
52 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 2, June 1991
3 |
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 | Everyone is permitted to copy and distribute verbatim copies
7 | of this license document, but changing it is not allowed.
8 |
9 | Preamble
10 |
11 | The licenses for most software are designed to take away your
12 | freedom to share and change it. By contrast, the GNU General Public
13 | License is intended to guarantee your freedom to share and change free
14 | software--to make sure the software is free for all its users. This
15 | General Public License applies to most of the Free Software
16 | Foundation's software and to any other program whose authors commit to
17 | using it. (Some other Free Software Foundation software is covered by
18 | the GNU Lesser General Public License instead.) You can apply it to
19 | your programs, too.
20 |
21 | When we speak of free software, we are referring to freedom, not
22 | price. Our General Public Licenses are designed to make sure that you
23 | have the freedom to distribute copies of free software (and charge for
24 | this service if you wish), that you receive source code or can get it
25 | if you want it, that you can change the software or use pieces of it
26 | in new free programs; and that you know you can do these things.
27 |
28 | To protect your rights, we need to make restrictions that forbid
29 | anyone to deny you these rights or to ask you to surrender the rights.
30 | These restrictions translate to certain responsibilities for you if you
31 | distribute copies of the software, or if you modify it.
32 |
33 | For example, if you distribute copies of such a program, whether
34 | gratis or for a fee, you must give the recipients all the rights that
35 | you have. You must make sure that they, too, receive or can get the
36 | source code. And you must show them these terms so they know their
37 | rights.
38 |
39 | We protect your rights with two steps: (1) copyright the software, and
40 | (2) offer you this license which gives you legal permission to copy,
41 | distribute and/or modify the software.
42 |
43 | Also, for each author's protection and ours, we want to make certain
44 | that everyone understands that there is no warranty for this free
45 | software. If the software is modified by someone else and passed on, we
46 | want its recipients to know that what they have is not the original, so
47 | that any problems introduced by others will not reflect on the original
48 | authors' reputations.
49 |
50 | Finally, any free program is threatened constantly by software
51 | patents. We wish to avoid the danger that redistributors of a free
52 | program will individually obtain patent licenses, in effect making the
53 | program proprietary. To prevent this, we have made it clear that any
54 | patent must be licensed for everyone's free use or not licensed at all.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | GNU GENERAL PUBLIC LICENSE
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61 |
62 | 0. This License applies to any program or other work which contains
63 | a notice placed by the copyright holder saying it may be distributed
64 | under the terms of this General Public License. The "Program", below,
65 | refers to any such program or work, and a "work based on the Program"
66 | means either the Program or any derivative work under copyright law:
67 | that is to say, a work containing the Program or a portion of it,
68 | either verbatim or with modifications and/or translated into another
69 | language. (Hereinafter, translation is included without limitation in
70 | the term "modification".) Each licensee is addressed as "you".
71 |
72 | Activities other than copying, distribution and modification are not
73 | covered by this License; they are outside its scope. The act of
74 | running the Program is not restricted, and the output from the Program
75 | is covered only if its contents constitute a work based on the
76 | Program (independent of having been made by running the Program).
77 | Whether that is true depends on what the Program does.
78 |
79 | 1. You may copy and distribute verbatim copies of the Program's
80 | source code as you receive it, in any medium, provided that you
81 | conspicuously and appropriately publish on each copy an appropriate
82 | copyright notice and disclaimer of warranty; keep intact all the
83 | notices that refer to this License and to the absence of any warranty;
84 | and give any other recipients of the Program a copy of this License
85 | along with the Program.
86 |
87 | You may charge a fee for the physical act of transferring a copy, and
88 | you may at your option offer warranty protection in exchange for a fee.
89 |
90 | 2. You may modify your copy or copies of the Program or any portion
91 | of it, thus forming a work based on the Program, and copy and
92 | distribute such modifications or work under the terms of Section 1
93 | above, provided that you also meet all of these conditions:
94 |
95 | a) You must cause the modified files to carry prominent notices
96 | stating that you changed the files and the date of any change.
97 |
98 | b) You must cause any work that you distribute or publish, that in
99 | whole or in part contains or is derived from the Program or any
100 | part thereof, to be licensed as a whole at no charge to all third
101 | parties under the terms of this License.
102 |
103 | c) If the modified program normally reads commands interactively
104 | when run, you must cause it, when started running for such
105 | interactive use in the most ordinary way, to print or display an
106 | announcement including an appropriate copyright notice and a
107 | notice that there is no warranty (or else, saying that you provide
108 | a warranty) and that users may redistribute the program under
109 | these conditions, and telling the user how to view a copy of this
110 | License. (Exception: if the Program itself is interactive but
111 | does not normally print such an announcement, your work based on
112 | the Program is not required to print an announcement.)
113 |
114 | These requirements apply to the modified work as a whole. If
115 | identifiable sections of that work are not derived from the Program,
116 | and can be reasonably considered independent and separate works in
117 | themselves, then this License, and its terms, do not apply to those
118 | sections when you distribute them as separate works. But when you
119 | distribute the same sections as part of a whole which is a work based
120 | on the Program, the distribution of the whole must be on the terms of
121 | this License, whose permissions for other licensees extend to the
122 | entire whole, and thus to each and every part regardless of who wrote it.
123 |
124 | Thus, it is not the intent of this section to claim rights or contest
125 | your rights to work written entirely by you; rather, the intent is to
126 | exercise the right to control the distribution of derivative or
127 | collective works based on the Program.
128 |
129 | In addition, mere aggregation of another work not based on the Program
130 | with the Program (or with a work based on the Program) on a volume of
131 | a storage or distribution medium does not bring the other work under
132 | the scope of this License.
133 |
134 | 3. You may copy and distribute the Program (or a work based on it,
135 | under Section 2) in object code or executable form under the terms of
136 | Sections 1 and 2 above provided that you also do one of the following:
137 |
138 | a) Accompany it with the complete corresponding machine-readable
139 | source code, which must be distributed under the terms of Sections
140 | 1 and 2 above on a medium customarily used for software interchange; or,
141 |
142 | b) Accompany it with a written offer, valid for at least three
143 | years, to give any third party, for a charge no more than your
144 | cost of physically performing source distribution, a complete
145 | machine-readable copy of the corresponding source code, to be
146 | distributed under the terms of Sections 1 and 2 above on a medium
147 | customarily used for software interchange; or,
148 |
149 | c) Accompany it with the information you received as to the offer
150 | to distribute corresponding source code. (This alternative is
151 | allowed only for noncommercial distribution and only if you
152 | received the program in object code or executable form with such
153 | an offer, in accord with Subsection b above.)
154 |
155 | The source code for a work means the preferred form of the work for
156 | making modifications to it. For an executable work, complete source
157 | code means all the source code for all modules it contains, plus any
158 | associated interface definition files, plus the scripts used to
159 | control compilation and installation of the executable. However, as a
160 | special exception, the source code distributed need not include
161 | anything that is normally distributed (in either source or binary
162 | form) with the major components (compiler, kernel, and so on) of the
163 | operating system on which the executable runs, unless that component
164 | itself accompanies the executable.
165 |
166 | If distribution of executable or object code is made by offering
167 | access to copy from a designated place, then offering equivalent
168 | access to copy the source code from the same place counts as
169 | distribution of the source code, even though third parties are not
170 | compelled to copy the source along with the object code.
171 |
172 | 4. You may not copy, modify, sublicense, or distribute the Program
173 | except as expressly provided under this License. Any attempt
174 | otherwise to copy, modify, sublicense or distribute the Program is
175 | void, and will automatically terminate your rights under this License.
176 | However, parties who have received copies, or rights, from you under
177 | this License will not have their licenses terminated so long as such
178 | parties remain in full compliance.
179 |
180 | 5. You are not required to accept this License, since you have not
181 | signed it. However, nothing else grants you permission to modify or
182 | distribute the Program or its derivative works. These actions are
183 | prohibited by law if you do not accept this License. Therefore, by
184 | modifying or distributing the Program (or any work based on the
185 | Program), you indicate your acceptance of this License to do so, and
186 | all its terms and conditions for copying, distributing or modifying
187 | the Program or works based on it.
188 |
189 | 6. Each time you redistribute the Program (or any work based on the
190 | Program), the recipient automatically receives a license from the
191 | original licensor to copy, distribute or modify the Program subject to
192 | these terms and conditions. You may not impose any further
193 | restrictions on the recipients' exercise of the rights granted herein.
194 | You are not responsible for enforcing compliance by third parties to
195 | this License.
196 |
197 | 7. If, as a consequence of a court judgment or allegation of patent
198 | infringement or for any other reason (not limited to patent issues),
199 | conditions are imposed on you (whether by court order, agreement or
200 | otherwise) that contradict the conditions of this License, they do not
201 | excuse you from the conditions of this License. If you cannot
202 | distribute so as to satisfy simultaneously your obligations under this
203 | License and any other pertinent obligations, then as a consequence you
204 | may not distribute the Program at all. For example, if a patent
205 | license would not permit royalty-free redistribution of the Program by
206 | all those who receive copies directly or indirectly through you, then
207 | the only way you could satisfy both it and this License would be to
208 | refrain entirely from distribution of the Program.
209 |
210 | If any portion of this section is held invalid or unenforceable under
211 | any particular circumstance, the balance of the section is intended to
212 | apply and the section as a whole is intended to apply in other
213 | circumstances.
214 |
215 | It is not the purpose of this section to induce you to infringe any
216 | patents or other property right claims or to contest validity of any
217 | such claims; this section has the sole purpose of protecting the
218 | integrity of the free software distribution system, which is
219 | implemented by public license practices. Many people have made
220 | generous contributions to the wide range of software distributed
221 | through that system in reliance on consistent application of that
222 | system; it is up to the author/donor to decide if he or she is willing
223 | to distribute software through any other system and a licensee cannot
224 | impose that choice.
225 |
226 | This section is intended to make thoroughly clear what is believed to
227 | be a consequence of the rest of this License.
228 |
229 | 8. If the distribution and/or use of the Program is restricted in
230 | certain countries either by patents or by copyrighted interfaces, the
231 | original copyright holder who places the Program under this License
232 | may add an explicit geographical distribution limitation excluding
233 | those countries, so that distribution is permitted only in or among
234 | countries not thus excluded. In such case, this License incorporates
235 | the limitation as if written in the body of this License.
236 |
237 | 9. The Free Software Foundation may publish revised and/or new versions
238 | of the General Public License from time to time. Such new versions will
239 | be similar in spirit to the present version, but may differ in detail to
240 | address new problems or concerns.
241 |
242 | Each version is given a distinguishing version number. If the Program
243 | specifies a version number of this License which applies to it and "any
244 | later version", you have the option of following the terms and conditions
245 | either of that version or of any later version published by the Free
246 | Software Foundation. If the Program does not specify a version number of
247 | this License, you may choose any version ever published by the Free Software
248 | Foundation.
249 |
250 | 10. If you wish to incorporate parts of the Program into other free
251 | programs whose distribution conditions are different, write to the author
252 | to ask for permission. For software which is copyrighted by the Free
253 | Software Foundation, write to the Free Software Foundation; we sometimes
254 | make exceptions for this. Our decision will be guided by the two goals
255 | of preserving the free status of all derivatives of our free software and
256 | of promoting the sharing and reuse of software generally.
257 |
258 | NO WARRANTY
259 |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 | REPAIR OR CORRECTION.
269 |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 | POSSIBILITY OF SUCH DAMAGES.
279 |
280 | END OF TERMS AND CONDITIONS
281 |
282 | How to Apply These Terms to Your New Programs
283 |
284 | If you develop a new program, and you want it to be of the greatest
285 | possible use to the public, the best way to achieve this is to make it
286 | free software which everyone can redistribute and change under these terms.
287 |
288 | To do so, attach the following notices to the program. It is safest
289 | to attach them to the start of each source file to most effectively
290 | convey the exclusion of warranty; and each file should have at least
291 | the "copyright" line and a pointer to where the full notice is found.
292 |
293 | {description}
294 | Copyright (C) {year} {fullname}
295 |
296 | This program is free software; you can redistribute it and/or modify
297 | it under the terms of the GNU General Public License as published by
298 | the Free Software Foundation; either version 2 of the License, or
299 | (at your option) any later version.
300 |
301 | This program is distributed in the hope that it will be useful,
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 | GNU General Public License for more details.
305 |
306 | You should have received a copy of the GNU General Public License along
307 | with this program; if not, write to the Free Software Foundation, Inc.,
308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309 |
310 | Also add information on how to contact you by electronic and paper mail.
311 |
312 | If the program is interactive, make it output a short notice like this
313 | when it starts in an interactive mode:
314 |
315 | Gnomovision version 69, Copyright (C) year name of author
316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317 | This is free software, and you are welcome to redistribute it
318 | under certain conditions; type `show c' for details.
319 |
320 | The hypothetical commands `show w' and `show c' should show the appropriate
321 | parts of the General Public License. Of course, the commands you use may
322 | be called something other than `show w' and `show c'; they could even be
323 | mouse-clicks or menu items--whatever suits your program.
324 |
325 | You should also get your employer (if you work as a programmer) or your
326 | school, if any, to sign a "copyright disclaimer" for the program, if
327 | necessary. Here is a sample; alter the names:
328 |
329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330 | `Gnomovision' (which makes passes at compilers) written by James Hacker.
331 |
332 | {signature of Ty Coon}, 1 April 1989
333 | Ty Coon, President of Vice
334 |
335 | This General Public License does not permit incorporating your program into
336 | proprietary programs. If your program is a subroutine library, you may
337 | consider it more useful to permit linking proprietary applications with the
338 | library. If this is what you want to do, use the GNU Lesser General
339 | Public License instead of this License.
340 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Drupal CirceCI Behat Selenium
2 |
3 | kick-start example
4 |
5 | [](https://circleci.com/gh/leymannx/drupal-circleci-behat)
6 |
7 | ## [`tests/behat/behat.yml`](https://github.com/leymannx/drupal-circleci-behat/blob/develop/tests/behat/behat.yml):
8 |
9 | ```yaml
10 | default:
11 | suites:
12 | default:
13 | contexts:
14 | - FeatureContext
15 | - Drupal\DrupalExtension\Context\DrupalContext
16 | - Drupal\DrupalExtension\Context\MinkContext
17 | - Drupal\DrupalExtension\Context\MessageContext
18 | - Drupal\DrupalExtension\Context\DrushContext
19 | extensions:
20 | Behat\MinkExtension:
21 | base_url: http://drupal-circleci-behat.localhost
22 | goutte: ~
23 | selenium2:
24 | wd_host: http://drupal-circleci-behat.localhost:4444/wd/hub
25 | capabilities:
26 | marionette: true
27 | browser: chrome
28 | browser_name: chrome
29 | Drupal\DrupalExtension:
30 | blackbox: ~
31 | api_driver: drupal
32 | drupal:
33 | drupal_root: '%paths.base%/../../web'
34 | ```
35 |
36 | ## [`.circleci/config.yml`](https://github.com/leymannx/drupal-circleci-behat/blob/develop/.circleci/config.yml):
37 |
38 | ```yaml
39 | version: 2
40 | jobs:
41 | build:
42 | docker:
43 | - image: circleci/php:7.4-apache-node-browsers
44 | - image: circleci/mariadb:latest
45 | environment:
46 | - MYSQL_ROOT_HOST=%
47 | working_directory: ~/drupal-circleci-behat
48 | steps:
49 | - checkout
50 | - run:
51 | name: Setup Apache
52 | command: |
53 | sudo cp .circleci/env/drupal-circleci-behat.conf /etc/apache2/sites-available/drupal-circleci-behat.conf
54 | sudo a2ensite drupal-circleci-behat
55 | sudo service apache2 start
56 | echo 127.0.0.1 drupal-circleci-behat.localhost | sudo tee -a /etc/hosts
57 | - run:
58 | name: Setup tools
59 | command: |
60 | sudo apt-get -qq update && sudo apt-get -qqy upgrade
61 | sudo apt-get -yqq install libpng-dev libonig-dev mariadb-client nano xvfb
62 | sudo docker-php-ext-install gd mbstring mysqli pdo pdo_mysql
63 | sudo service apache2 restart
64 | - run:
65 | name: Start Xvfb
66 | command: |
67 | sudo Xvfb :7055
68 | export DISPLAY=:7055
69 | background: true
70 | - run:
71 | name: Download Selenium
72 | command: |
73 | curl -O http://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.5.jar
74 | - run:
75 | name: Start Selenium
76 | command: |
77 | mkdir -p /tmp/selenium
78 | java -jar selenium-server-standalone-3.141.5.jar -log /tmp/selenium/selenium.log
79 | background: true
80 | - restore_cache:
81 | keys:
82 | - v1-dependencies-{{ checksum "composer.lock" }}
83 | - run:
84 | name: Composer Install
85 | command: |
86 | composer install -n --prefer-dist
87 | echo 'export PATH=$HOME/drupal-circleci-behat/vendor/bin:$PATH' >> $BASH_ENV
88 | source /home/circleci/.bashrc
89 | - save_cache:
90 | paths:
91 | - ./vendor
92 | key: v1-dependencies-{{ checksum "composer.lock" }}
93 | - run:
94 | name: Setup Drupal
95 | command: |
96 | cp .circleci/env/.htaccess web/.htaccess
97 | cp .circleci/env/settings.local.php web/sites/default/settings.local.php
98 | cd web
99 | drush -y site:install --existing-config
100 | - run:
101 | name: Tests
102 | command: |
103 | mkdir -p tests/behat/test-results/junit
104 | cd tests/behat
105 | behat --no-snippets -f pretty -o std -f junit -o test-results/junit/junit.xml
106 | - store_test_results:
107 | path: tests/behat/test-results
108 | - store_artifacts:
109 | path: /tmp/selenium
110 | deploy:
111 | machine:
112 | enabled: true
113 | working_directory: ~/drupal-circleci-behat
114 | steps:
115 | - checkout
116 | - run:
117 | name: Fix ssh Could not resolve hostname
118 | command: |
119 | ssh-keyscan "${LIVE_IP}" >> ~/.ssh/known_hosts
120 | ssh-keyscan "${DEV_IP}" >> ~/.ssh/known_hosts
121 | - add_ssh_keys:
122 | fingerprints:
123 | - "14:09:a1:b2:b3:c4:d5:e6:f7:g8:h9:81:"
124 | - run:
125 | name: Deploy main
126 | command: if [ "${CIRCLE_BRANCH}" == "main" ]; then ssh -p "${LIVE_PORT}" "${LIVE_USER}"@"${LIVE_IP}" "cd /var/www/wordpress-circleci-behat/scripts/deployment && . deploy.sh ${CIRCLE_SHA1}"; else echo "Skipped"; fi
127 | - run:
128 | name: Deploy dev
129 | command: if [ "${CIRCLE_BRANCH}" == "develop" ]; then ssh -p "${DEV_PORT}" "${DEV_USER}"@"${DEV_IP}" "cd /var/www/wordpress-circleci-behat/scripts/deployment && . deploy.sh ${CIRCLE_SHA1}"; else echo "Skipped"; fi
130 | - run: echo "${CIRCLE_BRANCH}"; echo "${CIRCLE_SHA1}";
131 | workflows:
132 | version: 2
133 | build-and-deploy:
134 | jobs:
135 | - build
136 | - deploy:
137 | requires:
138 | - build
139 | ```
140 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "drupal-composer/drupal-project",
3 | "description": "Project template for Drupal 9 projects with Composer",
4 | "type": "project",
5 | "license": "GPL-2.0-or-later",
6 | "authors": [
7 | {
8 | "name": "",
9 | "role": ""
10 | }
11 | ],
12 | "repositories": [
13 | {
14 | "type": "composer",
15 | "url": "https://packages.drupal.org/8"
16 | }
17 | ],
18 | "require": {
19 | "php": ">=7.3",
20 | "composer/installers": "^1.9",
21 | "cweagans/composer-patches": "^1.7",
22 | "drupal/console": "^1.0.2",
23 | "drupal/core-composer-scaffold": "^9.1",
24 | "drupal/core-recommended": "^9.1",
25 | "drush/drush": "^10.3",
26 | "vlucas/phpdotenv": "^5.1",
27 | "webflo/drupal-finder": "^1.2"
28 | },
29 | "require-dev": {
30 | "drupal/core-dev": "^9.1",
31 | "zaporylie/composer-drupal-optimizations": "^1.2",
32 | "drupal/drupal-extension": "^4.1"
33 | },
34 | "conflict": {
35 | "drupal/drupal": "*"
36 | },
37 | "minimum-stability": "dev",
38 | "prefer-stable": true,
39 | "config": {
40 | "discard-changes": true,
41 | "sort-packages": true
42 | },
43 | "autoload": {
44 | "classmap": [
45 | "scripts/composer/ScriptHandler.php"
46 | ],
47 | "files": ["load.environment.php"]
48 | },
49 | "scripts": {
50 | "pre-install-cmd": [
51 | "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
52 | ],
53 | "pre-update-cmd": [
54 | "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
55 | ],
56 | "post-install-cmd": [
57 | "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
58 | ],
59 | "post-update-cmd": [
60 | "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
61 | ]
62 | },
63 | "extra": {
64 | "drupal-scaffold": {
65 | "locations": {
66 | "web-root": "web/"
67 | },
68 | "file-mapping": {
69 | "[web-root]/.htaccess": false,
70 | "[web-root]/sites/development.services.yml": false
71 | }
72 | },
73 | "installer-paths": {
74 | "web/core": ["type:drupal-core"],
75 | "web/libraries/{$name}": ["type:drupal-library"],
76 | "web/modules/contrib/{$name}": ["type:drupal-module"],
77 | "web/profiles/contrib/{$name}": ["type:drupal-profile"],
78 | "web/themes/contrib/{$name}": ["type:drupal-theme"],
79 | "drush/Commands/contrib/{$name}": ["type:drupal-drush"]
80 | },
81 | "composer-exit-on-patch-failure": true,
82 | "patchLevel": {
83 | "drupal/core": "-p2"
84 | },
85 | "patches": {}
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/config/sync/default/shared/.htaccess:
--------------------------------------------------------------------------------
1 | # Deny all requests from Apache 2.4+.
2 |
3 | Require all denied
4 |
5 |
6 | # Deny all requests from Apache 2.0-2.2.
7 |
8 | Deny from all
9 |
10 |
11 | # Turn off all options we don't need.
12 | Options -Indexes -ExecCGI -Includes -MultiViews
13 |
14 | # Set the catch-all handler to prevent scripts from being executed.
15 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
16 |
17 | # Override the handler again if we're run later in the evaluation list.
18 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
19 |
20 |
21 | # If we know how to do it safely, disable the PHP engine entirely.
22 |
23 | php_flag engine off
24 |
--------------------------------------------------------------------------------
/config/sync/default/shared/README.txt:
--------------------------------------------------------------------------------
1 | This directory contains configuration to be imported into your Drupal site. To make this configuration active, visit admin/config/development/configuration/sync. For information about deploying configuration between servers, see https://www.drupal.org/documentation/administer/config
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_admin.yml:
--------------------------------------------------------------------------------
1 | uuid: ed3a08ac-0984-4133-ac2f-007913ee5e93
2 | langcode: en
3 | status: true
4 | dependencies:
5 | config:
6 | - system.menu.admin
7 | module:
8 | - system
9 | theme:
10 | - stark
11 | _core:
12 | default_config_hash: OFEDxrButmQ8Vac1kiVr1gtw6vYKuSJPr9cJQZVKCKg
13 | id: stark_admin
14 | theme: stark
15 | region: sidebar_first
16 | weight: 1
17 | provider: null
18 | plugin: 'system_menu_block:admin'
19 | settings:
20 | id: 'system_menu_block:admin'
21 | label: Administration
22 | provider: system
23 | label_display: visible
24 | level: 1
25 | depth: 0
26 | expand_all_items: false
27 | visibility: { }
28 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_branding.yml:
--------------------------------------------------------------------------------
1 | uuid: 4995b836-e64c-46e9-b2a5-497b404643aa
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - system
7 | theme:
8 | - stark
9 | _core:
10 | default_config_hash: fRKXNB91UxDvEMkzCR8ZBsawfC6Fqbme2gtobei3gu4
11 | id: stark_branding
12 | theme: stark
13 | region: header
14 | weight: 0
15 | provider: null
16 | plugin: system_branding_block
17 | settings:
18 | id: system_branding_block
19 | label: 'Site branding'
20 | provider: system
21 | label_display: '0'
22 | use_site_logo: true
23 | use_site_name: true
24 | use_site_slogan: true
25 | visibility: { }
26 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_local_actions.yml:
--------------------------------------------------------------------------------
1 | uuid: 09b13c6a-df74-4285-892c-aadc7da9b790
2 | langcode: en
3 | status: true
4 | dependencies:
5 | theme:
6 | - stark
7 | _core:
8 | default_config_hash: PffmQ-ABSz5tFjWmVsR7NesunDnEivvopnJnBjl8KNE
9 | id: stark_local_actions
10 | theme: stark
11 | region: content
12 | weight: -10
13 | provider: null
14 | plugin: local_actions_block
15 | settings:
16 | id: local_actions_block
17 | label: 'Primary admin actions'
18 | provider: core
19 | label_display: '0'
20 | visibility: { }
21 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_local_tasks.yml:
--------------------------------------------------------------------------------
1 | uuid: 85640d6e-4c5f-47b2-92af-168aa8e09b68
2 | langcode: en
3 | status: true
4 | dependencies:
5 | theme:
6 | - stark
7 | _core:
8 | default_config_hash: c-06bbElRY5sKmglk74ppgTW93Et4-EJFyNiUZMb8JY
9 | id: stark_local_tasks
10 | theme: stark
11 | region: content
12 | weight: -20
13 | provider: null
14 | plugin: local_tasks_block
15 | settings:
16 | id: local_tasks_block
17 | label: Tabs
18 | provider: core
19 | label_display: '0'
20 | primary: true
21 | secondary: true
22 | visibility: { }
23 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_messages.yml:
--------------------------------------------------------------------------------
1 | uuid: d982d64d-e72e-435c-94d4-54ddbbb06f43
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - system
7 | theme:
8 | - stark
9 | _core:
10 | default_config_hash: 5MNdk3fpMKx_xxBTcz2T11DL4XEU1H5SgHl8BsYdFsA
11 | id: stark_messages
12 | theme: stark
13 | region: highlighted
14 | weight: 0
15 | provider: null
16 | plugin: system_messages_block
17 | settings:
18 | id: system_messages_block
19 | label: 'Status messages'
20 | provider: system
21 | label_display: '0'
22 | visibility: { }
23 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_page_title.yml:
--------------------------------------------------------------------------------
1 | uuid: 7e98acd8-b97c-49bd-a77b-e8c755b0b04e
2 | langcode: en
3 | status: true
4 | dependencies:
5 | theme:
6 | - stark
7 | _core:
8 | default_config_hash: 8yptDf6WrXxeyevUz4nP5vfr7BtxQqCBMninhV2IJ1g
9 | id: stark_page_title
10 | theme: stark
11 | region: content
12 | weight: -30
13 | provider: null
14 | plugin: page_title_block
15 | settings:
16 | id: page_title_block
17 | label: 'Page title'
18 | provider: core
19 | label_display: '0'
20 | visibility: { }
21 |
--------------------------------------------------------------------------------
/config/sync/default/shared/block.block.stark_tools.yml:
--------------------------------------------------------------------------------
1 | uuid: 0b60ecd5-cda2-4f47-aa8f-4c7d765ae920
2 | langcode: en
3 | status: true
4 | dependencies:
5 | config:
6 | - system.menu.tools
7 | module:
8 | - system
9 | theme:
10 | - stark
11 | _core:
12 | default_config_hash: uUF2GYN2x5fcmOu26M-gwqUA-yVWMDD_MRmnYfmPzlM
13 | id: stark_tools
14 | theme: stark
15 | region: sidebar_first
16 | weight: 0
17 | provider: null
18 | plugin: 'system_menu_block:tools'
19 | settings:
20 | id: 'system_menu_block:tools'
21 | label: Tools
22 | provider: system
23 | label_display: visible
24 | level: 1
25 | depth: 0
26 | expand_all_items: false
27 | visibility: { }
28 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.fallback.yml:
--------------------------------------------------------------------------------
1 | uuid: 6bc81114-db41-4a25-a3f4-bebc04fb6569
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: 7klS5IWXrwzVaPpYZFAs6wcx8U2FF1X73OfrtTsvuvE
7 | id: fallback
8 | label: 'Fallback date format'
9 | locked: true
10 | pattern: 'D, m/d/Y - H:i'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_date.yml:
--------------------------------------------------------------------------------
1 | uuid: fa2a0a18-eab8-4463-a43b-9cae14e4c5af
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: EOQltUQPmgc6UQ2rcJ4Xi_leCEJj5ui0TR-12duS-Tk
7 | id: html_date
8 | label: 'HTML Date'
9 | locked: true
10 | pattern: Y-m-d
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_datetime.yml:
--------------------------------------------------------------------------------
1 | uuid: 0dddaa2d-c472-4f48-a14f-69fdfee95f49
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: jxfClwZIRXIdcvMrE--WkcZxDGUVoOIE3Sm2NRZlFuE
7 | id: html_datetime
8 | label: 'HTML Datetime'
9 | locked: true
10 | pattern: 'Y-m-d\TH:i:sO'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_month.yml:
--------------------------------------------------------------------------------
1 | uuid: 457ccdcb-6b3d-489d-a869-101d05cb63ff
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: Z7KuCUwM_WdTNvLcoltuX3_8d-s-8FZkTN6KgNwF0eM
7 | id: html_month
8 | label: 'HTML Month'
9 | locked: true
10 | pattern: Y-m
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_time.yml:
--------------------------------------------------------------------------------
1 | uuid: 5ea17e1a-b8eb-40bf-b96c-3607dc4628b6
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: M7yqicYkU36hRy5p9drAaGBBihhUD1OyujFrAaQ93ZE
7 | id: html_time
8 | label: 'HTML Time'
9 | locked: true
10 | pattern: 'H:i:s'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_week.yml:
--------------------------------------------------------------------------------
1 | uuid: f500cdf7-3584-405d-84eb-227d9a8c02df
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: wKD4WsoV_wFgv2vgI4mcAAFSIzrye17ykzdwrnApkfY
7 | id: html_week
8 | label: 'HTML Week'
9 | locked: true
10 | pattern: Y-\WW
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_year.yml:
--------------------------------------------------------------------------------
1 | uuid: 4adc9248-420a-4743-8749-ef7580d4e260
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: OjekiQuX9RbVQ2_8jOHBL94RgYLePqX7wpfNGgcQzrk
7 | id: html_year
8 | label: 'HTML Year'
9 | locked: true
10 | pattern: 'Y'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.html_yearless_date.yml:
--------------------------------------------------------------------------------
1 | uuid: 6d63ee67-3be8-48bc-bb9b-d53652e47d88
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: 5VpawMrKPEPCkoO4YpPa0TDFO2dgiIHfTziJtwlmUxc
7 | id: html_yearless_date
8 | label: 'HTML Yearless date'
9 | locked: true
10 | pattern: m-d
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.long.yml:
--------------------------------------------------------------------------------
1 | uuid: 32897686-0b6d-42b7-8d1c-561a96a3588b
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: og8sWXhBuHbLMw3CoiBEZjgqSyhFBFmcbUW_wLcfNbo
7 | id: long
8 | label: 'Default long date'
9 | locked: false
10 | pattern: 'l, F j, Y - H:i'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.medium.yml:
--------------------------------------------------------------------------------
1 | uuid: 3ddad442-b9ca-4026-b341-5690ae787a19
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: nzL5d024NjXIX_8TlT6uFAu973lmfkmHklJC-2i9rAE
7 | id: medium
8 | label: 'Default medium date'
9 | locked: false
10 | pattern: 'D, m/d/Y - H:i'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.date_format.short.yml:
--------------------------------------------------------------------------------
1 | uuid: 43a355e5-d5df-45fe-98ab-eecf1ab19765
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: AlzeyytA8InBgxIG9H2UDJYs3CG98Zj6yRsDKmlbZwA
7 | id: short
8 | label: 'Default short date'
9 | locked: false
10 | pattern: 'm/d/Y - H:i'
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_form_mode.user.register.yml:
--------------------------------------------------------------------------------
1 | uuid: d0122e75-1bb4-43fc-9e7d-26e8e06f3a0e
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: flXhTcp55yLcyy7ZLOhPGKGZobZQJdkAFVWV3LseiuI
9 | id: user.register
10 | label: Register
11 | targetEntityType: user
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.node.full.yml:
--------------------------------------------------------------------------------
1 | uuid: 8a35e840-5c27-487b-8299-240fc3a66de6
2 | langcode: en
3 | status: false
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: ElrtInxGjZd7GaapJ5O9n-ugi2hG2IxFivtgn0tHOsk
9 | id: node.full
10 | label: 'Full content'
11 | targetEntityType: node
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.node.rss.yml:
--------------------------------------------------------------------------------
1 | uuid: d906b9fb-cb2c-42d1-a713-ecde3bc0ac75
2 | langcode: en
3 | status: false
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: vlYzr-rp2f9NMp-Qlr4sFjlqRq-90mco5-afLNGwCrU
9 | id: node.rss
10 | label: RSS
11 | targetEntityType: node
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.node.search_index.yml:
--------------------------------------------------------------------------------
1 | uuid: 5414b0f4-4360-4436-932f-5142d7de1f40
2 | langcode: en
3 | status: false
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: fVFfJv_GzBRE-wpRHbfD5a3VjnhbEOXG6lvRd3uaccY
9 | id: node.search_index
10 | label: 'Search index'
11 | targetEntityType: node
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.node.search_result.yml:
--------------------------------------------------------------------------------
1 | uuid: dd19dffc-bbf7-40cf-99cd-6c3b8d764150
2 | langcode: en
3 | status: false
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: 6GCOQ-jP2RbdbHA5YWQ6bT8CfGbqrBYKOSC_XY4E3ZM
9 | id: node.search_result
10 | label: 'Search result highlighting input'
11 | targetEntityType: node
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.node.teaser.yml:
--------------------------------------------------------------------------------
1 | uuid: 6c4276b2-d01f-4ebf-8109-d5346dba0c55
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
9 | id: node.teaser
10 | label: Teaser
11 | targetEntityType: node
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.user.compact.yml:
--------------------------------------------------------------------------------
1 | uuid: ab7c40e7-1017-4e08-99a6-59d455afce38
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: 71CSAr_LNPcgu6D6jI4INl1KATkahmeyUFBETAWya8g
9 | id: user.compact
10 | label: Compact
11 | targetEntityType: user
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.entity_view_mode.user.full.yml:
--------------------------------------------------------------------------------
1 | uuid: 5fd6477d-dfcf-4e00-8ddc-19899c1af090
2 | langcode: en
3 | status: false
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: mQIF_foYjmnVSr9MpcD4CTaJE_FpO1AyDd_DskztGhM
9 | id: user.full
10 | label: 'User account'
11 | targetEntityType: user
12 | cache: true
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.extension.yml:
--------------------------------------------------------------------------------
1 | module:
2 | block: 0
3 | breakpoint: 0
4 | dblog: 0
5 | dynamic_page_cache: 0
6 | field: 0
7 | file: 0
8 | filter: 0
9 | node: 0
10 | page_cache: 0
11 | path_alias: 0
12 | system: 0
13 | text: 0
14 | toolbar: 0
15 | update: 0
16 | user: 0
17 | minimal: 1000
18 | theme:
19 | stark: 0
20 | profile: minimal
21 | _core:
22 | default_config_hash: R4IF-ClDHXxblLcG0L7MgsLvfBIMAvi_skumNFQwkDc
23 |
--------------------------------------------------------------------------------
/config/sync/default/shared/core.menu.static_menu_link_overrides.yml:
--------------------------------------------------------------------------------
1 | definitions: { }
2 | _core:
3 | default_config_hash: jdY7AU0tU-QsjmiOw3W8vwpYMb-By--_MSFgbqKUTYM
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/dblog.settings.yml:
--------------------------------------------------------------------------------
1 | row_limit: 1000
2 | _core:
3 | default_config_hash: e883aGsrt1wFrsydlYU584PZONCSfRy0DtkZ9KzHb58
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/field.settings.yml:
--------------------------------------------------------------------------------
1 | purge_batch_size: 50
2 | _core:
3 | default_config_hash: nJk0TAQBzlNo52ehiHI7bIEPLGi0BYqZvPdEn7Chfu0
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/field.storage.node.body.yml:
--------------------------------------------------------------------------------
1 | uuid: ff2c590e-65a8-483b-b320-f004c7369853
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | - text
8 | _core:
9 | default_config_hash: EBUo7qOWqaiZaQ_RC9sLY5IoDKphS34v77VIHSACmVY
10 | id: node.body
11 | field_name: body
12 | entity_type: node
13 | type: text_with_summary
14 | settings: { }
15 | module: text
16 | locked: false
17 | cardinality: 1
18 | translatable: true
19 | indexes: { }
20 | persist_with_no_fields: true
21 | custom_storage: false
22 |
--------------------------------------------------------------------------------
/config/sync/default/shared/file.settings.yml:
--------------------------------------------------------------------------------
1 | description:
2 | type: textfield
3 | length: 128
4 | icon:
5 | directory: core/modules/file/icons
6 | make_unused_managed_files_temporary: false
7 | _core:
8 | default_config_hash: 0aMkoXYnax5_tHI9C9zHs-K48KJ6K75PHtD9x-0nbgM
9 |
--------------------------------------------------------------------------------
/config/sync/default/shared/filter.format.plain_text.yml:
--------------------------------------------------------------------------------
1 | uuid: 1da7f53f-4adb-4c1e-b848-e51ab97616b9
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: NIKBt6kw_uPhNI0qtR2DnRf7mSOgAQdx7Q94SKMjXbQ
7 | name: 'Plain text'
8 | format: plain_text
9 | weight: 10
10 | filters:
11 | filter_html_escape:
12 | id: filter_html_escape
13 | provider: filter
14 | status: true
15 | weight: -10
16 | settings: { }
17 | filter_url:
18 | id: filter_url
19 | provider: filter
20 | status: true
21 | weight: 0
22 | settings:
23 | filter_url_length: 72
24 | filter_autop:
25 | id: filter_autop
26 | provider: filter
27 | status: true
28 | weight: 0
29 | settings: { }
30 |
--------------------------------------------------------------------------------
/config/sync/default/shared/filter.settings.yml:
--------------------------------------------------------------------------------
1 | fallback_format: plain_text
2 | always_show_fallback_choice: false
3 | _core:
4 | default_config_hash: FiPjM3WdB__ruFA7B6TLwni_UcZbmek5G4b2dxQItxA
5 |
--------------------------------------------------------------------------------
/config/sync/default/shared/node.settings.yml:
--------------------------------------------------------------------------------
1 | use_admin_theme: false
2 | _core:
3 | default_config_hash: 2OMXCScXUOLSYID9-phjO4q36nnnaMWNUlDxEqZzG1U
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_delete_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 64b4e911-c6eb-4d5f-a7d8-69d7fbb7a385
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: t43OqwzP3CTbcAagSsWKNy6KwMm_zShXo3c4-So6rQg
9 | id: node_delete_action
10 | label: 'Delete content'
11 | type: node
12 | plugin: 'entity:delete_action:node'
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_make_sticky_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 2a8901c4-a054-4c94-881a-f94a4464dd90
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: sOb26JSy3fGpWkvR0WYN6_hMqj_6d1rvbvrkzp1yya0
9 | id: node_make_sticky_action
10 | label: 'Make content sticky'
11 | type: node
12 | plugin: node_make_sticky_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_make_unsticky_action.yml:
--------------------------------------------------------------------------------
1 | uuid: f8b319f8-b523-4c9c-a0f4-c6820e7c1385
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: lDM9mvIGAu8Sw8rt-uCO4Sr7yX5VPrDPxYcawkbKd6k
9 | id: node_make_unsticky_action
10 | label: 'Make content unsticky'
11 | type: node
12 | plugin: node_make_unsticky_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_promote_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 70e6fb40-cd5a-4dde-9e35-c065adec2566
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: N0RDBTqiK4dKoN4p4oW2j0SGWycdHyALUe9M-Ofp89U
9 | id: node_promote_action
10 | label: 'Promote content to front page'
11 | type: node
12 | plugin: node_promote_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_publish_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 6a22333c-f2d2-4c3a-b670-35ed11d98da4
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: 2B9uF8NL5gutNKSdPRAhhAsDWFZZG1PJOBmx0aBGd_0
9 | id: node_publish_action
10 | label: 'Publish content'
11 | type: node
12 | plugin: 'entity:publish_action:node'
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_save_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 5fd9062b-4156-4c1b-a283-a49b6662a5ea
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: LhdsoZPL_pFas2fjaAWue4zvrQ_tEVofLYtcNec-JGM
9 | id: node_save_action
10 | label: 'Save content'
11 | type: node
12 | plugin: 'entity:save_action:node'
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_unpromote_action.yml:
--------------------------------------------------------------------------------
1 | uuid: d02c6d62-7e41-44be-b109-cee5ac4ce4f0
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: JBptjnfuOMtsdKygklXxoOgeOCTMtQxlkymjnnj-cC0
9 | id: node_unpromote_action
10 | label: 'Remove content from front page'
11 | type: node
12 | plugin: node_unpromote_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.node_unpublish_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 889ef2b1-91ba-48db-a13a-a778dcb6ccf0
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - node
7 | _core:
8 | default_config_hash: C7X8h9FWlwkQ9y5mnU2JzgaZICAdc6HFbPVbhvjlAYE
9 | id: node_unpublish_action
10 | label: 'Unpublish content'
11 | type: node
12 | plugin: 'entity:unpublish_action:node'
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.user_block_user_action.yml:
--------------------------------------------------------------------------------
1 | uuid: d1ad5a2d-57f2-401e-b773-4bc14e342eb1
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: DyypzTfThX10FFQw-399qPfEbLLyrhXgQrKPVsmAoJ4
9 | id: user_block_user_action
10 | label: 'Block the selected user(s)'
11 | type: user
12 | plugin: user_block_user_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.user_cancel_user_action.yml:
--------------------------------------------------------------------------------
1 | uuid: eb596bbb-23b9-4ccc-a9ae-65dee00ca2a5
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: nvrL9bFilzBvm2bjO9rQnFDpBA7dBBUjShSSt6NS-DU
9 | id: user_cancel_user_action
10 | label: 'Cancel the selected user account(s)'
11 | type: user
12 | plugin: user_cancel_user_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.action.user_unblock_user_action.yml:
--------------------------------------------------------------------------------
1 | uuid: 7eb49d90-9316-404e-9a71-0e3d8ca5eb5c
2 | langcode: en
3 | status: true
4 | dependencies:
5 | module:
6 | - user
7 | _core:
8 | default_config_hash: SPsUXsR3Rc8d1y3gewzaAKWa1ncea_ywXX3f7LTn7k0
9 | id: user_unblock_user_action
10 | label: 'Unblock the selected user(s)'
11 | type: user
12 | plugin: user_unblock_user_action
13 | configuration: { }
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.advisories.yml:
--------------------------------------------------------------------------------
1 | interval_hours: 6
2 | enabled: true
3 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.authorize.yml:
--------------------------------------------------------------------------------
1 | filetransfer_default: null
2 | _core:
3 | default_config_hash: z63ds8M4zPrylEgFRkRcOlfcsXWwfITzjD4cj1kRdfg
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.cron.yml:
--------------------------------------------------------------------------------
1 | threshold:
2 | requirements_warning: 172800
3 | requirements_error: 1209600
4 | logging: 1
5 | _core:
6 | default_config_hash: 5Pw921y1EPfFN98wykliBBLArm51pC-SmrXeYCe7d0Y
7 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.date.yml:
--------------------------------------------------------------------------------
1 | country:
2 | default: ''
3 | first_day: 0
4 | timezone:
5 | default: UTC
6 | user:
7 | configurable: true
8 | warn: false
9 | default: 0
10 | _core:
11 | default_config_hash: V9UurX2GPT05NWKG9f2GWQqFG2TRG8vczidwjpy7Woo
12 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.diff.yml:
--------------------------------------------------------------------------------
1 | context:
2 | lines_leading: 2
3 | lines_trailing: 2
4 | _core:
5 | default_config_hash: 1WanmaEhxW_vM8_5Ktsdntj8MaO9UBHXg0lN603PsWM
6 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.file.yml:
--------------------------------------------------------------------------------
1 | allow_insecure_uploads: false
2 | default_scheme: public
3 | temporary_maximum_age: 21600
4 | _core:
5 | default_config_hash: mguGHCYb9Dw5EcpfjwoShGV1Vjkbz3QuPRCLfxiye-g
6 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.image.gd.yml:
--------------------------------------------------------------------------------
1 | jpeg_quality: 75
2 | _core:
3 | default_config_hash: eNXaHfkJJUThHeF0nvkoXyPLRrKYGxgHRjORvT4F5rQ
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.image.yml:
--------------------------------------------------------------------------------
1 | toolkit: gd
2 | _core:
3 | default_config_hash: durWHaKeBaq4d9Wpi4RqwADj1OufDepcnJuhVLmKN24
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.logging.yml:
--------------------------------------------------------------------------------
1 | error_level: hide
2 | _core:
3 | default_config_hash: u3-njszl92FaxjrCMiq0yDcjAfcdx72w1zT1O9dx6aA
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.mail.yml:
--------------------------------------------------------------------------------
1 | interface:
2 | default: php_mail
3 | _core:
4 | default_config_hash: rYgt7uhPafP2ngaN_ZUPFuyI4KdE0zU868zLNSlzKoE
5 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.maintenance.yml:
--------------------------------------------------------------------------------
1 | message: '@site is currently under maintenance. We should be back shortly. Thank you for your patience.'
2 | langcode: en
3 | _core:
4 | default_config_hash: Z5MXifrF77GEAgx0GQ6iWT8wStjFuY8BD9OruofWTJ8
5 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.menu.account.yml:
--------------------------------------------------------------------------------
1 | uuid: b3db9b3a-9ad1-4216-895b-03332ae2a40d
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: M_Bh81osDyUQ4wV0GgU_NdBNqkzM87sLxjaCdFj9mnw
7 | id: account
8 | label: 'User account menu'
9 | description: 'Links related to the active user account'
10 | locked: true
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.menu.admin.yml:
--------------------------------------------------------------------------------
1 | uuid: f7bd4ae0-d0a7-4dd5-8524-a5371d2faf8b
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: sapEi2YDGoI9yQIT_WgIV2vUdQ6DScH0V3fAyTadAL0
7 | id: admin
8 | label: Administration
9 | description: 'Administrative task links'
10 | locked: true
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.menu.footer.yml:
--------------------------------------------------------------------------------
1 | uuid: d0a55f6f-534e-4d16-8912-e05ca85bdf91
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: 7yrlW5z9zdg2eBucB2GPqXKSMQfH9lSRSO4DbWF7AFc
7 | id: footer
8 | label: Footer
9 | description: 'Site information links'
10 | locked: true
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.menu.main.yml:
--------------------------------------------------------------------------------
1 | uuid: 2eea81b7-90a1-47d2-af33-01a4e3742ea7
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: Q2Ra3jfoIVk0f3SjxJX61byRQFVBAbpzYDQOiY-kno8
7 | id: main
8 | label: 'Main navigation'
9 | description: 'Site section links'
10 | locked: true
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.menu.tools.yml:
--------------------------------------------------------------------------------
1 | uuid: aa869279-b867-441a-bbd3-1552ab6e9a10
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: BCM-vV1zzRaLHN18dqAR_CuGOj8AFJvTx7BKl_8Gcxc
7 | id: tools
8 | label: Tools
9 | description: 'User tool links, often added by modules'
10 | locked: true
11 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.performance.yml:
--------------------------------------------------------------------------------
1 | cache:
2 | page:
3 | max_age: 0
4 | css:
5 | preprocess: true
6 | gzip: true
7 | fast_404:
8 | enabled: true
9 | paths: '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'
10 | exclude_paths: '/\/(?:styles|imagecache)\//'
11 | html: '404 Not FoundNot Found
The requested URL "@path" was not found on this server.
'
12 | js:
13 | preprocess: true
14 | gzip: true
15 | stale_file_threshold: 2592000
16 | _core:
17 | default_config_hash: b2cssrj-lOmATIbdehfCqfCFgVR0qCdxxWhwqa2KBVQ
18 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.rss.yml:
--------------------------------------------------------------------------------
1 | items:
2 | view_mode: rss
3 | _core:
4 | default_config_hash: TlH7NNk46phfxu1mSUfwg1C0YqaGsUCeD4l9JQnQlDU
5 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.site.yml:
--------------------------------------------------------------------------------
1 | uuid: 3965c918-83e3-45b0-b105-d2b789d206ed
2 | name: 'Hello World'
3 | mail: info@drupal-circleci-behat.localhost
4 | slogan: ''
5 | page:
6 | 403: ''
7 | 404: ''
8 | front: /user/login
9 | admin_compact_mode: false
10 | weight_select_max: 100
11 | langcode: en
12 | default_langcode: en
13 | _core:
14 | default_config_hash: yXadRE77Va-G6dxhd2kPYapAvbnSvTF6hO4oXiOEynI
15 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.theme.global.yml:
--------------------------------------------------------------------------------
1 | favicon:
2 | mimetype: image/vnd.microsoft.icon
3 | path: ''
4 | url: ''
5 | use_default: true
6 | features:
7 | comment_user_picture: true
8 | comment_user_verification: true
9 | favicon: true
10 | node_user_picture: false
11 | logo:
12 | path: ''
13 | url: ''
14 | use_default: true
15 | _core:
16 | default_config_hash: KHk8rzK2GMRtdfoAeocFrll8Q7gGtiocl2GF5jnX9cY
17 |
--------------------------------------------------------------------------------
/config/sync/default/shared/system.theme.yml:
--------------------------------------------------------------------------------
1 | admin: ''
2 | default: stark
3 | _core:
4 | default_config_hash: 6lQ55NXM9ysybMQ6NzJj4dtiQ1dAkOYxdDompa-r_kk
5 |
--------------------------------------------------------------------------------
/config/sync/default/shared/text.settings.yml:
--------------------------------------------------------------------------------
1 | default_summary_length: 600
2 | _core:
3 | default_config_hash: Bkewb77RBOK3_aXMPsp8p87gbc03NvmC5gBLzPl7hVA
4 |
--------------------------------------------------------------------------------
/config/sync/default/shared/update.settings.yml:
--------------------------------------------------------------------------------
1 | check:
2 | disabled_extensions: false
3 | interval_days: 1
4 | fetch:
5 | url: ''
6 | max_attempts: 2
7 | timeout: 30
8 | notification:
9 | emails:
10 | - admin@example.com
11 | threshold: all
12 | _core:
13 | default_config_hash: 2QzULf0zovJQx3J06Y9rufzzfi-CY2CTTlEfJJh2Qyw
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/user.flood.yml:
--------------------------------------------------------------------------------
1 | uid_only: false
2 | ip_limit: 50
3 | ip_window: 3600
4 | user_limit: 5
5 | user_window: 21600
6 | _core:
7 | default_config_hash: UYfMzeP1S8jKm9PSvxf7nQNe8DsNS-3bc2WSNNXBQWs
8 |
--------------------------------------------------------------------------------
/config/sync/default/shared/user.mail.yml:
--------------------------------------------------------------------------------
1 | cancel_confirm:
2 | body: |-
3 | [user:display-name],
4 |
5 | A request to cancel your account has been made at [site:name].
6 |
7 | You may now cancel your account on [site:url-brief] by clicking this link or copying and pasting it into your browser:
8 |
9 | [user:cancel-url]
10 |
11 | NOTE: The cancellation of your account is not reversible.
12 |
13 | This link expires in one day and nothing will happen if it is not used.
14 |
15 | -- [site:name] team
16 | subject: 'Account cancellation request for [user:display-name] at [site:name]'
17 | password_reset:
18 | body: |-
19 | [user:display-name],
20 |
21 | A request to reset the password for your account has been made at [site:name].
22 |
23 | You may now log in by clicking this link or copying and pasting it into your browser:
24 |
25 | [user:one-time-login-url]
26 |
27 | This link can only be used once to log in and will lead you to a page where you can set your password. It expires after one day and nothing will happen if it's not used.
28 |
29 | -- [site:name] team
30 | subject: 'Replacement login information for [user:display-name] at [site:name]'
31 | register_admin_created:
32 | body: |-
33 | [user:display-name],
34 |
35 | A site administrator at [site:name] has created an account for you. You may now log in by clicking this link or copying and pasting it into your browser:
36 |
37 | [user:one-time-login-url]
38 |
39 | This link can only be used once to log in and will lead you to a page where you can set your password.
40 |
41 | After setting your password, you will be able to log in at [site:login-url] in the future using:
42 |
43 | username: [user:name]
44 | password: Your password
45 |
46 | -- [site:name] team
47 | subject: 'An administrator created an account for you at [site:name]'
48 | register_no_approval_required:
49 | body: |-
50 | [user:display-name],
51 |
52 | Thank you for registering at [site:name]. You may now log in by clicking this link or copying and pasting it into your browser:
53 |
54 | [user:one-time-login-url]
55 |
56 | This link can only be used once to log in and will lead you to a page where you can set your password.
57 |
58 | After setting your password, you will be able to log in at [site:login-url] in the future using:
59 |
60 | username: [user:name]
61 | password: Your password
62 |
63 | -- [site:name] team
64 | subject: 'Account details for [user:display-name] at [site:name]'
65 | register_pending_approval:
66 | body: |-
67 | [user:display-name],
68 |
69 | Thank you for registering at [site:name]. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details.
70 |
71 | -- [site:name] team
72 | subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)'
73 | register_pending_approval_admin:
74 | body: |-
75 | [user:display-name] has applied for an account.
76 |
77 | [user:edit-url]
78 | subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)'
79 | status_activated:
80 | body: |-
81 | [user:display-name],
82 |
83 | Your account at [site:name] has been activated.
84 |
85 | You may now log in by clicking this link or copying and pasting it into your browser:
86 |
87 | [user:one-time-login-url]
88 |
89 | This link can only be used once to log in and will lead you to a page where you can set your password.
90 |
91 | After setting your password, you will be able to log in at [site:login-url] in the future using:
92 |
93 | username: [user:account-name]
94 | password: Your password
95 |
96 | -- [site:name] team
97 | subject: 'Account details for [user:display-name] at [site:name] (approved)'
98 | status_blocked:
99 | body: |-
100 | [user:display-name],
101 |
102 | Your account on [site:name] has been blocked.
103 |
104 | -- [site:name] team
105 | subject: 'Account details for [user:display-name] at [site:name] (blocked)'
106 | status_canceled:
107 | body: |-
108 | [user:display-name],
109 |
110 | Your account on [site:name] has been canceled.
111 |
112 | -- [site:name] team
113 | subject: 'Account details for [user:display-name] at [site:name] (canceled)'
114 | langcode: en
115 | _core:
116 | default_config_hash: IWzNdUVX2YSiflxrGSTLIiqTrhgIzbV2C-hRL5DniJM
117 |
--------------------------------------------------------------------------------
/config/sync/default/shared/user.role.anonymous.yml:
--------------------------------------------------------------------------------
1 | uuid: 693195a3-d703-4b69-8742-ee8b457e8e90
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: j5zLMOdJBqC0bMvSdth5UebkprJB8g_2FXHqhfpJzow
7 | id: anonymous
8 | label: 'Anonymous user'
9 | weight: 0
10 | is_admin: false
11 | permissions:
12 | - 'access content'
13 |
--------------------------------------------------------------------------------
/config/sync/default/shared/user.role.authenticated.yml:
--------------------------------------------------------------------------------
1 | uuid: 943d749c-610e-42c5-b250-86f17f35fce3
2 | langcode: en
3 | status: true
4 | dependencies: { }
5 | _core:
6 | default_config_hash: dJ0L2DNSj5q6XVZAGsuVDpJTh5UeYkIPwKrUOOpr8YI
7 | id: authenticated
8 | label: 'Authenticated user'
9 | weight: 1
10 | is_admin: false
11 | permissions:
12 | - 'access content'
13 | - 'access toolbar'
14 |
--------------------------------------------------------------------------------
/config/sync/default/shared/user.settings.yml:
--------------------------------------------------------------------------------
1 | anonymous: Anonymous
2 | verify_mail: true
3 | notify:
4 | cancel_confirm: true
5 | password_reset: true
6 | status_activated: true
7 | status_blocked: false
8 | status_canceled: false
9 | register_admin_created: true
10 | register_no_approval_required: true
11 | register_pending_approval: true
12 | register: visitors_admin_approval
13 | cancel_method: user_cancel_block
14 | password_reset_timeout: 86400
15 | password_strength: true
16 | langcode: en
17 | _core:
18 | default_config_hash: w314Zp7B4NbrlV4KeeZLNSmTTpdJiv-KwZO2E1fSSK0
19 |
--------------------------------------------------------------------------------
/drush/Commands/PolicyCommands.php:
--------------------------------------------------------------------------------
1 | input()->getArgument('target') == '@prod') {
22 | throw new \Exception(dt('Per !file, you may never overwrite the production database.', ['!file' => __FILE__]));
23 | }
24 | }
25 |
26 | /**
27 | * Limit rsync operations to production site.
28 | *
29 | * @hook validate core:rsync
30 | *
31 | * @throws \Exception
32 | */
33 | public function rsyncValidate(CommandData $commandData) {
34 | if (preg_match("/^@prod/", $commandData->input()->getArgument('target'))) {
35 | throw new \Exception(dt('Per !file, you may never rsync to the production site.', ['!file' => __FILE__]));
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/drush/README.md:
--------------------------------------------------------------------------------
1 | This directory contains commands, configuration and site aliases for Drush. See https://packagist.org/search/?type=drupal-drush for a directory of Drush commands installable via Composer.
2 |
--------------------------------------------------------------------------------
/drush/drush.yml:
--------------------------------------------------------------------------------
1 | #
2 | # A Drush configuration file
3 | #
4 | # Docs at https://github.com/drush-ops/drush/blob/master/examples/example.drush.yml
5 | #
6 | # Edit or remove this file as needed.
--------------------------------------------------------------------------------
/drush/sites/self.site.yml:
--------------------------------------------------------------------------------
1 | # Edit or remove this file as needed.
2 | # Docs at https://github.com/drush-ops/drush/blob/master/examples/example.site.yml
3 |
4 | #prod:
5 | # host: prod.domain.com
6 | # user: www-admin
7 | # root: /path/to/drupal
8 | # uri: http://www.example.com
9 | #
10 | #stage:
11 | # host: stage.domain.com
12 | # user: www-admin
13 | # root: /path/to/drupal
14 | # uri: http://stage.example.com
--------------------------------------------------------------------------------
/load.environment.php:
--------------------------------------------------------------------------------
1 | safeLoad();
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 | ./test/
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/scripts/composer/ScriptHandler.php:
--------------------------------------------------------------------------------
1 | locateRoot(getcwd());
23 | $drupalRoot = $drupalFinder->getDrupalRoot();
24 |
25 | $dirs = [
26 | 'modules',
27 | 'profiles',
28 | 'themes',
29 | ];
30 |
31 | // Required for unit testing
32 | foreach ($dirs as $dir) {
33 | if (!$fs->exists($drupalRoot . '/'. $dir)) {
34 | $fs->mkdir($drupalRoot . '/'. $dir);
35 | $fs->touch($drupalRoot . '/'. $dir . '/.gitkeep');
36 | }
37 | }
38 |
39 | // Prepare the settings file for installation
40 | if (!$fs->exists($drupalRoot . '/sites/default/settings.php') && $fs->exists($drupalRoot . '/sites/default/default.settings.php')) {
41 | $fs->copy($drupalRoot . '/sites/default/default.settings.php', $drupalRoot . '/sites/default/settings.php');
42 | require_once $drupalRoot . '/core/includes/bootstrap.inc';
43 | require_once $drupalRoot . '/core/includes/install.inc';
44 | new Settings([]);
45 | $settings['settings']['config_sync_directory'] = (object) [
46 | 'value' => Path::makeRelative($drupalFinder->getComposerRoot() . '/config/sync', $drupalRoot),
47 | 'required' => TRUE,
48 | ];
49 | drupal_rewrite_settings($settings, $drupalRoot . '/sites/default/settings.php');
50 | $fs->chmod($drupalRoot . '/sites/default/settings.php', 0666);
51 | $event->getIO()->write("Created a sites/default/settings.php file with chmod 0666");
52 | }
53 |
54 | // Create the files directory with chmod 0777
55 | if (!$fs->exists($drupalRoot . '/sites/default/files')) {
56 | $oldmask = umask(0);
57 | $fs->mkdir($drupalRoot . '/sites/default/files', 0777);
58 | umask($oldmask);
59 | $event->getIO()->write("Created a sites/default/files directory with chmod 0777");
60 | }
61 | }
62 |
63 | /**
64 | * Checks if the installed version of Composer is compatible.
65 | *
66 | * Composer 1.0.0 and higher consider a `composer install` without having a
67 | * lock file present as equal to `composer update`. We do not ship with a lock
68 | * file to avoid merge conflicts downstream, meaning that if a project is
69 | * installed with an older version of Composer the scaffolding of Drupal will
70 | * not be triggered. We check this here instead of in drupal-scaffold to be
71 | * able to give immediate feedback to the end user, rather than failing the
72 | * installation after going through the lengthy process of compiling and
73 | * downloading the Composer dependencies.
74 | *
75 | * @see https://github.com/composer/composer/pull/5035
76 | */
77 | public static function checkComposerVersion(Event $event) {
78 | $composer = $event->getComposer();
79 | $io = $event->getIO();
80 |
81 | $version = $composer::VERSION;
82 |
83 | // The dev-channel of composer uses the git revision as version number,
84 | // try to the branch alias instead.
85 | if (preg_match('/^[0-9a-f]{40}$/i', $version)) {
86 | $version = $composer::BRANCH_ALIAS_VERSION;
87 | }
88 |
89 | // If Composer is installed through git we have no easy way to determine if
90 | // it is new enough, just display a warning.
91 | if ($version === '@package_version@' || $version === '@package_branch_alias_version@') {
92 | $io->writeError('You are running a development version of Composer. If you experience problems, please update Composer to the latest stable version.');
93 | }
94 | elseif (Comparator::lessThan($version, '1.0.0')) {
95 | $io->writeError('Drupal-project requires Composer version 1.0.0 or higher. Please update your Composer before continuing.');
96 | exit(1);
97 | }
98 | }
99 |
100 | }
101 |
--------------------------------------------------------------------------------
/tests/behat/behat.yml:
--------------------------------------------------------------------------------
1 | default:
2 | suites:
3 | default:
4 | contexts:
5 | - FeatureContext
6 | - Drupal\DrupalExtension\Context\DrupalContext
7 | - Drupal\DrupalExtension\Context\MinkContext
8 | - Drupal\DrupalExtension\Context\MessageContext
9 | - Drupal\DrupalExtension\Context\DrushContext
10 | extensions:
11 | Behat\MinkExtension:
12 | base_url: http://drupal-circleci-behat.localhost
13 | goutte: ~
14 | selenium2:
15 | wd_host: http://drupal-circleci-behat.localhost:4444/wd/hub
16 | capabilities:
17 | browser: chrome
18 | extra_capabilities:
19 | chromeOptions:
20 | w3c: false
21 | browser_name: chrome
22 | Drupal\DrupalExtension:
23 | blackbox: ~
24 | api_driver: drupal
25 | drupal:
26 | drupal_root: '%paths.base%/../../web'
27 |
--------------------------------------------------------------------------------
/tests/behat/features/bootstrap/FeatureContext.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | Drupal is an open source content management platform supporting a variety of
4 | websites ranging from personal weblogs to large community-driven websites. For
5 | more information, visit the Drupal website, [Drupal.org][Drupal.org], and join
6 | the [Drupal community][Drupal community].
7 |
8 | ## Contributing
9 |
10 | Drupal is developed on [Drupal.org][Drupal.org], the home of the international
11 | Drupal community since 2001!
12 |
13 | [Drupal.org][Drupal.org] hosts Drupal's [GitLab repository][GitLab repository],
14 | its [issue queue][issue queue], and its [documentation][documentation]. Before
15 | you start working on code, be sure to search the [issue queue][issue queue] and
16 | create an issue if your aren't able to find an existing issue.
17 |
18 | Every issue on Drupal.org automatically creates a new community-accessible fork
19 | that you can contribute to. Learn more about the code contribution process on
20 | the [Issue forks & merge requests page][issue forks].
21 |
22 | ## Usage
23 |
24 | For a brief introduction, see [USAGE.txt](/core/USAGE.txt). You can also find
25 | guides, API references, and more by visiting Drupal's [documentation
26 | page][documentation].
27 |
28 | You can quickly extend Drupal's core feature set by installing any of its
29 | [thousands of free and open source modules][modules]. With Drupal and its
30 | module ecosystem, you can often build most or all of what your project needs
31 | before writing a single line of code.
32 |
33 | ## Changelog
34 |
35 | Drupal keeps detailed [change records][changelog]. You can search Drupal's
36 | changes for a record of every notable breaking change and new feature since
37 | 2011.
38 |
39 | ## Security
40 |
41 | For a list of security announcements, see the [Security advisories
42 | page][Security advisories] (available as [an RSS feed][security RSS]). This
43 | page also describes how to subscribe to these announcements via email.
44 |
45 | For information about the Drupal security process, or to find out how to report
46 | a potential security issue to the Drupal security team, see the [Security team
47 | page][security team].
48 |
49 | ## Need a helping hand?
50 |
51 | Visit the [Support page][support] or browse [over a thousand Drupal
52 | providers][service providers] offering design, strategy, development, and
53 | hosting services.
54 |
55 | ## Legal matters
56 |
57 | Know your rights when using Drupal by reading Drupal core's
58 | [license](/core/LICENSE.txt).
59 |
60 | Learn about the [Drupal trademark and logo policy here][trademark].
61 |
62 | [Drupal.org]: https://www.drupal.org
63 | [Drupal community]: https://www.drupal.org/community
64 | [GitLab repository]: https://git.drupalcode.org/project/drupal
65 | [issue queue]: https://www.drupal.org/project/issues/drupal
66 | [issue forks]: https://www.drupal.org/drupalorg/docs/gitlab-integration/issue-forks-merge-requests
67 | [documentation]: https://www.drupal.org/documentation
68 | [changelog]: https://www.drupal.org/list-changes/drupal
69 | [modules]: https://www.drupal.org/project/project_module
70 | [security advisories]: https://www.drupal.org/security
71 | [security RSS]: https://www.drupal.org/security/rss.xml
72 | [security team]: https://www.drupal.org/drupal-security-team
73 | [service providers]: https://www.drupal.org/drupal-services
74 | [support]: https://www.drupal.org/support
75 | [trademark]: https://www.drupal.com/trademark
76 |
--------------------------------------------------------------------------------
/web/autoload.php:
--------------------------------------------------------------------------------
1 | handle($request);
20 | $response->send();
21 |
22 | $kernel->terminate($request, $response);
23 |
--------------------------------------------------------------------------------
/web/modules/.gitignore:
--------------------------------------------------------------------------------
1 | README.txt
--------------------------------------------------------------------------------
/web/modules/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normanlolx/drupal-circleci-behat/b46cbdb07f8a2e80cec7b36a3d433afd56d85565/web/modules/.gitkeep
--------------------------------------------------------------------------------
/web/profiles/.gitignore:
--------------------------------------------------------------------------------
1 | README.txt
--------------------------------------------------------------------------------
/web/profiles/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normanlolx/drupal-circleci-behat/b46cbdb07f8a2e80cec7b36a3d433afd56d85565/web/profiles/.gitkeep
--------------------------------------------------------------------------------
/web/robots.txt:
--------------------------------------------------------------------------------
1 | #
2 | # robots.txt
3 | #
4 | # This file is to prevent the crawling and indexing of certain parts
5 | # of your site by web crawlers and spiders run by sites like Yahoo!
6 | # and Google. By telling these "robots" where not to go on your site,
7 | # you save bandwidth and server resources.
8 | #
9 | # This file will be ignored unless it is at the root of your host:
10 | # Used: http://example.com/robots.txt
11 | # Ignored: http://example.com/site/robots.txt
12 | #
13 | # For more information about the robots.txt standard, see:
14 | # http://www.robotstxt.org/robotstxt.html
15 |
16 | User-agent: *
17 | # CSS, JS, Images
18 | Allow: /core/*.css$
19 | Allow: /core/*.css?
20 | Allow: /core/*.js$
21 | Allow: /core/*.js?
22 | Allow: /core/*.gif
23 | Allow: /core/*.jpg
24 | Allow: /core/*.jpeg
25 | Allow: /core/*.png
26 | Allow: /core/*.svg
27 | Allow: /profiles/*.css$
28 | Allow: /profiles/*.css?
29 | Allow: /profiles/*.js$
30 | Allow: /profiles/*.js?
31 | Allow: /profiles/*.gif
32 | Allow: /profiles/*.jpg
33 | Allow: /profiles/*.jpeg
34 | Allow: /profiles/*.png
35 | Allow: /profiles/*.svg
36 | # Directories
37 | Disallow: /core/
38 | Disallow: /profiles/
39 | # Files
40 | Disallow: /README.txt
41 | Disallow: /web.config
42 | # Paths (clean URLs)
43 | Disallow: /admin/
44 | Disallow: /comment/reply/
45 | Disallow: /filter/tips
46 | Disallow: /node/add/
47 | Disallow: /search/
48 | Disallow: /user/register
49 | Disallow: /user/password
50 | Disallow: /user/login
51 | Disallow: /user/logout
52 | # Paths (no clean URLs)
53 | Disallow: /index.php/admin/
54 | Disallow: /index.php/comment/reply/
55 | Disallow: /index.php/filter/tips
56 | Disallow: /index.php/node/add/
57 | Disallow: /index.php/search/
58 | Disallow: /index.php/user/password
59 | Disallow: /index.php/user/register
60 | Disallow: /index.php/user/login
61 | Disallow: /index.php/user/logout
62 |
--------------------------------------------------------------------------------
/web/sites/.gitignore:
--------------------------------------------------------------------------------
1 | README.txt
--------------------------------------------------------------------------------
/web/sites/default/default.services.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | session.storage.options:
3 | # Default ini options for sessions.
4 | #
5 | # Some distributions of Linux (most notably Debian) ship their PHP
6 | # installations with garbage collection (gc) disabled. Since Drupal depends
7 | # on PHP's garbage collection for clearing sessions, ensure that garbage
8 | # collection occurs by using the most common settings.
9 | # @default 1
10 | gc_probability: 1
11 | # @default 100
12 | gc_divisor: 100
13 | #
14 | # Set session lifetime (in seconds), i.e. the time from the user's last
15 | # visit to the active session may be deleted by the session garbage
16 | # collector. When a session is deleted, authenticated users are logged out,
17 | # and the contents of the user's $_SESSION variable is discarded.
18 | # @default 200000
19 | gc_maxlifetime: 200000
20 | #
21 | # Set session cookie lifetime (in seconds), i.e. the time from the session
22 | # is created to the cookie expires, i.e. when the browser is expected to
23 | # discard the cookie. The value 0 means "until the browser is closed".
24 | # @default 2000000
25 | cookie_lifetime: 2000000
26 | #
27 | # Drupal automatically generates a unique session cookie name based on the
28 | # full domain name used to access the site. This mechanism is sufficient
29 | # for most use-cases, including multi-site deployments. However, if it is
30 | # desired that a session can be reused across different subdomains, the
31 | # cookie domain needs to be set to the shared base domain. Doing so assures
32 | # that users remain logged in as they cross between various subdomains.
33 | # To maximize compatibility and normalize the behavior across user agents,
34 | # the cookie domain should start with a dot.
35 | #
36 | # @default none
37 | # cookie_domain: '.example.com'
38 | #
39 | # Set the session ID string length. The length can be between 22 to 256. The
40 | # PHP recommended value is 48. See
41 | # https://www.php.net/manual/session.security.ini.php for more information.
42 | # This value should be kept in sync with
43 | # \Drupal\Core\Session\SessionConfiguration::__construct()
44 | # @default 48
45 | sid_length: 48
46 | #
47 | # Set the number of bits in encoded session ID character. The possible
48 | # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-",
49 | # ","). The PHP recommended value is 6. See
50 | # https://www.php.net/manual/session.security.ini.php for more information.
51 | # This value should be kept in sync with
52 | # \Drupal\Core\Session\SessionConfiguration::__construct()
53 | # @default 6
54 | sid_bits_per_character: 6
55 | twig.config:
56 | # Twig debugging:
57 | #
58 | # When debugging is enabled:
59 | # - The markup of each Twig template is surrounded by HTML comments that
60 | # contain theming information, such as template file name suggestions.
61 | # - Note that this debugging markup will cause automated tests that directly
62 | # check rendered HTML to fail. When running automated tests, 'debug'
63 | # should be set to FALSE.
64 | # - The dump() function can be used in Twig templates to output information
65 | # about template variables.
66 | # - Twig templates are automatically recompiled whenever the source code
67 | # changes (see auto_reload below).
68 | #
69 | # For more information about debugging Twig templates, see
70 | # https://www.drupal.org/node/1906392.
71 | #
72 | # Not recommended in production environments
73 | # @default false
74 | debug: false
75 | # Twig auto-reload:
76 | #
77 | # Automatically recompile Twig templates whenever the source code changes.
78 | # If you don't provide a value for auto_reload, it will be determined
79 | # based on the value of debug.
80 | #
81 | # Not recommended in production environments
82 | # @default null
83 | auto_reload: null
84 | # Twig cache:
85 | #
86 | # By default, Twig templates will be compiled and stored in the filesystem
87 | # to increase performance. Disabling the Twig cache will recompile the
88 | # templates from source each time they are used. In most cases the
89 | # auto_reload setting above should be enabled rather than disabling the
90 | # Twig cache.
91 | #
92 | # Not recommended in production environments
93 | # @default true
94 | cache: true
95 | renderer.config:
96 | # Renderer required cache contexts:
97 | #
98 | # The Renderer will automatically associate these cache contexts with every
99 | # render array, hence varying every render array by these cache contexts.
100 | #
101 | # @default ['languages:language_interface', 'theme', 'user.permissions']
102 | required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
103 | # Renderer automatic placeholdering conditions:
104 | #
105 | # Drupal allows portions of the page to be automatically deferred when
106 | # rendering to improve cache performance. That is especially helpful for
107 | # cache contexts that vary widely, such as the active user. On some sites
108 | # those may be different, however, such as sites with only a handful of
109 | # users. If you know what the high-cardinality cache contexts are for your
110 | # site, specify those here. If you're not sure, the defaults are fairly safe
111 | # in general.
112 | #
113 | # For more information about rendering optimizations see
114 | # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing
115 | auto_placeholder_conditions:
116 | # Max-age at or below which caching is not considered worthwhile.
117 | #
118 | # Disable by setting to -1.
119 | #
120 | # @default 0
121 | max-age: 0
122 | # Cache contexts with a high cardinality.
123 | #
124 | # Disable by setting to [].
125 | #
126 | # @default ['session', 'user']
127 | contexts: ['session', 'user']
128 | # Tags with a high invalidation frequency.
129 | #
130 | # Disable by setting to [].
131 | #
132 | # @default []
133 | tags: []
134 | # Cacheability debugging:
135 | #
136 | # Responses with cacheability metadata (CacheableResponseInterface instances)
137 | # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age
138 | # headers.
139 | #
140 | # For more information about debugging cacheable responses, see
141 | # https://www.drupal.org/developing/api/8/response/cacheable-response-interface
142 | #
143 | # Not recommended in production environments
144 | # @default false
145 | http.response.debug_cacheability_headers: false
146 | factory.keyvalue: {}
147 | # Default key/value storage service to use.
148 | # @default keyvalue.database
149 | # default: keyvalue.database
150 | # Collection-specific overrides.
151 | # state: keyvalue.database
152 | factory.keyvalue.expirable: {}
153 | # Default key/value expirable storage service to use.
154 | # @default keyvalue.database.expirable
155 | # default: keyvalue.database.expirable
156 | # Allowed protocols for URL generation.
157 | filter_protocols:
158 | - http
159 | - https
160 | - ftp
161 | - news
162 | - nntp
163 | - tel
164 | - telnet
165 | - mailto
166 | - irc
167 | - ssh
168 | - sftp
169 | - webcal
170 | - rtsp
171 |
172 | # Configure Cross-Site HTTP requests (CORS).
173 | # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
174 | # for more information about the topic in general.
175 | # Note: By default the configuration is disabled.
176 | cors.config:
177 | enabled: false
178 | # Specify allowed headers, like 'x-allowed-header'.
179 | allowedHeaders: []
180 | # Specify allowed request methods, specify ['*'] to allow all possible ones.
181 | allowedMethods: []
182 | # Configure requests allowed from specific origins.
183 | allowedOrigins: ['*']
184 | # Sets the Access-Control-Expose-Headers header.
185 | exposedHeaders: false
186 | # Sets the Access-Control-Max-Age header.
187 | maxAge: false
188 | # Sets the Access-Control-Allow-Credentials header.
189 | supportsCredentials: false
190 |
--------------------------------------------------------------------------------
/web/sites/default/default.settings.php:
--------------------------------------------------------------------------------
1 | 'databasename',
81 | * 'username' => 'sqlusername',
82 | * 'password' => 'sqlpassword',
83 | * 'host' => 'localhost',
84 | * 'port' => '3306',
85 | * 'driver' => 'mysql',
86 | * 'prefix' => '',
87 | * 'collation' => 'utf8mb4_general_ci',
88 | * ];
89 | * @endcode
90 | */
91 | $databases = [];
92 |
93 | /**
94 | * Customizing database settings.
95 | *
96 | * Many of the values of the $databases array can be customized for your
97 | * particular database system. Refer to the sample in the section above as a
98 | * starting point.
99 | *
100 | * The "driver" property indicates what Drupal database driver the
101 | * connection should use. This is usually the same as the name of the
102 | * database type, such as mysql or sqlite, but not always. The other
103 | * properties will vary depending on the driver. For SQLite, you must
104 | * specify a database file name in a directory that is writable by the
105 | * webserver. For most other drivers, you must specify a
106 | * username, password, host, and database name.
107 | *
108 | * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers
109 | * can be provided by contributed or custom modules. To use a contributed or
110 | * custom driver, the "namespace" property must be set to the namespace of the
111 | * driver. The code in this namespace must be autoloadable prior to connecting
112 | * to the database, and therefore, prior to when module root namespaces are
113 | * added to the autoloader. To add the driver's namespace to the autoloader,
114 | * set the "autoload" property to the PSR-4 base directory of the driver's
115 | * namespace. This is optional for projects managed with Composer if the
116 | * driver's namespace is in Composer's autoloader.
117 | *
118 | * For each database, you may optionally specify multiple "target" databases.
119 | * A target database allows Drupal to try to send certain queries to a
120 | * different database if it can but fall back to the default connection if not.
121 | * That is useful for primary/replica replication, as Drupal may try to connect
122 | * to a replica server when appropriate and if one is not available will simply
123 | * fall back to the single primary server (The terms primary/replica are
124 | * traditionally referred to as master/slave in database server documentation).
125 | *
126 | * The general format for the $databases array is as follows:
127 | * @code
128 | * $databases['default']['default'] = $info_array;
129 | * $databases['default']['replica'][] = $info_array;
130 | * $databases['default']['replica'][] = $info_array;
131 | * $databases['extra']['default'] = $info_array;
132 | * @endcode
133 | *
134 | * In the above example, $info_array is an array of settings described above.
135 | * The first line sets a "default" database that has one primary database
136 | * (the second level default). The second and third lines create an array
137 | * of potential replica databases. Drupal will select one at random for a given
138 | * request as needed. The fourth line creates a new database with a name of
139 | * "extra".
140 | *
141 | * You can optionally set prefixes for some or all database table names
142 | * by using the 'prefix' setting. If a prefix is specified, the table
143 | * name will be prepended with its value. Be sure to use valid database
144 | * characters only, usually alphanumeric and underscore. If no prefixes
145 | * are desired, leave it as an empty string ''.
146 | *
147 | * To have all database names prefixed, set 'prefix' as a string:
148 | * @code
149 | * 'prefix' => 'main_',
150 | * @endcode
151 | *
152 | * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in
153 | * Drupal 9.0. After that, only a single prefix for all tables will be
154 | * supported.
155 | *
156 | * To provide prefixes for specific tables, set 'prefix' as an array.
157 | * The array's keys are the table names and the values are the prefixes.
158 | * The 'default' element is mandatory and holds the prefix for any tables
159 | * not specified elsewhere in the array. Example:
160 | * @code
161 | * 'prefix' => [
162 | * 'default' => 'main_',
163 | * 'users' => 'shared_',
164 | * 'sessions' => 'shared_',
165 | * 'role' => 'shared_',
166 | * 'authmap' => 'shared_',
167 | * ],
168 | * @endcode
169 | * You can also use a reference to a schema/database as a prefix. This may be
170 | * useful if your Drupal installation exists in a schema that is not the default
171 | * or you want to access several databases from the same code base at the same
172 | * time.
173 | * Example:
174 | * @code
175 | * 'prefix' => [
176 | * 'default' => 'main.',
177 | * 'users' => 'shared.',
178 | * 'sessions' => 'shared.',
179 | * 'role' => 'shared.',
180 | * 'authmap' => 'shared.',
181 | * ];
182 | * @endcode
183 | * NOTE: MySQL and SQLite's definition of a schema is a database.
184 | *
185 | * Advanced users can add or override initial commands to execute when
186 | * connecting to the database server, as well as PDO connection settings. For
187 | * example, to enable MySQL SELECT queries to exceed the max_join_size system
188 | * variable, and to reduce the database connection timeout to 5 seconds:
189 | * @code
190 | * $databases['default']['default'] = [
191 | * 'init_commands' => [
192 | * 'big_selects' => 'SET SQL_BIG_SELECTS=1',
193 | * ],
194 | * 'pdo' => [
195 | * PDO::ATTR_TIMEOUT => 5,
196 | * ],
197 | * ];
198 | * @endcode
199 | *
200 | * WARNING: The above defaults are designed for database portability. Changing
201 | * them may cause unexpected behavior, including potential data loss. See
202 | * https://www.drupal.org/developing/api/database/configuration for more
203 | * information on these defaults and the potential issues.
204 | *
205 | * More details can be found in the constructor methods for each driver:
206 | * - \Drupal\Core\Database\Driver\mysql\Connection::__construct()
207 | * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct()
208 | * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct()
209 | *
210 | * Sample Database configuration format for PostgreSQL (pgsql):
211 | * @code
212 | * $databases['default']['default'] = [
213 | * 'driver' => 'pgsql',
214 | * 'database' => 'databasename',
215 | * 'username' => 'sqlusername',
216 | * 'password' => 'sqlpassword',
217 | * 'host' => 'localhost',
218 | * 'prefix' => '',
219 | * ];
220 | * @endcode
221 | *
222 | * Sample Database configuration format for SQLite (sqlite):
223 | * @code
224 | * $databases['default']['default'] = [
225 | * 'driver' => 'sqlite',
226 | * 'database' => '/path/to/databasefilename',
227 | * ];
228 | * @endcode
229 | *
230 | * Sample Database configuration format for a driver in a contributed module:
231 | * @code
232 | * $databases['default']['default'] = [
233 | * 'driver' => 'my_driver',
234 | * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver',
235 | * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/',
236 | * 'database' => 'databasename',
237 | * 'username' => 'sqlusername',
238 | * 'password' => 'sqlpassword',
239 | * 'host' => 'localhost',
240 | * 'prefix' => '',
241 | * ];
242 | * @endcode
243 | */
244 |
245 | /**
246 | * Location of the site configuration files.
247 | *
248 | * The $settings['config_sync_directory'] specifies the location of file system
249 | * directory used for syncing configuration data. On install, the directory is
250 | * created. This is used for configuration imports.
251 | *
252 | * The default location for this directory is inside a randomly-named
253 | * directory in the public files path. The setting below allows you to set
254 | * its location.
255 | */
256 | # $settings['config_sync_directory'] = '/directory/outside/webroot';
257 |
258 | /**
259 | * Settings:
260 | *
261 | * $settings contains environment-specific configuration, such as the files
262 | * directory and reverse proxy address, and temporary configuration, such as
263 | * security overrides.
264 | *
265 | * @see \Drupal\Core\Site\Settings::get()
266 | */
267 |
268 | /**
269 | * Salt for one-time login links, cancel links, form tokens, etc.
270 | *
271 | * This variable will be set to a random value by the installer. All one-time
272 | * login links will be invalidated if the value is changed. Note that if your
273 | * site is deployed on a cluster of web servers, you must ensure that this
274 | * variable has the same value on each server.
275 | *
276 | * For enhanced security, you may set this variable to the contents of a file
277 | * outside your document root; you should also ensure that this file is not
278 | * stored with backups of your database.
279 | *
280 | * Example:
281 | * @code
282 | * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt');
283 | * @endcode
284 | */
285 | $settings['hash_salt'] = '';
286 |
287 | /**
288 | * Deployment identifier.
289 | *
290 | * Drupal's dependency injection container will be automatically invalidated and
291 | * rebuilt when the Drupal core version changes. When updating contributed or
292 | * custom code that changes the container, changing this identifier will also
293 | * allow the container to be invalidated as soon as code is deployed.
294 | */
295 | # $settings['deployment_identifier'] = \Drupal::VERSION;
296 |
297 | /**
298 | * Access control for update.php script.
299 | *
300 | * If you are updating your Drupal installation using the update.php script but
301 | * are not logged in using either an account with the "Administer software
302 | * updates" permission or the site maintenance account (the account that was
303 | * created during installation), you will need to modify the access check
304 | * statement below. Change the FALSE to a TRUE to disable the access check.
305 | * After finishing the upgrade, be sure to open this file again and change the
306 | * TRUE back to a FALSE!
307 | */
308 | $settings['update_free_access'] = FALSE;
309 |
310 | /**
311 | * Fallback to HTTP for Update Manager and for fetching security advisories.
312 | *
313 | * If your site fails to connect to updates.drupal.org over HTTPS (either when
314 | * fetching data on available updates, or when fetching the feed of critical
315 | * security announcements), you may uncomment this setting and set it to TRUE to
316 | * allow an insecure fallback to HTTP. Note that doing so will open your site up
317 | * to a potential man-in-the-middle attack. You should instead attempt to
318 | * resolve the issues before enabling this option.
319 | * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl
320 | * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack
321 | * @see \Drupal\update\UpdateFetcher
322 | * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher
323 | */
324 | # $settings['update_fetch_with_http_fallback'] = TRUE;
325 |
326 | /**
327 | * External access proxy settings:
328 | *
329 | * If your site must access the Internet via a web proxy then you can enter the
330 | * proxy settings here. Set the full URL of the proxy, including the port, in
331 | * variables:
332 | * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP
333 | * requests.
334 | * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS
335 | * requests.
336 | * You can pass in the user name and password for basic authentication in the
337 | * URLs in these settings.
338 | *
339 | * You can also define an array of host names that can be accessed directly,
340 | * bypassing the proxy, in $settings['http_client_config']['proxy']['no'].
341 | */
342 | # $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080';
343 | # $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080';
344 | # $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost'];
345 |
346 | /**
347 | * Reverse Proxy Configuration:
348 | *
349 | * Reverse proxy servers are often used to enhance the performance
350 | * of heavily visited sites and may also provide other site caching,
351 | * security, or encryption benefits. In an environment where Drupal
352 | * is behind a reverse proxy, the real IP address of the client should
353 | * be determined such that the correct client IP address is available
354 | * to Drupal's logging, statistics, and access management systems. In
355 | * the most simple scenario, the proxy server will add an
356 | * X-Forwarded-For header to the request that contains the client IP
357 | * address. However, HTTP headers are vulnerable to spoofing, where a
358 | * malicious client could bypass restrictions by setting the
359 | * X-Forwarded-For header directly. Therefore, Drupal's proxy
360 | * configuration requires the IP addresses of all remote proxies to be
361 | * specified in $settings['reverse_proxy_addresses'] to work correctly.
362 | *
363 | * Enable this setting to get Drupal to determine the client IP from the
364 | * X-Forwarded-For header. If you are unsure about this setting, do not have a
365 | * reverse proxy, or Drupal operates in a shared hosting environment, this
366 | * setting should remain commented out.
367 | *
368 | * In order for this setting to be used you must specify every possible
369 | * reverse proxy IP address in $settings['reverse_proxy_addresses'].
370 | * If a complete list of reverse proxies is not available in your
371 | * environment (for example, if you use a CDN) you may set the
372 | * $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
373 | * Be aware, however, that it is likely that this would allow IP
374 | * address spoofing unless more advanced precautions are taken.
375 | */
376 | # $settings['reverse_proxy'] = TRUE;
377 |
378 | /**
379 | * Specify every reverse proxy IP address in your environment.
380 | * This setting is required if $settings['reverse_proxy'] is TRUE.
381 | */
382 | # $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...];
383 |
384 | /**
385 | * Reverse proxy trusted headers.
386 | *
387 | * Sets which headers to trust from your reverse proxy.
388 | *
389 | * Common values are:
390 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR
391 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST
392 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT
393 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO
394 | * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED
395 | *
396 | * Note the default value of
397 | * @code
398 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED
399 | * @endcode
400 | * is not secure by default. The value should be set to only the specific
401 | * headers the reverse proxy uses. For example:
402 | * @code
403 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO
404 | * @endcode
405 | * This would trust the following headers:
406 | * - X_FORWARDED_FOR
407 | * - X_FORWARDED_HOST
408 | * - X_FORWARDED_PROTO
409 | * - X_FORWARDED_PORT
410 | *
411 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR
412 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST
413 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT
414 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO
415 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED
416 | * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies
417 | */
418 | # $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED;
419 |
420 |
421 | /**
422 | * Page caching:
423 | *
424 | * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page
425 | * views. This tells a HTTP proxy that it may return a page from its local
426 | * cache without contacting the web server, if the user sends the same Cookie
427 | * header as the user who originally requested the cached page. Without "Vary:
428 | * Cookie", authenticated users would also be served the anonymous page from
429 | * the cache. If the site has mostly anonymous users except a few known
430 | * editors/administrators, the Vary header can be omitted. This allows for
431 | * better caching in HTTP proxies (including reverse proxies), i.e. even if
432 | * clients send different cookies, they still get content served from the cache.
433 | * However, authenticated users should access the site directly (i.e. not use an
434 | * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
435 | * getting cached pages from the proxy.
436 | */
437 | # $settings['omit_vary_cookie'] = TRUE;
438 |
439 |
440 | /**
441 | * Cache TTL for client error (4xx) responses.
442 | *
443 | * Items cached per-URL tend to result in a large number of cache items, and
444 | * this can be problematic on 404 pages which by their nature are unbounded. A
445 | * fixed TTL can be set for these items, defaulting to one hour, so that cache
446 | * backends which do not support LRU can purge older entries. To disable caching
447 | * of client error responses set the value to 0. Currently applies only to
448 | * page_cache module.
449 | */
450 | # $settings['cache_ttl_4xx'] = 3600;
451 |
452 | /**
453 | * Expiration of cached forms.
454 | *
455 | * Drupal's Form API stores details of forms in a cache and these entries are
456 | * kept for at least 6 hours by default. Expired entries are cleared by cron.
457 | *
458 | * @see \Drupal\Core\Form\FormCache::setCache()
459 | */
460 | # $settings['form_cache_expiration'] = 21600;
461 |
462 | /**
463 | * Class Loader.
464 | *
465 | * If the APCu extension is detected, the classloader will be optimized to use
466 | * it. Set to FALSE to disable this.
467 | *
468 | * @see https://getcomposer.org/doc/articles/autoloader-optimization.md
469 | */
470 | # $settings['class_loader_auto_detect'] = FALSE;
471 |
472 | /**
473 | * Authorized file system operations:
474 | *
475 | * The Update Manager module included with Drupal provides a mechanism for
476 | * site administrators to securely install missing updates for the site
477 | * directly through the web user interface. On securely-configured servers,
478 | * the Update manager will require the administrator to provide SSH or FTP
479 | * credentials before allowing the installation to proceed; this allows the
480 | * site to update the new files as the user who owns all the Drupal files,
481 | * instead of as the user the webserver is running as. On servers where the
482 | * webserver user is itself the owner of the Drupal files, the administrator
483 | * will not be prompted for SSH or FTP credentials (note that these server
484 | * setups are common on shared hosting, but are inherently insecure).
485 | *
486 | * Some sites might wish to disable the above functionality, and only update
487 | * the code directly via SSH or FTP themselves. This setting completely
488 | * disables all functionality related to these authorized file operations.
489 | *
490 | * @see https://www.drupal.org/node/244924
491 | *
492 | * Remove the leading hash signs to disable.
493 | */
494 | # $settings['allow_authorize_operations'] = FALSE;
495 |
496 | /**
497 | * Default mode for directories and files written by Drupal.
498 | *
499 | * Value should be in PHP Octal Notation, with leading zero.
500 | */
501 | # $settings['file_chmod_directory'] = 0775;
502 | # $settings['file_chmod_file'] = 0664;
503 |
504 | /**
505 | * Public file base URL:
506 | *
507 | * An alternative base URL to be used for serving public files. This must
508 | * include any leading directory path.
509 | *
510 | * A different value from the domain used by Drupal to be used for accessing
511 | * public files. This can be used for a simple CDN integration, or to improve
512 | * security by serving user-uploaded files from a different domain or subdomain
513 | * pointing to the same server. Do not include a trailing slash.
514 | */
515 | # $settings['file_public_base_url'] = 'http://downloads.example.com/files';
516 |
517 | /**
518 | * Public file path:
519 | *
520 | * A local file system path where public files will be stored. This directory
521 | * must exist and be writable by Drupal. This directory must be relative to
522 | * the Drupal installation directory and be accessible over the web.
523 | */
524 | # $settings['file_public_path'] = 'sites/default/files';
525 |
526 | /**
527 | * Private file path:
528 | *
529 | * A local file system path where private files will be stored. This directory
530 | * must be absolute, outside of the Drupal installation directory and not
531 | * accessible over the web.
532 | *
533 | * Note: Caches need to be cleared when this value is changed to make the
534 | * private:// stream wrapper available to the system.
535 | *
536 | * See https://www.drupal.org/documentation/modules/file for more information
537 | * about securing private files.
538 | */
539 | # $settings['file_private_path'] = '';
540 |
541 | /**
542 | * Temporary file path:
543 | *
544 | * A local file system path where temporary files will be stored. This directory
545 | * must be absolute, outside of the Drupal installation directory and not
546 | * accessible over the web.
547 | *
548 | * If this is not set, the default for the operating system will be used.
549 | *
550 | * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory()
551 | */
552 | # $settings['file_temp_path'] = '/tmp';
553 |
554 | /**
555 | * Session write interval:
556 | *
557 | * Set the minimum interval between each session write to database.
558 | * For performance reasons it defaults to 180.
559 | */
560 | # $settings['session_write_interval'] = 180;
561 |
562 | /**
563 | * String overrides:
564 | *
565 | * To override specific strings on your site with or without enabling the Locale
566 | * module, add an entry to this list. This functionality allows you to change
567 | * a small number of your site's default English language interface strings.
568 | *
569 | * Remove the leading hash signs to enable.
570 | *
571 | * The "en" part of the variable name, is dynamic and can be any langcode of
572 | * any added language. (eg locale_custom_strings_de for german).
573 | */
574 | # $settings['locale_custom_strings_en'][''] = [
575 | # 'forum' => 'Discussion board',
576 | # '@count min' => '@count minutes',
577 | # ];
578 |
579 | /**
580 | * A custom theme for the offline page:
581 | *
582 | * This applies when the site is explicitly set to maintenance mode through the
583 | * administration page or when the database is inactive due to an error.
584 | * The template file should also be copied into the theme. It is located inside
585 | * 'core/modules/system/templates/maintenance-page.html.twig'.
586 | *
587 | * Note: This setting does not apply to installation and update pages.
588 | */
589 | # $settings['maintenance_theme'] = 'bartik';
590 |
591 | /**
592 | * PHP settings:
593 | *
594 | * To see what PHP settings are possible, including whether they can be set at
595 | * runtime (by using ini_set()), read the PHP documentation:
596 | * http://php.net/manual/ini.list.php
597 | * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime
598 | * settings and the .htaccess file for non-runtime settings.
599 | * Settings defined there should not be duplicated here so as to avoid conflict
600 | * issues.
601 | */
602 |
603 | /**
604 | * If you encounter a situation where users post a large amount of text, and
605 | * the result is stripped out upon viewing but can still be edited, Drupal's
606 | * output filter may not have sufficient memory to process it. If you
607 | * experience this issue, you may wish to uncomment the following two lines
608 | * and increase the limits of these variables. For more information, see
609 | * http://php.net/manual/pcre.configuration.php.
610 | */
611 | # ini_set('pcre.backtrack_limit', 200000);
612 | # ini_set('pcre.recursion_limit', 200000);
613 |
614 | /**
615 | * Add Permissions-Policy header to disable Google FLoC.
616 | *
617 | * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header
618 | * to disable Google's Federated Learning of Cohorts feature, introduced in
619 | * Chrome 89.
620 | *
621 | * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more
622 | * information about FLoC.
623 | *
624 | * If you don't wish to disable FLoC in Chrome, you can set this value
625 | * to FALSE.
626 | */
627 | # $settings['block_interest_cohort'] = TRUE;
628 |
629 | /**
630 | * Configuration overrides.
631 | *
632 | * To globally override specific configuration values for this site,
633 | * set them here. You usually don't need to use this feature. This is
634 | * useful in a configuration file for a vhost or directory, rather than
635 | * the default settings.php.
636 | *
637 | * Note that any values you provide in these variable overrides will not be
638 | * viewable from the Drupal administration interface. The administration
639 | * interface displays the values stored in configuration so that you can stage
640 | * changes to other environments that don't have the overrides.
641 | *
642 | * There are particular configuration values that are risky to override. For
643 | * example, overriding the list of installed modules in 'core.extension' is not
644 | * supported as module install or uninstall has not occurred. Other examples
645 | * include field storage configuration, because it has effects on database
646 | * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
647 | * a way that is not config override aware. Also, note that changing
648 | * configuration values in settings.php will not fire any of the configuration
649 | * change events.
650 | */
651 | # $config['system.site']['name'] = 'My Drupal site';
652 | # $config['user.settings']['anonymous'] = 'Visitor';
653 |
654 | /**
655 | * Fast 404 pages:
656 | *
657 | * Drupal can generate fully themed 404 pages. However, some of these responses
658 | * are for images or other resource files that are not displayed to the user.
659 | * This can waste bandwidth, and also generate server load.
660 | *
661 | * The options below return a simple, fast 404 page for URLs matching a
662 | * specific pattern:
663 | * - $config['system.performance']['fast_404']['exclude_paths']: A regular
664 | * expression to match paths to exclude, such as images generated by image
665 | * styles, or dynamically-resized images. The default pattern provided below
666 | * also excludes the private file system. If you need to add more paths, you
667 | * can add '|path' to the expression.
668 | * - $config['system.performance']['fast_404']['paths']: A regular expression to
669 | * match paths that should return a simple 404 page, rather than the fully
670 | * themed 404 page. If you don't have any aliases ending in htm or html you
671 | * can add '|s?html?' to the expression.
672 | * - $config['system.performance']['fast_404']['html']: The html to return for
673 | * simple 404 pages.
674 | *
675 | * Remove the leading hash signs if you would like to alter this functionality.
676 | */
677 | # $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//';
678 | # $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
679 | # $config['system.performance']['fast_404']['html'] = '404 Not FoundNot Found
The requested URL "@path" was not found on this server.
';
680 |
681 | /**
682 | * Load services definition file.
683 | */
684 | $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';
685 |
686 | /**
687 | * Override the default service container class.
688 | *
689 | * This is useful for example to trace the service container for performance
690 | * tracking purposes, for testing a service container with an error condition or
691 | * to test a service container that throws an exception.
692 | */
693 | # $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container';
694 |
695 | /**
696 | * Override the default yaml parser class.
697 | *
698 | * Provide a fully qualified class name here if you would like to provide an
699 | * alternate implementation YAML parser. The class must implement the
700 | * \Drupal\Component\Serialization\SerializationInterface interface.
701 | */
702 | # $settings['yaml_parser_class'] = NULL;
703 |
704 | /**
705 | * Trusted host configuration.
706 | *
707 | * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host
708 | * header spoofing.
709 | *
710 | * To enable the trusted host mechanism, you enable your allowable hosts
711 | * in $settings['trusted_host_patterns']. This should be an array of regular
712 | * expression patterns, without delimiters, representing the hosts you would
713 | * like to allow.
714 | *
715 | * For example:
716 | * @code
717 | * $settings['trusted_host_patterns'] = [
718 | * '^www\.example\.com$',
719 | * ];
720 | * @endcode
721 | * will allow the site to only run from www.example.com.
722 | *
723 | * If you are running multisite, or if you are running your site from
724 | * different domain names (eg, you don't redirect http://www.example.com to
725 | * http://example.com), you should specify all of the host patterns that are
726 | * allowed by your site.
727 | *
728 | * For example:
729 | * @code
730 | * $settings['trusted_host_patterns'] = [
731 | * '^example\.com$',
732 | * '^.+\.example\.com$',
733 | * '^example\.org$',
734 | * '^.+\.example\.org$',
735 | * ];
736 | * @endcode
737 | * will allow the site to run off of all variants of example.com and
738 | * example.org, with all subdomains included.
739 | */
740 |
741 | /**
742 | * The default list of directories that will be ignored by Drupal's file API.
743 | *
744 | * By default ignore node_modules and bower_components folders to avoid issues
745 | * with common frontend tools and recursive scanning of directories looking for
746 | * extensions.
747 | *
748 | * @see \Drupal\Core\File\FileSystemInterface::scanDirectory()
749 | * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory()
750 | */
751 | $settings['file_scan_ignore_directories'] = [
752 | 'node_modules',
753 | 'bower_components',
754 | ];
755 |
756 | /**
757 | * The default number of entities to update in a batch process.
758 | *
759 | * This is used by update and post-update functions that need to go through and
760 | * change all the entities on a site, so it is useful to increase this number
761 | * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a
762 | * larger number of entities to be processed in a single batch run.
763 | */
764 | $settings['entity_update_batch_size'] = 50;
765 |
766 | /**
767 | * Entity update backup.
768 | *
769 | * This is used to inform the entity storage handler that the backup tables as
770 | * well as the original entity type and field storage definitions should be
771 | * retained after a successful entity update process.
772 | */
773 | $settings['entity_update_backup'] = TRUE;
774 |
775 | /**
776 | * Node migration type.
777 | *
778 | * This is used to force the migration system to use the classic node migrations
779 | * instead of the default complete node migrations. The migration system will
780 | * use the classic node migration only if there are existing migrate_map tables
781 | * for the classic node migrations and they contain data. These tables may not
782 | * exist if you are developing custom migrations and do not want to use the
783 | * complete node migrations. Set this to TRUE to force the use of the classic
784 | * node migrations.
785 | */
786 | $settings['migrate_node_migrate_type_classic'] = FALSE;
787 |
788 | /**
789 | * Load local development override configuration, if available.
790 | *
791 | * Create a settings.local.php file to override variables on secondary (staging,
792 | * development, etc.) installations of this site.
793 | *
794 | * Typical uses of settings.local.php include:
795 | * - Disabling caching.
796 | * - Disabling JavaScript/CSS compression.
797 | * - Rerouting outgoing emails.
798 | *
799 | * Keep this code block at the end of this file to take full effect.
800 | */
801 | #
802 | # if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
803 | # include $app_root . '/' . $site_path . '/settings.local.php';
804 | # }
805 |
--------------------------------------------------------------------------------
/web/sites/default/settings.php:
--------------------------------------------------------------------------------
1 | 'databasename',
81 | * 'username' => 'sqlusername',
82 | * 'password' => 'sqlpassword',
83 | * 'host' => 'localhost',
84 | * 'port' => '3306',
85 | * 'driver' => 'mysql',
86 | * 'prefix' => '',
87 | * 'collation' => 'utf8mb4_general_ci',
88 | * );
89 | * @endcode
90 | */
91 | $databases = [];
92 |
93 | /**
94 | * Customizing database settings.
95 | *
96 | * Many of the values of the $databases array can be customized for your
97 | * particular database system. Refer to the sample in the section above as a
98 | * starting point.
99 | *
100 | * The "driver" property indicates what Drupal database driver the
101 | * connection should use. This is usually the same as the name of the
102 | * database type, such as mysql or sqlite, but not always. The other
103 | * properties will vary depending on the driver. For SQLite, you must
104 | * specify a database file name in a directory that is writable by the
105 | * webserver. For most other drivers, you must specify a
106 | * username, password, host, and database name.
107 | *
108 | * Transaction support is enabled by default for all drivers that support it,
109 | * including MySQL. To explicitly disable it, set the 'transactions' key to
110 | * FALSE.
111 | * Note that some configurations of MySQL, such as the MyISAM engine, don't
112 | * support it and will proceed silently even if enabled. If you experience
113 | * transaction related crashes with such configuration, set the 'transactions'
114 | * key to FALSE.
115 | *
116 | * For each database, you may optionally specify multiple "target" databases.
117 | * A target database allows Drupal to try to send certain queries to a
118 | * different database if it can but fall back to the default connection if not.
119 | * That is useful for primary/replica replication, as Drupal may try to connect
120 | * to a replica server when appropriate and if one is not available will simply
121 | * fall back to the single primary server (The terms primary/replica are
122 | * traditionally referred to as master/slave in database server documentation).
123 | *
124 | * The general format for the $databases array is as follows:
125 | * @code
126 | * $databases['default']['default'] = $info_array;
127 | * $databases['default']['replica'][] = $info_array;
128 | * $databases['default']['replica'][] = $info_array;
129 | * $databases['extra']['default'] = $info_array;
130 | * @endcode
131 | *
132 | * In the above example, $info_array is an array of settings described above.
133 | * The first line sets a "default" database that has one primary database
134 | * (the second level default). The second and third lines create an array
135 | * of potential replica databases. Drupal will select one at random for a given
136 | * request as needed. The fourth line creates a new database with a name of
137 | * "extra".
138 | *
139 | * You can optionally set prefixes for some or all database table names
140 | * by using the 'prefix' setting. If a prefix is specified, the table
141 | * name will be prepended with its value. Be sure to use valid database
142 | * characters only, usually alphanumeric and underscore. If no prefixes
143 | * are desired, leave it as an empty string ''.
144 | *
145 | * To have all database names prefixed, set 'prefix' as a string:
146 | * @code
147 | * 'prefix' => 'main_',
148 | * @endcode
149 | *
150 | * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in
151 | * Drupal 9.0. After that, only a single prefix for all tables will be
152 | * supported.
153 | *
154 | * To provide prefixes for specific tables, set 'prefix' as an array.
155 | * The array's keys are the table names and the values are the prefixes.
156 | * The 'default' element is mandatory and holds the prefix for any tables
157 | * not specified elsewhere in the array. Example:
158 | * @code
159 | * 'prefix' => array(
160 | * 'default' => 'main_',
161 | * 'users' => 'shared_',
162 | * 'sessions' => 'shared_',
163 | * 'role' => 'shared_',
164 | * 'authmap' => 'shared_',
165 | * ),
166 | * @endcode
167 | * You can also use a reference to a schema/database as a prefix. This may be
168 | * useful if your Drupal installation exists in a schema that is not the default
169 | * or you want to access several databases from the same code base at the same
170 | * time.
171 | * Example:
172 | * @code
173 | * 'prefix' => array(
174 | * 'default' => 'main.',
175 | * 'users' => 'shared.',
176 | * 'sessions' => 'shared.',
177 | * 'role' => 'shared.',
178 | * 'authmap' => 'shared.',
179 | * );
180 | * @endcode
181 | * NOTE: MySQL and SQLite's definition of a schema is a database.
182 | *
183 | * Advanced users can add or override initial commands to execute when
184 | * connecting to the database server, as well as PDO connection settings. For
185 | * example, to enable MySQL SELECT queries to exceed the max_join_size system
186 | * variable, and to reduce the database connection timeout to 5 seconds:
187 | * @code
188 | * $databases['default']['default'] = array(
189 | * 'init_commands' => array(
190 | * 'big_selects' => 'SET SQL_BIG_SELECTS=1',
191 | * ),
192 | * 'pdo' => array(
193 | * PDO::ATTR_TIMEOUT => 5,
194 | * ),
195 | * );
196 | * @endcode
197 | *
198 | * WARNING: The above defaults are designed for database portability. Changing
199 | * them may cause unexpected behavior, including potential data loss. See
200 | * https://www.drupal.org/developing/api/database/configuration for more
201 | * information on these defaults and the potential issues.
202 | *
203 | * More details can be found in the constructor methods for each driver:
204 | * - \Drupal\Core\Database\Driver\mysql\Connection::__construct()
205 | * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct()
206 | * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct()
207 | *
208 | * Sample Database configuration format for PostgreSQL (pgsql):
209 | * @code
210 | * $databases['default']['default'] = array(
211 | * 'driver' => 'pgsql',
212 | * 'database' => 'databasename',
213 | * 'username' => 'sqlusername',
214 | * 'password' => 'sqlpassword',
215 | * 'host' => 'localhost',
216 | * 'prefix' => '',
217 | * );
218 | * @endcode
219 | *
220 | * Sample Database configuration format for SQLite (sqlite):
221 | * @code
222 | * $databases['default']['default'] = array(
223 | * 'driver' => 'sqlite',
224 | * 'database' => '/path/to/databasefilename',
225 | * );
226 | * @endcode
227 | */
228 |
229 | /**
230 | * Location of the site configuration files.
231 | *
232 | * The $config_directories array specifies the location of file system
233 | * directories used for configuration data. On install, the "sync" directory is
234 | * created. This is used for configuration imports. The "active" directory is
235 | * not created by default since the default storage for active configuration is
236 | * the database rather than the file system. (This can be changed. See "Active
237 | * configuration settings" below).
238 | *
239 | * The default location for the "sync" directory is inside a randomly-named
240 | * directory in the public files path. The setting below allows you to override
241 | * the "sync" location.
242 | *
243 | * If you use files for the "active" configuration, you can tell the
244 | * Configuration system where this directory is located by adding an entry with
245 | * array key CONFIG_ACTIVE_DIRECTORY.
246 | *
247 | * Example:
248 | * @code
249 | * $config_directories = array(
250 | * CONFIG_SYNC_DIRECTORY => '/directory/outside/webroot',
251 | * );
252 | * @endcode
253 | */
254 | $settings['config_sync_directory'] = '../config/sync/default/shared';
255 |
256 | /**
257 | * Settings:
258 | *
259 | * $settings contains environment-specific configuration, such as the files
260 | * directory and reverse proxy address, and temporary configuration, such as
261 | * security overrides.
262 | *
263 | * @see \Drupal\Core\Site\Settings::get()
264 | */
265 |
266 | /**
267 | * Salt for one-time login links, cancel links, form tokens, etc.
268 | *
269 | * This variable will be set to a random value by the installer. All one-time
270 | * login links will be invalidated if the value is changed. Note that if your
271 | * site is deployed on a cluster of web servers, you must ensure that this
272 | * variable has the same value on each server.
273 | *
274 | * For enhanced security, you may set this variable to the contents of a file
275 | * outside your document root; you should also ensure that this file is not
276 | * stored with backups of your database.
277 | *
278 | * Example:
279 | * @code
280 | * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt');
281 | * @endcode
282 | */
283 | $settings['hash_salt'] = '';
284 |
285 | /**
286 | * Deployment identifier.
287 | *
288 | * Drupal's dependency injection container will be automatically invalidated and
289 | * rebuilt when the Drupal core version changes. When updating contributed or
290 | * custom code that changes the container, changing this identifier will also
291 | * allow the container to be invalidated as soon as code is deployed.
292 | */
293 | # $settings['deployment_identifier'] = \Drupal::VERSION;
294 |
295 | /**
296 | * Access control for update.php script.
297 | *
298 | * If you are updating your Drupal installation using the update.php script but
299 | * are not logged in using either an account with the "Administer software
300 | * updates" permission or the site maintenance account (the account that was
301 | * created during installation), you will need to modify the access check
302 | * statement below. Change the FALSE to a TRUE to disable the access check.
303 | * After finishing the upgrade, be sure to open this file again and change the
304 | * TRUE back to a FALSE!
305 | */
306 | $settings['update_free_access'] = FALSE;
307 |
308 | /**
309 | * External access proxy settings:
310 | *
311 | * If your site must access the Internet via a web proxy then you can enter the
312 | * proxy settings here. Set the full URL of the proxy, including the port, in
313 | * variables:
314 | * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP
315 | * requests.
316 | * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS
317 | * requests.
318 | * You can pass in the user name and password for basic authentication in the
319 | * URLs in these settings.
320 | *
321 | * You can also define an array of host names that can be accessed directly,
322 | * bypassing the proxy, in $settings['http_client_config']['proxy']['no'].
323 | */
324 | # $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080';
325 | # $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080';
326 | # $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost'];
327 |
328 | /**
329 | * Reverse Proxy Configuration:
330 | *
331 | * Reverse proxy servers are often used to enhance the performance
332 | * of heavily visited sites and may also provide other site caching,
333 | * security, or encryption benefits. In an environment where Drupal
334 | * is behind a reverse proxy, the real IP address of the client should
335 | * be determined such that the correct client IP address is available
336 | * to Drupal's logging, statistics, and access management systems. In
337 | * the most simple scenario, the proxy server will add an
338 | * X-Forwarded-For header to the request that contains the client IP
339 | * address. However, HTTP headers are vulnerable to spoofing, where a
340 | * malicious client could bypass restrictions by setting the
341 | * X-Forwarded-For header directly. Therefore, Drupal's proxy
342 | * configuration requires the IP addresses of all remote proxies to be
343 | * specified in $settings['reverse_proxy_addresses'] to work correctly.
344 | *
345 | * Enable this setting to get Drupal to determine the client IP from
346 | * the X-Forwarded-For header (or $settings['reverse_proxy_header'] if set).
347 | * If you are unsure about this setting, do not have a reverse proxy,
348 | * or Drupal operates in a shared hosting environment, this setting
349 | * should remain commented out.
350 | *
351 | * In order for this setting to be used you must specify every possible
352 | * reverse proxy IP address in $settings['reverse_proxy_addresses'].
353 | * If a complete list of reverse proxies is not available in your
354 | * environment (for example, if you use a CDN) you may set the
355 | * $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
356 | * Be aware, however, that it is likely that this would allow IP
357 | * address spoofing unless more advanced precautions are taken.
358 | */
359 | # $settings['reverse_proxy'] = TRUE;
360 |
361 | /**
362 | * Specify every reverse proxy IP address in your environment.
363 | * This setting is required if $settings['reverse_proxy'] is TRUE.
364 | */
365 | # $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...];
366 |
367 | /**
368 | * Set this value if your proxy server sends the client IP in a header
369 | * other than X-Forwarded-For.
370 | */
371 | # $settings['reverse_proxy_header'] = 'X_CLUSTER_CLIENT_IP';
372 |
373 | /**
374 | * Set this value if your proxy server sends the client protocol in a header
375 | * other than X-Forwarded-Proto.
376 | */
377 | # $settings['reverse_proxy_proto_header'] = 'X_FORWARDED_PROTO';
378 |
379 | /**
380 | * Set this value if your proxy server sends the client protocol in a header
381 | * other than X-Forwarded-Host.
382 | */
383 | # $settings['reverse_proxy_host_header'] = 'X_FORWARDED_HOST';
384 |
385 | /**
386 | * Set this value if your proxy server sends the client protocol in a header
387 | * other than X-Forwarded-Port.
388 | */
389 | # $settings['reverse_proxy_port_header'] = 'X_FORWARDED_PORT';
390 |
391 | /**
392 | * Set this value if your proxy server sends the client protocol in a header
393 | * other than Forwarded.
394 | */
395 | # $settings['reverse_proxy_forwarded_header'] = 'FORWARDED';
396 |
397 | /**
398 | * Page caching:
399 | *
400 | * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page
401 | * views. This tells a HTTP proxy that it may return a page from its local
402 | * cache without contacting the web server, if the user sends the same Cookie
403 | * header as the user who originally requested the cached page. Without "Vary:
404 | * Cookie", authenticated users would also be served the anonymous page from
405 | * the cache. If the site has mostly anonymous users except a few known
406 | * editors/administrators, the Vary header can be omitted. This allows for
407 | * better caching in HTTP proxies (including reverse proxies), i.e. even if
408 | * clients send different cookies, they still get content served from the cache.
409 | * However, authenticated users should access the site directly (i.e. not use an
410 | * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
411 | * getting cached pages from the proxy.
412 | */
413 | # $settings['omit_vary_cookie'] = TRUE;
414 |
415 |
416 | /**
417 | * Cache TTL for client error (4xx) responses.
418 | *
419 | * Items cached per-URL tend to result in a large number of cache items, and
420 | * this can be problematic on 404 pages which by their nature are unbounded. A
421 | * fixed TTL can be set for these items, defaulting to one hour, so that cache
422 | * backends which do not support LRU can purge older entries. To disable caching
423 | * of client error responses set the value to 0. Currently applies only to
424 | * page_cache module.
425 | */
426 | # $settings['cache_ttl_4xx'] = 3600;
427 |
428 | /**
429 | * Expiration of cached forms.
430 | *
431 | * Drupal's Form API stores details of forms in a cache and these entries are
432 | * kept for at least 6 hours by default. Expired entries are cleared by cron.
433 | *
434 | * @see \Drupal\Core\Form\FormCache::setCache()
435 | */
436 | # $settings['form_cache_expiration'] = 21600;
437 |
438 | /**
439 | * Class Loader.
440 | *
441 | * If the APC extension is detected, the Symfony APC class loader is used for
442 | * performance reasons. Detection can be prevented by setting
443 | * class_loader_auto_detect to false, as in the example below.
444 | */
445 | # $settings['class_loader_auto_detect'] = FALSE;
446 |
447 | /*
448 | * If the APC extension is not detected, either because APC is missing or
449 | * because auto-detection has been disabled, auto-loading falls back to
450 | * Composer's ClassLoader, which is good for development as it does not break
451 | * when code is moved in the file system. You can also decorate the base class
452 | * loader with another cached solution than the Symfony APC class loader, as
453 | * all production sites should have a cached class loader of some sort enabled.
454 | *
455 | * To do so, you may decorate and replace the local $class_loader variable. For
456 | * example, to use Symfony's APC class loader without automatic detection,
457 | * uncomment the code below.
458 | */
459 | /*
460 | if ($settings['hash_salt']) {
461 | $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']);
462 | $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader);
463 | unset($prefix);
464 | $class_loader->unregister();
465 | $apc_loader->register();
466 | $class_loader = $apc_loader;
467 | }
468 | */
469 |
470 | /**
471 | * Authorized file system operations:
472 | *
473 | * The Update Manager module included with Drupal provides a mechanism for
474 | * site administrators to securely install missing updates for the site
475 | * directly through the web user interface. On securely-configured servers,
476 | * the Update manager will require the administrator to provide SSH or FTP
477 | * credentials before allowing the installation to proceed; this allows the
478 | * site to update the new files as the user who owns all the Drupal files,
479 | * instead of as the user the webserver is running as. On servers where the
480 | * webserver user is itself the owner of the Drupal files, the administrator
481 | * will not be prompted for SSH or FTP credentials (note that these server
482 | * setups are common on shared hosting, but are inherently insecure).
483 | *
484 | * Some sites might wish to disable the above functionality, and only update
485 | * the code directly via SSH or FTP themselves. This setting completely
486 | * disables all functionality related to these authorized file operations.
487 | *
488 | * @see https://www.drupal.org/node/244924
489 | *
490 | * Remove the leading hash signs to disable.
491 | */
492 | # $settings['allow_authorize_operations'] = FALSE;
493 |
494 | /**
495 | * Default mode for directories and files written by Drupal.
496 | *
497 | * Value should be in PHP Octal Notation, with leading zero.
498 | */
499 | # $settings['file_chmod_directory'] = 0775;
500 | # $settings['file_chmod_file'] = 0664;
501 |
502 | /**
503 | * Public file base URL:
504 | *
505 | * An alternative base URL to be used for serving public files. This must
506 | * include any leading directory path.
507 | *
508 | * A different value from the domain used by Drupal to be used for accessing
509 | * public files. This can be used for a simple CDN integration, or to improve
510 | * security by serving user-uploaded files from a different domain or subdomain
511 | * pointing to the same server. Do not include a trailing slash.
512 | */
513 | # $settings['file_public_base_url'] = 'http://downloads.example.com/files';
514 |
515 | /**
516 | * Public file path:
517 | *
518 | * A local file system path where public files will be stored. This directory
519 | * must exist and be writable by Drupal. This directory must be relative to
520 | * the Drupal installation directory and be accessible over the web.
521 | */
522 | # $settings['file_public_path'] = 'sites/default/files';
523 |
524 | /**
525 | * Private file path:
526 | *
527 | * A local file system path where private files will be stored. This directory
528 | * must be absolute, outside of the Drupal installation directory and not
529 | * accessible over the web.
530 | *
531 | * Note: Caches need to be cleared when this value is changed to make the
532 | * private:// stream wrapper available to the system.
533 | *
534 | * See https://www.drupal.org/documentation/modules/file for more information
535 | * about securing private files.
536 | */
537 | # $settings['file_private_path'] = '';
538 |
539 | /**
540 | * Session write interval:
541 | *
542 | * Set the minimum interval between each session write to database.
543 | * For performance reasons it defaults to 180.
544 | */
545 | # $settings['session_write_interval'] = 180;
546 |
547 | /**
548 | * String overrides:
549 | *
550 | * To override specific strings on your site with or without enabling the Locale
551 | * module, add an entry to this list. This functionality allows you to change
552 | * a small number of your site's default English language interface strings.
553 | *
554 | * Remove the leading hash signs to enable.
555 | *
556 | * The "en" part of the variable name, is dynamic and can be any langcode of
557 | * any added language. (eg locale_custom_strings_de for german).
558 | */
559 | # $settings['locale_custom_strings_en'][''] = [
560 | # 'forum' => 'Discussion board',
561 | # '@count min' => '@count minutes',
562 | # ];
563 |
564 | /**
565 | * A custom theme for the offline page:
566 | *
567 | * This applies when the site is explicitly set to maintenance mode through the
568 | * administration page or when the database is inactive due to an error.
569 | * The template file should also be copied into the theme. It is located inside
570 | * 'core/modules/system/templates/maintenance-page.html.twig'.
571 | *
572 | * Note: This setting does not apply to installation and update pages.
573 | */
574 | # $settings['maintenance_theme'] = 'bartik';
575 |
576 | /**
577 | * PHP settings:
578 | *
579 | * To see what PHP settings are possible, including whether they can be set at
580 | * runtime (by using ini_set()), read the PHP documentation:
581 | * http://php.net/manual/ini.list.php
582 | * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime
583 | * settings and the .htaccess file for non-runtime settings.
584 | * Settings defined there should not be duplicated here so as to avoid conflict
585 | * issues.
586 | */
587 |
588 | /**
589 | * If you encounter a situation where users post a large amount of text, and
590 | * the result is stripped out upon viewing but can still be edited, Drupal's
591 | * output filter may not have sufficient memory to process it. If you
592 | * experience this issue, you may wish to uncomment the following two lines
593 | * and increase the limits of these variables. For more information, see
594 | * http://php.net/manual/pcre.configuration.php.
595 | */
596 | # ini_set('pcre.backtrack_limit', 200000);
597 | # ini_set('pcre.recursion_limit', 200000);
598 |
599 | /**
600 | * Active configuration settings.
601 | *
602 | * By default, the active configuration is stored in the database in the
603 | * {config} table. To use a different storage mechanism for the active
604 | * configuration, do the following prior to installing:
605 | * - Create an "active" directory and declare its path in $config_directories
606 | * as explained under the 'Location of the site configuration files' section
607 | * above in this file. To enhance security, you can declare a path that is
608 | * outside your document root.
609 | * - Override the 'bootstrap_config_storage' setting here. It must be set to a
610 | * callable that returns an object that implements
611 | * \Drupal\Core\Config\StorageInterface.
612 | * - Override the service definition 'config.storage.active'. Put this
613 | * override in a services.yml file in the same directory as settings.php
614 | * (definitions in this file will override service definition defaults).
615 | */
616 | # $settings['bootstrap_config_storage'] = ['Drupal\Core\Config\BootstrapConfigStorageFactory', 'getFileStorage'];
617 |
618 | /**
619 | * Configuration overrides.
620 | *
621 | * To globally override specific configuration values for this site,
622 | * set them here. You usually don't need to use this feature. This is
623 | * useful in a configuration file for a vhost or directory, rather than
624 | * the default settings.php.
625 | *
626 | * Note that any values you provide in these variable overrides will not be
627 | * viewable from the Drupal administration interface. The administration
628 | * interface displays the values stored in configuration so that you can stage
629 | * changes to other environments that don't have the overrides.
630 | *
631 | * There are particular configuration values that are risky to override. For
632 | * example, overriding the list of installed modules in 'core.extension' is not
633 | * supported as module install or uninstall has not occurred. Other examples
634 | * include field storage configuration, because it has effects on database
635 | * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
636 | * a way that is not config override aware. Also, note that changing
637 | * configuration values in settings.php will not fire any of the configuration
638 | * change events.
639 | */
640 | # $config['system.file']['path']['temporary'] = '/tmp';
641 | # $config['system.site']['name'] = 'My Drupal site';
642 | # $config['system.theme']['default'] = 'stark';
643 | # $config['user.settings']['anonymous'] = 'Visitor';
644 |
645 | /**
646 | * Fast 404 pages:
647 | *
648 | * Drupal can generate fully themed 404 pages. However, some of these responses
649 | * are for images or other resource files that are not displayed to the user.
650 | * This can waste bandwidth, and also generate server load.
651 | *
652 | * The options below return a simple, fast 404 page for URLs matching a
653 | * specific pattern:
654 | * - $config['system.performance']['fast_404']['exclude_paths']: A regular
655 | * expression to match paths to exclude, such as images generated by image
656 | * styles, or dynamically-resized images. The default pattern provided below
657 | * also excludes the private file system. If you need to add more paths, you
658 | * can add '|path' to the expression.
659 | * - $config['system.performance']['fast_404']['paths']: A regular expression to
660 | * match paths that should return a simple 404 page, rather than the fully
661 | * themed 404 page. If you don't have any aliases ending in htm or html you
662 | * can add '|s?html?' to the expression.
663 | * - $config['system.performance']['fast_404']['html']: The html to return for
664 | * simple 404 pages.
665 | *
666 | * Remove the leading hash signs if you would like to alter this functionality.
667 | */
668 | # $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//';
669 | # $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
670 | # $config['system.performance']['fast_404']['html'] = '404 Not FoundNot Found
The requested URL "@path" was not found on this server.
';
671 |
672 | /**
673 | * Load services definition file.
674 | */
675 | $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';
676 |
677 | /**
678 | * Override the default service container class.
679 | *
680 | * This is useful for example to trace the service container for performance
681 | * tracking purposes, for testing a service container with an error condition or
682 | * to test a service container that throws an exception.
683 | */
684 | # $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container';
685 |
686 | /**
687 | * Override the default yaml parser class.
688 | *
689 | * Provide a fully qualified class name here if you would like to provide an
690 | * alternate implementation YAML parser. The class must implement the
691 | * \Drupal\Component\Serialization\SerializationInterface interface.
692 | */
693 | # $settings['yaml_parser_class'] = NULL;
694 |
695 | /**
696 | * Trusted host configuration.
697 | *
698 | * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host
699 | * header spoofing.
700 | *
701 | * To enable the trusted host mechanism, you enable your allowable hosts
702 | * in $settings['trusted_host_patterns']. This should be an array of regular
703 | * expression patterns, without delimiters, representing the hosts you would
704 | * like to allow.
705 | *
706 | * For example:
707 | * @code
708 | * $settings['trusted_host_patterns'] = array(
709 | * '^www\.example\.com$',
710 | * );
711 | * @endcode
712 | * will allow the site to only run from www.example.com.
713 | *
714 | * If you are running multisite, or if you are running your site from
715 | * different domain names (eg, you don't redirect http://www.example.com to
716 | * http://example.com), you should specify all of the host patterns that are
717 | * allowed by your site.
718 | *
719 | * For example:
720 | * @code
721 | * $settings['trusted_host_patterns'] = array(
722 | * '^example\.com$',
723 | * '^.+\.example\.com$',
724 | * '^example\.org$',
725 | * '^.+\.example\.org$',
726 | * );
727 | * @endcode
728 | * will allow the site to run off of all variants of example.com and
729 | * example.org, with all subdomains included.
730 | */
731 |
732 | /**
733 | * The default list of directories that will be ignored by Drupal's file API.
734 | *
735 | * By default ignore node_modules and bower_components folders to avoid issues
736 | * with common frontend tools and recursive scanning of directories looking for
737 | * extensions.
738 | *
739 | * @see file_scan_directory()
740 | * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory()
741 | */
742 | $settings['file_scan_ignore_directories'] = [
743 | 'node_modules',
744 | 'bower_components',
745 | ];
746 |
747 | /**
748 | * The default number of entities to update in a batch process.
749 | *
750 | * This is used by update and post-update functions that need to go through and
751 | * change all the entities on a site, so it is useful to increase this number
752 | * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a
753 | * larger number of entities to be processed in a single batch run.
754 | */
755 | $settings['entity_update_batch_size'] = 50;
756 |
757 | /**
758 | * Load local development override configuration, if available.
759 | *
760 | * Use settings.local.php to override variables on secondary (staging,
761 | * development, etc) installations of this site. Typically used to disable
762 | * caching, JavaScript/CSS compression, re-routing of outgoing emails, and
763 | * other things that should not happen on development and testing sites.
764 | *
765 | * Keep this code block at the end of this file to take full effect.
766 | */
767 |
768 | if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
769 | include $app_root . '/' . $site_path . '/settings.local.php';
770 | }
771 |
772 | // Automatically generated include for settings managed by ddev.
773 | $ddev_settings = dirname(__FILE__) . '/settings.ddev.php';
774 | if (is_readable($ddev_settings) && getenv('IS_DDEV_PROJECT') == 'true') {
775 | require $ddev_settings;
776 | }
777 |
--------------------------------------------------------------------------------
/web/sites/development.services.yml:
--------------------------------------------------------------------------------
1 | # Local development services.
2 | #
3 | # To activate this feature, follow the instructions at the top of the
4 | # 'example.settings.local.php' file, which sits next to this file.
5 | parameters:
6 | http.response.debug_cacheability_headers: true
7 | twig.config:
8 | debug: true
9 | auto_reload: true
10 | cache: false
11 | services:
12 | cache.backend.null:
13 | class: Drupal\Core\Cache\NullBackendFactory
14 |
--------------------------------------------------------------------------------
/web/sites/example.settings.local.php:
--------------------------------------------------------------------------------
1 | ..' => 'directory'. As an
26 | * example, to map https://www.drupal.org:8080/mysite/test to the configuration
27 | * directory sites/example.com, the array should be defined as:
28 | * @code
29 | * $sites = [
30 | * '8080.www.drupal.org.mysite.test' => 'example.com',
31 | * ];
32 | * @endcode
33 | * The URL, https://www.drupal.org:8080/mysite/test/, could be a symbolic link
34 | * or an Apache Alias directive that points to the Drupal root containing
35 | * index.php. An alias could also be created for a subdomain. See the
36 | * @link https://www.drupal.org/documentation/install online Drupal installation guide @endlink
37 | * for more information on setting up domains, subdomains, and subdirectories.
38 | *
39 | * The following examples look for a site configuration in sites/example.com:
40 | * @code
41 | * URL: http://dev.drupal.org
42 | * $sites['dev.drupal.org'] = 'example.com';
43 | *
44 | * URL: http://localhost/example
45 | * $sites['localhost.example'] = 'example.com';
46 | *
47 | * URL: http://localhost:8080/example
48 | * $sites['8080.localhost.example'] = 'example.com';
49 | *
50 | * URL: https://www.drupal.org:8080/mysite/test/
51 | * $sites['8080.www.drupal.org.mysite.test'] = 'example.com';
52 | * @endcode
53 | *
54 | * @see default.settings.php
55 | * @see \Drupal\Core\DrupalKernel::getSitePath()
56 | * @see https://www.drupal.org/documentation/install/multi-site
57 | */
58 |
--------------------------------------------------------------------------------
/web/themes/.gitignore:
--------------------------------------------------------------------------------
1 | README.txt
--------------------------------------------------------------------------------
/web/themes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normanlolx/drupal-circleci-behat/b46cbdb07f8a2e80cec7b36a3d433afd56d85565/web/themes/.gitkeep
--------------------------------------------------------------------------------
/web/update.php:
--------------------------------------------------------------------------------
1 | handle($request);
28 | $response->send();
29 |
30 | $kernel->terminate($request, $response);
31 |
--------------------------------------------------------------------------------
/web/web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
13 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
39 |
48 |
49 |
52 |
61 |
62 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------