staugaard-comatose 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ - version: 2.0.3 (alpha)
2
+ - staugaard: Added import and export of pages in admin controller
3
+
4
+ - version: 2.0.2 (alpha)
5
+ - staugaard: Added "unloadable" to ComatoseController (problems with ActsAsAuthenticated-integration similar to http://tinyurl.com/6caz5r)
6
+
1
7
  - version: 2.0.1 (alpha)
2
8
  - Merged changes from andreas (http://github.com/andreas)...
3
9
  - andreas: Fixed comatose:admin:customize raketask (seems plugin_path was wrong, and made use of mkdir_p to avoid "File exists"-errors.)
@@ -1,8 +1,8 @@
1
1
  # Generated on Tue May 20 20:13:12 -0500 2008
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "comatose"
4
- s.version = "2.0.2"
5
- s.date = "2008-09-15" # 2008-05-20
4
+ s.version = "2.0.3"
5
+ s.date = "2008-10-10" # 2008-05-20
6
6
  s.summary = "Micro CMS designed for being embedded into existing Rails applications"
7
7
  s.email = "matt@elucidata.net"
8
8
  s.rubyforge_project = 'comatose'
@@ -140,6 +140,16 @@ class ComatoseAdminController < ActionController::Base
140
140
  redirect_to :controller=>self.controller_name, :action=>'index'
141
141
  end
142
142
 
143
+ def export
144
+ send_data(page_to_hash(ComatosePage.root).to_yaml, :disposition => 'inline', :type => 'text/yaml', :filename => "comatose-pages.yml")
145
+ end
146
+
147
+ def import
148
+ data = YAML::load(params[:import_file])
149
+ hash_to_page_tree(data, ComatosePage.root)
150
+ flash[:notice] = "Pages Imported Successfully"
151
+ redirect_to :controller=>self.controller_name, :action=>'index'
152
+ end
143
153
 
144
154
  protected
145
155
 
@@ -345,5 +355,32 @@ protected
345
355
  end
346
356
  end
347
357
 
358
+ private
359
+
360
+ def page_to_hash(page)
361
+ data = page.attributes.clone
362
+ # Pull out the specific, or unnecessary fields
363
+ %w(id parent_id updated_on author position version created_on full_path).each {|key| data.delete(key)}
364
+ if !page.children.empty?
365
+ data['children'] = []
366
+ page.children.each do |child|
367
+ data['children'] << page_to_hash(child)
368
+ end
369
+ end
370
+ data
371
+ end
348
372
 
373
+ def hash_to_page_tree(hsh, page)
374
+ child_ary = hsh.delete 'children'
375
+ page.update_attributes(hsh)
376
+ page.save
377
+ child_ary.each do |child_hsh|
378
+ if child_pg = page.children.find_by_slug( child_hsh['slug'] )
379
+ hash_to_page_tree( child_hsh, child_pg )
380
+ else
381
+ hash_to_page_tree( child_hsh, page.children.create )
382
+ end
383
+ end if child_ary
384
+ end
385
+
349
386
  end
@@ -1,4 +1,11 @@
1
1
  <div class="action">
2
+ <% form_tag(url_for(:action => 'import'), :multipart => true, :style => 'display: none;', :id => 'import_form') do %>
3
+ <%= file_field_tag 'import_file' %>
4
+ <%= submit_tag 'Import' %>
5
+ <% end %>
6
+
7
+ <%= link_to 'Import', '#', :id => 'import_link2', :onclick => "$('import_form').setStyle({display: 'inline'}); this.hide();" %>
8
+ <%= link_to 'Export', :controller=>controller.controller_name, :action=>'export' %>
2
9
  <%= link_to 'Clear Page Cache', :controller=>controller.controller_name, :action=>'expire_page_cache' %>
3
10
  </div>
4
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: staugaard-comatose
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - M@ McCray
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-15 00:00:00 -07:00
12
+ date: 2008-10-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15