When can we expect the drip lessons?
When will we be able to add attachments to an Email Template when sending?
Why is it that although some types of media end up in the regular WordPress Media library, (such as audio files), other types of media, such as course featured images, can only be uploaded into the secret Media folder that is specific to FluentCommunity and impossible to access otherwise? If I need to reuse an image in courses, I apparently can't view previous uploads, and I have to upload fresh image files repeatedly, which is duplicative and is super-inefficient.
Shahjahan Jewel,Β Please I will like to know if "CONTENT DRIPPING" in "FLUENT MEMBER" will PROTECT and DRIP fluent community posts.
Environment
- FluentCommunity 2.7.7 (Core + Pro)
- WordPress 7.0.4
- PHP 8.3
Summary
The link validation in the menu settings form rejects any permalink that does not start with http://, https:// or /. This makes it impossible to create or edit a custom menu item that uses FluentCommunity's own placeholder tokens, such as #user_url/... or #logout_url.
The plugin uses these placeholders for its own built-in items, so the validator contradicts the plugin's own data model.
Steps to reproduce
- Go to Settings > Menu Settings
- Under "Profile Dropdown Items", add a custom link, or edit an existing custom one
- Enter
#user_url/scheduled-postsas the permalink - Try to save
Expected: the item is saved.
Actual: validation fails with "URL must start with http:// or https://" and saving is blocked.
Why this is inconsistent
The built-in items ship with exactly these values:
my_spacesuses#user_url/spaceslogoutuses#logout_url
They only survive because validation is skipped for system items (assets/admin_app.js):
if (this.editingItem.is_system !== "yes") {
const t = Q1(this.editingItem.permalink);
t.valid || this.urlErrors.push(...t.errors)
}
So the placeholder syntax is valid and fully functional at runtime. It is simply no longer reachable for user-created items.
Root cause
In assets/admin_app.js the validator dispatches on the first character:
Q1 = t => (t = t.trim(), t.startsWith("/") ? Ske(t) : HF(t))
HF, the URL branch, requires a scheme before doing anything else:
if (!/^https?:\/\//i.test(t))
return e.push(Vi("URL must start with http:// or https://")),
{valid: false, type: "url", errors: e};
Any value starting with # therefore lands in the URL branch and can never pass.
The server side is not the problem. CustomSanitizer::sanitizeMenuLink() passes the value through sanitize_url(), which preserves #... values unchanged:
$item['permalink'] = sanitize_url(Arr::get($item, 'permalink', ''));
The restriction is purely client-side.
Workaround, and why it is harmful
The only way to push such a link past the form is to prefix it with //, because the path branch Ske then accepts it. The stored value becomes:
//#user_url/scheduled-posts
That is a protocol-relative URL, so the browser reads #user_url as a hostname and the link is dead. We had exactly this in production and had to correct the value directly in the database, in the serialized fluent_community_menu_groups option inside the fcom_meta table.
Suggested fix
Let the validator recognise values starting with #, or more specifically the supported placeholder tokens, and route them past the http/https requirement, the same way paths starting with / are already handled.
Relative paths are accepted today. Placeholders should be too, especially since the plugin ships them in its own default menu items.
I have courses where I need to have more than one course instructors but right now is not possible. Could you make it happen?
Thanks!
Many times I have to write the same lessons for different, but pretty similar, courses. Right now is not possible to publish lessons in different courses. I know it could be a very complex update but would be nice if you could consider this in the future because the current solution is to publish the exact content lesson 3 or 4 times and to keep a lesson updated is necessary to update all of them one by one.
Hope you consider this.
Thanks.
Ability to make post titles optional.
Document repository, where a discussion admin can post a library of documents that are relevant to that group/discussion, maybe accessible on the side panel always visible.
Could you add an option to order User Badges? Shouldn't be difficult and it's useful.
Thanks!
