adminpanel 2.1.7 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +11 -3
- data/Gemfile +3 -27
- data/adminpanel.gemspec +24 -23
- data/app/assets/images/adminpanel/loguito.png +0 -0
- data/app/assets/javascripts/adminpanel/bootstrap-wysihtml5-4pre.js +120 -120
- data/app/assets/javascripts/adminpanel/spinner.js.coffee +6 -6
- data/app/assets/stylesheets/adminpanel/bootstrap-wysihtml5.css +21 -75
- data/app/controllers/adminpanel/analytics_controller.rb +34 -2
- data/app/controllers/adminpanel/application_controller.rb +7 -6
- data/app/controllers/adminpanel/categories_controller.rb +0 -1
- data/app/controllers/adminpanel/galleries_controller.rb +0 -1
- data/app/controllers/adminpanel/permissions_controller.rb +14 -0
- data/app/controllers/adminpanel/rols_controller.rb +10 -0
- data/app/controllers/adminpanel/sections_controller.rb +11 -14
- data/app/controllers/adminpanel/sessions_controller.rb +45 -11
- data/app/controllers/adminpanel/users_controller.rb +2 -4
- data/app/controllers/concerns/adminpanel/analytics/instagram_analytics.rb +31 -0
- data/app/controllers/concerns/adminpanel/analytics/twitter_analytics.rb +25 -0
- data/app/controllers/concerns/adminpanel/facebook_actions.rb +7 -5
- data/app/controllers/concerns/adminpanel/rest_actions.rb +12 -0
- data/app/controllers/concerns/adminpanel/twitter_actions.rb +40 -0
- data/app/helpers/adminpanel/adminpanel_form_builder.rb +21 -14
- data/app/helpers/adminpanel/analytics_helper.rb +22 -2
- data/app/helpers/adminpanel/application_helper.rb +2 -2
- data/app/helpers/adminpanel/breadcrumbs_helper.rb +8 -6
- data/app/helpers/adminpanel/router_helper.rb +4 -0
- data/app/helpers/adminpanel/sessions_helper.rb +2 -2
- data/app/helpers/adminpanel/shared_pages_helper.rb +3 -3
- data/{lib/generators/adminpanel/initialize/templates → app/models}/ability.rb +18 -6
- data/app/models/adminpanel/analytic.rb +1 -0
- data/app/models/adminpanel/auth.rb +4 -1
- data/app/models/adminpanel/permission.rb +52 -0
- data/app/models/adminpanel/rol.rb +35 -0
- data/app/models/adminpanel/user.rb +8 -8
- data/app/models/concerns/adminpanel/base.rb +4 -0
- data/app/models/concerns/adminpanel/facebook.rb +1 -1
- data/app/models/concerns/adminpanel/twitter.rb +27 -0
- data/app/views/adminpanel/analytics/{_widget_task_statistics.html.erb → _fb_statistic_widget.html.erb} +0 -0
- data/app/views/adminpanel/analytics/_header.html.erb +8 -2
- data/app/views/adminpanel/analytics/_instagram_details_modal.html.erb +55 -0
- data/app/views/adminpanel/analytics/_instagram_media.html.erb +25 -0
- data/app/views/adminpanel/analytics/_tweet.html.erb +32 -0
- data/app/views/adminpanel/analytics/_twitter_reply_modal.html.erb +41 -0
- data/app/views/adminpanel/analytics/fb.html.erb +6 -6
- data/app/views/adminpanel/analytics/instagram.html.erb +65 -0
- data/app/views/adminpanel/analytics/twitter.html.erb +89 -0
- data/app/views/adminpanel/sections/edit.html.erb +2 -5
- data/app/views/layouts/_side_menu.html.erb +3 -3
- data/app/views/layouts/admin.html.erb +2 -2
- data/app/views/shared/_delete_icon_button.html.erb +1 -1
- data/app/views/shared/_edit_icon_button.html.erb +1 -1
- data/app/views/shared/_fb_icon_button.html.erb +1 -1
- data/app/views/shared/_form_fields.html.erb +1 -1
- data/app/views/shared/_new_resource_button.html.erb +1 -2
- data/app/views/shared/_twitter_icon_button.html.erb +26 -0
- data/app/views/shared/_twitter_publish_modal.html.erb +40 -0
- data/app/views/shared/index.html.erb +5 -3
- data/app/views/shared/show.html.erb +7 -3
- data/config/initializers/twitter-oauth.rb +15 -0
- data/config/locales/en.yml +1 -1
- data/config/locales/es.yml +20 -1
- data/config/routes.rb +25 -5
- data/lib/adminpanel.rb +3 -0
- data/lib/adminpanel/engine.rb +19 -5
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/initialize/initialize_generator.rb +0 -11
- data/lib/generators/adminpanel/initialize/templates/adminpanel_setup.rb +12 -0
- data/lib/generators/adminpanel/initialize/templates/create_adminpanel_tables.rb +74 -46
- data/lib/generators/adminpanel/resource/resource_generator_helper.rb +1 -1
- data/lib/generators/adminpanel/resource/templates/adminpanel_resource_template.rb +1 -1
- data/lib/tasks/adminpanel/adminpanel.rake +5 -5
- data/test/dummy/app/models/adminpanel/item.rb +1 -1
- data/test/dummy/app/models/adminpanel/mug.rb +1 -0
- data/test/dummy/app/models/adminpanel/photo.rb +4 -0
- data/test/dummy/app/models/adminpanel/product.rb +7 -1
- data/test/dummy/app/models/adminpanel/salesman.rb +1 -0
- data/test/dummy/app/views/layouts/application.html.erb +0 -1
- data/test/dummy/db/schema.rb +9 -2
- data/test/dummy/test/fixtures/adminpanel/permissions.yml +42 -0
- data/test/dummy/test/fixtures/adminpanel/rols.yml +28 -0
- data/test/dummy/test/fixtures/adminpanel/salesmen.yml +1 -0
- data/test/dummy/test/fixtures/adminpanel/users.yml +49 -1
- data/test/features/shared/resource/index_test.rb +1 -0
- data/test/features/shared/ui/action_exclution_test.rb +1 -0
- data/test/helpers/breadcrumbs_helper_test.rb +34 -0
- data/test/helpers/router_helper_test.rb +21 -0
- data/test/helpers/shared_pages_helper_test.rb +35 -0
- data/test/models/ability_test.rb +52 -0
- data/test/models/adminpanel/gallery_test.rb +0 -2
- data/test/models/adminpanel/user_test.rb +1 -1
- data/test/support/shared_database.rb +11 -0
- data/test/support/view_case.rb +34 -0
- data/test/tasks/adminpanel_rake_test.rb +5 -2
- data/test/test_helper.rb +1 -41
- metadata +191 -200
- data/app/assets/javascripts/adminpanel/jquery.facybox.js +0 -395
- data/app/assets/stylesheets/adminpanel/facybox.css +0 -146
- data/app/models/adminpanel/group.rb +0 -6
- data/test/dummy/Rakefile +0 -7
- data/test/dummy/app/models/ability.rb +0 -31
- data/test/dummy/test/fixtures/adminpanel/groups.yml +0 -4
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
2
|
class AnalyticsController < Adminpanel::ApplicationController
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
include Adminpanel::Analytics::TwitterAnalytics
|
|
4
|
+
include Adminpanel::Analytics::InstagramAnalytics
|
|
5
|
+
|
|
5
6
|
skip_before_filter :set_model
|
|
6
7
|
|
|
7
8
|
API_VERSION = 'v3'
|
|
8
9
|
CACHED_API_FILE = "#{Rails.root}/tmp/cache/analytics-#{API_VERSION}.cache"
|
|
9
10
|
|
|
10
11
|
def index
|
|
12
|
+
authorize! :read, Adminpanel::Analytic
|
|
13
|
+
|
|
11
14
|
unless Adminpanel.analytics_profile_id.nil? || Adminpanel.analytics_key_filename.nil?
|
|
12
15
|
service_account_email = '266789642405-0nppij5ll43bbvhpsn986puulssdoc45@developer.gserviceaccount.com' # Email of service account
|
|
13
16
|
key_file = "#{Rails.root}/#{Adminpanel.analytics_key_path}/#{Adminpanel.analytics_key_filename}" # File containing your private key
|
|
@@ -75,6 +78,7 @@ module Adminpanel
|
|
|
75
78
|
end
|
|
76
79
|
|
|
77
80
|
def fb
|
|
81
|
+
authorize! :read, Adminpanel::Analytic
|
|
78
82
|
auth = Adminpanel::Auth.find_by_key('facebook')
|
|
79
83
|
if params[:insight].present?
|
|
80
84
|
period = params[:insight]
|
|
@@ -120,5 +124,33 @@ module Adminpanel
|
|
|
120
124
|
end
|
|
121
125
|
end
|
|
122
126
|
|
|
127
|
+
# uses @client to fetch replies and tweets, for some statics
|
|
128
|
+
def twitter
|
|
129
|
+
authorize! :read, Adminpanel::Analytic
|
|
130
|
+
if !@twitter_token.nil? && !@twitter_secret.nil?
|
|
131
|
+
@favorites = 0.0
|
|
132
|
+
@retweets = 0.0
|
|
133
|
+
@twitter_user = @twitter_client.user
|
|
134
|
+
|
|
135
|
+
# 20 is the number that we're using to measure statics.
|
|
136
|
+
@twitter_client.user_timeline(@twitter_user.username).take(20).collect do |tweet|
|
|
137
|
+
@favorites = @favorites + tweet.favorite_count.to_f
|
|
138
|
+
@retweets = @retweets + tweet.retweet_count.to_f
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
@tweets = @twitter_client.mentions_timeline.take(5)
|
|
142
|
+
|
|
143
|
+
@favorites = @favorites / 20.0
|
|
144
|
+
@retweets = @retweets / 20.0
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def instagram
|
|
149
|
+
authorize! :read, Adminpanel::Analytic
|
|
150
|
+
if !@instagram_token.nil?
|
|
151
|
+
@user = @instagram_client.user
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
123
155
|
end
|
|
124
156
|
end
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
2
|
class ApplicationController < ActionController::Base
|
|
3
3
|
protect_from_forgery
|
|
4
|
-
|
|
5
4
|
inherit_resources
|
|
5
|
+
authorize_resource
|
|
6
|
+
|
|
7
|
+
layout 'admin'
|
|
8
|
+
|
|
9
|
+
before_filter :signed_in_user, :set_model, :strong_params_for_cancan
|
|
6
10
|
|
|
7
11
|
include SessionsHelper
|
|
8
12
|
include Adminpanel::RestActions
|
|
9
13
|
include Adminpanel::GalleryzableActions
|
|
10
14
|
include Adminpanel::FacebookActions
|
|
15
|
+
include Adminpanel::TwitterActions
|
|
11
16
|
include Adminpanel::SitemapActions
|
|
12
|
-
|
|
13
|
-
layout 'admin'
|
|
14
|
-
|
|
15
|
-
before_filter :signed_in_user, :set_model, :strong_params_for_cancan
|
|
16
|
-
|
|
17
17
|
private
|
|
18
|
+
|
|
18
19
|
def strong_params_for_cancan
|
|
19
20
|
resource = controller_name.singularize.to_sym
|
|
20
21
|
method = "#{resource}_params"
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
2
|
class SectionsController < Adminpanel::ApplicationController
|
|
3
|
-
# authorize_resource
|
|
4
|
-
authorize_resource
|
|
5
3
|
# def new
|
|
6
4
|
# @section = Section.new
|
|
7
5
|
# authorize! :create, @section
|
|
@@ -9,10 +7,10 @@ module Adminpanel
|
|
|
9
7
|
|
|
10
8
|
def edit
|
|
11
9
|
@section = Section.find(params[:id])
|
|
12
|
-
respond_to do |format|
|
|
13
|
-
format.html
|
|
14
|
-
format.json {render :json => {:section => @section }}
|
|
15
|
-
end
|
|
10
|
+
# respond_to do |format|
|
|
11
|
+
# format.html
|
|
12
|
+
# format.json {render :json => {:section => @section }}
|
|
13
|
+
# end
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
def update
|
|
@@ -43,15 +41,14 @@ module Adminpanel
|
|
|
43
41
|
private
|
|
44
42
|
def section_params
|
|
45
43
|
params.require(:section).permit(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
:has_description,
|
|
45
|
+
:description,
|
|
46
|
+
:key,
|
|
47
|
+
:page,
|
|
48
|
+
:name,
|
|
49
|
+
:has_image,
|
|
50
|
+
images_attributes: [:id, :file]
|
|
53
51
|
)
|
|
54
|
-
|
|
55
52
|
end
|
|
56
53
|
end
|
|
57
54
|
end
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
|
-
class SessionsController <
|
|
3
|
-
|
|
2
|
+
class SessionsController < ActionController::Base
|
|
3
|
+
include SessionsHelper
|
|
4
|
+
protect_from_forgery
|
|
4
5
|
layout 'admin-login'
|
|
5
|
-
|
|
6
|
+
before_action :configure_instagram, only:[:instagram_login, :instagram_callback]
|
|
6
7
|
|
|
7
8
|
def new
|
|
8
|
-
respond_to do |format|
|
|
9
|
-
format.html
|
|
10
|
-
format.json { render :json => {:session => @session }}
|
|
11
|
-
end
|
|
12
9
|
end
|
|
13
10
|
|
|
14
11
|
def create
|
|
15
12
|
user = User.find_by_email(params[:session][:email].downcase)
|
|
16
13
|
if user && user.authenticate(params[:session][:password])
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
sign_in user
|
|
15
|
+
flash[:success] = I18n.t('authentication.signin_success')
|
|
16
|
+
redirect_to root_url
|
|
20
17
|
else
|
|
21
|
-
flash.now[:error] = I18n.t(
|
|
18
|
+
flash.now[:error] = I18n.t('authentication.signin_error')
|
|
22
19
|
render 'new'
|
|
23
20
|
end
|
|
24
21
|
end
|
|
@@ -27,5 +24,42 @@ module Adminpanel
|
|
|
27
24
|
sign_out
|
|
28
25
|
redirect_to signin_path
|
|
29
26
|
end
|
|
27
|
+
|
|
28
|
+
def twitter_callback
|
|
29
|
+
save_twitter_tokens
|
|
30
|
+
flash[:success] = I18n.t('twitter.saved_token')
|
|
31
|
+
redirect_to twitter_analytics_path
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def instagram_login
|
|
35
|
+
redirect_to Instagram.authorize_url(:redirect_uri => instagram_callback_sessions_url, :scope => 'comments')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def instagram_callback
|
|
39
|
+
response = Instagram.get_access_token(params[:code], :redirect_uri => instagram_callback_sessions_url)
|
|
40
|
+
username = Instagram.client(access_token: response.access_token).user.username
|
|
41
|
+
Auth.create(key: 'instagram', value: response.access_token, name: "@#{username}")
|
|
42
|
+
redirect_to instagram_analytics_path
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def configure_instagram
|
|
48
|
+
Instagram.configure do |config|
|
|
49
|
+
config.client_id = Adminpanel.instagram_client_id
|
|
50
|
+
config.client_secret = Adminpanel.instagram_client_secret
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def save_twitter_tokens
|
|
55
|
+
twitter_user = "@#{request.env['omniauth.auth']['info']['nickname']}"
|
|
56
|
+
['token', 'secret'].each do |key|
|
|
57
|
+
Auth.create(
|
|
58
|
+
key: "twitter-#{key}",
|
|
59
|
+
name: twitter_user,
|
|
60
|
+
value: request.env['omniauth.auth']['credentials'][key]
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
30
64
|
end
|
|
31
65
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module Adminpanel
|
|
2
2
|
class UsersController < Adminpanel::ApplicationController
|
|
3
|
-
|
|
4
|
-
authorize_resource
|
|
5
|
-
|
|
3
|
+
|
|
6
4
|
private
|
|
7
5
|
def user_params
|
|
8
6
|
params.require(:user).permit(
|
|
@@ -10,7 +8,7 @@ module Adminpanel
|
|
|
10
8
|
:name,
|
|
11
9
|
:password,
|
|
12
10
|
:password_confirmation,
|
|
13
|
-
:
|
|
11
|
+
:rol_id
|
|
14
12
|
)
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Adminpanel
|
|
2
|
+
module Analytics
|
|
3
|
+
module InstagramAnalytics
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
before_filter :set_instagram_token, only:[:instagram, :instagram_comment]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def instagram_comment
|
|
11
|
+
|
|
12
|
+
response = @instagram_client.create_media_comment params[:id], params[:instagram_text]
|
|
13
|
+
debugger
|
|
14
|
+
redirect_to instagram_analytics_path
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
def set_instagram_token
|
|
19
|
+
@instagram_token = Auth.find_by_key 'instagram'
|
|
20
|
+
|
|
21
|
+
if !@instagram_token.nil?
|
|
22
|
+
@instagram_client ||= Instagram.client(
|
|
23
|
+
|
|
24
|
+
access_token: @instagram_token.value
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Adminpanel
|
|
2
|
+
module Analytics
|
|
3
|
+
module TwitterAnalytics
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
before_filter :get_twitter_token, only:[:twitter, :reply_to_tweet, :favorite_tweet, :retweet_tweet]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def reply_to_tweet
|
|
11
|
+
@twitter_client.update params[:tweet], in_reply_to_status_id: params[:id]
|
|
12
|
+
redirect_to twitter_analytics_path
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def favorite_tweet
|
|
16
|
+
@twitter_client.favorite(params[:id])
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def retweet_tweet
|
|
20
|
+
@twitter_client.retweet(params[:id])
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -3,7 +3,7 @@ module Adminpanel
|
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
5
|
included do
|
|
6
|
-
before_filter :
|
|
6
|
+
before_filter :set_fb_auths_count, only:[:index, :create, :update, :destroy, :show]
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def fb_choose_page
|
|
@@ -28,17 +28,19 @@ module Adminpanel
|
|
|
28
28
|
page_selected = Koala::Facebook::API.new(
|
|
29
29
|
params[model_name][:fb_page_access_key]
|
|
30
30
|
)
|
|
31
|
-
|
|
31
|
+
update_fb_auth(page_selected.get_object('me')['name'])
|
|
32
32
|
flash[:success] = I18n.t('fb.saved_token')
|
|
33
33
|
redirect_to resource
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def fb_publish
|
|
37
|
+
authorize! :publish, resource
|
|
38
|
+
|
|
37
39
|
page_graph = Koala::Facebook::API.new(Auth.find_by_key('facebook').value)
|
|
38
40
|
page_graph.put_wall_post(
|
|
39
41
|
params[model_name][:fb_message],
|
|
40
42
|
{
|
|
41
|
-
link: resource.
|
|
43
|
+
link: resource.share_link,
|
|
42
44
|
name: resource.name
|
|
43
45
|
}
|
|
44
46
|
)
|
|
@@ -47,11 +49,11 @@ module Adminpanel
|
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
private
|
|
50
|
-
def
|
|
52
|
+
def set_fb_auths_count
|
|
51
53
|
@fb_auths_count = Auth.where(key: 'facebook').count
|
|
52
54
|
end
|
|
53
55
|
|
|
54
|
-
def
|
|
56
|
+
def update_fb_auth(account_selected_name)
|
|
55
57
|
auths = Auth.where(key: 'facebook', name: account_selected_name)
|
|
56
58
|
if auths.count == 0
|
|
57
59
|
Auth.create(
|
|
@@ -43,6 +43,7 @@ module Adminpanel
|
|
|
43
43
|
set_collections
|
|
44
44
|
render 'shared/new', :locals => {:resource => resource }
|
|
45
45
|
end
|
|
46
|
+
respond_to_json(success, failure)
|
|
46
47
|
end
|
|
47
48
|
end
|
|
48
49
|
|
|
@@ -66,6 +67,7 @@ module Adminpanel
|
|
|
66
67
|
set_collections
|
|
67
68
|
render 'shared/edit'
|
|
68
69
|
end
|
|
70
|
+
respond_to_json(success, failure)
|
|
69
71
|
end
|
|
70
72
|
end
|
|
71
73
|
|
|
@@ -109,5 +111,15 @@ module Adminpanel
|
|
|
109
111
|
params.merge({:belongs_request => params[:belongs_request]}) if params[:belongs_request].present?
|
|
110
112
|
params.merge({:currentcontroller => params[:currentcontroller]}) if params[:currentcontroller].present?
|
|
111
113
|
end
|
|
114
|
+
|
|
115
|
+
def respond_to_json(success, failure)
|
|
116
|
+
success.json do
|
|
117
|
+
render json: resource
|
|
118
|
+
end
|
|
119
|
+
failure.json do
|
|
120
|
+
render json: resource
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
112
124
|
end
|
|
113
125
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Adminpanel
|
|
2
|
+
module TwitterActions
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
before_filter :get_twitter_token, only:[:index, :create, :update, :destroy, :show, :twitter_publish]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def twitter_publish
|
|
10
|
+
resource.twitter_message = params[model_name][:twitter_message]
|
|
11
|
+
if !@twitter_token.nil? && !@twitter_secret.nil? && resource.has_valid_tweet?
|
|
12
|
+
client = get_twitter_token
|
|
13
|
+
client.update(resource.twitter_message)
|
|
14
|
+
flash[:success] = I18n.t('twitter.posted', user: @twitter_token.name)
|
|
15
|
+
else
|
|
16
|
+
flash[:error] = I18n.t('twitter.not-posted')
|
|
17
|
+
end
|
|
18
|
+
redirect_to resource
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
def get_twitter_token
|
|
23
|
+
@twitter_token = Auth.find_by_key 'twitter-token'
|
|
24
|
+
@twitter_secret = Auth.find_by_key 'twitter-secret'
|
|
25
|
+
|
|
26
|
+
if !@twitter_token.nil? && !@twitter_secret.nil?
|
|
27
|
+
@twitter_client ||= ::Twitter::REST::Client.new do |config|
|
|
28
|
+
config.consumer_key = Adminpanel.twitter_api_key
|
|
29
|
+
config.consumer_secret = Adminpanel.twitter_api_secret
|
|
30
|
+
config.access_token = @twitter_token.value
|
|
31
|
+
config.access_token_secret = @twitter_secret.value
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def model_name
|
|
37
|
+
@model.name.demodulize.downcase # ex: posts
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|