qcms 1.3.3 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/app/controllers/admin/admin_controller.rb +0 -3
- data/app/controllers/admin/meta_definitions_controller.rb +1 -0
- data/app/controllers/system/meta_definitions_controller.rb +29 -0
- data/app/controllers/system/system_controller.rb +8 -0
- data/app/helpers/system/documents_helper.rb +2 -0
- data/app/models/document.rb +19 -3
- data/app/models/meta_definition.rb +3 -3
- data/app/views/layouts/admin.html.erb +1 -1
- data/app/views/layouts/application.html.erb +1 -1
- data/app/views/layouts/system.html.erb +41 -0
- data/app/views/system/meta_definitions/_form.html.erb +22 -0
- data/app/views/system/meta_definitions/_meta_definition.html.erb +22 -0
- data/app/views/system/meta_definitions/edit.html.erb +5 -0
- data/app/views/system/meta_definitions/index.html.erb +47 -0
- data/app/views/system/meta_definitions/new.html.erb +5 -0
- data/app/views/{admin/admin/system.html.erb → system/system/dashboard.html.erb} +0 -0
- data/db/migrate/20090824150210_create_documents.rb +1 -0
- metadata +27 -9
- data/lib/tasks/cms.rake +0 -237
- data/qcms.gemspec +0 -91
- data/tasks/qcms_tasks.rake +0 -223
data/.gitignore
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.3.
|
|
1
|
+
1.3.5
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class System::MetaDefinitionsController < System::SystemController
|
|
2
|
+
inherit_resources
|
|
3
|
+
respond_to :html
|
|
4
|
+
|
|
5
|
+
def index
|
|
6
|
+
@meta_definitions = MetaDefinition.roots
|
|
7
|
+
@meta_definition = MetaDefinition.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def update
|
|
11
|
+
update! { system_meta_definitions_path }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create
|
|
15
|
+
create! { system_meta_definitions_path }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def up
|
|
19
|
+
@meta_definition = MetaDefinition.find(params[:id])
|
|
20
|
+
@meta_definition.move_higher
|
|
21
|
+
redirect_to system_meta_definitions_path
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def down
|
|
25
|
+
@meta_definition = MetaDefinition.find(params[:id])
|
|
26
|
+
@meta_definition.move_lower
|
|
27
|
+
redirect_to system_meta_definitions_path
|
|
28
|
+
end
|
|
29
|
+
end
|
data/app/models/document.rb
CHANGED
|
@@ -69,6 +69,13 @@ class Document < ActiveRecord::Base
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
+
# Allow all documents to be processed in tree structure
|
|
73
|
+
def self.process(&block)
|
|
74
|
+
Document.all.group_by(&:meta_definition).each do | meta_definition, documents |
|
|
75
|
+
documents.each { |document| yield(document, meta_definition)}
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
72
79
|
# autherisation
|
|
73
80
|
def allowed?(user, action)
|
|
74
81
|
meta_definition.allowed?(user, action)
|
|
@@ -182,6 +189,15 @@ class Document < ActiveRecord::Base
|
|
|
182
189
|
map_fields
|
|
183
190
|
end
|
|
184
191
|
|
|
192
|
+
SortByOptions = {
|
|
193
|
+
'Date DESC' => 'published_at DESC',
|
|
194
|
+
'Date ASC' => 'published_at ASC',
|
|
195
|
+
'Title' => 'title',
|
|
196
|
+
'Manually' => 'position ASC'
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
PerPageOptions = [1, 5, 10, 20, 50, 100]
|
|
200
|
+
|
|
185
201
|
private
|
|
186
202
|
|
|
187
203
|
# make sure the last element of the path is the same as the permalink
|
|
@@ -235,12 +251,12 @@ class Document < ActiveRecord::Base
|
|
|
235
251
|
end
|
|
236
252
|
|
|
237
253
|
def generate_summary
|
|
238
|
-
self.summary = Sanitize.clean(self.body).to(255) if self.
|
|
254
|
+
self.summary = Sanitize.clean(self.body).to(255) if self.summary.blank?
|
|
239
255
|
end
|
|
240
256
|
|
|
241
257
|
def set_meta_data
|
|
242
|
-
self.meta_title = self.title.to(
|
|
243
|
-
self.meta_description = self.summary.to(
|
|
258
|
+
self.meta_title = self.title.to(255) if self.meta_title.blank?
|
|
259
|
+
self.meta_description = self.summary.to(255) if !self.summary.blank? && self.meta_description.blank?
|
|
244
260
|
end
|
|
245
261
|
|
|
246
262
|
# before_save
|
|
@@ -4,11 +4,11 @@ class MetaDefinition < ActiveRecord::Base
|
|
|
4
4
|
validates_presence_of :label_path, :label
|
|
5
5
|
validates_uniqueness_of :label_path
|
|
6
6
|
|
|
7
|
-
acts_as_list
|
|
7
|
+
acts_as_list :scope => :parent
|
|
8
8
|
acts_as_tree
|
|
9
9
|
path_finder :uid => 'label', :column => 'label_path'
|
|
10
10
|
|
|
11
|
-
default_scope :order => 'position
|
|
11
|
+
default_scope :order => 'position ASC'
|
|
12
12
|
|
|
13
13
|
named_scope :by_label, lambda { |label| { :conditions => ['label = ?', label] } }
|
|
14
14
|
|
|
@@ -52,6 +52,6 @@ class MetaDefinition < ActiveRecord::Base
|
|
|
52
52
|
|
|
53
53
|
# Prevent empty strings being saved
|
|
54
54
|
def nullify_empty_columns
|
|
55
|
-
%w(sort_by per_page).each { |column| self.send(column+'=', nil) if self.send(column) == '' }
|
|
55
|
+
%w(sort_by per_page default_state).each { |column| self.send(column+'=', nil) if self.send(column) == '' }
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title><%= @page_title || 'untitled' %></title>
|
|
6
6
|
<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
|
|
7
7
|
<link rel="stylesheet" href="/stylesheets/admin/styles.css" type="text/css" media="screen" />
|
|
8
|
-
<%= javascript_include_tag 'jquery
|
|
8
|
+
<%= javascript_include_tag 'jquery.min.js' %>
|
|
9
9
|
<%= javascript_include_tag 'application' %>
|
|
10
10
|
<%= meta_tags -%>
|
|
11
11
|
<%= yield :head %>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title><%= page_title %></title>
|
|
6
6
|
<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
|
|
7
7
|
<link rel="stylesheet" href="/stylesheets/styles.css" type="text/css" media="screen" />
|
|
8
|
-
<%= javascript_include_tag 'jquery
|
|
8
|
+
<%= javascript_include_tag 'jquery.min.js' %>
|
|
9
9
|
<%= javascript_include_tag 'application' %>
|
|
10
10
|
<%= meta_tags -%>
|
|
11
11
|
<%= yield :head %>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<title><%= @page_title || 'untitled' %></title>
|
|
6
|
+
<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
|
|
7
|
+
<link rel="stylesheet" href="/stylesheets/system/styles.css" type="text/css" media="screen" />
|
|
8
|
+
<%= javascript_include_tag 'jquery.min.js' %>
|
|
9
|
+
<%= javascript_include_tag 'application' %>
|
|
10
|
+
<%= meta_tags -%>
|
|
11
|
+
<%= yield :head %>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
|
|
15
|
+
<% if flash[:notice] %>
|
|
16
|
+
<div id="flash-notice"><%= flash[:notice] %> <a href="#">Close</a></div>
|
|
17
|
+
<% end %>
|
|
18
|
+
|
|
19
|
+
<div id="header">QWERTY+ <strong>System</strong> Control Panel</div>
|
|
20
|
+
|
|
21
|
+
<ul id="top_menu">
|
|
22
|
+
<li><a href="<%= system_dashboard_path %>">Dashboard</a></li>
|
|
23
|
+
<li><a href="<%= system_meta_definitions_path %>">Sitemap</a></li>
|
|
24
|
+
<li><a href="<%= system_users_path %>">Users</a></li>
|
|
25
|
+
<li><a href="<%= admin_dashboard_path %>">Admin</a></li>
|
|
26
|
+
<li><a href="<%= root_path %>">Site Homepage</a></li>
|
|
27
|
+
</ul>
|
|
28
|
+
|
|
29
|
+
<div id="container">
|
|
30
|
+
|
|
31
|
+
<div id="content">
|
|
32
|
+
<%= yield %>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="sidebar">
|
|
36
|
+
<%= yield :sidebar %>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
</div> <!-- container -->
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%= form.error_messages %>
|
|
2
|
+
<% unless @meta_definition.new_record? %>
|
|
3
|
+
<p>Label path: <br/><%= form.text_field :label_path %></p>
|
|
4
|
+
<% end %>
|
|
5
|
+
<p>Label: <br/><%= form.text_field :label %></p>
|
|
6
|
+
<p>Parent: <br/><%= form.select :parent_id, ['', ''] + MetaDefinition.all.collect { |md| [md.label_path, md.id] } %></p>
|
|
7
|
+
|
|
8
|
+
<p><label>Sort by</label><br> <%= form.select :sort_by, Document::SortByOptions.to_a, :include_blank => true %></p>
|
|
9
|
+
<p><label>Per page</label><br> <%= form.select :per_page, Document::PerPageOptions.to_a, :include_blank => true %></p>
|
|
10
|
+
|
|
11
|
+
<p><%= form.check_box :record_hits %> Record hits</p>
|
|
12
|
+
<p><%= form.check_box :notify_admins %> Notify admins</p>
|
|
13
|
+
<p><%= form.check_box :randomise_permalink %> Randomise permalink</p>
|
|
14
|
+
<p><%= form.check_box :body_strip_html %> Strip HTML</p>
|
|
15
|
+
<p>Body Length: <br/><%= form.text_field :body_length %></p>
|
|
16
|
+
|
|
17
|
+
<fieldset>
|
|
18
|
+
<legend>Defaults</legend>
|
|
19
|
+
<p>State: <br/><%= form.text_field :default_state %></p>
|
|
20
|
+
<p>Type: <br/><%= form.text_field :default_type, :value => 'Document' %></p>
|
|
21
|
+
</fieldset>
|
|
22
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<div class='meta'>
|
|
2
|
+
<% unless md.children.empty? %>
|
|
3
|
+
<%= link_to md.label.capitalize, "##{dom_id(md)}", :class => 'toggle_details' %>
|
|
4
|
+
<% else %>
|
|
5
|
+
<%= md.label.capitalize %>
|
|
6
|
+
<% end %>
|
|
7
|
+
(<%= md.documents.count %>)
|
|
8
|
+
|
|
9
|
+
<%= link_to 'Add', md.id.to_s, :class => 'new' %>
|
|
10
|
+
<%= link_to 'Edit', edit_system_meta_definition_path(md) %>
|
|
11
|
+
<%= link_to 'Up', up_system_meta_definition_path(md) %>
|
|
12
|
+
<%= link_to 'Down', down_system_meta_definition_path(md) %>
|
|
13
|
+
<%= link_to 'Delete', system_meta_definition_path(md), :method => :delete, :confirm => "Delete this and #{md.documents.count} documents?" %>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div id='<%= dom_id(md) %>' style='display:none;margin-left:20px;'>
|
|
17
|
+
<% unless md.children.empty? %>
|
|
18
|
+
<% md.children.each do |mdc| %>
|
|
19
|
+
<%= render :partial => 'meta_definition', :locals => {:md => mdc} %>
|
|
20
|
+
<% end %>
|
|
21
|
+
<% end %>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<h2>Meta Definitions</h2>
|
|
2
|
+
|
|
3
|
+
<% @meta_definitions.each do |md| %>
|
|
4
|
+
<%= render :partial => 'meta_definition', :locals => { :md => md } %>
|
|
5
|
+
<% end %>
|
|
6
|
+
|
|
7
|
+
<p><%= link_to 'New', '#', :id => 'add_meta_definition', :class => 'button' %></p>
|
|
8
|
+
|
|
9
|
+
<div id='new_meta_definition' style='display:none;'>
|
|
10
|
+
<h3>New</h3>
|
|
11
|
+
<% form_for [:system, @meta_definition] do |f| %>
|
|
12
|
+
<%= render :partial => 'form', :object => f %>
|
|
13
|
+
<%= f.submit 'Save' %>
|
|
14
|
+
<% end %>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<style>
|
|
18
|
+
.meta {
|
|
19
|
+
margin: 4px;
|
|
20
|
+
margin-left: 20px;
|
|
21
|
+
padding: 4px;
|
|
22
|
+
background-color: #D3D6DE;
|
|
23
|
+
border-top: 2px white solid;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
$(function() {
|
|
29
|
+
$('a.toggle_details').click(function() {
|
|
30
|
+
$($(this).attr('href')).toggle();
|
|
31
|
+
return false;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
$('a#add_meta_definition').click(function() {
|
|
35
|
+
$('#new_meta_definition').show();
|
|
36
|
+
return false;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
$('a.new').click(function() {
|
|
40
|
+
$('#new_meta_definition').show();
|
|
41
|
+
$('#meta_definition_parent_id').attr('value', $(this).attr('href'));
|
|
42
|
+
return false;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
</script>
|
|
File without changes
|
metadata
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: qcms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
4
|
+
hash: 17
|
|
5
|
+
prerelease: false
|
|
6
|
+
segments:
|
|
7
|
+
- 1
|
|
8
|
+
- 3
|
|
9
|
+
- 5
|
|
10
|
+
version: 1.3.5
|
|
5
11
|
platform: ruby
|
|
6
12
|
authors:
|
|
7
13
|
- Kris Leech
|
|
@@ -9,7 +15,7 @@ autorequire:
|
|
|
9
15
|
bindir: bin
|
|
10
16
|
cert_chain: []
|
|
11
17
|
|
|
12
|
-
date: 2010-
|
|
18
|
+
date: 2010-10-07 00:00:00 +01:00
|
|
13
19
|
default_executable:
|
|
14
20
|
dependencies: []
|
|
15
21
|
|
|
@@ -31,15 +37,17 @@ files:
|
|
|
31
37
|
- app/controllers/admin/meta_definitions_controller.rb
|
|
32
38
|
- app/controllers/documents_controller.rb
|
|
33
39
|
- app/controllers/sendmail_controller.rb
|
|
40
|
+
- app/controllers/system/meta_definitions_controller.rb
|
|
41
|
+
- app/controllers/system/system_controller.rb
|
|
34
42
|
- app/helpers/admin/documents_helper.rb
|
|
35
43
|
- app/helpers/documents_helper.rb
|
|
36
44
|
- app/helpers/sendmail_helper.rb
|
|
45
|
+
- app/helpers/system/documents_helper.rb
|
|
37
46
|
- app/models/document.rb
|
|
38
47
|
- app/models/document_mailer.rb
|
|
39
48
|
- app/models/document_sweeper.rb
|
|
40
49
|
- app/models/meta_definition.rb
|
|
41
50
|
- app/models/sendmail.rb
|
|
42
|
-
- app/views/admin/admin/system.html.erb
|
|
43
51
|
- app/views/admin/documents/_form.html.erb
|
|
44
52
|
- app/views/admin/documents/default.edit.html.erb
|
|
45
53
|
- app/views/admin/documents/default.new.html.erb
|
|
@@ -49,6 +57,7 @@ files:
|
|
|
49
57
|
- app/views/document_mailer/new_document.erb
|
|
50
58
|
- app/views/layouts/admin.html.erb
|
|
51
59
|
- app/views/layouts/application.html.erb
|
|
60
|
+
- app/views/layouts/system.html.erb
|
|
52
61
|
- app/views/pages/404.html.erb
|
|
53
62
|
- app/views/pages/contact.html.erb
|
|
54
63
|
- app/views/pages/default.html.erb
|
|
@@ -61,16 +70,19 @@ files:
|
|
|
61
70
|
- app/views/pages/template.erb
|
|
62
71
|
- app/views/pages/thank_you.html.erb
|
|
63
72
|
- app/views/sendmail/default.erb
|
|
73
|
+
- app/views/system/meta_definitions/_form.html.erb
|
|
74
|
+
- app/views/system/meta_definitions/_meta_definition.html.erb
|
|
75
|
+
- app/views/system/meta_definitions/edit.html.erb
|
|
76
|
+
- app/views/system/meta_definitions/index.html.erb
|
|
77
|
+
- app/views/system/meta_definitions/new.html.erb
|
|
78
|
+
- app/views/system/system/dashboard.html.erb
|
|
64
79
|
- config/sitemap.example.yml
|
|
65
80
|
- db/migrate/20090824150210_create_documents.rb
|
|
66
81
|
- db/migrate/20091208124512_create_meta_definition.rb
|
|
67
82
|
- init.rb
|
|
68
83
|
- install.rb
|
|
69
84
|
- lib/qcms.rb
|
|
70
|
-
- lib/tasks/cms.rake
|
|
71
|
-
- qcms.gemspec
|
|
72
85
|
- rails/init.rb
|
|
73
|
-
- tasks/qcms_tasks.rake
|
|
74
86
|
- test/qwerty_test.rb
|
|
75
87
|
- test/test_helper.rb
|
|
76
88
|
- uninstall.rb
|
|
@@ -84,21 +96,27 @@ rdoc_options:
|
|
|
84
96
|
require_paths:
|
|
85
97
|
- lib
|
|
86
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
|
+
none: false
|
|
87
100
|
requirements:
|
|
88
101
|
- - ">="
|
|
89
102
|
- !ruby/object:Gem::Version
|
|
103
|
+
hash: 3
|
|
104
|
+
segments:
|
|
105
|
+
- 0
|
|
90
106
|
version: "0"
|
|
91
|
-
version:
|
|
92
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
|
+
none: false
|
|
93
109
|
requirements:
|
|
94
110
|
- - ">="
|
|
95
111
|
- !ruby/object:Gem::Version
|
|
112
|
+
hash: 3
|
|
113
|
+
segments:
|
|
114
|
+
- 0
|
|
96
115
|
version: "0"
|
|
97
|
-
version:
|
|
98
116
|
requirements: []
|
|
99
117
|
|
|
100
118
|
rubyforge_project:
|
|
101
|
-
rubygems_version: 1.3.
|
|
119
|
+
rubygems_version: 1.3.7
|
|
102
120
|
signing_key:
|
|
103
121
|
specification_version: 3
|
|
104
122
|
summary: A CMS built in collaberation with designers
|
data/lib/tasks/cms.rake
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
namespace :qwerty do
|
|
2
|
-
namespace :cms do
|
|
3
|
-
|
|
4
|
-
desc "Create some Lipsum entries for a section"
|
|
5
|
-
task :seed => [:environment] do
|
|
6
|
-
|
|
7
|
-
unless ENV['ids']
|
|
8
|
-
puts 'Supply ids of sections to seed, ids=4,5,12 OR ids=all'
|
|
9
|
-
Document.roots.each do | d |
|
|
10
|
-
puts d.title + ': ' + d.id.to_s
|
|
11
|
-
end
|
|
12
|
-
exit
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if ENV['ids'] == 'all'
|
|
17
|
-
sections = Document.roots.map { |d| d.id }
|
|
18
|
-
else
|
|
19
|
-
sections = ENV['ids'].split(',')
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
require 'faker'
|
|
23
|
-
|
|
24
|
-
sections.each do | section_id |
|
|
25
|
-
|
|
26
|
-
section = Document.find(section_id)
|
|
27
|
-
|
|
28
|
-
next if section.meta_definition.children.empty?
|
|
29
|
-
|
|
30
|
-
label = ENV['label'] || section.meta_definition.children.first.label
|
|
31
|
-
num = (ENV['num'] || 15).to_i
|
|
32
|
-
|
|
33
|
-
section.children.by_label(label).each { |d| d.destroy }
|
|
34
|
-
|
|
35
|
-
puts 'Adding to ' + num.to_s + ' ' + label.pluralize + ' to ' + section.title
|
|
36
|
-
|
|
37
|
-
num.times do | ctr |
|
|
38
|
-
puts ctr.to_s
|
|
39
|
-
doc = Document.create!(
|
|
40
|
-
:title => label.titleize + ' #' + (ctr+1).to_s,
|
|
41
|
-
:author_id => User.first.id,
|
|
42
|
-
:state => 'published',
|
|
43
|
-
:published_at => Time.now - ctr.days,
|
|
44
|
-
:body => Faker::Lorem.paragraphs.join,
|
|
45
|
-
:parent_id => section.id,
|
|
46
|
-
:label => label
|
|
47
|
-
)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
desc "Update meta_definitions from sitemap.yml"
|
|
53
|
-
task :update_meta_definitions => [:environment] do
|
|
54
|
-
puts 'Updating Meta Definitions'
|
|
55
|
-
sitemap = YAML::load(ERB.new(IO.read(File.join(RAILS_ROOT, 'config', 'sitemap.yml'))).result)
|
|
56
|
-
create_meta_definitions(sitemap)
|
|
57
|
-
if @errors_occured
|
|
58
|
-
puts '*' * 20
|
|
59
|
-
puts 'ERRORS OCCURED'
|
|
60
|
-
puts '*' * 20
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def create_meta_definitions(metas, parent_id = nil)
|
|
65
|
-
metas.each do | k, v |
|
|
66
|
-
if MetaDefinition.exists?(:parent_id => parent_id, :label => k)
|
|
67
|
-
|
|
68
|
-
m = MetaDefinition.find(:first, :conditions => {:parent_id => parent_id, :label => k})
|
|
69
|
-
m.update_attributes(
|
|
70
|
-
:label => (v['label'] || k),
|
|
71
|
-
:parent_id => parent_id,
|
|
72
|
-
:per_page => v['per_page'],
|
|
73
|
-
:sort_by => v['sort_by'],
|
|
74
|
-
# :label_path => v['label_path'],
|
|
75
|
-
:default_type => v['default_type'] || 'Document',
|
|
76
|
-
:default_state => v['default_state'],
|
|
77
|
-
:randomise_permalink => v['randomise_permalink'] || false,
|
|
78
|
-
:body_length => v['body_length'],
|
|
79
|
-
:body_strip_html => v['body_strip_html'] || false,
|
|
80
|
-
:field_map => (YAML.dump(v['field_map']) unless v['field_map'].nil?),
|
|
81
|
-
:autherisation => (YAML.dump(v['autherisation']) unless v['autherisation'].nil?),
|
|
82
|
-
:flash_messages => (YAML.dump(v['flash_messages']) unless v['flash_messages'].nil?)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
)
|
|
86
|
-
if m.errors.empty?
|
|
87
|
-
puts "[UPDATED] #{m.label_path}"
|
|
88
|
-
else
|
|
89
|
-
puts "[ERROR] #{m.label_path} #{m.id}"
|
|
90
|
-
puts m.errors.full_messages
|
|
91
|
-
@errors_occured = true
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
else
|
|
95
|
-
m = MetaDefinition.create!(
|
|
96
|
-
:label => (v['label'] || k),
|
|
97
|
-
:parent_id => parent_id,
|
|
98
|
-
:label_path => v['label_path'],
|
|
99
|
-
:per_page => v['per_page'],
|
|
100
|
-
:sort_by => v['sort_by'],
|
|
101
|
-
:default_type => v['default_type'] || 'Document',
|
|
102
|
-
:default_state => v['default_state'],
|
|
103
|
-
:randomise_permalink => v['randomise_permalink'] || false,
|
|
104
|
-
:body_length => v['body_length'],
|
|
105
|
-
:body_strip_html => v['body_strip_html'] || false,
|
|
106
|
-
:field_map => (YAML.dump(v['field_map']) unless v['field_map'].nil?),
|
|
107
|
-
:autherisation => (YAML.dump(v['autherisation']) unless v['autherisation'].nil?),
|
|
108
|
-
:flash_messages => (YAML.dump(v['flash_messages']) unless v['flash_messages'].nil?)
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
if m.root?
|
|
112
|
-
d = Document.new(
|
|
113
|
-
:permalink => m.label,
|
|
114
|
-
:author_id => User.first.id,
|
|
115
|
-
:state => 'published',
|
|
116
|
-
:published_at => Time.now,
|
|
117
|
-
:title => m.label.titleize,
|
|
118
|
-
:meta_definition_id => m.id,
|
|
119
|
-
:label => m.label) # label set manually for roots
|
|
120
|
-
d.type = m.default_type || 'Document'
|
|
121
|
-
d.save!
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
puts "[NEW] #{m.label_path}"
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
unless v['children'].nil?
|
|
128
|
-
create_meta_definitions(v['children'], m.id)
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
desc "Delete meta_definitions not in sitemap.yml"
|
|
134
|
-
task :delete_meta_definitions => [:environment] do
|
|
135
|
-
puts 'Deleting Meta Definitions'
|
|
136
|
-
sitemap = YAML::load(ERB.new(IO.read(File.join(RAILS_ROOT, 'config', 'sitemap.yml'))).result)
|
|
137
|
-
delete_meta_defintions(sitemap, MetaDefinition.roots)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def delete_meta_defintions(sitemap, metas)
|
|
141
|
-
metas.each do | md |
|
|
142
|
-
if sitemap && sitemap[md.label]
|
|
143
|
-
delete_meta_defintions(sitemap[md.label]['children'], md.children) if md.children
|
|
144
|
-
else
|
|
145
|
-
puts 'Deleting ' + md.label_path
|
|
146
|
-
md.destroy
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
desc "Overwrite sitemap.yml from Database"
|
|
152
|
-
task :update_sitemap_from_db => [:environment] do
|
|
153
|
-
meta_definitions = MetaDefinition.find(:all, :order => 'label_path', :conditions => { :parent_id => nil })
|
|
154
|
-
sitemap = make_sitemap(meta_definitions)
|
|
155
|
-
sitemap = sitemap.to_yaml.gsub("!ruby/symbol ", ":").sub("---","").split("\n").map(&:rstrip).join("\n").strip
|
|
156
|
-
File.open(File.join(RAILS_ROOT, 'config', 'sitemap.yml'), 'w') {|f| f.write(sitemap) }
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def make_sitemap(meta_definitions)
|
|
160
|
-
fields = %w(notify_admins record_hits per_page sort_by default_type default_state randomise_permalink body_length body_strip_html field_map autherisation flash_messages)
|
|
161
|
-
|
|
162
|
-
sitemap = {}
|
|
163
|
-
|
|
164
|
-
meta_definitions.each do | md |
|
|
165
|
-
sitemap[md.label] = {}
|
|
166
|
-
|
|
167
|
-
fields.each do | field |
|
|
168
|
-
value = md.send(field)
|
|
169
|
-
value = 'true' if value.is_a? TrueClass
|
|
170
|
-
value = 'false' if value.is_a? FalseClass
|
|
171
|
-
sitemap[md.label][field] = value if value && !(value.respond_to?('empty?') && value.empty?)
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
# recursive
|
|
175
|
-
sitemap[md.label]['children'] = make_sitemap(md.children) unless md.children.empty?
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
return sitemap
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
desc "Generate Site from Meta Definitions"
|
|
182
|
-
task :build_site => [:update_meta_definitions] do
|
|
183
|
-
puts "Building Site"
|
|
184
|
-
|
|
185
|
-
if User.all.empty?
|
|
186
|
-
puts "Add some users first: rake qwerty:core:seed"
|
|
187
|
-
exit
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
MetaDefinition.roots.each do | meta_definition |
|
|
193
|
-
next if meta_definition.label == 'page' # special case
|
|
194
|
-
next if meta_definition.children.empty?
|
|
195
|
-
unless Document.exists?(:path => meta_definition.label_path)
|
|
196
|
-
|
|
197
|
-
puts "[NEW] #{meta_definition.label}"
|
|
198
|
-
d=Document.new(
|
|
199
|
-
:permalink => meta_definition.label,
|
|
200
|
-
:author_id => User.first.id,
|
|
201
|
-
:state => 'published',
|
|
202
|
-
:published_at => Time.now,
|
|
203
|
-
:title => meta_definition.label.titleize,
|
|
204
|
-
:meta_definition_id => meta_definition.id,
|
|
205
|
-
:label => meta_definition.label) # label set manually for roots
|
|
206
|
-
d.type = meta_definition.default_type || 'Document'
|
|
207
|
-
d.save!
|
|
208
|
-
else
|
|
209
|
-
puts "[SKIP] #{meta_definition.label} already exists"
|
|
210
|
-
end
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
# NOTE: If you get an 'nil' error here it is because you don't have a root document called 'page'
|
|
214
|
-
%w(home contact sitemap).each do | title |
|
|
215
|
-
unless Document.exists?(:permalink => title)
|
|
216
|
-
d=Document.new(
|
|
217
|
-
:permalink => title,
|
|
218
|
-
:author_id => User.first,
|
|
219
|
-
:title => title.titleize,
|
|
220
|
-
:state => 'published',
|
|
221
|
-
:published_at => Time.now,
|
|
222
|
-
:meta_definition_id => MetaDefinition.find_by_label_path('page').id,
|
|
223
|
-
:label => 'page')
|
|
224
|
-
d.type = 'Document'
|
|
225
|
-
d.save!
|
|
226
|
-
else
|
|
227
|
-
puts "[SKIP] #{title} already exists"
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
task :rebuild_site => [:environment] do
|
|
233
|
-
MetaDefinition.destroy_all # will cause deletion of all documents as well
|
|
234
|
-
Rake::Task['qwerty:cms:build_site'].invoke
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
end
|
data/qcms.gemspec
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |s|
|
|
7
|
-
s.name = %q{qcms}
|
|
8
|
-
s.version = "1.3.3"
|
|
9
|
-
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
-
s.authors = ["Kris Leech"]
|
|
12
|
-
s.date = %q{2010-08-27}
|
|
13
|
-
s.description = %q{Key CMS features: extended template pathing, sitemap.yml, simple configurable, deeply nestable content}
|
|
14
|
-
s.email = %q{kris.leech@interkonect.com}
|
|
15
|
-
s.extra_rdoc_files = [
|
|
16
|
-
"README"
|
|
17
|
-
]
|
|
18
|
-
s.files = [
|
|
19
|
-
".gitignore",
|
|
20
|
-
"README",
|
|
21
|
-
"Rakefile",
|
|
22
|
-
"VERSION",
|
|
23
|
-
"app/controllers/admin/admin_controller.rb",
|
|
24
|
-
"app/controllers/admin/documents_controller.rb",
|
|
25
|
-
"app/controllers/admin/meta_definitions_controller.rb",
|
|
26
|
-
"app/controllers/documents_controller.rb",
|
|
27
|
-
"app/controllers/sendmail_controller.rb",
|
|
28
|
-
"app/helpers/admin/documents_helper.rb",
|
|
29
|
-
"app/helpers/documents_helper.rb",
|
|
30
|
-
"app/helpers/sendmail_helper.rb",
|
|
31
|
-
"app/models/document.rb",
|
|
32
|
-
"app/models/document_mailer.rb",
|
|
33
|
-
"app/models/document_sweeper.rb",
|
|
34
|
-
"app/models/meta_definition.rb",
|
|
35
|
-
"app/models/sendmail.rb",
|
|
36
|
-
"app/views/admin/admin/system.html.erb",
|
|
37
|
-
"app/views/admin/documents/_form.html.erb",
|
|
38
|
-
"app/views/admin/documents/default.edit.html.erb",
|
|
39
|
-
"app/views/admin/documents/default.new.html.erb",
|
|
40
|
-
"app/views/admin/documents/default.show.html.erb",
|
|
41
|
-
"app/views/admin/documents/index.html.erb",
|
|
42
|
-
"app/views/admin/documents/shared/_resource_link.html.erb",
|
|
43
|
-
"app/views/document_mailer/new_document.erb",
|
|
44
|
-
"app/views/layouts/admin.html.erb",
|
|
45
|
-
"app/views/layouts/application.html.erb",
|
|
46
|
-
"app/views/pages/404.html.erb",
|
|
47
|
-
"app/views/pages/contact.html.erb",
|
|
48
|
-
"app/views/pages/default.html.erb",
|
|
49
|
-
"app/views/pages/feed.rss.builder",
|
|
50
|
-
"app/views/pages/home.html.erb",
|
|
51
|
-
"app/views/pages/search.html.erb",
|
|
52
|
-
"app/views/pages/shared/_archived_pages.erb",
|
|
53
|
-
"app/views/pages/shared/_related_pages.html.erb",
|
|
54
|
-
"app/views/pages/sitemap.html.erb",
|
|
55
|
-
"app/views/pages/template.erb",
|
|
56
|
-
"app/views/pages/thank_you.html.erb",
|
|
57
|
-
"app/views/sendmail/default.erb",
|
|
58
|
-
"config/sitemap.example.yml",
|
|
59
|
-
"db/migrate/20090824150210_create_documents.rb",
|
|
60
|
-
"db/migrate/20091208124512_create_meta_definition.rb",
|
|
61
|
-
"init.rb",
|
|
62
|
-
"install.rb",
|
|
63
|
-
"lib/qcms.rb",
|
|
64
|
-
"lib/tasks/cms.rake",
|
|
65
|
-
"qcms.gemspec",
|
|
66
|
-
"rails/init.rb",
|
|
67
|
-
"tasks/qcms_tasks.rake",
|
|
68
|
-
"test/qwerty_test.rb",
|
|
69
|
-
"test/test_helper.rb",
|
|
70
|
-
"uninstall.rb"
|
|
71
|
-
]
|
|
72
|
-
s.homepage = %q{http://github.com/krisleech/qcms}
|
|
73
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
|
74
|
-
s.require_paths = ["lib"]
|
|
75
|
-
s.rubygems_version = %q{1.3.5}
|
|
76
|
-
s.summary = %q{A CMS built in collaberation with designers}
|
|
77
|
-
s.test_files = [
|
|
78
|
-
"test/qwerty_test.rb",
|
|
79
|
-
"test/test_helper.rb"
|
|
80
|
-
]
|
|
81
|
-
|
|
82
|
-
if s.respond_to? :specification_version then
|
|
83
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
84
|
-
s.specification_version = 3
|
|
85
|
-
|
|
86
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
87
|
-
else
|
|
88
|
-
end
|
|
89
|
-
else
|
|
90
|
-
end
|
|
91
|
-
end
|
data/tasks/qcms_tasks.rake
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
namespace :qwerty do
|
|
4
|
-
namespace :cms do
|
|
5
|
-
|
|
6
|
-
task :hello do
|
|
7
|
-
puts 'world'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
task :add_view_path_code => [:environment] do
|
|
11
|
-
@total = 0
|
|
12
|
-
[File.join(RAILS_ROOT)].each do |root_path|
|
|
13
|
-
|
|
14
|
-
puts root_path
|
|
15
|
-
|
|
16
|
-
Dir[root_path + '/**/*.html.erb'].each do |path|
|
|
17
|
-
|
|
18
|
-
File.open(path, "r") do |file|
|
|
19
|
-
@process = true
|
|
20
|
-
while (line = file.gets)
|
|
21
|
-
if line.include? 'content_for :debug_info'
|
|
22
|
-
@process = false
|
|
23
|
-
break
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
if @process
|
|
29
|
-
@total = @total + 1
|
|
30
|
-
puts "Adding to #{path}"
|
|
31
|
-
File.open(path, 'a') do | file |
|
|
32
|
-
file.puts "<% content_for :debug_info do %>"
|
|
33
|
-
file.puts "VIEW:<%= __FILE__ %><br>"
|
|
34
|
-
file.puts "<% end %>"
|
|
35
|
-
end
|
|
36
|
-
else
|
|
37
|
-
puts "Not adding to #{path}"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
puts '---'
|
|
42
|
-
puts "TOTAL: #{@total}"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
desc "Load some sample data"
|
|
46
|
-
task :seed => [:rebuild_site] do
|
|
47
|
-
titles = ['My First Blog Post', 'My Second Blog Post']
|
|
48
|
-
titles.size.times do | ctr |
|
|
49
|
-
|
|
50
|
-
doc = Document.create(
|
|
51
|
-
:title => titles[ctr-1],
|
|
52
|
-
:author_id => User.first.id,
|
|
53
|
-
:state => 'published',
|
|
54
|
-
:published_at => Time.now - ctr.days,
|
|
55
|
-
:body => 'Some Content Goes Here',
|
|
56
|
-
:parent_id => Document['blog'].id,
|
|
57
|
-
:label => 'post'
|
|
58
|
-
)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
desc "Update meta_definitions from sitemap.yml"
|
|
64
|
-
task :update_meta_definitions => [:environment] do
|
|
65
|
-
puts 'Updating Meta Definitions'
|
|
66
|
-
sitemap = YAML::load(ERB.new(IO.read(File.join(RAILS_ROOT, 'config', 'sitemap.yml'))).result)
|
|
67
|
-
create_meta_definitions(sitemap)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def create_meta_definitions(metas, parent_id = nil)
|
|
71
|
-
metas.each do | k, v |
|
|
72
|
-
if MetaDefinition.exists?(:parent_id => parent_id, :label => k)
|
|
73
|
-
|
|
74
|
-
m = MetaDefinition.find(:first, :conditions => {:parent_id => parent_id, :label => k})
|
|
75
|
-
m.update_attributes(
|
|
76
|
-
:label => (v['label'] || k),
|
|
77
|
-
:parent_id => parent_id,
|
|
78
|
-
:per_page => v['per_page'],
|
|
79
|
-
:sort_by => v['sort_by'],
|
|
80
|
-
:label_path => v['label_path'],
|
|
81
|
-
:default_type => v['default_type'] || 'Document',
|
|
82
|
-
:default_state => v['default_state'],
|
|
83
|
-
:randomise_permalink => v['randomise_permalink'] || false,
|
|
84
|
-
:body_length => v['body_length'],
|
|
85
|
-
:body_strip_html => v['body_strip_html'] || false,
|
|
86
|
-
:field_map => (YAML.dump(v['field_map']) unless v['field_map'].nil?),
|
|
87
|
-
:autherisation => (YAML.dump(v['autherisation']) unless v['autherisation'].nil?),
|
|
88
|
-
:flash_messages => (YAML.dump(v['flash_messages']) unless v['flash_messages'].nil?)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
92
|
-
puts "[UPDATED] #{m.label_path}"
|
|
93
|
-
else
|
|
94
|
-
m = MetaDefinition.create!(
|
|
95
|
-
:label => (v['label'] || k),
|
|
96
|
-
:parent_id => parent_id,
|
|
97
|
-
:label_path => v['label_path'],
|
|
98
|
-
:per_page => v['per_page'],
|
|
99
|
-
:sort_by => v['sort_by'],
|
|
100
|
-
:default_type => v['default_type'] || 'Document',
|
|
101
|
-
:default_state => v['default_state'],
|
|
102
|
-
:randomise_permalink => v['randomise_permalink'] || false,
|
|
103
|
-
:body_length => v['body_length'],
|
|
104
|
-
:body_strip_html => v['body_strip_html'] || false,
|
|
105
|
-
:field_map => (YAML.dump(v['field_map']) unless v['field_map'].nil?),
|
|
106
|
-
:autherisation => (YAML.dump(v['autherisation']) unless v['autherisation'].nil?),
|
|
107
|
-
:flash_messages => (YAML.dump(v['flash_messages']) unless v['flash_messages'].nil?)
|
|
108
|
-
)
|
|
109
|
-
puts "[NEW] #{m.label_path}"
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
unless v['children'].nil?
|
|
113
|
-
create_meta_definitions(v['children'], m.id)
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
desc "Overwrite sitemap.yml from Database"
|
|
119
|
-
task :update_sitemap_from_db => [:environment] do
|
|
120
|
-
meta_definitions = MetaDefinition.find(:all, :order => 'label_path', :conditions => { :parent_id => nil })
|
|
121
|
-
sitemap = make_sitemap(meta_definitions)
|
|
122
|
-
sitemap = sitemap.to_yaml.gsub("!ruby/symbol ", ":").sub("---","").split("\n").map(&:rstrip).join("\n").strip
|
|
123
|
-
File.open(File.join(RAILS_ROOT, 'config', 'sitemap.yml'), 'w') {|f| f.write(sitemap) }
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def make_sitemap(meta_definitions)
|
|
127
|
-
fields = %w(label_path record_hits per_page sort_by default_type default_state randomise_permalink body_length body_strip_html field_map autherisation flash_messages)
|
|
128
|
-
|
|
129
|
-
sitemap = {}
|
|
130
|
-
|
|
131
|
-
meta_definitions.each do | md |
|
|
132
|
-
sitemap[md.label] = {}
|
|
133
|
-
|
|
134
|
-
fields.each do | field |
|
|
135
|
-
value = md.send(field)
|
|
136
|
-
value = 'true' if value.is_a? TrueClass
|
|
137
|
-
value = 'false' if value.is_a? FalseClass
|
|
138
|
-
sitemap[md.label][field] = value if value && !(value.respond_to?('empty?') && value.empty?)
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# recursive
|
|
142
|
-
sitemap[md.label]['children'] = make_sitemap(md.children) unless md.children.empty?
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
return sitemap
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
desc "Generate Site from Meta Definitions"
|
|
149
|
-
task :build_site => [:update_meta_definitions] do
|
|
150
|
-
puts "Building Site"
|
|
151
|
-
|
|
152
|
-
if User.all.empty?
|
|
153
|
-
puts "Add some users first: rake qwerty:core:seed"
|
|
154
|
-
exit
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
MetaDefinition.roots.each do | meta_definition |
|
|
160
|
-
next if meta_definition.label == 'page' # special case
|
|
161
|
-
next if meta_definition.children.empty?
|
|
162
|
-
unless Document.exists?(:path => meta_definition.label_path)
|
|
163
|
-
|
|
164
|
-
puts "[NEW] #{meta_definition.label}"
|
|
165
|
-
d=Document.new(
|
|
166
|
-
:permalink => meta_definition.label,
|
|
167
|
-
:author_id => User.first.id,
|
|
168
|
-
:state => 'published',
|
|
169
|
-
:published_at => Time.now,
|
|
170
|
-
:title => meta_definition.label.titleize,
|
|
171
|
-
:meta_definition_id => meta_definition.id,
|
|
172
|
-
:label => meta_definition.label) # label set manually for roots
|
|
173
|
-
d.type = meta_definition.default_type || 'Document'
|
|
174
|
-
d.save!
|
|
175
|
-
else
|
|
176
|
-
puts "[SKIP] #{meta_definition.label} already exists"
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
%w(home contact sitemap).each do | title |
|
|
181
|
-
unless Document.exists?(:permalink => title)
|
|
182
|
-
d=Document.new(
|
|
183
|
-
:permalink => title,
|
|
184
|
-
:author_id => User.first,
|
|
185
|
-
:title => title.titleize,
|
|
186
|
-
:state => 'published',
|
|
187
|
-
:published_at => Time.now,
|
|
188
|
-
:meta_definition_id => MetaDefinition.find_by_label_path('page').id,
|
|
189
|
-
:label => 'page')
|
|
190
|
-
d.type = 'Document'
|
|
191
|
-
d.save!
|
|
192
|
-
else
|
|
193
|
-
puts "[SKIP] #{title} already exists"
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
task :rebuild_site => [:environment] do
|
|
199
|
-
MetaDefinition.destroy_all # will cause deletion of all documents as well
|
|
200
|
-
Rake::Task['qwerty:cms:build_site'].invoke
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
desc 'Create YAML test fixtures from data in an existing database.
|
|
204
|
-
Defaults to development database. Set RAILS_ENV to override.'
|
|
205
|
-
task :extract_fixtures => :environment do
|
|
206
|
-
require 'Ya2YAML'
|
|
207
|
-
sql = "SELECT * FROM %s"
|
|
208
|
-
skip_tables = ["schema_info"]
|
|
209
|
-
ActiveRecord::Base.establish_connection
|
|
210
|
-
(ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
|
|
211
|
-
i = "000"
|
|
212
|
-
File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file|
|
|
213
|
-
data = ActiveRecord::Base.connection.select_all(sql % table_name)
|
|
214
|
-
file.write data.inject({}) { |hash, record|
|
|
215
|
-
hash["#{table_name}_#{i.succ!}"] = record
|
|
216
|
-
hash
|
|
217
|
-
}.ya2yaml
|
|
218
|
-
end
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
end
|
|
223
|
-
end
|