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

Overview

Flextype

Version License Total downloads Discord


INTRODUCTION

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.

With Flextype, you are in complete control. Design your data structure the way you want. Update and share your data with others and teams using version control. Flextype does not require MySQL database, because all the data are collected in a simple files. Perfect portability when changing your hosting provider. Just copy all the files from one server to another.

The underlying architecture of Flextype is built using well established and best-in-class technologies. This is to ensure that Flextype is simple to use and easy to extend. Some of these key technologies include:

  • Slim PHP: Framework for powerful web applications and APIs.
  • Atomastic: A set of decoupled and reusable PHP building blocks for kickass Web Applications.
  • The PHP League: The League of Extraordinary PHP Packages well tested and using modern coding standards.
  • Respect Validation: The most awesome validation engine ever created for PHP.
  • Thunderer Shortcode: Advanced shortcode (BBCode) parser and engine for PHP.
  • Markdown: Easy content creation using Markdown Syntax.
  • YAML: Human friendly data serialization format for simple configuration.

REQUIREMENTS

SYSTEM REQUIREMENTS

Make sure your server meets the following requirements.

  • Webserver (Apache with Mod Rewrite)
  • PHP 7.4.0 or higher

PHP EXTENSIONS

Flextype needs the following PHP extensions to be enabled:

Although it is optional, we strongly recommend enabling the following PHP extensions: APC, APCu, XCache, Memcached, or Redis for better performance.

QUICK INSTALLATION

  1. Download the latest version of Flextype.
  2. Unzip the contents to a new folder on your local computer, and upload to your webhost using the (S)FTP client of your choice. After you’ve done this, create directory /project and be sure to chmod the following directory to 755 (or 777), so it is readable and writable by Flextype.
  3. Create Rest API's tokens for your project using this webpage.

read the documentation

COMMUNITY

Flextype is open source, community driven project, and maintained by community!

Github

You may use GitHub Discussions to start discussion about core, plugin and themes development or If you want to report a bug, you can use the GitHub Issues.

Discord

Got a question about setting up or using Flextype? We'll do our best to help you out. Also here you may start discussions about core, plugin and themes development.

Twitter

Follow Flextype on Twitter to get real-time news regarding the development and all events we are attending.

SUPPORTING FLEXTYPE

Flextype is an open source project and community contributions are essential to its growing and success.

Contributing to the Flextype is easy and you can give as little or as much time as you want.

FINANCIAL SUPPORT

Flextype is an MIT-licensed open source project and completely free to use.

However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing.

You can support it's ongoing development by being a project backer or a sponsor:

PLATFORM CONTRIBUTIONS

Another excellent way to help out is by contributing your time or services.

TRANSLATION

We are on a mission to build high quality platform to develop fast, flexible, easier to manage websites with Flextype!

If you wish to participate in the translation of Flextype, please Join Flextype International Translator Team and start translating!

BUG REPORTING

We are using GitHub Issues to manage our public bugs. We keep a close eye on this so before filing a new issue, try to make sure the problem does not already exist.

PULL REQUESTS

We actively welcome your pull requests!

If you need help with Git or our workflow, please ask in our community chat. We want your contributions even if you're just learning Git. Our maintainers are happy to help!

DOCS

You may help us to create amazing knowledge base for Flextype. Fix spelling, add code examples, help organize, write new articles, and etc...

SPONSORS

Gold Sponsor

Silver Sponsor

Bronze Sponsor

LICENSE

The MIT License (MIT) Copyright (c) 2021 Sergey Romanenko

Comments
  • После обновления на Flextype 0.4.3  - Internal Server Error 500

    После обновления на Flextype 0.4.3 - Internal Server Error 500

    Развернул Flextype 0.4.3

      • Скопировал каталог home
      • Переименовал в test
      • При переходе http://адрес_сайта/test

    Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error. More information about this error may be available in the server error log.

    opened by FullZero5 9
  • Base URL without Rewrite Rules

    Base URL without Rewrite Rules

    Some people don't have access to their server configuration. What about a variable named baseurl which provides the root url for the installation of flextype? This would be really helpful.

    opened by Wulfheart 7
  • Entries - reduce the number of calls to the file system inside fetch methods.

    Entries - reduce the number of calls to the file system inside fetch methods.

    There is possible issue with concurrency requests per page. [need to research]

    fetch and fetchAll should be reviewed and should be reduced the number of calls to the file system, especially for fetchAll method. need to research. Possible solution is to store fetchAll result inside class property.

    priority: medium type: improvement 
    opened by Awilum 6
  • phpinfo (phpinfo.php) shows PHP information including values of HttpOnly cookies.

    phpinfo (phpinfo.php) shows PHP information including values of HttpOnly cookies.

    All 0.9.x versions (prior to 0.9.16), are affected. System Information Leak ( phpinfo() ) vulnerability in flextype 0.9.16 via the phpinfo() parameter to 1) flextype/vendor/phpfastcache/phpfastcache/docs/examples/phpinfo.php ,2) flextype/vendor/phpfastcache/phpfastcache/docs/examples/index.php

    it's allows remote attackers to obtain configuration information via a phpinfo action in a request to phpinfo.php、index.php, which calls the phpinfo function. image image image image

    opened by jhhua 5
  • How do I make links to pages?

    How do I make links to pages?

    I apologize for this stupid question, but I simply don't understand what I'm doing wrong. I believe I am following the documentation properly.

    I have the following pages:

    • /var/www/html/site/pages/home/page.md
    • /var/www/html/site/pages/cv/page.md

    all files and directories are owned by www-data. cache is off.

    ../home/page.md contains [link](/cv), but following the link gives a 404 error.

    Running nginx on debian stable.

    opened by mrjovanovic 5
  • Move to PhpFastCache

    Move to PhpFastCache

    I am researching question to use PhpFastCache (by @Geolim4) instead of Doctrine Cache. Seems that Doctrine Cache is lacking with updates and looks legacy. No updates, PR and issues really old and seems not to be resolved at all.

    PhpFastCache is much more modern and it is keep updating! https://github.com/PHPSocialNetwork/phpfastcache

    priority: high type: improvement 
    opened by Awilum 4
  • Assets are referenced with basic auth credentials – getting blocked by chrome/chromium

    Assets are referenced with basic auth credentials – getting blocked by chrome/chromium

    Describe the bug Flextypes assets are referenced with an url that contains possible basic auth credentials. These requests are blocked by chrome and chromium, but imo that is a security problem, too.

    To Reproduce Steps to reproduce the behavior:

    1. Install fresh flextype
    2. Enable basic auth (either .htaccess or vhost)
    3. Open site in chrome or chromium
    4. See that neither the css nor the js assets are loaded

    Expected behavior The URLs to the assets shouldn't and imo mustn't contain any credentials. I wasn't able to track down the responsible code.

    Screenshots Screenshot 1 Screenshot 2

    Desktop (please complete the following information):

    • OS: Windows/Linux
    • Browser: Chrome/Chromium, all current versions
    priority: high type: bug 
    opened by misterunknown 4
  • Flextype Core: Add ability to work with different types of content

    Flextype Core: Add ability to work with different types of content

    Add ability to work with different types of content, for e.g. YAML, MD, CSV and etc... inside flextype core or as a plugin. Need to investigate this question and choice best solution to implement this.

    priority: high type: feature 
    opened by Awilum 4
  • Flextype website: wrong dates on changelog (0.9.16 & 0.9.15)

    Flextype website: wrong dates on changelog (0.9.16 & 0.9.15)

    On the website. the changelog shows incorrect dates for 0.9.16 & 0.9.15

    It shows them as having been updated in 2020 (instead of 2021).

    Since earlier changes are "below the fold" this may make newcomers think flextype is not being actively updated. I was almost discouraged myself -- and then (after scrolling down) a slight bit confused that dates seemed so out of order.

    opened by FBachofner 3
  • Old Website Doc

    Old Website Doc

    I noticed that with the new update the old documentation is no longer available. The updated site lacks a lot of the old docs.

    I know you are working hard in flextype and appreciate the work, but is there a way to access the old docs?

    opened by agl-developer 3
  • Template creating error: Slim Application Error

    Template creating error: Slim Application Error

    Hello, when Im trying to create a new template Im getting this error:

    Slim Application Error A website error has occurred. Sorry for the temporary inconvenience.

    Updated: When Im go back its works

    opened by emmarvpol 3
  • Pull Request Preview Environments for increasing maintainer productivity

    Pull Request Preview Environments for increasing maintainer productivity

    I would like to make life easier for Flextype maintainers by implementing Uffizzi preview environments. Disclaimer: I work on Uffizzi.

    Uffizzi is a Open Source full stack previews engine and our platform is available completely free for Flextype (and all open source projects). This will provide maintainers with preview environments of their PRs in the cloud, allowing them iterate faster and reduce time to merge.

    Uffizzi is purpose-built for the task of previewing PRs and it integrates with your workflow to deploy preview environments in the background without any manual steps for maintainers or contributors.

    TODO:

    • [ ] Intial PoC
    opened by waveywaves 0
  • Add ability to import and export entries

    Add ability to import and export entries

    We should have ability to import and export entries from files.

    New Entries methods:

    /**
     * Import.
     * 
     * @param string $file File with data to import.
     */
    public function import(string $file): bool
    
    /**
     * Export.
     * 
     * @param string $id Entries ID to fetch data and export to file.
     * @param array $options Export options.
     */
    public function export(string $id, array $options = []): bool
    

    New console commands:

    entries:export
    entries:import
    

    New settings:

    ...
    entries:
      ...
      export: 
        path: "_export"
        filename: ""
        serializer: "json"
      ...
    ...
    

    Updated settings (added default extension):

    ...
    serializers:
      json: 
        extension: "json"
      json5: 
        extension: "yaml"
      yaml: 
        extension: "json5"
      neon: 
        extension: "neon"
      frontmatter: 
        extension: "md"
      phparray: 
        extension: "php"
    ...
    
    priority: high type: feature 
    opened by Awilum 0
  • Need help to start : admin 404 error

    Need help to start : admin 404 error

    Hello, I just installed flextype and I have a 404 error for admin and home.

    My configuration : docker php:8.0-apache

    The mod_rewrite module is installed and in the apache 000-default.conf configuration file, the documentroot is set to /app/flextype

    <VirtualHost *:80>

    DocumentRoot "/app/flextype"

    <Directory /app/flextype> Options Indexes FollowSymLinks MultiViews allow from all Require all granted

    my url http://mylocalserver:8091/ does display the flextype home page, but the admin link points to http://mylocalserver:8091/admin which does not exist.

    http://mylocalserver:8091/project displays the contents of the ./project folder

    image

    In the .htaccess file Rewrite is set to / and I didn't modify the ./src/flextype/settings.yaml file

    Should I change anything else? I couldn't find (or understand) what to do in the documentation.

    Thanks for your help

    opened by SadarSSI 5
  • If you disable the jQuery plugin, the Admin Panel plugin becomes inoperable.

    If you disable the jQuery plugin, the Admin Panel plugin becomes inoperable.

    If you disable the jQuery plugin, the Admin Panel plugin becomes inoperable.

    • Flextype version 0.9.16

    Additional context The behavior is understandable, but it is better to disable jQuery plugin deactivate action when the Admin Panel is installed

    opened by hermansochi 0
  • Trying to get in touch regarding a security issue

    Trying to get in touch regarding a security issue

    Hey there!

    I belong to an open source security research community, and a member (@nareshsarnala) has found an issue, but doesn’t know the best way to disclose it.

    If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

    Thank you for your consideration, and I look forward to hearing from you!

    (cc @huntr-helper)

    opened by zidingz 0
