SlideShare a Scribd company logo
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 Recurring Dates in Drupal - BADCAMP 2020

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 beyond
Nuvole
 
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
Jeff Geerling
 
Composer Tools & Frameworks for Drupal
Composer Tools & Frameworks for DrupalComposer Tools & Frameworks for Drupal
Composer Tools & Frameworks for Drupal
Pantheon
 
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
Acquia
 
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
DrupalDay
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and Drush
Pantheon
 
[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
Leo Lorieri
 
drupal_training
drupal_trainingdrupal_training
drupal_training
Paulo Sérgio Amaral
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal Development
Chris Tankersley
 
Towards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineTowards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev Machine
Krimson
 
Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020
Martin 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 9
Mediacurrent
 
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
Acquia
 
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
nuppla
 
Environment
EnvironmentEnvironment
Environment
Masters Academy
 
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
Pantheon
 
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
Jesus Manuel Olivas
 

Similar to Recurring Dates in Drupal - BADCAMP 2020 (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 2023
Martin 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.pptx
Martin Anderson-Clutz
 
Image Optimization in Drupal
Image Optimization in DrupalImage Optimization in Drupal
Image Optimization in Drupal
Martin Anderson-Clutz
 
Simplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampSimplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCamp
Martin 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 2021
Martin Anderson-Clutz
 
Simplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceSimplifying the Drupal Admin Experience
Simplifying the Drupal Admin Experience
Martin Anderson-Clutz
 
Site Search and Relevance
Site Search and RelevanceSite Search and Relevance
Site Search and Relevance
Martin 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

Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
uehowe
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
uehowe
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 

Recently uploaded (16)

Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 

Recurring Dates in Drupal - BADCAMP 2020

  • 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