A Laravel model-based CMS

Related tags

CMS cms laravel eloquent
Overview

Decoy Build Status Coverage Status

Decoy is a PHP content management written for the Laravel framework that allows you to access your data using standard Laravel Eloquent models.

Screenshots

Screenshot of example projects listing Screenshot of example project edit view Screenshot of example category edit view Screenshot of elements editor

About

Since 2012 and Laravel 3, Bukwild has been maintaining our own content management system that we call Decoy. Decoy is meant to reduce the development effort for implementing content management while being highly flexible. And it helps you generate a great looking, easy to use admin interface; no manual required.

The driving philosophy behind Decoy is that a CMS should share models with your public facing app; your app interacts with data stored with Decoy only through standard Laravel models. This approach makes reading controller code simple (Article::ordered()->take(6)->get()), gives you access to Laravel mutators so you views are human readable ($article->full_date), and allows you to share business logic between admin and public sites. There is no additional templating or querying language to learn. After the CMS is setup, the developer interacts with the data using purely Laravel APIs.

Features

Besides it’s model-centric paradigm, Decoy includes the following features:

  • Great looking, zero-training required design
  • Croppa integration for advanced image support including cropping, setting focal point, and storing alt text
  • Video encoding via Zencoder integration
  • WYSIWYG text editing via Redactor
  • Support for all Laravel relationship types
  • Easy creation of content editing forms using Former
  • Remote file storage (S3, etc) via Upchuck and Flysystem
  • Granular admin permissioning
  • Fully customizable edit views with Bootstrap support
  • Commands panel for executing artisan commands via web UI
  • Cloning of content, even across servers
  • Localization
  • Organized key-value pair type data as Elements
  • Drag and drop ordering of data in list views
  • Built in interface for creating 301 and 302 redirects
  • All configuration stored in the filesystem to keep your team in sync via Git (or whatever VCS)

Implementation

Decoy installs into your app as a composer package and integrates with your project rather than being a standalone install. Decoy shares the Eloquent models of your public site and stores data in regular Laravel migrated tables. Your controllers and views do not need to touch Decoy at all and while your models need to use Decoy’s subclass of Eloquent\Model, there is very little behavior added at model instantiation. In other words, Decoy adds almost no overhead to your public site.

Implementing Decoy to manage model is done through a common MVC pattern that allows for overriding of default behavior at every step:

  • The admin nav, permission levels, localization options, and other settings are stored in Laravel-style php config arrays
  • For each manageable database table / Eloquent model, a Laravel-style controller is created that allows you to override defaults like how the title of the model appears, it’s description, how it can be searched within the admin, and even override any CRUD method (create, update, destroy, etc).
  • You specify validation rules, ordering scopes, and features like which relationships to follow when cloning from the model, adding specifically named properties and methods.
  • Finally, you create a regular Laravel view containing the form that should be shown to the admin during creation and editing of content. This is easier than it sounds through support of Former and many Decoy-unqiue Former fields like our image uploader and wysiwyg types.

Next steps

Interested in giving Decoy a spin? Check out the quick start guide.

You might also like...
Self-hosted CMS platform based on the Laravel PHP Framework.
Self-hosted CMS platform based on the Laravel PHP Framework.

October is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of

The repository for Coaster CMS (coastercms.org), a full featured, Laravel based Content Management System
The repository for Coaster CMS (coastercms.org), a full featured, Laravel based Content Management System

The repository for Coaster CMS (coastercms.org) a Laravel based Content Management System with advanced features and Physical Web integration. Table o

Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework.
Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework.

Winter is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of

Simple PHP shop CMS based on Laravel 5.1
Simple PHP shop CMS based on Laravel 5.1

LaraShop LaraShop is a simple SHOP CMS based on Laravel framework. Temporarily available at russian language, in planned english. Screenshots Features

Coaster CMS a full featured, Laravel based Content Management System
Coaster CMS a full featured, Laravel based Content Management System

The repository for Coaster CMS (coastercms.org) a Laravel based Content Management System with advanced features and Physical Web integration. Table o

Modern CMS with shop features based on fullstack symfony and sylius components

The enhavo CMS is a open source PHP project on top of the fullstack Symfony framework and uses awesome Sylius components to serve a very flexible soft

REDAXO, a PHP-based CMS since 2004. Both simple and flexible.
REDAXO, a PHP-based CMS since 2004. Both simple and flexible.

🌎 Deutsch Content Management since 2004. Both simple and flexible. REDAXO provides you an easy-to-learn website framework. It lets you create content

PHP based, easy to use blog cms.
PHP based, easy to use blog cms.

v0.1 Bagita is an easy-to-use blog based on Php. It helps you to manage and extend your own blog system completely without any difficulties. Roadmap v

SoyCMS Trivial - Lightweight and easy-to-use CMS. ( the custom version based on soycms. )

