Content Management System (CMS)
A content management system, or CMS, is a web application which lets users create, edit, and organize web site content without programming.Content on the World Wide Web consists of HTML, XML, and other documents and media files. This content can be published "manually" by editing and organizing files on a file system exposed to the web through a web server, requiring much technical expertise and tedious work. Content management systems were born to help people publish documents and media with less technical intervention and in a more consistent and automated fashion. They also assist teams of people in working together to publishing content. The followings are feature of the Content Management System (CMS):

Site Structure

CMS applications automatically generate site navigation elements and organize content. Typically content can be reorganized by administrators.There are a variety of ways content can be automatically or manually organized. As a URL structure might be seen as a tree, a document tree might automatically be created as documents are added as children of other documents. Or documents of a certain type might all be organized and listed together on specific web pages.

Security

Session management and user accounts are typically included in a CMS. They are required for administrators and are also sometimes provided for public access to certain features, such as posting comments.Security features can include role-based and/or permission-based access control, filtering of user input, and other common best practices.Roles can then be created and assigned any number of permissions. Users are then assigned roles, giving them each of the permissions included in those roles. For example, an administrator might create an "Editor" role, assigning editing permissions of all content to that role, then granting that role to the appropriate user accounts. When users with that role log in, they automatically have access to edit content.

Workflow

Workflow features assist teams with the process of editing and publishing content. Immediate or scheduled publication of content is often available. The most simple type of workflow would add new content to a publishing queue, where it awaits final approval from a site administrator before the content appears on the web site. More robust workflow might delegate work to separate types of users, often based on security roles. An editor, for example, might automatically get notified when new content is posted, letting her edit and approve the content before publishing.

Templating

Sites can be styled by choosing prebuilt or customizing templates. Templating separates the code which provides functionality from the code which makes the content visible to the end user, which is generally considered a best practice. By separating logic, alternate views can be introduced without interfering with the content management process. Also, designers can focus on building templates without learning much of the internal logic of the system.

Modularity

While not an absolute requirement, many CMSs are built in a modular fashion, allowing additional features to be selectively added by an administrator. Code modularity also allows developers to more easily add functionality to the system. Drupal, for example, is built with functional programming, with each module in a separate file. By using specific naming conventions for functions, modules can hook into various parts of the system to add or alter features of the system. The core of the system is also modular, aiding distributed development and customizability. Blog, forum, and comment modules, for example, can easily be turned on or off by site administrators.

Media Management

Standard web pages are displayed in HTML format. But other document and media types are valuable supplements to textual content. Therefore many CMSs offer management and integration features for additional document types, such as PDFs, images, videos, and audio. A CMS may simply offer a file upload service, organizing new files in some standard fashion. They may also offer integration features, such as displaying a video within an article.

Rich Text Editing

The standard web interface for inputting large blocks of text is the HTML textarea. To format text using a textarea, a user needs to type HTML elements or some other application-specific markup. Some CMSs offer a simplified input markup syntax. Some include WYSIWYG editors, allowing the user to see what their content will look at while they are in the process of editing it. Advanced graphical editors assist with table layouts, multimedia integration, and other complicated tasks.

Content Distribution

While the basic role of a CMS is to usually to display content to end users, additional functionality may aid in content distribution to other computer systems. RSS feeds, for example, are a very common method of content syndication, allowing other software to aggregate content in an automated fashion for summarization, redistribution, or analysis. Some CMSs can automatically generate RSS, a form of an XML document, from the system's content. Email distribution, such as through newsletters, is another common CMS feature. Emails might be templated, and mailing lists managed, through the system. These might include automatic links back to content on the web site. CMSs may also expose more robust programmatic interfaces, or APIs, to other systems. For example, a CMS which exposes posting functionality through an API may allow desktop applications to submit content, bypassing the web interface for similar functionality. A CMS might also support the APIs of other systems, letting them push content to external systems or notify them of updates. For example, a CMS might automatically notify a shared workflow system, subsequently notifying users or automating additional tasks.