Giter Site home page Giter Site logo

bolt / core Goto Github PK

View Code? Open in Web Editor NEW
528.0 17.0 157.0 56.21 MB

🧿 Bolt 5 core

Home Page: https://boltcms.io

License: MIT License

PHP 63.14% HTML 0.01% JavaScript 7.90% CSS 0.88% Vue 8.53% Makefile 0.33% Shell 0.06% Dockerfile 0.22% SCSS 3.71% Twig 15.23%
php cms symfony headless api vue twig doctrine multilingual api-platform

core's Introduction

The starting point of your new website

Key FeaturesHow To UseHow To ContributeCreditsLicense

Bolt screenshot

Key Features

Bolt is a fully open source, adaptable platform for building and running modern websites. It's built on PHP, Symfony, Doctrine, Twig, API-Platform and more. Bolt can be used as a traditional CMS or headless/decoupled. It is fully multilingual, and extensible using custom code in your projects, or through extensions installed from the Composer ecosystem.

  • Built with Symfony: fully extensible with Symfony 5 extensions
  • YAML configuration: Adding new types of pages, new fields, new languages, etc. is all done in neat YAML.
  • Built-in internationalisation and Editor available in 15 languages.
  • Out-of-the-box API: RESTful and GraphQL
  • Dummy content to test your site in development or show it to a client
  • Best rich content editors Fully licensed Redactor and Article fields to fit any content, for free.

How To Use

To create a new Bolt Project, check out the instructions in Bolt's distribution repository.

For development of Bolt CMS itself, check out the setup guide

How To Contribute

There are multiple ways to help the Bolt project going forward:

Credits

The ongoing Bolt development takes place under the care of:

License

MIT


boltcms.io  ·  GitHub bolt  ·  Twitter @BoltCMS

core's People

Contributors

abdellahrk avatar andysh-uk avatar blepeian avatar bobdenotter avatar bobvandevijver avatar david-saisondor avatar denis-gorin avatar dependabot[bot] avatar doenietzomoeilijk avatar eduardomart avatar fredxd avatar i-valchev avatar ichag avatar ionutlipciuc avatar jackiboy avatar jarjak avatar joossensei avatar jtnmw avatar lordsimal avatar matesko avatar mcdennem avatar nestordedios avatar rixbeck avatar sbonardt avatar simongroenewolt avatar spomsoree avatar stellakasabova avatar tomasvotruba avatar wellinqscience1337 avatar xiaohutai avatar

Stargazers

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

Watchers

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

core's Issues

Show multiple notifications stacked

Right now its only possible to show one notification. Even when the backend renders multiple notifications, or multiple notifications are received via custom events, only the latest notification gets displaced properly. It looks like the CSS covers all older notifications.

Restrict access to `/api` routes

The /api/contents GET should be public, but the POST, DELETE, PUT, PATCH should be restricted. At the very least to authenticated users. :-)

screenshot_2018-10-12_at_13_09_51

Add "About Bolt" page

  • Make the page
  • Fill the page with a list of used Libraries
    • Javascript / Node
    • PHP
    • Others (Composer, Github, etc)

⭐️ Create Vue Components for all Field Types

  • #118 Make "Geolocation" field (traditional)
  • #119 Make "Embed" / "Video" field (traditional)
  • #120 Make "Select" field to select items from other content.
  • #123 Make "Geolocation" a Vue component.
  • #124 Make "Embed" a Vue component.
  • #133 Make "Multi-select" Vue Component
  • #36 VC | Checkbox Component
  • #49 After uploading an image, the filename should be updated

Configure CI environment

Configure CI to check every PR.
To be used (probably):
Travis
PhpUnit
PhpSpec
Behat
EasyCodingStandard
PhpStan

Make edit content titles show the content type of the Record

Make edit content titles show the content type of the Record.

Currently it is:
Edit » {{record.name}}.
needs to be:
Edit {{contenttype.singular_name}} » {{record.name}}.

It would be also good to have a values for the icons used on each page as well

Make "Clear Cache" controller / screen

We have bin/console cache:clear, but this should also work in the browser..

  • Make Controller
  • Make screen for "Clear Cache" and add it to the menu
  • Make it actually work.

⭐️ Make "Taxonomies" work

