# OpenCMS

OpenCMS é um sistema de gerenciamento de conteúdo (em inglês: Content Management System) baseado em Java e XML.
O sistema de Open Source, desenvolvida desde 2000, é software livre sob a licença LGPL e é distribuído pela empresa alemã Alkacon Software que coordena junto com colaboradores o desenvolvimento e melhoria do sistema.
A linguagem de programação utilizada permite que o OpenCms seja um sistema independente de plataforma podendo ser utilizado em qualquer sistema operacional que suporte a máquina virtual Java.
Principais características do OpenCMS:
OpenCMS é completamente escrito em Java e utiliza tecnologia padrão Servlet. Por isso, pode ser facilmente integrado nos atuais ambientes de Software, especialmente se soluções Java já estão sendo usada para outros fins.
A Instalação do OpenCMS é feita integrada a um assistente de configuração HTML. Ele requer um ambiente com um Container Servlet como Tomcat e um banco de dados que é suportado (MySQL 4.0.x, 4.1.x e 5.0.x - Oracle 8, 9i e 10g, DB2 v9, Microsoft SQL Server, PostgreSQL 7.4.x e recentes versões, HSQLDB 1.8).
O ambiente de trabalho do OpenCMS é totalmente baseado em navegador. O OpenCMS é instalado em um servidor web de aplicações, oferecendo facilidade de mobilidade, isto é, os usuários responsáveis pelo gerenciamento de conteúdo, poderão acessar ao sistema a partir de qualquer local que possua uma conexão de Internet, e você poderá aplicar restrições de segurança que podem bloquear usuários indesejáveis que tentarem acessar a áreas restritas.
Imagens e outros arquivos de download pode ser gerenciados utilizando galerias, evitando arquivos redundantes. As galerias podem ser rapidamente acessadas e você poderá simplesmente arrastar e soltar o arquivo/imagem, utilizando as facilidades de um fácil e sofisticado editor, que utiliza o conceito WYSIWYG. Você pode gerenciar várias galerias e definir grupos que possuirão direitos de acesso ou restrição a qualquer um deles.
O acesso a todos os conteúdos controlado pelo OpenCMS pode ser opcionalmente restringido, por meio de um usuário com permissão de acesso ao sistema de administração. Isto garante acesso controlado às áreas protegidas e permite fácil criação de áreas não-públicas (por exemplo, sites internos). Todo recurso dentro do OpenCMS possui um proprietário, um grupo associado a usuário específico com acesso e permissões, que pode ser atribuído ao proprietário, ao grupo e/ou todos os outros.
O OpenCMS é integrado a um mecanismo de projetos que prevê duas perspectivas do projeto, a perspectiva "Online" e a perspectiva "Offline", no mesmo servidor. A funcionalidade da perspectiva "Online" e "Offline" tem o propósito de oferecer um ambiente em que as mudanças de conteúdo possam ser analisadas, aprovadas e testadas antes do projeto ser publicado. Você também pode desfazer todas as alterações não publicadas (novas/editadas/páginas apagadas) e definir as regras de acesso e publicação de seu projeto.
A edição de páginas ficou fácil com OpenCMS, um editor sofisticado que implementa o conceito WYSIWYG, permite editar páginas semelhante aos populares editores de textos. Nenhum conhecimento de programação é necessário para editar uma página. O editor oferece uma forma integrada de código fonte que permite programadores exercerem o controle completo sobre o código fonte HTML da página que está editando. Com a ajuda do editor, páginas com "conteúdo desestruturado" e layouts complexos podem ser facilmente criados. Inserir imagens ou links para downloads de galerias simplesmente arrastando e soltando, criar tabelas complexas com o assistente de tabela e adicionar links, você tambem poderá desenvolver todo o conteúdo em seu editor preferido e simplesmente selecionar, copiar e colar no editor do OpenCMS, sem necessitar exportar e importar para dentro do OpenCMS.
OpenCMS suporta completamente o padrão de codificação de letras Unicode (UTF-8), , assim como o padrão de línguas ocidentais (ISO 8859-1), portanto, ele é capaz de lidar com conteúdos que possui um conjunto de caracteres internacionais distintos, por exemplo, idiomas europeus, asiáticos, árabes. Com a internacionalização de seu portal, além de agregar valor e ter visibilidade internacional do seu produto ou serviço, estará aumentando as chances de sua empresa atingir clientes internacionais.
Todos os conteúdos são totalmente registrados em versões dentro do OpenCMS. A função de Histórico permite controlar as alterações que foram feitas, quando e por quem. Todas as versões anteriores são arquivadas e podem ser restauradas, isso lhe permite acessar as versões mais antigas, a qualquer momento.
OpenCMS suporta diversos mecanismos Templates (Modelos). Recomendamos o uso padrão JSP para criar os modelos. O mecanismo de template do OpenCMS utiliza a renderização (transformação) dinâmica da página que permite uma separação rigorosa de conteúdo baseado em XML Schema e os Templates criados.
A integração com JSP no OpenCMS é nativa. As páginas JSP's são gerenciadas no ambiente de trabalho do OpenCMS, como todos os outros conteúdos. Além disso, JSP é baseado em templates, que lhe permitem separar o conteúdo altamente dinâmico do layout de suas páginas.
Normalmente, os sites gerenciados serão gerados dinamicamente a partir do banco de dados. Para garantir alto desempenho para sites dinâmicos, o OpenCMS vem com um sofisticado mecanismo de Cache. Se você necessitar de uma versão estática do seu site ou partes de seu site, o OpenCMS permite a exportação estática de recursos selecionados, que são encaminhados diretamente para um servidor web. Isto é muito útil para sites que possui tipos de páginas que não são dinâmicas. OpenCMS irá automaticamente manter intactas as relações entre conteúdo dinâmico e estático.
OpenCMS oferece opcionalmente mecanismo de cache dinâmico no momento de criação e edição de páginas, para diminuir o número de consultas no banco de dados, em tempo real. O FlexCache é um componente nativo do OpenCMS, introduzido desde a versão 5.0, que não necessita de programação e pode aumentar significativamente o desempenho do seu Website. Cada página possui uma cópia de si própria, com suas respectivas variações, armazenada no espaço de cache através do FlexCache. A primeira vez que uma página é solicitada, a saída renderizada será armazenada como uma variação no FlexCache. Mais de uma variação podem ser armazenados para cada página no FlexCache, por exemplo, a personalização de um elemento pode ter uma variação para cada usuário, uma notícia exibindo um elemento pode ter uma variação para cada notícia que deve ser exibida. Toda requisição será entregue diretamente a partir do cache, sem ter a necessidade de acessar o banco de dados. Aumentando de forma significativa, o desempenho e velocidade de resposta de seu site.
OpenCMS lhe permite construir sites altamente personalizados. Cada acesso a um recurso no OpenCMS é sempre feito com as permissões de um usuário identificado, no caso dos sites públicos, que o usuário é o visitante da página, este será identificado como "Convidado". É possível a criação de áreas protegidas que exigem login. Após o login, o usuário estará identificado com o seu nome de usuário. A integração com usuário e o gerenciamento da sessão permite criar aplicações personalizadas complexas baseadas nos padrões da tecnologia JSP.
OpenCMS permite que você aplique segurança em todo site ou em alguma parte determinada, com forte criptografia que suporta o protocolo HTTPS (HTTP Seguro), que é o protocolo disponível nos servidores web normalmente utilizados em sites de banco (Internet Banking), sistemas de compras online, etc, para garantir a segurança de comunicação entre o computador-cliente e o computador-servidor do recurso. Qualquer recurso pode ser marcado como Somente-HTTPS. O OpenCMS então entregará este recurso apenas se for solicitado através de uma conexão segura HTTPS. O sistema irá atualizar automaticamente os links do seu conteúdo público, para uma área segura, e vice-versa. Desta forma, é possível construir formulários seguros, outros conteúdos restritos e gerenciar esses juntamente com a mesma interface que seu conteúdo público.
OpenCMS dispõe de um sistema integrado para agendamento. Com este sistema é possível disparar uma ação periodicamente ou depois de um tempo específico. Tais ações podem incluir publicação automática de páginas, remoção de conteúdo expirado ou funcionalidade mais complexa. O gerenciamento das ações agendadas foi inspirado no bem sucedido programa Cron, disponível nativamente na maioria dos sistemas UNIX