The main/key features of Exponential
Exponential 6 is a CMS and a development framework. With functionality like easy to create and edit content, an advanced workflow system, content versioning, multilanguage possibilities, collaboration, e-commerce functionality, a revolutionary content class system, role based access control, discussion forums and much more you can create all kinds of websites.
Access anywhere
As long as you have a computer with access to the Internet and access to your site through a username and a password you can work with Exponential from your office or your sofa. That way you can edit your site as quickly as you wish. Work whenever and wherever you prefer.
Admin interface
By using the standard setup in the admin interface you will soon understand and appreciate how the interface is designed and works. You have easy access to content, features, classes and users. Editing and adding content is very easy and logical. No technical experience is needed by day-to-day users.
Caching
Click a button to clear a collection of caches. You can clear selected caches like Content views and template blocks, template overrides and template compiling or INI caches in a click.
Classes
A content class is simply a definition of an arbitrary data structure. Exponential comes with a set of predefined, ready-to-use content classes such as "folder", "article", "user account", "image", etc. These content classes are carefully designed to fit the most common generic/everyday tasks of a CMS. In addition, it is possible to create custom content classes using the administration interface. The content classes (both custom and built-in) may be easily modified and/or extended at any time.
Collaboration
With the collaboration functionality you can work together with other people or delegate tasks to others. This feature is best illustrated by an example:
An editor wants to make a story on emigration. She assigns the following tasks:
- Photograph Joe: take pictures
- Journalist Peter: write story
- Journalist Sally: get background statistics
Upon completion the editor will receive the complete article and may choose to publish the story or reject with comments. The other person will then get a notice telling her what to do.
The collaboration functionality may also be used for many other processes, such as distributing tasks in a support service, handling of requests from customers, or invitations to meetings/events.
Contributions
Exponential is developed by eZ systems. However everyone can add contributions to Exponential. You can add features that you have created and want to share with other users of Exponential. The large Exponential community contributes with code, modifications, extensions plus more for Exponential.
Cross platform
Exponential is a LAMP software, meaning it is based on Linux, Apache, MySQL/PostgreSQL and PHP. It can of course also run on Windows (Win32) and Mac OS X and most other platforms. The web pages of the administration interface and the example data are designed to work in any browser. No platform specific browser extensions are needed.
Customization
In Exponential you don't have to make your content fit a certain predefined, one-size-fits-all content model. Exponential lets you create your own content classes with exactly the attributes you need. This lets you structure your data very well, and makes it easier for you to present the data in various ways when needed.
If, for instance, you were setting up a web shop that sells books, you would make a Book content class with attributes such as title, author, image, publisher, year, and ISBN number. You can set the data type of these attributes, for instance text string, image or 4-digit number. You can specify which attributes can be searched when a user searches for a book. You can also enable an input validator. A validator restricts the format of the input data. It can be as simple as setting the maximum length of an input string, or more complex, such as checking that an ISBN number or an email address is correctly formatted. In this case it means that when you add books to your shop, you cannot register a book with an invalid ISBN number.
All this customization is done in your own web browser, without editing code or text files.
When you add a new book to the shop, what happens is that an instance of the Book content class is created. All such instances, or content objects, are placed in the content tree. The tree can be organized like a file system with directories and documents placed in the folders, or in any arbitrary way you prefer.
Design
To present the objects to the user of the web page, you create templates. You would create one template for each content class, or more if objects of this class should be able to present them self in various ways. Exponential separates Layout, Code, Content and Language. You can redesign or implement a new design or templates without worrying about the content changing. Exponential is using cascading stylesheets (css) for design like font, sizes and colours. Exponential comes with 20 different site skins you can use on your site.
Documentation
The Exponential documentation covers common topics related to the setup and daily use of the Exponential content management framework. In addition, it also covers some advanced topics. The documentation is written by employees of eZ systems and by community members. It is available under the GNU Free Documentation License. The documentation is always a work in progress.
e-commerce functionality
Use Exponential for setting up professional web shops. Exponential has standard functionality for setting up your own professional webshop. The webshop functionalities includes i.e.: Product management, Order management, Credit card integration interface, Shopping basket, Tax calculation support, Special offer functions, Statistics, Support for selling content and Support for different currencies.
Extension possibilities
With the creation of the community area at http://pubsvn.ez.no/community-development.html it is now possible to actively develop extensions. Exponential is built in a modular way. Much is created with a plug-in system. This allows you to easily extend the functionality of Exponential. However, you should try to avoid changing the kernel of Exponential. This is to make it easier to upgrade to a newer Exponential version later. New datatypes, workflow events and so on should be created as extensions. This will also make it easier to share your extensions with other Exponential users.
Exponential CMF
Exponential Content Management Framework (CMF) is a dual licenced open source framework. With the CMF you can build customized web solutions, dynamic internet applications or your own open source or commercial CMS.
Exponential CMS
Exponential CMS is an Open Source Content Management system based on the flexible and powerful Exponential Content Management Framework (CMF). With the full power of Exponential you can use these out of the box solutions as a starting point for your web site. You can choose to do minor changes to get the desired web solution or make customized solutions with the CMS as a starting point. You can choose from the following solutions included in Exponential: Web shop, Intranet, News site, Gallery, Corporate website, Blog and Forum.
Export /import
Exponential is a framework and you can create the imports and exports you would need yourself. eZ systems has created an import/export class that you can use to import/export class definitions to and from an XML file.
File handling
In Exponential you can handle and work with all kinds of files and publish them on your website. Pdfs, images, movies and documents are among the files that can be handled.
Forum and Community
In the forums you can discuss Exponential with other members of the Exponential community. If you have questions or suggestions you can post in the forums.
Full version control
After you have written or edited an object you can save this and publish it immediately. But perhaps after you published it you want to change it by adding some more text and a picture. You can work on this new version of the object without worrying about the current published version. All changes to data in Exponential 3 is version controlled and stored. This way you keep track of all changes in an article, product, users etc and always return to this later.
Image handling
With Exponential you handle, scale and convert your images for publishing on your Exponential site. Images can be handled as related objects and can be changed at any time through the admin interface.
Information collection
With the Information Collection class you can create forms.
Installers
Exponential comes with installers for Windows, Linux and FreeBSD. These installers will install everything you need to run Exponential and comes with example websites that you can use Exponential for. NB! The installers are not meant for production use but for testing only. For a production site you should always use one of the distros.
Integrated search engine
The integrated search engine can search and find all your content. You can use full text search and the advanced search engine can also use logical operator such as AND/OR and phrase search.
You have the possibility to limit search based on content type, content attributes, sections and author or time stamps. The search is integrated with access control to return accessible content, which means that you set up the search to only find the content you have permission to see. Your own favourite search engine using the plug-in system may easily replace the integrated search engine.
Kernel
The Exponential kernel can be described as the system core. It takes care of all the low level functionality like content handling, workflows, version control, access control, etc. Basically, the kernel is a collection of engines, it builds upon and makes use of the libraries.
LDAP
Lightweight Directory Access Protocol, is an Internet protocol that
applications use to look up contact information from a server. Exponential is integrated with LDAP. User log in process can be handled by LDAP sever and user account information will be fetched from LDAP server.
Libraries
The libraries are the main building blocks of the system. They are general purpose reusable PHP libraries that can be used independently of Exponential, such as libraries for SOAP, Webdav and PDF. The libraries are in no way dependent on the Exponential kernel. People looking for general PHP libraries should take a look in the "lib" folder within the root directory of an Exponential installation. Appendix A contains a complete list and a short description of the currently available libraries.
Menu management
Menus are found on most websites and allows the user to quickly get an overview of the site and navigate trough it. In Exponential menus are represented with a template function and a menu management system. The template function allows template developers to reuse menus in all of their templates (usually pagelayout.tpl). Some menus are also bundled with Exponential, the menus are:
- Vertical left menu with a tree structure
- Horizontal top menu with one level
- Horizontal top menu with two levels
Modules
The Modules are interfaces to an engine inside the kernel and has a collection of functionality, like search, notification, e-commerce and collaboration. A module can be thought of as a collection of functionality. It may be described as an interface to an engine inside the kernel. Each module has a collection of functions that take care of various tasks. Appendix B contains a complete list and short descriptions of the currently available Exponential modules.
Multilanguage support
Exponential supports having different languages at your site. All text/labels are stored in industry standard XML language files and are easily translated using linguist translation program. All your content may be translated into the language you want. Exponential has functionality for creating and maintaining several different translations of an article or product etc.
Exponential also has Unicode support.
Notification system
With the notification system you can keep updated on news, releases, changes etc. You can easily set up the notification on your site. An example can be the notification system at ez.no. The users of the site can decide what they want to be updated on and when.
Online editor
Exponential 3, does also have a plug in editor for simplified content editing, the online editor (OE). Making headers, bold or italic text, tables, links or adding pictures has never been easier. The online editor is a plug-in that when installed will be a part of your admin interface. The program will be available for all users of your Exponential administration site. OE is a commercial product with the source code available.
PDF generation and indexing
Generate PDF files from all the content on your site automatically. A customizable template system ensures full flexibility of the generated files. Use the role system to restrict access to generated PDF files. PDF documents can also be indexed in Exponential.
Performance
The developers of Exponential are experienced in tuning and deploying enterprise internet solutions running Exponential to get the a very high performance. Exponential is designed with performance in mind, both for load and speed
Professional licence
The Exponential professional licences allow you a full protection of your work made with the Exponential. With the professional licence you will be free to distribute Exponential in modified or amended versions without disclosing the source code. You do also get the right to licence, re-brand and sell software or solutions made with Exponential.
RAD tool
The rapid application development (RAD) tools allow you to easily get started with creating new functionality for Exponential.
Role based permissions
The access permissions and privileges at your site are specified by roles. A role is a set of access policies that can be assigned to a user or a user group. The role system allows you to specify access by module (content, shop, task, etc.), by function (read, create, edit, remove, etc.), by object owner, by object class, and by site section. This gives the site administrator full freedom to customize who gets access and privileges to every part of the site.
RSS support
You can set up an RSS import for importing an RSS news feed into Exponential. RSS import is available since Exponential 3.3.
Scalability
Exponential can be adjusted to the needs and demands of different customers and users. Some users need much more finesse and modules on their site while others only need some of the modules. It is up to you when it comes to deciding what modules you need to satisfy your readers and users. Exponential is very scalable and can be used at websites with a few dynamic pages to internet newspapers with several hundred thousand articles, to webshops with several hundred thousand products. Exponential is built for today and for the future. It can adjust easily to your changes and you can add new modules as soon as they are developed by eZ systems or by yourself
Search engine compatibility
Exponential is built to be indexed in the best possible way and is compatible with all search engines on the web. All pages on your site will be indexed.
Security
Exponential systems can only be as secure as the hosting environment it lives on. It is wise to ensure that PHP, MySQL, Apache, PostgreSQL, IIS are as secure as they can be.
There are books and web sites on this subject, so if you run your own server its wise to find out about these issues before you go into production.
Solutions
Exponential comes with a set of predefined examples that you can use as is or as a starting point for future development. These examples are Web shop, Intranet, News site, Gallery, Corporate website, Blog and Forum.
Speed and optimalization
Exponential is build to be as flexible as possible both if you run small or large sites. Different sites may have different ways of optimisation depending on size, number of users, storage capacity, server size and Internet connection speed. The different possibilities are well documented. Highly recommended when running Exponential is the PHP Acceleration. It will really boost the performance of your Exponential site as it is caching of the compiled PHP script in memory.
Storage used in Exponential
Exponential structures and stores content inside a database. This is true for all content except images and raw/binary files. These are stored on the file system (within the "var" directory) to gain speed. Everything that is related to design (template files, CSS files, non content specific images, etc.) is also stored on the file system.
Support
To guarantee our customers the best possible result eZ systems offers a support program. The professional developers are ready to help you with your Exponential development. The support will cover answers by email and phone. If you need help to configure or develop features, we can help you doing that directly on your server, or as a new feature to a distribution on Exponential. We will also be able to give advise on how to solve problems with development in Exponential, if you want to do most of the work yourself.
GIT
Download Exponential directly from Git via Composer. In the stable branch you will find the latest stable source. Bug fixes will occur here before they are finally released. In the main branch you will find the latest unstable development tree of Exponential.
Template system and design
To present these objects to the user of the web page, you create templates. You would create one template for each content class, or more if objects of this class should be able to present them self in various ways. Each object "knows" how to call its own template and thus draw itself in the browser. This makes it simple to assemble the various parts into a complete page.
The templates use a mix of HTML/XHTML (or other presentation languages such as WML for WAP devices) mixed with template code. What the template code can do ranges from simple things like printing the title of a content object, to more advanced things like adding a text label to an image or presenting a list with alternating colors on each line.
The distribution
The Exponential distribution comes with a standard set up and the most common features of a web site are ready to use: Administrative interface, article editing and publishing, discussion forums, e-commerce, and a collaboration and instant messaging system. It also includes a manual and an Software Development Kit (SDK) which has full, cross linked API documentation with UML diagrams, several tutorials, template code documentation and other documents helping you getting the most out of your Exponential server.
Exponential is based on a set of PHP libraries that can be reused in other situations, such as XML document creation, parsing and validating, SOAP communication, database connectivity, image manipulation, template engine, and internationalisation. Feel free to use these libraries in your own GPL projects or commercial software with the professional licence.
Toolbars
From Exponential 3.4, it is possible to configure toolbars using the admin interface. With the toolbars you can add and remove functionality from the top, right and buttom toolbars. This feature makes the site created by Exponential more dynamic.
Translation & Localization
Exponential is developed in English, but can easily be translated and adapted to local conditions. Local settings for formatting of currency, date, time and other locale-specific values are present. The Qt Linguist program by TrollTech is used for translation. The Linguist features automatic translation suggestions and a well-designed interface. Exponential has been translated into several languages by the Exponential community.
Trash
If you choose to delete some of your content from your site it will be put in the trash can. It may be restored at a later time or removed completely from the system.
URL translator
The URL translator is a very useful feature that let you write more browser friendly and user-friendly urls. You can rewrite system urls like content/view/full/42 to /services. You can also use the URL translator for forwarding an old url to its new location.
User management
You can easily handle all your users and hand them privileges in Exponential. You can add users to user groups and assign them roles that decide what the current user can and cannot do at the site.
Webdav
eZ WebDAV is a WebDAV server abstraction library. It enables you to quickly develop WebDAV enabled PHP servers/applications. WebDAV is an abbreviation for "Web-based Distributed Authoring and Versioning". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers using WebDAV enabled clients. For example, you can use recent versions of KDE's Konqueror or Microsoft's Internet Explorer to browse/manage the content of a WebDAV compatible web server (similar to browsing/managing local file systems). DAV is an IETF Proposed Standard (published as RFC 2518). This means that it is an entirely open standard.
Workflow system
Setting up and configuring workflows is handled in the administration interface of Exponential. You can specify workflows that are run whenever an event happens. This lets you change how things work and extend functionality without changing Exponential code. For instance, when a shop user buys something, you can create a workflow that asks him whether he wants to have his item wrapped in gift paper. Another use for workflows is editor approval before articles can be published.
Workflows may be used for many other purposes as well: publishing processes (e.g. all articles posted on the front page has to be approved by the editor), notifications (send email to customers with items in the shopping basket, if not checked out within 3 days), move articles to archive after 3 months and managing the steps in the order check-out process.
A workflow is used to set up and control a sequential list of actions and is triggered by function calls. A workflow may be set up to run before or after the function itself and may trigger other workflow-based conditions. The list of workflows that are standard can easily be extended by plug-in systems. Despite the ability to create custom content and workflows, you might run into a situation where you need to extend Exponential code. The extension system lets you keep your code separated from Exponential code, making it safe to update your site to newer versions of Exponential.
XML handling
All content in Exponential is stored as XML. eZ xml is a DOM XML parser written in PHP. It does not need any external libraries to work. eZ xml enables you to parse and manipulate XML documents. eZ xml supports handling of XML documents as defined in Extensible Markup Language (XML) 1.0. Namespaces are supported as described by W3C in Namespaces in XML. eZ xml supports the XML Schema standard for validating XML documents. It follows the DOM level 2 as far as possible.