Skip to content

Advanced settings - #1

Open
Forro-54 wants to merge 4 commits into
mainfrom
advanced-settings
Open

Advanced settings#1
Forro-54 wants to merge 4 commits into
mainfrom
advanced-settings

Conversation

@Forro-54

Copy link
Copy Markdown
Owner

Development of Jacaranda Comments has continued, and the Advanced branch has now reached version 01.02.02.

Jacaranda Comments is a page-level comments module for DNN Platform 10. It was originally designed as a straightforward way to add comments and threaded replies to individual DNN pages, but the Advanced branch is now developing into a more complete site-wide comment-management system.

The Simple edition remains separately maintained on the main branch at version 01.01.03, while the Advanced features are developed on the advanced-settings branch.

Central Comments Administration

One of the biggest additions to the Advanced edition is the new Comments Administration panel.

Administrators no longer need to visit every page individually to discover whether a comment is waiting for approval.

The central moderation queue brings together pending comments and replies from every Jacaranda Comments module within the current DNN portal.

For each pending submission, the administrator can see information including:

the DNN page title;
the module title;
whether the submission is a comment or reply;
the author or guest name;
the submission date;
the comment text;
whether the private language filter was triggered.

From the same central panel, an administrator can:

Approve a pending comment;
Reject / Delete a submission;
View Page to open the DNN page where the comment was submitted.

Moderation is deliberately performed one comment at a time. There is currently no “Approve All” or “Delete All” function, reducing the possibility of an administrator accidentally changing a large number of comments with a single click.

Portal-wide controls

The Advanced edition also includes central settings that can affect every Jacaranda Comments instance in the current portal.

Two particularly useful emergency controls are available.

Disable all new posting

An administrator can stop new comments and replies across the entire portal while leaving existing discussions visible.

This could be useful during a spam attack, site maintenance, or another situation where new submissions need to be temporarily suspended.

Disable guest posting

Guest commenting can also be disabled across the entire portal without affecting registered-user commenting.

This provides a quick response if guest posting starts attracting unwanted submissions.

Central defaults with page-level flexibility

A central administration system should not remove the flexibility that makes a page-level module useful.

For that reason, individual Jacaranda Comments modules can either continue using their own local settings or deliberately inherit the site's central defaults.

Existing modules do not automatically switch to central settings during an upgrade.

This is important because an established site should not suddenly find that its moderation, guest access, CAPTCHA, rate limiting, or email behaviour has changed merely because the Advanced edition was installed.

Five-minute guest correction window

Version 01.02.02 introduces another useful feature: guests can now correct mistakes in their own submissions.

A guest who notices a typo or poorly worded sentence immediately after posting has up to five minutes to correct the text.

There are important limitations.

The guest can edit only:

the comment or reply text.

They cannot change:

their display name;
their private email address.

The five-minute period begins when the original submission is made and does not restart after an edit.

Guest editing also ends immediately if:

the five minutes expire;
a moderator approves the submission;
the submission is deleted;
guest posting is disabled centrally;
all posting is disabled centrally.

Most importantly, a guest can edit a comment only while it is still awaiting moderation.

This prevents a guest from submitting harmless text, having it approved, and then replacing the approved public comment with different content.

Secure guest ownership

Allowing an unauthenticated visitor to edit a comment creates an obvious security question:

How does the module know that the person requesting the edit is really the guest who submitted the comment?

Jacaranda Comments does not rely on the guest's name, email address, IP address, browser information, or Comment ID as proof of ownership.

Instead, the server creates a cryptographically random temporary edit credential when the guest submits the comment.

Only a SHA-256 hash of that credential is stored with the comment.

The original credential is not placed in:

the database;
the page URL;
query strings;
hidden form fields;
rendered comment HTML;
moderator emails.

When a guest attempts to edit the submission, the server checks the credential along with the portal, page, module, comment identity, moderation status, deletion status and five-minute time limit.

These checks are repeated at the database update stage rather than trusting values supplied by the browser.

Existing guest comments created before the upgrade do not suddenly become editable because they do not possess the required guest-edit credential.

Registered-user editing remains available

Registered DNN users continue to receive the existing 15-minute editing window for their own comments and replies.

