Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ The format follows [Keep a Changelog] (https://keepachangelog.com/en/1.1.0/).
- **"View details" speaks Portuguese and opens screenshots in place** (#1716). The tabs and banner follow the viewer's language when the plugin ships a translation (`languages/readme-pt_BR.txt`), and a screenshot opens in an overlay with arrows, swipe and zoom instead of a new tab.
- **Choice fields take one option per row, and every field can carry limits** (#1729). Options may contain commas; a choice field can shuffle its options per participant; a checkbox can cap how many are ticked; text and textarea take a minimum and maximum length (server ceilings 255 and 2,000) with a live counter; number and date take a range. The participant sees each limit, and the editor says what each type is for.
- **Quiz questions are scored per field** (#1730). Each field can be scored or left out; choices by correct option(s), a checkbox only on the exact set, or by points per option; text when answered; number and date by a correct range. "Show which answers were correct" now works. New tokens `{{correct_count}}` and `{{question_count}}`; existing forms score as before.
- **A quiz can clear its answers when the participant leaves the window** (#1731). Off by default; the form warns first, switching tabs clears the scored answers and a dialog says why. It is not an attempt; the count is stored and shown on the submission. A deterrent, not a lock.
- **Open quiz answers can be graded by a person** (#1732). A manually graded text question holds the attempt as "Awaiting Grading"; grading it on the edit screen issues the certificate or records Retry/Failed and emails the result. New capability `ffc_grade_certificates`, seeded from `ffc_edit_certificates`.

### Changed

Expand All @@ -31,6 +33,7 @@ The format follows [Keep a Changelog] (https://keepachangelog.com/en/1.1.0/).
- **The standard fields validate as they claim** (#1734). An invalid CPF/RF now blocks the submit and its message stays until corrected; an invalid email says so instead of "Email address is required."; a name needs at least two words and 4 characters, in the browser and on the server.
- **Settings → Certificates saves the required tags one per line** (#1736). The Save button stored the list on a single line, which then read as one tag; a list already stored that way reads as separate tags again.
- **A certificate form submits again** (#1739). A script printed before `ffc-core.js` that created the `FFC` namespace made the core skip its own API, so every submit failed on `FFC.request is not a function`; the core now installs its API and keeps what was already there.
- **A quiz attempt that did not pass is no longer a certificate** (#1744). The first attempt was saved as issued and its certificate link emailed before its result was known; its code also verified. The email, verification by code or link, the REST lookup and the user dashboard now skip it.

## [6.38.0] (2026-10-12) — `529e80a1`

Expand Down
16 changes: 16 additions & 0 deletions assets/css/ffc-admin-submission-edit.css
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,22 @@
overflow-wrap: anywhere;
}

/* Quiz grading card (#1732): one open answer per block. */
.ffc-grade-question + .ffc-grade-question {
margin-top: var(--ffc-spacing-md);
padding-top: var(--ffc-spacing-md);
border-top: 1px solid var(--ffc-border-light);
}

.ffc-grade-answer {
margin: 0 0 var(--ffc-spacing-sm);
padding: var(--ffc-spacing-sm) var(--ffc-spacing-md);
border-left: 3px solid var(--ffc-border);
background: var(--ffc-gray-100);
color: var(--ffc-text);
overflow-wrap: anywhere;
}

/* LGPD consent, inside the shared collapsible section. */
.ffc-consent-details p {
margin: 0 0 var(--ffc-spacing-xs);
Expand Down
2 changes: 1 addition & 1 deletion assets/css/ffc-admin-submission-edit.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions assets/css/ffc-common.css
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,12 @@
justify-content: center;
}

/* A modal rendered with `hidden` stays hidden: `display: flex` above
outranks the user agent's `[hidden]` rule (#1731). */
.ffc-shortcode .ffc-modal[hidden] {
display: none;
}

.ffc-shortcode .ffc-modal-backdrop {
position: absolute;
top: 0;
Expand Down
2 changes: 1 addition & 1 deletion assets/css/ffc-common.min.css

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions assets/css/ffc-frontend.css
Original file line number Diff line number Diff line change
Expand Up @@ -2395,3 +2395,17 @@ details.ffc-consent-description > p {
border: 1px solid CanvasText;
}
}

/* Quiz "leave the window" dialog (#1731). It reuses the shared modal; the
theme's paragraph size would otherwise dwarf the dialog's own title. */
.ffc-shortcode .ffc-quiz-leave-overlay .ffc-modal-header h3 {
font-weight: 600;
color: var(--ffc-text);
}

.ffc-shortcode .ffc-quiz-leave-overlay .ffc-modal-body p {
margin: 0;
font-size: var(--ffc-font-size-base);
line-height: 1.5;
color: var(--ffc-text);
}
2 changes: 1 addition & 1 deletion assets/css/ffc-frontend.min.css

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/js/ffc-admin-field-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@
$block.find('[data-ffc-quiz-help="correct"]').toggleClass('ffc-hidden', !(isChoice && mode === 'correct'));
$block.find('[data-ffc-quiz-help="points"]').toggleClass('ffc-hidden', !(isChoice && mode === 'points'));
$block.find('[data-ffc-quiz-help="range"]').toggleClass('ffc-hidden', RANGE_TYPES.indexOf(type) === -1);
$block.find('[data-ffc-quiz-help="manual"]').toggleClass('ffc-hidden', !(TEXT_TYPES.indexOf(type) !== -1 && $block.find('.ffc-quiz-text').val() === 'manual'));
checkMaxSelect($row);
}

Expand Down
Loading
Loading