Skip to content

Commit

Permalink
Use the WebivaExport to export custom content models
Browse files Browse the repository at this point in the history
  • Loading branch information
Doug Youch committed Oct 14, 2010
1 parent f9600b8 commit c576c72
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 86 deletions.
27 changes: 2 additions & 25 deletions app/controllers/content_export_controller.rb
Expand Up @@ -30,36 +30,13 @@ def generate_file

@content_model = ContentModel.find(content_id)

worker_key = ContentExportWorker.async_do_work( :domain_id => DomainModel.active_domain_id,
session[:download_worker_key] = ContentExportWorker.async_do_work( :domain_id => DomainModel.active_domain_id,
:content_model_id => content_id,
:export_download => params[:export][:download],
:export_format => params[:export][:export_format],
:range_start => params[:export][:range_start],
:range_end => params[:export][:range_end]
)
session[:content_download_worker_key] = worker_key

render :nothing => true
end

def status
if(session[:content_download_worker_key])
results = Workling.return.get(session[:content_download_worker_key])

@completed = results[:completed] if results
end
end

def download_file
content_id = params[:path][0]
@content_model = ContentModel.find(content_id)
if(session[:content_download_worker_key])
results = Workling.return.get(session[:content_download_worker_key])
send_domain_file results[:domain_file_id], :type => "text/" + results[:type]
session[:content_download_worker_key] = nil
else
render :nothing => true
end

end
end
end
65 changes: 19 additions & 46 deletions app/views/content_export/index.rhtml
@@ -1,64 +1,37 @@
<script>
Exporter = {
updateForm: function() {
if($('export_download_range').checked) {
$('export_range_start').disabled = false;
$('export_range_end').disabled = false;
}
else {
$('export_range_start').disabled = true;
$('export_range_end').disabled = true;
}
},

generate: function() {
$('export_download').innerHTML = '<%= jh "Exporting File".t %>';
Element.show('export_download');
$('submit_button').disabled = true;
new Ajax.Request("<%= url_for :action => 'generate_file', :path => @content_model.id %>",
{ parameters: Form.serialize('export_form'),
onComplete: function(req) {
setTimeout(Exporter.status,1000);
}
}
);
},

status: function() {
$('export_download').innerHTML = '<%= jh "Still Exporting...".t %>';
new Ajax.Request("<%= url_for :action => 'status', :path => @content_model.id %>")
},

download: function() {
$('export_download').innerHTML = '<%= jh "Downloading".t %>';
document.location = "<%= url_for :action => 'download_file', :path => @content_model.id %>";
setTimeout(Exporter.backToContent,3000);
},

backToContent: function() {
document.location = "<%= url_for :controller => '/content', :action => 'view', :path => @content_model.id %>";

Exporter = {
updateForm: function() {
if($('export_download_range').checked) {
$('export_range_start').disabled = false;
$('export_range_end').disabled = false;
} else {
$('export_range_start').disabled = true;
$('export_range_end').disabled = true;
}
}
}
</script>

<div class='admin_content'>
<% cms_form_for :export, @export, :html => { :onsubmit => 'Exporter.generate(); return false;', :id => 'export_form' } do |f| %>
<% cms_form_for :export, @export, :html => { :id => 'export_form' } do |f| %>
<%= f.radio_buttons :download, [ [ 'All Entries','all' ], ['Range of Entries','range' ]], :vertical => true, :separator => '<br/>', :onchange => 'Exporter.updateForm();' %>
<% f.custom_field 'Entry Range', :vertical => true do %>
&nbsp;&nbsp;Entry # <input type='text' id='export_range_start' name='export[range_start]' size='4' value='1' /> to <input type='text' name='export[range_end]' size='4' id='export_range_end' value='<%= @entry_count %>'/>
<% end -%>
<%= f.radio_buttons :export_format , @export_options , :vertical => true, :separator => '<br/>', :label => 'Format of downloaded file' %>
<tr>
<td colspan='2' align='right'>
<span style='display:none;' id='export_download'><%= "Exporting File".t %></span>&nbsp;&nbsp;&nbsp;<input type='submit' value='<%= vh "Export & Download".t %>' id='submit_button' />
<input type='button' value='<%= vh "Export & Download".t %>' id='export_button' /><span style='display:none;' id='export_button_status'><%= "Exporting File".t %></span>
</td>
</tr>



<% end -%>
</div>

<script>
Exporter.updateForm();
Exporter.updateForm();

new WebivaExporter({button: '#export_button',
url: "<%= url_for :action => 'generate_file', :path => @content_model.id %>",
frm: '#export_form',
onComplete: function() {document.location = "<%= url_for :controller => '/content', :action => 'view', :path => @content_model.id %>";}});
</script>
</div>
7 changes: 0 additions & 7 deletions app/views/content_export/status.rjs

This file was deleted.

7 changes: 0 additions & 7 deletions app/views/member_export/status.rjs

This file was deleted.

1 change: 1 addition & 0 deletions app/workers/content_export_worker.rb
Expand Up @@ -71,6 +71,7 @@ def do_work(args)

domain_file = DomainFile.save_temporary_file filename, :name => sprintf("%s_%d.%s",content_model.name.humanize,Time.now.strftime("%Y_%m_%d"),results[:type])

results[:type] = 'text/' + results[:type]
results[:domain_file_id] = domain_file.id
results[:completed] = 1
Workling.return.set(args[:uid],results)
Expand Down
2 changes: 1 addition & 1 deletion app/workers/member_export_worker.rb
Expand Up @@ -72,7 +72,7 @@ def do_work(args)

results[:domain_file_id] = domain_file.id
results[:entries] = idx
results[:type] = 'csv'
results[:type] = 'text/csv'
results[:completed] = 1

Workling.return.set(args[:uid],results)
Expand Down

0 comments on commit c576c72

Please sign in to comment.