• Stars
    star
    181
  • Rank 210,840 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 14 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

jQuery recurrence widget based on the icalendar RFC5545 standard

jQuery recurrenceinput widget

jQuery plugin widget which support the definition of complex recurrence rulesets based on RFC5545, the iCalendar standard.

The recurrence rule string, generated by this package, should be directly usable in ics calendar files. It was developed for the Plone, but is completely independent of the web-framework. This widget is production ready and used in several sites.

https://raw.githubusercontent.com/collective/jquery.recurrenceinput.js/master/Screenshot_thumb.png

Features

  • The recurrence widget supports most of the options of the iCalendar RRULE as well as EXDATE and RDATE.
  • It supports internationalization.
  • It supports predetermined recurrence rules, so called "templates".

Non-Features

This widget does not support all features of RRULE's. For example:

  • It does not support recurrence on smaller than daily basis.
  • In RRULE's end-dates can end either be in local time or in UTC. This widget only supports UTC, which means the start and end dates of the event as a whole, when exported may not be in local time. They must either specify a timezone or be in UTC. If the RRULE fed to the widget is in local time, this will be made into UTC with no timezone translation.
  • Any parameters will be ignored and stripped on saving the rule.

Requirements

Requires jQuery and jQuery Tools datetime widget and overlay support. It is currently being tested with jQuery 1.4, because that's what plone uses, and jQuery 1.7, because that is the last version supported by jQuery Tools.

jQuery 1.5 may work but is untested. Bugs in jQuery 1.6.4 means it does not work. jQuery Tools doesn't support jQuery 1.8 yet.

It's tested on Chromium 20 (Linux), Firefox 16 (Linux), IE 8 and IE 9 (Windows).

To Do

High priority:

  • 100% code coverage from tests (currently 95%).

Medium priority:

  • Make it possible to change the order of the fields as a part of the i18n. (jQuery templates)?
  • The human readable output should probably be done directly from the RRULE and not by using the form i18n, to improve the grammar and rule support.

Low priority:

  • Support more obscure RFC5545 options, either in the form or by providing warnings that the option is unsupported.

Developer information

To test, demo or develop jquery.recurrenceinput locally you need to run a local server, provided in the test_server.py script.

This server requires the dateutil module, so you must install it first. Here are some examples of how to do this, depending on your platform:

Debian/Ubuntu:

$ sudo apt-get install python-dateutil

A non-system Python 2 with setuptools or distribute installed:

$ <pathtopython>/easy_install python-dateutil

Then start the tests server like so:

$ python ./test_server.py

Open the demo pages http://localhost:8000/demo/input.html and http://localhost:8000/demo/localized.html

And Open the tests: http://localhost:8000/tests/tests.html

The demo/input.html document contains basic usecases and can be used when developing on this widget.

You also need to run the tests. These are located in tests/tests.js, and use the QUnit test framework. You run them by opening tests/test.html in the browser. The same issue with allowing Ajax from the local hard drive is in effect for the tests as well.

In the tests directory there is also a copy of jslint.js, for easy access. To run these you need to install a JavaScript engine, such as Rhino or SpiderMonkey. You then run it with:

$ js tests/jslint.js <file>

The following files should be jslinted:

src/jquery.recurrenceinput.js
src/tests.js

