Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Índice
outlinetrue
exclude.*ndice
stylenone


Arquivos básicos do widget Social Poster

O widget Social Poster é desenvolvido baseada baseado no framework de templates FreeMarker (.ftl). O FreeMarker é responsável pela camada de visualização, onde sobre ele é escrito todo HTML do componente. Bem como o(s) arquivo(s) de FreeMarker, todos os componentes possuem seus arquivos próprios de CSS (.css) e JavaScript (.js).

Além desses componentes, o widget Social Poster utiliza um componente de template chamado Mustache, que é uma especificação de templates que não utiliza lógica, ou seja, não possui declarações com if, for, while etc, .; toda sua construção é baseada em tags.

Ação de Publicação

O Social Poster é responsável por absorver todo o conteúdo digitado pelo usuário no Campo de Publicação e enviar para a exibição de uma nova Publicação publicação na Timeline.

Ação de Publicação de Usuário

Ação de Publicação de Usuário é o campo de texto onde o usuário digita o conteúdo para Publicaçãopublicação. Esse campo de texto está disponível em sua na página inicial.

Image Modified

Figura 1 - Área de publicação de usuário

...

Na publicação em comunidade, além de publicar conteúdo de texto, é possível anexar uma ou várias imagens, um vídeo, documento ou um artigo de acordo com a disponibilidade desses recursos.

Image Modified

Figura 2 - Área de publicação de comunidade

...

Veja a seguir a estrutura que compõe a o widget Social Poster:

Bloco de código
languagexml
titleNo HTML
<div class="wcm-widget-class wcm-widget-post-share">
    <!-- Verifica se o recurso está bloqueado -->
    {{#socialStateBlocked}}
        <!-- Verifica se tipo é comunidade -->
        {{#socialTypeCommunity}}
            <p class="message-information">${i18n.getTranslation('community.disabled')}</p>
        {{/socialTypeCommunity}}
        <!-- Verifica se tipo é usuário -->
        {{#socialTypeUser}}
            <p class="message-information">${i18n.getTranslation('user.disabled')}</p>
        {{/socialTypeUser}}
    {{/socialStateBlocked}}
    <!-- Se o recurso não está bloqueado faz carregamento dos elementos da social poster -->
    {{#socialStateActive}}
        <!-- Verifica se existe um alias -->
        {{#socialAlias}}
            <!-- Verifica se usuário está em sua própria página ou se usuário é membro da comunidade -->
            {{#isUserOwnPageOrMember}}
                <!-- Área da imagem do usuário ou comunidade -->
                <figure class="user-avatar-container">
                    <img src="/social/api/rest/social/imagetype/{{socialType}}/thumb/{{socialAlias}}" class="image-responsive">
                </figure>
                <form method="post" class="totvs-form grid post-share-form" data-post-share-form>
                    <fieldset class="col-1">
                        <!-- Área de postagem do conteúdo -->
                        <div class="post-area" data-post-area>
                            <div class="post-share-text-container">
                                <span class="close-post-share byyou-controller byyou-controller-close3" data-close-post-share></span>
                                <textarea name="post-share-text" class="post-share-text" id="post-share-text" placeholder="${i18n.getTranslation('share.question')}" data-post-share-text></textarea>
                            </div>
                            <!-- Verifica se tipo é comunidade -->
                            {{#socialTypeCommunity}}
                                <nav class="post-options-container">
                                    <!-- Habilita link de seleção de imagem se recurso estiver disponível -->
                                    {{#photoIsEnabled}}
                                        <a href="#" class="post-options post-photo" data-attach-media="photo">${i18n.getTranslation('post.picture')}</a>
                                    {{/photoIsEnabled}}
                                    <!-- Habilita link de seleção de vídeo se recurso estiver disponível -->
                                    {{#videoIsEnabled}}
                                        <a href="#" class="post-options post-video" data-attach-media="video">${i18n.getTranslation('post.video')}</a>
                                    {{/videoIsEnabled}}
                                    <!-- Habilita link de seleção de documento se recurso estiver disponível -->
                                    {{#documentIsEnabled}}
                                        <a href="#" class="post-options post-document" data-attach-media="document">${i18n.getTranslation('post.document')}</a>
                                    {{/documentIsEnabled}}
                                </nav>
                            {{/socialTypeCommunity}}
                        </div>
                    </fieldset>
                    <fieldset class="col-1">
                        <div class="submit-area group form-inline">
                            <!-- Área da lista de restrição do post e do botão de envio -->
                            <div class="post-submit-type fr">
                                <span class="post-text-limit">600</span>
                                <select name="post-share-visibility" class="post-share-visibility" {{#postShareVisibility}}disabled{{/postShareVisibility}}>
                                    <!-- Se página possuir contexto de usuário habilita opções de acordo com o mesmo -->
                                    {{#socialTypeUser}}
                                        <option value="PUBLIC">${i18n.getTranslation('public')}</option>
                                        <option value="PRIVATE">${i18n.getTranslation('follower')}</option>
                                    {{/socialTypeUser}}
                                    <!-- Se página possuir contexto de comunidade habilita opções de acordo com o mesmo -->
                                    {{#notSocialTypeUser}}
                                        <!-- Se conteúdo for privado não exibe opção 'publico' -->
                                        {{#socialPrivateContent}}
                                            <option value="PRIVATE">${i18n.getTranslation('member')}</option>
                                        {{/socialPrivateContent}}
                                        <!-- Se conteúdo não for privado adiciona opção 'publico' -->
                                        {{#notSocialPrivateContent}}
                                            <option value="PUBLIC">${i18n.getTranslation('public')}</option>
                                            <option value="PRIVATE">${i18n.getTranslation('member')}</option>
                                        {{/notSocialPrivateContent}}
                                    {{/notSocialTypeUser}}
                                </select>
                                <!-- Se o recurso está bloqueado desabilita botão -->
                                {{#socialStateBlocked}}
                                    <button class="totvs-btn-disabled" disabled="disabled">${i18n.getTranslation('profile.disabled')}</button>
                                {{/socialStateBlocked}}
                                <!-- Se o recurso não está bloqueado exibe botão -->
                                {{#notSocialStateBlocked}}
                                    <button type="submit" class="totvs-btn-disabled post-share-submit" disabled="disabled">${i18n.getTranslation('publish')}</button>
                                {{/notSocialStateBlocked}}
                            </div>
                        </div>
                    </fieldset>
                </form>
            {{/isUserOwnPageOrMember}}
        {{/socialAlias}}
    {{/socialStateActive}}
</div>

...