{"id":28746886,"url":"https://github.com/rumendamyanov/drupal_calendar_plus","last_synced_at":"2026-04-29T09:04:05.524Z","repository":{"id":298305097,"uuid":"998708809","full_name":"RumenDamyanov/drupal_calendar_plus","owner":"RumenDamyanov","description":"A modern, feature-rich calendar module for Drupal 11+ that supports event creation, ICS file generation, invitations, RSVP, recurring events, admin logging, REST API, and more.","archived":false,"fork":false,"pushed_at":"2025-06-12T19:53:06.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"drupal","last_synced_at":"2025-07-13T00:36:37.002Z","etag":null,"topics":["calendar","drupal","drupal-module","event","ics","php"],"latest_commit_sha":null,"homepage":"https://www.drupal.org/project/calendar_plus","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RumenDamyanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-09T05:58:44.000Z","updated_at":"2025-06-16T13:50:31.000Z","dependencies_parsed_at":"2025-06-16T16:06:08.631Z","dependency_job_id":null,"html_url":"https://github.com/RumenDamyanov/drupal_calendar_plus","commit_stats":null,"previous_names":["rumendamyanov/drupal_calendar","rumendamyanov/drupal_calendar_plus"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/RumenDamyanov/drupal_calendar_plus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RumenDamyanov%2Fdrupal_calendar_plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RumenDamyanov%2Fdrupal_calendar_plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RumenDamyanov%2Fdrupal_calendar_plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RumenDamyanov%2Fdrupal_calendar_plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RumenDamyanov","download_url":"https://codeload.github.com/RumenDamyanov/drupal_calendar_plus/tar.gz/refs/heads/drupal","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RumenDamyanov%2Fdrupal_calendar_plus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32418180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","drupal","drupal-module","event","ics","php"],"created_at":"2025-06-16T15:48:53.752Z","updated_at":"2026-04-29T09:04:05.518Z","avatar_url":"https://github.com/RumenDamyanov.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Calendar Plus Module\n\n[![CI](https://github.com/RumenDamyanov/drupal_calendar_plus/actions/workflows/ci.yml/badge.svg)](https://github.com/RumenDamyanov/drupal_calendar_plus/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/RumenDamyanov/drupal_calendar_plus/branch/master/graph/badge.svg)](https://codecov.io/gh/RumenDamyanov/drupal_calendar_plus)\n\nA modern, feature-rich calendar module for Drupal 11+ that supports event creation, ICS file generation, invitations, RSVP, recurring events, admin logging, REST API, and more.\n\n## Features\n\n- Create and manage custom events\n- Generate ICS files for events (attach to entity, static file, or email)\n- Admin panel for event management, settings, and logs\n- User invitations and RSVP tracking\n- Recurring events (daily, weekly, monthly)\n- Frontend calendar (simple list and FullCalendar grid)\n- Upcoming events block\n- REST API for events and RSVPs\n- Granular permissions and access control\n- Email reminders and notifications\n- Logging and audit trail\n- Unit and functional tests\n\n## Installation\n\nYou can install this module via Composer:\n\n```sh\ncomposer require drupal/calendar_plus\n```\n\nOr manually:\n\n1. Download the module from the [Drupal.org project page](https://www.drupal.org/project/calendar_plus) or clone from the [Drupal.org GitLab repository](https://git.drupalcode.org/project/calendar_plus.git).\n2. Place the module in your `modules/custom` directory.\n3. Run `composer install` to install dependencies (`drupal/php-calendar`).\n4. Enable the module via Drupal admin or Drush.\n\n## Configuration\n\n- Visit `/admin/config/calendar-plus` to configure settings (ICS handling, email templates, reminders, etc).\n- Place the \"Upcoming Events\" block as needed.\n- Access the admin event list at `/admin/content/calendar-plus/events`.\n\n## REST API\n\n- List events: `GET /api/calendar-plus/events?_format=json`\n- Get event: `GET /api/calendar-plus/events/{event_id}?_format=json`\n- Get RSVPs: `GET /api/calendar-plus/events/{event_id}/rsvps?_format=json`\n\n## Permissions\n\n- Create, view, and manage events and invitations via Drupal permissions.\n\n## Testing\n\n- **Unit tests:** Run with Composer-installed PHPUnit:\n\n  - `vendor/bin/phpunit` (runs only unit tests by default)\n  - `vendor/bin/phpunit --testsuite Unit` (explicitly runs unit tests)\n\n- **Functional tests:** Must be run inside a full Drupal site:\n\n  - With Drush: `drush test:run calendar_plus`\n  - Or: `php core/scripts/run-tests.sh --module calendar_plus`\n\nUnit tests do not require a Drupal site. Functional tests require a working Drupal environment and will fail if run with plain PHPUnit.\n\n## License\n\nMIT License. See [LICENSE.md](LICENSE.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frumendamyanov%2Fdrupal_calendar_plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frumendamyanov%2Fdrupal_calendar_plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frumendamyanov%2Fdrupal_calendar_plus/lists"}