SlideShare a Scribd company logo
1 of 39
Download to read offline
111
RECURRING DATES
A smarter approach in Drupal
2
MARTIN
@mandclu
ANDERSON-CLUTZ
DEMO!
3
- Fresh install on Drupal 9
BASE INSTALL
4
> composer create-project drupal/recommended-project drupal9
> cd drupal9
> composer require drush/drush
> drush site:install
"FANCY" INSTALL
5
> composer create-project drupal/recommended-project drupal9
> cd drupal9
> composer require drush/drush drupal/admin_toolbar drupal/gin
drupal/gin_toolbar drupal/olivero
> drush site:install
> drush en admin_toolbar admin_toolbar_tools gin_toolbar
> drush theme:enable olivero gin
> drush config:set system.theme default olivero -y
> drush config:set system.theme admin gin -y
ONE COMMAND INSTALL
6
> composer create-project drupal/recommended-project drupal9 &&
cd drupal9 && composer require drush/drush drupal/admin_toolbar
drupal/gin drupal/gin_toolbar drupal/olivero && drush site:install
--account-pass=[admin-password]
--db-url=mysql://[db-user]:[db-password]@127.0.0.1:3306/[db-nam
e] --site-name="Drupal 9 Demo" -y && drush en admin_toolbar
admin_toolbar_tools gin_toolbar && drush theme:enable olivero gin
&& drush config:set system.theme default olivero -y && drush
config:set system.theme admin gin -y && drush config:set
gin.settings classic_toolbar 1 -y && drush config:set olivero.settings
debug 0 -y
SMART DATE CALENDAR KIT
7
> composer require drupal/smart_date_calendar_kit
> drush en smart_date_calendar_kit smart_date_recur
RECURRING EVENTS
8
RECURRING EVENTS
9
- A common use case
- Though there are interface
differences, calendar apps are
largely consistent in the
functionality they offer
- Many apps use the RRULE format
for or storage and/or
import/export
THE GOLDEN RRULE
10
- A standard data model for describing recurring dates
- Used by popular calendar apps, including Google and Apple
- FREQ: YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, or
SECONDLY
- Limit: COUNT or UNTIL
- INTERVAL
- Complex structures: BYMONTH, BYWEEKNO, BYYEARDAY,
BYMONTHDAY, BYDAY, BYHOUR, BYMINUTE, BYSECOND,
BYSETPOS
RRULE EXAMPLES
11
- DTSTART;TZID=America/New_York:20201013T100000
RRULE:FREQ=WEEKLY;UNTIL=20201231T235900;INTERVAL=2;
WKST=MO
- Every other Tue at 10am EST until Dec 31, 2020
- RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=5,6,7,8,9,10,1
1
- Friday of the first full week of the month
THE GOLDEN RRULE
12
Note 1: Limit if
BYMONTHDAY is
present; otherwise,
special expand for
MONTHLY.
Note 2: Limit if
BYYEARDAY or
BYMONTHDAY is
present; otherwise,
special expand for
WEEKLY if BYWEEKNO
present; otherwise,
special expand for
MONTHLY if BYMONTH
present; otherwise,
special expand for
YEARLY.
SECONDLY MINUTELY HOURLY DAILY WEEKLY MONTHLY YEARLY
BYMONTH Limit Limit Limit Limit Limit Limit Expand
BYWEEKNO N/A N/A N/A N/A N/A N/A Expand
BYYEARDAY Limit Limit Limit N/A N/A N/A Expand
BYMONTHDAY Limit Limit Limit Limit N/A Expand Expand
BYDAY Limit Limit Limit Limit Expand Note 1 Note 2
BYHOUR Limit Limit Limit Expand Expand Expand Expand
BYMINUTE Limit Limit Expand Expand Expand Expand Expand
BYSECOND Limit Expand Expand Expand Expand Expand Expand
BYSETPOS Limit Limit Limit Limit Limit Limit Limit
HOW DEEP THE RABBIT HOLE GOES
13
STOP THE COMPLEXITY
14
15
SMART DATE
UI COMPARISON
16
- Simplified date entry
- “All Day” checkbox
- More natural output for date ranges
EDITOR EXPERIENCE
17
- Crawling a site about to launch, realized the slowest page was
an events archive
PERFORMANCE ISSUE
18
NEED FOR A MODULE
19
Editor UX
Performance
Formatting
20
APPROACH
LEVERAGE CORE
21
- Extend core Date Range field
- Uses an HTML5 datetime picker
- Store data as timestamps
- Native db Datetime has advantages, but 100% custom
- Also not as portable
- Postgres uses timestamps to store dates
- Use existing class and methods
- JS uses timestamps for internal storage too
RECURRING DATES
22
- Stores recurring instances as normal field deltas, so views will
work like normal multivalued fields
- Able to override specific instances
- Reschedule or cancel
- Special formatters for recurring dates
- Show a specific number of
upcoming and/or past instances
- Able to customize text display
of recurrence rule
CALENDAR INTEGRATION
23
- Originally a patch on Fullcalendar View
- Now a plugin instance
- Drag-and-drop support
- Double-click to add events
- Full support for recurring dates
STARTER KITS
24
- Bundles of configuration to get you up and running quickly
- Install an Event content type and related views
- A great way to try out Smart Date, or jump start your project
- Easiest way to use Smart Date with Fullcalendar View
- Patches welcome!
SMART DATE CALENDAR KIT
25
> composer require drupal/smart_date_calendar_kit
> drush en smart_date_calendar_kit smart_date_recur
DEMO TIME!
26
- Editor
- Field config
- Display config
- Smart Date formats
- Timezones
MORE DEMOS!
27
- Enable smart_date_recur
- Recurring Dates
- Formatter
- Make one!
- Calendar
SMART DATE - MORE OPTIONS!
28
> composer require drupal/smart_date:^3.1.0
> drush updb
> New recur options
> Make another event
29
OTHER MODULES
RECURRING DATES FIELD
30
- AKA date_recur
- The goto solution in Drupal 7
- RRULE field, instances generated
- No UI out of the box
- Companion module offers options
- Views require relationship to show instances
- Some calendars require patches
SMART DATE
31
- Primary design goal was ease of use
- Takes cues popular calendar software
- Recurring dates added as a submodule
- Instances stored as field deltas, reference rule
- Uses RRULEs internally
- Calendar integration out of the box
- Drag-and-drop editing, creation
RECURRING EVENTS
32
- Doesn't use RRULE internally
- Submodule for registration
- Not a field, custom entities
- UI is deliberately unstyled - a blank canvas!
- "Consecutive" recurring dates
- No timezone handling
BOOKABLE CALENDAR
33
- Uses the Smart Date interface
- Built for registration
- Not a field, custom entities
- A work in progress!
MODULES COMPARED
34
REGISTRATION
35
- Does it need to be in Drupal? Eventbrite, etc
- Simple use cases: Webform
- Complex use cases: Recurring Events
- Consider Bookable Calendar
- Even more robust
- BEE - Bookable Entities Everywhere
- RNG - Events and Registration
- BAT - Booking and Availability Management Tools
ADDRESSING THE PROBLEMS
36
SPEED
Timestamps for
better
performance
FORMAT
Intelligent
formatting of
output,
translatable
EDITOR UX
JS-rich interface
provides app-like
functionality
SITE
BUILDERS
Recurring
dates
Interactive
calendars
Timezones
BADCamp 2020
Coming up next
Friday 10 am ● Best practices for building multilingual
sites in Drupal 8 with Mohit Aghera
● Classic Website Blunders with Stephen
Pashby
● Facets in Drupal 8: supercharged
filtering of listings with Nick
Dickinson-Wilde
● New CSS Tech: Tell Your Designers! with
Mike Herchel
38
COMMENTS
QQUESTIONS
39
THANKS!