To keep the Coverage tests updated you need to install jscoverage ( http://siliconforks.com/jscoverage/ ). You then keep the coverage code updated by running:

jscoverage src/ coverage/

To run the coverage tests you go to http://localhost:8000/coverage/jscoverage.html?/tests/coveragetest.html

Contributors

This project was originally started by Rok Garbas.

Authors:
  • Lennart Regebro
  • Rok Garbas
  • Vilmos Somogyi
  • Johannes Raggam
  • Mike Rhodes
  • Kai Lautaportti

Thanks to Hexagon IT, http://www.hexagonit.fi/, who funded the main body of work, done by Lennart Regebro.

More Repositories

1

icalendar

icalendar parser library for Python
Python
975
star
2

Collective

Plone Collective Requests, Questions, Maintenance
Shell
122
star
3

buildout.python

Buildout all the Pythons
Python
112
star
4

collective.developermanual

Plone Developer Manual - the source code of developer.plone.org
Python
82
star
5

mr.bob

Mister Bob (the builder) is filesystem template renderer
Python
67
star
6

collective.cover

A sane, working, editor-friendly way of creating front pages and other composite pages. Working now, for mere mortals.
Python
48
star
7

awesome-plone

Add-ons and resources for the CMS Plone
47
star
8

Products.EasyNewsletter

Powerful newsletter/mailing product for Plone.
Python
28
star
9

robotframework-selenium2screenshots

Robot Framework keyword library for capturing annotated screenshots with Selenium2Library
RobotFramework
28
star
10

sphinxcontrib-httpexample

Adds example directive for sphinx-contrib httpdomain
Nix
23
star
11

awesome-volto

A curated list of everything that makes Volto awesome
23
star
12

tutorial-blog-angular2

A tutorial how to build a simple blog with Angular 2 and plone.restapi.
TypeScript
22
star
13

collective.documentviewer

Python
21
star
14

cookiecutter-plone-starter

Cookiecutter Plone Starter is a framework for jumpstarting Plone 6 projects quickly.
Python
20
star
15

gatsby-source-plone

Source plugin for pulling data into Gatsby from Plone sites
JavaScript
20
star
16

collective.elasticsearch

Plone ElasticSearch Integration
Python
19
star
17

collective.solr

Solr search engine integration for Plone
Python
19
star
18

collective.taxonomy

Create, edit and use hierarchical taxonomies in Plone!
Python
18
star
19

mr.rubber

your elastic friend to start supervisord processes based on cpu cores available.
Python
16
star
20

plone.jsonapi.core

Plone JSONAPI Core Framework
Python
16
star
21

minimalplone4

Minimal buildout configuration for Plone4
15
star
22

collective.exportimport

Export and import content and other data from and to Plone
Python
15
star
23

plonetheme.webpacktemplate

provides a mr.bob template to generate a webpack thema package for Plone
HTML
15
star
24

collective.documentgenerator

Desktop document generation (.odt, .pdf, .doc, ...) based on appy framework (http://appyframework.org) and OpenOffice/LibreOffice
Python
15
star
25

cioppino.twothumbs

Plone product base on like and dislike thumbs
Python
14
star
26

funnelweb

Easy static site imports for CMS
Python
14
star
27

bibliograph.parsing

named utilities for parsing bibliographic references from a number of standard formats (bibtext, endnote, medline, ris, xml (mods))
Python
14
star
28

pas.plugins.ldap

Zope (and Plone) PAS Plugin providing users and groups from LDAP directory
Python
13
star
29

collective.easyform

Forms for Plone
Python
13
star
30

collective.panels

Plone add-on that implements "portlet panels"
Python
13
star
31

volto-educal-theme

volto-educal-theme: Volto add-on
Less
13
star
32

collective.migrationhelpers

Some helpers and examples to use during migrations
Python
13
star
33

wildcard.media

JavaScript
13
star
34

collective.lineage

Turns subfolders of a Plone site to appear as autonomous Plone sites
Python
13
star
35

plonetheme.bootstrap

JavaScript
13
star
36

tutorial.todoapp

A simple ToDo app tutorial for Plone.
Python
13
star
37

collective.ploneide

PloneIDE
JavaScript
12
star
38

collective.xmpp.chat

JavaScript
12
star
39

plone.jsonapi.routes

Plone JSONAPI Route Providers
Python
12
star
40

robotsuite

Python unittest test suite for Robot Framework
Nix
12
star
41

collective.jsonify

Provide json representation for content in Plone
Python
12
star
42

mr.migrator

Mr.Migrator: Drive-by transmogrifiction made easy!
Python
12
star
43

collective.xsendfile

Deliver blobs direct through your webserver using X-Sendfile/ X-HTTP-ACCEL
Python
12
star
44

quintagroup.transmogrifier

Python
11
star
45

collective.fontawesome

Font Awesome for Plone
Python
11
star
46

collective.polls

A content type, workflow, and portlet for conducting online polls, for anonymous and logged-in users
Python
11
star
47

plonetheme.booster

A theme for Plone 5
CSS
11
star
48

collective.newrelic

This package offers instrumentation for NewRelic ( http://www.newrelic.com ) in Plone ( http://www.plone.org ).
Python
11
star
49

Solgema.fullcalendar

A complete implementation of Adam Shaw FullCalendar into Plone.
Python
10
star
50

collective.upload

File upload widget with multiple file selection, drag&drop support, progress bars, client-side image resizing and preview images.
Python
10
star
51

stxnext.staticdeployment

Python
10
star
52

plonetheme.clean_blog

Clean Blog theme for Plone 5
CSS
10
star
53

fise.client

Client for FISE (Semantic Engine) Restful API.
Python
10
star
54

plone.app.locales

Plone Core Translations
Python
10
star
55

collective.checkdocs

Distutils command to view and validate restructured text in package's long_description
Python
10
star
56

code-snippets

Place to collaborate on code snippets.
Python
9
star
57

collective.dexteritytextindexer

Dynamic SearchableText index for dexterity content types
Python
9
star
58

collective.upgrade

Python
9
star
59

zpretty

A tool to format in a very opinionated way HTML, XML and text containing XML snippets.
Python
9
star
60

plonetheme.future_imperfect

A Theme for Plone 5
CSS
9
star
61

collective.js.datatables

Plone Integration of jquery.dataTables plugin
HTML
9
star
62

volto-form-block

Volto addon for a customizable form block
JavaScript
9
star
63

collective.plonetruegallery

Very customizable and sophisticated gallery for Plone
Python
9
star
64

collective.taskqueue

Asyncore-based asynchronous task queue for Plone
Python
9
star
65

collective.collectionfilter

Plone addon for filtering collection results
Python
9
star
66

transmogrify.webcrawler

transmogrifier source blueprints for crawling html
Python
9
star
67

plone.app.imagecropping

Crops Images in Plone manually using cropper JS library
Python
9
star
68

collective.django

Integrating Plone and Django
Python
9
star
69

plone_clean_history

Simple script that help cleanig up history storage in you Plone site
Python
9
star
70

collective.z3cform.widgets

A widget package for Plone 4 projects.
Python
8
star
71

collective.recipe.vscode

Buildout Recipe for Visual Studio Code
Python
8
star
72

Products.Ploneboard

Python
8
star
73

wildcard.foldercontents

A backport of the Plone 5 folder contents implementation.
Python
8
star
74

rapido.plone

Hacking Plone applications in the Theme
Python
8
star
75

collective.celery

celery integration with Plone
Python
8
star
76

collective.nitf

A Dexterity-based content type inspired on the News Industry Text Format specification
Python
8
star
77

collective.geo.bundle

Python
8
star
78

Products.CMFContentPanels

Python
8
star
79

collective.z3cform.datagridfield

Datagrid Field for z3c.forms
Python
8
star
80

collective.jsonmigrator

JSON based migrations for Plone
Python
8
star
81

collective.dynatree

Dynatree (JQuery Javascript) integration for Plone
JavaScript
8
star
82

pas.plugins.authomatic

Authomatic OAuth1/OAuth2/OpenID Login Integration with Plone
Python
8
star
83

collective.jekyll

Diagnose the state of your Plone content
Python
8
star
84

collective.contentsections

Python
8
star
85

cyn.in

A 'cyn.in' 3.1.3 version that is maintained for Plone Community guys
Python
8
star
86

mr.cabot

Mr. Cabot maps your contributors
Python
7
star
87

collective.xmltestreport

Test runner which can output an XML report compatible with JUnit and Jenkins
Python
7
star
88

mrs-developer

NodeJS utility to checkout Git repositories as NPM dependencies
JavaScript
7
star
89

plone.importexport

Python
7
star
90

collective.messagesviewlet

Add-on displaying manager defined messages in a viewlet
Python
7
star
91

collective.carousel

Python
7
star
92

collective.simplemanagement

Python
7
star
93

collective.contentlicensing

None
Python
7
star
94

collective.sentry

Sentry integration with Zope (4)/Plone (5)
Python
7
star
95

example.contenttype

A dexterity contenttype with all available fields
Python
7
star
96

collective.experimental_angular_pwa

JavaScript
7
star
97

pas.plugins.sqlalchemy

SQLAlchemy PAS plugin (Authentication) for Zope2/ Plone
Python
7
star
98

collective.geo.openlayers

JavaScript
7
star
99

sc.social.like

Social: Like Actions is a Plone package (add-on) providing simple Google+, Twitter and Facebook integration for Plone Content Types.
Python
7
star
100

templer.core

Python
7
star