terça-feira, 26 de junho de 2007

Thumbnails no WCM

É comum você ver uma notícia em alguns sites da internet e no final, ou qualquer outro ponto da página, existir um menu com várias fotos onde você clica para vê-las ampliadas. Isso é muito bom, pois evita que sejam mostradas várias fotos na página deixando ela muito grande e se o usuário não quer ver nenhuma das fotos tem a opção de não clicar.

O objetivo deste post é demonstrar como pode ser utilizando esse recurso dentro do Workplace Web Content Management. Esse exemplo que estarei colocando aqui é uma das possibilidades existentes, mais outras que podem ser exploradas. No final do post nós teremos uma página como a da figura abaixo.


Figura 01 - Tela final da notícia com thumbnails de imagens no final


Modelo usado

A proposição que estarei demonstrando aqui é baseada na seguinte estrutura:


Figura 02 - Estrutura para apresentação do conteúdo


Conteúdo
No conteúdo iremos trabalhar com dois tipos. O primeiro é o próprio conteúdo da notícia e o segundo são os conteúdos de imagens. A ligação entre os conteúdos será feita através da keyword, ou seja, tanto o conteúdo de notícia como os conteúdos de foto deverão ter a mesma keyword. No exemplo acima, a keyword que estou utilizando é "noticia001". Lembre-se que para cada conteúdo de notícia a keyword deverá ser diferente.

Montagem
A montagem do conteúdo para mostrar a página é bem simples. Em qualquer lugar do nosso site estaremos mostrando o link para o documento de notícia, quando um usuário clicar no link da notícia o WCM irá montar a apresentação do documento. Dentro da apresentação do documento é feita uma chamada ao menu de imagens (MENU - Imagens) e este estará verificando quais documentos de imagem tem a mesma keyword que o documento corrente.

Apresentação
Na apresentação será mostrado a notícia e um menu com todas as imagens relacionadas a o conteúdo corrente.

Template de Autoria

Nesse exemplo eu construí dois templates de autoria, um para a notícia e outro para as imagens, abaixo você poderá ver cada um dos templates:
Template de autoria para a notícia Template de autoria para a imagem
Identification
Nessa parte do formulário só fiz uma pequena descrição de como deverá ser preenchido o título do documento. Uma item que sempre gosto de usar é colocar o tipo do conteúdo em maiúsculo antes do nome do conteúdo, isso facilita achar o conteúdo dentro do WCM.

Profile
Como o nosso link entre notícias e imagens será a keyworkd, eu deixei o campo habilitado e com uma pequena descrição de como deve ser preenchido.

Content
Em content eu criei três campos.

Título da notícia (Title - Text): É o campo que estarei utilizando para inserir o título da notícia.

Descrição da notícia (Summary - Text): É o campo que contem uma pequena descrição da notícia.

Notícia (Body - RichText): É onde será colocada a notícia.
Identification
Usei o mesmo conceito do template de notícia, a identificação para esse conteúdo será PHOTO.

Profile
Como na notícia o campo deve ser preenchido com uma keyword existente em um conteúdo de notícia para que exista o link.

Content
Em content eu criei três campos.

Título da foto (Title-image - Text): É o campo que estarei utilizando para inserir o título da imagem.

Descrição da foto (Summary-image - Text): É o campo que contem uma pequena descrição da foto.

Foto (Photo-Image - FileResource): É o campo utilizando para fazer o upload da foto. Eu não usei o campo tipo Image para ter um pouco mais de liberdade para o tratamento das fotos na apresentação.

Tabela 01 - Templates de autoria


Menu

O menu é a parte fundamental do nosso processo, é com ele que iremos ligar uma notícia com as imagens. Como disse anteriormente, para ligar uma notícia com as imagens vou estar utilizando a keyword dos documentos. Como sabemos o componente de menu tem várias regras de pesquisa para achar os documentos, inclusive por keyword.



Figura 03 - Menu para mostrar as imagens