More Related Content

Similar to A smarter approach to recurring dates in Drupal

Drupal 8 update: May 2014. Migrate in core.
Drupal 8 update: May 2014. Migrate in core.Drupal 8 update: May 2014. Migrate in core.
Drupal 8 update: May 2014. Migrate in core.Vladimir Roudakov
 
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...Acquia
 
Automating Drupal Development: Makefiles, features and beyond
Automating Drupal Development: Makefiles, features and beyondAutomating Drupal Development: Makefiles, features and beyond
Automating Drupal Development: Makefiles, features and beyondNuvole
 
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017Jeff Geerling
 
Composer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalComposer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalPantheon
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Acquia
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupalDay
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and DrushPantheon
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis OverviewLeo Lorieri
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal DevelopmentChris Tankersley
 
Towards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineTowards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineKrimson
 
Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Martin Anderson-Clutz
 
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Codemotion
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Mediacurrent
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and moreAcquia
 
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal StackDecoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stacknuppla
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushPantheon
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAJesus Manuel Olivas
 

Similar to A smarter approach to recurring dates in Drupal (20)

Drupal 8 update: May 2014. Migrate in core.
Drupal 8 update: May 2014. Migrate in core.Drupal 8 update: May 2014. Migrate in core.
Drupal 8 update: May 2014. Migrate in core.
 
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
Fast Paced Drupal 8: Accelerating Development with Composer, Drupal Console a...
 
