Overview
Rules 2 is a module, which allows Drupal 7 to execute actions depending on events and conditions. This GSoC project is about extending and improving Rules 2.
Description
Rules 2 is a great module, which has a wide range of application areas. Compared to its predecessor, which was designed for Drupal 6, it has improved on several parts. The scope of this GSoC project is to extend it by three points, that were partly already requested by some users:
- A Queuing system would be introduced,
- a custom links module would be implemented
- and some usability improvements would be made.
This expansions would be a especially useful for site, that make extensive use of rules, employment ad or shopping sites and community portals.
Detail
Here are the details to the 3 tasks, which will be implemented in the following order:
Queuing
There are many use cases where Rules has to execute a lot of actions. Currently the user has to wait for a page response until the Rules execution is finished, instead of getting it immediately and postponing further Rules processing. So for this purpose a queuing system would be introduced. Since drupal queues & cron would be used, the main objective of this part, is to implement user interface, that lets you manage those queues. A common use case, where Rules would benefit from such a system, would be when Rules has to send 100 mails. The user who triggered the action would get an immediate response, instead of waiting for Rules to be finished with all actions. Another uses case would be when Rules has to invoke a remote service that take a long time to finish(like crawlers). With the queuing system, the user could go to another part of the site without interrupting rules.
Custom Links
Normally a rules triggers on certain events(for example, when a user has registered to the site, or a comment was created) or since Rules 2 also on certain schedule. However there many use cases, where users want to trigger a rule manually, by clicking on a link. The only way do this currently, is by using the Flag module (using this patch), which is meant to mark nodes, comments or users. On certain situations this behavior will be inconvenient, since you'll have to flag or unflag to trigger rules. Therefore the second part of the this GSoC project would to implement a module which provides links specifically for rules. The links should be assignable to any entity, should have permissions and views integration. Like the flag module, this custom link module should have 3 types of links: ajax, normal and confirmation form links, but in contrary to the flag modules, they only should trigger rules, and not mark anything. Simple use cases would be batch function for user(delete comments or nodes, created by that user, send a mail to users with the same role), which would accessible through their profiles. Other use cases, that require more complex rules and additional modules, would be to annotate user profiles or to import, export and convert data with one click for a specific entity.
Usability improvements
Rules in general has a nice user interface, but on some parts the usability could be improved. One of those parts is the debug log of Rules. Especially when you execute many rules at one time, scrolling through all debug logs can be painful and therefore making them collapsible would be a big improvement. Implementing such small usability stuff would be the last part of this GSoC project.
Deliverables
The implementation of the queuing system and the usability improvements would be delivered as patches, which would then approved and committed by fago or klausi(who will hopefully be my mentor). Since the Costum Links isn't something that everyone would need, this part of the project would be released as a separate module.
Schedule
Since University in Austria doesn't ends until end of June, I would do most of the work in July and August.
| April 26 - May 23: | Planning |
| May 24 - July 10: | Code Queuing System |
| July 11 - July 24: | Implement Cosutim links |
| July 26 - August 7: | Improve Rules usability |
| August 8 - August 16: | Fix remainings issues and write documentation |
Who
My Name is Sebastian and I'm a student from the Vienna University of Technology. Over the last two years I've worked on several contrib modules for Drupal like Transformations, Pageroute or Rules and also I started developing my own modules like Autocomplete Deluxe or my last years GSoC project Rules Transformers. I helped fago implementing the user interface for rules 2 and also coded some small features like the autocomplete selector. Because of that I already have much knowledge about Rules and in developing UI's and therefore would be perfect for this project.
Comments
Mentorship
Good ideas, I already did a mentorship last year and I'd like to help you realize this project!