...
Na linha 9 da versão 1.5.0 copiar o conteúdo abaixo e colar ADICIONAR na versão 1.4.x:
Bloco de código |
---|
|
hasFlash: null, |
Copiar as linhas 50, 60 e 85 da versão 1.5.0 e colar na ADICIONAR na versão 1.4.x:
Bloco de código |
---|
|
'this.form': '${i18n.getTranslation("this.form")}',
'MORE_LIKE': '${i18n.getTranslation("more.like")}',
'anwser' : '${i18n.getTranslation("anwser")}', |
Copiar as linhas 95 até 101 da versão 1.5.0 e colar na ADICIONAR na versão 1.4.x:
Bloco de código |
---|
|
'video.not.supported': '${i18n.getTranslation("message.error.video.not.supported")}',
'post.denounced': '${i18n.getTranslation("post.denounced")}',
'denounce.reason.empty': '${i18n.getTranslation("alert.message.denounce.reason.empty")}',
'denounce.content.invalid': '${i18n.getTranslation("alert.message.denounce.content.invalid")}',
'videoNotSupported': '${i18n.getTranslation("message.video.not.supported")}',
'videoNotSupportedDownload': '${i18n.getTranslation("message.video.not.supported.download")}',
'videoNotSupportedSulfix': '${i18n.getTranslation("message.video.not.supported.sulfix")}' |
Copiar a linha 111 da versão 1.5.0 e colar na 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 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;
}
// Tratamento provisório para mudar o title da página
// quando a visualização for "singlepost".
if(this.style === 'singlepost') {
$('head').find('title').text(this.i18n.titles['publication']);
} |
Copiar a linha 145 da versão 1.5.0 e substituir SUBSTITUIR na versão 1.4.x:
Bloco de código |
---|
|
if(this.continueScroll && !this.isEditMode && this.style !== 'singlepost') { |
Na linha 229 219 da versão 1.5.0 copiar o bloco abaixo e adicionar na 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');
}
});
}, |
Copiar as linhas 275 e 276 Na linha 244 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 |
---|
|
posts[i].sharedshowPosts: function(posts, isNew) {
var data = {},
html = 'fs-display-inline-block'',
len == posts[i].existsNumberShares;
posts[i].hasFlash = this.hasFlash ? true : false; |
Na linha 291 da versão 1.5.0 copiar o bloco abaixo e substituir na versão 1.4.x:
Bloco de código |
---|
|
.length,
i = 0,
comLen,
j
;
// Validar se o post a ser exibido já está na listagem.
if(isNew && this.loggedUserAlias === posts[i].user.alias$('[data-post-id="' + posts[0].postId + '"]', this.DOM).length) {
posts[i].watching = true;
posts[i].numberWatchers = 1;
posts[i].existsNumberWatchers = 'fs-display-inline-block';
} |
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 Copiar as linhas 470 e 471 da versão 1.5.0 e substituir na versão 1.4.x:
Bloco de código |
---|
|
showVideos: function() {
var that = this,
videos = document.querySelectorAll('.video-js'), |
Na linha 478 da versão 1.5.0 copiar o bloco abaixo e substituir na versão 1.4.x:
Bloco de código |
---|
|
if
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 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 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 ADICIONAR na versão 1.4.x:
Bloco de código |
---|
|
openAnswerFormAction: function(el, ev) {
var $el = $(el),
documentId = $el.data('timeline-form-id')
;
SOCIALBC.openAnswerForm(documentId);
}, |
Na linha 967 da versão 1.5.0 copiar o bloco abaixo e substituir na 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 substituir na 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 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 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 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 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 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 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 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;
}, |
...