diff options
Diffstat (limited to 'app/helpers')
-rw-r--r-- | app/helpers/application_helper.rb | 3 | ||||
-rw-r--r-- | app/helpers/link_helper.rb | 4 | ||||
-rw-r--r-- | app/helpers/navigation_helper.rb | 6 | ||||
-rw-r--r-- | app/helpers/twitter_helper.rb | 88 |
4 files changed, 97 insertions, 4 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 6de5e1b..920186d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -19,7 +19,8 @@ module ApplicationHelper # http://twitter.github.io/bootstrap/base-css.html#icons # def icon(name, color=nil) - "<i class=\"icon-#{name} #{color_class(color)}\"></i> ".html_safe + content_tag :span, '', + class: "glyphicon glyphicon-#{name} #{color_class(color)}" end def big_icon(name, color=nil) diff --git a/app/helpers/link_helper.rb b/app/helpers/link_helper.rb index ddb063e..b74e1d7 100644 --- a/app/helpers/link_helper.rb +++ b/app/helpers/link_helper.rb @@ -39,6 +39,10 @@ module LinkHelper def btn(*args, &block) html_options = extract_html_options!(args, &block) type = Array(html_options.delete(:type)) + btn_opts = [:default, :primary, :success, :info, :warning, :danger, :link] + if (type & btn_opts).blank? + type << :default + end type.map! {|t| "btn-#{t}"} html_options[:class] = concat_classes(html_options[:class], 'btn', type) args[0] = t(args[0]) if args[0].is_a?(Symbol) diff --git a/app/helpers/navigation_helper.rb b/app/helpers/navigation_helper.rb index 2639246..1df840c 100644 --- a/app/helpers/navigation_helper.rb +++ b/app/helpers/navigation_helper.rb @@ -66,9 +66,9 @@ module NavigationHelper end def extract_icon!(options) - icon = options.delete(:icon) - if icon.present? - content_tag(:i, '', class: "icon-#{icon}") + name = options.delete(:icon) + if name.present? + icon name else "" end diff --git a/app/helpers/twitter_helper.rb b/app/helpers/twitter_helper.rb new file mode 100644 index 0000000..7ce28be --- /dev/null +++ b/app/helpers/twitter_helper.rb @@ -0,0 +1,88 @@ +module TwitterHelper + def twitter_enabled + if Rails.application.secrets.twitter + Rails.application.secrets.twitter['enabled'] == true + end + end + + def twitter_client + Twitter::REST::Client.new do |config| + config.bearer_token = Rails.application.secrets.twitter['bearer_token'] + end + end + + def twitter_handle + Rails.application.secrets.twitter['twitter_handle'] + end + + def twitter_user_info + $twitter_user_info ||= [] + end + + def update_twitter_info + 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, {:count => 200}).select{ |tweet| tweet.text.start_with?('RT','@')==false} + if twitter_user_info[2] == nil + error_handling + twitter_user_info[3] = "The twitter handle does not exist or the account's tweets are protected. Please change the privacy settings accordingly or contact your provider-admin." + end + rescue Twitter::Error::BadRequest + error_handling + twitter_user_info[3] = "The request for displaying tweets is invalid or cannot be otherwise served." + rescue Twitter::Error::Unauthorized + error_handling + twitter_user_info[3] = "Your bearer-token is invalid or the account's tweets are protected and cannot be displayed. Please change the privacy settings of the corresponding account, check your bearer-token in the secrets-file or contact your provider-admin to have the tweets shown." + rescue Twitter::Error::Forbidden + error_handling + twitter_user_info[3] = "The request for displaying tweets 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 for displaying tweets." + rescue Twitter::Error::TooManyRequests + error_handling + twitter_user_info[3] = "The rate-limit for accessing the tweets is reached. You should be able to display tweets in a couple of minutes." + rescue Twitter::Error::NotFound + error_handling + twitter_user_info[3] = "The twitter hanlde does not exist." + rescue Twitter::Error + error_handling + twitter_user_info[3] = "An error occured while fetching the tweets." + end + + def error_handling + twitter_user_info[2] = [] + twitter_user_info + end + + def cached_info + if twitter_user_info[0] == nil + update_twitter_info + else + if Time.now > twitter_user_info[0] + 15.minutes + update_twitter_info + end + end + twitter_user_info + end + + def twitter_name + cached_info[1] + end + + def num_of_tweets + 3 + end + + def tweets + cached_info[2].take(num_of_tweets) + end + + def error_message + cached_info[3] + end + + def all_tweets_count + twitter_user_info[2].count + end +end |