c975l/events-bundle

This package is abandoned and no longer maintained. No replacement package was suggested.

Tool to manage events and display a carousel


README

EventsBundle does the following:

  • Displays event requested,
  • Provides tools to manage events,
  • Provides a carousel of events,
  • Provides a link to integrate to calendar (ics),
  • Integrates with your web design,

This Bundle relies on the use of TinyMce, jQuery, Bootstrap and Bootstrap DatePicker and requires Twig/Extensions for localizing dates and time.

EventsBundle dedicated web page.

EventsBundle API documentation.

Bundle installation

Step 1: Download the Bundle

Use Composer to install the library

    composer require c975l/evebts-bundle

Step 2: Enable the Bundle

Then, enable the bundles by adding them to the list of registered bundles in the app/AppKernel.php file of your project:

<?php
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new c975L\EventsBundle\c975LEventsBundle(),
        ];
    }
}

Step 3: Configure the Bundles

Check dependencies for their configuration:

v2.0+ of c975LEventsBundle uses c975L/ConfigBundle to manage configuration parameters. Use the Route "/events/config" with the proper user role to modify them.

Upgrading from v1.x? Check UPGRADE.md.

If you use Git for version control, you need to add the full path web/images/[folderPictures] in the .gitignore, otherwise all the content will be altered by Git.

Step 4: Enable the Routes

Then, enable the routes by adding them to the app/config/routing.yml file of your project:

c975_l_events:
    resource: "@c975LEventsBundle/Controller/"
    type: annotation
    prefix: /
    #Multilingual website use the following
    #prefix: /{_locale}
    #defaults:   { _locale: '%locale%' }
    #requirements:
    #    _locale: en|fr|es

Step 5: Create MySql table

You can use php bin/console make:migration to create the migration file as documented in Symfony's Doctrine docs OR use /Resources/sql/events.sql to create the table events. The DROP TABLE is commented to avoid dropping by mistake.

Step 6: Link and initialization of TinyMce

It is strongly recommended to use the Override Templates from Third-Party Bundles feature to integrate fully with your site.

For this, simply, create the following structure app/Resources/c975LEventsBundle/views/ in your app and then duplicate the files layout.html.twig and tinymceInit.html.twig in it, to override the existing Bundle files, then apply your needed changes, such as language, etc.

In layout.html.twig, it will mainly consist to extend your layout and define specific variables, i.e. :

{% extends 'layout.html.twig' %}

{# Defines specific variables #}
{% set title = 'Events (' ~ title ~ ')' %}

{% block content %}
    {% block events_content %}
    {% endblock %}
{% endblock %}

It is recommended to use Tinymce Cloud version. You will need a free API key. OR you can download and link to your project https://www.tinymce.com/download/.

If you want to keep all the available tools and make no change to Tinymce as it is, you don't need to overwrite tinymceInit.html.twig. You just need to provide, in config.yml your tinymceApiKey, if you use the cloud version and the tinymceLanguage (+ upload the corresponding file on your server under web/vendor/tinymce/[tinymceLanguage].js). Or you can overwrite tinymceInit.html.twig.

Step 7: Link and initialization of Bootstrap DatePicker

In the overridding file setup above, you must add a link to the cloud version (recommended) https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0/js/bootstrap-datepicker.min.js of Bootstrap DatePicker.

You may also want to setup the specific locales from cdnjs.com.

Initialization is done inside the templates of the Bundle.

How to use

The Route to display an event is http://example.com/events/{event}, the one to edit is http://example.com/events/edit/{event}.

A toolbar is displayed below the title if user is identified and has the acess rights.

Link to a page, in Twig, can be done by <a href="{{ path('events_display', { 'slug': 'slug' }) }}">Title of the event</a>.

The different Routes (naming self-explanatory) available are:

  • events_display
  • events_config
  • events_create
  • events_modify
  • events_duplicate
  • events_delete
  • events_dashboard
  • events_all
  • events_ical
  • events_slug
  • events_help

Include carousel

To include the carousel in a page, simply use {{ events_carousel(number) }} where you want it to appear and where number is the number of events to display.

Create Sitemap

In a console use php bin/console events:createSitemap to create a sitemap-events.xml in the web folder of your project. You can use a crontab to generate it every day. You can add this file in a sitemap-index.xmlthat groups all your sitemaps or directly use it if you have only one.

If this project help you to reduce time to develop, you can sponsor me via the "Sponsor" button at the top :)