Automating Drupal Development: Makefiles, features and beyond
Automating Drupal Development: Makefiles, features and beyondAutomating Drupal Development: Makefiles, features and beyond
Automating Drupal Development: Makefiles, features and beyond
 
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
 
Composer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalComposer Tools & Frameworks for Drupal
Composer Tools & Frameworks for Drupal
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and Drush
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
drupal_training
drupal_trainingdrupal_training
drupal_training
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal Development
 
Towards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineTowards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev Machine
 
Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020
 
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
 
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal StackDecoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
Decoupling Drupal mit dem Lupus Nuxt.js Drupal Stack
 
Environment
EnvironmentEnvironment
Environment
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLA
 

More from Martin Anderson-Clutz

I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023
I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023
I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023Martin Anderson-Clutz
 
Simplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxSimplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxMartin Anderson-Clutz
 
Simplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampSimplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampMartin Anderson-Clutz
 
Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Martin Anderson-Clutz
 
Simplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceSimplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceMartin Anderson-Clutz
 

More from Martin Anderson-Clutz (7)

I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023
I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023
I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023
 
Simplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxSimplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptx
 
Image Optimization in Drupal
Image Optimization in DrupalImage Optimization in Drupal
Image Optimization in Drupal
 
Simplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampSimplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCamp
 
Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021
 
Simplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceSimplifying the Drupal Admin Experience
Simplifying the Drupal Admin Experience
 
Site Search and Relevance
Site Search and RelevanceSite Search and Relevance
Site Search and Relevance
 

Recently uploaded

PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxeditsforyah
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleanscorenetworkseo
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationMarko4394
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 

Recently uploaded (20)

Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 

