Histórico da Página
Índice
Índice | ||||||
---|---|---|---|---|---|---|
|
Objetivo
Este guia é destinado aos desenvolvedores internos e externos do fluig. O objetivo é identificar e mapear todas as diferenças da Timeline personalizada entre as versões 1.4.x e 1.5.0.
Dica | ||
---|---|---|
| ||
Sugerimos que ao seguir este guia seja utilizado um programa de comparação (diff), que permita visualizadas as diferenças entre as versões 1.4.x e 1.5.0. |
application.info
Na versão 1.5.0 foi melhorado o componente de compartilhamento, sendo necessário adicionar estas dependências para widget.
Atualizar arquivo As linhas abaixo, da versão 1.5.0, devem ser ADICIONADAS para a versão 1.4.xAs linhas a serem adicionadas são:
Bloco de código | ||
---|---|---|
| ||
application.resource.component.X=social/socialshare application.resource.component.X=social/socialsharelist application.resource.component.X=social/socialformanswer |
...
Aviso | ||
---|---|---|
| ||
Não esquecer de substituir o 'X' pela sequência |
...
dos componentes já configurados. |
edit.ftl
...
Arquivo na 1.4.x
...
Arquivo na 1.5.0
Atualizar arquivo 1.4.x
Na versão 1.5.0 foi adicionado mais um tipo de ordenação (mais likes), causando uma pequena alteração na estrutura do HTML:.
Copiar o bloco abaixo que se encontra a partir da linha 34 da versão 1.5.0 e substituir SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<div class="row"> <div class="col-md-4"> <label for="quantityPublication">${i18n.getTranslation('options.ordenation')}</label> <select class="form-control" name="quantityPublication" data-order-type> <option value="CREATION_DATE">${i18n.getTranslation('last.publications')}</option> <option value="LAST_UPDATE">${i18n.getTranslation('recently.publication')}</option> <option value="MORE_LIKE">${i18n.getTranslation('more.like')}</option> </select> </div> </div> |
socialtimeline.properties
Arquivo na 1.4.x
Arquivo na 1.5.0
Na versão 1.5.0 foram adicionadas algumas chaves de tradução e devem ser copiadas para ADICIONADAS para versão 1.4.x.
Não esquecer de replicar as alterações para os arquivos: socialtimeline_en_US.properties, socialtimeline_es.properties, socialtimeline_pt_BR.properties.
Veja abaixo:
Bloco de código | ||
---|---|---|
| ||
this.form=um formulário anwser=responder message.error.video.not.supported=Ops, esse vídeo não é suportado pelo seu navegador. Faça o download do vídeo ou utilize outro navegador. post.denounced= O conteúdo foi denunciado por conter palavras restritas e não está mais disponível options.ordenation=Ordenação padrão more.like=Mais curtidos message.video.not.supported=Esse vídeo não é suportado pelo seu navegador. message.video.not.supported.download=Faça o download do vídeo message.video.not.supported.sulfix=ou utilize outro navegador. |
view.ftl
Arquivo na 1.4.x
Bloco de código | ||
---|---|---|
| ||
<li data-post-id="{{postId}}" class="timeline-list-posts-item"> |
Arquivo na 1.5.0
Bloco de código | ||
---|---|---|
| ||
<li data-post-id="{{postId}}" data-post-community-hidden="{{social.hidden}}" class="timeline-list-posts-item"> |
...
view.ftl
Na linha 40 da versão 1.5.0, copiar o atributo código abaixo e colar na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<li data-post-id="{{postId}}" data-post-community-hidden="{{social.hidden}}" class="timeline-list-posts-item"> |
Na linha 124 da versão 1.5.0, copiar o bloco abaixo e colar na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
{{#shared}} <a href="#" data-clipboard-text="link to copy" data-timeline-action="share" class="fluigicon fluigicon-share-on fs-no-text-underline"></a> {{/shared}} {{^shared}} <a href="#" data-clipboard-text="link to copy" data-timeline-action="share" class="fluigicon fluigicon-share fs-no-text-underline"></a> {{/shared}} <a href="#" class="counter counter-warning pos-right-bottom {{existsNumberShares}}" title="{{i18n.manywatch}}" data-request-running="false" data-timeline-action="listShares">{{numberShares}}</a> |
Copiar as linhas 231 e 239 Na linha 231 da versão 1.5.0 e colar na , copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
{{^removeText}} {{#originalText}} <div class="panel panel-default fs-no-margin timeline-recommendation-content-text"> <div class="panel-body"> <p class="fs-no-margin">{{{originalText}}}</p> </div> </div> {{/originalText}} {{/removeText}} |
Na linha 257 da versão 1.5.0, copiar o atributo código abaixo e colar na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<div class="embed-responsive embed-responsive-16by9" data-container-media-video data-video-rest-url="/socialmedia/api/rest/media/mediafile/{{linkedObject.social.alias}}/VIDEO/{{documentId}}"> |
Na linha 268 da versão 1.5.0, copiar o elemento código abaixo e colar na ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<div data-url-media="/webdesk/streamcontrol/?WDCompanyId={{tenantId}}&WDNrDocto={{documentId}}&WDNrVersao={{linkedObject.objectId}}&thumbnail={{thumbEnum}}" style="display:none"></div> |
Na linha 279 da versão 1.5.0, copiar o atributo código abaixo e colar na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<div class="embed-responsive embed-responsive-16by9" data-container-media-video data-video-rest-url="/socialmedia/api/rest/media/mediafile/{{linkedObject.social.alias}}/VIDEO/{{documentId}}"> |
Na linha 293 da versão 1.5.0, copiar o elemento código abaixo e colar na ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<div data-url-media="/webdesk/streamcontrol/?WDCompanyId={{tenantId}}&WDNrDocto={{documentId}}&WDNrVersao={{linkedObject.objectId}}&thumbnail={{thumbEnum}}" style="display:none"></div> |
Na linha 308 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<p {{#isFolder}}class="fs-no-margin"{{/isFolder}}>{{linkedObject.description}}</p> {{^isFolder}} <p class="fs-no-margin">{{i18n.version}}/{{i18n.revision}}: {{documentVersion}}</p> {{/isFolder}} |
Na linha 329 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<p {{#isFolder}}class="fs-no-margin"{{/isFolder}}>{{linkedObject.description}}</p> {{^isFolder}} <p class="fs-no-margin">{{i18n.version}}/{{i18n.revision}}: {{documentVersion}}</p> {{/isFolder}} |
Na linha 342 da versão 1.5.0, copiar o bloco abaixo e substituir na ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<script type="text/template" class="social-timeline-content-form-template"> <div class="well timeline-recommendation-content"> <div class="media gallery"> <div class="pull-left"> <img src="/webdesk/assets/icons/formulario.png"> </div> <div class="media-body"> <div class="panel panel-default fs-no-margin"> <div class="panel-body"> <p class="fs-no-margin">{{linkedObject.description}}</p> </div> </div> <a href="{{tenantURI}}{{linkedObject.url}}" data-timeline-form-id="{{documentId}}" data-timeline-action="openAnswerForm">{{i18n.anwser}}</a> </div> </div> </div> </script> <script type="text/template" class="social-timeline-content-gallery-template"> <div class="well timeline-recommendation-content"> <div class="media gallery"> <div class="pull-left"> <img src="/webdesk/assets/icons/folder_24.png"> </div> <div class="media-body"> <div class="panel panel-default fs-no-margin"> <div class="panel-body"> <p class="fs-no-margin">{{linkedObject.description}}</p> </div> </div> <a href="{{tenantURI}}/{{urlOrigin}}">{{i18n.details}}</a> </div> </div> </div> </script> |
Na linha 481 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<#-- Se o navegador possuir o flash player instalado é utilizada a técnica de "object" para exibir os vídeos, se não, é utilizado "iframe" por motivos de bugs no IE9. O IE9 não sabe se o flash está habilitado ou não, então ele exibe um thumb "quebrado". Não foi utilizada essa técnica em todos os navegadores pois no chrome acontece erros de requests. http://stackoverflow.com/questions/24490323/google-chrome-cast-sender-error-if-chrome-cast-extension-is-not-installed-or-usi --> {{#hasFlash}} <object class="embed-responsive-item"> <param name="movie" value="{{formattedLink}}?hl={{locale}}&version=3&rel=0" ></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <param name="wmode" value="transparent"></param> <embed src="{{formattedLink}}?hl={{locale}}&version=3&rel=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" wmode="transparent"> </embed> </object> {{/hasFlash}} {{^hasFlash}} <iframe id="ytplayer-{{youtubeVideoId}}-{{postId}}" type="text/html" src="https://www.youtube.com/embed/{{youtubeVideoId}}" frameborder="0" allowfullscreen="allowfullscreen"/> {{/hasFlash}} |
Na linha 531 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
{{#hasFlash}} <object class="embed-responsive-item"> <param name="movie" value="{{formattedLink}}?hl={{locale}}&version=3&rel=0" ></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <param name="wmode" value="transparent"></param> <embed src="{{formattedLink}}?hl={{locale}}&version=3&rel=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" wmode="transparent"> </embed> </object> {{/hasFlash}} {{^hasFlash}} <iframe id="ytplayer-{{youtubeVideoId}}-{{postId}}" type="text/html" src="https://www.youtube.com/embed/{{youtubeVideoId}}" frameborder="0" allowfullscreen="allowfullscreen"/> {{/hasFlash}} |
Na linha 635 da versão 1.5.0, copiar o bloco código abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<a href="{{{tenantURI}}}/social/{{alias}}" data-user-popover="{{alias}}">{{name}}</a> |
Na linha 650 da versão 1.5.0, copiar o bloco abaixo e adicionar na ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
<script type="text/template" class="social-timeline-video-not-supported-template"> <div class="timeline-video-not-supported"> <div class="clearfix fs-margin-auto timeline-container-icon-download-video"> <img class="fs-float-left timeline-icon-download-video" src="${basePath}/resources/images/image-video-error.svg"> <h1 class="fs-txt-left fs-no-margin-top">Ops!</h1> <p class="fs-txt-left">{{i18n.videoNotSupported}}</p> </div> <p class="timeline-description-download-video text-center"> <a href="#" class="fs-text-underline" data-timeline-action="downloadVideo">{{i18n.videoNotSupportedDownload}}</a> {{i18n.videoNotSupportedSulfix}} </p> </div> </script> |
image-video-error.svg
Atualizar arquivo 1.4.x.
Copiar a imagem image-video-error.svg da versão 1.5.0 para a versão 1.4.x no seguinte caminho:
timeline/src/main/webapp/resources/images/
socialtimeline.js
Na linha 9 da versão 1.5.0, copiar o conteúdo abaixo e ADICIONAR na versão 1.4.x:
...
Bloco de código | ||
---|---|---|
| ||
'fluig-share': ['click_share'] |
...
Na linha 123 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
// Validação para verificar se o flash está instalado para a renderização de vídeos. try { this.hasFlash = (typeof navigator.plugins == 'undefined' || navigator.plugins.length == 0) ? !!(new ActiveXObject('ShockwaveFlash.ShockwaveFlash')) : navigator.plugins['Shockwave Flash']; } catch (ex) { this.hasFlash = false; } |
...
Copiar a linha 145 da versão 1.5.0 e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
if(this.continueScroll && !this.isEditMode && this.style !== 'singlepost') { |
...
Na linha 219 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
findPost: function(postId, isNew) { var that = this, dataPost = [] ; this.serviceFindPost(postId, function(err, data) { if(err) { that.showListPostsMessage(err); return false; } // foi adicionado um tratamento para quando o post estiver denunciado if(data && data.content && data.content.numberDenouncements == 0) { dataPost.push(data.content); that.showPosts(dataPost, isNew); } else { that.showListPostsMessage(); } if(data && data.content && data.content.numberDenouncements != 0){ that.showFeedbackMessage(that.i18n.messages['post.denounced'], 'warning'); } }); }, |
Na linha 244 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
showPosts: function(posts, isNew) { var data = {}, html = '', len = posts.length, i = 0, comLen, j ; // Validar se o post a ser exibido já está na listagem. if(isNew && $('[data-post-id="' + posts[0].postId + '"]', this.DOM).length) { return false; } // Responsável por manipular os dados de posts retornados no objeto "posts" e enviar // os mesmos prontos para o mustache montar o post. for(i; i < len; i++) { // Garantir que a timeline apresente algum post sem quebrar o script. try { posts[i].tenantURI = this.tenantURI; posts[i].locale = this.locale; posts[i].text = this.generateContentTextFormatted(posts[i].text, posts[i].mentions); posts[i].variableContent = this.generateTemplateVariableContent(posts[i]); posts[i].postHeader = this.generatePostHeader(posts[i]); posts[i].i18n = this.i18n['labels']; posts[i].allowsRemoveActions = this.loggedUserAlias === posts[i].user.alias; posts[i].existsNumberLikes = this.generateListClass(posts[i].numberLikes); posts[i].existsNumberComments = this.generateListClass(posts[i].numberComments); posts[i].existsNumberWatchers = this.generateListClass(posts[i].numberWatchers); posts[i].existsNumberShares = this.generateListClass(posts[i].numberShares); posts[i].existsMoreComments = posts[i].numberComments > 2; posts[i].shared = 'fs-display-inline-block' == posts[i].existsNumberShares; posts[i].hasFlash = this.hasFlash ? true : false; comLen = posts[i].comments.length; j = 0; // Responsável por manipular os dados de comentários retornados no objeto "posts". for(j; j < comLen; j++) { posts[i].comments[j].allowsRemoveActions = this.loggedUserAlias === posts[i].comments[j].user.alias; posts[i].comments[j].existsNumberLikes = this.generateListClass(posts[i].comments[j].numberLikes); posts[i].comments[j].comment = this.generateContentTextFormatted(posts[i].comments[j].comment, posts[i].comments[j].mentions); } // Esse tratamento é feito pois quando um post é criado, o serviço de acompanhar // automaticamente é assincrono, então ao exibir o post na tela o mesmo não está // acompanhado pelo usuário criador ainda. if(isNew && this.loggedUserAlias === posts[i].user.alias) { posts[i].watching = true; posts[i].numberWatchers = 1; posts[i].existsNumberWatchers = 'fs-display-inline-block'; } html += Mustache.render(this.templates['social-timeline-post-template'], posts[i], { postComments: this.templates['social-timeline-comment-template'], postMoreComments: this.templates['social-timeline-show-more-comments-template'], postContent: this.templates[posts[i].variableContent.tlpName] }); } catch(err) { if(console) console.log(posts[i] || '', err); } } // Validar se é um novo post ou listagem/paginação. if(isNew) { $('[data-timeline-content-message]', this.DOM).remove(); this.$listPostDOM.prepend(html); } else { this.$listPostDOM.append(html); } $('#timeline-ordering-posts', this.DOM).removeAttr('disabled'); if(this.$btnShowMore) { this.$btnShowMore.removeAttr('disabled'); } this.showVideos(); this.showCardPopover(); this.instanceTimeInteraction(); this.entityRetrieveUndergoing = false; }, |
...
Na linha 469 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
showVideos: function() { var that = this, videos = document.querySelectorAll('.video-js'), isLoaded = false ; [].forEach.call(videos, function(item, idx) { isLoaded = item.getAttribute('data-is-loaded'); if(!isLoaded) { // esse tratamento é feito para vídeos com problemas de renderização // na timeline. A única maneira encontrada de capturar esse erro foi // adicionar "na mão" o listener do evento error do vídeo. document.getElementById(item.id).addEventListener('error', function(ev) { var isError = ev.path ? false : true; if(isError) { $(this) .parents('[data-container-media-video]') .append(Mustache.render(that.templates['social-timeline-video-not-supported-template'], { i18n: that.i18n['messages'] })); } }, true); videojs(item.id, { width: '100%', height: '100%' }); item.setAttribute('data-is-loaded', 'true'); } }); }, |
...
Na linha 551 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
downloadVideoAction: function(el, ev, id) { var $el = $(el), $post = $el.parents('[data-post-id="' + id + '"]'), restUrl = $post.find('[data-video-rest-url]').data('video-rest-url') ; window.location = restUrl; }, |
...
Na linha 788 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
listSharesAction: function(el, ev, id) { SOCIALBC.shareListModal({ sociableId : id, instanceId: Date.now() }); }, |
...
Na linha 871 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
...
Na linha 967 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
shareAction: function(el, ev, id) { var $el = $(el), preview = this.processPreview($el), loggedUserAlias = WCMAPI.getUserLogin(), id = $el.parents('[data-comment-id]').data('comment-id') || $el.parents('[data-post-id]').data('post-id'), onlyLink = $el.parents('[data-post-community-hidden]').data('post-community-hidden'), url = WCMAPI.getServerURL() + WCMAPI.getProtectedContextPath() + "/" + WCMAPI.getTenantCode() + '/post/' + loggedUserAlias + '/' + id ; SOCIALBC.share($el, { showOnlyLink: onlyLink, shareType: 'SOCIABLE', type: 'POST', preview: preview, link: url, paramId: id, widthNoFlash: '200px' }); }, |
...
Na linha 987 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
processPreview: function($el) { var $previewVideo = $el.parents('.timeline-list-posts-item').find('[data-url-media]'), imgEl, miniature, preview ; if($previewVideo.length) { imgEl = $('<img>'); imgEl.attr('src', $previewVideo.data('url-media')); imgEl.addClass('media-photo'); return imgEl.wrap('<p>').parent().html(); } else { miniature = $el.parents('.timeline-list-posts-item').find('.panel-body'); preview = $(miniature).find('.timeline-recommendation-content'); if(preview.length) { preview = preview.clone().wrap('<p>').parent().html(); preview = preview.replace(/well+/, ''); return preview; } return miniature.clone().wrap('<p>').parent().html(); } }, |
...
Na linha 1009 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
controlInteractionActions: function($el, interactionType) { var numberInteraction = +$el.text(); if(interactionType === 'add') { ++numberInteraction; } else { --numberInteraction; } if(numberInteraction > 0) { $el .text(numberInteraction) .removeClass('hidden') .addClass('fs-display-inline-block'); } else { $el .text(numberInteraction) .removeClass('fs-display-inline-block') .addClass('hidden'); } }, |
Na linha 1033 da versão 1.5.0, copiar o bloco abaixo e ADICIONAR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
returnOthersOrderTypes: function() { var index, allOrderTypes; allOrderTypes = ['CREATION_DATE', 'LAST_UPDATE', 'MY_PUBLICATIONS', 'MORE_LIKE']; index = allOrderTypes.indexOf(this.orderType); allOrderTypes.splice(index,1); return allOrderTypes; }, |
...
Na linha 1044 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
generateOrderAction: function() { var orderType = this.orderType, otherOrderType = this.returnOthersOrderTypes(), permissionOrder = this.permissionOrder, actions = [] ; switch(orderType) { case 'MY_PUBLICATIONS': if(permissionOrder) { for (var i = 0; i < otherOrderType.length; i++) { var optionOrderType = otherOrderType[i]; actions.push({ orderType: optionOrderType, orderName: this.i18n.labels[optionOrderType] }); } } else { actions.push({ orderType: this.configOrderType, orderName: this.i18n.labels[this.configOrderType] }); } break; case 'CREATION_DATE': if(permissionOrder) { for (var i = 0; i < otherOrderType.length; i++) { var optionOrderType = otherOrderType[i]; actions.push({ orderType: optionOrderType, orderName: this.i18n.labels[optionOrderType] }); } } else { actions.push({ orderType: 'MY_PUBLICATIONS', orderName: this.i18n.labels['MY_PUBLICATIONS'] }); } break; case 'LAST_UPDATE': if(permissionOrder) { for (var i = 0; i < otherOrderType.length; i++) { var optionOrderType = otherOrderType[i]; actions.push({ orderType: optionOrderType, orderName: this.i18n.labels[optionOrderType] }); } } else { actions.push({ orderType: 'MY_PUBLICATIONS', orderName: this.i18n.labels['MY_PUBLICATIONS'] }); } break; case 'MORE_LIKE': if(permissionOrder) { for (var i = 0; i < otherOrderType.length; i++) { var optionOrderType = otherOrderType[i]; actions.push({ orderType: optionOrderType, orderName: this.i18n.labels[optionOrderType] }); } } else { actions.push({ orderType: 'MY_PUBLICATIONS', orderName: this.i18n.labels['MY_PUBLICATIONS'] }); } break; } return actions; }, |
Na linha 1125 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
generatePostHeader: function(data) { var obj = {}; obj.person = { personName: data.user.name, personAlias: data.user.alias, personPage: data.user.page }; if(data.type === 'RECOMMENDATION') { obj.verb = this.i18n.labels['recommended']; if(!data.linkedObject || !data.linkedObject.objectClass || data.linkedObject.objectClass === 'POST') { obj.object = { objectType: this.i18n.labels['this.publication'], objectUrl: data.linkedObject.url || data.url }; } else if(data.linkedObject && data.linkedObject.objectClass) { if(data.linkedObject.objectClass.indexOf('com.totvs.technology.social.relation.entity.Social') !== -1) { obj.object = { objectType: this.i18n.labels['this.connection'], objectUrl: data.linkedObject.url || data.url }; } else if(data.linkedObject.objectClass.indexOf('com.totvs.technology.social.article') !== -1) { obj.object = { objectType: this.i18n.labels['this.article'], objectUrl: data.linkedObject.url || data.url }; } else if(data.linkedObject.objectClass.indexOf('com.totvs.technology.social.form') !== -1) { obj.object = { objectType: this.i18n.labels['this.form'], objectUrl: data.linkedObject.url || data.url }; } else { obj.object = { objectType: this.i18n.labels['this.document'], objectUrl: data.linkedObject.url || data.url }; } } else { obj.object = { objectType: this.i18n.labels['this.content'], objectUrl: data.linkedObject.url || data.url }; } if(data.originShare && data.originShare.type === 'COMMUNITY') { obj.viaThe = { viaTheName: data.originShare.name, viaTheAlias: data.originShare.alias, viaThePage: data.originShare.page }; } } if(data.social.type === 'COMMUNITY') { obj.place = { placeName: data.social.name, placeAlias: data.social.alias, placePage: data.social.page }; } else if(data.originShare && data.originShare.type === "COMMUNITY") { obj.place = { placeName: data.originShare.name, placeAlias: data.originShare.alias, placePage: data.originShare.page }; } return obj; }, |
...
Na linha 1203 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
generateListClass: function(numberActions) { if(+numberActions > 0) { return 'fs-display-inline-block'; } else { return 'hidden'; } }, |
...
Na linha 1212 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
generateTemplateVariableContent: function(data) { var obj = {}, documentId, shareMentionVO, that = this ; obj.thumbEnum = this.thumbEnum; if(data.type === 'RECOMMENDATION') { obj.isRecommendation = true; } else { obj.isRecommendation = false; } // Diferencia se o conteúdo compartilhado é um post ou não. if(data.type === 'RECOMMENDATION' && (!data.linkedObject || !data.linkedObject.objectClass || data.linkedObject.objectClass === 'POST')) { obj.linkedObject = data.linkedObject.linkedObject; // Se o post compartilhado possui texto, o mesmo precisa ser formatado. if(data.linkedObject && data.linkedObject.text) { shareMentionVO = data.shareMentionVO || {}; obj.originalText = this.generateContentTextFormatted(data.linkedObject.text, shareMentionVO.mentions); } // Se possui linkedObject e o mesmo foi removido retorna. if(data.linkedObject && data.linkedObject.removed) { // Template para exibição de conteúdo removido. obj.tlpName = 'social-timeline-content-removed-template'; return obj; } // Se o post compartilhado tiver um link do youtube, retorna. else if(obj.linkedObject && obj.linkedObject.youtubeLink) { // Template para exibição de vídeo do youtube obj.tlpName = 'social-timeline-content-youtube-template'; return obj; } // Se o post compartilhado não tiver anexado nenhuma media retorna o template genérico. else if(!obj.linkedObject) { // Template para exibição de conteúdo genérico. obj.tlpName = 'social-timeline-content-generic-template'; return obj; } } else { obj.linkedObject = data.linkedObject; // Se possui linkedObject e o mesmo foi removido retorna. if(obj.linkedObject && obj.linkedObject.removed) { // Template para exibição de conteúdo removido. obj.tlpName = 'social-timeline-content-removed-template'; return obj; } // Se for vídeo do youtube retorna. else if(data.youtubeLink) { // Template para exibição de vídeo do youtube. obj.tlpName = 'social-timeline-content-youtube-template'; return obj; } } if(obj.linkedObject && (obj.linkedObject.url || data.urlOrigin) && obj.linkedObject.objectId) { if(!obj.linkedObject.removed) { // Necessário para buscar a url correta do conteúdo. obj.linkedObject.url = obj.linkedObject.url || data.urlOrigin; // Necessário para buscar o id do documento se existir. obj.documentId = obj.linkedObject.objectClass ? obj.linkedObject.objectClass.match(/(?:.*)\.(.+)/)[1] : ''; if(obj.linkedObject.objectClass.indexOf('com.totvs.technology.social.document') !== -1) { // Template para exibição de imagens. if(obj.linkedObject.thumbURL && this.validateFilesTypes(obj.linkedObject.thumbURL.toLowerCase(), 'validImagesFilesTypes')) { if(data.linkedObject.sociableType == "SocialObject"){ obj.removeText = true; } obj.tlpName = 'social-timeline-content-media-image-template'; return obj; } // Template para exibição de vídeos. else if(obj.linkedObject.thumbURL && obj.linkedObject.description && this.validateFilesTypes(obj.linkedObject.thumbURL.toLowerCase(), 'validVideosFilesTypes') || this.validateFilesTypes(obj.linkedObject.description.trim().toLowerCase(), 'validVideosFilesTypes')) { obj.tlpName = 'social-timeline-content-media-video-template'; return obj; } // Template para exibição de documentos. else { // Se tiver uma url de origem if(data.urlOrigin){ // Template para exibição de categoria e galeria da comunidade. obj.tlpName = 'social-timeline-content-gallery-template'; return obj; } // isFolder (atribuído nesse momento baseando-se com 'contains' no // atributo thumbUrl pois o objectType sempre vem como documento). obj.isFolder = obj.linkedObject.thumbURL.toLowerCase().indexOf("folder") > -1; obj.documentVersion = FLUIGC.utilities.parseVersion(obj.linkedObject.objectId || 1000); obj.tlpName = 'social-timeline-content-media-document-template'; return obj; } } // Template para exibição de socials. else if(obj.linkedObject.objectClass.indexOf('com.totvs.technology.social.relation.entity.Social') !== -1) { if(obj.linkedObject.thumbURL) { obj.tlpName = 'social-timeline-content-social-template'; return obj; } } // Template para exibição de artigos. else if(obj.linkedObject.objectClass.indexOf('com.totvs.technology.social.article') !== -1) { if(obj.linkedObject.thumbURL) { obj.tlpName = 'social-timeline-content-article-template'; return obj; } } // Template para resposta de formulários. else if(obj.linkedObject.objectClass.indexOf('com.totvs.technology.social.form') !== -1) { obj.tlpName = 'social-timeline-content-form-template'; return obj; } // Template para exibição de documentos genéricos não tratados. if(obj.linkedObject.thumbURL) { obj.tlpName = 'social-timeline-content-generic-media-template'; return obj; } } // Template para exibição de conteúdo removido. else { obj.tlpName = 'social-timeline-content-removed-template'; return obj; } } obj.tlpName = false; return obj; }, |
...
Na linha 1391 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
formatLink: function(text) { var html = Mustache.render(this.templates['social-timeline-link-template']); var htmlResult = text.replace(/((((https?|ftp|file):\/\/)|(www))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, html); htmlResult = htmlResult.replaceAll('href="www','href="http://www'); return htmlResult; }, |
Na linha 1592 da versão 1.5.0, copiar o bloco abaixo e substituir na SUBSTITUIR na versão 1.4.x:
Bloco de código | ||
---|---|---|
| ||
textComplaintValidate: function(text) { var listWords = text.match(/(\w+){3,}/g) || []; if(text === '') { socialGlobal.alert(this.i18n.messages['denounce.reason.empty']); return true; } if(listWords.length < 4) { socialGlobal.alert(this.i18n.messages['denounce.content.invalid']); return true; } return false; } |
socialtimelineedit.js
Arquivo na Na linha 123 da versão 1.5.0, copiar o bloco abaixo e SUBSTITUIR na versão 1.4.x:
Bloco de código | |
---|---|
|
Arquivo na 1.5.0
| |
setOrderType: function() {
$('[data-order-type]', this.DOM).find("option[value='"+ this.orderType +"']").prop('selected', this.orderType);
}, |
Atualizar arquivo 1.4.x