SoyCMS Trivial Author arbk (https://aruo.net/) Licensed under the GPLv2 license Version 3.1.3-t0 DESCRIPTION SoyCMS Trivial is an open source web cont

Releases(5.11.0)
  • 5.11.0(Jul 13, 2018)

  • 5.10.0(Mar 12, 2018)

    Export CSVS

    The records of a given controller can be exported as a CSV. In addition, any active search query applied to a controller will affect this CSV, limiting the result set. You can control how a model is exported to CSV by defining a forExport method on your model.

    Preview a previous version of a model

    From the Changes view, you can click the bookmark icon to open a new window, showing the public view of that model (using it's getUriAttribute() value) at that place in time.

    Other

    • Changes don't require an authed user to log. So, for instance, if changes are made by a Laravel Command, rows will be written to the changes table.
    • Added support for MS SQL Server
    • Various bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 5.9.0(Oct 17, 2017)

    • Updates example app to L5.5
    • Adds L5.5 package auto-discovery fields to JSON
    • Uses newer, L5.5-friendly version of Upchuck
    • Uses L5.4 console command syntax

    Misc

    • Explicitly set the public value to 1 or 0 via JS.
    Source code(tar.gz)
    Source code(zip)
  • 5.8.0(Oct 17, 2017)

    Features

    • Adds admin_mutators property to models to allow their mutators and acccessors to be used within Decoy, #79
    • Adds Decoy::hasEl() method to check whether an Element key is defined, #64
    • Adds Decoy::els() method to retrieve multiple Elements at a time.
    • Adding another default image size: icon
    • Adds helper getSitemapUrlAttribute and scopeForSitemap methods for use with https://github.com/BKWLD/sitemap-from-routes

    Fixes

    • Date localization fix: #71
    • Image field localization fixes: #79
    • L5.4 pviot sorting fix: #74
    • Commands title fix: #78
    • Updating to latest minor versio of Redactor 1.x and fixing bold and italic buttons
    • Fix image-type Elements not working when using the expanded Element syntax (like where there is a sections key
    • Fix visibility tooltip value when a listing loads and a model isn't currently public
    • Move the overflow hidden on the sidebar listings so it doesn't affect the autocomplete menu of many to many relationships.
    Source code(tar.gz)
    Source code(zip)
  • 5.7.0(Jul 6, 2017)

    • Added Former::boolean() custom field
    • Added support for soft deleted models in the controller listing
    • Betters support for postgres (@noxify, #48)
    • Minor increase in test coverage
    • Exposing the jQuery, Lodash, and Backbone used by Decoy on it's JS package for use when adding custom JS to a project
    • Dates routed through localization (@SomosAMambo, #69)
    • Deprecating using Former::image() with no arguments
    • Bux fixes (such as #68)
    Source code(tar.gz)
    Source code(zip)
  • 5.6.0(Apr 27, 2017)

    New features

    • All strings routed through localization files
    • Ships with Brazilian Portugese language pack (thanks to @SomosAMambo, #38)
    • New Former::radiolist and Former::checklist form fields, to make instantiating radio and checkbox fields easier from associative arrays.

    Fixes

    • Fixes for Changes: #34, #40, #20
    • Fixes for Commands: #35, #33
    • Fix for updating model with existing image: #36
    • Fix for default images in Elements with longform definition: #45

    Notes

    Update the dependency on bkwld/library when updating to this version.

    Source code(tar.gz)
    Source code(zip)
  • 5.3.1(Apr 3, 2017)

  • 5.3.0(Mar 31, 2017)

    • Switches to PSR-2 coding style (@svenluijten, #8)
    • Adds many integration tests against the new /example Laravel project.
    • Fixes many issues (discovered by @SomosAMambo) with localization that were introduced in Decoy 5. Some fixes were made to the assets, so republish them after updating:
      php artisan vendor:publish --provider="Bkwld\Decoy\ServiceProvider" --tag=assets
      

    Next up, adding Laravel 5.3 and then Laravel 5.4 support. Then we'll be considering adding more features and additional testing.

    Source code(tar.gz)
    Source code(zip)
  • 5.2.3(Mar 22, 2017)

  • 5.2.2(Mar 21, 2017)

  • 5.2.1(Jan 18, 2017)

    • Many docs changes
    • Fixing searching for empty fields
    • Removing requirement on Input facade
    • Changing version constraint on Bukwild php library
    Source code(tar.gz)
    Source code(zip)
  • 5.2.0(Jan 3, 2017)

    We've open sourced Decoy after 2,700 commits and 4 years of development, Bukwild is releasing it's Laravel model based CMS, Decoy!

    This specific release contains fixes related to this like:

    • Removing dependencies on internal, private repos and un-published forks of other projects
    • Shipping with compiled js and css so no integration with project asset build tools is required
    • Fixing some higher priority bugs
    Source code(tar.gz)
    Source code(zip)
  • 5.1.0(Jan 3, 2017)

    • Fixes for image field
    • Don't SEO index
    • Fixes for video encodes
    • Create admins from CLI
    • PHP 7 improvements
    • Fixing pagination
    • Starting on documentation site
    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Jan 3, 2017)

    New features

    • Works with Laravel 5 (but not 4)
    • JS and SASS are compiled with Webpack (for Camo 3 compatibility)
    • New images system featuring a built in polymorphic Image model, new uploader UI, and new API for accessing images
    • Models now return Bkwld\Decoy\Collections\Base collections which have methods that help with serialization.
    • Child models can now be edited from the parent form. This feature backs the new image system.
    • Logins attempts are throttled, for increased security
    • Docs from readme moved to the Wiki

    New APIs

    • Models\Base->enforceVisibility() - Throws an AccessDeniedHttpException if the model isn't public and the user isn't an admin.
    • New images API: docs
    • New Bkwld\Decoy\Collections\Base API: docs

    Breaking changes

    Visibility

    • The visibility toggle has changes from a $t->boolean('visible')->nullable() migration to be a "public" boolean, non-nullable column: $t->boolean('public').
    • Scopes that had "visible" in the name have be renamed to use "public". For instance: Article::ordered->visible() becomes Article::ordered()->public()
    • The visibility UI tells admins that "private" records will be hidden from the public completely. The public() scope and the findBySlugOrFail() method will handle this automatically. Otherwise, you should call enforceVisibility() on models to trigger an exception if the user shouldn't have permission to view them.

    Misc

    • Fragments have been removed fully
    • Removed some unnecessary methods on Former::listing and Former::image
    • Replaced Element->format() with Element->value()
    • Croppa helper methods on the base model removed in favor of new images feature
    Source code(tar.gz)
    Source code(zip)
  • 4.11.0(Jan 3, 2017)

    There is a new button in the actions bar on an edit page:

    This uses the new Cloner package to duplicate the model you're viewing, including all child models, reforming many to many relations, and all files. After duplication, the success notification is a little different and "copy" gets automatically added to the title:

    There is minimal work required of the developer to support this added functionality, read the docs for more info.

    Elements

    • Fix for boolean Elements
    • Fix for Element ids after saving, useful when using model callbacks
    • Updating Element collection values after save, useful when using model callbacks

    Misc

    • The post_login_redirect config can be false to go to first item in nav. Or it can be a callable.
    • Improving the removing and removed event arguments so they are the same as the attached and attaching events.
    • Fix for Encoding progress check ajax calls
    • Radios can be used in many to many checklists
    • Prevent Redactor from using Decoy styles for headers, bold
    Source code(tar.gz)
    Source code(zip)
  • 4.10.0(Jan 3, 2017)

    This feature was dev-ed for CID. Admins with the grant permission can now customize the permissions defined in existing roles from the admin edit screen.

    You can change the permission options shown in that UI by overriding the getPermissionOptions() method from the base controller. This is how the Admins controller, for instance, presents the "Grant" option in place of "Publish." Elements are handled a little different where the user is presented with a list of all Element pages and they can control which pages other admins have access to. A user with access to an Element page can read and write to it.

    Source code(tar.gz)
    Source code(zip)
Owner
Bukwild
We’re a digital first agency based in Northern California.
Bukwild
Baicloud CMS is a lightweight content management system (CMS) based on PHP and MySQL and running on Linux, windows and other platforms

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
Bismuth CMS is a ready-made Website CMS based on Yii 2 Advance Template

Bismuth CMS is a ready-made Website CMS based on Yii 2 Advance Template, it's the simplest and easy to set up CMS you may come across.

Hamadas Telebrain 1 Feb 11, 2022
Simple Content Management System (CMS) Blog Using Codeigniter with Hierarchical Model View Controller (HMVC) Architectural

Simple Content Management System (CMS) Blog Using Codeigniter with Hierarchical Model View Controller (HMVC) Architectural This is my source code trai

Simon Montaño 1 Oct 28, 2021
Amila Laravel CMS - Free, open-source Simple Bootstrap Laravel CMS

Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project. Only add few database tables with prefixes, not affect your existing database tables. Support Laravel 7.x & Laravel 6.x & Laravel 5.x & MySql & PostgreSql - Amila Laravel CMS

Alex Zeng 96 Sep 6, 2022
Bootstrap CMS - PHP CMS powered by Laravel 5 and Sentry

Bootstrap CMS Bootstrap CMS was created by, and is maintained by Graham Campbell, and is a PHP CMS powered by Laravel 5.1 and Sentry. It utilises many

Bootstrap CMS 2.5k Dec 27, 2022
Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS

Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS. Building this Content Management System, we focused on simplicity. To achieve this, we implemented a simple but powerful API's.

Flextype 524 Dec 30, 2022
PHPVibe Open source video CMS / Video Sharing CMS / Youtube Api v3 / Video Embeds

PHPVibe Video CMS Free Video Sharing CMS The modern choice of design inspired by Youtube and a social videos sharing module that may just cut it for y

MediaVibe 71 Dec 18, 2022
NukeViet 132 Nov 27, 2022
BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the project website for more information.

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

null 5 Aug 15, 2022
GetSimple CMS - a flatfile CMS that works fast and efficient and has the best UI around, it is written in PHP

GetSimple CMS is a flatfile CMS that works fast and efficient and has the best UI around, it is written in PHP.

null 370 Dec 30, 2022