A smarter approach to recurring dates in Drupal

  • 1. 111 RECURRING DATES A smarter approach in Drupal
  • 4. BASE INSTALL 4 > composer create-project drupal/recommended-project drupal9 > cd drupal9 > composer require drush/drush > drush site:install
  • 5. "FANCY" INSTALL 5 > composer create-project drupal/recommended-project drupal9 > cd drupal9 > composer require drush/drush drupal/admin_toolbar drupal/gin drupal/gin_toolbar drupal/olivero > drush site:install > drush en admin_toolbar admin_toolbar_tools gin_toolbar > drush theme:enable olivero gin > drush config:set system.theme default olivero -y > drush config:set system.theme admin gin -y
  • 6. ONE COMMAND INSTALL 6 > composer create-project drupal/recommended-project drupal9 && cd drupal9 && composer require drush/drush drupal/admin_toolbar drupal/gin drupal/gin_toolbar drupal/olivero && drush site:install --account-pass=[admin-password] --db-url=mysql://[db-user]:[db-password]@127.0.0.1:3306/[db-nam e] --site-name="Drupal 9 Demo" -y && drush en admin_toolbar admin_toolbar_tools gin_toolbar && drush theme:enable olivero gin && drush config:set system.theme default olivero -y && drush config:set system.theme admin gin -y && drush config:set gin.settings classic_toolbar 1 -y && drush config:set olivero.settings debug 0 -y
  • 7. SMART DATE CALENDAR KIT 7 > composer require drupal/smart_date_calendar_kit > drush en smart_date_calendar_kit smart_date_recur
  • 9. RECURRING EVENTS 9 - A common use case - Though there are interface differences, calendar apps are largely consistent in the functionality they offer - Many apps use the RRULE format for or storage and/or import/export
  • 10. THE GOLDEN RRULE 10 - A standard data model for describing recurring dates - Used by popular calendar apps, including Google and Apple - FREQ: YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, or SECONDLY - Limit: COUNT or UNTIL - INTERVAL - Complex structures: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR, BYMINUTE, BYSECOND, BYSETPOS
  • 11. RRULE EXAMPLES 11 - DTSTART;TZID=America/New_York:20201013T100000 RRULE:FREQ=WEEKLY;UNTIL=20201231T235900;INTERVAL=2; WKST=MO - Every other Tue at 10am EST until Dec 31, 2020 - RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=5,6,7,8,9,10,1 1 - Friday of the first full week of the month
  • 12. THE GOLDEN RRULE 12 Note 1: Limit if BYMONTHDAY is present; otherwise, special expand for MONTHLY. Note 2: Limit if BYYEARDAY or BYMONTHDAY is present; otherwise, special expand for WEEKLY if BYWEEKNO present; otherwise, special expand for MONTHLY if BYMONTH present; otherwise, special expand for YEARLY. SECONDLY MINUTELY HOURLY DAILY WEEKLY MONTHLY YEARLY BYMONTH Limit Limit Limit Limit Limit Limit Expand BYWEEKNO N/A N/A N/A N/A N/A N/A Expand BYYEARDAY Limit Limit Limit N/A N/A N/A Expand BYMONTHDAY Limit Limit Limit Limit N/A Expand Expand BYDAY Limit Limit Limit Limit Expand Note 1 Note 2 BYHOUR Limit Limit Limit Expand Expand Expand Expand BYMINUTE Limit Limit Expand Expand Expand Expand Expand BYSECOND Limit Expand Expand Expand Expand Expand Expand BYSETPOS Limit Limit Limit Limit Limit Limit Limit
  • 13. HOW DEEP THE RABBIT HOLE GOES 13
  • 17. - Simplified date entry - “All Day” checkbox - More natural output for date ranges EDITOR EXPERIENCE 17
  • 18. - Crawling a site about to launch, realized the slowest page was an events archive PERFORMANCE ISSUE 18
  • 19. NEED FOR A MODULE 19 Editor UX Performance Formatting
  • 21. LEVERAGE CORE 21 - Extend core Date Range field - Uses an HTML5 datetime picker - Store data as timestamps - Native db Datetime has advantages, but 100% custom - Also not as portable - Postgres uses timestamps to store dates - Use existing class and methods - JS uses timestamps for internal storage too
  • 22. RECURRING DATES 22 - Stores recurring instances as normal field deltas, so views will work like normal multivalued fields - Able to override specific instances - Reschedule or cancel - Special formatters for recurring dates - Show a specific number of upcoming and/or past instances - Able to customize text display of recurrence rule
  • 23. CALENDAR INTEGRATION 23 - Originally a patch on Fullcalendar View - Now a plugin instance - Drag-and-drop support - Double-click to add events - Full support for recurring dates
  • 24. STARTER KITS 24 - Bundles of configuration to get you up and running quickly - Install an Event content type and related views - A great way to try out Smart Date, or jump start your project - Easiest way to use Smart Date with Fullcalendar View - Patches welcome!
  • 25. SMART DATE CALENDAR KIT 25 > composer require drupal/smart_date_calendar_kit > drush en smart_date_calendar_kit smart_date_recur
  • 26. DEMO TIME! 26 - Editor - Field config - Display config - Smart Date formats - Timezones
  • 27. MORE DEMOS! 27 - Enable smart_date_recur - Recurring Dates - Formatter - Make one! - Calendar
  • 28. SMART DATE - MORE OPTIONS! 28 > composer require drupal/smart_date:^3.1.0 > drush updb > New recur options > Make another event
  • 30. RECURRING DATES FIELD 30 - AKA date_recur - The goto solution in Drupal 7 - RRULE field, instances generated - No UI out of the box - Companion module offers options - Views require relationship to show instances - Some calendars require patches
  • 31. SMART DATE 31 - Primary design goal was ease of use - Takes cues popular calendar software - Recurring dates added as a submodule - Instances stored as field deltas, reference rule - Uses RRULEs internally - Calendar integration out of the box - Drag-and-drop editing, creation
  • 32. RECURRING EVENTS 32 - Doesn't use RRULE internally - Submodule for registration - Not a field, custom entities - UI is deliberately unstyled - a blank canvas! - "Consecutive" recurring dates - No timezone handling
  • 33. BOOKABLE CALENDAR 33 - Uses the Smart Date interface - Built for registration - Not a field, custom entities - A work in progress!
  • 35. REGISTRATION 35 - Does it need to be in Drupal? Eventbrite, etc - Simple use cases: Webform - Complex use cases: Recurring Events - Consider Bookable Calendar - Even more robust - BEE - Bookable Entities Everywhere - RNG - Events and Registration - BAT - Booking and Availability Management Tools
  • 36. ADDRESSING THE PROBLEMS 36 SPEED Timestamps for better performance FORMAT Intelligent formatting of output, translatable EDITOR UX JS-rich interface provides app-like functionality SITE BUILDERS Recurring dates Interactive calendars Timezones
  • 37. BADCamp 2020 Coming up next Friday 10 am ● Best practices for building multilingual sites in Drupal 8 with Mohit Aghera ● Classic Website Blunders with Stephen Pashby ● Facets in Drupal 8: supercharged filtering of listings with Nick Dickinson-Wilde ● New CSS Tech: Tell Your Designers! with Mike Herchel