Code Monkey home page Code Monkey logo

rng's Introduction

RNG is a Drupal module enabling people to register for events.

Copyright (C) 2018 Daniel Phin (@dpi)

Build Status

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

About

RNG is inspired by contributed Registration and Signup modules. Development originally began early 2013, but has been reworked due to inactivity of the original project, and unexpected extension of development timeline for Drupal 8.

See MAINTAINERS.txt for a list of official developers.

Dependencies

RNG

RNG Views sub module

Terms

  • Event: any content entity.
  • Registration type: bundle entity for Registrations.
  • Registration: an entity that associates with one Event, and has at least one child Registrant. Each Registration has at least one owner Registrant.
  • Registrant: an entity that maintains a relationship between a Registration and an Identity.
  • Identity: an entity that has implemented a method for contact. Cores' user module provides the User entity. Identity module provides the Contact entity, allowing users to create registrations by providing an email address.
  • EventType: and entity maintaining configuration, and default values for EventConfig. Each EventType is associated with another entity/bundle combination.

Model

┌─ Event Type
├─ Registration Type(s)
└─►Event ─┬─► Registration(s) ─┬─► Registrant(s) ─► Identity
          ├────────────────────┴─► Group(s)
          └─► Rule(s) ─┬─► Action(s)
                       └─► Condition(s)

A Registration is a content entity that associated with an Event entity, and maintains relationships to Identities via Registrant entities. Each Registrant maintains a relationship between a Registration and an Identity. Registrant entities are content, and thus can hold meta information in fields describing how an Identity relates to a Registration.

Usage

Please see the project websites for instructions:

Building

SASS

sass --watch sass:css --style expanded

rng's People

Contributors

dpi avatar weilinggu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rng's Issues

Fatals on event pages

Fatals occur on entity pages that are the same entity type of existing event types, but different bundles.

EventMeta registration type lookup: EventMeta.php:119

Create debug module

And move rules tab from rng.module to debug module.

Debug module should be useful to site administrators. It is not a development module.

Automatically create event node type

Add capability for user to create a node type (if node.module is enabled) or choose existing bundle (any entity) from the Add event type form (admin/config/rng/event_types/add)

Add Template access control

Add access control allowing event managers to edit courier templates.

Currently, only the admin can edit email templates.

Access rules page is empty

Access rules are created per event when the event settings are saved for the first time. Until then, the access rules page appears empty.

Dynamic local actions missing

After adding a new event type, dynamic local actions are not available until menu cache is cleared.

Affected actions: Add message, Add group, Reset access to default

Revision log is visible on node event settings form.

Follow up from #39

For node event types, revision log persists despite removing all components.

This is because revision_log base field does not have ->setDisplayConfigurable('form', TRUE);

Need to determine whether omitting this declaration is deliberate, and/or why removeComponent still cannot remove revision_log.

removeComponent will remove revision_log, but when the form display entity is saved, language and revision_log are added back.

Postgres tests failing due to string usage in integer field.

DER issue: Support non-numeric entity ID's

Test: https://www.drupal.org/pift-ci-job/31805

exception: [Uncaught exception] Line 658 of core/lib/Drupal/Core/Database/Connection.php:
Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "registration_type_a" LINE 5: ...d (courier_template_collection.owner__target_id = 'registrat...

Stack:

...
courier_entity_predelete(Object, 'registration_type')
call_user_func_array('courier_entity_predelete', Array)
Drupal\Core\Extension\ModuleHandler->invokeAll('entity_predelete', Array)
Drupal\Core\Config\Entity\ConfigEntityStorage->invokeHook('predelete', Object)
Drupal\Core\Entity\EntityStorageBase->delete(Array)
Drupal\Core\Entity\Entity->delete()
Drupal\rng\Tests\RegistrationTypeTest->testRegistrationTypes()
...

Support for anonymous users

Really like what you've done so far. But it looks to me like support for anonymous registrants isn't there yet despite this mention in the readme:

Identity: any entity that has implemented a method for contact, core implements the User entity, although RNG provides another entity which is used for anonymous purposes.

Would love to see support for anonymous registrants in the near future!

Capacity widget: number or unlimited

Take advantage of dpi/unlimited_number project.

Original issue

Implement a widget for selecting a maximum capacity for events, instead of requiring users to use -1 or empty string.

Create identity element

Move identity selection from RegistrationForm.php into a re-usable element. Support >1 identity references on create registration form.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.