From e8ec7a4ce656b3c7298e7cc597e4456050be5a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Sat, 21 Dec 2024 15:36:01 +0100 Subject: [PATCH 01/10] Fix fatal error in admin-UI when ActivityPub plugin is not installed --- CHANGELOG.md | 2 +- README.md | 4 ++-- event-bridge-for-activitypub.php | 2 +- includes/class-settings.php | 5 ++--- readme.txt | 4 ++-- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b3e56..6bf47e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.3.3] - 2024-12-19 +## [0.3.4] - 2024-12-21 * Initial release on WordPress.org diff --git a/README.md b/README.md index 2f7a674..91f11d6 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ **Tags:** events, fediverse, activitypub, calendar **Requires at least:** 6.5 **Tested up to:** 6.7 -**Stable tag:** 0.3.3 +**Stable tag:** 0.3.4 **Requires PHP:** 7.4 **License:** AGPL-3.0-or-later **License URI:** https://www.gnu.org/licenses/agpl-3.0.html @@ -101,7 +101,7 @@ We're always interested in your feedback. Feel free to reach out to us via [E-Ma ## Changelog ## -### [0.3.3] 2024-12-19 ### +### [0.3.4] 2024-12-21 ### * Initial release on https://wordpress.org/ diff --git a/event-bridge-for-activitypub.php b/event-bridge-for-activitypub.php index f1ce6b3..72a0a89 100644 --- a/event-bridge-for-activitypub.php +++ b/event-bridge-for-activitypub.php @@ -3,7 +3,7 @@ * Plugin Name: Event Bridge for ActivityPub * Description: Integrating popular event plugins with the ActivityPub plugin. * Plugin URI: https://event-federation.eu/ - * Version: 0.3.3 + * Version: 0.3.4 * Author: André Menrath * Author URI: https://graz.social/@linos * Text Domain: event-bridge-for-activitypub diff --git a/includes/class-settings.php b/includes/class-settings.php index 3b15a2c..7b05d23 100644 --- a/includes/class-settings.php +++ b/includes/class-settings.php @@ -14,8 +14,6 @@ namespace Event_Bridge_For_ActivityPub; // Exit if accessed directly. defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore -use Activitypub\Activity\Extended_Object\Event; - /** * Class responsible for the ActivityPui Event Extension related Settings. * @@ -133,7 +131,8 @@ class Settings { * @return bool True if allowed, false otherwise. */ private static function is_allowed_event_category( $event_category ): bool { - $allowed_event_categories = Event::DEFAULT_EVENT_CATEGORIES; + require_once EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/includes/event-categories.php'; + $allowed_event_categories = array_keys( EVENT_BRIDGE_FOR_ACTIVITYPUB_EVENT_CATEGORIES ); return in_array( $event_category, $allowed_event_categories, true ); } } diff --git a/readme.txt b/readme.txt index a2aa34b..1e444dd 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: andremenrath Tags: events, fediverse, activitypub, calendar Requires at least: 6.5 Tested up to: 6.7 -Stable tag: 0.3.3 +Stable tag: 0.3.4 Requires PHP: 7.4 License: AGPL-3.0-or-later License URI: https://www.gnu.org/licenses/agpl-3.0.html @@ -95,6 +95,6 @@ We're always interested in your feedback. Feel free to reach out to us via [E-Ma == Changelog == -= [0.3.3] 2024-12-19 = += [0.3.4] 2024-12-21 = * Initial release on https://wordpress.org/ From 928fb690aed73a062df60ae35d83bf57002f31f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 11:06:49 +0100 Subject: [PATCH 02/10] Add CI for deployment to WordPress.org (#91) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://code.event-federation.eu/Event-Federation/wordpress-event-bridge-for-activitypub/pulls/91 Co-authored-by: André Menrath Co-committed-by: André Menrath --- .distignore | 1 - .forgejo/workflows/assets.yml | 21 +++++++++++++++++++++ .forgejo/workflows/deploy.yml | 21 +++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/assets.yml create mode 100644 .forgejo/workflows/deploy.yml diff --git a/.distignore b/.distignore index 471f8fb..4754d34 100644 --- a/.distignore +++ b/.distignore @@ -4,7 +4,6 @@ .wordpress-org .wp-env.json bin -CHANGELOG.md CODE_OF_CONDUCT.md composer.json composer.lock diff --git a/.forgejo/workflows/assets.yml b/.forgejo/workflows/assets.yml new file mode 100644 index 0000000..b278404 --- /dev/null +++ b/.forgejo/workflows/assets.yml @@ -0,0 +1,21 @@ +name: Plugin asset/readme update on WordPress.org + +on: + push: + branches: + - main + +jobs: + trunk: + name: Push assets to trunk on WordPress.org + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://code.forgejo.org/actions/checkout@v4 + + - name: WordPress.org plugin asset/readme update + uses: https://github.com/10up/action-wordpress-plugin-asset-update@stable + env: + SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} + SVN_USERNAME: ${{ secrets.SVN_USERNAME }} + SLUG: event-bridge-for-activitypub diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml new file mode 100644 index 0000000..01aa83d --- /dev/null +++ b/.forgejo/workflows/deploy.yml @@ -0,0 +1,21 @@ +name: Deploy to WordPress.org + +on: + push: + tags: + - "v*" + +jobs: + tag: + name: New tag + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://code.forgejo.org/actions/checkout@v4 + + - name: WordPress Plugin Deploy + uses: https://github.com/10up/action-wordpress-plugin-deploy@stable + env: + SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} + SVN_USERNAME: ${{ secrets.SVN_USERNAME }} + SLUG: event-bridge-for-activitypub From a554e52eafaaf815397f1afff48440edf811d3a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 11:36:53 +0100 Subject: [PATCH 03/10] Add NLnet and NGI-Zero acknoledgements (#92) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds acknoledgements in: - README.md - WordPress.org Readme.txt - Admin UI main settings page (Welcome) Reviewed-on: https://code.event-federation.eu/Event-Federation/wordpress-event-bridge-for-activitypub/pulls/92 Co-authored-by: André Menrath Co-committed-by: André Menrath --- .../acknowledgement-NGI0Entrust.svg | 121 ++++++++++++++++++ .wordpress-org/acknowledgement-NLnet.svg | 1 + README.md | 7 + .../event-bridge-for-activitypub-admin.css | 5 + readme.txt | 7 + templates/welcome.php | 12 +- 6 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 .wordpress-org/acknowledgement-NGI0Entrust.svg create mode 100644 .wordpress-org/acknowledgement-NLnet.svg diff --git a/.wordpress-org/acknowledgement-NGI0Entrust.svg b/.wordpress-org/acknowledgement-NGI0Entrust.svg new file mode 100644 index 0000000..0d211b3 --- /dev/null +++ b/.wordpress-org/acknowledgement-NGI0Entrust.svg @@ -0,0 +1,121 @@ + + + +image/svg+xml + + + + + + +NGI Zero Entrust + + + + diff --git a/.wordpress-org/acknowledgement-NLnet.svg b/.wordpress-org/acknowledgement-NLnet.svg new file mode 100644 index 0000000..7980346 --- /dev/null +++ b/.wordpress-org/acknowledgement-NLnet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/README.md b/README.md index 91f11d6..03f9264 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,13 @@ If you know about coding have a look at the documentation of how to add your plu We're always interested in your feedback. Feel free to reach out to us via [E-Mail](https://event-federation.eu/contact/) or create an [issue](https://code.event-federation.eu/Event-Federation/wordpress-event-bridge-for-activitypub/issues). +## Acknowledgement + +[NLnet foundation logo](https://nlnet.nl) +[NGI Zero Logo](https://nlnet.nl/entrust) + +The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. + ## Changelog ## ### [0.3.4] 2024-12-21 ### diff --git a/assets/css/event-bridge-for-activitypub-admin.css b/assets/css/event-bridge-for-activitypub-admin.css index 6c62d22..2862063 100644 --- a/assets/css/event-bridge-for-activitypub-admin.css +++ b/assets/css/event-bridge-for-activitypub-admin.css @@ -9,6 +9,11 @@ margin-bottom: 1.5em; } +.event-bridge-for-activitypub-settings-page .logo-center { + width: 25%; + margin: 10px 5% 10px 5%; +} + .event-bridge-for-activitypub-settings-page .box ul.event-bridge-for-activitypub-list { margin-left: 0.6em; } diff --git a/readme.txt b/readme.txt index 1e444dd..27fd37b 100644 --- a/readme.txt +++ b/readme.txt @@ -93,6 +93,13 @@ If you know about coding have a look at the documentation of how to add your plu We're always interested in your feedback. Feel free to reach out to us via [E-Mail](https://event-federation.eu/contact/) or create an [issue](https://code.event-federation.eu/Event-Federation/wordpress-event-bridge-for-activitypub/issues). +== Acknowledgement == + +[NLnet foundation logo](https://nlnet.nl) +[NGI Zero Logo](https://nlnet.nl/entrust) + +The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. + == Changelog == = [0.3.4] 2024-12-21 = diff --git a/templates/welcome.php b/templates/welcome.php index c6c3567..5d6ee0f 100644 --- a/templates/welcome.php +++ b/templates/welcome.php @@ -230,15 +230,13 @@ WP_Filesystem();
-