Para a apresentação dos itens encontrados as opções e códigos são mostrados baixo:
Imagem Código/Descição
Na identificação do Menu utilizei o princípio de colocar o tipo do componente antes do nome. Quando colocamos a tag do wcm dentro de um HTML isso ajuda a identificar com qual tipo de componente estamos trabalhando.
Essa é a chave do exemplo. A query que utilizei para o menu foi baseada em keywords, ou seja, quando abrir um conteúdo de notícia o menu irá pegar a keyword desse e pesquisar quais são os documentos que tem a mesma keyword, excluído o documento corrente.
Por fim a apresentação. A ordem eu deixei Ascendente e o primeiro resultado da ordenação é pelo título do documento. Em resultados por página eu mandei mostrar até 100 imagens, o que acho suficiente.

Abaixo está o código de cada sessão.

Header

<div id="photo_strip">
<h1>Fotos</h1>
<div id="container">
<ul>


Design for each menu search result

<li><a href="<Placeholder tag="noprefixhref"/>" target="_blank"><img src="<Element context="autoFill" type="content" key="photo-image"/>" alt="" title="" height=64></a><p><Element context="autoFill" type="content" key="title-image"/></p></li>

Footer

</ul>
</div>
</div>

Detalhes sobre a apresentação
Para mostrar as imagens como na figura 01, estou utilizando um estilo especial, estarei falando um pouco mais abaixo sobre isso, e a Tags HTML que modifico para trabalhar com as imagens na horizontal são a <ul> e <li>.

A imagem que o menu mostra não foi redimensionada por um programa gráfico, eu estou fazendo isso diretamente no HTML utilizando height=64. Fazendo esse exemplo eu descobri que se dimensionar somente a altura ou a largura o próprio browser acertar a imagem, nesse caso estou deixando a altura com 64 pixels e o browser irá dimensionar a largura para mim.

Se o usuário quiser ver a imagem em tamanho maior poderá clicar sobre ela e será aberta uma nova janela com a imagem em tamanho natural.

Tabela 02 - Apresentação dos itens selecionados pelo menu.


Presentation Template - Notícia

No presentation template da notícia eu incluí a chamada do menu que acabamos de construir.


Figura 04 - Template de apresentação da notícia.

Imagem Código/Descição
<html>
<head>
<Component id="17a4ed0045944938a692f6333a5ed22d:NC9ERU1PL0NTUyAtIEludHJhbmV0" name="DEMO/CSS - Intranet"/>
</head>
<body TEXT="Black" BGCOLOR="White" BACKGROUND="" LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0" BOTTOMMARGIN="0">
<Component id="2f424b0045b6e2a08107ad1dea9632c4:NC9ERU1PL0hUTUwgLSBNZW51IEluTGluZSBFZGl0aW9u" name="DEMO/HTML - Menu InLine Edition"/>
<span class="news-menu-title" ><Element context="current" type="content" key="Title"/></span><br><br>
<span class="news-menu-summary"><Element context="current" type="content" key="Body"/></span>
<br><br>
<Component id="de80398045c7ddbf8b72afb196d52d04:NC9ERU1PL01FTlUgLSBQaG90b3MgTmV3cw==" name="DEMO/MENU - Photos News"/>
</body>
</html>

Tabela 03 - Presentation Template PT - News


Presentation Template - Foto

O presentation template da foto é bem simples, mostrando o título, foto e descrição.


Figura 05 - Template de apresentação da notícia.

Imagem Código/Descição
<html>
<head>
<Component id="17a4ed0045944938a692f6333a5ed22d:NC9ERU1PL0NTUyAtIEludHJhbmV0" name="DEMO/CSS - Intranet"/>
</head>
<body TEXT="Black" BGCOLOR="White" BACKGROUND="" LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0" BOTTOMMARGIN="0">
<Component id="2f424b0045b6e2a08107ad1dea9632c4:NC9ERU1PL0hUTUwgLSBNZW51IEluTGluZSBFZGl0aW9u" name="DEMO/HTML - Menu InLine Edition"/>
<span class="news-menu-title" ><Element context="current" type="content" key="Title-image"/></span><br><br>
<img src="<Element context="current" type="content" key="photo-image"/>" alt="" title=""><br>
<span class="news-menu-summary"><Element context="current" type="content" key="Summary-image"/></span>
</body>
</html>

