Browse Source

Fixed issue#317 - Display origin url from tweet/facebook post.

Martin Edenhofer 8 years ago
parent
commit
f8a75f02b8

+ 11 - 0
app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee

@@ -120,6 +120,17 @@ class ArticleViewItem extends App.ObserverController
           article['html'] = App.Utils.text2html(body)
           article['html'] = article['html'].replace(signatureDetected, '<span class="js-signatureMarker"></span>')
 
+    # check if email link need to be updated
+    if article.type.name is 'email'
+      if !article.preferences.links
+        article.preferences.links = [
+          {
+            name: 'Raw'
+            url: "#{@Config.get('api_path')}/ticket_article_plain/#{article.id}"
+            target: '_blank'
+          }
+        ]
+
     if article.preferences.delivery_message
       @html App.view('ticket_zoom/article_view_delivery_failed')(
         ticket:     @ticket

+ 5 - 5
app/assets/javascripts/app/views/ticket_zoom/article_view.jst.eco

@@ -28,7 +28,6 @@
     </div>
   </div>
 </div>
-
 <div class="article-content">
   <% if @article.sender.name isnt 'Agent': %>
   <%    position = 'left' %>
@@ -46,7 +45,7 @@
             <div class="btn btn--text js-unfold"><%- @T('See more') %></div>
           </div>
         </div>
-        <% if !_.isEmpty( @article.attachments ): %>
+        <% if !_.isEmpty(@article.attachments): %>
           <div class="attachments attachments--list">
             <%- @Icon('paperclip') %>
             <div class="attachments-title"><%- @article.attachments.length %> <%- @T('Attached Files') %></div>
@@ -62,7 +61,6 @@
     </div>
   </div>
 </div>
-
 <div class="article-meta-clip bottom">
   <div class="article-content-meta bottom hide">
     <div class="article-meta bottom">
@@ -71,8 +69,10 @@
         <div class="article-meta-value">
           <%- @Icon(@article.type.name, 'article-meta-icon') %>
           <%- @T(@article.type.name) %>
-          <% if @article.type.name is 'email': %>
-          <a class="text-muted" href="<%= App.Config.get('api_path') %>/ticket_article_plain/<%= @article.id %>" target="_blank"><%- @T('raw') %></a>
+          <% if @article.preferences.links: %>
+            <% for item in @article.preferences.links: %>
+              <a class="text-muted" href="<%- item.url %>" target="<%- item.target %>"><%- @T(item.name) %></a>
+            <% end %>
           <% end %>
         </div>
       </div>

+ 1 - 1
app/models/channel/driver/facebook.rb

@@ -86,7 +86,7 @@ class Channel::Driver::Facebook
       next if page_to_sync_params['group_id'].empty?
       page_client = Facebook.new(page['access_token'])
 
-      posts = page_client.client.get_connection('me', 'feed', fields: 'id,from,to,message,created_time,comments')
+      posts = page_client.client.get_connection('me', 'feed', fields: 'id,from,to,message,created_time,permalink_url,comments{id,from,to,message,created_time}')
       posts.each { |post|
 
         # ignore older messages

+ 29 - 3
lib/facebook.rb

@@ -210,8 +210,7 @@ result
     end
 
     state = get_state(page, post)
-
-    Ticket.create(
+    Ticket.create!(
       customer_id: user.id,
       title:       title,
       group_id:    group_id,
@@ -220,6 +219,9 @@ result
       preferences: {
         channel_id: channel.id,
         channel_fb_object_id: page['id'],
+        facebook: {
+          permalink_url: post['permalink_url'],
+        }
       },
     )
   end
@@ -260,6 +262,11 @@ result
       articles += nested_comments(post['comments']['data'], post['id'])
     end
 
+    base_url = nil
+    if ticket.preferences['facebook'] && ticket.preferences['facebook']['permalink_url']
+      base_url = ticket.preferences['facebook']['permalink_url']
+    end
+
     articles.each { |article|
       next if Ticket::Article.find_by(message_id: article[:message_id])
 
@@ -270,6 +277,22 @@ result
         ticket.save!
       end
 
+      links = []
+      if base_url
+        url = base_url
+        realtive_id = article[:message_id].split('_')[1]
+        if realtive_id
+          url += "?comment_id=#{realtive_id}"
+        end
+        links = [
+          {
+            url: url,
+            target: '_blank',
+            name: 'on Facebook',
+          },
+        ]
+      end
+
       article = {
         #to:        @account['name'],
         ticket_id: ticket.id,
@@ -277,6 +300,9 @@ result
         sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
         created_by_id: 1,
         updated_by_id: 1,
+        preferences: {
+          links: links,
+        },
       }.merge(article)
       Ticket::Article.create(article)
     }
@@ -363,7 +389,7 @@ result
         in_reply_to: in_reply_to
       }
       result.push(article_data)
-      sub_comments = @client.get_object("#{comment['id']}/comments")
+      sub_comments = @client.get_object("#{comment['id']}/comments", fields: 'id,from,to,message,created_time')
       sub_articles = nested_comments(sub_comments, comment['id'])
       result += sub_articles
     }

+ 1 - 1
lib/tweet_base.rb

@@ -208,7 +208,7 @@ class TweetBase
       ticket.save!
     end
 
-    Ticket::Article.create(
+    Ticket::Article.create!(
       from:        from,
       to:          to,
       body:        tweet.text,