Difference between revisions of "Extending Lorekeeper"

From Lorekeeper Wiki
Jump to navigation Jump to search
(Created page with "Since its release, many and varied extensions have been written and released for Lorekeeper. These modifications to the framework's code allow for a v...")
 
Line 5: Line 5:
 
Note that this article covers the creation and releasing of extensions; for installing them, see [[Tutorial: Installing Extensions]].
 
Note that this article covers the creation and releasing of extensions; for installing them, see [[Tutorial: Installing Extensions]].
  
== Creating an Extension ==
+
==Creating an Extension==
 
Before you begin any work, it's useful to have and/or keep in mind a few things.  
 
Before you begin any work, it's useful to have and/or keep in mind a few things.  
  
* You '''must have a local instance on which to work'''.  
+
*You '''must have a local instance on which to work'''.  
** This is non-negotiable when making significant changes to Lorekeeper, extension-writing included. Working in a dev environment is inherently more conducive to, well, development; in this case it includes easier display of errors, ability to simply save files and see the modifications reflected on your dev environment (without having to commit+push), and so on.
+
**This is non-negotiable when making significant changes to Lorekeeper, extension-writing included. Working in a dev environment is inherently more conducive to, well, development; in this case it includes easier display of errors, ability to simply save files and see the modifications reflected on your dev environment (without having to commit+push), and so on.
* Lorekeeper, as of v2.0.0, requires '''PHP 7.4'''...
+
*Lorekeeper, as of v2.0.0, requires '''PHP 7.4'''...
*  
+
*... and runs on '''Laravel 8'''.
  
=== Identifying the Extension's Purpose ===
+
Consequently, the primary prerequisite to working on Lorekeeper in any capacity is having a local test environment set up with PHP 7.4. For more information, see [[Tutorial: Local Host]]. If you are unfamiliar with working with PHP and/or Laravel (itself a PHP-based framework), it is recommended that you familiarize yourself with their basic concepts beforehand as suits your own learning style.
 +
 
 +
*
 +
 
 +
===Identifying the Extension's Purpose===
 
First and foremost, you need an idea as to what your extension will do. Some potential sources of inspiration are:
 
First and foremost, you need an idea as to what your extension will do. Some potential sources of inspiration are:
  
* Is there a feature or function that would be helpful to you/a site you run that does not currently exist either in Lorekeeper or an extension?
+
*Is there a feature or function that would be helpful to you/a site you run that does not currently exist either in Lorekeeper or an extension?
* Does one of the ideas in the [https://docs.google.com/document/d/1jNgySmpxfYOO4QtlvIg7G5gusov2OCNxNN4pCki-HhI/edit#heading=h.vrf7ek9xoxzd Community Feature Request] document interest you?
+
*Does one of the ideas in the [https://docs.google.com/document/d/1jNgySmpxfYOO4QtlvIg7G5gusov2OCNxNN4pCki-HhI/edit#heading=h.vrf7ek9xoxzd Community Feature Request] document interest you?
  
 
You might also be hired to write an extension to serve a specific purpose.
 
You might also be hired to write an extension to serve a specific purpose.
Line 25: Line 29:
 
However works best for you, it can be helpful to plan out things such as:
 
However works best for you, it can be helpful to plan out things such as:
  
* Database modifications
+
*Database modifications
* Creation and/or editing of models
+
*Creation and/or editing of models
* Creation and/or editing of views
+
*Creation and/or editing of views
  
 
before actually writing any code.
 
before actually writing any code.

Revision as of 07:56, 2 June 2021

Since its release, many and varied extensions have been written and released for Lorekeeper. These modifications to the framework's code allow for a variety of new functionality that (given the inherently opt-in nature of extensions) allows them to serve many and in fact many different potential use cases for Lorekeeper itself.

Should you want to author an extension of your own, there are certain guidelines you should follow in the interest of making the process as smooth as possible for all participants. This article covers these, as well as registering your extension on this wiki and releasing it to the public. Note that this does not cover making the modifications themselves.

Note that this article covers the creation and releasing of extensions; for installing them, see Tutorial: Installing Extensions.

Creating an Extension

Before you begin any work, it's useful to have and/or keep in mind a few things.

  • You must have a local instance on which to work.
    • This is non-negotiable when making significant changes to Lorekeeper, extension-writing included. Working in a dev environment is inherently more conducive to, well, development; in this case it includes easier display of errors, ability to simply save files and see the modifications reflected on your dev environment (without having to commit+push), and so on.
  • Lorekeeper, as of v2.0.0, requires PHP 7.4...
  • ... and runs on Laravel 8.

Consequently, the primary prerequisite to working on Lorekeeper in any capacity is having a local test environment set up with PHP 7.4. For more information, see Tutorial: Local Host. If you are unfamiliar with working with PHP and/or Laravel (itself a PHP-based framework), it is recommended that you familiarize yourself with their basic concepts beforehand as suits your own learning style.

Identifying the Extension's Purpose

First and foremost, you need an idea as to what your extension will do. Some potential sources of inspiration are:

  • Is there a feature or function that would be helpful to you/a site you run that does not currently exist either in Lorekeeper or an extension?
  • Does one of the ideas in the Community Feature Request document interest you?

You might also be hired to write an extension to serve a specific purpose.

Once you have an idea of what your extension should do, you should think about how you want to implement it. It can be helpful to think about existing structures in Lorekeeper or extensions that serve similar purposes, or might work a similar way to how your extension could work. Especially if referencing an extension, it may be helpful to consult the extension's author(s) for insight, keeping in mind to be respectful of their time and energy.

However works best for you, it can be helpful to plan out things such as:

  • Database modifications
  • Creation and/or editing of models
  • Creation and/or editing of views

before actually writing any code.