summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluca-marie <ml.kochsiek@fu-berlin.de>2016-09-22 14:36:10 +0200
committerluca-marie <ml.kochsiek@fu-berlin.de>2016-09-22 14:36:10 +0200
commit306b36c045cd62638db179115ed002c6ab7c5cd8 (patch)
tree8b8c8ba20403878458458ee3195cd649ab2d5718
parentd72c87cb94213c9a507596f2103773969d1cbd30 (diff)
included Theas work on error-handling \o/; changed link to twitter-account in header; fixed erb escaping characters problem without letting evil code pass; setting customized image file 'Avatar_Pic.png' in config/custo../assets to get loaded instead of default twitter-logo
-rw-r--r--app/assets/images/Avatar_Pic.png (renamed from app/assets/images/Twitter_Logo_Blue.png)bin4298 -> 4298 bytes
-rw-r--r--app/assets/stylesheets/twitter.scss1
-rw-r--r--app/helpers/twitter_helper.rb28
-rw-r--r--app/views/twitter/_index.html.erb19
-rw-r--r--config/initializers/assets.rb1
-rw-r--r--config/initializers/customization.rb3
-rw-r--r--config/initializers/twitter.rb37
7 files changed, 79 insertions, 10 deletions
diff --git a/app/assets/images/Twitter_Logo_Blue.png b/app/assets/images/Avatar_Pic.png
index b5eebc8..b5eebc8 100644
--- a/app/assets/images/Twitter_Logo_Blue.png
+++ b/app/assets/images/Avatar_Pic.png
Binary files differ
diff --git a/app/assets/stylesheets/twitter.scss b/app/assets/stylesheets/twitter.scss
index b2233d0..a67c044 100644
--- a/app/assets/stylesheets/twitter.scss
+++ b/app/assets/stylesheets/twitter.scss
@@ -21,6 +21,7 @@
position: absolute;
left: 0;
top: 0;
+ // background-image: url(/Avatar_Pic.png);
}
.twitter_image_frame > img {
diff --git a/app/helpers/twitter_helper.rb b/app/helpers/twitter_helper.rb
index f824a03..719f95e 100644
--- a/app/helpers/twitter_helper.rb
+++ b/app/helpers/twitter_helper.rb
@@ -23,6 +23,30 @@ module TwitterHelper
twitter_user_info[0] = Time.now
twitter_user_info[1] = twitter_client.user(twitter_handle).name
twitter_user_info[2] = twitter_client.user_timeline(twitter_handle).select{ |tweet| tweet.text.start_with?('RT','@')==false}.take(3)
+ if twitter_user_info[2] == nil
+ error_handling
+ twitter_user_info[3] = "The twitter-handle does not exist or the account is private. Please change it or contact your provider-admin."
+ end
+ rescue Twitter::Error::BadRequest
+ error_handling
+ twitter_user_info[3] = "The request to have the tweets shown was invalid or cannot be otherwise served."
+ rescue Twitter::Error::Unauthorized
+ error_handling
+ twitter_user_info[3] = "Please change your twitter-credentials, make sure that the twitter-account you access is public or contact your provider-admin to have the tweets shown."
+ rescue Twitter::Error::Forbidden
+ error_handling
+ twitter_user_info[3] = "The request to have the tweets shown is understood, but it has been refused or access is not allowed."
+ rescue Twitter::Error::NotAcceptable
+ error_handling
+ twitter_user_info[3] = "An invalid format is specified in the request to have the tweets shown."
+ rescue Twitter::Error::TooManyRequests
+ error_handling
+ twitter_user_info[3] = "The rate-limit for accessing the tweets is reached. You should be able to see the tweets in a couple of minutes."
+ end
+
+ def error_handling
+ twitter_user_info[2] = []
+ return twitter_user_info
end
def cached_info
@@ -43,4 +67,8 @@ module TwitterHelper
def tweets
cached_info[2]
end
+
+ def error_message
+ cached_info[3]
+ end
end
diff --git a/app/views/twitter/_index.html.erb b/app/views/twitter/_index.html.erb
index a7ebd1b..cdfff4b 100644
--- a/app/views/twitter/_index.html.erb
+++ b/app/views/twitter/_index.html.erb
@@ -3,20 +3,21 @@
<div class="twitter_header">
<div class="twitter_id">
- <div class="twitter_image_frame"><%= image_tag("Twitter_Logo_Blue.png") %></div>
- <div class="twitter_name"><%= twitter_name%><br><a href="https://twitter.com/loadtocode">@<%= twitter_handle %></a></div>
+ <div class="twitter_image_frame"><%= image_tag("Avatar_Pic.png") %></div>
+ <div class="twitter_name"><%= twitter_name%><br><a href="https://twitter.com/<%= twitter_handle %>">@<%= twitter_handle %></a></div>
</div>
</div>
<div class="twitter_list">
- <% tweets.each do |e| %>
- <div class="tweet">
- <div class="tweet_text"><%= " #{e.text}" %>
+ <%if tweets == [] then%><%= error_message %><% end %>
+ <% tweets.each do |e| %>
+ <div class="tweet">
+ <div class="tweet_text"><%= sanitize(e.text) %>
+ </div>
+ <div class="tweet_text_date">tweeted on <% t = e.created_at%> <%= t.strftime("%m/%d/%y").to_s %>
+ </div>
</div>
- <div class="tweet_text_date">tweeted on <% t = e.created_at%> <%= t.strftime("%m/%d/%y").to_s %>
- </div>
- </div>
- <% end %>
+ <% end %>
</div>
<div class="twitter_footer">
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
new file mode 100644
index 0000000..ccb32b6
--- /dev/null
+++ b/config/initializers/assets.rb
@@ -0,0 +1 @@
+Rails.application.config.assets.precompile += %w( Avatar_Pic.png )
diff --git a/config/initializers/customization.rb b/config/initializers/customization.rb
index 9f537e9..9b3a2b9 100644
--- a/config/initializers/customization.rb
+++ b/config/initializers/customization.rb
@@ -21,7 +21,8 @@ customization_directory = APP_CONFIG["customization_directory"]
# * For this to work, config.assets.initialize_on_precompile MUST be set to true, otherwise
# this initializer will never get called in production mode when the assets are precompiled.
#
-Rails.application.config.assets.paths.unshift "#{customization_directory}/stylesheets"
+# Rails.application.config.assets.paths.unshift "#{customization_directory}/stylesheets"
+Rails.application.config.assets.paths.unshift "#{customization_directory}/assets"
#
# Copy files to public
diff --git a/config/initializers/twitter.rb b/config/initializers/twitter.rb
new file mode 100644
index 0000000..9f537e9
--- /dev/null
+++ b/config/initializers/twitter.rb
@@ -0,0 +1,37 @@
+#
+# When deploying, common customizations can be dropped in config/customizations. This initializer makes this work.
+#
+APP_CONFIG["customization_directory"] ||= "#{Rails.root}/config/customization"
+customization_directory = APP_CONFIG["customization_directory"]
+
+#
+# Set customization views as the first view path
+#
+# Rails.application.config.paths['app/views'].unshift "config/customization/views"
+# (For some reason, this does not work here. See application.rb for where this is actually called.)
+
+#
+# Set customization stylesheets as the first asset path
+#
+# Some notes:
+#
+# * This cannot go in application.rb, as far as I can tell. In application.rb, the default paths
+# haven't been loaded yet, so the path we add will always end up at the end unless we add it here.
+#
+# * For this to work, config.assets.initialize_on_precompile MUST be set to true, otherwise
+# this initializer will never get called in production mode when the assets are precompiled.
+#
+Rails.application.config.assets.paths.unshift "#{customization_directory}/stylesheets"
+
+#
+# Copy files to public
+#
+if !defined?(RAKE) && Dir.exist?("#{customization_directory}/public")
+ require 'fileutils'
+ FileUtils.cp_r("#{customization_directory}/public/.", "#{Rails.root}/public", :preserve => true)
+end
+
+#
+# Add I18n path
+#
+Rails.application.config.i18n.load_path += Dir["#{customization_directory}/locales/*.{rb,yml,yaml}"]