-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Writing a new Flarum extension on Ubuntu


In a previous post I described how to install Flarum locally on Ubuntu.


Here is how I set up my development environment on top of that setup so I was able to write a new Flarum extension and test it on my local machine.


how to install Flarum locally on Ubuntu


Recap: I installed Apache and PHP and enabled mod_rewrite, installed MariaDB and made a database, installed Composer, and used Composer to install Flarum at /var/www/html/flarum.


More info: Flarum Contribution Guide, extension development guide, extension development quick start, workflow discussion.


I decided to call my extension "rabbitescape/flarum-ext-rabbitescape-leveleditor", so that is the name you will see below.


Flarum Contribution Guide

extension development guide

extension development quick start

workflow discussion


Here's what I did:


cd /var/www/html/flarum


Edit /var/www/html/flarum/composer.json (see the workbench explanation for examples of the full file).


the workbench explanation


At the end of the "require" section I added a line like this:


       "rabbitescape/flarum-ext-rabbitescape-leveleditor": "*@dev"


(Remembering to add a comma at the end of the previous line so it remained valid JSON.)


After the "require" section, I added this:


   "repositories": [
       {
           "type": "path",
           "url": "workbench/*/"
       }
   ],


Next, I made the place where my extension would live:


mkdir workbench
cd workbench
mkdir flarum-ext-rabbitescape-leveleditor
cd flarum-ext-rabbitescape-leveleditor


Now I created a file inside flarum-ext-rabbitescape-leveleditor called composer.json like this:


{
   "name": "rabbitescape/flarum-ext-rabbitescape-leveleditor",
   "description": "Allow viewing and editing Rabbit Escape levels in posts",
   "type": "flarum-extension",
   "keywords": ["rabbitescape"],
   "license": "MIT",
   "authors": [
       {
           "name": "Andy Balaam",
           "email": "andybalaam@artificialworlds.net"
       }
   ],
   "support": {
       "issues": "https://github.com/andybalaam/flarum-ext-rabbitescape-leveleditor/issues",
       "source": "https://github.com/andybalaam/flarum-ext-rabbitescape-leveleditor"
   },
   "require": {
       "flarum/core": "^0.1.0-beta.5"
   },
   "extra": {
       "flarum-extension": {
           "title": "Rabbit Escape Level Editor"
       }
   }
}


In the same directory I created a file bootstrap.php like this:


<?php

return function () {
   echo 'Hello, world!';
};


Then I told Composer to refresh the project like this:


cd ../..   # Back up to the main directory
composer update


Among the output I saw a line like this which convinced me it had worked:


 - Installing rabbitescape/flarum-ext-rabbitescape-leveleditor (dev-master): Symlinking from workbench/flarum-ext-rabbitescape-leveleditor


I edited config.php in the main directory, and set 'debug' => true instead of false.


Now I went to http://localhost/flarum, signed in as admin, adminpassword (as I set up in the previous post), clicked my username in the top right and chose Administration, then clicked Extensions on the left.


I saw my extension in the list, and turned it on by clicking the check box below it. This made the whole web site disappear, and instead just the text "Hello world!" appeared. This showed my extension was being loaded.


I edited bootstrap.php and commented out the line starting with "echo". I refreshed the page in my browser and saw the Flarum site reappear.


Finally, to install what's needed for changing Flarum's UI, I needed to run:


sudo apt install npm
sudo npm install --global gulp


Now, my extension is installed and ready to be developed! See flarum.org/docs/extend/start for how to get started making it do cool stuff.


Originally posted at 2018-09-06 06:54:56+00:00. Automatically generated from the original post : apologies for the errors introduced.


flarum.org/docs/extend/start

original post

-- Response ended

-- Page fetched on Sun May 19 04:55:40 2024