Registered ownership is based on the authenticated DNN UserId, while guests use the temporary secure correction mechanism.

This provides a useful distinction between registered and guest participation while still giving guests a short opportunity to correct genuine mistakes.

Guest commenting and moderation

Guest commenting remains optional.

When enabled:

guests provide a display name and private email address;
guest comments and replies are always held for moderation;
guest email addresses are not displayed publicly;
moderator notifications can contain the private guest contact details;
guest submissions cannot make themselves approved through modified browser values.

The site administrator can disable guest participation at any time through the Advanced central administration panel.

Private language filtering

Jacaranda Comments also includes an optional administrator-controlled language filter.

Administrators can enter terms or phrases that they do not want automatically published.

When a comment matches the list:

the original text is not automatically censored;
the submission is not deleted;
it is held for moderation;
the visitor is not told which term caused the match;
authorised moderators can see that the language filter was triggered.

This allows the filter to assist human moderation rather than attempting to replace it.

Guest corrections are rechecked by the language filter before being saved.

Page-aware moderator notifications

Moderator emails identify which DNN page generated the submission.

For example:

Comment awaiting approval — Understanding Grace

The notification body can also include the page title, page link, module title, Comment ID, author details and moderation status.

This becomes increasingly useful as the same comments module is deployed across many pages.

Accessibility improvements

Accessibility has also been considered during development.

Success and error notifications remain within the boundaries of the Jacaranda Comments module rather than appearing over unrelated content elsewhere on the page.

This is particularly useful on layouts where a long article and its comments appear in separate columns.

Notification panels include stronger borders, clearer visual distinction and prominent close controls.

The CAPTCHA answer field also has a stronger high-contrast border, increased size and a clear keyboard-focus indicator to make it easier to locate for visitors with limited vision.

Security remains a priority

Adding guest access and central administration increases the importance of server-side security.

Jacaranda Comments continues to use:

parameterised SQL;
server-side permission checks;
output encoding;
anti-CSRF security tokens;
portal, page and module scope validation;
rate limiting;
CAPTCHA support;
honeypot protection;
server-side character limits;
forced moderation for guest submissions.

Central administration is restricted to:

DNN Superusers;
members of the portal's built-in Administrators role.

No additional DNN security role is required.

Portal-wide moderation and settings are scoped to the server-derived PortalId, helping prevent an administrator from one portal changing another portal's comments or settings.

Two development paths

Jacaranda Comments is now being maintained in two development lines.

Simple edition

The main branch remains the simpler page-level module at:

Jacaranda Comments 01.01.03

This edition is intended for sites that want individual page-level configuration without central administration.

Advanced edition

The advanced-settings branch currently contains:

Jacaranda Comments Advanced 01.02.02

The Advanced edition adds:

portal-wide administration;
central moderation;
emergency posting controls;
inherited site defaults;
secure guest correction;
additional administration and auditing features.

The Advanced edition retains the same underlying DNN module identity and is intended as an upgrade path rather than as a second copy of Jacaranda Comments installed side by side.

Current testing status

The earlier Advanced revisions have been trialled successfully on a DNN test site, including the central administration and portal-wide moderation workflows.

Version 01.02.02 is the latest development revision and introduces the new five-minute guest correction capability.

As with any DNN extension upgrade, administrators should back up both the website files and database and test the release on a staging site or low-risk page before wider deployment.

The DNN Event Viewer should also be checked after installation and during testing.

Feedback is welcome

Jacaranda Comments continues to grow through practical use and careful incremental development.

Feedback is particularly welcome regarding:

guest commenting;
the five-minute guest correction window;
central moderation;
multi-page installations;
accessibility;
different DNN skins and containers;
email notifications;
spam and abuse prevention;
security concerns;
upgrade behaviour.

The aim is to keep the module useful, understandable and secure without turning it into an unnecessarily complicated system.

Jacaranda Comments Advanced 01.02.02 represents another step towards providing DNN site owners with a practical comments system that can scale from a single page to a site containing many active discussions.

Project website: https://forrestitservices.org/

GitHub: [Insert Jacaranda Comments repository link]

Create the Advanced release line from the stable Jacaranda Comments 01.01.03 code base and add portal-wide administration.

Changes:

