Bolt is a simple CMS written in PHP. It is based on Silex and Symfony components, uses Twig and either SQLite, MySQL or PostgreSQL.

Overview
⚠️ Note - Not the latest version
This is the repository for Bolt 3. Please know that
Bolt 5 has been released. If you are starting a
new project, please use the following:
- Bolt 5 installation instructions
- Bolt 5 Core repository

Bolt

A Sophisticated, lightweight & simple CMS released under the open source MIT-license.

Bolt is a tool for Content Management, which strives to be as simple and straightforward as possible.

It is quick to set up, easy to configure, uses elegant templates, and above all, it's a joy to use!

Bolt is created using modern open source libraries, and is best suited to build sites in HTML5 with modern markup.

Installation

Detailed instructions can be found in the official documentation.

NOTE: Cloning the repository directly is only supported for development of the core of Bolt, see the link above for various supported options to suit your needs.

Reporting issues

See our Contributing to Bolt guide.

Support

Have a question? Want to chat? Run into a problem? See our community page.

Development

The ongoing Bolt development and maintenance takes place under the care of:

Sponsors:


Build Status Scrutinizer Continuous Inspections SensioLabsInsight CII Best Practices Slack

Comments
  • Extension: In-place WYSYWYG editor feature...

    Extension: In-place WYSYWYG editor feature...

    ...for Bolt. Triing to extend administration functionality of Bolt on Frontend with enabling in-place editing some content. Uses JQuery, JQuery-UI integrated into Raptor.js.

    What do you guys think?

    opened by rixbeck 108
  • [RFC] New way of thumbnails generation

    [RFC] New way of thumbnails generation

    Intro

    Current way of thumbnails generation has several disadvantages 1. it's insecure to let any visitor to create any image by request. If you have /images/1.jpg, server space can be filled with requesting for

    /thumbs/1x1/1.jpg /thumbs/1x2/1.jpg /thumbs/1x3/1.jpg

    2. If you have several implementations of your thumbnail size in twig template and willing to change resolution of the thumbs, you have to change this resolution in each place.

    {{ record.photo|showimage(800, 600) }} // 800 and 600 has to be changed everywhere

    3. If you want to do some other transformations (like black and white processing or crop) - you also have to change it.

    4. Case: you have 100mb serverspace free. Each thumbnail is about 50kb, when you have 20000 thumbnails generated, server space is busy. Without a thumbnail generation tool (like cache:clear) or nut command - it could happen unexpectedly.

    5. Folders for thumbnails are heavily hardcoded. It would be have flexibility to setup naming thumbnail folders.

    6. Case: i want to let user upload huge images, but don't want them to be available in web folder. Only resized versions or versions with some watermarking. How can i restrict access to original images? i think it could be achieved with 5 by setting folder for uploads outside the web wolder.

    Proposal:

    Make a thumbnail (resize , process) config for each image/imagelist contenttype.

    #contenttypes:
    user_contenttype:
        photo:
            label: "It's a photo, dude"
            type: image
            resizes:
                resize1:
                    size: [320,200] # other setting are set by default
                preview:
                    size: [800,600]
                    upscale: false
                    format: 'jpg'
                    type: 'stretch' # 'fit' / 'fill' / 'crop'
                thumbnail_renamed_and_processed: 
                    size: [200,166]
                    filename: "%date%_%dimensions%.%original_extension%"
                    folder: "%thumbs_folder%/carrots" # relatively to %web_folder%
    

    and so it will be used like

    {{ record.photo|thumb('resize1')}}
    or dynamic filter generation (just a fantasy :)
    {{ record.photo|preview}}
    or perhaps
    {{ record.photo__thumbnail_renamed_and_processed}}
    

    Backwards Compatibility

    I think for a while it could be used in special mode in config, that is set by default to old style of thumbnail generation. And if you want to use the new style - just add

    #config.yml
    new_thumbs_or_whatever: true
    
    backburner feature request 
    opened by Boorj 65
  • Create users via invitation

    Create users via invitation

    Fixes: #4555

    This feature allows you to create an invitation code to invite new users.

    The feature is included on Configuration > Users & Permissions and it generates an invitation code by selecting roles for the new user and setting up an expiration date for the invitation.

    When the invitation code is generated and stored on the database the feature allows you to share the invitation link by copying the url or sending it via email.

    The user who has been invited will be able to create an account on the website if the invitation code is still valid.

    I do not like brown M&M's :)

    Some pictures:

    captura de pantalla 2016-06-30 a las 23 03 26 captura de pantalla 2016-06-30 a las 23 03 45 captura de pantalla 2016-06-30 a las 23 04 29 unfinished functionality under review 
    opened by mrcarlosdev 46
  • Doctrine ORM / ODM for entries

    Doctrine ORM / ODM for entries

    Hello

    I would prefere those contenttypes would base on doctrine orm/odm entities/documents generated on the base of the contenttypes.yml: This would bolt make a good choice for bigger projects (e-commerce for example). The contenttype could implement interfaces for a product within a cart.

    If this is an option, i would make a proposal within the next months.

    Regards dominik

    opened by dominikzogg 46
  • Multi-language site support

    Multi-language site support

    Hi,

    I just discover your project, nice job !

    There is a missing feature that I need: site content in multilanguage.

    Do you already have thinked about it ? Maybe I can help...

    opened by gido 46
  • [RFC] Asset() replacing Paths variable makes templating more obscure

    [RFC] Asset() replacing Paths variable makes templating more obscure

    Disclaimer to start with: This is an issue just to start a discussion to include a front-enders view on this.

    Background:

    If I'm correct, the {{PATHS}} variable will be deprecated and (partly) replaced by the Asset() function.

    This will cause <img src="{{ paths.theme }}images/logo.png" alt="Client logo" /> To look like this: <img src="{{ asset('images/logo_footer.png', 'theme') }}" alt="Client logo" />

    Why?

    There are a number of reasons why, as a frontender / templater think this is not desirable.

    1. It obsures your templating code with magical backender bits. The {{paths.theme}} was used to shorten the longer absolute path, and was a readable tag. You could output the paths variable by dumping it and choosing what path you needed. Replacing it with a function that needs extra knowledge and is not readable by default, throws a threshold for templaters. To speak for myself, this would end-up being a 'magical' tag, where I have no idea what is does, will be copied and pasted from my gist, and being an annoyance, before returning to absolute paths again.

    2. The über-readable Twig is used for a reason
    The reason why it's a bliss for frontenders and templaters to work in Bolt templates, is because backend is separated from frontend by the lovely Twig language. My Templates are not messy php functions, but readable snippets like {{ record.title }}. There's no learning curve for that. Inserting functions in the templates is a diversion from this philosophy, and in my opinion, is unlike Bolt.

    3. A technical issue with the paths variable should be handled in the backend, and not trickle through to the templating. Knowing the Bolt team, I am sure there is a very valid reason for this change from a technical point of view. Mostly, changes in Symfony versions, new possibilities etc. However. These technical changes should be handeled in the (invisible) backend part, and not end up on the screens of templaters.

    Solutions?

    For me, keeping the {{PATHS}} variable alive for getting the paths would be a great option, as is, or as an alias.

    An alternative solution @bobdenotter came up with, was making the theme default, so <img src="{{ asset('images/logo_footer.png', 'theme') }}" alt="Client logo" /> would be simplified to: <img src="{{ asset('images/logo_footer.png') }}" alt="Client logo" /> Although, as a templater I am still drawing blanks why I should use a function for something as simple as getting a static image from a static folder.

    Please discuss! Thanks!

    (Won't somebody think of the frontenders!)

    RFC 
    opened by ankedsgn 44
  • Blank screen beta 2.

    Blank screen beta 2.

    I just installed the beta 2 of Bolt and it leaves me with a blank screen when I try to log in. The same happens when I want to display the website. I installed it over beta 1. Should I go back to beta 1 or am I doing something wrong?

    blocking release 
    opened by gwbonline 44
  • [RFC] Moving extensions into separate repos for Marketplace

    [RFC] Moving extensions into separate repos for Marketplace

    As @rossriley is making great progress with Marketplace, I thought it was a good time to start a conversation about moving extensions out of core and into repos so they can be accessed by the new system in 2.0

    What's going where and who needs help?

    Ross has a draft wiki page outlining what needs to be changed and I have a very basic working example.

    Current extensions and listed authors

    | Extension | Author(s) | Status | | --- | :-: | --- | | Authenticate | TwoKings (Lodewijk Evers, Tobias Dammers, Bob den Otter) | Complete | | Disqus | Bob den Otter | Complete | | Editable | Rix Beck | Complete | | FacebookComments | Bob den Otter | Complete | | FacebookLike | Bob den Otter | Complete | | GoogleAnalytics | Bob den Otter | Complete | | HelloWorld | Bob den Otter | Complete | | ImportWXR | Bob den Otter | Complete | | JSONAccess | Tobias Dammers | Complete | | MenuEditor | Steven Wüthrich / bacbos lab | Complete | | MetaTags | Xiao-Hu Tai | Complete | | NiceUrls | WeDesignIt, Patrick van Kouteren, Miguel Angel Gabriel | Complete | | Omnisearch | Xiao-Hu Tai | Integrated | | PasswordProtect | Bob den Otter | Complete | | PinIt | Gawain Lynch | Complete | | PlusOne | Till Klocke | Complete | | RateIt | Gawain Lynch | Complete | | Redirector | 'Mike Anthony / Foundry Code' | Complete | | RelatedContentByTags | Xiao-Hu Tai | Complete | | RSSAggregator | Sebastian Klier (passed to Gawain Lynch) | Complete | | RSSFeed | WeDesignIt, Patrick van Kouteren, Gawain Lynch | Complete | | SimpleForms | Bob den Otter | Complete | | Sitemap | Bob den Otter / Patrick van Kouteren | Complete | | Socialite | Gawain Lynch | Complete | | TestSnippets | Bob den Otter | Complete | | TitleCase | Bob den Otter | Complete | | TwitterButton | Bob den Otter | Complete | | TwitterFeed | Gawain Lynch | Complete | | WaffleOrders | Tobias Dammers | Complete |

    refactor RFC 
    opened by GwendolenLynch 43
  • Switching branches in github.

    Switching branches in github.

    Hi,

    Since we're getting closer to the point that Bolt 2 should go in alpha/beta, I'm considering switching the branches around.. Currently, I've been merging all changes from master into feature/bolt2, but they're starting to diverge more and more, which leads to errors with merging. Since there will be no '1.7', I think we should swap some branches:

    • Move master to a new release/1.7 (even though it'll never be released, most likely)
    • Move feature/bolt2 to master, and continue developing in there.

    We'll keep on using release/1.6 for bugfixes and maintenance to the 1.6 release. I'll have to update the docs, to tell people that use git to set up bolt, that they should use release/1.6

    After 2.0 has been released, I'd like to switch to Gitflow, or a slimmed down version of it. At the very least, I'd like to move to a workflow where we strive to keep 'master' in a stable state at all times.

    Or, are there any good reasons why we shouldn't do this?

    (pinging @jadwigo, @xiaohutai, @tobias2k, @rossriley, @rarila, @GawainLynch, @rixbeck, @doertedev, @ntomka for input. ^_^ )

    opened by bobdenotter 38
  • redirect to /bolt/users/edit/

    redirect to /bolt/users/edit/

    Hi,

    I followed the instruction to setup the bolt project; http://docs.bolt.cm/installation

    when all was done, I opened the browser to access localhost, but it redirected to localhost/bolt/users/edit

    Anyone can help?

    Thanks a lot.

    question 
    opened by cjuhong 36
  • [RFE] Use require.js to manage javascript includes

    [RFE] Use require.js to manage javascript includes

    See #1030.

    Goal: clean up the mess that is Bolt's current javascript inclusion management, and provide a sane framework for require.js-based script loading. This takes care of:

    • loading javascript files on-the-fly, as needed
    • modularity
    • avoiding duplicate includes
    • avoiding version conflicts (different versions of the same module can coexist)

    How to get there.

    The first thing we'll need is a generated requirejs configuration. Because require.js uses JSON for its configuration, this is a matter of keeping a list of javascript includes, massaging it into the right format, json_encode()ing it, and serving it as a javascript file. Since that file will also act as our main js entry point, it will also need to contain some bootstrapping boilerplate. Requirejs doesn't run anything but the main entry point directly, so when things register scripts, they need a way to hook themselves into the main entry point. This can be done by generating a list of calls in the generated main.js directly, or we can just generate a simple list of modules that expect to be hooked up, and then the hard-coded bootstrapping part would go through that list and set up all the hooks. This is what I imagine the generated main.js might look like:

    requirejs.config({
        // json dump of config as collected by Bolt's javascript manager, e.g.:
        paths: {
            app: '/js/app',
            extensions: '/js/extensions'
        }
        // etc. yadda yadda
    
    });
    
    (function(){
        var __startup_scripts = [
            // json dump of the module names of all the modules that have
            // registered themselves as having a startup hook, e.g.:
            'foobar',
            'baz'
        ];
    
        require(__startup_scripts, function(){
            // Using 'magic' arguments array here so we can just iterate over
            // the required modules.
            // Note that all entry point modules are loaded asynchronously (and
            // thus in parallel) before the iteration begins; order of
            // execution, however, is determined by the order in which they are
            // declared.
            var modules = arguments;
            for (var i = 0; i < modules.length; ++i) {
                modules[i].run();
            }
        });
    )();
    

    This script needs to be generated on the fly, and hooked up to a silex route; we probably need separate routes for frontend and backend, because the frontend is going to use a different set of scripts than the backend.

    Then we need a few routines in the JS manager to register scripts in various ways, most importantly:

    • require-aware entry point (to be added to the startup scripts, and facilitated in the require config with the assumption that it is an AMD module)
    • require-aware module (only added to require config)
    • non-AMD script with extra options controlling import behavior. This is needed for scripts that aren't AMD aware, or that don't play 100% nice with AMD (such as jQuery).

    We also need to distinguish between frontend- and backend scripts here, either by passing an extra parameter to the registration methods, or by having two completely independent script managers.

    The final bit we need is something that injects a <script> tag into our page to bootstrap require.js; this is pretty much a one-liner, but it needs to be somewhat dynamic in that it needs to point to the correct URL for require.js and main.js. Not rocket science though.

    Finally, existing javascript will need to be converted, or we need to come up with some sort of compatibility shimming to keep those scripts working.

    enhancement 
    opened by tobias2k 35
  • DELETE method not working for Contents API

    DELETE method not working for Contents API

    When attempting to delete a record using the REST API, a status "204 No Content" is returned (which indicates that the request was successful) but the record still remains unchanged.

    Details

    | Question | Answer |----------------- | ------ | Relevant Bolt Version | 5.1.18 | Install type | Composer install | PHP version | 7.2 | Web server | Apache / Built-in

    Reproduction

    Bug summary

    * Most likely an APIPlatform implementation fault
    * Annotations for deleting content using the API are present in Bolt\Entity\Content
    

    Specifics

    * API route is `/api/contents/{id}`, method is DELETE
    * API definition can be found by default under `/bolt/api`
    * Bolt was installed using Composer CLI
    * Bolt version is 5.1.28
    * Clients used to verify the problems are Postman and PHP/Curl
    

    Steps to reproduce

    * Create a User with ROLE_WEBSERVICE
    * Create an example record of any content type
    * Make an HTTP call with DELETE method to `/api/contents/{id}` -> should return status 204
    * Verify that the record has not been deleted
    

    Expected result

    * The record is deleted from the database completely
    

    Actual result

    * The record remains unchanged
    
    opened by fabian-st 0
  • Plans for Bolt 6 / Symfony 6 / Stimulus / API Platform 3

    Plans for Bolt 6 / Symfony 6 / Stimulus / API Platform 3

    Are there plans to update bolt to the last libraries, especially Symfony 6 and the soon-to-be-released ApiPlatform 2.7/3.0?

    How can you help?

    My forked repo now compiles, but gets stuck in the login (and then there are likely to be more errors). If someone can help me get past the login, I can upgrade some of the other components.

    https://github.com/tacman/core

    opened by tacman 3
  • Language support for 403,503,404

    Language support for 403,503,404

    Hey :)

    Would it be possible to get language support for the 403 503 404 pages as well?

    If I create a 404 page under Blocks and change the language it stays on the default language.

    I have already tried in the documentation to find what about it, unfortunately in vain.

    opened by Blackswirllife 3
  • Cannot Install Bolot 5

    Cannot Install Bolot 5

    Using Composer installed bolt 5. And it does not load, and have multiple issues.

    • Domo Content Cannot be installed as of a SSL Handshake issue with placeholder.it • If no default contect installed the following comes up.

    An exception has been thrown during the rendering of a template ("Could not find the entrypoints file from Webpack: the file "C:\laragon\www\agrisort/public/assets/entrypoints.json" does not exist.").

    opened by Polydevelopment1 1
  • Keep the current locale visible in backend viewport at all times

    Keep the current locale visible in backend viewport at all times

    Problem: If you have a long backend page and you scroll down, the current locale scrolls out of view. If the working locale has scrolled out of view and something (e.g. a phone call) has made the editor loose his focus*, there is a risk that he will get back to work and overwrite content, e.g. insert English content in a Dutch translation or v.v. and only notice this after saving.

    Does this look familiar?

    So my suggestion is to discretely show the current locale in the viewport permanently, in a corner of the off-white area somewhere, not in the header since it is related to the content.

    Alternatively, less subtle ways to do this would be to smack a position:sticky on the Current Locale- card, or attach a flag to the mouse/cursor.

    *) https://www.youtube.com/watch?v=-kieJaT9EIA

    opened by evertalbers 1
  • Database export Nut command does not export relations between records

    Database export Nut command does not export relations between records

    When running app/nut database:export command, relationships are not being exported.

    In Bolt v3.7.4 it happens but in Bolt v3.7.2 it doesn't happens.

    Details

    | Question | Answer |----------------- | ------ | Relevant Bolt Version | 3.7.4 | Install type | Composer install | BC Break | yes | PHP version | 7.2.34 | Web server | Symfony local server

    Reproduction

    Having records with relationships, run the app/nut database:export command.

    Expected result

    Relations are exported

    Actual result

    Relations are not exported

    opened by nestordedios 1
Releases(3.7.4.1)
  • 3.7.4.1(Oct 26, 2021)

  • 3.7.4(Jun 8, 2021)

    To upgrade your existing Bolt 3.x installation, run

    composer update
    

    Released: 2021-06-08. Notable changes:

    • Notify users of 4.0 stable release. #7890
    • Improve Yaml export for compatibility with Bolt 4/5 Conimex import. #7910
    • Killing PHP7.4.3 exceptions post-migration from older Bolt/PHP versions. #7906
    • Fix: Fetching content by Taxonomy does not work if ContentType Name is different than ContentType Slug. #7894
    • Allow rel-attribute by default. #7885
    • Allow {{ fields(record = record) }}, to pass in a record not in global scope. #7912
    • Add Composer 2 compatibility. #7913
    • Fix: querying by ContentType slug (fixes regression introduced in #7894) #7916
    Source code(tar.gz)
    Source code(zip)
  • 3.7.3(Jun 7, 2021)

    To upgrade your existing Bolt 3.x installation, run

    composer update
    

    Released: 2021-06-07. Notable changes:

    • Notify users of 4.0 stable release. #7890
    • Improve Yaml export for compatibility with Bolt 4/5 Conimex import. #7910
    • Killing PHP7.4.3 exceptions post-migration from older Bolt/PHP versions. #7906
    • FIXED: Fetching content by Taxonomy does not work if ContentType Name is different than ContentType Slug. #7894
    • Allow rel-attribute by default. #7885
    • Allow {{ fields(record = record) }}, to pass in a record not in global scope. #7912
    • Add Composer 2 compatibility. #7913
    Source code(tar.gz)
    Source code(zip)
  • 3.7.2(Oct 19, 2020)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.7/bolt-3.7.2.tar.gz
    tar -xzf bolt-3.7.2.tar.gz --strip-components=1
    php app/nut init
    

    Bolt 3.7.2

    Released: 2020-10-20. Notable changes:

    • Security: Restrict filter options in Request in Twig context
    • Security: Provide a stronger secret for UrlSigner
    • Security: Allow only directories to be renamed with renameFolder #7867
    • Fixes slashes in directory names #7871
    • fixed typo 'an' to 'and' in README #7875
    • Check if we have a current user, prevent "Trying to access array offset" extension #7869
    • Fix ContextErrorException in PHP 7.4 #7868
    • Update composer.json: Add "public-dir": "public" #7866

    Special thanks go out to the following for responsibly disclosing a security issue to us:

    • Charles Fol - https://www.ambionics.io/
    • ERNW Research GmbH - https://ernw.de/
    Source code(tar.gz)
    Source code(zip)
    bolt-3.7.2.tar.gz(17.64 MB)
    bolt-3.7.2.zip(22.17 MB)
  • 3.7.1(May 7, 2020)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.7/bolt-3.7.1.tar.gz
    tar -xzf bolt-3.7.1.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2020-05-07. Notable changes:

    • Security: Check CSRF on Preview page, and prevent renaming files to blacklisted filetypes #7853
    • Change: Add hreflang to allowed_attributes #7855
    • Chore: Updating dependencies #7842
    • Fixed: Fix tag cloud, update NPM deps #7856
    • Fixed: Select field with multiple contenttypes and display values results in a ContextErrorException #7849
    • Fixed: Trying to access array offset on value of type null with PHP 7.4 #7843

    Special thanks go out Sivanesh Ashok for responsibly disclosing the two fixed security issues to us.

    Source code(tar.gz)
    Source code(zip)
  • v3.7.0(Nov 12, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.7/bolt-v3.7.0.tar.gz
    tar -xzf bolt-v3.7.0.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-11-12. Notable changes:

    • Change: Dropped support for PHP 5.5, 5.6 and 7.0. #7826

    This means the minimum requirement for Bolt 3.7 is now PHP 7.1. Because of this, the default distributions will now include more recent versions of libraries, providing better support for more recent versions of PHP 7.1 and higher out-of-the-box. This is most noticeable with Doctrine, our database library.

    If you're stuck on an older PHP version, you can keep using Bolt 3.6 for the foreseeable future.

    Source code(tar.gz)
    Source code(zip)
  • v3.6.11(Nov 10, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.11.tar.gz
    tar -xzf bolt-v3.6.11.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-11-10. Notable changes:

    • Fixed: Fix tags in non-english languages and firefox caching selected options #7822
    • Fixed: Fix typo in AccessControlListener.php #7809
    • Security: Fix CRSF issues in file operations #7823
    • Updated: Add download to allowed_attributes in HTML cleaner #7808
    • Updated: Added comment about required IP in trustProxies #7807
    • Updated: Export improvements #7812
    • Updates: Update tests for Doctrine 2.10 compatibility #7824

    Special thanks go out f4h4dbt for responsibly disclosing the CSRF issue to us.

    Source code(tar.gz)
    Source code(zip)
  • v3.6.10(Aug 15, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.9.tar.gz
    tar -xzf bolt-v3.6.9.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-08-15. Notable changes:

    • Security: Prevent XSS in system log (for authenticated users) #7802
    • Security: Prevent XSS in image alt/title (for authenticated users) #7801
    • Security: Prevent XSS in "Create file" in file manager (for authenticated users) #7800
    • Fixes: Prevent update of guzzlehttp/psr7 to 1.6, fixes tests #7798
    • Fixed: Fix taxonomy name collision #7799
    • Fixed: Rebuilding assets, fixing tags cloud #7794

    Special thanks go out to @marcingajda for his contributions, and to @KotatuBot for responsibly disclosing the XSS issues to us.

    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.10-flat-structure.tar.gz(17.73 MB)
    bolt-v3.6.10-flat-structure.zip(22.90 MB)
    bolt-v3.6.10.tar.gz(17.73 MB)
    bolt-v3.6.10.zip(22.64 MB)
  • v3.6.9(Jun 24, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.9.tar.gz
    tar -xzf bolt-v3.6.9.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-06-24. Notable changes:

    • Added: Add abbreviations to CKeditor, using <abbr>-tag. #7783
    • Fixed: Use isIterable over Traversable #7778
    • Updated: Select2 updated to 4.0.7, since it finally works on IE 11 again. #7783
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.9-flat-structure.tar.gz(17.73 MB)
    bolt-v3.6.9-flat-structure.zip(22.88 MB)
    bolt-v3.6.9.tar.gz(17.73 MB)
    bolt-v3.6.9.zip(22.62 MB)
  • v3.6.8(May 23, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.8.tar.gz
    tar -xzf bolt-v3.6.8.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-05-23. Notable changes:

    • Fixed: Make sure stripFields is set to array by default #7776
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.8-flat-structure.tar.gz(17.69 MB)
    bolt-v3.6.8-flat-structure.zip(22.83 MB)
    bolt-v3.6.8.tar.gz(17.69 MB)
    bolt-v3.6.8.zip(22.57 MB)
  • v3.6.7(Apr 11, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.7.tar.gz
    tar -xzf bolt-v3.6.7.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-04-11. Notable changes:

    • Added: "Strip keys" option to excerpt of fields. #7759
    • Added: Add information about how to set up custom CKeditor styles. #7769
    • Change: Make sure accept_file_types is an INDEXED array, and disallow certain filetypes to be whitelisted. #7768
    • Change: Make the bootstrap more robust. #7763
    • Fixed: Compare filename extension lowercased #7772
    • Fixed: Remove unsupported guzzlehttp version. #7762

    This release comes with special thanks to Felipe Gaspar (fgaspar) for responsibly reporting a potential security issue to us.

    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.7-flat-structure.tar.gz(17.68 MB)
    bolt-v3.6.7-flat-structure.zip(22.81 MB)
    bolt-v3.6.7.tar.gz(17.68 MB)
    bolt-v3.6.7.zip(22.55 MB)
  • v3.6.6(Mar 7, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.6.tar.gz
    tar -xzf bolt-v3.6.6.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-03-07. Notable changes:

    • Change: Allow lower and upper case file extensions #7751
    • Change: Log a warning instead of info when permissions are not configured #7749
    • Fixed: Add extra workaround for HTML-like and Image fields in preview #7754
    • Updated: Update config.yml.dist #7748
    • Updated: Update messages.pl_PL.yml #7747
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.6-flat-structure.tar.gz(17.67 MB)
    bolt-v3.6.6-flat-structure.zip(22.79 MB)
    bolt-v3.6.6.tar.gz(17.67 MB)
    bolt-v3.6.6.zip(22.53 MB)
  • v3.6.5(Feb 26, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.5.tar.gz
    tar -xzf bolt-v3.6.5.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    This release comes with special thanks to Andrea Santese (medu554) for responsibly reporting a security issue to us, and to @JarJak for providing a fix.

    Released: 2019-02-26. Notable changes:

    • Security: Fix filemanager file extensions. #7745
    • Added: Allow custom attributes for image fields. #7743
    • Added: Limit when values of a select is an entity #7742
    • Fixed: use the correct <sup> tag in allowed_tags. #7737
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.5-flat-structure.tar.gz(17.67 MB)
    bolt-v3.6.5-flat-structure.zip(22.79 MB)
    bolt-v3.6.5.tar.gz(17.67 MB)
    bolt-v3.6.5.zip(22.53 MB)
  • v3.6.4(Jan 24, 2019)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.4.tar.gz
    tar -xzf bolt-v3.6.4.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2019-01-24. Notable changes:

    • Fixed asset url generation for Bolt install in subfolder. #7725
    • Fixed: DBAL Sqlite schema diff bug, still needed on DBAL 2.9. #7733
    • Fixed: Ignore default value alteration for MySQL TEXT and BLOB types. #7477
    • Updated: Updates to bolt/thumbs and bolt/filesystem.
    • Updated: Various updates to Symfony components, Composer packages and Front-end dependencies.
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.4-flat-structure.tar.gz(17.84 MB)
    bolt-v3.6.4-flat-structure.zip(22.97 MB)
    bolt-v3.6.4.tar.gz(17.84 MB)
    bolt-v3.6.4.zip(22.71 MB)
  • v3.6.3(Dec 11, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.3.tar.gz
    tar -xzf bolt-v3.6.3.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2018-12-12. Notable changes:

    • Fixed: Add missing status filter. #7719
    • Fixed: Add whitespace between status label and value. #7717
    • Fixed: Allow for $locale optional parameter in localedatetime. #7723
    • Fixed: Fix filters for Content without taxonomy. #7722
    • Fixed: Fix listing without owner. #7716
    • Fixed: Fix setting up legacy Contenttype object. #7720
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.3-flat-structure.tar.gz(17.83 MB)
    bolt-v3.6.3-flat-structure.zip(22.95 MB)
    bolt-v3.6.3.tar.gz(17.83 MB)
    bolt-v3.6.3.zip(22.69 MB)
  • v3.6.2(Nov 9, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.2.tar.gz
    tar -xzf bolt-v3.6.2.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2018-11-09. Notable changes:

    • Fixed: Fix slugs for contenttypes that use a field other than 'title'. #7708
    • Fixed: Handle Empty Search Parameter Error. #7712
    • Fixed: Fix styling of panel actions. #7707
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.2-flat-structure.tar.gz(17.81 MB)
    bolt-v3.6.2-flat-structure.zip(22.93 MB)
    bolt-v3.6.2.tar.gz(17.82 MB)
    bolt-v3.6.2.zip(22.67 MB)
  • v3.6.1(Nov 2, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.1.tar.gz
    tar -xzf bolt-v3.6.1.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2018-11-02. Notable changes

    • Fixed: Add missing part of select field values in repeaters. #7701
    • Fixed: Fix for field type blocks with translation extension. #7705
    • Fixed: Fix for Select values inside repeaters inside templatefields. #7636
    • Fixed: Stop stack being queried in _macro.twig when stack is disabled. #7698
    • Fixed: Temporary fix for repeater fields in changelog. #7683
    • Updated: Javascript dependencies, including blueimp-file-upload.
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.1-flat-structure.tar.gz(17.80 MB)
    bolt-v3.6.1-flat-structure.zip(22.92 MB)
    bolt-v3.6.1.tar.gz(17.81 MB)
    bolt-v3.6.1.zip(22.66 MB)
  • v3.6.0(Oct 10, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.6/bolt-v3.6.0.tar.gz
    tar -xzf bolt-v3.6.0.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.6/installation/installation

    Released: 2018-10-10. Notable changes

    • Feature: Add cron "Minute", for timed publish #7598
    • Feature: Drag-n-drop sorting for Content Blocks #7621
    • Feature: Drag-n-drop sorting for Repeaters #7617, #7630, #7648
    • Added: Add a Taxonomy repo and allow query content by taxonomy types #7522
    • Added: Add class support to new storage and where applicable disable all legacy polyfills #7571
    • Added: Add confirmation when deleting repeater / block set #7627
    • Added: Add upload autoconfirm option #7511
    • Added: Adding status to the listing page filter #7577
    • Added: Enable the query listener and create pager instances for limited queries #7526
    • Added: For BC content methods - Add default parameter values #7555
    • Added: More improvements to New Storage Layer Compatibility #7291, #7654, #7657
    • Added: Port across relations get from old storage #7527
    • Added: Use senderMail in outgoing mail #7675
    • Change: add 'heading' to the list of title-like field names. #7647
    • Change: Use nesbot/carbon #7633
    • Change: Use stable Passwordlib #7632
    • Fixed: Add getUri for new storage #7668
    • Fixed: Allow Methods To work with array or ContentType #7599
    • Fixed: directives should always be cleared before re-parsing #7681
    • Fixed: Don't use getContent on non-existing legacy items. #7584
    • Fixed: Fix 'generate Lorem Ipsum' dummy content #7605
    • Fixed: Fix error when searching for empty string #7625
    • Fixed: Fix excerpts in new Storage #7604, #7624
    • Fixed: Fix issue with html fields #7619
    • Fixed: Fix New Content BC break (content->values) #7671
    • Fixed: Fix preview #7660, #7663
    • Fixed: Fix search results (Frontend, Omnisearch, Async) #7670
    • Fixed: Fix that allows default sorting to work when using singular slug #7525
    • Fixed: Handle ArrayAccess & array the same as 'taxonomy' key might not exist in either #7586
    • Fixed: Improving relation get set interface #7506
    • Fixed: Make getListingOrder() behave correctly on new Storage Layer. #7585
    • Fixed: Minor Query Handler tweaks #7524
    • Fixed: Two minor query parser bugs #7523
    • Fixed:Fix for default ordering (plus code quality updates) #7564
    • Updated: Update cocur/slugify to latest ^3.1.0 #7600
    • Updated: Update Yarn dependencies, CKeditor and Codemirror #7601
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.6.0-flat-structure.tar.gz(18.29 MB)
    bolt-v3.6.0-flat-structure.zip(23.50 MB)
    bolt-v3.6.0.tar.gz(18.30 MB)
    bolt-v3.6.0.zip(23.24 MB)
  • v3.6.0-beta.7(Oct 9, 2018)

  • v3.6.0-beta.6(Sep 14, 2018)

  • v3.6.0-beta.4(Sep 11, 2018)

  • v3.6.0-beta.5(Sep 12, 2018)

  • v3.6.0-beta.3(Aug 24, 2018)

  • v3.6.0-beta.2(Aug 20, 2018)

  • v3.6.0-beta.1(Aug 17, 2018)

  • 3.5.7(Aug 15, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.5/bolt-v3.5.7.tar.gz
    tar -xzf bolt-v3.5.7.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.5/installation/installation

    Released: 2018-08-15. Notable changes

    • Added: Ability to get 'news' through a proxy without authentication. #7593
    • Changed: Splitting up the "New Issue" template. #7591
    • Fixed: Cleanup sessions list on "Users" screen. Show 'displayname' consistently. #7583
    • Fixed: Ensure Firefox updates the CSRF value, even on a "soft refresh". #7588
    • Fixed: Ensure we have a CSRF login on session start and resume. #7603
    • Fixed: Finetuning the alt-texts in menus.
    • Updated: Update and standardise some translations. #7580
    Source code(tar.gz)
    Source code(zip)
    bolt-3.5.7-flat-structure.tar.gz(17.81 MB)
    bolt-3.5.7-flat-structure.zip(22.91 MB)
    bolt-3.5.7.tar.gz(17.81 MB)
    bolt-3.5.7.zip(22.65 MB)
  • v3.5.6(Aug 2, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.5/bolt-v3.5.6.tar.gz
    tar -xzf bolt-v3.5.6.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.5/installation/installation

    Released: 2018-08-02. Notable changes

    • Fixed: Fix for undefined property in FieldCollection::$collection. #7566
    • Fixed: Twig exception request santitisation handling. #7569
    • Fixed: Workaround around DBAL Sqlite schema diff bug. #7570
    • Security: [packaged version] Updated Symfony components updated to 2.8.44.
    • Tests: Set database:repair command call to non-interactive. #7565
    • Updated: Base 2018 updated to 2.0.8.
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.5.6-flat-structure.tar.gz(17.79 MB)
    bolt-v3.5.6-flat-structure.zip(22.90 MB)
    bolt-v3.5.6.tar.gz(17.79 MB)
    bolt-v3.5.6.zip(22.65 MB)
  • v3.5.5(Jul 14, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.5/bolt-v3.5.5.tar.gz
    tar -xzf bolt-v3.5.5.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.5/installation/installation

    Released: 2018-07-14. Notable changes

    • Changed: Require bolt/package-wrapper: ^4.0 || ^5.0 to handle doctrine/common split. #7562
    • Changed: Increasing input width in filter inputs. #7544 #7545
    • Fixed: Incorrect replace in excerpt #7541
    • Updated: Typo in German language file. #7557
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.5.5-flat-structure.tar.gz(17.66 MB)
    bolt-v3.5.5-flat-structure.zip(22.90 MB)
    bolt-v3.5.5.tar.gz(17.66 MB)
    bolt-v3.5.5.zip(22.64 MB)
  • v3.5.4(Jun 26, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.5/bolt-v3.5.4.tar.gz
    tar -xzf bolt-v3.5.4.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.5/installation/installation

    Released: 2018-05-26. Notable changes:

    • Changed: Show a message when attempting to save while CSRF token has expired. #7529
    • Fixed: Allow custom slug field label. #7502
    • Fixed: Field with same name as other one inside repeater overwrites config of the first one. Ensure select choices are built and accessed via multi-level field names. #7496 #7505
    • Fixed: Filter in Backend is lost when clicking first item in pager. #7536
    • Fixed: Handle fatal error when Block Groups and Sub-Fields have the same name. #7504
    • Fixed: Named repeaters are not saved even if empty. Add a placeholder form input to always trigger saving of Block Fields #7503
    • Fixed: Set preserve_keys in array_slice to keep numeric array key association #7531
    • Updated: Translating messages.ru.yml. #7533
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.5.4-flat-structure.tar.gz(17.66 MB)
    bolt-v3.5.4-flat-structure.zip(22.89 MB)
    bolt-v3.5.4.tar.gz(17.66 MB)
    bolt-v3.5.4.zip(22.64 MB)
  • v3.5.3(May 25, 2018)

    To do a 15-second install, use the following:

    curl -O https://bolt.cm/distribution/archive/3.5/bolt-v3.5.3.tar.gz
    tar -xzf bolt-v3.5.3.tar.gz --strip-components=1
    php app/nut init
    

    For detailed installation instructions and other ways to install, see the documentation: https://docs.bolt.cm/3.5/installation/installation

    Released: 2018-05-25. Notable changes:

    • Fixed: Fix setting listing order on frontend #7495
    • Fixed: PHP 7.2 'Must be array or Countable' exception, by removing dead code. #7494
    • Security: [packaged .tgz and .zip versions only] Symfony components updated to Symfony 2.8.41.
    Source code(tar.gz)
    Source code(zip)
    bolt-v3.5.3-flat-structure.tar.gz(17.65 MB)
    bolt-v3.5.3-flat-structure.zip(22.88 MB)
    bolt-v3.5.3.tar.gz(17.65 MB)
    bolt-v3.5.3.zip(22.62 MB)
Owner
Bolt
Bolt
A micro web application providing a REST API on top of any relational database, using Silex and Doctrine DBAL

Microrest is a Silex provider to setting up a REST API on top of a relational database, based on a YAML (RAML) configuration file.

marmelab 187 Nov 17, 2022
UserFrosting is a secure, modern user management system written in PHP and built on top of the Slim Microframework, Twig templating engine, and Eloquent ORM.

UserFrosting 4.6 Branch Version Build Coverage Style master hotfix develop https://www.userfrosting.com If you simply want to show that you like this

UserFrosting 1.6k Jan 1, 2023
Shoutit is a PHP powered shoutbox which uses mySQL to store shouts

This is a very basic PHP/MySQL application. built to prove my usuage of basic php + MySQL. It is very easy to use, has error checking, and very fast. Users can post shouts along with their names & comment.

Roman Hossain Shaon 10 Oct 10, 2022
Mibew Messenger - open-source live support application written in PHP and MySQL

Mibew Messenger is an open-source live support application written in PHP and MySQL. It enables one-on-one chat assistance in real-time directly from your website.

Mibew Messenger 443 Dec 13, 2022
DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location

DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location. DomainMOD also includes a Data Warehouse framework that allows you to import your web server data so that you can view, export, and report on your live data.

DomainMOD 349 Jan 8, 2023
🔐 Password Manager written in PHP with MySQL database.

Password Manager A very basic password manager. Tech stack: PHP MySQL Bootstrap Setup Download and install XAMPP. Clone this repository: git clone htt

Olivér 4 Jun 25, 2022
Koel is a simple web-based personal audio streaming service written in Vue and Laravel

Koel (also stylized as koel, with a lowercase k) is a simple web-based personal audio streaming service written in Vue on the client side and Laravel on the server side. Targeting web developers, Koel embraces some of the more modern web technologies – CSS grid, audio, and drag-and-drop API to name a few – to do its job.

Koel 14.3k Jan 4, 2023
A simple blog project based on a custom-created MVC framework using PHP & MySQL

A simple blog project based on a custom-created MVC framework using PHP & MySQL. That follows the Facade design pattern.

Samiul Arafah Dhrubo 2 May 28, 2022
BraincraftedBootstrapBundle integrates Bootstrap into Symfony2 by providing templates, Twig extensions, services and commands.

BraincraftedBootstrapBundle BraincraftedBootstrapBundle helps you integrate Bootstrap in your Symfony2 project. BootstrapBundle also supports the offi

Braincrafted 403 Aug 13, 2022
Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS

INTRODUCTION Flextype is an open-source Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a tradi

Flextype 524 Dec 30, 2022
Full symfony website application cms + app all in one

Symfony Web App All in one cms website + Inventori Invoice Accounting Application A new modern web app with content management system for build websit

Mesin Kasir 5 Sep 22, 2022
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework.

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

opensourcepos 2.7k Jan 2, 2023
Web based groupware server written in PHP

EGroupware Tools Usage runs unit-tests after each commit scrutinizer runs static analysis on our codebase manual testing with unusual browser versions

EGroupware 202 Dec 28, 2022
PHP, MySQL and JS based web chat application

About The Project Chat Application coded in PHP, CSS3 and JS. This is just a project to learn and improve understanding on certain topics. This is not

Neil 8 Apr 18, 2022
LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring system

LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.

LibreNMS Project 3k Dec 30, 2022
A MySQL-PHP based hotel reservation system

hotel-reservation-system A MySQL-PHP based hotel reservation system We have created a Hotel Reservation system, which can be used by the Hotel clients

null 3 Dec 8, 2021
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

October CMS 10.8k Dec 30, 2022
Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

null 1 Jan 6, 2022
Project of Simple Blog using: HTML, CSS, PHP, MYSQL, and BOOTSTRAP

Project-Stormwind Project of Simple Blog using: HTML, CSS, PHP, MYSQL, and BOOTSTRAP Functions : A personal blog about Blizzard and their work Main Th

Jan Andrzejewski 2 Aug 24, 2022