Skip to content

Releases: MightyMCoder/EventAttendanceTracker

1.2.2

Choose a tag to compare

@MightyMCoder MightyMCoder released this 31 Oct 12:38

Fixes

  • Show the standard Admidio success message when saving attendance, before returning to the calling page. (#22)
  • Use standard success and validation-error feedback in all five plugin settings forms. Preserve entered values when validation fails and provide unique submit buttons for each panel. (#22)
  • Show the missing installation confirmation and handle errors from plugin updates, update checks and clearing editing locks. (#22)
  • Coordinate the attendance heartbeat with saving to prevent false expired-lock warnings during the success message. Lock validation resumes after a failed save. (#22)
  • Make the permanent-excuse table and modal available when creating a configuration. The person selection follows the currently selected groups and roles without requiring an initial save. (#23)
  • Save new configurations and their permanent excuses together. Invalid entries roll back the entire operation rather than leaving a partial configuration. (#23)

Updating from 1.2.1

Back up your database, replace the plugin files and run the plugin update from Plugin settings. This patch does not change the database structure. Existing configurations, permanent excuses and attendance data are retained.

No additional Admidio Core changes are required for these fixes. The previously required Core fix for required single-select fields must still be present in your Admidio installation.

Requires Admidio 5.0.x and PHP 8.2 or newer.

Full Changelog: 1.2.1...1.2.2

1.2.1

Choose a tag to compare

@MightyMCoder MightyMCoder released this 30 Oct 10:45

Fixes

  • Prevent a DataTables warning when opening an empty permanent-excuse table. The table now waits for asynchronous initialization, including language loading, before its rows and editor are initialized. (#20)
  • Prevent early filter changes in the configuration overview and attendance dashboard from discarding table rows while the language file is still loading. Pending selections are applied once initialization is complete. (#21)
  • Correct the configuration table's column count and disable sorting on the actions column instead of the description column. (#21)

Adjustment

  • Permanent excuses now show 10 entries per page by default.

The initialization follows the same init.dt pattern used by Admidio's contacts and inventory modules. No changes to the Admidio Core are required for these fixes.

Updating from 1.2.0

Back up your database, replace the plugin files and run the plugin update from Plugin settings. This patch does not change the database structure. Existing configurations, permanent excuses and attendance data are retained.

Requires Admidio 5.0.x and PHP 8.2 or newer.

Full Changelog: 1.2.0...1.2.1

1.2.0

Choose a tag to compare

@MightyMCoder MightyMCoder released this 30 Oct 10:27

What's new

Permanent excuses per configuration (#17)

People with full plugin access can manage permanent excuses under Edit configuration → Permanent excuses. Each rule applies to one person in that configuration and has a start date and an optional end date.

  • Entries are managed in an Admidio DataTable with search, paging and edit/delete actions.
  • Adding and editing use a mobile-friendly modal. Applying a row or deleting an entry only changes the draft list; the database is updated when the complete configuration is saved.
  • Matching future and ongoing events show an excused status when attendance recording is opened. Until event end, this remains an automatic default. Changing or removing the rule before then restores the unrecorded status unless a manual entry takes precedence.
  • Saving attendance without changing the prefilled status does not convert it into a manual entry. Explicit changes to the status field are treated as manual entries and take precedence.
  • Automatic excuses are persisted after event end. Later rule changes preserve completed attendance history.
  • Reports, exports and the self-excuse overview also take permanent excuses into account. Rules do not add people who are not expected through the configuration's roles.

Fixes

  • Register the plugin autoloader before Admidio restores the session, preventing the __PHP_Incomplete_Class error when saving a tracker configuration. (#18)
  • Return saved configurations to the configuration overview. Attendance recording now returns to the originating dashboard or event list, preserving its event-period filter, including after editing-lock expiry. Plugin updates return to settings, and uninstallation returns to plugin management. (#19)

Updating from 1.1.0

Back up your database, replace the plugin files and run the plugin update from Plugin settings. Version 1.2.0 adds a database table for permanent-excuse rules. Existing configurations, attendance records and editing-lock settings are retained.

After updating, open an existing configuration to add permanent excuses. No rules are enabled automatically.

Requires Admidio 5.0.x and PHP 8.2 or newer.

Documentation

Full Changelog: 1.1.0...1.2.0

1.1.0

Choose a tag to compare

@MightyMCoder MightyMCoder released this 29 Oct 05:37

What's new

  • Optional editing locks help prevent concurrent attendance recording for the same event within a configuration, including when the same account is used in different browsers.
  • Administrators can enable editing locks, configure how long they remain valid without renewal, and clear all editing locks for their organisation.
  • Open attendance forms renew their locks every 5 seconds. If a lock expires or is cleared, the form shows a message and returns to the plugin's main page after confirmation. Unsaved changes must be entered again.
  • Settings sections now use consistent accordion icons.
  • The README has been simplified, and the English and German Wiki now includes editing-lock documentation.

Updating from 1.0.0

Back up your database, replace the plugin files, then run the plugin update from Plugin settings. This update adds the database table used for editing locks. Existing configurations and attendance data are retained.

Editing locks are disabled by default. To use them, open Plugin settings → Editing locks, enable the feature and save. The default lock duration is 5 minutes without a successful renewal; it does not limit the total editing time while renewals continue.

Documentation

Full Changelog: 1.0.0...1.1.0

1.0.0

Choose a tag to compare

@MightyMCoder MightyMCoder released this 19 Oct 07:17

Full Changelog: 1.0.0-beta.3...1.0.0


Required Admidio Core adjustment

This plugin version relies on native HTML5 validation for required single-select fields. Admidio 5.0.17 currently renders an empty required single-select so that browsers can treat it as valid.

Before using this version, apply the following small Core adjustment. It affects required normal single-select fields only; multi-selects, optional fields and selects with an explicit firstEntry are unaffected.

1. Use only one empty option

File: src/UI/Presenter/FormPresenter.php, around line 1411 in addSelectBox().

For required fields, do not prepend an additional empty - Please choose - option. The relevant block must be:

} elseif ($optionsAll['showContextDependentFirstEntry']) {
    if ($optionsAll['property'] === self::FIELD_REQUIRED) {
        // if there is only one entry and a required field than select this entry
        if (count($values) === 1) {
            $optionsAll['defaultValue'] = array_key_first($values);
        }
    } else {
        array_unshift($valuesArray, array('id' => '', 'value' => ''));
    }
}

Remove this former else branch inside the FIELD_REQUIRED condition, if it is present:

} else {
    array_unshift($valuesArray, array(
        'id' => '',
        'value' => '- ' . $gL10n->get('SYS_PLEASE_CHOOSE') . ' -'
    ));
}

2. Make the first placeholder option empty

File: themes/simple/templates/sys-template-parts/form.select.tpl, around line 14.

Replace the existing placeholder option:

<option value="placeholder" hidden="hidden" disabled="disabled">{$data.label}</option>

with:

{if {array_key_exists key="required" array=$data.attributes} && !$data.multiselect && $data.firstEntry eq ""}
    <option value="" {if $data.defaultValue eq ""}selected="selected"{/if} hidden="hidden" disabled="disabled">- {$l10n->get('SYS_PLEASE_CHOOSE')} -</option>
{else}
    <option value="placeholder" hidden="hidden" disabled="disabled">{$data.label}</option>
{/if}

The required single-select now has exactly one initial option with value="". Therefore, browsers correctly block submission while no valid selection has been made.

This is a temporary workaround for Admidio 5.0.17 until the corresponding Core fix is available.

1.0.0-Beta.3

1.0.0-Beta.3 Pre-release
Pre-release

Choose a tag to compare

@MightyMCoder MightyMCoder released this 18 Oct 09:09

1.0.0-Beta.2

1.0.0-Beta.2 Pre-release
Pre-release

Choose a tag to compare

@MightyMCoder MightyMCoder released this 14 Oct 16:43

1.0.0-Beta.1

1.0.0-Beta.1 Pre-release
Pre-release

Choose a tag to compare

@MightyMCoder MightyMCoder released this 14 Oct 15:53
2cabc23

What's Changed

  • chore: sort en.xml alphabetically by @github-actions[bot] in #2

New Contributors

  • @github-actions[bot] made their first contribution in #2

Full Changelog: 0.0.4-beta.1...1.0.0-Beta.1

0.0.4-beta.1

0.0.4-beta.1 Pre-release
Pre-release

Choose a tag to compare

@MightyMCoder MightyMCoder released this 12 Oct 14:01