Tabela 04 - Presentation Template PT - Photo News

StyleSheet

Um outro ponto fundamental é a apresentação. Existem várias maneira de mostrar as imagens junto com o documento, mas a que escolhi foi listar todas as imagens e botar uma barra de rolagem abaixo destas imagens. O código que estarei utilizando agora, eu encontrei no site CSSplay. Esse site é muito bom e traz vários tipos de layout trabalhando somente com CSS.
Style Descição
#photo_strip {
        width : 800px;
        margin-left : 15px;
}
#photo_strip h1 {
        text-align : center;
        padding : 0;
        margin : 0;
        width : 800px;
        height : 38px;
        line-height : 35px;
        color : #555;
        font-weight : normal;
        font-size : 20px;
        border-bottom : 1px solid #888;
}
Photo_Strip serve para dimensionar a área onde estarei mostrado as imagens.
#container {
        margin : 0;
        padding : 0;
        height : 430px;
        overflow : auto;
        color : #222;
        background : #fff;
}
#container ul {
        margin : 0;
        padding : 0;
        list-style : none;
        white-space : nowrap;
        display : table-row;
}
#container ul li {
        display : table-cell;
        padding : 0 15px;
        background : #fff;
        border-bottom : 1px solid #888;
        vertical-align : top;
}
#container ul li img {
        border : 1px solid #555;
        margin : 30px 0 10px 0;
}
Container é a alteração do design para as tags ul e li.

Tabela 05 - StyleSheet


Criação do Conteúdo

Com todo o design pronto vou criar um notícia e colocar 6 fotos vinculadas a ela. No campo keyword da notícia e das fotos estarei utilizando a palavra "controlesdejogos", que será a chave para o link do conteúdo de notícia com as fotos.

Abaixo você poderá ver a publicação da notícia e o campo keyword preenchido.


Figura 06 - Crianção do conteúdo de notícia


Na tela abaixo está sendo feita a publicação de uma das fotos e novamente você poderá ver o campo keyword preenchido com o mesmo valor colocado no conteúdo de notícia. Eu fiz 6 publicações de fotos dessa mesma forma, mudando somente o título.


Figura 07 - Crianção do conteúdo de foto (segunda foto)


Tanto as fotos quanto a notícia passaram por todo o processo de aprovação do WCM que eu defini. Após se publicado o resultado final ficou da seguinte forma:


Figura 08 - Visualização da notícia publicada


Por último eu cliquei sobre uma das fotos para vê-la em tamanho real.

Figura 09 - Visualozação da foto em tamanho natural


Como disse no início deste post isso é uma maneira de estar vinculando várias fotos a um documento. Mais informações sobre o WCM você poderá encontrar no Infocenter ou no site do produto.

5 comentários:

Daniel Silva disse...

Edson,

qual config de hw vc está usando para rodar esse "demo"? Tenho uma maquina P4 3.0Ghz c/ 3Gb de RAM.. consigo rodar Websphere Portal + WCM pra teste/estudo numa VMWare c/ Windows 2003 Server?

Abs,
Daniel
http://www.dansilva.org

Edson Oliveira disse...

Daniel,

vc consegue usar sim em um VMWare, o que recomendo e não migrar o banco e não usar um LDAP, assim vai ficar + fácil.

Anônimo disse...

Como eu faço para mostrar para o usuário, através de um componente de personalization, mostrar uma lista de documentos armazenados no PDM? Qual a tag q eu utilizo para isso.?

Edson Oliveira disse...

Tente usar a tag DocumentManagerElement.

Wagner disse...

Edson,

Estou tentando adaptar seu exemplo para uma radio em flash, onde os dados que o alimentam vem de um arquivo xml.
Minha idéia seria usar um componente menu para os Albuns e outro para as faixas de cada Álbum. Fazendo a comunicação do Album com as faixas pela Keyword.
Mas, dá pra usar um comp. menu dentro de outro? No caso, dentro do Menu de Albuns, na área de loop, colocaria o menu com as faixas.
Ou tem uma solução melhor pro meu caso?
Desde já agradeço!
Abs,