Extensions:Activities

From Lorekeeper Wiki
Jump to navigation Jump to search
Activities
Description item tags but for small single page interactive activities
Author(s) moif
Status stable
Github AW0005/lorekeeper-extensions/extension/activities
LK Version 2.1.0
Contains a Migration



This is kind of a meta extension in the sense that it's built in a way that expects to be continued to be extended off of more.

An activity has a title and description, and an icon image to be displayed on the activity index page. Each activity also has an associated module -- modules are the really powerful part of this extension and function very similar to item tags as a way to specify what additional functionality should then be displayed on the page with the activity title and description.

For example one built module is the "Recycle" module which gives you the ability to allow users to turn in items from an inventory picker and get something back in exchange for those items.

It's easiest to think of modules as relatively simple as they should be the kind of interactive actions that only need the one page view to display to users, which means they're ideal for temporary things you'd want to host for an event rather than permanent site features.

Installation

  • php artisan migrate
  • php artisan optimize

Configuration

The extension will add "Activities" on the staff side page under data. Creating an activity will allow you to select the module, and then after creating you'll be able to specify whatever settings are relevant for the chosen module.

By default Activities have their own index page, but the activities list is also available as a blade file under widgets so you can display it elsewhere as needed (ie I moved mine onto my shops page under the shops list, since I didn't want a whole new page for them when they would be temporary for an event).

Current Available Modules

  • Recycle - allow users to turn in items for a set reward
  • Collection - allows users to get a reward for completing a collection of items.

This one requires Extensions: Collections for it to show up, as its setup to display just one collection a little more "dramatically" on the page compared to the default collection extensions page, but still relies on the extension for the setup of the collection itself. You should set a collection used this way to not be visible so that way it's only displayed on the activity page and not with any other collections you may have.

  • Crafting - allows users to get a reward for turning items

This one requires Extensions: Crafting System for it to show up, as it's setup to display 1-6 recipes a little more "dramatically" inline in the page, and without an inventory picker, compared to the default crafting system, but still relies on the extension for the setup of the recipe itself. You should set a recipe used this way to not be unlocked by default so it's only displayed on the activity page and not with any other recipes you may have.

Creating New Modules

If you create a new module and want to PR it into the extension please feel free to do so!! I built this very much intending for others to be able to contribute to it.

If you've created an item tag before it's pretty much the same basic setup.

  1. Add the module to `config/lorekeeper/activity_modules.php` - the key you use will need to be used in the naming of all the other files for it.
  2. Create a service file, and there's a template provided at `app/Services/Activity/TemplateService.php`
  3. Create the admin settings blades: `resources/views/admin/activities/modules/recycle.blade.php`, and optionally: `resources/views/admin/activities/modules/recycle_post.blade.php`, and `resources/views/admin/activities/modules/recycle_js.blade.php`
  4. Create the user side blade: `resources/views/activities/modules/recycle.blade.php`

And that should be it! The template service file also includes some comments in it for what all the different methods are used for and how you should fill in the functionality but feel free to use the existing module service files as examples too.

Troubleshooting

I'm (moif) pretty much chronically in the LK server so I'll see any questions there!