Releases(v1.0.0-alpha.3)
  • v1.0.0-alpha.3(Nov 19, 2022)

  • v1.0.0-alpha.2(Sep 13, 2022)

    Features

    • rest-api Added new Query API 587.

    • entries Added new private fields functionality for entries 585.

      • Private field starts with _ and evailable only in the current entry.

      entry.md

      ---
      title: Product item
      _message: Message...
      _vars:
        currency: "USD"
        vat: "@type[int] [[ strings().random(2, 1234567890) ]]"
      price: "[[ 100 + _vars.vat ]]"
      price_with_currency: "[[ price ~ ' ' ~ _vars.currency ]]"
      ---
      
      [[ title ]] // Product item
      
      [[ _message ]] // Message...
      

      response

      {
        "title": "Product item",
        "price": "120",
        "price_with_currency": "120 USD"
        "content": "Product item \n Message..."
      }
      
    • vars Added new Vars service to store global variables.

    • directives Added ability to disable expressions using !expressions.

    • directives Added ability to disable shortcodes using !shortcodes.

    • directives Added ability to disable markdown using !markdown.

    • directives Added ability to disable textile using !textile.

    • directives Added ability to disable php using !php.

    • directives Added ability to disable types using !types.

    • expressions Expressions language as a part of Parsers 586.

      • From now Expressions are part of Parsers, configurable and available globally.
      • Ability to configure opening/closing tags for variables, blocks and comments.
        opening_variable_tag: "[["
        closing_variable_tag: "]]"
        opening_block_tag: "[%"
        closing_block_tag: "%]"
        opening_comment_tag: "[#"
        closing_comment_tag: "#]"
      
      • Ability to write multiline expressions
        [[ 
          field1 ~
          field2 ~
          field2
        ]]
      
      • Ability to store parsed expressions in the cache.
      • Ability to quickly access current entries fields.
        [[ field_name ]]
      
    • expressions Added new expression function when.

    • expressions Added new expression function unless.

    • expressions Added new expression function time.

    • expressions Added new expression function strtotime.

    • expressions Added new expression function round.

    • expressions Added new expression function abs.

    • expressions Added support for Vars service. 583

      • New function vars() returns instance of Vars service.
      • New function var() for quick access to variables stored in Vars service.
    • shortcodes Added support for Vars service. 583

      • New shortcode (var) to get, set, unset and delete variables from Vars service.
    • core Added new package Guzzle.

    • core Added a new fetch helper, expression function and shortcode with the ability to fetch data from different sources, entries, files, and URLs. 581

    Bug Fixes

    • expressions Fixed strings expression function.

    • expressions Fixed Entries Expressions methods.

    • helpers Fixed issue in collection helper with limit and offset double check.

    BREAKING CHANGES

    • expressions Configuration for expressions moved from entries to parsers section.

    • expressions Use parsers()->expressions() instead of expressions() to access methods.

    • entries Local vars are replaced with global variables and local private fields.

    • shortcodes Use registerShortcodes() instead of initShortcodes() to register custom shortcodes.

    • directives Use registerDirectives() instead of initDirectives() to register custom directives.

    • exressions Use registerExpressions() instead of initExpressions() to register custom expressions.

    Source code(tar.gz)
    Source code(zip)
    flextype-1.0.0-alpha.2.zip(5.15 MB)
  • v1.0.0-alpha.1(Jul 12, 2022)

    Features

    • core Minimum PHP version required PHP 8.1.0.

    • core Core application updated from Slim 3 to Slim 4!

      See: Upgrade Guide

    • core New PHP-DI added instead of Pimple DI.

      See: Usage Guide

    • console Added Extendable Flextype CLI Application.

      Flextype CLI Application 1.0.0-alpha.1
      
      Usage:
        command [options] [arguments]
      
      Options:
        -h, --help            Display help for the given command. When no command is given display help for the list command
        -q, --quiet           Do not output any message
        -V, --version         Display this application version
            --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
        -n, --no-interaction  Do not ask any interactive question
        -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
      
      Available commands:
        about                       Get information about Flextype.
        completion                  Dump the shell completion script
        help                        Display help for a command
        list                        List commands
      cache
        cache:clear                 Clear cache.
        cache:clear-config          Clear cache config.
        cache:clear-data            Clear cache data.
        cache:clear-routes          Clear cache routes.
        cache:delete                Delete item.
        cache:delete-multiple       Delete mutiple items.
        cache:get                   Get item.
        cache:get-multiple          Get multiple items.
        cache:has                   Check whether cache item exists.
        cache:set                   Set item.
        cache:set-multiple          Set multiple items.
      entries
        entries:copy                Copy entry.
        entries:create              Create entry.
        entries:delete              Delete entry.
        entries:fetch               Fetch entry.
        entries:has                 Check whether entry exists.
        entries:move                Move entry.
        entries:update              Update entry.
      tokens
        tokens:create               Create a new unique token.
        tokens:delete               Delete token entry.
        tokens:fetch                Fetch token entry.
        tokens:generate             Generate token.
        tokens:generate-hash        Generate token hash.
        tokens:has                  Check whether token entry exists.
        tokens:update               Update tokens entry.
        tokens:verify-hash          Verify token hash.
      
    • core Added Thermage library for better Flextype CLI Application styling.

    • core Added ability to execute specific project related code.

      • before-plugins to bootstrap file before plugins intialization.
      • after-plugins to bootstrap file after plugins intialization.
    • core Added new core constants: FLEXTYPE_PROJECT_NAME, FLEXTYPE_PATH_PROJECT, FLEXTYPE_PATH_TMP, FLEXTYPE_START_TIME.

    • core Added ability to run Flextype in silent mode by disabling app and cli.

    • core Added New Glowy PHP Packages View, Macroable, Strings, Arrays, Csrf, Filesystem, Registry, Session.

    • core Added built-in I18n module.

    • core Added ability to override default constants

    • entries Added new functionality that allows implementing Virtual Entries by overriding default entries CRUD methods with the help of events.

    • entries Added ability to create completely customisable high-level collections for entries with their fields and various formats.

    • entries Added ability to set custom events for each entries collections.

    • entries Added ability to create and use entries fields directives.

      See: Documentation

    • entries Added ability to create custom entries macros.

      Built-in macros: entries, php, registry.

    • entries Added new method registry to get entries registry.

    • entries Added new method options to get entries options.

    • entries Added new method setOptions to set entries options.

    • entries Added new method setRegistry to set entries registry.

    • entries Added ability to override logic for built-in custom fields.

      Example: If you want to have your custom logic for processing field uuid just update flextype project settings.

      from:

      ...
      entries:
        default:
          ...
          fields:
            ...
            uuid:
              enabled: true
              path: "src/flextype/core/Entries/Fields/Default/UuidField.php"
            ...
          ...
        ...
      ...
      

      to:

      ...
      entries:
        default:
          ...
          fields:
            ...
            uuid:
              enabled: true
              path: "project/plugins/your-custom-plugin/Entries/Fields/Default/UuidField.php"
            ...
          ...
        ...
      ...
      
    • directives Added new directive @type to set field type.

    • directives Added new directive @markdown to parse markdown text inside current field.

    • directives Added new directive @shortcodes to parse shortcodes text inside current field.

    • directives Added new directive @textile to parse textile text inside current field.

    • directives Added new directive @php to execute php code text inside current field.

    • directives Added new directive [[ ]] to eval expression.

    • endpoints All Rest API Endpoints codebase was rewritten from scratch.

    • endpoints Added new Rest API Endpoint POST /api/v1/cache/clear to clear cache.

    • endpoints Added new Rest API Endpoint POST /api/v1/tokens/generate to generate token hash.

    • endpoints Added new Rest API Endpoint POST /api/v1/tokens/verify-hash to verify token hash.

    • endpoints Added new Rest API Endpoint POST /api/v1/tokens to create token entry.

    • endpoints Added new Rest API Endpoint PATCH /api/v1/tokens to update token entry.

    • endpoints Added new Rest API Endpoint DELETE /api/v1/tokens to delete token entry.

    • endpoints Added new Rest API Endpoint GET /api/v1/tokens to fetch token entry.

    • csrf Added Glowy CSRF protection for Cross Site Request Forgery protection by comparing provided token with session token to ensure request validity.

    • frontmatter Added ability to define custom frontmatter header parsers for entries. Example: instead of first --- you may set serializer ---json, ---json5 ---yaml or ---neon.

    • serializers Added new serializer Json5.

      See: Documentation

    • serializers Added new serializer Neon.

      See: Documentation

    • serializers Added ability to set global settings for all built-in serializers.

      src/flextype/settings.yaml

      serializers:
        json: 
          decode:
            cache: 
              enabled: true
              string: ""
            assoc: true
            depth: 512
            flags: 0
          encode: 
            options: 0
            depth: 512
        json5: 
          decode:
            cache: 
              enabled: true
              string: ""
            assoc: true
            depth: 512
            flags: 0
          encode: 
            options: 0
            depth: 512
        yaml:
          decode:
            cache: 
              enabled: true
              string: ""
            native: true
            flags: 0
          encode:    
            inline: 10
            indent: 2
            flags: 0
        frontmatter:
          decode:
            cache: 
              enabled: true
              string: ""
            cache_id_string: ""
            header:
              serializer: yaml
              allowed: ['yaml', 'json', 'json5', 'neon']
          encode:    
            header:
              serializer: yaml
              allowed: ['yaml', 'json', 'json5', 'neon']
        neon:
          decode:
            cache: 
              enabled: true
              string: ""
          encode:
            blockMode: false
            indentation: "\t"
        phparray:
          decode:
            cache: 
              enabled: true
              string: ""
          encode:
            wrap: true
      
    • serializers Added ability to set specific header serializer for Frontmatter serializer (default is YAML).

      src/flextype/settings.yaml

      frontmatter:
        decode:
          cache: 
            enabled: true
            string: ""
          cache_id_string: ""
          header:
            serializer: yaml
            allowed: ['yaml', 'json', 'json5', 'neon']
        encode:    
          header:
            serializer: yaml
            allowed: ['yaml', 'json', 'json5', 'neon']
      
    • parsers Markdown parser Commonmark updated to v2

    • parsers Added new Textile parser.

    • parsers Added ability to set global settings for all parsers.

      src/flextype/settings.yaml

      parsers:
        markdown:
          cache: 
            enabled: true
            string: ""
          commonmark:
            renderer:
              block_separator: "\n"
              inner_separator: "\n"
              soft_break: "\n"
            commonmark:
              enable_em: true
              enable_strong: true
              use_asterisk: true
              use_underscore: true
              unordered_list_markers: ['-', '*', '+']
            html_input: 'allow'
            allow_unsafe_links: false
            max_nesting_level: 9223372036854775807
            slug_normalizer:
              max_length: 255
        textile:
          cache: 
            enabled: true
            string: ""
          restricted: false
          document_type: 'xhtml'
          document_root_directory: ''
          lite: false
          images: true
          link_relation_ship: ''
          raw_blocks: false
          block_tags: true
          line_wrap: true
          image_prefix: ''
          link_prefix: ''
          symbol: []
          dimensionless_images: true
        shortcodes:
          cache: 
            enabled: true
            string: ""
          cache_id_string: ""
          opening_tag: "("
          closing_tag: ")"
          closing_tag_marker: "/"
          parameter_value_separator: ":"
          parameter_value_delimiter: "'"
          shortcodes:
            entries:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/EntriesShortcode.php"
              fetch:
                enabled: true
            php:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/PhpShortcode.php"
            raw:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/RawShortcode.php"
            textile:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/TextileShortcode.php"
            markdown:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/MarkdownShortcode.php"
            registry:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/RegistryShortcode.php"
              get:
                enabled: true
            url:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/UrlShortcode.php"
            strings:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/StringsShortcode.php"
            filesystem:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/FilesystemShortcode.php"
              get:
                enabled: true
            i18n:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/I18nShortcode.php"
            if:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/IfShortcode.php"
            when:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/WhenShortcode.php"
            unless:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/UnlessShortcode.php"
            uuid:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/UuidShortcode.php"
            const:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/ConstShortcode.php"
            var:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/VarShortcode.php"
            field:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/FieldShortcode.php"  
            calc:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/CalcShortcode.php"  
            eval:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/EvalShortcode.php" 
            type:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/TypeShortcode.php" 
      
    • parsers Added ability to override logic for built-in shortcodes.

      Example: If you want to have your custom logic for processing shortcode url just update flextype settings.

      from:

      ...
      parsers:
        shortcodes:
          shortcodes:
            ...
            url:
              enabled: true
              path: "src/flextype/core/Parsers/Shortcodes/UrlShortcode.php"
            ...
          ...
        ...
      ...
      

      to:

      ...
      parsers:
        shortcodes:
          shortcodes:
            ...
            url:
              enabled: true
              path: "project/plugins/your-custom-plugin/Parsers/Shortcodes/UrlShortcode.php"
            ...
          ...
        ...
      ...
      
    • routes Added ability to set custom projects routes in /projects/routes/routes.php.

    • shortcodes Added new shortcode (entries) to fetch entry (or entries collection) or specific field.

    • shortcodes Added new shortcode (registry) to fetch data from registry.

    • shortcodes Added new shortcode (filesystem) to work with filesystem.

    • shortcodes Added new shortcode (uuid) to generate uuid.

    • shortcodes Added new shortcode (strings) for strings manipulation.

    • shortcodes Added new shortcode (textile) to parse textile text.

    • shortcodes Added new shortcode (php) to execute php code.

    • shortcodes Added new shortcode (eval) to eval expression.

    • shortcodes Added new shortcode (calc) to calculate values.

    • shortcodes Added new shortcode (type) to set field type.

    • shortcodes Added new shortcode (markdown) to parse markdown text.

    • shortcodes Added new shortcode (getProjectUrl) to get project url.

    • shortcodes Added new shortcode (getBaseUrl) to get base url.

    • shortcodes Added new shortcode (getBasePath) to get base path.

    • shortcodes Added new shortcode (getAbsoluteUrl) to get absolute url.

    • shortcodes Added new shortcode (url) to get url.

    • shortcodes Added new shortcode (urlFor) to get url for route.

    • shortcodes Added new shortcode (getUriString) to get uri string.

    • shortcodes Added new shortcode (filesystem) to do filesytem manipulations.

    • shortcodes Added new shortcode (date) to get date.

    • shortcodes Added new shortcode (tr) to returns translation of a string.

    • shortcodes Added new shortcode (if) to use logical if conditions.

    • shortcodes Added new shortcode (when) to use logical positive if conditions.

    • shortcodes Added new shortcode (unless) to use logical negative if conditions.

    • shortcodes Added new shortcode (var) to get and set entry variables values.

    • shortcodes Added new shortcode (field) to get entry fields values.

    • shortcodes Added new shortcode (const) to get defined costants.

    • shortcodes Added new shortcode (raw) to ignore shortcodes processing.

    • expressions Added a new configurable and extendable expressions engine with a collection of predefined expressions.

    • expressions Added new expression function actions to get actions service.

    • expressions Added new expression function collection to create a new arrayable collection object from the given elements.

    • expressions Added new expression function collectionFromJson to create a new arrayable collection object from the given JSON string.

    • expressions Added new expression function collectionFromString to create a new arrayable collection object from the given string.

    • expressions Added new expression function collectionWithRange to create a new arrayable object with a range of elements.

    • expressions Added new expression function collectionFromQueryString to create a new arrayable object from the given query string.

    • expressions Added new expression function filterCollection to filter collection.

    • expressions Added new expression function const to get defined constants.

    • expressions Added new expression function var to get current entry var.

    • expressions Added new expression function field to get current entry field.

    • expressions Added new expression function csrf to get csrf hidden input.

    • expressions Added new expression function entries to get entries service.

    • expressions Added new expression function filesystem to get filesystem instance.

    • expressions Added new expression function strings to get strings instance.

    • expressions Added new expression function tr to return translation of a string. If no translation exists, the original string will be returned.

    • expressions Added new expression function __ to return translation of a string. If no translation exists, the original string will be returned.

    • expressions Added new expression function max to return the highest value in an array, or the highest value of several specified values.

    • expressions Added new expression function min to return the lowest value in an array, or the lowest value of several specified values.

    • expressions Added new expression function ceil to round a number up to the nearest integer.

    • expressions Added new expression function floor to round a number down to the nearest integer.

    • expressions Added new expression function parsers to get parsers service.

    • expressions Added new expression function serializers to get serializers service.

    • expressions Added new expression function registry to get registry service.

    • expressions Added new expression function slugify to get slugify service.

    • expressions Added new expression function date to get date.

    • expressions Added new expression function url to get the url.

    • expressions Added new expression function urlFor to get the url for a named route.

    • expressions Added new expression function fullUrlFor to get the full url for a named route.

    • expressions Added new expression function isCurrentUrl to determine is current url equal to route name.

    • expressions Added new expression function getCurrentUrl to get current path on given Uri.

    • expressions Added new expression function getBasePath to get the base path.

    • expressions Added new expression function getBaseUrl to get the base url.

    • expressions Added new expression function getAbsoluteUrl to get the absolute url.

    • expressions Added new expression function getProjectUrl to get the project url.

    • expressions Added new expression function getUriString to get the uri string.

    • expressions Added new expression function redirect to create redirect.

    • cache Added new cache driver Phparray to store cache data in raw php arrays files.

    • cache Added router cache.

    • cache Added ability to set custom cache ID string for entries, parsers and serializers.

    • tokens Added new Tokens API.

    • helpers All core helpers are located in the src/flextype/helpers/.

    • helpers Added helper function app to get Flextype Application instance.

    • helpers Added helper function container to get Flextype Application Container instance.

    • helpers Added helper function emitter to get Flextype Emitter Service.

    • helpers Added helper function cache to get Flextype Cache Service.

    • helpers Added helper function entries to get Flextype Entries Service.

    • helpers Added helper function parsers to get Flextype Parsers Service.

    • helpers Added helper function serializers to get Flextype Serializers Service.

    • helpers Added helper function logger to get Flextype Logger Service.

    • helpers Added helper function session to get Flextype Session Service.

    • helpers Added helper function csrf to get Flextype CSRF Service.

    • helpers Added helper function plugins to get Flextype Plugins Service.

    • helpers Added helper function console to get Flextype Console Service.

    • helpers Added helper function imageFile to create a new image instance for image file.

    • helpers Added helper function imageCanvas to create a new image canvas instance.

    • helpers Added helper function generateToken to generate unique token.

    • helpers Added helper function generateTokenHash to generate unique token hash.

    • helpers Added helper function verifyTokenHash to validate token hash.

    • helpers Added helper function url to get url.

    • helpers Added helper function urlFor to get url for a named route.

    • helpers Added helper function fullUrlFor to get full url for a named route.

    • helpers Added helper function isCurrentUrl to determine is current url equal to route name.

    • helpers Added helper function getCurrentUrl to get current path on given Uri.

    • helpers Added helper function getBasePath to get base path.

    • helpers Added helper function setBasePath to set base path.

    • helpers Added helper function redirect to create redirect.

    • helpers Added helper function upload to upload files and process uloaded images.

    • uploder Added Configurable Sirius Uploader for file upload.

      # Upload
      upload:
      
        # Uploads directory
        directory: '/uploads'
      
        # Overwrite existing files.
        overwrite: true
      
        # Auto-confirm uploads.
        autoconfirm: false
      
        # Prefixing uploads.
        prefix: ''
      
        # Validation options
        validation:
      
          # Allowed file extensions.
          allowed_file_extensions: ['gif', 'jpg', 'jpeg', 'png', 'ico', 'webm', 'svg']
      
          # Maximum file size.
          max_file_size: '24M'
      
          # Image validation options
          image:
      
            # Image maxiumum and minimum width
            width:
              max: 4920
              min: 100
      
            # Image maxiumum and minimum height
            height: 
              max: 3264
              min: 100
      
            # Image ratio
            #ratio:
            #  The option can be a number (eg: 1.3) or a ratio-like string (eg: 4:3, 16:9).
            #  size: 1.3
      
            #  The option error_margin specifies how much the image is allowed to 
            #  deviate from the target ratio. Default value is 0.
            #  error_margin: 0
      
        # Process uploaded files
        process:
      
          # Images process settings
          image:
      
            # Image quality
            quality: 70
      
    • macros All core macros are located in the src/flextype/macros/.

    • macros Added onlyFromCollection and exceptFromCollection macros for Arrays (#553)

    • actions Added new Actions API (#549)

      Usage

      Example 1
      // Set new action entries.create
      actions()->set('entries.create', function($id, $data) {
        return entries()->create($id, $data);
      });
      
      // Get action entries.create
      actions()->get('entries.create')('hello-world', []);
      
      Example 2
      // Set new action entries.update
      actions()->set('entries.update', function($id, $data) {
        if (entries()->update($id, $data)) {
          logger()->info("Content {$id} successfully updated");
          cache()->delete($id);
        } else {
          logger()->error("Content {$id} was not updated");
        }
      });
      
      // Get action entries.update
      actions()->get('entries.update')('hello-world', []);
      
      Example 3
      // Set new action entries.create
      actions()->set('entries.create', function($id, $data) {
        if(registry()->get('database') == 'MySQL') {
          // ... create new entry in the MySQL database.
        } else {
          return entries()->create($id, $data);
        }
      });
      
      // Get action entries.create
      actions()->get('entries.create')('blog/post-1', []);
      actions()->get('entries.create')('blog/post-2', []);
      actions()->get('entries.create')('blog/post-3', []);
      

      The Flextype Actions API provides new capabilities to extend the Flextype core by registering and reusing useful code snippets from global actions namespace.

    Bug Fixes

    • parsers Fixed issue with double cashing.

    • htaccess Security fixes for .htaccess

    • entries Fixed issue when entries collection fetch returns empty result.

    • plugins Fixed Plugins API translation loading process.

    • plugins Fixed Plugins API initialization (#551)

    • plugins Fixed Plugins API dependency initialization.

    • plugins Fixed Plugins API issue with non valid plugins (#551)

    • plugins Fixed Plugins API loader issue with disabled plugins.

    BREAKING CHANGES

    • media Media and Glide functionality removed from the flextype core due to security and perfomance reasons. Recomended to use imagekit or imgix instead.

    • core Use new constant FLEXTYPE_PATH_PROJECT instead of PATH['project'] and FLEXTYPE_PATH_TMP instead of PATH['tmp'].

    • shortcodes New default shortcodes syntax and signatures changes for all shortocodes.

        opening_tag: "("
        closing_tag: ")"
        closing_tag_marker: "/"
        parameter_value_separator: ":"
        parameter_value_delimiter: '"'
      
    • helpers Use new helpers functions to access Flextype Services.

      • use entries() instead of flextype('entries')
      • use session() instead of flextype('session')
      • use cache() instead of flextype('cache')
      • use app() instead of flextype()
      • use container() instead of flextype('container_name_here')
      • use parsers() instead of flextype('parsers')
      • use serializers() instead of flextype('serializers')
      • use plugins() instead of flextype('plugins')
      • use emitter() instead of flextype('emitter')
      • use logger() instead of flextype('logger')
      • use registry() instead of flextype('registry')
    • helpers Use helper function app to access Flextype Application instance instead of old helper function flextype().

    • helpers Use helper function container to access Flextype Application container instead of old helper function flextype() with container name argument.

      • use container()->get('entries') instead of flextype('entries')
      • use container()->set('entries', new Entries()) instead of flextype()['entries'] = new Entries()
    • helpers Use helper function filterCollection instead of old filter.

    • tokens Project tokens moved from project/tokens to project/entries/tokens.

    • entries Changes for etnries memory storage.

      • use entries()->registry()->get() instead of flextype('entries')->storage()->get()
      • use entries()->registry()->set() instead of flextype('entries')->storage()->set()
      • use entries()->registry()->has() instead of flextype('entries')->storage()->has()
      • use entries()->registry()->delete() instead of flextype('entries')->storage()->delete()

      note: all method from Glowy PHP Arrays are available for Arrays Storage Object manipulations docs: https://github.com/glowyphp/arrays

    Refactoring

    • core General code refactoring and improvements.

    • tests All unit tests were rewritten.

    Source code(tar.gz)
    Source code(zip)
    flextype-v1.0.0-alpha.1.zip(11.85 MB)
  • v0.9.16(Jan 14, 2021)

    Features

    • parsers add commonmark instead of parsedown (#540)

    • shortcodes add new shortcode - media_files_fetch

      example:

      [media_files_fetch id="entries/home/foo.txt" field="title" default="Bar"]
      

    Bug Fixes

    • bootstrap fix include path for dependencies.

    Refactoring

    • core general code refactoring and improvements.

    Update from Flextype 0.9.15 to Flextype 0.9.16

    1. Backup your Site First!
    2. Download flextype-0.9.16.zip
    3. Unzip the contents to a new folder on your local computer.
    4. Remove on your server this folders and files:
      src/
      vendor/
      var/
      index.php
      
    5. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    6. Update all your plugins!
    7. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.16.zip(2.67 MB)
    flextype-cms-0.9.16.zip(10.93 MB)
  • v0.9.15(Jan 3, 2021)

    Features

    • media add method has() for Media Folders (#534)
    • entries simplify functionality to work with online entries storage. (#536)
    • parsers move markdown and shortcode settings under parsers setting. (#539)

    Bug Fixes

    • entries fix issue with individual entries cache field (#537)
    • plugins fix issue with empty manifest and settings yaml files (#538)

    BREAKING CHANGES

    • entries according to this ticket (#536) we have several changes for entries storage.

      • use flextype('entries')->storage()->get() instead of flextype('entries')->getStorage()
      • use flextype('entries')->storage()->set() instead of flextype('entries')->setStorage()
      • use flextype('entries')->storage()->has() instead of flextype('entries')->hasStorage()
      • use flextype('entries')->storage()->delete() instead of flextype('entries')->deleteStorage()

      note: all method from Atomastic Arrays are available for Arrays Storage Object manipulations docs: https://github.com/atomastic/arrays

    Update from Flextype 0.9.14 to Flextype 0.9.15

    1. Backup your Site First!
    2. Download flextype-0.9.15.zip
    3. Unzip the contents to a new folder on your local computer.
    4. Remove on your server this folders and files:
      src/
      vendor/
      var/
      index.php
      
    5. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    6. Update all your plugins!
    7. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.15.zip(2.43 MB)
    flextype-cms-0.9.15.zip(7.02 MB)
  • v0.9.14(Dec 30, 2020)

    Features

    • core Moving to PHP 7.4.0 (#524)

    • plugins Set default plugin priority 100 and SORT them ascending (#523)

    Bug Fixes

    • core fix issue with Rest API endpoints detection. (#522)

    • entries fix issue with empty variable $data in fetch() method. (#531)

    • entries fix issue with deleteStorage() method return data.

    Refactoring

    • core general code refactoring and improvements.

    Update from Flextype 0.9.13 to Flextype 0.9.14

    1. Backup your Site First!
    2. Download flextype-0.9.14.zip
    3. Unzip the contents to a new folder on your local computer.
    4. Remove on your server this folders and files:
      src/
      vendor/
      var/
      index.php
      
    5. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    6. Update all your plugins!
    7. Read updated PLUGINS BREAKING CHANGES section! - Site Plugin and Twig Plugin has breaking changes
    8. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.14.zip(2.43 MB)
    flextype-cms-0.9.14.zip(5.98 MB)
  • v0.9.13(Dec 20, 2020)

    Features

    • media-files we will use fetch() method as entry point to execute different methods with fetch prefix. (#508)

      /**
       * Fetch.
       *
       * @param string $id      The path to file.
       * @param array  $options Options array.
       *
       * @access public
       *
       * @return self Returns instance of The Arrays class.
       */
      public function fetch(string $id, array $options = []): Arrays
      

      Media Files API is macroable and we will able to add any custom fetch methods for receiving data from different sources.

      flextype('media')->files()::macro('fetchFromOtherStorage', function(string $id, array $options) {
        // fetch data from Other Storage using $id and $options
      });
      
      $data = flextype('media')->files()-> fetchFromOtherStorage($id, $options);
      
    • media-folders we will use fetch() method as entry point to execute different methods with fetch prefix. (#509)

      /**
       * Fetch.
       *
       * @param string $id      The path to folder.
       * @param array  $options Options array.
       *
       * @access public
       *
       * @return self Returns instance of The Arrays class.
       */
      public function fetch(string $id, array $options = []): Arrays
      

      Media Folders API is macroable and we will able to add any custom fetch methods for receiving data from different sources.

      flextype('media')->folders()::macro('fetchFromOtherStorage', function(string $id, array $options) {
        // fetch data from Other Storage using $id and $options
      });
      
      $data = flextype('media')->folders()-> fetchFromOtherStorage($id, $options);
      
    • entries we will use fetch() method as entry point to execute different methods with fetch prefix. (#495)

      /**
      * Fetch.
      *
      * @param string $id      Unique identifier of the entry.
      * @param array  $options Options array.
      *
      * @access public
      *
      * @return mixed
      */
      public function fetch(string $id, array $options = []): Arrays
      

      Entries API is macroable and we will able to add any custom fetch methods for receiving data from different sources.

      flextype('entries')::macro('fetchXML', function(string $id, array $options) {
      // fetch data from XML using $id and $options
      });
      
      $data = flextype('entries')->fetchXML($id, $options);
      
    • images we will use media/ folder instead of uploads/entries/ (#516)

    • serializers standardise serializers container names with macroable ability. (#518)

      New methods to access Serializers:

      flextype('serializers')->yaml()
      flextype('serializers')->json()
      flextype('serializers')->frontmatter()
      

      Adding macros:

      flextype('serializers')::macro('NAME', CALLBACK_FUNCTION() {});
      
    • parsers standardise parsers container names with macroable ability. (#519)

      New methods to access Parsers:

      flextype('parsers')->shortcode()
      flextype('parsers')->markdown()
      

      Adding macros:

      flextype('parsers')::macro('NAME', CALLBACK_FUNCTION() {});
      
    • media standardise media container names with macroable ability for Media API. (#517)

      New macroable common class for all media - class Media

      New methods to access Media API:

      flextype('media')->files()
      flextype('media')->files()->meta()
      flextype('media')->folders()
      flextype('media')->folders()->meta()
      

      Adding macros:

      flextype('media')::macro('NAME', CALLBACK_FUNCTION() {});
      flextype('media')->files()::macro('NAME', CALLBACK_FUNCTION() {});
      flextype('media')->files()->meta()::macro('NAME', CALLBACK_FUNCTION() {});
      flextype('media')->folders()::macro('NAME', CALLBACK_FUNCTION() {});
      flextype('media')->folders()->meta()::macro('NAME', CALLBACK_FUNCTION() {});
      
    • fields add new field registry.get for Registry API (#494)

      Registry API provides method get() for retrieving data from registry and we should able to access them inside entries frontmatter header for retrieving data right in the entries.

      Basic Example

      Sample entry with several queries and with several nested queries inside of children entries.

      File: /project/entries/registry-root/entry.md

      ---
      title: Root
      registry:
        get:
          flextype:
            key: flextype.manifest.name
          author.name:
            key: flextype.manifest.author.name
          license:
            key: flextype.manifest.license
      entries:
        fetch:
          level1:
            id: registry-root/level-1
      ---
      

      Setting for this fields

      File: /project/config/flextype/settings.yaml

      entries:
        fields:
          registry:
            get:
              enabled: true
      

      Valid values for setting enabled is true or false

    • fields add new field entries.fetch for Entries API (#492)

      Entries API provides methods for entries fetch: fetch() and we should able to access them inside entries frontmatter header for fetching data right in the entries. Also, we will able to add and use any kind of fetch methods with our macroable functionality.

      Basic Example

      Catalog entry with several queries and with several nested queries inside of children entries.

      File: /project/entries/catalog/entry.md

      ---
      title: Catalog
      visibility: visible
      entries:
        fetch:
          label1:
            id: discounts/50-off
            options:
              filter:
                limit: 4
          bikes:
            id: catalog/bikes
            options:
              collection: true
              filter:
                where:
                  -
                    key: brand
                    operator: eq
                    value: gt
                limit: 10
          discounts:
            id: discounts
            options:
              collection: true
              filter:
                where:
                  -
                    key: title
                    operator: eq
                    value: '30% off'
                  -
                    key: category
                    operator: eq
                    value: bikes
      ---
      

      Setting for this fields

      File: /project/config/flextype/settings.yaml

      entries:
        fields:
          entries:
            fetch:
              enabled: true
              result: toObject
      

      Valid values for setting enabled is true or false
      Valid values for setting result is toObject or toArray

    • fields add new field media.files.fetch and media.folders.fetch for Media API's (#501) (#500)

      Media API's provides methods for files and folders fetch: fetch() and we should able to access them inside entries frontmatter header for fetching data right in the entries. Also, we will able to add and use any kind of fetch methods with our macroable functionality.

      ---
      title: Media
      media:
        folders:
          fetch:
            macroable_folder:
              id: 'foo'
              options:
                method: fetchExtraData
            foo_folder:
              id: 'foo'
            collection_of_folders:
              id: '/'
              options:
                collection: true
        files:
          fetch:
            macroable_file:
              id: 'foo'
              options:
                method: fetchExtraData
            foo_file:
              id: foo.txt
            collection_of_files:
              id: '/'
              options:
                collection: true
      ---
      

      Setting for this fields

      File: /project/config/flextype/settings.yaml

      entries:
        fields:
          media:
            files:
              fetch:
                enabled: true
                result: toObject
            folders:
              fetch:
                enabled: true
                result: toObject
      

      Valid values for setting enabled is true or false
      Valid values for setting result is toObject or toArray

    • entries add new method deleteStorage() for Entries API (#498)

    • entries add new method hasStorage() for Entries API (#497)

    • core add new method isApiRequest to Determine API Request in the basic core functionality. (#507)

    • rest-api-entries add ability to send options for fetch() methods in Entries Rest API. (#504)

      Fetch single

      GET /api/entries?id=YOUR_ENTRY_ID&token=YOUR_ENTRIES_TOKEN
      

      Fetch single with options

      GET /api/entries?id=YOUR_ENTRY_ID&options=[filter]&token=YOUR_ENTRIES_TOKEN
      

      Fetch collection

      GET /api/entries?id=YOUR_ENTRY_ID&options[collection]=true&token=YOUR_ENTRIES_TOKEN
      

      Fetch collection with options

      GET /api/entries?id=YOUR_ENTRY_ID&options[collection]=true&options=[find]&[filter]&token=YOUR_ENTRIES_TOKEN
      
    • rest-api-entries add ability to call macroable fetch methods. (#505)

      With help of query option ?options[method]= we should able to call any macroable fetch methods.

      Example

      Macroable method XML

      flextype('entries')::macro('fetchXml', function(string $id, array $options) {
        return ['XML DATA HERE'];
      });
      

      HTTP GET:

      GET /api/entries?id=YOUR_ID&options[method]=fetchXml&token=YOUR_ENTRIES_TOKEN
      
    • rest-api-media reorganize endpoints for Media Rest API (#514)

    • rest-api-media add ability to call macroable fetch methods for Folder. (#512)

      With help of query option ?options[method]= we should able to call any macroable fetch methods.

      Example

      Macroable method

      flextype('media')->folders()::macro('fetchFromOtherStorage', function(string $id, array $options) {
        // fetch data from Other Storage using $id and $options
      });
      

      HTTP GET:

      GET /api/folders?id=YOUR_MEDIA_FILES_ID&options[method]= fetchFromOtherStorage&token=YOUR_MEDIA_FOLDERS_TOKEN
      
    • rest-api-media add ability to call macroable fetch methods for Files. (#513)

      With help of query option ?option[method]= we should able to call any macroable fetch methods.

      Example

      Macroable method

      flextype('media')->files()::macro('fetchFromOtherStorage', function(string $id, array $options) {
        // fetch data from Other Storage using $id and $options
      });
      

      HTTP GET:

      GET /api/files?id=YOUR_MEDIA_FILES_ID&option[method]=fetchFromOtherStorage&token=YOUR_MEDIA_FILES_TOKEN
      

    Bug Fixes

    • fields fix issue with slug field in Entries API (#520)

    • core fix issue with invalid timezone setting (#490)

    • entries fix issue with not exists entries collections. (#503)

    • entries fix issue with collisions in Entries API $storage for entries fetching. (#496)

    • rest-api-entries fix issue with 404 status code in Entries Rest API (#502)

    • rest-api fix issue with Rest API endpoints initialisation. (#506)

    BREAKING CHANGES

    • media standardise media container names with macroable ability for Media API. (#517)

      | NEW CONTAINER | OLD CONTAINER |
      |------------------|------------------| | media | media_files, media_files_meta, media_folders, media_folders_meta |

    • parsers standardise parsers container names with macroable ability. (#519)

      | NEW CONTAINER | OLD CONTAINER |
      |------------------|------------------| | parsers | shortcode, markdown |

    • serializers standardise serializers container names with macroable ability. (#518)

      | NEW CONTAINER | OLD CONTAINER |
      |------------------|------------------| | serializers | yaml, json, frontmatter |

    • rest-api-media reorganize endpoints for Media Rest API (#514)

      | | NEW ENDPOINT | OLD ENDPOINT | |---|---|---| | GET | /api/media/files | /api/files | | POST | /api/media/files | /api/files | | PUT | /api/media/files | /api/files | | PATCH | /api/media/files | /api/files | | DELETE | /api/media/files | /api/files | | POST | /api/media/files/copy | /api/files/copy | | PATCH | /api/media/files/meta | /api/files/meta | | POST | /api/media/files/meta | /api/files/meta | | DELETE | /api/media/files/meta | /api/files/meta | | GET | /api/media/folders | /api/folders | | POST | /api/media/folders | /api/folders | | PATCH | /api/media/folders | /api/folders | | DELETE | /api/media/folders | /api/folders | | POST | /api/media/folders/copy | /api/folders/copy |

      Tokens:

      • token for files should be moved from /tokens/files/ to /tokens/media/files/
      • token for folders should be moved from /tokens/folders/ to /tokens/media/folders/

      Settings:

      api:
        ...
        media:
          files:
            enabled: true
            default_token:
          folders:
            enabled: true
            default_token:
      
    • helpers filter helper return array result every time and not int or bool. (#493)

    • helpers filter helper not support slice_offset and slice_limit because they are are duplicates already exists functionality offset and limit. (#493)

    • helpers filter helper not support count and exists. (#493)

    • entries we have changes in the events names for Entries API (#499)

      Events:

      onEntriesFetch
      onEntriesFetchSingle instead of onEntryInitialized
      onEntriesFetchSingleCacheHasResult instead of onEntryAfterCacheInitialized
      onEntriesFetchSingleNoResult
      onEntriesFetchSingleHasResult instead of onEntryAfterInitialized
      onEntriesFetchCollection instead of onEntriesInitialized
      onEntriesFetchCollectionHasResult instead of onEntriesAfterInitialized
      onEntriesFetchCollectionNoResult
      onEntriesMove instead of onEntryMove
      onEntriesUpdate instead of onEntryUpdate
      onEntriesCreate instead of onEntryCreate
      onEntriesDelete instead of onEntryDelete
      onEntriesCopy instead of onEntryCopy
      onEntriesHas instead of onEntryHas

    • entries Flextype EMS structure is changes because of issues with collisions (#496)

      Updated structure:

      $storage = [
          'fetch' => [
            'id' => '',
            'data' => [],
            'options' => [
                'find' => [],
                'filter' => [],
            ],
          ],
          'create' => [
            'id' => '',
            'data' => [],
          ],
          'update' => [
            'id' => '',
            'data' => [],
          ],
          'delete' => [
            'id' => '',
          ],
          'copy' => [
            'id' => '',
            'newID' => '',
          ],
          'move' => [
            'id' => '',
            'newID' => '',
          ],
          'has' => [
            'id' => '',
          ],
      ];
      
    • rest-api-entries Entries Rest API - for collection fetch we should define this in the request query &options[collection]=true

    • rest-api-entries Entries Rest API - instead of &filter=[] we should define filtering in the request query like this &options[find] and &options[filter]

    • rest-api-media-files Media Files Rest API - for collection fetch we should define this in the request query &options[collection]=true

    • rest-api-media-folders Media Folders Rest API - instead of &filter=[] we should define filtering in the request query like this &options[find] and &options[filter]

    • images we will use media/ folder instead of uploads/entries/ (#516)

      • folder uploads/entries/ should should be renamed to media/entries/ related to this ticket: #515
      • in the endpoint /api/images/{path:.+} path for entries, should starts with /entries/.

      Example:

      old: /api/images/home/banner.jpg new: /api/images/entries/home/banner.jpg

    • entries we should use only fetch() method as entry point to execute different methods with fetch prefix. (#495)

      • method fetchSingle() removed. Use fetch($id, $options) method.
      • methods fetchCollection removed. Use fetch($id, ['collection' => true]) method.
    • media-folders we should use only fetch() method as entry point to execute different methods with fetch prefix. (#509)

      • method fetchSingle() removed. Use fetch($id, $options) method.
      • methods fetchCollection removed. Use fetch($id, ['collection' => true]) method.
    • media-files we should use only fetch() method as entry point to execute different methods with fetch prefix. (#508)

      • method fetchSingle() removed. Use fetch($id, $options) method.
      • methods fetchCollection removed. Use fetch($id, ['collection' => true]) method.

    Update from Flextype 0.9.12 to Flextype 0.9.13

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.13.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      src/
      vendor/
      var/
      index.php
      
    6. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    7. Update all your plugins!
    8. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.13.zip(2.43 MB)
    flextype-cms-0.9.13.zip(5.83 MB)
  • v0.9.12(Dec 7, 2020)

    Features

    • core add Atomastic Components instead of Flextype Components (#478)

      Added:

      • atomastic/session
      • atomastic/arrays
      • atomastic/filesystem
      • atomastic/registry
      • atomastic/strings
    • entries Entries API return Arrays Object instead of plain array on fetch. (#485)

      From no we have ability to work with entries singles and collections as with smart objects for further data manipulations with help of Atomastic Arrays Component.

      Example:

      // Fetch random 10 posts created by Awilum and sort them by published_at field.
      $posts = flextype('entries')
                 ->fetchCollection('blog')
                 ->where('author.name', 'eq', 'Awilum')
                 ->sortBy('published_at')
                 ->limit(10)
                 ->random();
      
    • entries Standardize Entries API fetch. (#486)

    • entries Standardize Media Files API fetch. (#487)

    • entries Standardize Media Folders API fetch. (#488)

    • entries Add ability to extend Core class with Macros. (#489)

    • cache add new cache engine - PHPFastCache instead of Doctrine Cache (#457)

      New config for PhpFastCache

      https://github.com/flextype/flextype/blob/dev/src/flextype/settings.yaml#L127-L241

      New methods from PhpFastCache

      We are start using PhpFastCache PSR16 adapter
      https://github.com/PHPSocialNetwork/phpfastcache

    • core Unit Test powered by PestPHP.

    • media add new move() method instead of rename()

    • entries add new move() method instead of rename()

    • core add new PATH['tmp'] constant (#470)

      Now we have:

      PATH['tmp'] constant instead of PATH['cache'] and PATH['logs']

    • markdown add markdown basic settings (#471)

      markdown:
        auto_line_breaks: false
        auto_url_links: false
        escape_markup: false
      
    • markdown add ability to access markdown parser instance (#468)

      Usage:

      $markdown = flextype('markdown')->getInstance();
      
    • entries add new Flextype Entries Memory Storage (Flextype EMS). New private property $storage for storing current requested entry(or entries) data and all Entries CRUD operations data in memory with ability to change them dynamically on fly. New public methods getStorage() setStorage() (#467)

      Structure (Flextype EMS):

      $storage = [
          'fetch' => [
            'id' => '',
            'data' => '',
          ],
          'create' => [
            'id' => '',
            'data' => '',
          ],
          'update' => [
            'id' => '',
            'data' => '',
          ],
          'delete' => [
            'id' => '',
          ],
          'copy' => [
            'id' => '',
            'new_id' => '',
          ],
          'move' => [
            'id' => '',
            'new_id' => '',
          ],
          'has' => [
            'id' => '',
          ],
      ];
      

      Accessing storage example:

      flextype('emitter')->addListener('onEntryAfterInitialized', static function () : void {
          flextype('entries')->setStorage('fetch.data.title', 'New title');
      });
      
      $entry = flextype('entries')->fetchSingle('about');
      
      echo $entry['title'];
      
    • entries add new events: onEntryHas, onEntryInitialized, onEntriesInitialized (#467)

    • helpers add new support helper find() for files and directories searching instead of find_filter()

    • helpers add new support helper filter() for data collection filtering instead of arrays_filter()

    Bug Fixes

    • entries fix issue with delete() method (#465)

    • media fix issue with exif_read_data() on files upload.

    Refactoring

    • entries remove App from all core namespaces (#469)

    BREAKING CHANGES

    • entries removed properties from Entries API (#467)

      $entry_id
      $entry
      $entry_create_data
      $entry_update_data
      $entries_id
      $entries
      

      Use public methods getStorage() setStorage() instead.

      Example:

      // old
      flextype('entries')->entry['title'] = 'New title';
      
      // new
      flextype('entries')->setStorage('fetch.data.title', 'New title');
      
      // old
      $title = flextype('entries')->entry['title'];
      
      // new
      $title = flextype('entries')->getStorage('fetch.data.title');
      $title = flextype('entries')->getStorage('fetch.data')['title'];
      
    • core Removed App from all core namespaces (#469)

      We should have

      use Flextype\Foundation\Entries\Entries;
      

      instead of

      use Flextype\App\Foundation\Entries\Entries;
      
    • core use new PATH['tmp'] constant instead of PATH['cache'] and PATH['logs'] (#470)

    • cache old cache config removed, use new config for PhpFastCache (#457)

    • cache use methods has() set() get() instead of contains() save() fetch() (#457)

    • core remove flextype-components/session (#473)

    • core remove flextype-components/cookie (#473)

    • core remove flextype-components/number (#474)

    • core remove flextype-components/filesystem (#474)

    • core remove flextype-components/arrays (#474)

    Update from Flextype 0.9.11 to Flextype 0.9.12

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.12.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      src/
      vendor/
      var/
      index.php
      
    6. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    7. Update all your plugins!
    8. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.12.zip(2.40 MB)
    flextype-cms-0.9.12.zip(5.76 MB)
  • v0.9.11(Aug 25, 2020)

    Features

    • New helper function added for access all Flextype features in one place

      flextype($container_name = null, $container = [])
      

      IMPORTANT

      Do not use $flextype object to access Flextype features, use flextype() helper function.

    Bug Fixes

    • core fix bug - Cannot access protected property Flextype\App\Foundation\Flextype::$container (#462)
    • core fix bug - Cannot use object of type Flextype\App\Foundation\Flextype as array (#461)
    • media fix Media exif_read_data warning - File not supported (#464)

    Refactoring

    • plugins remove $flextype variable from plugins init method.
    • entries update return type for fetch() method.
    • entries add additional check for getTimestamp() method in the getCacheID()
    • entries remove dead code from fetchCollection() method.

    Vendor Updates

    • core: Update vendor flextype-components/filesystem to 2.0.8
    • core: Update vendor ramsey/uuid to 4.1.1

    Update from Flextype 0.9.10 to Flextype 0.9.11

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.11.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      src/
      vendor/
      index.php
      
    6. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    7. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.11.zip(2.84 MB)
    flextype-cms-0.9.11.zip(7.61 MB)
  • v0.9.10(Aug 19, 2020)

    Features

    • core Moving to PHP 7.3.0 (#456)

    • core add new class Flextype that extends Slim\App (#458)

      with methods:

      /**
       * Get Dependency Injection Container.
       *
       * @param string $key DI Container key.
       */
      public function container(?string $key = null)
      
      /**
       * Returns Flextype Instance
       */
      public static function getInstance()
      
      /**
       * This method will returns the current Flextype version
       */
      public static function getVersion() : string
      
    • collection Add only() method for Collection (#455)

      Example:

      ...->only(['id', 'title'])->...
      
    • entries Rename path to id in Entries API (#453)

      New implementation

      // Entry properties
      $entry_id
      $entries_id
      
      // Arguments
      $id
      $new_id
      
    • shortcode add New Shortcode (#454)

      [raw] Raw shortcode content [/raw]
      
    • shortcode add New Shortcode Methods (#454)

      // Get shortcode instance.
      getInstance()
      
      // Add shortcode handler.
      addHandler(string $name, $handler)
      
      // Add event handler.
      addEventHandler($name, $handler)
      
      // Processes text and replaces shortcodes.
      process(string $input, bool $cache = true)
      

    Bug Fixes

    • entries fix issue with entries paths on Windows (#460)
    • cache fix issue with purge() method. (#451)
    • entries fix wrong Implementation of Slug Field for Entries (#452)
    • entries add new entry field id (#452)

    BREAKING CHANGES

    • entries Rename path to id in Entries API (#453)

      Old Entry properties

      $entry_path
      $entries_path
      

      New Entry properties

      $entry_id
      $entries_id
      
    • entries fix wrong Implementation of Slug Field for Entries (#452)

      From now we have entry fields:

      slug with current entry slug.

      Example:

      flextype-0.9.10
      

      id with current entry full path as it is was for slug field.

      Example:

      blog/flextype-0.9.10
      
    • shortcode We should use process() method instead of parse() for shortcode processing. (#454)

      Example of new usage in PHP:

      ...->shortcode->process($input, $cache);
      
    • core $container, $flextype and $app objects removed! (#458)

      We should use new object $flextype as it is a consolidate entry point to all Flextype features.

      Here is some examples:

      // OLD
      $app->get(...)
      $app->post(...)
      ...
      
      // NEW
      $flextype->get(...)
      $flextype->post(...)
      ...
      
      // OLD
      $container['registry'] = static function ($container) {
      return new Registry($container);
      };
      
      $container->registry->get(...)
      
      // NEW
      $flextype->container()['registry'] = static function () use ($flextype) {
      return new Registry($flextype);
      };
      
      $flextype->container('registry')->get(....)
      
    • core class Container removed! (#458)

      We should use $flextype object to access all Flextype features inside Service Controllers and Models.

      Here is some examples:

      // OLD
      class FooController extends Container
      {
        public function bar()
        {
            return $this->registry->get('.....');
        }
      }
      
      // NEW
      class FooController
      {
        protected $flextype;
      
        public function __construct($flextype)
        {
            $this->flextype = $flextype;
        }
      
        public function bar()
        {
            return $this->flextype->container('registry')->get('.....');
        }
      }
      

    Update from Flextype 0.9.9 to Flextype 0.9.10

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.10.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      src/
      vendor/
      index.php
      
    6. Upload on your server this folders and files:
      src/
      vendor/
      index.php
      
    7. Remove folder var/ !
    8. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.10.zip(1.99 MB)
    flextype-cms-0.9.10.zip(5.14 MB)
  • v0.9.9(Aug 5, 2020)

    Features

    • core Moving to PHP 7.2.5 #444

    • core Add PhpArrayFileAdapter and set PhpArrayFile Cache as a default fallback cache driver instead of Filesystem Cache driver. This new feature give us performance boost up to 25%

    • core Add preflight to Flextype basic checks and performance boost.

    • core Update all namespaces and core infrastructure. #437

    • core Add Symfony Finder Component and find_filter() helper.

    • cache Cache API improvements

      • Cache ID generation enhancements
      • add new public function fetchMultiple(array $keys)
      • add new public function saveMultiple(array $keysAndValues, $lifetime = 0)
      • add new public function deleteMultiple(array $keys)
      • add new public function deleteAll()
      • add new public function flushAll()
      • add new public function purge(string $directory)
      • add new public function purgeAll()
      • add new public function getStats()
      • add new events onCacheBeforePurgeAll, onCacheAfterPurgeAll, onCacheBeforePurge, onCacheAfterPurge
    • core New Media API for work with media uploads.

      New objects:

      $flextype['media_files_meta']
      $flextype['media_folders_meta']
      $flextype['media_files']
      $flextype['media_folders']
      

      See: http://docs.flextype.org/en/core/media

    • core New simplified parsers and serializers functionality #438

      New objects:

      $flextype['markdown']
      $flextype['shortcode']
      $flextype['json']
      $flextype['yaml']
      $flextype['frontmatter']
      

      New methods:

      $flextype->markdown->parse(string $input)
      
      $flextype->shortcode->add(string $name, $handler)
      $flextype->shortcode->parse(string $input, bool $cache = true)
      
      $flextype->json->decode(string $input, bool $cache = true, bool $assoc = true, int $depth = 512, int $flags = 0)
      $flextype->json->encode($input, int $options = 0, int $depth = 512) : string
      
      $flextype->yaml->decode(string $input, bool $cache = true, int $flags = 0) : array
      $flextype->yaml->encode($input, int $inline = 2, int $indent = 4, int $flags = 0) : string
      
      $flextype->frontmatter->decode(string $input, bool $cache = true)
      $flextype->frontmatter->encode($input) : string
      
    • entries New simplified logic for entries methods: fetch() fetchSingle() and fetchCollection()

      We are stop doing unneeded things like extra scanning folders and files updates and etc... for fetching entries collections that's slowdowns the fetching process.

      We have improved filtering abilities for entries collections.

      From now there is a possible to path a much more rules for collections filtering inside the fetchCollection() and with using a standalone helper functions like collect_filter() and find_filter()

      • public function fetch(string $path, bool $collection = false, $filter = []) : array Fetch single entry or collections of entries.
      • public function fetchSingle(string $path) : array Fetch single entry.
      • public function fetchCollection(string $path, $filter = []) : array Fetch entries collection.

      See: http://docs.flextype.org/en/core/entries#methods

    • entries New events added for Entries API.

      onEntryCreate
      onEntryCopy
      onEntryRename
      onEntryDelete
      onEntryUpdate
      onEntryAfterCacheInitialized
      onEntryAfterInitialized
      onEntriesAfterInitialized
      
    • entries New decoupled and configurable fields added for entries instead of hardcoded.

      Entry fields decoupled into: /flextype/Foundation/Entries/Fields/

      Entry fields added into flextype.settings.entries.fields

      fields:
        slug:
          enabled: true
        published_at:
          enabled: true
        published_by:
          enabled: true
        modified_at:
          enabled: true
        created_at:
          enabled: true
        created_by:
          enabled: true
        routable:
          enabled: true
        parsers:
          enabled: true
        visibility:
          enabled: true
        uuid:
          enabled: true
      
    • entries Add ability to set individual cache control for specific entries.

      cache:
        enabled: true
      
      or
      
      cache:
        enabled: false
      
    • entries Add new Entries API class properties.

      /**
       * Current entry path
       *
       * @var string
       * @access public
       */
      public $entry_path = null;
      
      /**
       * Current entry create data array
       *
       * @var array
       * @access public
       */
      public $entry_create_data = [];
      
      /**
       * Current entry create data array
       *
       * @var array
       * @access public
       */
      public $entry_update_data = [];
      
    • collections New Collection functionality on top of Doctrine Collections.

      We are able to use collections for any type of items, not just for entries. New Collection are simple and powerful!

      See: http://docs.flextype.org/en/core/collections

    • settings Set max_file_size 8mb for uploads.

    • yaml YAML set default inline = 5 and indent = 2

    • vendors New Arrays library for Accessing PHP Arrays via DOT notation.

    • rest-api New Files Rest API.

      | Method | Endpoint | Description | | --- | --- | --- | | GET | /api/files | Fetch file(files) | | POST | /api/files | Upload file | | PUT | /api/files | Rename file | | PUT | /api/files/copy | Copy file | | DELETE | /api/files | Delete file | | PATCH | /api/files/meta | Updates file meta information | | POST | /api/files/meta | Updates file meta information | | DELETE | /api/files/meta | Delete file meta information |

    • rest-api New Folders Rest API.

      | Method | Endpoint | Description | | --- | --- | --- | | GET | /api/folders | Fetch folder(folders) | | POST | /api/folders | Create folder | | PUT | /api/folders | Rename folder | | PUT | /api/folders/copy | Copy folder | | DELETE | /api/folders | Delete folder |

    Bug Fixes

    • frontmatter remove UTF-8 BOM if it exists.
    • frontmatter fix line endings to Unix style.
    • entries fix method rename() in Entries API #433
    • entries fix issue with parsing content on entry fetch #441
    • rest-api fix Rest API JSON Response #445
    • core fix all namespaces #437
    • core fix flextype config loading.
    • serializers fix YAML native parser.
    • plugins fix method getPluginsCacheID() for Plugins API

    Refactoring

    • pimple remove unused $flextype variable and cleanup dependencies.
    • yaml save and mute error_reporting for native YAML parser.
    • cors remove unused parameter $args
    • plugins remove dead variables.
    • shortcode update return type for shortcode add() method.
    • cache update $driver type for DoctrineCache.

    Vendor Updates

    • core: Update vendor league/glide to 1.6.0
    • core: Update vendor doctrine/cache to 1.10.2
    • core: Update vendor doctrine/collections to 1.6.6
    • core: Update vendor respect/validation to 2.0.16
    • core: Update vendor monolog/monolog to 2.1.1
    • core: Update vendor thunderer/shortcode to 0.7.4
    • core: Update vendor flextype-components/filesystem to 2.0.7
    • core: Update vendor flextype-components/registry to 3.0.0
    • core: Update vendor flextype-components/number to 1.1.1
    • core: Update vendor composer/semver to 3.0.0
    • core: Update vendor symfony/yaml to 5.1.3
    • core: Update vendor ramsey/uuid to 4.1.0

    BREAKING CHANGES

    • entries Wildcard * removed from parsers field.
    • entries Cache setup removed from parsers field.
    • settings /project/config/settings.yaml move to /project/config/flextype/settings.yaml
    • constants remove constant PATH['config'], use - PATH['project'] . '/config/'
    • core: remove Date Component from the system.
    • core: remove Text Component from the system.
    • cache: removed methods clear() and clearAll(), use purge() and purgeAll() instead.
    • cache: change return type for methods save(), delete() from void too bool.

    Update from Flextype 0.9.7 to Flextype 0.9.8

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.9.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      /src/
      /vendor/
      /index.php
      
    6. Upload on your server this folders and files:
      /src/
      /vendor/
      /index.php
      
    7. Clear browser cache!
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.9.zip(1.98 MB)
    flextype-cms-0.9.9.zip(5.17 MB)
  • v0.9.8(May 14, 2020)

    Features

    • core: New lightweight and powerful core for kickass Applications!

    • core: New Content Management API (CMA) for Entries. #421

      The Content Management API (CMA), is a read-write API for managing content.

      You could use the CMA for several use cases, such as:

      • Automatic imports from WordPress, Joomla, Drupal, and more.
      • Integration with other backend systems, such as an e-commerce shop.
      • Building custom editing experiences.

      Endpoints for Content Management API: | Method | Endpoint | Description | | --- | --- | --- | | GET | /api/management/entries | Fetch entry(entries) | | POST | /api/management/entries | Create entry | | PATCH | /api/management/entries | Update entry | | PUT | /api/management/entries | Rename entry | | PUT | /api/management/entries/copy | Copy entry(entries) | | DELETE | /api/management/entries | Delete entry |

      API Tokens folder: /project/tokens/management/entries

    • core: New Images API.

      | Method | Endpoint | Description | | --- | --- | --- | | GET | /api/images | Fetch image |

      API Tokens folder: /project/tokens/images

    • core: New Access API to create secret tokens for Content Management API (CMA).

      API Tokens folder: /project/tokens/access

    • core: add Container for extending Flextype Container instead of Controller(s)

    • core: add Application URL url into the common Flextype settings #405

    • core: add new improved plugins sorting in the Plugins API.

    • core: add dependencies validation for Plugins API #411

    • core: add configurable CORS (Cross-origin resource sharing).

      cors:
        enabled: true
        origin: "*"
        headers: ["X-Requested-With", "Content-Type", "Accept", "Origin", "Authorization"]
        methods: [GET, POST, PUT, DELETE, PATCH, OPTIONS]
        expose: []
        credentials: false
      
    • core: add manifest file /src/flextype/config/flextype.yaml for Flextype.

    • core: add Serializer for data encoding/decoding and Parser for data parsing #424

    Bug Fixes

    • core: fix incorrect data merging of manifest and settings for plugins and themes #404

    BREAKING CHANGES

    • core: core decoupled in the plugins, and moved out of the Flextype release package!

      Install all needed plugins for your project by your self. Browse plugins: https://github.com/flextype-plugins

    • core: new way for data merging of manifest and settings for plugins and themes #404

      for e.g. this is a wrong code to access site title:

      {{ registry.plugins.site.title|e('html') }}
      

      and this is a correct code to access site title:

      {{ registry.get('plugins.site.settings.title')|e('html') }}
      
    • core: We should add app url into the core instead of base_url and site_url #405

      for e.g. this is a wrong code to access site url:

      {{ registry.plugins.site.url }}
      

      and this is a correct code to access app url:

      {{ registry.get('flextype.settings.url') }}
      
    • core: new project folder instead of site

      • rename folder site into project
      • use new constant PATH['project'] instead of constant PATH['site']
    • core: removed constants

      • PATH['plugins']
      • PATH['themes']
      • PATH['entries']
      • PATH['themes']
      • PATH['snippets']
      • PATH['fieldsets']
      • PATH['tokens']
      • PATH['accounts']
      • PATH['uploads']
    • core: removed Snippets functionality

    Update from Flextype 0.9.7 to Flextype 0.9.8

    1. Backup your Site First!
    2. Read BREAKING CHANGES section!
    3. Download flextype-0.9.8.zip
    4. Unzip the contents to a new folder on your local computer.
    5. Remove on your server this folders and files:
      /flextype/
      /vendor/
      /index.php
      
    6. Upload on your server this folders and files:
      /src/
      /vendor/
      /index.php
      
    7. Rename /site/ to /project/
    8. Clear browser cache!
    9. Create CDA, CMA and Access tokens for your project using this webpage.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.8.zip(1.84 MB)
    flextype-cms-0.9.8.zip(7.62 MB)
  • v0.9.7(Mar 3, 2020)

    Features

    • core: add Delivery API's for Entries, Images and Registry. #159

      Use Flextype as a Headless CMS with the full power of the Admin Panel. Build a Websites and Apps with a technology you are familiar with.

      Endpoints for Delivery API's:

      /api/delivery/entries
      /api/delivery/images
      /api/delivery/registry
      
    • core: add new core constants PATH['tokens'], PATH['accounts'], PATH['logs'], PATH['uploads']

    • core: add new locales support Persian, Indonesian, Galician #327

    • core: add alternative comparison syntax for Entries API

      Alternative comparison syntax:

      != - Not equals to
      like - Contains the substring
      
    • core: set entries field routable=true on new entry creation #320

    • core: use array_merge() instead of array_replace_recursive() for entries update method.

    • core: initialize plugins before themes #323

    • core: update Cache to use adapter to retrieve driver object #341

    • core: load Shortcodes extensions based on flextype.shortcodes.extensions array #352

    • core: load Twig extensions based on flextype.twig.extensions array #351

    • core: add new Global Vars PATH_ACCOUNTS, PATH_UPLOADS, PATH_TOKENS, PATH_LOGS for Twig.

    • default-theme: Moving to Tailwind CSS from Twitter Bootstrap #356

    • site-plugin: add ability to set custom site url, new shortcode [site_url] and twig var {{ site_url }}

    • form-plugin: add new Form plugin for forms handling instead of core Forms API.

    • icon-plugin: add new Icon plugin for Font Awesome icons set.

      usage in templates:

      <i class="icon">{{ icon('fab fa-apple') }}</i>
      

      usage in entries content:

      [icon value="fab fa-apple"]
      
    • (site-plugin): add ability to access uri variable in the theme templates.

      usage in templates:

      {{ uri }}
      
    • admin-plugin: add RTL support for URLs #62

      /site/config/plugins/admin/settings.yaml

      ...
      entries:
        slugify: true # set `false` to disable slugify for entries
      
    • admin-plugin: add ability to deactivate/activate all type of plugins. #211

    • admin-plugin: add Confirmation Required modal for system plugins deactivation.

    • admin-plugin: new Admin Panel UI with better UX and powered by Tailwind CSS.

    • admin-plugin: new improved entries media manager page.

    • admin-plugin: add ability to continue editing after saving in the editor.

    • admin-plugin: add action onAdminThemeTail for admin panel base layout.

    • admin-plugin: add ability to change entries view from list view to table view.

      /site/config/plugins/admin/settings.yaml

      ...
      entries:
        items_view_default: list # set `table` for table entries view
      
    • admin-plugin: increase upload limit for _uploadFile from 3mb to 5mb

    • admin-plugin: do not rewrite plugins and themes manifest with custom manifests.

    • admin-plugin: add parsleys for frontend form validation.

    • admin-plugin: add select2 for all select form controls.

    • admin-plugin: add swal for all modals.

    • admin-plugin: add flatpickr for date and time.

    • admin-plugin: add tippy.js for all tooltips and dropdown menus.

    • admin-plugin: add confirmation modals powered by swal for all critical actions.

    • admin-plugin: add dim color for entries with draft, hidden and routable=false status #324

    • admin-plugin: add ability to select entry type in the nice modal on entry creation. #331

    • admin-plugin: add new setting entries.items_view_default with default value list.

    • admin-plugin: add ability for redirect to the editor after creating #343

    • admin-plugin: add ability to create default API tokens on installation process.

    • admin-plugin: add ability to use local SVG version of Font Awesome Icons #322

      usage in templates:

      <i class="icon">{{ icon('fas fa-ellipsis-h') }}</i>
      

    Bug Fixes

    • core: fix discord server link #325
    • core: fix issue with system fields data types in the Entries API #383
    • admin-plugin: fix issue for creating entry process with same IDs #333
    • admin-plugin: fix redirect for entries after edit process.
    • admin-plugin: fix issues with routable field on entry edit process.

    Refactoring

    • core: move /site/cache directory to the /var/cache #347
    • core: remove Forms API from Flextype core #360
    • admin-plugin: improve Gulp configuration for better assets building.
    • default-theme: improve Gulp configuration for better assets building.
    • core: simplify logic for themes initialization process, remove extra checks for theme setting is enabled or not.
    • admin-plugin: move templates from views folder into the templates folder #347
    • admin-plugin: remove unused namespaces in EntriesContoller #347
    • admin-plugin: remove complex logic for themes activation process.
    • admin-plugin: add ext-gd to the require section of composer.json #347
    • admin-plugin: add ext-fileinfo to the require section of composer.json #347
    • admin-plugin: add ext-dom to the require section of composer.json #347
    • admin-plugin: add ext-spl to the require section of composer.json #347
    • default-theme: remove enabled option from theme settings.

    Vendor Updates

    • core: Update vendor monolog/monolog to 2.0.2
    • core: Update vendor cocur/slugify to 4.0.0
    • core: Update vendor thunderer/shortcode to 0.7.3
    • core: Update vendor ramsey/uuid to 3.9.2

    BREAKING CHANGES

    • core: accounts moved to their specific folders.

      for e.g.

      /accounts/admin.yaml => /accounts/admin/profile.yaml
      
    • core: remove Debug, Html and Form Flextype Components.

    • core: all images links should be updated

      http://docs.flextype.org/en/content/media
      
    • core: core and plugin settings keys renamed

      For all core settings:
      settings.* => flextype.*
      
      For all site settings:
      settings.title => plugins.site.title
      settings.description => plugins.site.description
      settings.keywords => plugins.site.keywords
      settings.robots => plugins.site.robots
      settings.author.email => plugins.site.author.email
      settings.author.name => plugins.site.author.name
      
    • admin-plugin: remove Twitter Bootstrap from Admin Panel and Default Theme.

    • admin-plugin: remove user profile page /admin/profile

    • admin-plugin: method getUsers() renamed to getUsersList() in UsersController.

    Update from Flextype 0.9.6 to Flextype 0.9.7

    • Backup your Site First!
    • Read BREAKING CHANGES release section!
    • Download flextype-0.9.7.zip
    • Unzip the contents to a new folder on your local computer.
    • Remove on your server this folders and files:
      • /flextype/
      • /vendor/
      • /site/accounts/
      • /site/config/
      • /site/cache/
      • /site/plugins/admin/
      • /site/plugins/site/
      • /site/themes/default/
      • /index.php
    • Upload on your server this folders and files:
      • /flextype/
      • /vendor/
      • /site/plugins/admin/
      • /site/plugins/site/
      • /site/plugins/icon/
      • /site/plugins/form/
      • /site/themes/default/
      • /index.php
    • Clear browser cache!
    • Go to YOUR_SITE_URL/admin url and create new user account.

    Flextype 0.9.7 (1463 commits and more than 400h for development and testing!)

    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.7.zip(5.60 MB)
  • v0.9.6(Dec 1, 2019)

    Bug Fixes

    • admin-plugin: fix issue with saving entry source #251
    • admin-plugin: fix file browser styles
    • admin-plugin: fix breadcrumbs for theme templates
    • core: Entries API - fix Collection Undefined Index(s) for fetchAll method #243
    • core: fix broken logic for form inputs without labels #274
    • core: fix default and site settings loading #297
    • core: fix id's names for all generated fields #277
    • core: fix notice undefined index: created_at in Entries API
    • core: fix notice undefined index: published_at in Entries API #265
    • core: fix Plugins API - createPluginsDictionary method and increase app perfomance #259
    • core: fix state of active tabs for all generated forms #276
    • core: fix state of aria-selected for all generated forms #275

    Features

    • core: add ability to hide title for hidden fields #240

    • core: add new public method delete() for Cache #308

    • core: add CacheTwigExtension #309

      usage in templates:

      {{ cache.CACHE_PUBLIC_METHOD }}
      
    • core: add ability to override plugins default manifest and settings #224

    • core: add ability to override themes default manifest and settings #256

    • core: add ability to set help text for generated form controls #283

      usage in fieldsets:

      help: "Help text here"
      
    • core: add ability to store entry system fields in entries create method #247

    • core: add alternative comparison syntax for Entries API

      Alternative comparison syntax:

      eq - Equals
      neq - Not equals
      lt - Lower than
      lte - Lower than or equal to
      gt - Greater than
      gte - Greater than or equal to
      

      docs: http://docs.flextype.org/en/themes/entries-fetch

    • core: add json_encode and json_decode twig filter #289

      usage in templates:

      // Result: {"title": "Hello World!"}
      {{ {'title': 'Hello World!'}|json_encode }}
      
      // Result: Hello World!
      {{ '{"title": "Hello World!"}'|json_decode.title }}
      
    • core: add parser twig extension #262

    • core: add new field property default instead of value #303

    • core: add yaml_encode and yaml_decode twig filter #290

      usage in templates:

      // Result: title: 'Hello World!'
      {{ {'title': 'Hello World!'}|yaml_encode }}
      
      // Result: Hello World!
      {{ 'title: Hello World!'|yaml_decode.title }}
      
    • core: Markdown parsing should be cached in production #287

    • core: YAML parsing will be cached in production #263

    • core: Refactor entries fetch methods naming #315

      we have:
      fetch - for single and collection entries request
      fetchSingle - for single entry request.
      fetchCollection - for collection entries request.

    • core: add routable option for entries #284

      usage in entry:

      routable: false
      

      by default routable is true

    • admin-plugin: add help text for common form controls #280

    • admin-plugin: add icons for settings tabs sections #293

    • admin-plugin: hide textarea control for codemirror editor #279

    • admin-plugin: show themes title instead of themes id's on settings page #187

    • admin-plugin: add ability to set individual icons #250

    • admin-plugin: add ability to set individual icons for plugins #255

    • admin-plugin: add ability to work with entry custom fieldset #246

    • admin-plugin: add individual icons for snippets #253

    • admin-plugin: add individual icons for templates and partials #254

    • admin-plugin: add plugins settings page #258

    • admin-plugin: add themes settings page #296

    • admin-plugin: show message on plugins page if no plugins installed #294

    • admin-plugin: use dots icon for actions dropdown #292

    • admin-plugin: add auto generated slugs from title field #305

    • admin-plugin: add help tooltips #306

    • admin-plugin: store Entires/Collections counter in cache #203

    • admin-plugin: YAML parsing will be cached in production #263

    • admin-plugin: add ability to hide fieldsets from entries type select #304

      usage in fieldsets:

      hide: true
      

      by default hide is false

    • site-plugin: add routable option for entries #284

    Performance Improvements

    • core: add realpath_cache_size to .htaccess
    • core: improve Plugins API - locales loading and increase app performance #259
    • core: improve Cache on production and increase app performance #290 #263

    Vendor Updates

    • core: Update vendor flextype-components/date to 1.0.0
    • core: Update vendor symfony/yaml to 4.4.0
    • core: Update vendor doctrine/cache to 1.10.0
    • core: Update vendor doctrine/collections to 1.6.4
    • core: Update vendor monolog/monolog to 3.12.3
    • core: Update vendor bootstrap to 4.4.1
    • admin-plugin: Update vendor bootstrap to 4.4.1
    • admin-plugin: Update vendor trumbowyg to 2.20.0

    BREAKING CHANGES

    • core: method fetchAll removed! please use fetch, fetchSingle or fetchCollection

    • core: changed and_where & or_where execution in the templates

      FROM

      'and_where': {
      
      }
      
      'or_where': {
      
      }
      

      TO

      'and_where': [
          {
      
          }
      ]
      
      'or_where': [
          {
      
          }
      ]
      
    • core: Rename property value to default for all fieldsets where it is used.

    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.6.zip(4.50 MB)
  • v0.9.5(Sep 21, 2019)

    Bug Fixes

    • core: issue with cache in the Entries API - fetchAll method #234 2779777
    • core: issue with emitter twig function #234 426a073
    • core: issue with empty entries folder Entries API - fetchAll method #234 cf61f2d
    • core: issue with Cache ID for Themes list #234 594f4a3
    • admin-plugin: issue with active button styles on Themes Manager page #234 434f336
    • admin-plugin: issue with emitter twig function #234 806b18e
    • admin-plugin: Russian translations #233
    • site-plugin: notice for undefined $query['format'] #234 8bde8eb

    Code Refactoring

    • core: remove $response from Forms render method #234
    • core: add property forms to Flextype\EntriesController #234

    BREAKING CHANGES

    Changed emitter execution in the templates

    FROM

    {{ emitter.emit('EVENT_NAME') }}
    

    TO

    {% do emitter.emit('EVENT_NAME') %}
    

    Update from Flextype 0.9.4 to Flextype 0.9.5

    • Backup your Site First!
    • Download flextype-0.9.5.zip
    • Unzip the contents to a new folder on your local computer.
    • Upload /flextype/, /vendor/, /site/plugins/admin/, /site/plugins/site/, /site/themes/default/ with an FTP client to your host.
    • Clear cache
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.5.zip(8.89 MB)
  • v0.9.4(Sep 11, 2019)

    Added

    • Flextype Core: Add ability to work with different types of content #212 #186
    • Flextype Core: Add new filter tr for I18nTwigExtension #186
    • Flextype Core: Add MARKDOWN, YAML and JSON parsers. #212 #186
    • Flextype Core: Add YamlTwigExtension #186
    • Flextype Core: Add ResponseTime Middleware #186
    • Flextype Core: Add UUID (universally unique identifier) for all entries #197 #186
    • Flextype Core: Add message for Glide if image not found #189 #186
    • Flextype Core: Add victorjonsson/markdowndocs for generating markdown-formatted class documentation #186
    • Flextype Core: Add custom callable resolver, which resolves PSR-15 middlewares. #213 #186
    • Flextype Core: Add git commit message convention. #186
    • Flextype Core: Add AuthMiddleware globally #201 #186
    • Flextype Core: Add new twig options debug charset cache #186
    • Flextype Core: Add new field tags #186
    • Flextype Core: Add new field datetimepicker #186
    • Flextype Core: Add block for all direct access to .md files in .htaccess #186
    • Flextype Core: Add block access to specific file types for these user folders in .htaccess #186
    • Flextype Core: Add new option date_display_format #186
    • Flextype Admin Panel: Add Trumbowyg view html code #193 #186
    • Flextype Admin Panel: Add tail section for base.html template #186
    • Flextype Admin Panel: Add new event onAdminThemeFooter in base.html template #186
    • Flextype Admin Panel: Add ability to set published_at, created_at for site entries #186
    • Flextype Admin Panel: Add ability to set created_by, published_by for site entries #186
    • Flextype Site Plugin: Add ability to get query params inside twig templates #186
    • Flextype Site Plugin: Add ability to get entries in JSON Format #186
    • Flextype Default Theme: Add ability to work with tags for default theme #186

    Fixed

    • Flextype Core: Fix ShortcodesTwigExtension issue with null variables #186
    • Flextype Core: Fix issue with bind_where expression for Entries fetchAll method #186
    • Flextype Core: Fix issue with and_where expression for Entries fetchAll method #186
    • Flextype Core: Fix issue with or_where expression for Entries fetchAll method #186
    • Flextype Admin Panel: Fix dark theme for admin panel #186 #168

    Changed

    • Flextype Core: Moving to PHP 7.2 #198 #186
    • Flextype Core: JsonParserTwigExtension renamed to JsonTwigExtension #186
    • Flextype Core: Twig json_parser_decode renamed to json_decode #186
    • Flextype Core: Twig json_parser_encode renamed to json_encode #186
    • Flextype Core: Default theme - update assets building process and GULP to 4.X.X #206 #186
    • Flextype Core: Default theme - theme.json converted to theme.yaml #201 #186
    • Flextype Core: Default theme - settings.json converted to settings.yaml #201 #186
    • Flextype Core: Site entries move from JSON to FRONTMATTER (MD) #212 #186
    • Flextype Core: Entries - use getDirTimestamp for fetchAll method #212 #186
    • Flextype Core: Entries - change private _file_location() to public getFileLocation() #186
    • Flextype Core: Entries - change private _dir_location() to public getDirLocation() #186
    • Flextype Core: Snippets - change private _file_location() to public getFileLocation() #186
    • Flextype Core: Snippets - change private _dir_location() to public getDirLocation() #186
    • Flextype Core: Fieldsets - change private _file_location() to public getFileLocation() #186
    • Flextype Core: Fieldsets - change private _dir_location() to public getDirLocation() #186
    • Flextype Core: Update .gitignore
    • Flextype Core: Update copyrights information
    • Flextype Core: Update vendor flextype-components/filesystem to 2.0.6
    • Flextype Core: Update vendor flextype-components/date to 1.1.0
    • Flextype Core: Update vendor zeuxisoo/slim-whoops to 0.6.5
    • Flextype Core: Update vendor doctrine/collections to 1.6.2
    • Flextype Core: Update vendor slim/slim to 3.12.2
    • Flextype Core: Update vendor respect/validation to 1.1.31
    • Flextype Core: Update vendor monolog/monolog to 2.0.0
    • Flextype Core: Update vendor symfony/yaml to 4.3.4
    • Flextype Site Plugin: settings.json converted to settings.yaml #201 #186
    • Flextype Site Plugin: plugin.json converted to plugin.yaml #201 #186
    • Flextype Site Plugin: en_US.json and ru_RU.json converted to en_US.yaml and ru_RU.yaml #201 #186
    • Flextype Admin Panel: Settings page improvements #186
    • Flextype Admin Panel: Installation page improvements #194 #186
    • Flextype Admin Panel: Entries editor page improvements #186
    • Flextype Admin Panel: settings.json converted to settings.yaml #201 #186
    • Flextype Admin Panel: plugin.json converted to plugin.yaml #201 #186
    • Flextype Admin Panel: en_US.json and ru_RU.json converted to en_US.yaml and ru_RU.yaml #201 #186
    • Flextype Admin Panel: JS decoupled in partials from base.html #186
    • Flextype Admin Panel: field editor changed to html #186
    • Flextype Admin Panel: improve admin settings page #186

    Removed

    • Flextype Core: Remove date field #196 #186
    • Flextype Admin Panel: Remove save button on the media page #225 #186
    • Flextype Admin Panel: Remove unused css code #186
    • Flextype Admin Panel: Remove unused js code #186
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.4.zip(8.89 MB)
  • v0.9.3(Jul 7, 2019)

    Fixed

    • Flextype Core: Entries - issue with binding arguments inside method fetchAll() - fixed. #182
    • Flextype Core: Entries - issue with possible boolean false result from Filesystem::getTimestamp() inside method fetchAll() - fixed. #182
    • Flextype Core: Entries - issue with possible boolean false result from Filesystem::getTimestamp() inside method fetch() - fixed. #182
    • Flextype Admin Panel: critical issue with possibility to register two admins! - fixed. #183 #182
    • Flextype Admin Panel: Left Navigation - active state for Templates area - fixed. #182
    • Flextype Default Theme: issue with TypeError: undefined is not an object for lightbox - fixed. #182
    • Flextype Default Theme: fix thumbnail image for Default Theme #182
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.3.zip(6.79 MB)
  • v0.9.2(Jul 6, 2019)

    Added

    • Flextype Default Theme: pagination for blog entries added. #164 #165
    • Flextype Default Theme: New templates for entry Gallery - added. #165
    • Flextype Core: New Shortcode [registry_get] - added. #165
    • Flextype Core: New entry Gallery - added. #165
    • Flextype Core: New fieldsets for entry Gallery - added. #165
    • Flextype Core: Doctrine Collections - added. #175 #165
    • Flextype Core: GlobalVarsTwigExtension - new variable - PHP_VERSION - added. #165
    • Flextype Core: FilesystemTwigExtension - new function filesystem_get_files_list added. #165
    • Flextype Core: Snippets - new snippet google-analytics added. #165
    • Flextype Core: Fieldsets Content - menu_item_target fixed. #165
    • Flextype Admin Panel: Show nice message if there is no items for current area. #158 #165
    • Flextype Admin Panel: Tools - added. #170 #165
    • Flextype Admin Panel: Tools - Cache area added. #170 #165
    • Flextype Admin Panel: Tools - Registry area added. #170 #165
    • Flextype Admin Panel: Themes manager added. #171 #165
    • Flextype Admin Panel: New Translates added. #165

    Changed

    • Flextype Core: All Twig Extensions - refactored and updated. #165
    • Flextype Core: Entries - new params $id and $args for fetchAll() method. #165
    • Flextype Core: Entries - fetching methods updated and ready to work with Collections. #175 #165
    • Flextype Core: Snippets Shortcode - renamed snippets_fetch to snippets_exec. #165
    • Flextype Admin Panel: Entires - improved styles for fieldsets tabs. #165
    • Flextype Admin Panel: Entires - styles for Fieldsets tabs improved #165
    • Flextype Admin Panel & Flextype Core: Settings improvements #153 #165
    • Flextype Admin Panel: Entries - show entry slug if entry default field is empty. #165
    • Flextype Admin Panel: Stay on current page after saving. #155 #165

    Fixed

    • Flextype Core & Admin and Default theme: wrong emmiter_emmit renamed to correct emitter_emit #165
    • Flextype Admin Panel: Entries - issues with hardcoded admin url - fixed. #165
    • Flextype Admin Panel: Entries - PATH_FIELDSETS used instead of hardcoded path. #165
    • Flextype Admin Panel: fix all tabs state for Fieldsets, Snippets, Templates areas. #165
    • Flextype Admin Panel: Entries - move functionality issues #179 #165

    Removed

    • Flextype Admin Panel: Left Navigation - documentation link - removed #165

    Update from Flextype 0.9.1 to Flextype 0.9.2

    1. Backup your Site First!
    2. Download flextype-0.9.2.zip
    3. Unzip the contents to a new folder on your local computer.
    4. Upload /flextype/, /vendor/, /site/plugins/admin/, /site/plugins/site/, /site/themes/default/ with an FTP client to your host.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.2.zip(6.79 MB)
  • v0.9.1(Jun 18, 2019)

    Added

    • Flextype Admin Panel: new setting route added to customize admin base route. #154
    • Flextype Core: GlobalVarsTwigExtension - new global constant PATH_FIELDSETS added. #154
    • Flextype Core: Entries API - public property $entry added. #154
    • Flextype Core: Entries API - public property $entries added. #154
    • Flextype Core: Entries API - new event onEntryAfterInitialized added. #154
    • Flextype Core: Entries API - new event onEntriesAfterInitialized added. #154
    • Flextype Core: Shortcodes - EntriesShortcode added. #154
    • Flextype Core: Shortcodes - BaseUrlShortcode added. #154
    • Flextype Core: Snippets - SnippetsTwigExtension: snippets_exec() added. #154
    • Flextype Core: Snippets - [snppets_fetch] shortcode added. #154
    • Flextype Core: Snippets - _exec_snippet() method added. #154
    • Flextype Core: Snippets - exec() method added. #154
    • Flextype Core: Snippets - added ability to access $flextype and $app inside snippets. #154
    • Flextype Core: GlobalVarsTwigExtension FLEXTYPE_VERSION added. #154
    • Flextype Site Plugin: public property $entry added. #154
    • Flextype Site Plugin: new event onSiteEntryAfterInitialized added. #154

    Fixed

    • Flextype Core: Entries API - fetchALL() issue with fetching entries recursively fixed. #154 #161

    Changed

    • Flextype Site: code refactoring. #154
    • Flextype Admin Panel: code refactoring. #154
    • Flextype Core: Snippets - from now we will set prefix bind_ for all variables. #154

    Removed

    • Flextype Core: Entries API - remove unused Shortcodes code from method fetch() #162
    • Flextype Core: Shortcodes - SiteUrlShortcode removed. #154
    • Flextype Core: Snippets - SnippetsTwigExtension: snippet removed. #154
    • Flextype Core: Snippets - [snippets] shortcode removed. #154
    • Flextype Core: Snippets - _display_snippet() method removed. #154
    • Flextype Core: Snippets - - display() method removed. #154
    • Flextype Core: GlobalVarsTwigExtension flextype_version removed. #154
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.1.zip(4.85 MB)
  • v0.9.0(Jun 14, 2019)

    Added

    • Flextype Core: Slim Framework Integration!
    • Flextype Core: Twig Template Engine Integration!
    • Flextype Core: Whoops Error Handler Integration!
    • Flextype Core: Monolog library Integration!
    • Flextype Core: Slugify library Integration!
    • Flextype Core: Complete Glide/Intervention Image Implemented for Image manipulation on fly!
    • Flextype Core: New Event handler from The League of Extraordinary Packages for better event handling.
    • Flextype Core: New Entries API
    • Flextype Core: New Fieldsets API
    • Flextype Core: New Snippets API
    • Flextype Core: New Plugins API
    • Flextype Core: New JSON Parser instead of old YAML Parser.
    • Flextype Core: Using new languages files format and JSON extension instead of YAML.
    • Flextype Core: Using JSON extension instead of YAML for all kind of data to store.
    • Flextype Core: New CSRF service for better cross-site request forgery protection.
    • Flextype Core: composer.json ext-json and ext-mbstring added into require section.
    • Flextype Core: composer.json suggest section added.
    • Flextype Core: composer.json: apcu-autoloader added for APCu cache as a fallback for the class map.
    • Flextype Site: New plugin Site added.
    • Flextype Core: Respect Validation - The most awesome validation engine ever created for PHP - added.
    • Flextype Admin Panel: New admin panel plugin based on Slim Framework.
    • Flextype Admin Panel: Fieldset Sections(groups) added.
    • Flextype Admin Panel: New Field types - select, editor (instead of html)

    Changed

    • Flextype Core: Thunderer Shortcodes don't parse fields by default, need to use filter.
    • Flextype Core: Thunderer Shortcodes updated to 0.7.2.
    • Flextype Core: Flextype Components Arr updated to 1.2.5
    • Flextype Core: Flextype Components Number updated to 1.1.0
    • Admin Panel: Bootstrap updated to 4.3.1
    • Admin Panel: Codemirror updated to 5.43.0
    • Admin Panel: Trumbowyg updated to 2.18.0
    • Admin Panel: Settings Manager - locales list - improvements!

    Fixed

    • Admin Panel: Translates fixes.
    • Admin Panel: Issue with js error for codemirror - fixed.
    • Flextype Core: Plugins API - issue with plugins list fixed.

    Removed

    • Flextype Admin Panel: Menus Manager removed.
    • Flextype Core: YAML Parser removed.
    • Flextype Core: Symfony YAML Component removed.
    • Flextype Core: Flextype Token Component removed.
    • Flextype Core: Flextype Notification Component removed.
    • Flextype Core: Flextype Error Handler Component removed.
    • Flextype Core: Flextype Event Component removed.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.9.0.zip(4.84 MB)
  • v0.8.3(Jan 15, 2019)

    Added

    • Admin Panel: New Gorgeous Light Theme for Admin panel!
    • Admin Panel: Settings Manager - ability to change admin panel theme - added.
    • Admin Panel: Settings Manager - Select dropdown for cache driver - added.
    • Flextype Core: Cache - new cache driver Array - added.
    • Flextype Core: Cache - new cache driver SQLite3 - added.
    • Flextype Core: Cache - new cache driver Zend - added.

    Changed

    • Flextype Core: Symfony Yaml updated to 4.2.2.
    • Admin Panel: Settings Manager - cache settings editing - improvements.
    • Flextype Core: default settings - refactoring.

    Fixed

    • Flextype Core: Cache - issue with selecting current driver_name - fixed.
    • Admin Panel: Dark Theme fixes.
    • Admin Panel: Translates fixes.
    • Admin Panel: Typo fixes.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.8.3.zip(1.92 MB)
  • v0.8.2(Jan 8, 2019)

    Added

    • Admin Panel: ClipboardJS added!
    • Admin Panel: Media Manager - Twitter Bootstrap File browser - added.
    • Admin Panel: Snippets Manager: Embeded code info modal added.
    • Admin Panel: Settings Manager - Select dropdown for default entry - added.
    • Admin Panel: Settings Manager - Select dropdown for timezones - added.
    • Admin Panel: Settings Manager - Select dropdown for themes - added.

    Changed

    • Flextype Core: Text Components updated to 1.1.2.
    • Admin Panel: Entries Manager - upload file size increased to 27000000 bytes.

    Fixed

    • Flextype Core: Default theme - issue with package.json - fixed.
    • Flextype Core: Code fixes according to the phpDocumentor.
    • Flextype Core: Default theme - settings and manifest - fixes.
    • Admin Panel: Translates fixes.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.8.2.zip(1.92 MB)
  • v0.8.1(Jan 6, 2019)

    Added

    • Flextype Core: Glide/Intervention Image Implemented for Image manipulation!
    • Flextype Core: Cache - ability to delete glide cache folder added.

    Changed

    • Flextype Core: Thunderer Shortcode updated to 0.7.0 - over 10x performance and memory usage improvement!
    • Flextype Core: Default settings updates.
    • Flextype Core: Arr Components updated to 1.2.4.
    • Flextype Core: Default theme - Twitter Bootstrap update to 4.2.1
    • Admin Panel: Media Manager - uploader improvements
    • Admin Panel: Menus Manager - menus name are clickable now.
    • Admin Panel: Fieldsets Manager - fieldsets name are clickable now.
    • Admin Panel: Templates Manager - templates and partials name are clickable now.
    • Admin Panel: Snippets Manager - snippets name are clickable now.
    • Admin Panel: Settings Manager - look and feel improvements.
    • Admin Panel: Twitter Bootstrap update to 4.2.1

    Fixed

    • Admin Panel: Snippets Manager - shortcode issue - fixed.
    • Admin Panel: gulpfile - issue with duplicated codemirror - fixed.
    • Admin Panel: Trumbowyg styles fixes.
    • Admin Panel: Plugins Manager - issue with broken homepage url in the Info Modal - fixed.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.8.1.zip(1.90 MB)
  • v0.8.0(Dec 28, 2018)

    Added

    • Flextype Core: To improve engine flexibility was decided to use entity name Entries/Entry instead of entity name Pages/Page.
    • Flextype Core: New folder /site/entries/ added.
    • Flextype Core: New entry variable base_url added.
    • Flextype Core: Snippets functionality added.
    • Flextype Core: New constant PATH['snippets'] added for Snippets.
    • Flextype Core: New folder /site/snippets/ added.
    • Flextype Core: Menus functionality added.
    • Flextype Core: New folder /site/menus/ added.
    • Flextype Core: Fieldsets functionality added.
    • Flextype Core: Fallback functionality for settings added.
    • Flextype Core: New settings item accept_file_types added.
    • Flextype Core: Common PHP Overrides added to .htaccess
    • Flextype Core: Custom YamlParser with native support to increase system performance added.
    • Flextype Core: Ability to get hidden entries for method getEntries() added.
    • Flextype Core: New setting options entries.error404 for error404 page added.
    • Admin Panel: Fieldsets Manager added.
    • Admin Panel: Menus Manager added.
    • Admin Panel: Snippets Manager added.
    • Admin Panel: Templates Manager added.
    • Admin Panel: Entries Manager with nice one level tree view for pages list added.
    • Admin Panel: Português locale added.
    • Admin Panel: General - trumbowyg - table plugin added.
    • Flextype new Default Theme with predefined Fieldsets and Entries templates added.

    Changed

    • Flextype Core: Plugins - Locales Array updated.
    • Flextype Core: Form Components updated to 1.0.2.
    • Flextype Core: Filesystem Components updated to 1.1.5.
    • Flextype Core: Content - used new updated getFilesList() method.
    • Flextype Core: Updated order of params in getEntries() method.
    • Admin Panel: Settings Manager - display only available locales.
    • Admin Panel: Profile Manager - improvements for profile look and feel.
    • Admin Panel: Entries Manager - Form Genetator will not create labels for hidden inputs.
    • Admin Panel: Plugins Manager - Get More Plugins button moved to the right.
    • Admin Panel: General - trumbowyg editor styles updates.
    • Admin Panel: General - trumbowyg updated to 2.13.0
    • Admin Panel: Font Awesome updated to 5.6.3.
    • Admin Panel: General - Messenger moved to to the bottom.
    • Admin Panel: General - updates according to the php template syntax guidelines.
    • Admin Panel: Pages Manager - use defined file types (extensions to be exact) that are acceptable for upload.

    Fixed

    • Flextype Core: Content - Issue with returned value of Arr::sort() fixed.
    • Admin Panel: General - translates fixes.
    Source code(tar.gz)
    Source code(zip)
    flextype-0.8.0.zip(2.57 MB)
  • v0.7.4(Dec 14, 2018)

  • v0.7.3(Dec 13, 2018)

  • v0.7.2(Nov 24, 2018)

  • v0.7.1(Nov 16, 2018)

  • v0.7.0(Nov 15, 2018)

    • Update Symfony YAML to 4.1.1
    • Update Text Component to 1.1.0
    • Update Session Component to 1.1.1
    • Update Doctrine Cache to 1.8.0
    • Update I18n Component to 1.1.0
    • Update Token Component to 1.2.0
    • Content: field 'published' changed to 'visibility'
    • Plugins: from now no need to add plugin names manually to the site.yaml
    • Plugins: added ability to load plugins settings.yaml file
    • Plugins: from now plugins configurations stored in the plugin-name/settings.yaml file
    • Add system.yaml config file and use it for system configurations
    • Themes: added ability to load themes settings.yaml file
    • Themes: from now themes configurations stored in the theme-name/settings.yaml file
    Source code(tar.gz)
    Source code(zip)
    flextype-0.7.0-admin-0.1.0.zip(637.82 KB)
    flextype-0.7.0.zip(450.81 KB)
  • v0.6.1(Jun 17, 2018)

Owner
Flextype
Hybrid Content Management System with the freedom of a headless CMS and with the full functionality of a traditional CMS
Flextype
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

Coaster CMS 392 Dec 23, 2022
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

Coaster CMS 392 Dec 23, 2022
Core framework that implements the functionality of the Sulu content management system

Sulu is a highly extensible open-source PHP content management system based on the Symfony framework. Sulu is developed to deliver robust multi-lingua

Sulu CMS 921 Dec 28, 2022
ExpressionEngine is a mature, flexible, secure, free open-source content management system.

ExpressionEngine is a flexible, feature-rich, free open-source content management platform that empowers hundreds of thousands of individuals and organizations around the world to easily manage their web site.

ExpressionEngine 366 Mar 29, 2022
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
An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles

An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles. It provides a full featured, multi-language CMS system with an innovative page and form assembling process, versioning, workflow, translation and media managers and much more.

Kunstmaan | Accenture Interactive 374 Dec 23, 2022
ExpressionEngine is a flexible, feature-rich, free open-source content management platform that empowers hundreds of thousands of individuals and organizations around the world to easily manage their web site.

ExpressionEngine CMS ExpressionEngine is a mature, flexible, secure, free open-source content management system. It is beloved by designers for giving

ExpressionEngine 412 Dec 27, 2022
Sulu is an open-source content management platform based on the Symfony PHP framework

This repository is no longer the recommended way to start a sulu project. Please have a look at the documentation to find out how to start a new proje

Sulu CMS 623 Nov 12, 2022
Soosyze CMS is a minimalist content management system in PHP, without database to create and manage your website easily

Soosyze CMS is a content management system without a database. It's easy to create and manage you

Soosyze 41 Jan 6, 2023
e107 Bootstrap CMS (Content Management System) v2 with PHP, MySQL, HTML5, jQuery and Twitter Bootstrap

e107 is a free and open-source content management system (CMS) which allows you to manage and publish your content online with ease. Developers can save time in building websites and powerful online applications. Users can avoid programming completely! Blogs, websites, intranets – e107 does it all.

e107 Content Management System 298 Dec 17, 2022
Fully CMS - Multi Language Content Management System - Laravel

Fully CMS Laravel 5.1 Content Managment System not stable! Features Laravel 5.1 Bootstrap Authentication Sentinel Ckeditor Bootstrap Code Prettify Fil

Sefa Karagöz 479 Dec 22, 2022
A small CMS for SaaS - A tiny content management system

Fervoare CMS A tiny content management system Project created in 2012 and ported to GitHub in 2021. Getting started Assuming you have installed a LAMP

Mark Jivko 3 Oct 1, 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
Charcoal Content Management System (CMS) Module

Charcoal CMS The CMS Charcoal Module (Content Management System). Provides basic objects to build a website. Notably, Section (or page), News, Event a

Locomotive 44 Sep 12, 2022
Manage your photos with Piwigo, a full featured open source photo gallery application for the web. Star us on Github! More than 200 plugins and themes available. Join us and contribute!

Manage your photo library. Piwigo is open source photo gallery software for the web. Designed for organisations, teams and individuals. The piwigo.org

Piwigo 2.3k Jan 1, 2023
Boilerplate used to build nearly-headless WordPress themes

Boilerplate for Nearly Headless WordPress Themes This is a plugin boilerplate built using Underpin ,Nicholas, and AlpineJS. It will allow you to build

Nicholas 103 Dec 22, 2022
A Concrete CMS package to add interfaces to translate multilingual content. You can translate content manually, or use cloud API.

Concrete CMS add-on: Macareux Content Translator Concrete CMS has powerful features to manage multilingual content by its default. You can add languag

株式会社マカルーデジタル 3 Nov 28, 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
Simple, modular content management system adapted for launch pages and one-page websites

Segmint Segmint is an easy-to-use flat-file landing page framework, allowing quick and efficient prototyping and deployment - perfect for freelancers

null 2 Jul 19, 2022