Coleção

Componente que agrupa outros componentes dentro de uma mesma página.




Como uma coleção pode ser carregada?

A coleção pode ser ativada de duas formas:
- por outros componentes ("article", "album", "video"...), através do "require":
$require = ["collection"])

- por uma página gerada pelo GeraColeção (geramos um "index.htm" que "redireciona" para o último item da Coleção)
#set($content = {

"source" : "commons.uol.com.br/monaco/export/api.uol.com.br/collection/estilo/beleza/data.json",
"type" : "collection"
})
#parse("init.vm")




Qual coleção será carregada?

No carregamento da página, pegamos as TAGS da matéria (ou álbum, ou vídeo...) e buscamos no MonteCarlo (via sourcepath) para verificar se existe alguma coleção com aquela tag.
A definição de qual TAG iremos utilizar para a busca depende de alguma regras:
- Utilizamos a TAG do campo "tag-coleção"
- Se estiver vazio, utilizamos a primeira TAG do campo "tag-outras"
- Se estiver vazio, utilizamos a TAG definida no config do canal ($config.collection)



Origem dos dados da Coleção (Mônaco)

Teremos uma editoria de tagpage para cada área (Estilo, Entretenimento, Esporte e Notícias).
- Estilo: http://publicador.intranet/collection.jsp?contentUri=/conteudo/geral/gera-colecao/tagpage-estilo.xml
- Esporte: http://publicador.intranet/collection.jsp?contentUri=/conteudo/geral/gera-colecao/tagpage-esporte.xml
- Entretenimento: http://publicador.intranet/collection.jsp?contentUri=/conteudo/geral/gera-colecao/tagpage-entretenimento.xml
- Notícias: http://publicador.intranet/collection.jsp?contentUri=/conteudo/geral/gera-colecao/tagpage-noticias.xml
A editoria não é gerenciada pelo GeraMT.

<export> HTM
- Template: /conteudo/templates/htm/default.tpl
- Path: {{CENTRAL}}.uol.com.br/{{CHANNEL}}/{{COLLECTION}}/index.htm
<export> JSON
- Template: /conteudo/templates/json/default.tpl
- Path: commons.uol.com.br/monaco/export/api.uol.com.br/collection/{{collectionName}}.json

publicador.js
- Reponsável por todas as funções de interação do editor/arquiteto (esconder/exibir módulo, travar publicação de campo obrigatório, bloquear a exportação dos dados para o JSON, ...)
- Carrega o "publicador.js" do componente "Home", pois podemos escolher módulos cruzados que aparecem na Coleção

collection.js
- Temos um serviço que lista todas as Coleções: http://conteudo.jsuol.com.br/c/publicador/util/collection.json
- Utilizado dentro das editorias do Mônaco para o editor destacar uma coleção




Tratamento dos Dados

Antes de chegar na "controller.vm", os dados passam pela API de Conteúdo (/macros/api/monaco/collection.vm )

O objeto final possui:
- content.config{}: Configurações gerais da Coleção (título, link, busca...)
- content.config.search{}: parâmetros da busca da Coleção
- content.config.images{}: imagens representativas da Coleção (usadas no componente "related-collection")
- content.config.frequency-rule: frequência que os módulos cruzados podem aparecer
- content.order[]: ordem dos módulos cruzados
- content.components{}: dados de cada um dos módulos cruzados




Exemplo coleção Beleza de UOL Estilo

Dados: commons.uol.com.br/monaco/export/api.uol.com.br/collection/estilo/beleza/data.json