chrisbryan17 commited on
Commit
d2897cd
1 Parent(s): c1fdef2

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .ddev/.env.local.dist +3 -0
  2. .ddev/commands/redis/redis-cli +7 -0
  3. .ddev/commands/web/ddev-setup-mautic +5 -0
  4. .ddev/config.yaml +22 -0
  5. .ddev/docker-compose.network-mtu.yaml +18 -0
  6. .ddev/docker-compose.redis-commander.yaml +24 -0
  7. .ddev/docker-compose.redis.yaml +22 -0
  8. .ddev/gitpod-setup-ddev.sh +14 -0
  9. .ddev/local.config.php.dist +18 -0
  10. .ddev/mautic-setup.sh +55 -0
  11. .ddev/redis/redis.conf +8 -0
  12. .gitattributes +1 -0
  13. .github/CODEOWNERS +1 -0
  14. .github/CODE_OF_CONDUCT.md +103 -0
  15. .github/CONTRIBUTING.md +17 -0
  16. .github/FUNDING.yml +2 -0
  17. .github/ISSUE_TEMPLATE/BUG-REPORT.yml +97 -0
  18. .github/ISSUE_TEMPLATE/config.yml +8 -0
  19. .github/PULL_REQUEST_TEMPLATE.md +58 -0
  20. .github/SUPPORT.md +98 -0
  21. .github/ci-files/.my.cnf +5 -0
  22. .github/ci-files/composer.json +184 -0
  23. .github/ci-files/local.php +15 -0
  24. .github/readme_image.png +0 -0
  25. .github/release.yml +24 -0
  26. .github/scripts/bounties.js +59 -0
  27. .github/scripts/package-lock.json +167 -0
  28. .github/scripts/package.json +9 -0
  29. .github/stale.yml +19 -0
  30. .github/subtree-splitter-config.json +174 -0
  31. .github/workflows/bounties.yml +27 -0
  32. .github/workflows/build-grapesjs-assets.yml +42 -0
  33. .github/workflows/closed-issue-reply.yaml +20 -0
  34. .github/workflows/generate-release-notes.yml +35 -0
  35. .github/workflows/gitsplit/core-lib.json +9 -0
  36. .github/workflows/gitsplit/plugin-clearbit.json +9 -0
  37. .github/workflows/gitsplit/plugin-cloudstorage.json +9 -0
  38. .github/workflows/gitsplit/plugin-crm.json +9 -0
  39. .github/workflows/gitsplit/plugin-emailmarketing.json +9 -0
  40. .github/workflows/gitsplit/plugin-focus.json +9 -0
  41. .github/workflows/gitsplit/plugin-fullcontact.json +9 -0
  42. .github/workflows/gitsplit/plugin-gmail.json +9 -0
  43. .github/workflows/gitsplit/plugin-grapesjs.json +9 -0
  44. .github/workflows/gitsplit/plugin-outlook.json +9 -0
  45. .github/workflows/gitsplit/plugin-social.json +9 -0
  46. .github/workflows/gitsplit/plugin-tagmanager.json +9 -0
  47. .github/workflows/gitsplit/plugin-zapier.json +9 -0
  48. .github/workflows/gitsplit/theme-aurora.json +9 -0
  49. .github/workflows/gitsplit/theme-blank.json +9 -0
  50. .github/workflows/gitsplit/theme-brienz.json +9 -0
