cartoset 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +11 -0
- data/.rspec +1 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +195 -0
- data/LICENSE +27 -0
- data/README.markdown +66 -0
- data/Rakefile +1 -0
- data/app/assets/fonts/museosans_500-webfont.eot +0 -0
- data/app/assets/fonts/museosans_500-webfont.svg +247 -0
- data/app/assets/fonts/museosans_500-webfont.ttf +0 -0
- data/app/assets/fonts/museosans_500-webfont.woff +0 -0
- data/app/assets/images/backgrounds/bottom_blue.png +0 -0
- data/app/assets/images/backgrounds/bubble_bottom.png +0 -0
- data/app/assets/images/backgrounds/bubble_top.png +0 -0
- data/app/assets/images/backgrounds/mid_blue.png +0 -0
- data/app/assets/images/backgrounds/top_blue.png +0 -0
- data/app/assets/images/bg_content_box.png +0 -0
- data/app/assets/images/bg_input.png +0 -0
- data/app/assets/images/globe.png +0 -0
- data/app/assets/images/globe_with_clouds.png +0 -0
- data/app/assets/images/next_steps_diagram.png +0 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/select.png +0 -0
- data/app/assets/images/sprites/admin.png +0 -0
- data/app/assets/images/sprites/htmlArea.png +0 -0
- data/app/assets/images/sprites/setup.png +0 -0
- data/app/assets/javascripts/admin/dashboard/index.js +82 -0
- data/app/assets/javascripts/admin/features/new.js +47 -0
- data/app/assets/javascripts/admin/pages/new.js +44 -0
- data/app/assets/javascripts/features/index.js +33 -0
- data/app/assets/javascripts/fileuploader.js +1247 -0
- data/app/assets/javascripts/jHtmlArea-0.7.0.min.js +8 -0
- data/app/assets/javascripts/jquery.jscrollpane.min.js +11 -0
- data/app/assets/javascripts/jquery.mousewheel.js +78 -0
- data/app/assets/javascripts/jquery.scrollTo-1.4.2.js +11 -0
- data/app/assets/javascripts/prettyfile.js +51 -0
- data/app/assets/javascripts/setup/step1.js +37 -0
- data/app/assets/javascripts/setup/step2.js +19 -0
- data/app/assets/javascripts/setup/step3.js +111 -0
- data/app/assets/javascripts/spin.js +306 -0
- data/app/assets/javascripts/utils.js +6 -0
- data/app/assets/stylesheets/_admin.colors.scss +45 -0
- data/app/assets/stylesheets/_admin.vars.scss +1 -0
- data/app/assets/stylesheets/_main.fonts.scss +10 -0
- data/app/assets/stylesheets/_main.mixins.scss +7 -0
- data/app/assets/stylesheets/_main.vars.scss +1 -0
- data/app/assets/stylesheets/_mixins.css3.scss +24 -0
- data/app/assets/stylesheets/admin.css.scss +434 -0
- data/app/assets/stylesheets/admin/_mixins.scss +3 -0
- data/app/assets/stylesheets/admin/dashboard/index.css.scss +303 -0
- data/app/assets/stylesheets/admin/features/index.css.scss +4 -0
- data/app/assets/stylesheets/admin/pages/form.css.scss +209 -0
- data/app/assets/stylesheets/admin/pages/htmlArea.css.scss +13 -0
- data/app/assets/stylesheets/cartoset.css.scss +25 -0
- data/app/assets/stylesheets/features/index.css.scss +6 -0
- data/app/assets/stylesheets/jscrollpane.css.scss +120 -0
- data/app/assets/stylesheets/reset.css +44 -0
- data/app/assets/stylesheets/sessions/_sessions.colors.scss +9 -0
- data/app/assets/stylesheets/sessions/new.css.scss +94 -0
- data/app/assets/stylesheets/setup/_setup.colors.scss +32 -0
- data/app/assets/stylesheets/setup/_setup.vars.scss +0 -0
- data/app/assets/stylesheets/setup/index.css.scss +138 -0
- data/app/assets/stylesheets/setup/step0.css.scss +21 -0
- data/app/assets/stylesheets/setup/step1.css.scss +57 -0
- data/app/assets/stylesheets/setup/step2.css.scss +39 -0
- data/app/assets/stylesheets/setup/step3.css.scss +199 -0
- data/app/assets/stylesheets/setup/step4.css.scss +48 -0
- data/app/controllers/admin/admin_controller.rb +16 -0
- data/app/controllers/admin/dashboard_controller.rb +38 -0
- data/app/controllers/admin/features_controller.rb +39 -0
- data/app/controllers/admin/pages_controller.rb +46 -0
- data/app/controllers/admin/settings_controller.rb +14 -0
- data/app/controllers/features_controller.rb +16 -0
- data/app/controllers/home_controller.rb +7 -0
- data/app/controllers/prototypes_controller.rb +3 -0
- data/app/controllers/sessions_controller.rb +32 -0
- data/app/controllers/setup_controller.rb +72 -0
- data/app/helpers/admin/admin_helper.rb +25 -0
- data/app/helpers/application_helper.rb +22 -0
- data/app/helpers/features_helper.rb +2 -0
- data/app/models/feature.rb +7 -0
- data/app/views/admin/dashboard/index.html.erb +113 -0
- data/app/views/admin/features/new.html.erb +26 -0
- data/app/views/admin/features/show.html.erb +30 -0
- data/app/views/admin/pages/_form.html.erb +28 -0
- data/app/views/admin/pages/edit.html.erb +9 -0
- data/app/views/admin/pages/new.html.erb +15 -0
- data/app/views/admin/pages/show.html.erb +38 -0
- data/app/views/admin/shared/_footer.html.erb +3 -0
- data/app/views/admin/shared/_header.html.erb +13 -0
- data/app/views/features/index.html.erb +20 -0
- data/app/views/features/show.html.erb +8 -0
- data/app/views/home/index.html.erb +6 -0
- data/app/views/layouts/admin.html.erb +17 -0
- data/app/views/layouts/application.html.erb +25 -0
- data/app/views/layouts/setup.html.erb +16 -0
- data/app/views/prototypes/prueba.html.erb +33 -0
- data/app/views/sessions/_help.html.erb +1 -0
- data/app/views/sessions/new.html.erb +10 -0
- data/app/views/setup/_help.html.erb +1 -0
- data/app/views/setup/_step_indicator.erb +14 -0
- data/app/views/setup/features_table_data.html.erb +22 -0
- data/app/views/setup/step0.html.erb +10 -0
- data/app/views/setup/step1.html.erb +36 -0
- data/app/views/setup/step2.html.erb +19 -0
- data/app/views/setup/step3.html.erb +43 -0
- data/app/views/setup/step4.html.erb +31 -0
- data/cartoset.gemspec +26 -0
- data/config/cartoset_config.yml.sample +9 -0
- data/config/initializers/cartoset_config.rb +7 -0
- data/config/initializers/extra_cartoset_libs.rb +1 -0
- data/config/initializers/float.rb +13 -0
- data/config/initializers/string.rb +102 -0
- data/config/locales/en.cartoset.yml +132 -0
- data/config/routes.rb +28 -0
- data/lib/application_controller.rb +63 -0
- data/lib/cartoset.rb +9 -0
- data/lib/cartoset/auth/omniauth_cartodb_authentication.rb +42 -0
- data/lib/cartoset/auth/warden_strategies.rb +20 -0
- data/lib/cartoset/config.rb +104 -0
- data/lib/cartoset/constants.rb +5 -0
- data/lib/cartoset/features_data_importer.rb +20 -0
- data/lib/cartoset/version.rb +3 -0
- data/lib/engine.rb +36 -0
- data/lib/helpers/feature_getter_helper.rb +8 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/cartoset.rake +72 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/new_pages.html +60 -0
- data/public/robots.txt +5 -0
- data/spec/acceptance/acceptance_helper.rb +38 -0
- data/spec/acceptance/admin/dashboard_spec.rb +43 -0
- data/spec/acceptance/manage_sessions_spec.rb +16 -0
- data/spec/acceptance/setup_spec.rb +74 -0
- data/spec/acceptance/support/helpers.rb +11 -0
- data/spec/acceptance/support/paths.rb +13 -0
- data/spec/controllers/features_controller_spec.rb +5 -0
- data/spec/controllers/prototypes_controller_spec.rb +5 -0
- data/spec/controllers/sessions_controller_spec.rb +5 -0
- data/spec/helpers/prototypes_helper_spec.rb +15 -0
- data/spec/helpers/sessions_helper_spec.rb +15 -0
- data/spec/lib/cartoset/config_spec.rb +24 -0
- data/spec/models/feature_spec.rb +5 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/factories.rb +10 -0
- data/spec/support/factories/features.rb +32 -0
- data/spec/support/string_extension.rb +13 -0
- metadata +316 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
class Admin::PagesController < Admin::AdminController
|
2
|
+
before_filter :get_page, :only => [:show]
|
3
|
+
|
4
|
+
def new
|
5
|
+
pages = Cartoset::Config['pages'] || []
|
6
|
+
last_page_id = pages.sort{|x,y| y['id'] <=> x['id'] }.first['id'] rescue 0
|
7
|
+
|
8
|
+
@page = OpenStruct.new :id => last_page_id.to_i + 1,
|
9
|
+
:title => t('admin.pages.new.new_page'),
|
10
|
+
:permalink => t('admin.pages.new.permalink')
|
11
|
+
end
|
12
|
+
|
13
|
+
def create
|
14
|
+
pages = Cartoset::Config['pages'] || []
|
15
|
+
pages << params[:page]
|
16
|
+
Cartoset::Config.update :pages => pages
|
17
|
+
|
18
|
+
redirect_to admin_path
|
19
|
+
end
|
20
|
+
|
21
|
+
def edit
|
22
|
+
pages = Cartoset::Config['pages'] || []
|
23
|
+
@page = OpenStruct.new pages.select{|p| p['id'].eql?(params[:id])}.first
|
24
|
+
end
|
25
|
+
|
26
|
+
def update
|
27
|
+
pages = Cartoset::Config['pages'] || []
|
28
|
+
pages = pages.reject{|p| p['id'].eql?(params[:page][:id])}
|
29
|
+
|
30
|
+
pages << params[:page]
|
31
|
+
Cartoset::Config.update :pages => pages
|
32
|
+
|
33
|
+
redirect_to admin_path
|
34
|
+
end
|
35
|
+
|
36
|
+
def show
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_page
|
41
|
+
#results = CARTODB.query("SELECT * FROM features WHERE cartodb_id = #{params[:id]}") if params[:id]
|
42
|
+
#@feature = results.rows.first if results && results.rows.present?
|
43
|
+
end
|
44
|
+
private :get_page
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Admin::SettingsController < Admin::AdminController
|
2
|
+
before_filter :get_setting, :only => [:show]
|
3
|
+
|
4
|
+
def show
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
def get_setting
|
9
|
+
#results = CARTODB.query("SELECT * FROM features WHERE cartodb_id = #{params[:id]}") if params[:id]
|
10
|
+
#@feature = results.rows.first if results && results.rows.present?
|
11
|
+
end
|
12
|
+
private :get_setting
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class FeaturesController < ApplicationController
|
2
|
+
include FeatureGetterHelper
|
3
|
+
|
4
|
+
before_filter :get_feature, :only => [:show]
|
5
|
+
|
6
|
+
def index
|
7
|
+
table = CartoDB::Connection.query "SELECT cartodb_id, title, ST_Centroid(the_geom) as the_geom FROM #{features_table_name} LIMIT 20"
|
8
|
+
@features = table.rows || []
|
9
|
+
@features_json = @features.map{|f| {:title => f.title, :latitude => f.the_geom.y, :longitude => f.the_geom.x}}.to_json.html_safe
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class SessionsController < ApplicationController
|
2
|
+
|
3
|
+
layout 'setup'
|
4
|
+
|
5
|
+
skip_before_filter :show_setup_wizard_if_uninstalled, :only => :create
|
6
|
+
|
7
|
+
def new
|
8
|
+
if logged_in?
|
9
|
+
redirect_to features_path and return
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def create
|
14
|
+
env['warden'].authenticate(:cartodb_oauth)
|
15
|
+
|
16
|
+
redirect_back_or_default root_path
|
17
|
+
end
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
logout
|
21
|
+
redirect_to root_path
|
22
|
+
end
|
23
|
+
|
24
|
+
def unauthenticated
|
25
|
+
respond_to do |format|
|
26
|
+
format.html do
|
27
|
+
render :action => 'new' and return
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
class SetupController < ApplicationController
|
2
|
+
include FeatureGetterHelper
|
3
|
+
|
4
|
+
layout 'setup'
|
5
|
+
|
6
|
+
before_filter :redirect_to_root_if_invalid_env
|
7
|
+
skip_before_filter :show_setup_wizard_if_uninstalled
|
8
|
+
|
9
|
+
def step
|
10
|
+
step_id = params[:step_id] || 0
|
11
|
+
|
12
|
+
case step_id
|
13
|
+
when "1"
|
14
|
+
@settings = OpenStruct.new Cartoset::Config.settings
|
15
|
+
when "2"
|
16
|
+
Cartoset::Config.set_cartodb_credentials current_user
|
17
|
+
@settings = OpenStruct.new Cartoset::Config.settings
|
18
|
+
when "3"
|
19
|
+
Cartoset::Config.update params[:settings]
|
20
|
+
|
21
|
+
result = CartoDB::Connection.tables || []
|
22
|
+
@tables = result.tables
|
23
|
+
when "4"
|
24
|
+
@table = CartoDB::Connection.table params[:features_table]
|
25
|
+
Cartoset::Config.update :features_table => @table.name
|
26
|
+
end
|
27
|
+
|
28
|
+
render "step#{step_id}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def cartodb
|
32
|
+
Cartoset::Config.update params[:settings]
|
33
|
+
|
34
|
+
Cartoset::Config.setup_cartodb
|
35
|
+
|
36
|
+
session[:return_to] = setup_path(:step_id => 2)
|
37
|
+
|
38
|
+
redirect_to '/auth/cartodb' and return
|
39
|
+
end
|
40
|
+
|
41
|
+
def features_table_data
|
42
|
+
table_name = params[:table_name]
|
43
|
+
if table_name
|
44
|
+
@table = CartoDB::Connection.table table_name
|
45
|
+
records = CartoDB::Connection.records table_name, {}
|
46
|
+
@rows = records.rows if records
|
47
|
+
end
|
48
|
+
render :layout => false
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_features_table
|
52
|
+
table = {}
|
53
|
+
|
54
|
+
if params[:qqfile] && request.body.present?
|
55
|
+
table = FeaturesDataImporter.start request.body
|
56
|
+
end
|
57
|
+
|
58
|
+
render :json => table.to_json
|
59
|
+
end
|
60
|
+
|
61
|
+
def redirect_to_root_if_invalid_env
|
62
|
+
unless Rails.env.development? || Rails.env.test? || logged_in?
|
63
|
+
if application_installed? && !logged_in?
|
64
|
+
session[:return_to] = setup_path
|
65
|
+
redirect_to login_required_path
|
66
|
+
else
|
67
|
+
redirect_to root_path
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
private :redirect_to_root_if_invalid_env
|
72
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Admin::AdminHelper
|
2
|
+
def build_field_for_column(column, value = nil)
|
3
|
+
|
4
|
+
case column[:type]
|
5
|
+
when 'boolean'
|
6
|
+
ul_content = ''
|
7
|
+
selected = "selected"
|
8
|
+
value = (value.blank?)? 'null' : value.to_s
|
9
|
+
|
10
|
+
ul_content << '<li><a class="radiobutton '+((value=="true")? selected:'')+'" href="#true">true</a></li>'
|
11
|
+
ul_content << '<li><a class="radiobutton '+((value=="false")? selected:'')+'" href="#false">false</a></li>'
|
12
|
+
ul_content << '<li><a class="radiobutton '+((value=="null")? selected:'')+'" href="#null">null</a></li>'
|
13
|
+
ul_content << radio_button_tag(column[:name], true, (value=="true"), :class=>"hidden")
|
14
|
+
ul_content << radio_button_tag(column[:name], false, (value=="false"), :class=>"hidden")
|
15
|
+
ul_content << radio_button_tag(column[:name], "null", (value=="null"), :class=>"hidden")
|
16
|
+
content_tag :ul, raw(ul_content)
|
17
|
+
when 'number'
|
18
|
+
number_field_tag column[:name], value, :id => column[:name], :class => column[:type]
|
19
|
+
when 'date'
|
20
|
+
text_field_tag(column[:name], value, :readonly => "readonly", :id => column[:name], :class => column[:type]) + content_tag(:div, date_select(column[:name], :name), :class => 'date show')
|
21
|
+
else
|
22
|
+
text_field_tag column[:name], value, :id => column[:name], :class => column[:type]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ApplicationHelper
|
2
|
+
def paginate(rows, current_page, total_count, per_page = 10, params = {})
|
3
|
+
|
4
|
+
if per_page.is_a?(Hash)
|
5
|
+
params = per_page
|
6
|
+
per_page = 10
|
7
|
+
end
|
8
|
+
|
9
|
+
window = 2
|
10
|
+
total_pages = (total_count.to_f / per_page.to_f).ceil
|
11
|
+
last_page = total_pages - 1
|
12
|
+
|
13
|
+
left = (current_page - 1).downto(1).to_a.first(window).sort
|
14
|
+
right = (current_page + 1).upto(total_pages).to_a.first(window)
|
15
|
+
|
16
|
+
pages = 1.upto(current_page - 1).to_a.map{|p| left.include?(p) || p == 1 ? p : '...'}.uniq + [current_page] + (current_page + 1).upto(last_page).to_a.map{|p| right.include?(p) || p == last_page ? p : '...'}.uniq
|
17
|
+
|
18
|
+
content_tag :div, :class => 'pagination' do
|
19
|
+
raw pages.map{|page| page.eql?('...') ? content_tag(:span, page) : link_to(page, admin_path(params.merge({:page => page})), :class => page == current_page ? 'current' : nil)}.join(' ')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<% content_for :javascripts do %>
|
2
|
+
<%= javascript_include_tag 'jquery.min.js', 'jquery.scrollTo-1.4.2.js', 'admin/dashboard/index.js' %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :stylesheets do %>
|
6
|
+
<%= stylesheet_link_tag 'admin/dashboard/index.css' %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<div id="features_list" class="table">
|
10
|
+
<span class="title"><%= t('.your_features') %></span>
|
11
|
+
<div id="search">
|
12
|
+
<%= form_for :search, :url => admin_path, :html => {:method => :get} do |f|%>
|
13
|
+
<%= f.label 'q', t('.search_label') %>
|
14
|
+
<%= f.text_field 'q' %>
|
15
|
+
<%= f.submit t('.search') %>
|
16
|
+
<% end %>
|
17
|
+
<%= link_to content_tag(:span, t('.scroll_right')), '#', :id => 'scroll_right' %>
|
18
|
+
<%= link_to content_tag(:span, t('.scroll_left')), '#', :id => 'scroll_left' %>
|
19
|
+
</div>
|
20
|
+
<div id="features_table">
|
21
|
+
<table class="list">
|
22
|
+
<tr class="header">
|
23
|
+
<th><div class="id">id.</div></th>
|
24
|
+
<% @features_columns.each do |column| %>
|
25
|
+
<th><div class="<%= column[:type] %>"><%= column[:name] %></div></th>
|
26
|
+
<% end %>
|
27
|
+
</tr>
|
28
|
+
<% @features.each do |feature| %>
|
29
|
+
<tr class="item <%= cycle('odd', 'even') %>">
|
30
|
+
<td class="cartodb_id"><%= link_to feature.cartodb_id, admin_feature_path(feature.cartodb_id) %></td>
|
31
|
+
<% @features_columns.each do |column| %>
|
32
|
+
<td class="<%= column.first %>"><%= feature.send(column[:name]).to_s.truncate(28) %></td>
|
33
|
+
<% end %>
|
34
|
+
</tr>
|
35
|
+
<% end %>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
<%= link_to t('.create_feature'), new_admin_feature_path, :id => 'create_feature', :class => 'main_action' %>
|
39
|
+
<%= link_to t('.edit_in_cartodb'), "#{@cartodb_host}/tables/#{@table_id}", :id => 'edit_in_cartodb', :class => 'alternate_action' %>
|
40
|
+
<%= raw paginate @features, @page, @features_count, params %>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="pages_list" class="table">
|
44
|
+
<div class="title"><%= t('.your_pages') %></div>
|
45
|
+
<div class="pages_list_container">
|
46
|
+
<ul>
|
47
|
+
<% @pages.each do |page| %>
|
48
|
+
<li>
|
49
|
+
<div>
|
50
|
+
<p><%= page['title'] %></p>
|
51
|
+
<p class="link">
|
52
|
+
<%= link_to t('.edit_this_page'), edit_admin_page_path(page['id'].to_i) %>
|
53
|
+
</p>
|
54
|
+
</div>
|
55
|
+
</li>
|
56
|
+
<% end %>
|
57
|
+
</ul>
|
58
|
+
</div>
|
59
|
+
<div class="pages_footer">
|
60
|
+
<%= link_to t('.create_new_page'), new_admin_page_path, :class => 'main_action' %>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<% if false %>
|
65
|
+
<div id="settings_list" class="table">
|
66
|
+
<span class="title">Settings</span>
|
67
|
+
<div class="settings_list_container">
|
68
|
+
<ul>
|
69
|
+
<li class="odd" id="1">
|
70
|
+
<div class="name">
|
71
|
+
<p class="setting_name">services.google.tracking_id</p>
|
72
|
+
<p class="setting_description">Integration ID with Google Analytics</p>
|
73
|
+
</div>
|
74
|
+
<div class="setting_value"><a href="">UA-1234567-1</a></div>
|
75
|
+
<div class="edit_value">
|
76
|
+
<input type="text" value="UA-1234567-1"/>
|
77
|
+
<input type="hidden" value="UA-1234567-1"/>
|
78
|
+
<a href="" class="action_input">Save</a>
|
79
|
+
<span class="cancel_value">or <a href="">cancel</a></span>
|
80
|
+
</div>
|
81
|
+
</li>
|
82
|
+
<li class="even" id="2">
|
83
|
+
<div class="name">
|
84
|
+
<p class="setting_name">services.google.tracking_id</p>
|
85
|
+
<p class="setting_description">Integration ID with Google Analytics</p>
|
86
|
+
</div>
|
87
|
+
<div class="setting_value"><a href="">UA-1234567-2</a></div>
|
88
|
+
<div class="edit_value">
|
89
|
+
<input type="text" value="UA-1234567-2"/>
|
90
|
+
<input type="hidden" value="UA-1234567-2"/>
|
91
|
+
<a href="" class="action_input">Save</a>
|
92
|
+
<span class="cancel_value">or <a href="">cancel</a></span>
|
93
|
+
</div>
|
94
|
+
</li>
|
95
|
+
<li class="odd last" id="3">
|
96
|
+
<div class="name">
|
97
|
+
<p class="setting_name">services.google.tracking_id</p>
|
98
|
+
<p class="setting_description">Integration ID with Google Analytics</p>
|
99
|
+
</div>
|
100
|
+
<div class="setting_value"><a href="">UA-1234567-3</a></div>
|
101
|
+
<div class="edit_value">
|
102
|
+
<input type="text" value="UA-1234567-3"/>
|
103
|
+
<input type="hidden" value="UA-1234567-3"/>
|
104
|
+
<a href="" class="action_input">Save</a>
|
105
|
+
<span class="cancel_value">or <a href="">cancel</a></span>
|
106
|
+
</div>
|
107
|
+
</li>
|
108
|
+
</ul>
|
109
|
+
</div>
|
110
|
+
<div class="settings_footer"></div>
|
111
|
+
</div>
|
112
|
+
<% end %>
|
113
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<% content_for :javascripts do %>
|
2
|
+
<%= javascript_include_tag 'jquery.min.js', 'prettyfile.js', 'admin/features/new.js' %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div class="content_box table">
|
6
|
+
<h1><%= t('.new_feature') %></h1>
|
7
|
+
|
8
|
+
<%= form_tag admin_features_path do %>
|
9
|
+
<% @features_fields.each do |column| %>
|
10
|
+
<%= label_tag column[:name], column[:name], :class => 'field_label' %>
|
11
|
+
<%= build_field_for_column(column) %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<!-- <span class="file_content">
|
15
|
+
<%= file_field :post, :attached, :accept => 'text/html', :id=>"file_input" %>
|
16
|
+
</span> -->
|
17
|
+
|
18
|
+
<div>
|
19
|
+
<%= submit_tag t('.save_changes'), :class => 'main_action' %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<div class="side_bar">
|
24
|
+
<%= link_to (content_tag(:span) + t('.sidebar.back_dashboard')), admin_dashboard_index_path, :class => 'back' %>
|
25
|
+
</div>
|
26
|
+
</div>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<% content_for :javascripts do %>
|
2
|
+
<%= javascript_include_tag 'jquery.min', 'rails' %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div class="content_box table">
|
6
|
+
<div class="left">
|
7
|
+
<h1><%= t('.feature_id', :id => params[:id]) %></h1>
|
8
|
+
|
9
|
+
<%= form_tag admin_feature_path(params[:id]), :method => :put do %>
|
10
|
+
<% @features_fields.each do |column| %>
|
11
|
+
<label for="<%= column[:name] %>" class="field_label"><%= column[:name].upcase %></label>
|
12
|
+
<%= build_field_for_column column, @feature[column[:name].to_sym] %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<div>
|
16
|
+
<%= submit_tag t('.save_changes'), :class => 'main_action' %>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="side_bar">
|
23
|
+
<a href="/admin/" class="back"><%= t('.sidebar.back_dashboard') %></a>
|
24
|
+
<div class="delete">
|
25
|
+
<span><%= t('.sidebar.delete.title') %></span>
|
26
|
+
<p><%= t('.sidebar.delete.hint') %></p>
|
27
|
+
<%= link_to t('.sidebar.delete.link'), admin_feature_path(@feature.cartodb_id), :confirm => t('.sidebar.delete.confirm'), :method => :delete %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% content_for :javascripts do %>
|
2
|
+
<script type="text/javascript" charset="utf-8">
|
3
|
+
var texts = <%= t('.help').to_json.html_safe %>;
|
4
|
+
</script>
|
5
|
+
<%= javascript_include_tag 'jquery.min.js', 'jHtmlArea-0.7.0.min.js', 'admin/pages/new.js' %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<% content_for :stylesheets do %>
|
9
|
+
<%= stylesheet_link_tag 'admin/pages/form.css' %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<%= form_for @page, :as => :page, :url => url, :html => { :method => method } do |form| %>
|
13
|
+
<%= form.hidden_field :id %>
|
14
|
+
<%= form.label :title, raw(t('.title') + content_tag(:strong, '*')), :class => :field_label %>
|
15
|
+
<%= form.text_field :title, :class => :string %>
|
16
|
+
|
17
|
+
<%= form.label :body, raw(t('.body') + content_tag(:strong, '*')), :class => :field_label %>
|
18
|
+
<%= form.text_area :body, :class => :string %>
|
19
|
+
|
20
|
+
<%= form.label :permalink, raw(t('.permalink') + content_tag(:strong, '*')), :class => 'field_label permalink' %>
|
21
|
+
<%= form.text_field :permalink, :class => :string %>
|
22
|
+
|
23
|
+
<span class="submit">
|
24
|
+
<%= form.submit t(".#{action}.save"), :class => 'main_action' %>
|
25
|
+
<%= form.check_box :visible, :class => :checkbox %>
|
26
|
+
<%= form.label :visible, t('.visible'), :class => 'field_label visible' %>
|
27
|
+
</span>
|
28
|
+
<% end %>
|