Add a portal-scoped Site-wide Jacaranda Comments Settings panel
Add portal-wide emergency controls for all posting and guest posting
Add central defaults for moderation, guest access, language filtering, comment length, rate limiting, CAPTCHA and email notifications
Add explicit per-module inheritance of portal defaults
Keep inheritance disabled by default so existing module instances retain their current local settings
Restrict the central panel to DNN Superusers and members of the portal’s built-in Administrators role
Create no additional DNN security roles
Add server-side portal isolation, permission checks and anti-CSRF validation
Use parameterised SQL for all central-settings database operations
Add audit details recording who changed the central settings and when
Add the portal-scoped JacarandaCommentsPortalSettings database table
Preserve existing comments, replies and module settings
Preserve guest commenting, registered-user editing, moderation, language filtering, CAPTCHA, rate limiting, email notifications and accessibility improvements
Rename the unpublished 01.01.04 development work to Advanced 01.02.00
Update the manifest, SQL upgrade script, release notes, documentation, resources and package files

The stable Simple edition remains on the main branch at version 01.01.03.

This Advanced edition retains the existing DNN package identity and is an alternative upgrade path rather than a separate side-by-side module.
Add a secure five-minute correction window for guest comments and replies while they are still awaiting moderation.

Changes:

Allow guests to edit the text of their own pending comment or reply for up to five minutes after the original submission
Keep the five-minute window tied to the original posting time so editing does not restart the timer
End guest editing immediately when a submission is approved, deleted, guest posting is disabled, or all posting is disabled
Restrict guest editing to comment/reply text only; guest display name and private email remain unchanged
Generate a cryptographically random guest-edit credential and store only its SHA-256 hash with the comment
Keep the raw guest-edit credential out of the database, URLs, query strings, hidden fields, rendered HTML, and moderator emails
Do not use guest name, email, IP address, user-agent, rate-limit key, or Comment ID alone as proof of ownership
Revalidate PortalId, TabId, ModuleId, guest ownership, moderation status, deletion status, token hash, and five-minute expiry during the database update
Keep corrected guest submissions pending moderation
Re-run the private language filter after a guest correction
Preserve the existing 15-minute editing window for registered users
Preserve portal-wide moderation, emergency switches, CAPTCHA, rate limiting, language filtering, email notifications, approval, deletion, and security-token validation
Add GuestEditTokenHash to support secure guest correction
Add and register the 01.02.02 SqlDataProvider upgrade script
Update the manifest, release notes, documentation, resources, and package files

Existing guest comments are not made editable by this upgrade. Only new guest submissions created after 01.02.02 receive the secure correction capability.

This release is part of the Jacaranda Comments Advanced branch. The stable Simple edition remains separate on the main branch.
Introduced a secure five-minute correction window for guest comments and replies awaiting moderation. Enhanced guest editing capabilities while maintaining existing features and security measures.
Move the Advanced edition to a central-only configuration model while preserving all existing page-specific comment data and moderation features.

Changes:

Make Comments Administration the single location for Jacaranda Comments Advanced configuration
Remove editable page-level Jacaranda settings from individual module instances
Keep standard DNN module settings such as title, container, visibility, and permissions unchanged
Add a safe one-time activation process for central configuration
Preserve existing 01.02.x local module settings during migration
Keep existing module behaviour unchanged until an Administrator explicitly activates central settings
Add CentralSettingsActive to the portal settings table
Keep portal-wide emergency posting and guest-posting switches active throughout migration
Apply central settings portal-wide after activation
Centralise guest commenting, moderation, CAPTCHA, rate limiting, language filtering, maximum comment length, and moderator email settings
Preserve portal-wide moderation and the pending comments queue
Preserve Approve, Reject/Delete, and View Page actions
Preserve the five-minute guest correction window
Preserve the 15-minute registered-user editing window
Preserve guest email privacy, output encoding, anti-CSRF validation, portal isolation, and parameterised SQL
Keep existing comments, replies, approval states, guest credentials, and stored module settings intact
Update the manifest, SqlDataProvider upgrade script, release notes, documentation, resources, and package files

This release establishes the Advanced edition as the portal-managed version of Jacaranda Comments, while the Simple edition remains the page-managed version on the main branch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant