qcms 1.3.3

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.
Files changed (53) hide show
  1. data/.gitignore +14 -0
  2. data/README +70 -0
  3. data/Rakefile +39 -0
  4. data/VERSION +1 -0
  5. data/app/controllers/admin/admin_controller.rb +12 -0
  6. data/app/controllers/admin/documents_controller.rb +133 -0
  7. data/app/controllers/admin/meta_definitions_controller.rb +36 -0
  8. data/app/controllers/documents_controller.rb +187 -0
  9. data/app/controllers/sendmail_controller.rb +87 -0
  10. data/app/helpers/admin/documents_helper.rb +71 -0
  11. data/app/helpers/documents_helper.rb +30 -0
  12. data/app/helpers/sendmail_helper.rb +2 -0
  13. data/app/models/document.rb +292 -0
  14. data/app/models/document_mailer.rb +13 -0
  15. data/app/models/document_sweeper.rb +28 -0
  16. data/app/models/meta_definition.rb +57 -0
  17. data/app/models/sendmail.rb +18 -0
  18. data/app/views/admin/admin/system.html.erb +34 -0
  19. data/app/views/admin/documents/_form.html.erb +60 -0
  20. data/app/views/admin/documents/default.edit.html.erb +10 -0
  21. data/app/views/admin/documents/default.new.html.erb +10 -0
  22. data/app/views/admin/documents/default.show.html.erb +77 -0
  23. data/app/views/admin/documents/index.html.erb +32 -0
  24. data/app/views/admin/documents/shared/_resource_link.html.erb +6 -0
  25. data/app/views/document_mailer/new_document.erb +12 -0
  26. data/app/views/layouts/admin.html.erb +43 -0
  27. data/app/views/layouts/application.html.erb +44 -0
  28. data/app/views/pages/404.html.erb +28 -0
  29. data/app/views/pages/contact.html.erb +42 -0
  30. data/app/views/pages/default.html.erb +12 -0
  31. data/app/views/pages/feed.rss.builder +17 -0
  32. data/app/views/pages/home.html.erb +5 -0
  33. data/app/views/pages/search.html.erb +19 -0
  34. data/app/views/pages/shared/_archived_pages.erb +16 -0
  35. data/app/views/pages/shared/_related_pages.html.erb +13 -0
  36. data/app/views/pages/sitemap.html.erb +9 -0
  37. data/app/views/pages/template.erb +51 -0
  38. data/app/views/pages/thank_you.html.erb +1 -0
  39. data/app/views/sendmail/default.erb +12 -0
  40. data/config/sitemap.example.yml +39 -0
  41. data/db/migrate/20090824150210_create_documents.rb +37 -0
  42. data/db/migrate/20091208124512_create_meta_definition.rb +26 -0
  43. data/init.rb +1 -0
  44. data/install.rb +1 -0
  45. data/lib/qcms.rb +4 -0
  46. data/lib/tasks/cms.rake +237 -0
  47. data/qcms.gemspec +91 -0
  48. data/rails/init.rb +3 -0
  49. data/tasks/qcms_tasks.rake +223 -0
  50. data/test/qwerty_test.rb +8 -0
  51. data/test/test_helper.rb +3 -0
  52. data/uninstall.rb +1 -0
  53. metadata +107 -0
@@ -0,0 +1,91 @@
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
@@ -0,0 +1,3 @@
1
+ if RAILS_ENV == 'development'
2
+ ActiveSupport::Dependencies.load_once_paths.reject!{|x| x =~ /^#{Regexp.escape(File.dirname(__FILE__))}/}
3
+ end
@@ -0,0 +1,223 @@
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
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class QwertyTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_support/test_case'
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: qcms
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.3
5
+ platform: ruby
6
+ authors:
7
+ - Kris Leech
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-08-27 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: "Key CMS features: extended template pathing, sitemap.yml, simple configurable, deeply nestable content"
17
+ email: kris.leech@interkonect.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - .gitignore
26
+ - README
27
+ - Rakefile
28
+ - VERSION
29
+ - app/controllers/admin/admin_controller.rb
30
+ - app/controllers/admin/documents_controller.rb
31
+ - app/controllers/admin/meta_definitions_controller.rb
32
+ - app/controllers/documents_controller.rb
33
+ - app/controllers/sendmail_controller.rb
34
+ - app/helpers/admin/documents_helper.rb
35
+ - app/helpers/documents_helper.rb
36
+ - app/helpers/sendmail_helper.rb
37
+ - app/models/document.rb
38
+ - app/models/document_mailer.rb
39
+ - app/models/document_sweeper.rb
40
+ - app/models/meta_definition.rb
41
+ - app/models/sendmail.rb
42
+ - app/views/admin/admin/system.html.erb
43
+ - app/views/admin/documents/_form.html.erb
44
+ - app/views/admin/documents/default.edit.html.erb
45
+ - app/views/admin/documents/default.new.html.erb
46
+ - app/views/admin/documents/default.show.html.erb
47
+ - app/views/admin/documents/index.html.erb
48
+ - app/views/admin/documents/shared/_resource_link.html.erb
49
+ - app/views/document_mailer/new_document.erb
50
+ - app/views/layouts/admin.html.erb
51
+ - app/views/layouts/application.html.erb
52
+ - app/views/pages/404.html.erb
53
+ - app/views/pages/contact.html.erb
54
+ - app/views/pages/default.html.erb
55
+ - app/views/pages/feed.rss.builder
56
+ - app/views/pages/home.html.erb
57
+ - app/views/pages/search.html.erb
58
+ - app/views/pages/shared/_archived_pages.erb
59
+ - app/views/pages/shared/_related_pages.html.erb
60
+ - app/views/pages/sitemap.html.erb
61
+ - app/views/pages/template.erb
62
+ - app/views/pages/thank_you.html.erb
63
+ - app/views/sendmail/default.erb
64
+ - config/sitemap.example.yml
65
+ - db/migrate/20090824150210_create_documents.rb
66
+ - db/migrate/20091208124512_create_meta_definition.rb
67
+ - init.rb
68
+ - install.rb
69
+ - lib/qcms.rb
70
+ - lib/tasks/cms.rake
71
+ - qcms.gemspec
72
+ - rails/init.rb
73
+ - tasks/qcms_tasks.rake
74
+ - test/qwerty_test.rb
75
+ - test/test_helper.rb
76
+ - uninstall.rb
77
+ has_rdoc: true
78
+ homepage: http://github.com/krisleech/qcms
79
+ licenses: []
80
+
81
+ post_install_message:
82
+ rdoc_options:
83
+ - --charset=UTF-8
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project:
101
+ rubygems_version: 1.3.5
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: A CMS built in collaberation with designers
105
+ test_files:
106
+ - test/qwerty_test.rb
107
+ - test/test_helper.rb