Skip to content

Commit

Permalink
setup experiment controller
Browse files Browse the repository at this point in the history
  • Loading branch information
Doug Youch committed Sep 9, 2010
1 parent 3bfeb99 commit 0e3b6d8
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 0 deletions.
64 changes: 64 additions & 0 deletions app/controllers/experiment_controller.rb
@@ -0,0 +1,64 @@

class ExperimentController < CmsController
layout 'manage'

cms_admin_paths 'marketing',
'Marketing' => { :controller => '/emarketing', :action => 'index' },
'Experiments' => { :action => 'index' }

permit 'editor_visitors'

include ActiveTable::Controller
active_table :experiments_table,
Experiment,
[ hdr(:icon, '', :width=>10),
:name,
hdr(:static, 'Status'),
hdr(:static, 'Test Page'),
hdr(:static, 'Conversion Page'),
hdr(:static, :note),
:started_at,
:ended_at,
:created_at
]

def display_experiments_table(display=true)
active_table_action('experiment') do |act,ids|
experiments = Experiment.find(ids)
case act
when 'delete': experiments.each { |exp| exp.destroy unless exp.is_running? }
end
end

@active_table_output = experiments_table_generate params, :order => 'experiments.created_at DESC'
render :partial => 'experiments_table' if display
end

def index
cms_page_path ['Marketing'], 'Experiments'
display_experiments_table(false)
end

active_table :versions_table,
ExperimentVersion,
[ hdr(:icon, '', :width=>10),
hdr(:static, :revision),
hdr(:static, :language),
hdr(:static, 'Weight'),
hdr(:static, 'Visits'),
hdr(:static, 'Conversions'),
hdr(:static, 'Success')
]

def display_versions_table(display=true)
@experiment ||= Experiment.find params[:path][0]
@active_table_output = versions_table_generate params, :order => 'id', :conditions => ['experiment_id = ?', @experiment.id]
render :partial => 'versions_table' if display
end

def versions
@experiment = Experiment.find params[:path][0]
cms_page_path ['Marketing', 'Experiments'], @experiment.name
display_versions_table(false)
end
end
20 changes: 20 additions & 0 deletions app/models/experiment.rb
Expand Up @@ -49,6 +49,26 @@ def active?
self.experiment_container && self.id && self.experiment_container.experiment_id == self.id
end

def display_status
if self.finished?
'Finished'.t
elsif self.is_running?
'Running'.t
else
'Not Started'.t
end
end

def page_title
return '' unless self.experiment_container
self.experiment_container.node_path
end

def conversion_title
return nil unless self.conversion_site_node
self.conversion_site_node.node_path
end

def validate
if @versions && @versions.size > 0
if self.total_weight != 100 && self.total_weight != 0
Expand Down
17 changes: 17 additions & 0 deletions app/views/experiment/_experiments_table.html.erb
@@ -0,0 +1,17 @@
<% current_time = Time.now %>
<% active_table_for :experiments_table, @active_table_output,
:more_actions => [['Delete', 'delete', 'Are you sure you want to delete these experiments?']],
:style => 'width:100%' do |t| %>
<tr <%= highlight_row 'experiment',t.id %>>
<td align='left' nowrap='1'><%= entry_checkbox "experiment", t.id %></td>
<td><%= link_to t.name, :action => 'versions', :path => t.id %></td>
<td align='center'><%= t.display_status %></td>
<td align='center'><%= t.page_title ? t.page_title : '-' %></td>
<td align='center'><%= t.conversion_title ? t.conversion_title : '-' %></td>
<td align='center'><%= t.note %></td>
<td align='center'><%= t.started_at ? t.started_at.localize(DEFAULT_DATETIME_FORMAT.t) : '-' %></td>
<td align='center'><%= t.ended_at ? t.ended_at.localize(DEFAULT_DATETIME_FORMAT.t) : '-' %></td>
<td align='center'><%= t.created_at ? t.created_at.localize(DEFAULT_DATETIME_FORMAT.t) : '-' %></td>
</tr>

<% end -%>
15 changes: 15 additions & 0 deletions app/views/experiment/_versions_table.html.erb
@@ -0,0 +1,15 @@
<% current_time = Time.now %>
<% active_table_for :versions_table, @active_table_output,
:refresh_url => url_for(:action => 'display_versions_table', :path => @experiment.id),
:style => 'width:100%' do |t| %>
<tr <%= highlight_row 'version',t.id %>>
<td align='left' nowrap='1'><%= link_to(theme_image_tag('icons/actions/edit.gif'), :controller => '/edit', :action => 'page', :path => ['page', @experiment.experiment_container.id, t.page_revision.id]) %></td>
<td><%= h t.title %></td>
<td align='center'><%= t.language %></td>
<td align='center'><%= t.weight %></td>
<td align='center'><%= t.num_visits %></td>
<td align='center'><%= t.num_conversions %></td>
<td align='center'><%= "#{t.success_percent}%" %></td>
</tr>

<% end -%>
9 changes: 9 additions & 0 deletions app/views/experiment/index.html.erb
@@ -0,0 +1,9 @@
<script>
<%= active_table_javascript %>
</script>

<div class='admin_content'>
<div id='experiments_table'>
<%= render :partial => 'experiments_table' %>
</div>
</div>
9 changes: 9 additions & 0 deletions app/views/experiment/versions.html.erb
@@ -0,0 +1,9 @@
<script>
<%= active_table_javascript %>
</script>

<div class='admin_content'>
<div id='versions_table'>
<%= render :partial => 'versions_table' %>
</div>
</div>
1 change: 1 addition & 0 deletions db/migrate/20100907170358_initial_experiment_setup.rb
Expand Up @@ -8,6 +8,7 @@ def self.up
t.datetime :ended_at
t.text :note
t.integer :conversion_site_node_id
t.timestamps
end

create_table :experiment_versions do |t|
Expand Down

0 comments on commit 0e3b6d8

Please sign in to comment.