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
...
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
...
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 versão 1.4.x:
...
Na linha 1592 da versão 1.5.0, copiar o bloco abaixo e 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