Jake Vanderwerf
2026-09-09 8318f60480aedd4aa1e64dc35468247dfbba9316
inc/registrar/helpers/MakeCalendarType.php
@@ -101,6 +101,7 @@
            'label' => 'Daily Schedule',
            'description' => 'Set specific times for multi-day events',
            'add_label' => 'Add Day',
            'row_label' => 'New Day',
            'condition' => [
               'field'  => 'make_multiple',
               'operator' => '==',
@@ -162,107 +163,115 @@
            'label' => 'Drop-ins Welcome?',
            'default' => true,
         ],
         'recurrence' => [
            'type' => 'group',
            'label' => 'Event Recurrence',
            'condition' => [
               'field'  => 'status',
               'operator' => '==',
               'value'  => 'repeat',
            ],
            'fields' => [
               'recurrence_type' => [
                  'type' => 'select',
                  'label' => 'Repeats',
                  'options' => [
                     'daily' => 'Daily',
                     'weekly' => 'Weekly',
                     'monthly' => 'Monthly',
                     'custom' => 'Custom'
                  ]
               ],
               'recurrence_interval' => [
                  'type' => 'number',
                  'label' => 'Every',
                  'description' => 'Repeat every X days/weeks/months',
                  'default' => 1,
               ],
               'recurrence_days' => [
                  'type' => 'set',
                  'label' => 'On These Days',
                  'options' => [
                     'monday' => 'Monday',
                     'tuesday' => 'Tuesday',
                     'wednesday' => 'Wednesday',
                     'thursday' => 'Thursday',
                     'friday' => 'Friday',
                     'saturday' => 'Saturday',
                     'sunday' => 'Sunday'
                  ],
                  'condition' => [
                     'field' => 'recurrence_type',
                     'operator' => '==',
                     'value' => 'weekly'
                  ]
               ],
               'recurrence_ends' => [
                  'type' => 'group',
                  'label' => 'Recurrence Ends',
                  'fields' => [
                     'type' => [
                        'type' => 'select',
                        'label' => 'Recurrence Ends',
                        'options' => [
                           'never' => 'Never',
                           'after' => 'After X occurrences',
                           'on' => 'On date'
                        ]
                     ],
                     'count' => [
                        'type' => 'number',
                        'label' => 'Number of occurrences',
                        'condition' => [
                           'field' => 'type',
                           'operator' => '==',
                           'value' => 'after'
                        ]
                     ],
                     'date' => [
                        'type' => 'date',
                        'label' => 'End date',
                        'condition' => [
                           'field' => 'type',
                           'operator' => '==',
                           'value' => 'on'
                        ]
                     ]
                  ],
               ],
               'rsvp_required' => [
                  'type' => 'true_false',
                  'label' => 'RSVP Required?'
               ],
               'rsvp_limit' => [
                  'type' => 'number',
                  'label' => 'RSVP Limit',
                  'condition' => [
                     'field' => 'rsvp_required',
                     'operator' => '==',
                     'value' => 1
                  ]
               ],
               'rsvp_deadline' => [
                  'type' => 'datetime',
                  'label' => 'RSVP Deadline',
                  'condition' => [
                     'field' => 'rsvp_required',
                     'operator' => '==',
                     'value' => 1
                  ]
               ],
         //TODO
         //RECURRENCE
//       'make_recurring' => [
//          'type' => 'true_false',
//          'label' => 'Make Repeating Event',
//          'default' => 0,
//       ],
//       'recurrence_type' => [
//          'type' => 'select',
//          'label' => 'Repeats',
//          'options' => [
//             'daily' => 'Daily',
//             'weekly' => 'Weekly',
//             'monthly' => 'Monthly',
//             'custom' => 'Custom'
//          ],
//          'condition' => [
//             'field'  => 'make_recurring',
//             'operator' => '==',
//             'value'  => '1',
//          ],
//       ],
//       'recurrence_interval' => [
//          'type' => 'number',
//          'label' => 'Repeat',
//          'description' => 'Repeat every X days/weeks/months',
//          'default' => 1,
//
//          'condition' => [
//             'field'  => 'make_recurring',
//             'operator' => '==',
//             'value'  => '1',
//          ],
//       ],
//       'recurrence_days' => [
//          'type' => 'set',
//          'label' => 'On These Days',
//          'options' => [
//             'monday' => 'Monday',
//             'tuesday' => 'Tuesday',
//             'wednesday' => 'Wednesday',
//             'thursday' => 'Thursday',
//             'friday' => 'Friday',
//             'saturday' => 'Saturday',
//             'sunday' => 'Sunday'
//          ],
//          'condition' => [
//             'field' => 'recurrence_type',
//             'operator' => '==',
//             'value' => 'weekly'
//          ]
//       ],
//       'recurrence_ends' => [
//          'type' => 'select',
//          'label' => 'Recurrence Ends',
//          'options' => [
//             'never' => 'Never',
//             'after' => 'After X occurrences',
//             'on' => 'On date'
//          ],
//          'condition' => [
//             'field'  => 'make_recurring',
//             'operator' => '==',
//             'value'  => '1',
//          ],
//       ],
//       'recurrence_ends_number' => [
//          'type' => 'number',
//          'label' => 'Number of occurrences',
//          'condition' => [
//             'field'  => 'recurrence_ends',
//             'operator' => '==',
//             'value'  => 'after',
//          ],
//       ],
//       'recurrence_ends_date' => [
//          'type' => 'date',
//          'label' => 'End date',
//          'condition' => [
//             'field' => 'recurrence_ends',
//             'operator' => '==',
//             'value' => 'on'
//          ]
//       ],
         //RSVP
         'rsvp_required' => [
            'type' => 'true_false',
            'label' => 'RSVP Required?'
         ],
         'rsvp_limit' => [
            'type' => 'number',
            'label' => 'RSVP Limit',
            'condition' => [
               'field' => 'rsvp_required',
               'operator' => '==',
               'value' => 1
            ]
         ]
         ],
         'rsvp_deadline' => [
            'type' => 'datetime',
            'label' => 'RSVP Deadline',
            'condition' => [
               'field' => 'rsvp_required',
               'operator' => '==',
               'value' => 1
            ]
         ],
      ];
      foreach ($fields as $name => $config) {