Like in Bolt 3, there are three main types of taxonomy:

  • Tags -> Freeform, can be added on the fly
  • Categories -> A little more strict, need to be predefined, but can have multiple (both "multiple category taxonomies" for one contenttype, as well as "multiple categories" per Record
  • Groups -> Strict. A contenttype (and a 'Record', can have only one group maximum

Convert Twig-based "slug" field into Vue component.

Currently, the "slug" field is generated in HTML. Code for the field is here: https://github.com/bobdenotter/symfony-skeleton/blob/master/templates/editcontent/fields/slug.twig

screenshot 2018-10-02 at 19 38 08

Ideally, this field should be converted to a nice, self-contained Vue component, that's easier to maintain.

Current JS code entry point is here: https://github.com/bobdenotter/symfony-skeleton/blob/master/assets/js/bolt.js

Build instructions are in README.md. After setting up, you should be able to log on to the Admin Panel, at /bolt, and from the Dashboard click on "Edit" on any of the dummy records to go to the Edit page.

Note: the current code is very prototype-y. Feel free to re-arrange stuff, if it makes more sense. :-)

`/api` results have unwanted items

While fetching data using /api/contents.json should be public, it should omit some data, like config, definition and author. See Screenshot:

screenshot_2018-10-12_at_13_07_51-2

⭐️ Make all required frontend controllers

The following frontend routes need to be implemented:

Frontend

  • homepage | GET | /
  • search | ANY | /search
  • preview | POST | /preview/{contenttypeslug}
  • contentlink | GET | /{contenttypeslug}/{slug}
  • taxonomylink | GET | /{taxonomytype}/{slug}
  • contentlisting | GET | /{contenttypeslug}

Bolt 4.0.0 alpha 1 - Tracker Issue

This issue will contain a list of items that need to be completed (or at least "well underway"), before we can release Bolt 4.0.0 alpha 1

⭐️ Make "Extensions"

Things to do:

  • Make extensions 'autoload' as a compiler pass
  • Make extensions call their 'initialising' method after booting
  • Make possible for extensions to have their own config file
  • Make extension add widgets/snippets
  • Make extensions add Twig funcions & filters
  • Provide things like Request, Response, Config in extensions
  • Make Autowiring work for extensions
  • Make command for extensions:list
  • Make command for extensions:info
  • Make command for extensions:enable
  • Make command for extensions:disable
  • Make controller / UI screen in backend
  • Create make:extension command
  • Make it so extensions can add FieldTypes.

Rename MarkDown.vue to Markdown.vue

Got this error when running encore on linux.

 ERROR  Failed to compile with 1 errors                                                                                                                                                 02:52:08

This relative module was not found:

* ../Components/Editor/Markdown.vue in ./assets/js/Views/editor.js

Because the existing file is MarkDown.vue instead of Markdown.vue
Rename it should fix the problem.

⭐️ Make all required backend controllers

The following backend routes need to be implemented:

Dashboard

  • dashboard | GET | /bolt

Content

  • editcontent | GET|POST | /bolt/editcontent/{contenttypeslug}/{id}
  • overview | GET | /bolt/overview/{contenttypeslug}
  • omnisearch-results | GET | /bolt/omnisearch

Authentication

  • login | GET | /bolt/login
  • postLogin | POST | /bolt/login
  • logout | ANY | /bolt/logout
  • resetpassword | GET | /bolt/resetpassword

Database integrity / fixtures

  • dbcheck | GET | /bolt/dbcheck
  • dbupdate | POST | /bolt/dbupdate
  • dbupdate_result | GET | /bolt/dbupdate_result
  • prefill | ANY | /bolt/prefill

Finder / editing textual files

  • fileedit | ANY | /bolt/file/edit/{namespace}/{file}
  • files | ANY | /bolt/files/{namespace}/{path}

Thumbnails

  • thumb | GET | /thumbs/{width}x{height}{action}/{file}
  • thumb_alias | GET | /thumbs/{alias}/{file}

Various config stuff

  • about | GET | /bolt/about
  • checks | GET | /bolt/checks
  • clearcache | GET | /bolt/clearcache
  • translation | ANY | /bolt/tr/{domain}/{tr_locale}
  • changelog | GET | /bolt/changelog
  • changelogrecordsingle | GET | /bolt/changelog/{contenttype}/{contentid}/{id}
  • changelogrecordall | GET | /bolt/changelog/{contenttype}/{contentid}
  • systemlog | GET | /bolt/systemlog

User management

  • users | GET | /bolt/users
  • useredit | ANY | /bolt/users/edit/{id}
  • userfirst | ANY | /bolt/userfirst
  • useraction | POST | /bolt/user/{action}/{id}
  • profile | ANY | /bolt/profile
  • roles | GET | /bolt/roles

Async routes / helpers

  • changelogrecord | GET | /async/changelog/{contenttype}/{contentid}
  • dashboardnews | GET | /async/dashboardnews
  • lastmodified | GET | /async/lastmodified/{contenttypeslug}/{contentid}
  • latestactivity | GET | /async/latestactivity
  • makeuri | GET | /async/makeuri
  • omnisearch | GET | /async/omnisearch
  • readme | GET | /async/readme/{extension}
  • populartags | GET | /async/populartags/{taxonomytype}
  • tags | GET | /async/tags/{taxonomytype}
  • embedRequestEndpoint | POST | /async/embed
  • asyncbrowse | GET | /async/browse/{namespace}/{path}
  • file/autocomplete | GET | /async/file/autocomplete
  • file/create | POST | /async/file/create
  • file/delete | POST | /async/file/delete
  • file/duplicate | POST | /async/file/duplicate
  • file/rename | POST | /async/file/rename
  • createfolder | POST | /async/folder/create
  • renamefolder | POST | /async/folder/rename
  • removefolder | POST | /async/folder/remove
  • recordbrowser | GET | /async/recordbrowser
  • contentaction | POST | /async/content/action
  • stack/add | POST | /async/stack/add
  • stack/show | GET | /async/stack/show
  • directories | GET | /async/check/directories
  • email | GET | /async/check/email
  • widget | GET | /async/widget/{key}

MagicContentTrait DX improvements

Splitted from #148

  • I really don't like all those "magic" methods in ContentMagicTrait. Can we at least rename them to be less magical? :)
  • if we could make $this->fields a name-indexed array, using this method be much faster (simple isset instead of foreaching).
  • rename to get to getField, has to hasField

Bolt 4.0.0 beta 1 - Tracker Issue

This issue will contain a list of items that need to be completed (or at least "well underway"), before we can release Bolt 4.0.0 alpha 1

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.