Code Monkey home page Code Monkey logo

boom-core's Introduction

BoomCMS

BoomCMS is a content management system which is designed to be easy for content editors and developers alike.

Installation

BoomCMS can be installed via Composer:

composer create-project boomcms/boomcms --prefer-dist

You'll then want to setup your Apache virtual host:

<VirtualHost *:80>
	ServerName <your server name>
	DocumentRoot "<your install path>/public"
	<Directory "<your install path>/public">
		AllowOverride all
	</Directory>
</VirtualHost>

Then open up Boom in your browser to complete the installation process.

Credits

BoomCMS is built on the Laravel Framework. WYSYWIG text editor is courtesty of wysihtml

boom-core's People

Contributors

cazm avatar eatyourgreens avatar hmtareque avatar imanghafoori1 avatar paulnunneley avatar ralph-mcardell avatar robbytaylor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

boom-core's Issues

Add a page setting for disabling deletion

Part of the admin settings group. A common use case is that users get confused about which page they're on and delete an important landing page rather than the page they wanted to delete.

If deletion is disabled the delete button would still be visible but disabled.

A user with permissions to change admin settings would be required to enable deletion before being able to delete the page. This would ensure that they can't also accidentally delete the page.

Asset manager title filter

After using the title filter if the backspace key is used to clear content the autocomplete dialog is still visible.

Autocomplete dialog should be closed when title filter input field becomes empty.

Introduce chunk sets

As a way of making templates more flexible introduce chunk sets which would contain other chunk types.

These would be put into a template in the same way as other chunks are ($chunk('set', $slotname)). When editing this chunk a dialog would open allowing different chunk types to be added and reordered via drag and drop.

Slotnames for the embedded chunks would be automatically generated using the set name and an index number.

The chunk_sets table would have a column holding a json encoded array of the chunks in the set. the Chunk::load() method can then be used to load these thunks in once go when the set is loaded.

The Chunk class would expose a setLayouts() method which accepts a hash to set the names of chunk views which can be used for the different types, allowing the user to specify which template (aka layout) to use when adding a chunk to the set.

Link picker - link to assets

Add a tab to the link picker for selecting an asset to link to. A select box (like in the external link tab) would allow toggling between making the link view or download the asset.

Make distinction between preview page and view live clearer

The preview action disables the editor but shows pages which wouldn't be visible on the live site, whereas the view live button only shows pages which are visible and versions which are published.

The use case for preview is to check the current draft before publishing. Therefore when previewing a page it should be possible to publish or discard the current version.This would remove the current behaviour of showing the same edit button in both cases which is confusing. It might also be worth making the preview status active only for the next page load - when the page is reloaded or the user navigates to another page the editor becomes active again. If the page is invisible then while in preview mode the user should be informed that the page isn't visible on the live site and given the option to make it visible.

At the moment the view live button is disabled when a page isn't visible. Instead, when the view live button is clicked on an invisible page a dialog should open telling the user that they're switching to the live view on a page which isn't live. They should be given the option to either preview the current changes or make the page live as well as continuing on their merry way.

Page deletion - give option to redirect URLs to another page

Deleting a page and redirecting it to another page is a common use case when updating a site's IA.

Currently this involves deleting the page and then moving URLs to an existing page. This can cause issues if the user forgets to delete the page first (see #4) and isn't user friendly as the primary URL and all secondary URLs have to be added manually.

When the page delete confirmation is opened there should be a button to redirect all page URLs to a different page. Clicking this would open a page picker. Best practice should be explained to the user on when a deleted page should redirect somewhere else and when it should 410 (if another page has similar content)

Add ability to define relationships between pages

From the user's perspective these would be done via page tags. A tab would be added to the page tags dialog to tag a page with another page. The actual data will be stored in a simple many to many relationship table.

The most common use case for this is blog posts which get 'tagged' as being related to an author page. The interface for the defining relationships would give this use case as an example of how to use the feature.

Turn tag chunks into AssetSearch chunks

This is essentially what a tag chunk currently is except it only searches by a single tag. Converting it to an asset search would allow the user to specify multiple tags, asset type, and any other meta data to search by.

Search parameters would be stored as a json encoded string.

Remove chunk edit controllers

This will simplify the process of creating new chunk types and remove duplication.
the views

All the controllers follow the same format, they generally only differ in which vars they define in the view. If the base controller instead defines $chunk and $page variables the views could instead call methods on the $chunk variable to access the required chunk data.

When moving a URL don't allow a page to be left inaccessible

When adding an existing URL to a page the option is given to move the URL from it's current page.

If this is done with a primary URL then the page can be made inaccessible so it can't have a new primary URL set or be deleted. Before being able to move a primary URL the user should be required to either add a new primary URL or delete the page.

Empty text chunks are saved

Bbecause .html() is used to check for content. This was so they can be saved with just an image as content but doesn't ignore empty paragraph or line breaks. Should check .text() but also .find('img').length

Add JS Asset object

To get details about an asset from an asset ID. In particular this would be useful for removing the duplication of asset embed URLs (/asset/view/ID) littered around the JS.

This could also be used as a front end to an oembed like API for getting full asset details, including the embed code for the text editor.

e.g.:

function boomAsset(id) {
    this.id = id;
    this.oembedEndpoint = '/asset/oembed';

    boomAsset.prototype.getUrl = function() {
        return '/asset/view/' + this.id;
    };

    boomAsset.prototype.getOEmbed = function() {
        $.get(this.oembedEndpoint, {url : this.getUrl()})
            .done(function(response) {
                return response;
            })
           .fail(function() {
               return {}; 
           });
    };

    boomAsset.prototyoe.getEmbedHtml = function() {
        return this.getOembed().html;
    }
}

Remove kohana/auth

Virtually unused apart from the User_Token model. Make sure it's completely unused and then remove it as a dependency from composer.json

Make Boom\Config dynamic

Replace Config::get($key) with $config->get($key)

Config class constructor would accept an array of config values so that get() is just returning the value from the array.

Added Boom\Boom->getConfig() which would return the config class constructed from Kohana::$config->load('boom').

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.