diff --git a/app/controllers/ad_banners_controller.rb b/app/controllers/ad_banners_controller.rb index 313f38d..ba9f8a2 100644 --- a/app/controllers/ad_banners_controller.rb +++ b/app/controllers/ad_banners_controller.rb @@ -1,4 +1,5 @@ class AdBannersController < ApplicationController + skip_before_action :verify_authenticity_token, only: [:track_click] def self.custom_widget_data ac = ActionController::Base.new ac.instance_variable_set(:@custom_data_field, @custom_data_field) @@ -15,6 +16,14 @@ class AdBannersController < ApplicationController end end + def track_click + ad_image = AdImage.find(params[:id]) + ad_image.inc(click_count: 1) + head :ok + rescue Mongoid::Errors::DocumentNotFound + head :not_found + end + private def image_widget(adbanner) @@ -34,7 +43,7 @@ class AdBannersController < ApplicationController target = "" end if !b.out_link.blank? - image_link += "\" style=\"cursor:pointer;\" onload=\"var el=this;(function(){if((el.parentElement==undefined||el.parentElement.tagName!='A')&&$('
'+$(el).parents('.w-ba-banner__slide').eq(0).attr('data-overlay-template')+'
').find('a').length==0){el.outerHTML=(''+el.outerHTML+'');}})()\"" + image_link += "\" style=\"cursor:pointer;\" onclick=\"if(navigator.sendBeacon){navigator.sendBeacon('/ad_banners/track_click/#{b.id}');}\" onload=\"var el=this;(function(){if((el.parentElement==undefined||el.parentElement.tagName!='A')&&$(''+$(el).parents('.w-ba-banner__slide').eq(0).attr('data-overlay-template')+'
').find('a').length==0){el.outerHTML=(''+el.outerHTML+'');}})()\"" end context = (b.context.tr('"',"'") rescue "") images << { diff --git a/app/controllers/admin/ad_banners_controller.rb b/app/controllers/admin/ad_banners_controller.rb index 5284e00..19c641c 100644 --- a/app/controllers/admin/ad_banners_controller.rb +++ b/app/controllers/admin/ad_banners_controller.rb @@ -24,7 +24,7 @@ class Admin::AdBannersController < OrbitAdminController else @images = @banner.ad_images.not_expired.order_by(is_top: -1, sort_number: 1).page(params[:page]).per(10) end - @table_fields = [:banner, :title, "ad_banner.duration", :link] + @table_fields = [:banner, :title, "ad_banner.duration", :link, "click_count"] end def new diff --git a/app/controllers/admin/ad_images_controller.rb b/app/controllers/admin/ad_images_controller.rb index ec3a822..2fe0072 100644 --- a/app/controllers/admin/ad_images_controller.rb +++ b/app/controllers/admin/ad_images_controller.rb @@ -60,4 +60,4 @@ class Admin::AdImagesController < Admin::AdBannersController def setup_vars @module_app = ModuleApp.where(:key => "ad_banner").first end -end \ No newline at end of file +end diff --git a/app/models/ad_image.rb b/app/models/ad_image.rb index fd0cb94..a006fea 100644 --- a/app/models/ad_image.rb +++ b/app/models/ad_image.rb @@ -22,6 +22,7 @@ class AdImage field :is_top, :type => Boolean, :default => false field :language_enabled, :type => Array, :default => ["en","zh_tw"] field :exchange_item, :default => "1" + field :click_count, type: Integer, default: 0 LINK_OPEN_TYPES = ["local", "new_window"] belongs_to :banner diff --git a/app/views/admin/ad_banners/show.html.erb b/app/views/admin/ad_banners/show.html.erb index 0267d4d..13df73a 100644 --- a/app/views/admin/ad_banners/show.html.erb +++ b/app/views/admin/ad_banners/show.html.erb @@ -94,7 +94,8 @@ <% if image.out_link != "" %> " target="_blank">Link <% end %> - + +