User Onboarding

User Onboarding [Paid] 2.0.3

No permission to buy ($35.00)
One minor thing.

If the text on a task is long enough, the dismiss X will overlap slightly the text.
Last edited:
Also. Were there changes with the js path? Not sure what code is calling for this source. I'm getting the following issue in Chrome console:


Great update! Being able to use standard criteria is a game changer.

Quick question, what syntax is the task group icon field looking for? I've tried a bunch and I keep getting the same error (trying to use fa-dollar/fa-usd).

So what does this mean then?

The following tasks are available out of the box:
  • User has set an avatar.
  • User has set a profile banner.
  • User has set a signature.
  • User has entered a value for a particular custom field.
  • User has linked a particular connected / external account.
  • User has created a thread in a particular forum.
  • User has replied to a thread.
  • User has replied to a specific thread.
  • User has verified their email address.
  • User has purchased any user upgrade.
  • User has enabled two-factor authentication.
It says it comes with tasks out of the box. Where are these tasks?

The add-on can be extended to add additional task conditions through either the XF user criteria system or by extending this add-on with another add-on.

The bit you quoted refers to the task conditions that come with the add-on. You'll still need to enable the ones you want at Admin -> Users -> User onboarding tasks -> Add onboarding task -> Simple

You can also create tasks using XF user criteria by using the advanced task type.
First, thanks @NixFifty for adding the optional tasks. It's just what I needed.

I am having an issue though. When I create a task with the condition User has entered a value for the following custom field: it shows up automatically as completed even though the user has not entered anything into that custom field.

It appears this only happens with custom fields that existed prior to me installing this addon. I created a new custom field today as a test and it shows up correctly in the task list as not completed. But any custom field that existed before automatically shows as being complete.

Is there a way to force the addon to reset what it sees as completed tasks?
I'm just checking in again to see if @NixFifty or any one else has any thoughts on this issue. I'd like to implement this addon, but can't until I can get this resolved. Thanks!
Checking in again on this issue. @NixFifty or anyone else have any ideas?

Is there a cache or something I can rebuild to make this addon properly read the status of custom fields that existed before the add-on was installed?
Checking in again on this issue. @NixFifty or anyone else have any ideas?

Is there a cache or something I can rebuild to make this addon properly read the status of custom fields that existed before the add-on was installed?
Sorry, I've been away for a little bit and I'm still working through stuff I've missed. I believe I replied to your ticket but I'll check it out and get back to you. It's likely a logic flaw when checking whether users have already completed the task so it wouldn't be something that a cache rebuild would fix.
Nix I flagged two errors today but I'm not sure if this is you or xon or apathy. Figured I'd start here since I have no idea:

    ErrorException: [E_NOTICE] Trying to get property 'user_id' of non-object src/addons/apathy/OnboardingTasks/Condition/UserHasPostedXTimes.php:50

    Generated by: Sartodi Napoli Apr 11, 2022 at 2:02 PM

Stack trace

#0 src/addons/apathy/OnboardingTasks/Condition/UserHasPostedXTimes.php(50): XF::handlePhpError(8, '[E_NOTICE] Tryi...', '/home/dressedw/...', 50, Array)
#1 src/XF/Extension.php(52): apathy\OnboardingTasks\Condition\UserHasPostedXTimes->apathy\OnboardingTasks\Condition\{closure}(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post))
#2 src/XF.php(959): XF\Extension->fire('entity_post_sav...', Array, 'XF\\Entity\\Post')
#3 src/XF/Mvc/Entity/Entity.php(1276): XF::fire('entity_post_sav...', Array, 'XF\\Entity\\Post')
#4 src/XF/Reaction/AbstractHandler.php(113): XF\Mvc\Entity\Entity->save()
#5 src/addons/SV/ContentRatings/XF/Repository/Reaction.php(639): XF\Reaction\AbstractHandler->updateContentReactions(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), Array, Array)
#6 src/addons/SV/ContentRatings/XF/Repository/Reaction.php(571): SV\ContentRatings\XF\Repository\Reaction->SV\ContentRatings\XF\Repository\{closure}()
#7 src/addons/SV/ContentRatings/XF/Repository/Reaction.php(640): SV\ContentRatings\XF\Repository\Reaction->withShimmedXfReactions(Object(Closure))
#8 src/addons/SV/ContentRatings/XF/Repository/Reaction.php(649): SV\ContentRatings\XF\Repository\Reaction->svRebuildContentReactionCache('post', 292149, false, false)
#9 src/XF/Entity/ReactionContent.php(204): SV\ContentRatings\XF\Repository\Reaction->rebuildContentReactionCache('post', 292149, false, false)
#10 src/XF/Entity/ReactionContent.php(142): XF\Entity\ReactionContent->rebuildContentReactionCache()
#11 src/addons/SV/ContentRatings/XF/Entity/ReactionContent.php(180): XF\Entity\ReactionContent->_postSave()
#12 src/XF/Mvc/Entity/Entity.php(1270): SV\ContentRatings\XF\Entity\ReactionContent->_postSave()
#13 src/XF/Repository/Reaction.php(191): XF\Mvc\Entity\Entity->save()
#14 src/addons/SV/ContentRatings/XF/Repository/Reaction.php(1017): XF\Repository\Reaction->insertReaction(1, 'post', 292149, Object(SV\ReportImprovements\XF\Entity\User), true, false)
#15 src/XF/Repository/Reaction.php(144): SV\ContentRatings\XF\Repository\Reaction->insertReaction(1, 'post', 292149, Object(SV\ReportImprovements\XF\Entity\User), true, false)
#16 src/XF/ControllerPlugin/Reaction.php(67): XF\Repository\Reaction->reactToContent(1, 'post', 292149, Object(SV\ReportImprovements\XF\Entity\User), true)
#17 src/XF/ControllerPlugin/Reaction.php(21): XF\ControllerPlugin\Reaction->actionToggleReaction(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts/reactions', 'posts')
#18 src/XF/ControllerPlugin/Reaction.php(14): XF\ControllerPlugin\Reaction->actionReact(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts', 'posts/react', 'posts/reactions')
#19 src/XF/Pub/Controller/Post.php(381): XF\ControllerPlugin\Reaction->actionReactSimple(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts')
#20 src/XF/Mvc/Dispatcher.php(352): XF\Pub\Controller\Post->actionReact(Object(XF\Mvc\ParameterBag))
#21 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Post', 'React', Object(XF\Mvc\RouteMatch), Object(SV\Threadmarks\XF\Pub\Controller\Post), NULL)
#22 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\Threadmarks\XF\Pub\Controller\Post), NULL)
#23 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#24 src/XF/App.php(2351): XF\Mvc\Dispatcher->run()
#25 src/XF.php(517): XF\App->run()
#26 index.php(20): XF::runApp('XF\\Pub\\App')
#27 {main}

Request state

array(4) {
  ["url"] => string(33) "/posts/292149/react?reaction_id=1"
  ["referrer"] => string(120) ""
  ["_GET"] => array(1) {
    ["reaction_id"] => string(1) "1"
  ["_POST"] => array(4) {
    ["_xfRequestUri"] => string(93) "/threads/reebok-club-c-hrn-in-multiple-colors-and-most-sizes-for-37-50-with-code-midszn.9608/"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfResponseType"] => string(4) "json"
Top Bottom