.ddev/.env.local.dist ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ # .env.local
2
+ APP_ENV=dev
3
+ APP_DEBUG=1
.ddev/commands/redis/redis-cli ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ ## Description: Run redis-cli inside the redis container
4
+ ## Usage: redis-cli [flags] [args]
5
+ ## Example: "redis-cli KEYS *" or "ddev redis-cli INFO" or "ddev redis-cli --version"
6
+
7
+ redis-cli -p 6379 -h redis $@
.ddev/commands/web/ddev-setup-mautic ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ source ./.ddev/mautic-setup.sh
4
+ echo "ddev-managed" > ./.ddev/mautic-preference
5
+ setup_mautic
.ddev/config.yaml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ type: php
2
+ docroot: ""
3
+ php_version: "8.2"
4
+ webserver_type: apache-fpm
5
+ router_http_port: "80"
6
+ router_https_port: "443"
7
+ xdebug_enabled: false
8
+ additional_hostnames: []
9
+ additional_fqdns: []
10
+ mariadb_version: "10.3"
11
+ mysql_version: ""
12
+ provider: default
13
+ upload_dir: "media/files, media/images" # Specify the directories containing user-generated uploads
14
+ use_dns_when_possible: true
15
+ composer_version: "2"
16
+ webimage_extra_packages: [php8.2-imap]
17
+ hooks:
18
+ post-start:
19
+ # Fix line endings on Windows
20
+ - exec: sed -i -e 's/\r$//' ./.ddev/mautic-setup.sh
21
+ - exec: sed -i -e 's/\r$//' ./.git/hooks/*
22
+ - exec: "yes | ./.ddev/mautic-setup.sh"
.ddev/docker-compose.network-mtu.yaml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Temporary fix for network issues when running composer inside ddev container (in Gitpod)
2
+ #
3
+ # Since Gitpod removed slirp4netns as part of performance improvements,
4
+ # MTU value should be aligned to the one in gitpod.io
5
+ #
6
+ # Gitpod fixed it for docker - https://github.com/gitpod-io/gitpod/pull/9356
7
+ # and for docker-compose - https://github.com/gitpod-io/template-docker-compose/pull/4
8
+ #
9
+ # ddev doesn't use Gitpod's custom docker-compose binary. Instead, ddev uses
10
+ # its own docker-compose binary at /home/gitpod/.ddev/bin/docker-compose
11
+ # ddev issue [WIP] - https://github.com/drud/ddev/issues/3766
12
+ #
13
+ # Align the MTU value to the one that is set in Gitpod (1440)
14
+
15
+ networks:
16
+ default:
17
+ driver_opts:
18
+ com.docker.network.driver.mtu: 1440
.ddev/docker-compose.redis-commander.yaml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.6'
2
+ services:
3
+ redis-commander:
4
+ container_name: ddev-${DDEV_SITENAME}-redis-commander
5
+ hostname: ${DDEV_SITENAME}-redis-commander
6
+ image: ghcr.io/joeferner/redis-commander:latest
7
+ restart: always
8
+ ports:
9
+ - 1358
10
+ labels:
11
+ com.ddev.site-name: ${DDEV_SITENAME}
12
+ com.ddev.approot: $DDEV_APPROOT
13
+ environment:
14
+ - VIRTUAL_HOST=$DDEV_HOSTNAME
15
+ - HTTP_EXPOSE=1358
16
+ - HTTPS_EXPOSE=1359:1358
17
+ - REDIS_PORT=6379
18
+ - REDIS_HOST=redis
19
+ - PORT=1358
20
+ volumes:
21
+ - ".:/mnt/ddev_config"
22
+ redis:
23
+ links:
24
+ - redis-commander:redis-commander
.ddev/docker-compose.redis.yaml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ddev redis recipe file
2
+ #
3
+ version: "3.6"
4
+
5
+ services:
6
+ redis:
7
+ container_name: ddev-${DDEV_SITENAME}-redis
8
+ image: redis:5
9
+ ports:
10
+ - 6379
11
+ labels:
12
+ com.ddev.site-name: ${DDEV_SITENAME}
13
+ com.ddev.approot: $DDEV_APPROOT
14
+ volumes:
15
+ - ".:/mnt/ddev_config"
16
+ - "./redis:/usr/local/etc/redis"
17
+ command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
18
+ web:
19
+ depends_on:
20
+ - redis
21
+ links:
22
+ - redis:redis
.ddev/gitpod-setup-ddev.sh ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ # Set up ddev for use on gitpod
4
+
5
+ set -eu -o pipefail
6
+
7
+ # Misc housekeeping before start
8
+ ddev config global --router-bind-all-interfaces
9
+ # Pass the GITPOD_WORKSPACE_URL env variable to the web container for our setup script
10
+ ddev config global --web-environment="MAUTIC_URL=$(gp url 8080),PHPMYADMIN_URL=$(gp url 8036),MAILHOG_URL=$(gp url 8025),DRUSH_OPTIONS_URI=https://127.0.0.1:8080"
11
+
12
+ ddev get ddev/ddev-phpmyadmin
13
+
14
+ ddev start -y
.ddev/local.config.php.dist ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $parameters = [
3
+ 'api_enabled' => true,
4
+ 'api_enable_basic_auth' => true,
5
+ 'db_driver' => 'pdo_mysql',
6
+ 'db_host' => 'db',
7
+ 'db_table_prefix' => null,
8
+ 'db_port' => 3306,
9
+ 'db_name' => 'db',
10
+ 'db_user' => 'db',
11
+ 'db_password' => 'db',
12
+ 'admin_email' => 'mautic@ddev.local',
13
+ 'admin_password' => 'Maut1cR0cks!',
14
+ 'install_source' => 'DDEV',
15
+ 'mailer_from_name' => 'DDEV',
16
+ 'mailer_from_email' => 'mautic@ddev.local',
17
+ 'mailer_dsn' => 'smtp://localhost:1025',
18
+ ];
.ddev/mautic-setup.sh ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ setup_mautic() {
4
+ [ -z "${MAUTIC_URL}" ] && MAUTIC_URL="https://${DDEV_HOSTNAME}"
5
+ [ -z "${PHPMYADMIN_URL}" ] && PHPMYADMIN_URL="https://${DDEV_HOSTNAME}:8037"
6
+ [ -z "${MAILHOG_URL}" ] && MAILHOG_URL="https://${DDEV_HOSTNAME}:8026"
7
+
8
+ printf "Installing Mautic Composer dependencies...\n"
9
+ composer install
10
+
11
+ cp ./.ddev/local.config.php.dist ./config/local.php
12
+ cp ./.ddev/.env.test.local ./.env.test.local
13
+ cp ./.ddev/.env.local.dist ./.env.local
14
+
15
+ printf "Installing Mautic...\n"
16
+ php bin/console mautic:install "${MAUTIC_URL}"
17
+ php bin/console cache:warmup --no-interaction --env=dev
18
+
19
+ printf "Enabling plugins...\n"
20
+ php bin/console mautic:plugins:reload
21
+
22
+ tput setaf 2
23
+ printf "All done! Here's some useful information:\n"
24
+ printf "🔒 The default login is admin / Maut1cR0cks!\n"
25
+ printf "🌐 To open the Mautic instance, go to ${MAUTIC_URL} in your browser.\n"
26
+ printf "🌐 To open PHPMyAdmin for managing the database, go to ${PHPMYADMIN_URL} in your browser.\n"
27
+ printf "🌐 To open MailHog for seeing all emails that Mautic sent, go to ${MAILHOG_URL} in your browser.\n"
28
+ printf "🚀 Run \"ddev exec composer test\" to run PHPUnit tests.\n"
29
+ printf "🚀 Run \"ddev exec bin/console COMMAND\" (like mautic:segments:update) to use the Mautic CLI. For an overview of all available CLI commands, go to https://mau.tc/cli\n"
30
+ printf "🔴 If you want to stop the instance, simply run \"ddev stop\".\n"
31
+ tput sgr0
32
+ }
33
+
34
+ # Check if the user has indicated their preference for the Mautic installation
35
+ # already (DDEV-managed or self-managed)
36
+ if ! test -f ./.ddev/mautic-preference
37
+ then
38
+ tput setab 3
39
+ tput setaf 0
40
+ printf "Do you want us to set up the Mautic instance for you with the recommended settings for DDEV?\n"
41
+ printf "If you answer \"no\", you will have to set up the Mautic instance yourself."
42
+ tput sgr0
43
+ printf "\nAnswer [yes/no]: "
44
+ read MAUTIC_PREF
45
+
46
+ if [ $MAUTIC_PREF == "yes" ] || [ -n $GITPOD_HEADLESS ];
47
+ then
48
+ printf "Okay, setting up your Mautic instance... 🚀\n"
49
+ echo "ddev-managed" > ./.ddev/mautic-preference
50
+ setup_mautic
51
+ else
52
+ printf "Okay, you'll have to set up the Mautic instance yourself. That's what pros do, right? Good luck! 🚀\n"
53
+ echo "unmanaged" > ./.ddev/mautic-preference
54
+ fi
55
+ fi
.ddev/redis/redis.conf ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Redis configuration.
2
+ #
3
+ # Example configuration files for reference:
4
+ # http://download.redis.io/redis-stable/redis.conf
5
+ # http://download.redis.io/redis-stable/sentinel.conf
6
+
7
+ maxmemory 2048mb
8
+ maxmemory-policy allkeys-lru
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ app/bundles/CoreBundle/Assets/css/libraries/emoji/emoji.png filter=lfs diff=lfs merge=lfs -text
.github/CODEOWNERS ADDED
@@ -0,0 +1 @@
 
 
1
+ **/app/bundles/EmailBundle @mabumusa1
.github/CODE_OF_CONDUCT.md ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The primary source of the Code of Conduct is at [mautic.org](https://www.mautic.org/code-of-conduct/) - it is reproduced here for reference.
2
+
3
+ ## 1. Purpose
4
+
5
+ A primary goal of the Mautic community is to support you and your business in the development, use and implementation of Mautic. It’s to be inclusive and add value to the largest number of participants, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all.
6
+
7
+ This code of conduct outlines our expectations for all those who participate in our community, whether in-person or online, as well as the consequences for unacceptable behavior.
8
+
9
+ Your participation is contingent upon following these guidelines in all Mautic activities, including but not limited to:
10
+
11
+ * Using Mautic community resources.
12
+ * Working with other Mauticians and other Mautic community participants whether virtually or co-located.
13
+ * Representing Mautic at public events.
14
+ * Representing Mautic in social media (official accounts, personal accounts, Facebook pages and groups).
15
+ * Participating in Mautic sprints and training events.
16
+ * Participating in Mautic-related forums, mailing lists, wikis, websites, chat channels, bugs, group or person-to-person meetings, and Mautic-related correspondence.
17
+
18
+ We invite all those who participate in Mautic activities online to help us create safe and positive experiences for everyone, everywhere.
19
+
20
+
21
+ ## 2. Open Source & Culture Citizenship
22
+
23
+ A supplemental goal of this Code of Conduct is to increase open source and culture citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
24
+
25
+ Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
26
+
27
+ If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, please recognize their efforts.
28
+
29
+ ## 3. Welcoming to all
30
+ We are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience or job role, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, national origin, citizenship and immigration status, neurodiversity, mental health or socio-economic status.
31
+
32
+
33
+ ## 4. Expected Behavior
34
+
35
+ The following behaviors are expected and requested of all community members:
36
+
37
+ * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
38
+ * Exercise consideration and respect in your speech and actions.
39
+ * Attempt collaboration before conflict.
40
+ * Guide conversations toward issue resolution.
41
+ * Refrain from demeaning, discriminatory, or harassing behavior and speech.
42
+
43
+ Alert Mautic team members if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
44
+
45
+ ## 5. Unacceptable Behavior
46
+
47
+ The following behaviors are considered harassment and are unacceptable within our community:
48
+
49
+ * **Violence and Threats of Violence** are not acceptable - online or offline. This includes incitement of violence toward any individual, including encouraging a person to commit self-harm. This also includes posting or threatening to post other people’s personally identifying information (“doxxing”) online.
50
+ * **Public or private harassment** is never acceptable in any form.
51
+ * **Personal Attacks** Conflicts will inevitably arise, but frustration should never turn into a personal attack. It is not okay to insult, demean or belittle others. Attacking someone for their opinions, beliefs and ideas is not acceptable. It is important to speak directly when we disagree and when we think we need to improve, but such discussions must be conducted respectfully and professionally, remaining focused on the issue at hand.
52
+ * **Derogatory Language** Hurtful or harmful language is never acceptable in any context related to: background, family status, gender, gender identity or expression, marital status, sex, sexual orientation, personal appearance, body size, native language, age, ability, neurodiversity, mental health, race and/or ethnicity, national origin, citizenship and immigration status, socioeconomic status, religion, geographic location.
53
+ * **Unwelcome Sexual Attention or Physical Contact** Unwelcome sexual attention or unwelcome physical contact is not acceptable. This includes sexualized comments, jokes or imagery in interactions, communications or presentation materials, as well as inappropriate touching, groping, or sexual advances. This includes touching a person without permission, including sensitive areas such as their hair, pregnant stomach, mobility device (wheelchair, scooter, etc) or tattoos. This also includes physically blocking or intimidating another person. Physical contact or simulated physical contact (such as emojis like “kiss”) without affirmative consent is not acceptable. This includes sharing or distribution of sexualized images or text.
54
+ * **Disruptive Behavior** Sustained disruption of events, forums, or meetings, including talks and presentations, will not be tolerated. This includes spamming community discussions with the solicitation of unwanted products or services.
55
+ * **Influencing Disruptive Behavior** We will treat influencing or leading such activities the same way we treat the activities themselves, and thus the same consequences apply.
56
+ * **Corporate Promotions** Sharing of demo/trial/landing page links and other corporate promotions are never permitted unless explicitly requested by a community member. The only exceptions are that the moderated [Commercial forum category](https://forum.mautic.org/c/commercial) may be used to promote opportunities which may be relevant for members of the community (for example job opportunities, freelance gigs) and Mautic Community Partners may promote their products and services on their partners page.
57
+ * **Scraping contacts** by name or any other personally identifiable information for unsolicited communication is never acceptable in any form.
58
+
59
+ ## 6. Consequences of Unacceptable Behavior
60
+
61
+ Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
62
+
63
+ Anyone asked to stop unacceptable behavior is expected to comply immediately.
64
+
65
+ If a community member engages in unacceptable behavior, we may take any action deemed appropriate, up to and including a temporary ban or permanent expulsion from the community without warning. Examples of sanctions which may be applied include but is not limited to:
66
+ * Verbal warnings.
67
+ * Written warnings.
68
+ * Temporary absence from participation.
69
+ * Long-term absence from participation.
70
+ * Being required to follow a conduct agreement that dictates the process of returning to the community.
71
+
72
+
73
+ ## 7. Reporting Guidelines
74
+ If you are subject to or witness unacceptable behavior, or have any other concerns, please notify us as soon as possible by emailing info@mautic.org, or contacting a Mautic team member on the specific platform.
75
+
76
+ Processes for dealing with breaches of the Code of Conduct can be found [here][coc-breaches].
77
+
78
+ ## 8. Addressing Grievances
79
+ Only permanent resolutions (such as bans) may be appealed. To appeal a decision, contact the Mautic team at info@mautic.org with your appeal and the team will review the situation.
80
+
81
+ ## 9. Scope
82
+ We expect all community participants (contributors, moderators and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community affairs.
83
+
84
+ While this code of conduct is specifically aimed at Mautic’s official resources and community, we recognize that it is possible for actions taken outside of Mautic’s official online or in person spaces to have a deep impact on community health.
85
+
86
+ Resources or incidents which break this code of conduct for any reason in a non-Mautic community location will be considered in the same way as resources or incidents from owned channels, and subject to the same sanctions.
87
+
88
+ ## 10. Contact info
89
+ For more information, please contact info@mautic.org.
90
+
91
+ ## 11. License and attribution
92
+ This Code of Conduct is directly adapted from the Stumptown Syndicate and distributed under a [Creative Commons Attribution-ShareAlike license][cc-by-sa].
93
+
94
+ Additional text from [Mozilla Community Participation Guidelines][mozilla-guidelines] distributed under a [Creative Commons Attribution-ShareAlike license][cc-by-sa].
95
+
96
+ Reviewed and updated using the [Mozilla Code of Conduct Assessment Tool][mozilla-tool].
97
+
98
+ [coc-breaches]: </policies/code-of-conduct-breaches>
99
+ [mozilla-guidelines]: <https://www.mozilla.org/en-US/about/governance/policies/participation/>
100
+ [cc-by-sa]: <https://creativecommons.org/licenses/by-sa/3.0/>
101
+ [mozilla-tool]:<https://mozilla.github.io/diversity-coc-review.io>
102
+
103
+ (Code of Conduct is subject to change without notice).
.github/CONTRIBUTING.md ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Reporting Security Vulnerabilities
2
+
3
+ If you think that you have found a security vulnerability, please report it at [https://huntr.dev](https://huntr.dev) with as much detail as possible. The Core Team will review the vulnerability and if found applicable, will assign a CVE ID and issue a fix. The vulnerability will be disclosed once the patch has been included into a release.
4
+
5
+ ## Contributing to Mautic
6
+
7
+ Contribution is open and available to any member of the Mautic community. All fixes and improvements are done through Pull Requests on Github. This code is open source and publicly available.
8
+
9
+ We have five teams in the Mautic Community (Community, Education, Legal & Finance, Marketing and Product), all of whom welcome new contributors!
10
+
11
+ Please review our [Community Handbook](https://contribute.mautic.org/contributing-to-mautic) for more guidance on contributing to Mautic.
12
+
13
+ ## Developer Documentation
14
+
15
+ Developer documentation is available at [https://developer.mautic.org](https://developer.mautic.org). To make additions or corrections to the documentation, submit Issues or Pull Requests against [https://github.com/mautic/developer-documentation](https://github.com/mautic/developer-documentation).
16
+
17
+
.github/FUNDING.yml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ github: mautic
2
+ open_collective: mautic
.github/ISSUE_TEMPLATE/BUG-REPORT.yml ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Bug Report
2
+ description: File a bug report
3
+ title: "Your bug title goes here!"
4
+ labels: [bug, needs-triage]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill out this bug report!
10
+ Before you create the issue:
11
+ - Search for similar reports among other reported issues.
12
+ - Learn how to troubleshoot at https://www.mautic.org/docs/en/tips/troubleshooting.html
13
+ # - type: input
14
+ # id: contact
15
+ # attributes:
16
+ # label: Contact Details
17
+ # description: How can we get in touch with you if we need more info?
18
+ # placeholder: ex. email@example.com
19
+ # validations:
20
+ # required: false
21
+ - type: dropdown
22
+ id: Mautic_Version
23
+ attributes:
24
+ label: Mautic Version
25
+ description: What version of Mautic you are using? Please test to reproduce your bug with the [latest stable version of Mautic](https://www.mautic.org/mautic-releases) which might contain new fixes. If you are able, please also check the latest development release.
26
+ options:
27
+ - 5.0.x series
28
+ - 4.4.x series
29
+ - 4.3.x series (not supported)
30
+ - 4.2.x series (not supported)
31
+ - 4.1.x series (not supported)
32
+ - 4.0.x series (not supported)
33
+ - 3.3.x series (not supported)
34
+ validations:
35
+ required: true
36
+ - type: dropdown
37
+ id: Installation_type
38
+ attributes:
39
+ label: Way of installing
40
+ description: How did you install Mautic?
41
+ options:
42
+ - I downloaded a release from https://www.mautic.org/mautic-releases
43
+ - I installed with composer using https://github.com/mautic/recommended-project
44
+ - I'm using a Docker image from https://hub.docker.com/r/mautic/mautic
45
+ - I cloned the Mautic repo (not recommended or supported)
46
+ - Other (please specify if relevant in the bug report)
47
+ validations:
48
+ required: true
49
+ - type: input
50
+ id: PHP_version
51
+ attributes:
52
+ label: PHP version
53
+ description: What PHP version are you using in your environment?
54
+ placeholder: ex. 8.0.20
55
+ validations:
56
+ required: true
57
+ - type: dropdown
58
+ id: browsers
59
+ attributes:
60
+ label: What browsers are you seeing the problem on?
61
+ multiple: true
62
+ options:
63
+ - Firefox
64
+ - Chrome
65
+ - Safari
66
+ - Microsoft Edge
67
+ - Not relevant
68
+ - type: textarea
69
+ id: what_happened
70
+ attributes:
71
+ label: What happened?
72
+ description: Also tell us, what did you expect to happen?
73
+ value: "A bug happened!"
74
+ validations:
75
+ required: true
76
+ - type: textarea
77
+ id: how_to_reproduce
78
+ attributes:
79
+ label: How can we reproduce this issue?
80
+ description: Explain to us carefully how we can reproduce the bug you faced.
81
+ value: "Step 1: "
82
+ validations:
83
+ required: true
84
+ - type: textarea
85
+ id: logs
86
+ attributes:
87
+ label: Relevant log output
88
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. Please check to ensure that you are not sharing any sensitive information in your logs (replace with REDACTED as required)
89
+ render: shell
90
+ - type: checkboxes
91
+ id: terms
92
+ attributes:
93
+ label: Code of Conduct
94
+ description: By submitting this issue, you agree that you have read and agree to follow our [Code of Conduct](https://contribute.mautic.org/policies/code-of-conduct)
95
+ options:
96
+ - label: I confirm that I have read and agree to follow this project's Code of Conduct
97
+ required: true
.github/ISSUE_TEMPLATE/config.yml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Mautic Community Support
4
+ url: https://forum.mautic.org/c/support
5
+ about: Please ask and answer support questions here.
6
+ - name: Mautic Feature Requests
7
+ url: https://forum.mautic.org/c/ideas
8
+ about: We use GitHub issues as a bug tracker only. Please go to https://forum.mautic.org/c/ideas to find support and discuss features/ideas.
.github/PULL_REQUEST_TEMPLATE.md ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- ## Which branch should I use for my PR?
2
+
3
+ Assuming that:
4
+
5
+ a = current major release
6
+ b = current minor release
7
+ c = future major release
8
+
9
+ * a.x for any features and enhancements (e.g. 5.x)
10
+ * a.b for any bug fixes (e.g. 4.4, 5.1)
11
+ * c.x for any features, enhancements or bug fixes with backward compatibility breaking changes (e.g. 5.x) -->
12
+
13
+ | Q | A
14
+ | -------------------------------------- | ---
15
+ | Bug fix? (use the a.b branch) | 🔴🟢 <!-- Use emojis to indicate positive (green) or negative (red) for each item in the table. -->
16
+ | New feature/enhancement? (use the a.x branch) | 🔴🟢
17
+ | Deprecations? | 🔴🟢
18
+ | BC breaks? (use the c.x branch) | 🔴🟢
19
+ | Automated tests included? | 🔴🟢 <!-- All PRs must maintain or improve code coverage -->
20
+ | Related user documentation PR URL | mautic/user-documentation#... <!-- required for new features -->
21
+ | Related developer documentation PR URL | mautic/developer-documentation-new#... <!-- required for developer-facing changes -->
22
+ | Issue(s) addressed | Fixes #... <!-- prefix each issue number with "Fixes #", no need to create an issue if none exists, explain below instead -->
23
+
24
+ <!--
25
+ Additionally (see https://contribute.mautic.org/contributing-to-mautic/developer/code/pull-requests#work-on-your-pull-request):
26
+ - Always add tests and ensure they pass.
27
+ - Bug fixes must be submitted against the lowest maintained branch where they apply
28
+ (lowest branches are regularly merged to upper ones so they get the fixes too.)
29
+ - Features and deprecations must be submitted against the "4.x" branch.
30
+ -->
31
+
32
+ ## Description
33
+
34
+
35
+
36
+ <!--
37
+ Please write a short README for your feature/bugfix. This will help people understand your PR and what it aims to do. If you are fixing a bug and if there is no linked issue already, please provide steps to reproduce the issue here.
38
+ -->
39
+ <!-- Remove HTML comment markup below to use the table for screenshots when relevant. -->
40
+ <!--
41
+ | Before | After
42
+ | -------------------------------------- | ---
43
+ | |
44
+ -->
45
+
46
+
47
+ ---
48
+ ### 📋 Steps to test this PR:
49
+
50
+ <!--
51
+ This part is crucial. Take the time to write very clear, annotated and step by step test instructions, because testers may not be developers.
52
+ -->
53
+ 1. Open this PR on Gitpod or pull down for testing locally (see docs on testing PRs [here](https://contribute.mautic.org/contributing-to-mautic/tester))
54
+ 2.
55
+
56
+ <!--
57
+ If you have any deprecations and backwards compatibility breaks, list them here along with the new alternative.
58
+ -->
.github/SUPPORT.md ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Support
2
+
3
+ > This project has a [code of conduct][coc].
4
+ > By interacting with this repository, organization, or community you agree to abide by its terms.
5
+
6
+ Hi! 👋
7
+ We’re excited that you’re using **Mautic** and we’d love to help.
8
+
9
+ To help us help you, please read through the following guidelines.
10
+
11
+ Please understand that people involved with this project often do so for fun, next to their day job; you are not entitled to free customer service.
12
+
13
+ ## Contents
14
+
15
+ * [Getting support](#getting-support)
16
+ * [Asking quality questions](#asking-quality-questions)
17
+ * [Contributions](#contributions)
18
+ * [Chatting with the community](#chatting-with-the-community)
19
+ * [License](#license)
20
+
21
+ ## Getting support
22
+
23
+ The Mautic Community provides support through our [Community Forums][forums]. We ask that you please **post any and all support questions** on the forum. Posting them on Github will result in the issue being closed and you will be asked to post on the forums. Posting on Slack will result in you being asked to post them on the forum. So, please post it on the forum first time and don't waste the time of our team :)
24
+
25
+ The reason we as this of you is because:
26
+
27
+ * Our forum is very well indexed by search engines, which helps others find the answers to questions and problems quickly - questions in Slack are not searchable or indexed
28
+ * You can search the forum and see if others already had - and fixed or addressed - this issue
29
+ * Our forum has an intuitive search-while-you-type system which means you will be presented with existing posts that might be related to your issue
30
+ * We need to keep Github issues decluttered, only being used for suspected or confirmed bugs with Mautic - not requests for support - so that our developers can focus on making Mautic better
31
+ * Our volunteers are able to have one place to look for and answer support questions, which helps them use their time more effectively
32
+
33
+ Read more about how we use Slack and the forums together [here][slack-forums].
34
+
35
+ If you think you've found a bug but you're not sure, please post first on the forums. Then our community can help you to debug and troubleshoot, and raise an issue on Github at a later date, if indeed it is a bug. We have Github integrated with our forums, so if you mention an issue or PR on the forums it will be linked up to the Github issue/PR by a comment in the stream.
36
+
37
+ ### Asking quality questions
38
+
39
+ Help us help you!
40
+
41
+ Spending time framing a question and adding support links or resources makes it much easier for us to help.
42
+
43
+ It’s easy to fall into the trap of asking something too specific when you’re close to a problem.
44
+
45
+ Then, those trying to help you out have to spend a lot of time asking additional questions to understand what you are hoping to achieve.
46
+
47
+ Spending the extra time up front can help save everyone time in the long run.
48
+
49
+ Using the post template helps volunteers to understand the problem and jump in to help with troubleshooting. If you don't include all the details requested, you are much less likely to have people help you.
50
+
51
+ * Try to define what you need help with:
52
+ * Is there something in particular you want to do?
53
+ * What problem are you encountering and what steps have you taken to try and fix it?
54
+ * Is there a concept you’re not understanding?
55
+ * What is your server environment setup?
56
+ * Learn about the [rubber duck debugging method][rubberduck] and use this to help you explain the points above!
57
+ * Avoid falling for the [XY problem][xy]
58
+ * Search on the [forums][forums] and GitHub to see if a similar question has been asked
59
+ * If possible, provide sample code, a [CodeSandbox][codesandbox], or screenshots/screen capture video/s
60
+ * The more time you put into asking your question, the better we can help you
61
+
62
+ ## Chatting with the community
63
+
64
+ We have the opportunity for you to chat with the community on [Slack][chat]!
65
+
66
+ Jump in there and lurk, talk to us, and get to know the community.
67
+
68
+ ## Contributions
69
+
70
+ See [`contributing.md`][contributing] on how to contribute to Mautic.
71
+
72
+ ## License
73
+
74
+ This document is based on the [SUPPORT.md from RemarksJS][supportmd] [CC-BY-4.0][license] © [Titus Wormer][author]
75
+
76
+ <!-- Definitions -->
77
+
78
+ [license]: https://creativecommons.org/licenses/by/4.0/
79
+
80
+ [author]: https://wooorm.com
81
+
82
+ [coc]: https://github.com/mautic/mautic/blob/staging/code-of-conduct.md
83
+
84
+ [forums]: <https://forum.mautic.org>
85
+
86
+ [slack-forums]: <https://forum.mautic.org/t/using-the-community-forums-with-slack/12011>
87
+
88
+ [rubberduck]: https://rubberduckdebugging.com
89
+
90
+ [xy]: https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378
91
+
92
+ [codesandbox]: https://codesandbox.io
93
+
94
+ [chat]: https://mautic.org/slack
95
+
96
+ [contributing]: contributing.md
97
+
98
+ [supportmd]: <https://github.com/remarkjs/.github/blob/main/support.md>
.github/ci-files/.my.cnf ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ [mysqldump]
2
+ # the shivammathur/setup-php@v2 github action image uses mysqldump 8 in it's image,
3
+ # which enables column statistics by default.
4
+ # we don't need / want that, so we disable it here.
5
+ column-statistics=0
.github/ci-files/composer.json ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ {
3
+ "name": "mautic/recommended-project",
4
+ "description": "Project template for Mautic 4 projects with composer",
5
+ "type": "project",
6
+ "license": "GPL-2.0-or-later",
7
+ "homepage": "https://www.mautic.org/mautic-releases",
8
+ "support": {
9
+ "user-docs": "https://docs.mautic.org/en",
10
+ "developer-docs": "https://developer.mautic.org",
11
+ "chat": "https://www.mautic.org/slack"
12
+ },
13
+ "funding": [
14
+ {
15
+ "type": "other",
16
+ "url": "https://opencollective.com/mautic"
17
+ },
18
+ {
19
+ "type": "other",
20
+ "url": "https://github.com/sponsors/mautic"
21
+ }
22
+ ],
23
+ "authors": [
24
+ {
25
+ "name": "",
26
+ "role": ""
27
+ }
28
+ ],
29
+ "require": {
30
+ "composer/installers": "^1.11",
31
+ "mautic/core-composer-scaffold": "4.x-dev",
32
+ "mautic/core-project-message": "4.x-dev",
33
+ "mautic/core-lib": "*",
34
+ "mautic/grapes-js-builder-bundle": "*",
35
+ "mautic/plugin-clearbit": "*",
36
+ "mautic/plugin-cloudstorage": "*",
37
+ "mautic/plugin-crm": "*",
38
+ "mautic/plugin-emailmarketing": "*",
39
+ "mautic/plugin-focus": "*",
40
+ "mautic/plugin-fullcontact": "*",
41
+ "mautic/plugin-gmail": "*",
42
+ "mautic/plugin-outlook": "*",
43
+ "mautic/plugin-social": "*",
44
+ "mautic/plugin-tagmanager": "*",
45
+ "mautic/plugin-zapier": "*",
46
+ "mautic/theme-aurora": "*",
47
+ "mautic/theme-blank": "*",
48
+ "mautic/theme-brienz": "*",
49
+ "mautic/theme-cards": "*",
50
+ "mautic/theme-coffee": "*",
51
+ "mautic/theme-confirmme": "*",
52
+ "mautic/theme-fresh-center": "*",
53
+ "mautic/theme-fresh-fixed": "*",
54
+ "mautic/theme-fresh-left": "*",
55
+ "mautic/theme-fresh-wide": "*",
56
+ "mautic/theme-goldstar": "*",
57
+ "mautic/theme-mauve": "*",
58
+ "mautic/theme-nature": "*",
59
+ "mautic/theme-neopolitan": "*",
60
+ "mautic/theme-oxygen": "*",
61
+ "mautic/theme-paprika": "*",
62
+ "mautic/theme-skyline": "*",
63
+ "mautic/theme-sparse": "*",
64
+ "mautic/theme-sunday": "*",
65
+ "mautic/theme-vibrant": "*",
66
+ "mautic/theme-trulypersonal": "*"
67
+ },
68
+ "scripts": {
69
+ "post-install-cmd": [
70
+ "@fix-permissions",
71
+ "@generate-assets"
72
+ ],
73
+ "post-update-cmd": [
74
+ "@fix-permissions",
75
+ "@generate-assets"
76
+ ],
77
+ "fix-permissions": "chmod 750 ./bin/console",
78
+ "generate-assets": [
79
+ "npm ci",
80
+ "npx patch-package",
81
+ "bin/console mautic:assets:generate"
82
+ ]
83
+ },
84
+ "repositories": [
85
+ {
86
+ "type": "git",
87
+ "url": "https://github.com/mautic/FOSOAuthServerBundle.git"
88
+ },
89
+ {
90
+ "type": "git",
91
+ "url": "https://github.com/mautic/SpBundle.git"
92
+ },
93
+ {
94
+ "type": "git",
95
+ "url": "https://github.com/mautic/SymfonyBridgeBundle.git"
96
+ },
97
+ {
98
+ "type": "path",
99
+ "url": "../app",
100
+ "options": {
101
+ "versions": {
102
+ "mautic/core-lib": "5.x-dev"
103
+ },
104
+ "symlink": false
105
+ }
106
+ },
107
+ {
108
+ "type": "path",
109
+ "url": "../themes/**",
110
+ "options": {
111
+ "symlink": false
112
+ }
113
+ },
114
+ {
115
+ "type": "path",
116
+ "url": "../plugins/**",
117
+ "options": {
118
+ "symlink": false
119
+ }
120
+ }
121
+ ],
122
+ "conflict": {
123
+ "mautic/mautic": "*",
124
+ "mautic/core": "*"
125
+ },
126
+ "minimum-stability": "dev",
127
+ "prefer-stable": true,
128
+ "config": {
129
+ "sort-packages": true,
130
+ "secure-http": false,
131
+ "allow-plugins": {
132
+ "composer/installers": true,
133
+ "composer/package-versions-deprecated": true,
134
+ "symfony/flex": true,
135
+ "mautic/core-composer-scaffold": true,
136
+ "mautic/core-project-message": true,
137
+ "php-http/discovery": true
138
+ }
139
+ },
140
+ "autoload": {
141
+ "psr-4": {
142
+ "MauticPlugin\\": "docroot/plugins/"
143
+ }
144
+ },
145
+ "extra": {
146
+ "mautic-scaffold": {
147
+ "locations": {
148
+ "web-root": "docroot/"
149
+ }
150
+ },
151
+ "installer-paths": {
152
+ "docroot/app": [
153
+ "type:mautic-core"
154
+ ],
155
+ "docroot/plugins/{$name}": [
156
+ "type:mautic-plugin"
157
+ ],
158
+ "docroot/themes/{$name}": [
159
+ "type:mautic-theme"
160
+ ]
161
+ },
162
+ "mautic-core-project-message": {
163
+ "include-keys": [
164
+ "homepage",
165
+ "support"
166
+ ],
167
+ "post-create-project-cmd-message": [
168
+ "<bg=blue;fg=white> </>",
169
+ "<bg=blue;fg=white> Congratulations, you’ve installed the Mautic codebase </>",
170
+ "<bg=blue;fg=white> from the mautic/recommended-project template! </>",
171
+ "<bg=blue;fg=white> </>",
172
+ "",
173
+ "<bg=yellow;fg=black>Next steps</>:",
174
+ " * Install Mautic",
175
+ " * Read the user guide",
176
+ " * Get support: https://www.mautic.org/support",
177
+ " * Get involved with the Mautic community:",
178
+ " https://www.mautic.org/getting-involved",
179
+ " * Remove the plugin that prints this message:",
180
+ " composer remove mautic/core-project-message"
181
+ ]
182
+ }
183
+ }
184
+ }
.github/ci-files/local.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $parameters = [
4
+ 'api_enabled' => true,
5
+ 'api_enable_basic_auth' => true,
6
+ 'db_driver' => 'pdo_mysql',
7
+ 'db_host' => '127.0.0.1',
8
+ 'db_table_prefix' => null,
9
+ 'db_port' => getenv('DB_PORT'),
10
+ 'db_name' => 'mautictest',
11
+ 'db_user' => 'root',
12
+ 'db_password' => '',
13
+ 'admin_email' => 'github-actions@mautic.org',
14
+ 'admin_password' => 'GitHubActionsIsAwesome',
15
+ ];
.github/readme_image.png ADDED
.github/release.yml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ changelog:
2
+ exclude:
3
+ labels:
4
+ - chore
5
+ authors:
6
+ - github-actions
7
+ categories:
8
+ - title: ⚠️ Breaking Changes
9
+ labels:
10
+ - bc-break
11
+ - title: 🔧 Refactoring
12
+ labels:
13
+ - refactoring
14
+ - title: 🔒 Security
15
+ labels:
16
+ - security
17
+ - title: ✨ Features and enhancements
18
+ labels:
19
+ - feature
20
+ - enhancement
21
+ - title: 🐛 Bugs
22
+ labels:
23
+ - bug
24
+ - regression
.github/scripts/bounties.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const { Octokit } = require("@octokit/core");
2
+ const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
3
+
4
+ async function run() {
5
+ const githubContext = JSON.parse(process.env.GITHUB_CONTEXT);
6
+ const issueID = githubContext.event.issue.number;
7
+ const issueTitle = githubContext.event.issue.title;
8
+ const repoName = githubContext.event.repository.name;
9
+ const repoOwner = githubContext.event.repository.owner.login;
10
+
11
+ try {
12
+ switch (githubContext.event.action) {
13
+ case 'opened':
14
+ const body = githubContext.event.issue.body +
15
+ "\n\n<br /><hr>\nCare about this issue? Want to get it " +
16
+ "resolved sooner? If you are a " +
17
+ "<a href='https://www.mautic.org/become-a-member-of-mautic'>member " +
18
+ "of Mautic</a>, you can add some funds to the " +
19
+ "<a href='https://opencollective.com/mautic/projects/bounties'>Bounties Project</a> " +
20
+ "so that the person who completes this task can claim those funds once it is " +
21
+ "merged by a member of the core team! Read the docs " +
22
+ "<a href='https://contribute.mautic.org/product-team/mautic-bounty-programme'>here.</a>";
23
+
24
+ await octokit.request('PATCH /repos/{owner}/{repo}/issues/{issue_number}', {
25
+ owner: repoOwner,
26
+ repo: repoName,
27
+ issue_number: issueID,
28
+ body: body,
29
+ });
30
+ break;
31
+
32
+ case 'labeled':
33
+ const labelName = githubContext.event.label.name;
34
+
35
+ if (labelName === 'bounty') {
36
+ const comment =
37
+ "This issue has a bounty associated with it. Check the total available " +
38
+ "<a href='https://opencollective.com/mautic/projects/bounties/transactions'> " +
39
+ "here</a>. Read the docs about how to work on the issue and claim the funds "
40
+ "<a href='https://contribute.mautic.org/product-team/mautic-bounty-programme'>here.</a>";
41
+
42
+ await octokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/comments', {
43
+ owner: repoOwner,
44
+ repo: repoName,
45
+ issue_number: issueID,
46
+ body: comment
47
+ });
48
+ }
49
+ break;
50
+
51
+ default:
52
+ break;
53
+ }
54
+ } catch (error) {
55
+ console.error(error);
56
+ }
57
+ }
58
+
59
+ run();
.github/scripts/package-lock.json ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "bounties",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "bounties",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "@octokit/core": "^3.5.1"
12
+ }
13
+ },
14
+ "node_modules/@octokit/auth-token": {
15
+ "version": "2.5.0",
16
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
17
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
18
+ "dependencies": {
19
+ "@octokit/types": "^6.0.3"
20
+ }
21
+ },
22
+ "node_modules/@octokit/core": {
23
+ "version": "3.6.0",
24
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
25
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
26
+ "dependencies": {
27
+ "@octokit/auth-token": "^2.4.4",
28
+ "@octokit/graphql": "^4.5.8",
29
+ "@octokit/request": "^5.6.3",
30
+ "@octokit/request-error": "^2.0.5",
31
+ "@octokit/types": "^6.0.3",
32
+ "before-after-hook": "^2.2.0",
33
+ "universal-user-agent": "^6.0.0"
34
+ }
35
+ },
36
+ "node_modules/@octokit/endpoint": {
37
+ "version": "6.0.12",
38
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
39
+ "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
40
+ "dependencies": {
41
+ "@octokit/types": "^6.0.3",
42
+ "is-plain-object": "^5.0.0",
43
+ "universal-user-agent": "^6.0.0"
44
+ }
45
+ },
46
+ "node_modules/@octokit/graphql": {
47
+ "version": "4.8.0",
48
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
49
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
50
+ "dependencies": {
51
+ "@octokit/request": "^5.6.0",
52
+ "@octokit/types": "^6.0.3",
53
+ "universal-user-agent": "^6.0.0"
54
+ }
55
+ },
56
+ "node_modules/@octokit/openapi-types": {
57
+ "version": "12.11.0",
58
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
59
+ "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
60
+ },
61
+ "node_modules/@octokit/request": {
62
+ "version": "5.6.3",
63
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
64
+ "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
65
+ "dependencies": {
66
+ "@octokit/endpoint": "^6.0.1",
67
+ "@octokit/request-error": "^2.1.0",
68
+ "@octokit/types": "^6.16.1",
69
+ "is-plain-object": "^5.0.0",
70
+ "node-fetch": "^2.6.7",
71
+ "universal-user-agent": "^6.0.0"
72
+ }
73
+ },
74
+ "node_modules/@octokit/request-error": {
75
+ "version": "2.1.0",
76
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
77
+ "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
78
+ "dependencies": {
79
+ "@octokit/types": "^6.0.3",
80
+ "deprecation": "^2.0.0",
81
+ "once": "^1.4.0"
82
+ }
83
+ },
84
+ "node_modules/@octokit/types": {
85
+ "version": "6.41.0",
86
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
87
+ "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
88
+ "dependencies": {
89
+ "@octokit/openapi-types": "^12.11.0"
90
+ }
91
+ },
92
+ "node_modules/before-after-hook": {
93
+ "version": "2.2.3",
94
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
95
+ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
96
+ },
97
+ "node_modules/deprecation": {
98
+ "version": "2.3.1",
99
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
100
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
101
+ },
102
+ "node_modules/is-plain-object": {
103
+ "version": "5.0.0",
104
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
105
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
106
+ "engines": {
107
+ "node": ">=0.10.0"
108
+ }
109
+ },
110
+ "node_modules/node-fetch": {
111
+ "version": "2.7.0",
112
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
113
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
114
+ "dependencies": {
115
+ "whatwg-url": "^5.0.0"
116
+ },
117
+ "engines": {
118
+ "node": "4.x || >=6.0.0"
119
+ },
120
+ "peerDependencies": {
121
+ "encoding": "^0.1.0"
122
+ },
123
+ "peerDependenciesMeta": {
124
+ "encoding": {
125
+ "optional": true
126
+ }
127
+ }
128
+ },
129
+ "node_modules/once": {
130
+ "version": "1.4.0",
131
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
132
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
133
+ "dependencies": {
134
+ "wrappy": "1"
135
+ }
136
+ },
137
+ "node_modules/tr46": {
138
+ "version": "0.0.3",
139
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
140
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
141
+ },
142
+ "node_modules/universal-user-agent": {
143
+ "version": "6.0.1",
144
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
145
+ "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="
146
+ },
147
+ "node_modules/webidl-conversions": {
148
+ "version": "3.0.1",
149
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
150
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
151
+ },
152
+ "node_modules/whatwg-url": {
153
+ "version": "5.0.0",
154
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
155
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
156
+ "dependencies": {
157
+ "tr46": "~0.0.3",
158
+ "webidl-conversions": "^3.0.0"
159
+ }
160
+ },
161
+ "node_modules/wrappy": {
162
+ "version": "1.0.2",
163
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
164
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
165
+ }
166
+ }
167
+ }
.github/scripts/package.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "bounties",
3
+ "version": "1.0.0",
4
+ "description": "GitHub Action for handling bounty issues",
5
+ "main": "bounties.js",
6
+ "dependencies": {
7
+ "@octokit/core": "^3.5.1"
8
+ }
9
+ }
.github/stale.yml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Number of days of inactivity before an issue becomes stale
2
+ daysUntilStale: 90
3
+ # Number of days of inactivity before a stale issue is closed
4
+ daysUntilClose: 14
5
+ # Issues with these labels will never be considered stale
6
+ exemptLabels:
7
+ - security
8
+ - legacy
9
+ - bounty
10
+ # Label to use when marking an issue as stale
11
+ staleLabel: stale
12
+ # Comment to post when marking an issue as stale. Set to `false` to disable
13
+ markComment: >
14
+ This issue or PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you would like to keep it open please let us know by replying and confirming that this is still relevant to the latest version of Mautic and we will try to get to it as soon as we can. Thank you for your contributions.
15
+ # Comment to post when closing a stale issue. Set to `false` to disable
16
+ closeComment: >
17
+ This issue or PR has been automatically closed because it has not had recent activity. In the case of issues, if it persists in the latest version of Mautic, please create a new issue and link back to this one for reference. With PRs if you wish to pick up the PR and update it so that it can be considered for a future release, please comment and we will re-open it. Thank you for your contributions.
18
+ # Limit to only `issues` or `pulls`
19
+ only: issues
.github/subtree-splitter-config.json ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "core-lib",
5
+ "directory": "app",
6
+ "target": "git@github.com:mautic/core-lib.git"
7
+ },
8
+ {
9
+ "name": "GrapesJsBuilderBundle",
10
+ "directory": "plugins/GrapesJsBuilderBundle",
11
+ "target": "git@github.com:mautic/plugin-grapesjs-builder.git"
12
+ },
13
+ {
14
+ "name": "MauticClearbitBundle",
15
+ "directory": "plugins/MauticClearbitBundle",
16
+ "target": "git@github.com:mautic/plugin-clearbit.git"
17
+ },
18
+ {
19
+ "name": "MauticCloudStorageBundle",
20
+ "directory": "plugins/MauticCloudStorageBundle",
21
+ "target": "git@github.com:mautic/plugin-cloudstorage.git"
22
+ },
23
+ {
24
+ "name": "MauticCrmBundle",
25
+ "directory": "plugins/MauticCrmBundle",
26
+ "target": "git@github.com:mautic/plugin-crm.git"
27
+ },
28
+ {
29
+ "name": "MauticEmailMarketingBundle",
30
+ "directory": "plugins/MauticEmailMarketingBundle",
31
+ "target": "git@github.com:mautic/plugin-emailmarketing.git"
32
+ },
33
+ {
34
+ "name": "MauticFocusBundle",
35
+ "directory": "plugins/MauticFocusBundle",
36
+ "target": "git@github.com:mautic/plugin-focus.git"
37
+ },
38
+ {
39
+ "name": "MauticFullContactBundle",
40
+ "directory": "plugins/MauticFullContactBundle",
41
+ "target": "git@github.com:mautic/plugin-fullcontact.git"
42
+ },
43
+ {
44
+ "name": "MauticGmailBundle",
45
+ "directory": "plugins/MauticGmailBundle",
46
+ "target": "git@github.com:mautic/plugin-gmail.git"
47
+ },
48
+ {
49
+ "name": "MauticOutlookBundle",
50
+ "directory": "plugins/MauticOutlookBundle",
51
+ "target": "git@github.com:mautic/plugin-outlook.git"
52
+ },
53
+ {
54
+ "name": "MauticSocialBundle",
55
+ "directory": "plugins/MauticSocialBundle",
56
+ "target": "git@github.com:mautic/plugin-social.git"
57
+ },
58
+ {
59
+ "name": "MauticTagManagerBundle",
60
+ "directory": "plugins/MauticTagManagerBundle",
61
+ "target": "git@github.com:mautic/plugin-tagmanager.git"
62
+ },
63
+ {
64
+ "name": "MauticZapierBundle",
65
+ "directory": "plugins/MauticZapierBundle",
66
+ "target": "git@github.com:mautic/plugin-zapier.git"
67
+ },
68
+ {
69
+ "name": "theme-aurora",
70
+ "directory": "themes/aurora",
71
+ "target": "git@github.com:mautic/theme-aurora.git"
72
+ },
73
+ {
74
+ "name": "theme-blank",
75
+ "directory": "themes/blank",
76
+ "target": "git@github.com:mautic/theme-blank.git"
77
+ },
78
+ {
79
+ "name": "theme-brienz",
80
+ "directory": "themes/brienz",
81
+ "target": "git@github.com:mautic/theme-brienz.git"
82
+ },
83
+ {
84
+ "name": "theme-cards",
85
+ "directory": "themes/cards",
86
+ "target": "git@github.com:mautic/theme-cards.git"
87
+ },
88
+ {
89
+ "name": "theme-coffee",
90
+ "directory": "themes/coffee",
91
+ "target": "git@github.com:mautic/theme-coffee.git"
92
+ },
93
+ {
94
+ "name": "theme-confirmme",
95
+ "directory": "themes/confirmme",
96
+ "target": "git@github.com:mautic/theme-confirmme.git"
97
+ },
98
+ {
99
+ "name": "theme-fresh-center",
100
+ "directory": "themes/fresh-center",
101
+ "target": "git@github.com:mautic/theme-fresh-center.git"
102
+ },
103
+ {
104
+ "name": "theme-fresh-fixed",
105
+ "directory": "themes/fresh-fixed",
106
+ "target": "git@github.com:mautic/theme-fresh-fixed.git"
107
+ },
108
+ {
109
+ "name": "theme-fresh-left",
110
+ "directory": "themes/fresh-left",
111
+ "target": "git@github.com:mautic/theme-fresh-left.git"
112
+ },
113
+ {
114
+ "name": "theme-fresh-wide",
115
+ "directory": "themes/fresh-wide",
116
+ "target": "git@github.com:mautic/theme-fresh-wide.git"
117
+ },
118
+ {
119
+ "name": "theme-goldstar",
120
+ "directory": "themes/goldstar",
121
+ "target": "git@github.com:mautic/theme-goldstar.git"
122
+ },
123
+ {
124
+ "name": "theme-mauve",
125
+ "directory": "themes/Mauve",
126
+ "target": "git@github.com:mautic/theme-mauve.git"
127
+ },
128
+ {
129
+ "name": "theme-nature",
130
+ "directory": "themes/nature",
131
+ "target": "git@github.com:mautic/theme-nature.git"
132
+ },
133
+ {
134
+ "name": "theme-neopolitan",
135
+ "directory": "themes/neopolitan",
136
+ "target": "git@github.com:mautic/theme-neopolitan.git"
137
+ },
138
+ {
139
+ "name": "theme-oxygen",
140
+ "directory": "themes/oxygen",
141
+ "target": "git@github.com:mautic/theme-oxygen.git"
142
+ },
143
+ {
144
+ "name": "theme-paprika",
145
+ "directory": "themes/paprika",
146
+ "target": "git@github.com:mautic/theme-paprika.git"
147
+ },
148
+ {
149
+ "name": "theme-skyline",
150
+ "directory": "themes/skyline",
151
+ "target": "git@github.com:mautic/theme-skyline.git"
152
+ },
153
+ {
154
+ "name": "theme-sparse",
155
+ "directory": "themes/sparse",
156
+ "target": "git@github.com:mautic/theme-sparse.git"
157
+ },
158
+ {
159
+ "name": "theme-sunday",
160
+ "directory": "themes/sunday",
161
+ "target": "git@github.com:mautic/theme-sunday.git"
162
+ },
163
+ {
164
+ "name": "theme-trulypersonal",
165
+ "directory": "themes/trulypersonal",
166
+ "target": "git@github.com:mautic/theme-trulypersonal.git"
167
+ },
168
+ {
169
+ "name": "theme-vibrant",
170
+ "directory": "themes/vibrant",
171
+ "target": "git@github.com:mautic/theme-vibrant.git"
172
+ }
173
+ ]
174
+ }
.github/workflows/bounties.yml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Issue bounties
2
+ on:
3
+ issues:
4
+ types: [opened, labeled]
5
+
6
+ jobs:
7
+ handle_issue:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Checkout repo
11
+ uses: actions/checkout@v4
12
+
13
+ - name: Setup Node.js environment
14
+ uses: actions/setup-node@v2
15
+ with:
16
+ node-version: 16
17
+
18
+ - name: Install dependencies
19
+ run: |
20
+ cd .github/scripts/
21
+ npm ci
22
+
23
+ - name: Run script
24
+ env:
25
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26
+ GITHUB_CONTEXT: ${{ toJson(github) }}
27
+ run: node .github/scripts/bounties.js
.github/workflows/build-grapesjs-assets.yml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build JS files for dist folder
2
+
3
+ on:
4
+ # Allow manually triggering this workflow
5
+ workflow_dispatch:
6
+ schedule:
7
+ # Run every day at 10 AM UTC
8
+ - cron: '0 10 * * *'
9
+
10
+ defaults:
11
+ run:
12
+ working-directory: plugins/GrapesJsBuilderBundle
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ build-js:
19
+ permissions:
20
+ contents: write # for peter-evans/create-pull-request to create branch
21
+ pull-requests: write # for peter-evans/create-pull-request to create a PR
22
+ runs-on: ubuntu-latest
23
+ if: github.repository == 'mautic/mautic'
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - uses: actions/setup-node@v3
28
+ with:
29
+ node-version: '16'
30
+ - name: Install dependencies
31
+ run: npm install
32
+ - name: Build JS dist files
33
+ run: npm run build
34
+
35
+ # Checks if the JS files have been updated as a result of the NPM build,
36
+ # and creates a PR if necessary.
37
+ - name: Create Pull Request
38
+ uses: peter-evans/create-pull-request@v3
39
+ with:
40
+ commit-message: 'Auto-update GrapesJS generated JS dist files'
41
+ title: 'Update GrapesJS generated JS dist files'
42
+ delete-branch: true
.github/workflows/closed-issue-reply.yaml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Closed Issue Message
2
+ on:
3
+ issues:
4
+ types: [closed]
5
+ permissions: {}
6
+ jobs:
7
+ auto_comment:
8
+ permissions:
9
+ issues: write # to comment on issues (aws-actions/closed-issue-message)
10
+
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: aws-actions/closed-issue-message@v1
14
+ with:
15
+ # These inputs are both required
16
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
17
+ message: |
18
+ ### ⚠️COMMENT VISIBILITY WARNING⚠️
19
+ Comments on closed issues are hard for our team to see.
20
+ If this issue is continuing with the [lastest stable version of Mautic](https://www.mautic.org/mautic-releases), please open a new issue that references this one.
.github/workflows/generate-release-notes.yml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Manually generate release notes
2
+ on:
3
+ workflow_dispatch:
4
+ inputs:
5
+ milestone:
6
+ description: 'The milestone name (e.g. 4.0.0-alpha1)'
7
+ required: true
8
+ default: 'none'
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ release-notes:
15
+ name: Create draft release
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - name: Generate release notes for milestone ${{ github.event.inputs.milestone }}
20
+ run: |
21
+ # Download changelog generator
22
+ wget -q https://github.com/spring-io/github-changelog-generator/releases/download/v0.0.5/github-changelog-generator.jar
23
+
24
+ # Copy of release-notes.yml to root folder needed, since the Jar can't read from hidden folders anymore (bug): https://github.com/Decathlon/release-notes-generator-action/pull/21
25
+ cp ./.github/release-notes.yml ./release-notes.yml
26
+ java -jar ./github-changelog-generator.jar --spring.config.location="./release-notes.yml" ${{ github.event.inputs.milestone }} mautic-changelog.txt || true
27
+
28
+ - name: Upload mautic-changelog.txt artifact
29
+ uses: actions/upload-artifact@v4
30
+ with:
31
+ name: mautic-changelog.txt
32
+ path: ./mautic-changelog.txt
33
+
34
+ - name: You can now find the changelog in this run's artifacts
35
+ run: echo "You can now find the changelog in this run's artifacts!"
.github/workflows/gitsplit/core-lib.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "core-lib",
5
+ "directory": "app",
6
+ "target": "git@github.com:mautic/core-lib.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-clearbit.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticClearbitBundle",
5
+ "directory": "plugins/MauticClearbitBundle",
6
+ "target": "git@github.com:mautic/plugin-clearbit.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-cloudstorage.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticCloudStorageBundle",
5
+ "directory": "plugins/MauticCloudStorageBundle",
6
+ "target": "git@github.com:mautic/plugin-cloudstorage.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-crm.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticCrmBundle",
5
+ "directory": "plugins/MauticCrmBundle",
6
+ "target": "git@github.com:mautic/plugin-crm.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-emailmarketing.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticEmailMarketingBundle",
5
+ "directory": "plugins/MauticEmailMarketingBundle",
6
+ "target": "git@github.com:mautic/plugin-emailmarketing.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-focus.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticFocusBundle",
5
+ "directory": "plugins/MauticFocusBundle",
6
+ "target": "git@github.com:mautic/plugin-focus.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-fullcontact.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticFullContactBundle",
5
+ "directory": "plugins/MauticFullContactBundle",
6
+ "target": "git@github.com:mautic/plugin-fullcontact.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-gmail.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticGmailBundle",
5
+ "directory": "plugins/MauticGmailBundle",
6
+ "target": "git@github.com:mautic/plugin-gmail.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-grapesjs.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "GrapesJsBuilderBundle",
5
+ "directory": "plugins/GrapesJsBuilderBundle",
6
+ "target": "git@github.com:mautic/plugin-grapesjs-builder.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-outlook.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticOutlookBundle",
5
+ "directory": "plugins/MauticOutlookBundle",
6
+ "target": "git@github.com:mautic/plugin-outlook.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-social.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticSocialBundle",
5
+ "directory": "plugins/MauticSocialBundle",
6
+ "target": "git@github.com:mautic/plugin-social.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-tagmanager.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticTagManagerBundle",
5
+ "directory": "plugins/MauticTagManagerBundle",
6
+ "target": "git@github.com:mautic/plugin-tagmanager.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/plugin-zapier.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "MauticZapierBundle",
5
+ "directory": "plugins/MauticZapierBundle",
6
+ "target": "git@github.com:mautic/plugin-zapier.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/theme-aurora.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "theme-aurora",
5
+ "directory": "themes/aurora",
6
+ "target": "git@github.com:mautic/theme-aurora.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/theme-blank.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "theme-blank",
5
+ "directory": "themes/blank",
6
+ "target": "git@github.com:mautic/theme-blank.git"
7
+ }
8
+ ]
9
+ }
.github/workflows/gitsplit/theme-brienz.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "subtree-splits": [
3
+ {
4
+ "name": "theme-brienz",
5
+ "directory": "themes/brienz",
6
+ "target": "git@github.com:mautic/theme-brienz.git"
7
+ }
8
+ ]
9
+ }