-
-			get_contents( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/CHANGELOG.md' );
-			echo esc_html( substr( $changelog, strpos( $changelog, "\n", 180 ) + 1 ) );
-			?>
-		
+

+

Logo NLnet: abstract logo of four people seen from above Logo NGI Zero: letterlogo shaped like a tag

+

The development of this plugin was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594.

+ + From 9f3fe0581d0949c8048364ec9b20a687d631b418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 11:48:59 +0100 Subject: [PATCH 04/10] CI: fix dependencies for deployment to WordPress.org (#93) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://code.event-federation.eu/Event-Federation/wordpress-event-bridge-for-activitypub/pulls/93 Co-authored-by: André Menrath Co-committed-by: André Menrath --- .forgejo/workflows/assets.yml | 6 ++++++ .forgejo/workflows/deploy.yml | 8 +++++++- templates/welcome.php | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/assets.yml b/.forgejo/workflows/assets.yml index b278404..2541206 100644 --- a/.forgejo/workflows/assets.yml +++ b/.forgejo/workflows/assets.yml @@ -13,6 +13,12 @@ jobs: - name: Checkout uses: https://code.forgejo.org/actions/checkout@v4 + - name: Install and cache rsync + uses: https://github.com/awalsh128/cache-apt-pkgs-action@latest + with: + packages: rsync subversion + version: 1.0 + - name: WordPress.org plugin asset/readme update uses: https://github.com/10up/action-wordpress-plugin-asset-update@stable env: diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 01aa83d..55e9192 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -3,7 +3,7 @@ name: Deploy to WordPress.org on: push: tags: - - "v*" + - "*" jobs: tag: @@ -13,6 +13,12 @@ jobs: - name: Checkout uses: https://code.forgejo.org/actions/checkout@v4 + - name: Install and cache rsync + uses: https://github.com/awalsh128/cache-apt-pkgs-action@latest + with: + packages: rsync subversion + version: 1.0 + - name: WordPress Plugin Deploy uses: https://github.com/10up/action-wordpress-plugin-deploy@stable env: diff --git a/templates/welcome.php b/templates/welcome.php index 5d6ee0f..7134c7e 100644 --- a/templates/welcome.php +++ b/templates/welcome.php @@ -45,8 +45,8 @@ WP_Filesystem(); ⚠' . \wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ) . '

'; } - echo '

⚠' . \wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ) . '

'; ?>

get_plugin_name() ); ?>:

From dea730540f0aaec8457e7ce8f58df3920921aedd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 12:25:58 +0100 Subject: [PATCH 05/10] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 03f9264..5968b9c 100644 --- a/README.md +++ b/README.md @@ -101,8 +101,8 @@ We're always interested in your feedback. Feel free to reach out to us via [E-Ma ## Acknowledgement -[NLnet foundation logo](https://nlnet.nl) -[NGI Zero Logo](https://nlnet.nl/entrust) +[NLnet foundation logo](https://nlnet.nl) +[NGI Zero Logo](https://nlnet.nl/entrust) The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. From f50e5abdd51000577264d4948ba29105f6b4a991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 12:28:23 +0100 Subject: [PATCH 06/10] Update Readme.txt --- .../acknowledgement-NGI0Entrust.png | Bin 0 -> 8698 bytes .wordpress-org/acknowledgement-NLnet.png | Bin 0 -> 12042 bytes readme.txt | 24 +++++++----------- 3 files changed, 9 insertions(+), 15 deletions(-) create mode 100644 .wordpress-org/acknowledgement-NGI0Entrust.png create mode 100644 .wordpress-org/acknowledgement-NLnet.png diff --git a/.wordpress-org/acknowledgement-NGI0Entrust.png b/.wordpress-org/acknowledgement-NGI0Entrust.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e722ab2c3e3b0dc29876fef2893cfbf51a28f1 GIT binary patch literal 8698 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 -Your events can be automatically delivered to platforms that fully support events, such as [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). -These platforms create public event calendars by pulling in events from various sources, including your website. Any updates you make to your events are synced across these platforms—so you only need to manage your events on your own site, with no extra work required. +Your events can be automatically delivered to platforms that fully support events, such as [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). These platforms create public event calendars by pulling in events from various sources, including your website. Any updates you make to your events are synced across these platforms—so you only need to manage your events on your own site, with no extra work required. -![](./.wordpress-org/decentralized-event-calenders.gif) +An animation that shows how a decentralized event calendar gets build via ActivityPub including an WordPress site as a source of events. -Even platforms that don't yet fully support events, like [Mastodon](https://joinmastodon.org), will still receive a detailed, well-composed summary of your event. -The Event Federation plugin ensures that users from those platforms are provided with all important information about an event. +Even platforms that don't yet fully support events, like [Mastodon](https://joinmastodon.org), will still receive a detailed, well-composed summary of your event. The Event Federation plugin ensures that users from those platforms are provided with all important information about an event. = Features for Your WordPress Events and the Fediverse = @@ -95,8 +89,8 @@ We're always interested in your feedback. Feel free to reach out to us via [E-Ma == Acknowledgement == -[NLnet foundation logo](https://nlnet.nl) -[NGI Zero Logo](https://nlnet.nl/entrust) +NLnet foundation logo +NGI Zero Logo The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. From 865d732c55b71a1c43de0837aa3e29b27b82472a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 13:29:20 +0100 Subject: [PATCH 07/10] Use Vimeo for WordPress.org description --- README.md | 2 -- readme.txt | 7 +++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5968b9c..f9ebbe5 100644 --- a/README.md +++ b/README.md @@ -111,5 +111,3 @@ The development of this WordPress plugin was funded through the [NGI0 Entrust](h ### [0.3.4] 2024-12-21 ### * Initial release on https://wordpress.org/ - - diff --git a/readme.txt b/readme.txt index 3e88d98..c939061 100644 --- a/readme.txt +++ b/readme.txt @@ -11,8 +11,7 @@ Integrating popular event plugins with the ActivityPub plugin. == Description == -Make your events more discoverable, expand your reach effortlessly while being independent of other (commercial) platforms, and be a part of the growing decentralized web (the Fediverse). With the Event Bridge for ActivityPub Plugin for WordPress, your events can be automatically followed, aggregated and displayed across decentralized platforms like [Mastodon](https://joinmastodon.org) or [Gancio](https://gancio.org), without any extra work. -Forget the hassle of managing multiple social media accounts just to keep your audience informed. +Make your events more discoverable, expand your reach effortlessly while being independent of other (commercial) platforms, and be a part of the growing decentralized web (the Fediverse). With the Event Bridge for ActivityPub Plugin for WordPress, your events can be automatically followed, aggregated and displayed across decentralized platforms like [Mastodon](https://joinmastodon.org) or [Gancio](https://gancio.org), without any extra work. Forget the hassle of managing multiple social media accounts just to keep your audience informed. This plugin is not an event managing plugin but an add-on to popular event plugins. It extends their functionality to fully support the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). With the ActivityPub plugin people can follow your website directly and engage with your events just as they would on social media: liking, boosting and even commenting if you enable it. You retain full ownership of your content. By integrating into your existing setup, it ensures no extra work is needed while enhancing your events' visibility across the web. @@ -20,11 +19,11 @@ This plugin is not an event managing plugin but an add-on to popular event plugi With the Event Bridge for ActivityPub WordPress plugin, sharing your events is effortless and automatic! Once you create an event on your WordPress site, it is seamlessly shared across the decentralized web using the ActivityPub protocol. -An animation showing WordPress events being federated to several applications in the ActivityPub network. +[vimeo https://vimeo.com/1043105544 ] Your events can be automatically delivered to platforms that fully support events, such as [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). These platforms create public event calendars by pulling in events from various sources, including your website. Any updates you make to your events are synced across these platforms—so you only need to manage your events on your own site, with no extra work required. -An animation that shows how a decentralized event calendar gets build via ActivityPub including an WordPress site as a source of events. +[vimeo https://vimeo.com/1043104445 ] Even platforms that don't yet fully support events, like [Mastodon](https://joinmastodon.org), will still receive a detailed, well-composed summary of your event. The Event Federation plugin ensures that users from those platforms are provided with all important information about an event. From cb1ee485f15387d6f0fe318af69a956d002efe3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 13:51:50 +0100 Subject: [PATCH 08/10] Readme: Add supported event plugins to description --- README.md | 22 +++++++++++----------- readme.txt | 11 +++++++++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f9ebbe5..e732d3f 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,17 @@ This plugin is not an event managing plugin but an add-on to popular event plugi With the ActivityPub plugin people can follow your website directly and engage with your events just as they would on social media: liking, boosting and even commenting if you enable it. You retain full ownership of your content. By integrating into your existing setup, it ensures no extra work is needed while enhancing your events' visibility across the web. +### Supported Event Plugins + +* [The Events Calendar](https://de.wordpress.org/plugins/the-events-calendar/) +* [VS Event List](https://de.wordpress.org/plugins/very-simple-event-list/) +* [Events Manager](https://de.wordpress.org/plugins/events-manager/) +* [WP Event Manager](https://de.wordpress.org/plugins/wp-event-manager/) +* [Eventin](https://de.wordpress.org/plugins/wp-event-solution/) +* [Modern Events Calendar Lite](https://webnus.net/modern-events-calendar/) +* [GatherPress](https://gatherpress.org/) +* [Event Organiser](https://wordpress.org/plugins/event-organiser/) + ### How It Works ### With the Event Bridge for ActivityPub WordPress plugin, sharing your events is effortless and automatic! @@ -54,17 +65,6 @@ The Event Federation plugin ensures that users from those platforms are provided This plugin depends on the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). Additionally, you need to use one of the supported event Plugins. -### Supported Event Plugins ### - -* [The Events Calendar](https://de.wordpress.org/plugins/the-events-calendar/) -* [VS Event List](https://de.wordpress.org/plugins/very-simple-event-list/) -* [Events Manager](https://de.wordpress.org/plugins/events-manager/) -* [WP Event Manager](https://de.wordpress.org/plugins/wp-event-manager/) -* [Eventin](https://de.wordpress.org/plugins/wp-event-solution/) -* [Modern Events Calendar Lite](https://webnus.net/modern-events-calendar/) -* [GatherPress](https://gatherpress.org/) -* [Event Organiser](https://wordpress.org/plugins/event-organiser/) - ## Configuration ## If you're new to the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/), it’s recommended to spend a few minutes reading through its documentation to familiarize yourself with its setup and functionality. diff --git a/readme.txt b/readme.txt index c939061..15158ce 100644 --- a/readme.txt +++ b/readme.txt @@ -15,6 +15,17 @@ Make your events more discoverable, expand your reach effortlessly while being i This plugin is not an event managing plugin but an add-on to popular event plugins. It extends their functionality to fully support the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). With the ActivityPub plugin people can follow your website directly and engage with your events just as they would on social media: liking, boosting and even commenting if you enable it. You retain full ownership of your content. By integrating into your existing setup, it ensures no extra work is needed while enhancing your events' visibility across the web. += Supported Event Plugins = + +* [The Events Calendar](https://de.wordpress.org/plugins/the-events-calendar/) +* [VS Event List](https://de.wordpress.org/plugins/very-simple-event-list/) +* [Events Manager](https://de.wordpress.org/plugins/events-manager/) +* [WP Event Manager](https://de.wordpress.org/plugins/wp-event-manager/) +* [Eventin](https://de.wordpress.org/plugins/wp-event-solution/) +* [Modern Events Calendar Lite](https://webnus.net/modern-events-calendar/) +* [GatherPress](https://gatherpress.org/) +* [Event Organiser](https://wordpress.org/plugins/event-organiser/) + = How It Works = With the Event Bridge for ActivityPub WordPress plugin, sharing your events is effortless and automatic! Once you create an event on your WordPress site, it is seamlessly shared across the decentralized web using the ActivityPub protocol. From 00b2325d02e95bd19749526c511d9ed39b9c2fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 14:04:23 +0100 Subject: [PATCH 09/10] Readme: Move configuration hints to Installation tab. --- readme.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/readme.txt b/readme.txt index 15158ce..fb2603c 100644 --- a/readme.txt +++ b/readme.txt @@ -63,7 +63,7 @@ This plugin depends on the [ActivityPub plugin](https://wordpress.org/plugins/ac * [GatherPress](https://gatherpress.org/) * [Event Organiser](https://wordpress.org/plugins/event-organiser/) -== Configuration == += Configuration = If you're new to the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/), it’s recommended to spend a few minutes reading through its documentation to familiarize yourself with its setup and functionality. @@ -99,9 +99,6 @@ We're always interested in your feedback. Feel free to reach out to us via [E-Ma == Acknowledgement == -NLnet foundation logo -NGI Zero Logo - The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. == Changelog == From 8aa9044107a6eb2400aee33e889ad029565eb10f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Menrath?= Date: Tue, 31 Dec 2024 14:05:48 +0100 Subject: [PATCH 10/10] Add alt text to README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e732d3f..80aa096 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,14 @@ With the Event Bridge for ActivityPub WordPress plugin, sharing your events is e Once you create an event on your WordPress site, it is seamlessly shared across the decentralized web using the ActivityPub protocol.

- Logo + An animation that shows how WordPress events federate to users of different applications via ActivityPub.

Your events can be automatically delivered to platforms that fully support events, such as [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). These platforms create public event calendars by pulling in events from various sources, including your website. Any updates you make to your events are synced across these platforms—so you only need to manage your events on your own site, with no extra work required.

- Logo + An animation that shows how a decentralized event calendar gets build via ActivityPub including an WordPress site as a source of events.

Even platforms that don't yet fully support events, like [Mastodon](https://joinmastodon.org), will still receive a detailed, well-composed summary of your event.