Í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.5.11 e 1.5.12.
Dica
Sugerimos que ao seguir este guia seja utilizado um programa de comparação (diff), que permita visualizar as diferenças entre as versões.
application.info
Na versão 1.5.12 não foi realizada nenhuma modificação nesse arquivo.
view.ftl
Nas linhas,
42: SUBSTITUIR o conteúdo da linha 42 por:
<div class="panel-body fs-sm-space clearfix"> <div class="media">
80: ADICIONAR o conteúdo:
{{#editionDate}} <span class="timeline-header-no-link fs-no-bold"> - </span> <span data-icon-edited-date-{{postId}} class="fluigicon fluigicon-user-edit fs-cursor-default" title="{{i18n.edited}} {{i18n.in}} {{editionDate}}"></span> {{/editionDate}} {{^editionDate}} <div data-edited-date-{{postId}}></div> {{/editionDate}}
91: SUBSTITUIR o conteúdo da linha 91 por:
<p data-timeline-content-{{postId}} class="timeline-text-content">{{{text}}}</p>
100: ADICIONAR o conteúdo:
{{#allowsEditActions}} <div class="timeline-edit-area" data-edit-area-{{postId}}> </div> {{/allowsEditActions}} </div>
154: ADICIONAR o conteúdo:
{{#allowsEditActions}} <li class="timeline-list-actions-item"> <span class="counter-group"> <a href="#" class="fluigicon fluigicon-pencil fs-no-text-underline" title="{{i18n.edit}}" data-request-running="false" data-timeline-action="editPost"></a> </span> </li> {{/allowsEditActions}}
191:SUBSTITUIR o conteúdo da linha 191 por
<div class="panel-body fs-sm-space clearfix"> <div class="media">
210: ADICIONAR o conteúdo:
{{#editionDate}} <span class="timeline-header-no-link fs-no-bold"> - </span> <span data-icon-edited-date-{{id}} class="fluigicon fluigicon-user-edit fs-cursor-default" title="{{i18n.edited}} {{i18n.in}} {{editionDate}}"></span> {{/editionDate}} {{^editionDate}} <div data-edited-date-{{id}}></div> {{/editionDate}}
219: SUBSTITUIR o conteúdo da linha 219 por:
<p data-timeline-content-{{id}} class="timeline-text-content">{{{comment}}}</p>
221: ADICIONAR o conteúdo:
</div> {{#allowsEditActions}} <div class="timeline-edit-area" data-edit-area-{{id}}> </div> {{/allowsEditActions}}
242: ADICIONAR o conteúdo:
{{#allowsEditActions}} <li class="timeline-list-actions-item"> <span class="counter-group"> <a href="#" class="fluigicon fluigicon-pencil fs-no-text-underline" title="{{i18n.edit}}" data-request-running="false" data-timeline-action="editComment"></a> </span> </li> {{/allowsEditActions}}
672: ADICIONAR o conteúdo
<script type="text/template" class="social-timeline-edit-content-template"> <div class=""> <textarea name="content-text-edit-{{id}}" class="content-text-edit" id="content-text-edit" data-content-text-edit data-sociable-type="{{sociable}}">{{text}}</textarea> </div> <div class="edit-buttons-area fr"> <span class="post-text-limit-edit">{{count}}</span> <button class="btn btn-default" data-timeline-action="cancelEdit">Cancelar</button> <button class="btn btn-primary edit-content-button" data-timeline-action="saveEdit">Publicar</button> </div> </script> <script type="text/template" class="social-edited-date"> <span class="timeline-header-no-link fs-no-bold"> - </span> <span class="fluigicon fluigicon-user-edit fs-cursor-default" title="{{editionDate}}"></span> </script>
socialtimeline.js
Nas linhas:
35: ADICIONAR o seguinte conteúdo:
mentionsObj: null,
90: ADICIONAR o seguinte conteúdo:
'edit' :'${i18n.getTranslation("edit")}', 'edited' :'${i18n.getTranslation("edited")}', 'in' :'${i18n.getTranslation("in")}',
111: ADICIONAR o seguinte conteúdo:
'post.success.edited': '${i18n.getTranslation("post.success.edited")}', 'comment.success.edited': '${i18n.getTranslation("comment.success.edited")}'
116: ADICIONAR o seguinte conteúdo:
'content-text-edit': ['keyup_resetCountText', 'focus_resetCountText', 'blur_resetCountText', 'input_resetCountText']
276: ADICIONAR o seguinte conteúdo:
var that = this;
309: ADICIONAR o seguinte conteúdo:
posts[i].allowsEditActions = ((this.loggedUserAlias === posts[i].user.alias) && (this.hasPermission(posts[i].permissions,'EDIT'))); posts[i].editionDate = posts[i].editionDate != null ? that.formatEditionDate(posts[i].editionDate) : false;
323: ADICIONAR o seguinte conteúdo:
posts[i].comments[j].editionDate = posts[i].comments[j].editionDate != null ? that.formatEditionDate(posts[i].comments[j].editionDate) : false;
388: ADICIONAR o seguinte conteúdo:
data[i].allowsEditActions = (this.loggedUserAlias === data[i].user.alias && this.hasPermission(permissions,'EDIT'));
912: ADICIONAR o seguinte conteúdo:
/* --- EDIÇÃO DE POSTS E COMENTÁRIOS --- */ // ação para apendar um textarea e editar o post editPostAction: function(el, ev, id) { var that = this; // clique no botão de editar do mesmo post, ação nula. if($('[name="content-text-edit-' + id +'"]').length > 0){ return; } this.cancelEditAction(); $(el).addClass('fs-transparent-25'); that.mentionsObj = null; var postText = $('[data-timeline-content-' + id + ']', this.DOM); // recupera o conteúdo do post this.serviceFindPost(id, function(err, data) { if (err) { that.showListPostsMessage(err); return false; } if (data && data.content) { var count = 600 - data.content.text.length; postText.hide(0, function() { var html = Mustache.render(that.templates['social-timeline-edit-content-template'], { id: id, text: data.content.text, count: count, sociable: 'editPost' }); $('[data-edit-area-' + id + ']', this.DOM).append(html); that.mentions(); that.mentionsObj = data.content.mentions; }); } }); }, // ação para apendar um textarea e editar o comentário editCommentAction: function(el, ev, id) { var that = this; // clique no botão de editar do mesmo comentário, ação nula. if($('[name="content-text-edit-' + id +'"]').length > 0){ return; } this.cancelEditAction(); $(el).addClass('fs-transparent-25'); that.mentionsObj = null; // recupera o conteúdo do comentário var commentText = $('[data-timeline-content-' + id + ']', this.DOM); this.serviceFindComment(id, function(err, data) { if (err) { that.showListPostsMessage(err); return false; } if (data && data.content) { var count = 600 - data.content.commentWithoutMention.length; commentText.hide(0, function() { var html = Mustache.render(that.templates['social-timeline-edit-content-template'], { id: id, text: data.content.comment, count: count, sociable: 'editComment' }); $('[data-edit-area-' + id + ']', this.DOM).append(html); that.mentions(); that.mentionsObj = data.content.mentions; }); } }); }, // antes de abrir um textarea para edição, remove qualquer outra edição em aberto e volta a exibir o conteúdo atual // ação padrão cancelEditAction: function(){ $('a.fluigicon-pencil').removeClass('fs-transparent-25'); $('.timeline-text-content').show(); $('.timeline-edit-area').html(""); }, // publica a edição do posts/comentario saveEditAction: function(el, ev, id){ var that = this; var newText = ""; var sociable = $('#content-text-edit').data('sociable-type'); $('#content-text-edit').mentionsInput('val', function(text) { newText = text; }); if (that.mentionsObj) { var listMentions = Object.keys(that.mentionsObj); listMentions.forEach(function(data, i) { var regex = new RegExp(that.mentionsObj[data], 'g'); newText = newText.replace(regex, '@[' + data + ']'); }); } this.serviceEditPostOrComment(sociable, id, newText, function(err, data) { if (err) { that.showMessageError(err); return false; } var msg = 'post.success.edited'; if(sociable == 'editComment'){ msg = 'comment.success.edited'; }; FLUIGC.toast({ message: that.i18n.messages[msg], type: 'success' }); that.getNewContent(id, sociable); }); },
1617: ADICIONAR o seguinte conteúdo:
formatEditionDate: function(date){ var d = new Date(date); return d.toLocaleDateString() + " " + d.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}); },
1730: ADICIONAR o seguinte conteúdo:
serviceEditPostOrComment: function(sociable, postId, text, cb) { var data = { sociableObjectId: postId, text: text }; var options = { url: '/api/public/2.0/posts/' + sociable, contentType: 'application/json', dataType: 'json', type: 'POST', data: JSON.stringify(data) }; this.baseAjax(options, cb); },
socialtimeline.properties
Na versão 1.5.12 foram adicionadas algumas chaves de tradução.
Não esquecer de replicar as alterações para os arquivos: socialtimeline_en_US.properties, socialtimeline_es.properties, socialtimeline_pt_BR.properties.
Veja abaixo:
edit=Editar edited=Editado in=em post.success.edited=Post editado comment.success.edited=Comentário editado