diff options
author | luca-marie <ml.kochsiek@fu-berlin.de> | 2016-09-22 14:36:10 +0200 |
---|---|---|
committer | luca-marie <ml.kochsiek@fu-berlin.de> | 2016-09-22 14:36:10 +0200 |
commit | 306b36c045cd62638db179115ed002c6ab7c5cd8 (patch) | |
tree | 8b8c8ba20403878458458ee3195cd649ab2d5718 | |
parent | d72c87cb94213c9a507596f2103773969d1cbd30 (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) | bin | 4298 -> 4298 bytes | |||
-rw-r--r-- | app/assets/stylesheets/twitter.scss | 1 | ||||
-rw-r--r-- | app/helpers/twitter_helper.rb | 28 | ||||
-rw-r--r-- | app/views/twitter/_index.html.erb | 19 | ||||
-rw-r--r-- | config/initializers/assets.rb | 1 | ||||
-rw-r--r-- | config/initializers/customization.rb | 3 | ||||
-rw-r--r-- | config/initializers/twitter.rb | 37 |
7 files changed, 79 insertions, 10 deletions
diff --git a/app/assets/images/Twitter_Logo_Blue.png b/app/assets/images/Avatar_Pic.png Binary files differindex b5eebc8..b5eebc8 100644 --- a/app/assets/images/Twitter_Logo_Blue.png +++ b/app/assets/images/Avatar_Pic.png 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}"] |