Initial commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
require 'carto/api/vizjson3_presenter'
|
||||
|
||||
require_dependency 'carto/tracking/events'
|
||||
|
||||
module Carto
|
||||
module Builder
|
||||
class DatasetsController < BuilderController
|
||||
include VisualizationsControllerHelper
|
||||
|
||||
ssl_required :show
|
||||
|
||||
before_filter :redirect_to_editor_if_forced, only: :show
|
||||
before_filter :load_canonical_visualization, only: :show
|
||||
before_filter :authorized_only
|
||||
before_filter :load_user_table,
|
||||
:load_auth_tokens, only: :show
|
||||
before_filter :editable_visualizations_only, only: :show
|
||||
|
||||
after_filter :update_user_last_activity, only: :show
|
||||
after_filter :track_dataset_visit, only: :show
|
||||
|
||||
layout 'application_builder'
|
||||
|
||||
def show
|
||||
@canonical_visualization_data = Carto::Api::VisualizationPresenter.new(
|
||||
@canonical_visualization, current_viewer, self).to_poro
|
||||
@user_table_data = Carto::Api::UserTablePresenter.new(
|
||||
@user_table, current_viewer
|
||||
).to_poro(accessible_dependent_derived_maps: true, context: self)
|
||||
@layers_data = @canonical_visualization.layers.map do |l|
|
||||
Carto::Api::LayerPresenter.new(l, with_style_properties: true).to_poro(migrate_builder_infowindows: true)
|
||||
end
|
||||
|
||||
@google_maps_qs = @canonical_visualization.user.google_maps_query_string
|
||||
|
||||
carto_viewer = current_viewer && Carto::User.where(id: current_viewer.id).first
|
||||
@dashboard_notifications = carto_viewer ? carto_viewer.notifications_for_category(:dashboard) : {}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def redirect_to_editor_if_forced
|
||||
unless current_user.builder_enabled?
|
||||
redirect_to CartoDB.url(self, 'public_tables_show', params: { id: params[:id] }, user: current_user)
|
||||
end
|
||||
end
|
||||
|
||||
def load_canonical_visualization
|
||||
@canonical_visualization = load_visualization_from_id_or_name(params[:id])
|
||||
render_404 unless @canonical_visualization && @canonical_visualization.canonical?
|
||||
end
|
||||
|
||||
def authorized_only
|
||||
unauthorized unless current_user && @canonical_visualization.has_read_permission?(current_user)
|
||||
end
|
||||
|
||||
def load_user_table
|
||||
@user_table = @canonical_visualization.user_table
|
||||
render_404 unless @user_table
|
||||
end
|
||||
|
||||
def load_auth_tokens
|
||||
@auth_tokens = current_viewer.get_auth_tokens
|
||||
end
|
||||
|
||||
def editable_visualizations_only
|
||||
render_404 unless @canonical_visualization.editable?
|
||||
end
|
||||
|
||||
def unauthorized
|
||||
redirect_to CartoDB.url(self, 'public_table_map', params: { id: request.params[:id] })
|
||||
end
|
||||
|
||||
def track_dataset_visit
|
||||
current_viewer_id = current_viewer.id
|
||||
Carto::Tracking::Events::VisitedPrivatePage.new(current_viewer_id,
|
||||
user_id: current_viewer_id,
|
||||
page: 'dataset').report
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user