Giter Club home page Giter Club logo

bonfire2-pages-module's Introduction

Admin module "Pages" for Bonfire 2

About

This repo holds the code for an admin module "Pages" for Bonfire 2, an admin panel for CodeIgniter 4 projects.

Pages module is a very basic implementation of a module of Bonfire 2 admin panel for administration of pages on a website.

Bonfire 2 includes instructions how to make an admin module, but there is no complete example. I followed the instructions and looked at examples in Bonfire 2 code itself to implement this admin module, for learning purposes mostly. But my work might be useful for you as well.

Features

  • CRUD (Create, Read, Update, Delete) functionality for pages, that have Title, Content (and Excerpt for display in admin interface mainly), Slug and Categories fields;
  • integration with Bonfire 2 admin interface and functionality (Menu, Widgets, Search, Filter, Recycler);
  • full localization (though don't expect too much, Bonfire 2 itself is not yet properly localized);
  • HTMX-powered field validation on the frontend (not available elsewhere in Bonfire 2!);

Installation

You should have a Codeigniter 4 installation with Bonfire 2 installed (refer to Bonfire 2 docs to learn how to do that).

  1. Check that your app/Config/Bonfire.php file includes this location of the Modules (you will have to uncomment the 'App\Modules' => APPPATH . 'Modules' line):

    public $appModules = [
        'App\Modules' => APPPATH . 'Modules',
    ];
  2. Copy the directory Pages to app/Modules directory of your project (or another directory, if the $appModules points to another one in your installation).

  3. Open the app/Config/AuthGroups.php file and add the following permissions to the $permissions array:

    public array $permissions = [
        // Original permissions here...
        // ...
        // Pages module related permissions:
        'pages.list'          => 'Can view list of pages',
        'pages.view'          => 'Can view pages details',
        'pages.create'        => 'Can create new pages',
        'pages.edit'          => 'Can edit existing pages',
        'pages.delete'        => 'Can delete existing pages',
        'pages.settings'      => 'Can manage pages settings in admin area',
    ];
  4. Also review the array $matrix in the same file and add the pages.* permissions to superadmin and admin groups and the other groups that should have permissions to access the Pages module in the admin panel.

  5. Configure recycler. Edit app/Config/Recycler.php property $resources by adding pages to it, so it looks something like:

    public $resources = [
        // Original users array here...
        ],
        'pages' => [
            'label'   => 'Pages',
            'model'   => 'App\Modules\Pages\Models\PagesModel',
            'columns' => [
                'id', 'title', 'excerpt', 'deleted_at',
            ],
        ],
    ];
  6. If you are using other than English language in your admin area, you will need to download TinyMCE 6 language pack for your language (check here). Download the language pack that you use and see among the community - supported ones. Extract, rename to conform to this pattern (tinymce6-lt.js") (where lt stands for Lithuanian), and copy to your theme folder themes/Admin/js/. Language code needs to correspond to the locale code of your language as defined in app/Config/App.php.

  7. Get your own TinyMCE API key (https://www.tiny.cloud/auth/signup/), add a section to your project .env file with your api key:

    #--------------------------------------------------------------------
    # PAGES
    #--------------------------------------------------------------------
    pages.tinymceApiKey = 'your-api-key-goes-here'

    Without this step the page editor will be read-only.

  8. To update the database, run this command from the base directory of your Codeigniter install:

    php spark migrate -n App\\Modules\\Pages --all

  9. And, if you wish (it is not necessary), you can populate the database with some pages:

    php spark db:seed App\\Modules\\Pages\\Database\\Seeds\\InsertSamplePages

That should be it.

bonfire2-pages-module's People

Contributors

dgvirtual avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

jrp596 treborin

bonfire2-pages-module's Issues

page access from front

How to access pages from frontpage. I assume we need to meak custom routes based on slugs?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.