knitkit 2.0.0

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 (165) hide show
  1. data/GPL-3-LICENSE +674 -0
  2. data/README.md +6 -0
  3. data/Rakefile +30 -0
  4. data/app/assets/javascripts/knitkit/application.js +9 -0
  5. data/app/assets/stylesheets/knitkit/application.css +7 -0
  6. data/app/controllers/knitkit/articles_controller.rb +7 -0
  7. data/app/controllers/knitkit/base_controller.rb +45 -0
  8. data/app/controllers/knitkit/blogs_controller.rb +27 -0
  9. data/app/controllers/knitkit/comments_controller.rb +18 -0
  10. data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +135 -0
  11. data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +144 -0
  12. data/app/controllers/knitkit/erp_app/desktop/comments_controller.rb +43 -0
  13. data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +27 -0
  14. data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +145 -0
  15. data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +28 -0
  16. data/app/controllers/knitkit/erp_app/desktop/inquiries_controller.rb +68 -0
  17. data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +20 -0
  18. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +272 -0
  19. data/app/controllers/knitkit/erp_app/desktop/versions_controller.rb +135 -0
  20. data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +177 -0
  21. data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +143 -0
  22. data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +116 -0
  23. data/app/controllers/knitkit/unauthorized_controller.rb +8 -0
  24. data/app/controllers/knitkit/website_sections_controller.rb +17 -0
  25. data/app/helpers/application_helper.rb +132 -0
  26. data/app/models/article.rb +14 -0
  27. data/app/models/blog.rb +21 -0
  28. data/app/models/comment.rb +24 -0
  29. data/app/models/content.rb +158 -0
  30. data/app/models/extensions/user.rb +5 -0
  31. data/app/models/published_element.rb +9 -0
  32. data/app/models/published_website.rb +118 -0
  33. data/app/models/theme.rb +239 -0
  34. data/app/models/website.rb +457 -0
  35. data/app/models/website_host.rb +3 -0
  36. data/app/models/website_inquiry.rb +11 -0
  37. data/app/models/website_inquiry_mailer.rb +12 -0
  38. data/app/models/website_nav.rb +17 -0
  39. data/app/models/website_nav_item.rb +21 -0
  40. data/app/models/website_section.rb +152 -0
  41. data/app/models/website_section_content.rb +4 -0
  42. data/app/views/knitkit/articles/index.html.erb +3 -0
  43. data/app/views/knitkit/articles/show.html.erb +4 -0
  44. data/app/views/knitkit/blogs/_add_comment.html.erb +28 -0
  45. data/app/views/knitkit/blogs/_comment.html.erb +8 -0
  46. data/app/views/knitkit/blogs/index.html.erb +51 -0
  47. data/app/views/knitkit/blogs/index.rss.builder +23 -0
  48. data/app/views/knitkit/blogs/show.html.erb +22 -0
  49. data/app/views/knitkit/unauthorized/index.html.erb +4 -0
  50. data/app/views/knitkit/website_sections/index.html.erb +6 -0
  51. data/app/views/layouts/knitkit/base.html.erb +59 -0
  52. data/app/views/menus/knitkit/_default_menu.html.erb +23 -0
  53. data/app/views/menus/knitkit/_default_section_menu.html.erb +27 -0
  54. data/app/views/menus/knitkit/_default_sub_menu.html.erb +45 -0
  55. data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +49 -0
  56. data/app/views/shared/knitkit/_bread_crumb.html.erb +7 -0
  57. data/app/views/shared/knitkit/_footer.html.erb +3 -0
  58. data/app/views/website_inquiry_mailer/inquiry.erb +3 -0
  59. data/app/widgets/contact_us/base.rb +86 -0
  60. data/app/widgets/contact_us/javascript/contact_us.js +13 -0
  61. data/app/widgets/contact_us/views/_contact_form.html.erb +36 -0
  62. data/app/widgets/contact_us/views/error.html.erb +10 -0
  63. data/app/widgets/contact_us/views/index.html.erb +1 -0
  64. data/app/widgets/contact_us/views/layouts/base.html.erb +7 -0
  65. data/app/widgets/contact_us/views/success.html.erb +4 -0
  66. data/app/widgets/google_map/base.rb +48 -0
  67. data/app/widgets/google_map/javascript/google_map.js +174 -0
  68. data/app/widgets/google_map/views/index.html.erb +41 -0
  69. data/app/widgets/login/base.rb +61 -0
  70. data/app/widgets/login/javascript/login.js +162 -0
  71. data/app/widgets/login/views/index.html.erb +37 -0
  72. data/app/widgets/login/views/layouts/base.html.erb +14 -0
  73. data/app/widgets/login/views/login_header.html.erb +9 -0
  74. data/app/widgets/login/views/reset_password.html.erb +26 -0
  75. data/app/widgets/manage_profile/base.rb +327 -0
  76. data/app/widgets/manage_profile/javascript/manage_profile.js +11 -0
  77. data/app/widgets/manage_profile/views/_contact_information_form.html.erb +180 -0
  78. data/app/widgets/manage_profile/views/_password_form.html.erb +20 -0
  79. data/app/widgets/manage_profile/views/_user_information_form.html.erb +30 -0
  80. data/app/widgets/manage_profile/views/contact_type_in_use.html.erb +4 -0
  81. data/app/widgets/manage_profile/views/default_type_error.html.erb +5 -0
  82. data/app/widgets/manage_profile/views/error.html.erb +3 -0
  83. data/app/widgets/manage_profile/views/index.html.erb +46 -0
  84. data/app/widgets/manage_profile/views/layouts/base.html.erb +1 -0
  85. data/app/widgets/manage_profile/views/password_blank.html.erb +4 -0
  86. data/app/widgets/manage_profile/views/password_invalid.html.erb +4 -0
  87. data/app/widgets/manage_profile/views/password_success.html.erb +3 -0
  88. data/app/widgets/manage_profile/views/success.html.erb +3 -0
  89. data/app/widgets/reset_password/base.rb +42 -0
  90. data/app/widgets/reset_password/javascript/reset_password.js +13 -0
  91. data/app/widgets/reset_password/views/index.html.erb +31 -0
  92. data/app/widgets/reset_password/views/layouts/base.html.erb +1 -0
  93. data/app/widgets/search/base.rb +80 -0
  94. data/app/widgets/search/javascript/search.js +31 -0
  95. data/app/widgets/search/views/_search.html.erb +39 -0
  96. data/app/widgets/search/views/index.html.erb +3 -0
  97. data/app/widgets/search/views/layouts/base.html.erb +24 -0
  98. data/app/widgets/search/views/show.html.erb +48 -0
  99. data/app/widgets/signup/base.rb +72 -0
  100. data/app/widgets/signup/javascript/signup.js +13 -0
  101. data/app/widgets/signup/views/_signup_form.html.erb +36 -0
  102. data/app/widgets/signup/views/error.html.erb +11 -0
  103. data/app/widgets/signup/views/index.html.erb +1 -0
  104. data/app/widgets/signup/views/layouts/base.html.erb +7 -0
  105. data/app/widgets/signup/views/success.html.erb +4 -0
  106. data/config/environment.rb +0 -0
  107. data/config/routes.rb +41 -0
  108. data/db/data_migrations/20110509223702_add_publisher_role.rb +11 -0
  109. data/db/data_migrations/20110816153456_add_knitkit_application.rb +31 -0
  110. data/db/data_migrations/upgrade/20111011203718_create_paths_for_sections.rb +13 -0
  111. data/db/data_migrations/upgrade/20111216192114_add_secured_models_to_menu_items.rb +18 -0
  112. data/db/data_migrations/upgrade/20111216202819_set_contents_iid_to_permalink_where_null.rb +12 -0
  113. data/db/migrate/20110211002317_setup_knitkit.rb +259 -0
  114. data/db/migrate/upgrade/20111014190442_update_contents.rb +25 -0
  115. data/db/migrate/upgrade/20111014201502_add_published_by_to_published_elements.rb +22 -0
  116. data/db/migrate/upgrade/20111017133851_add_iid_to_section.rb +21 -0
  117. data/db/migrate/upgrade/20111027145006_add_in_menu_to_section.rb +19 -0
  118. data/lib/knitkit.rb +12 -0
  119. data/lib/knitkit/engine.rb +26 -0
  120. data/lib/knitkit/extensions.rb +18 -0
  121. data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +88 -0
  122. data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +28 -0
  123. data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +38 -0
  124. data/lib/knitkit/extensions/active_record/theme_support/has_many_themes.rb +34 -0
  125. data/lib/knitkit/extensions/compass/widgets/base.rb +53 -0
  126. data/lib/knitkit/extensions/core/array.rb +5 -0
  127. data/lib/knitkit/extensions/railties/action_view.rb +187 -0
  128. data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +198 -0
  129. data/lib/knitkit/extensions/railties/theme_support/theme_file_resolver.rb +44 -0
  130. data/lib/knitkit/routing_filter/section_router.rb +55 -0
  131. data/lib/knitkit/syntax_validator.rb +32 -0
  132. data/lib/knitkit/version.rb +3 -0
  133. data/lib/tasks/knitkit_tasks.rake +4 -0
  134. data/public/images/knitkit/bullet.png +0 -0
  135. data/public/images/knitkit/content.png +0 -0
  136. data/public/images/knitkit/footer.png +0 -0
  137. data/public/images/knitkit/graphic.png +0 -0
  138. data/public/images/knitkit/greyFadeDown.png +0 -0
  139. data/public/images/knitkit/link.png +0 -0
  140. data/public/images/knitkit/logo.png +0 -0
  141. data/public/images/knitkit/menu.png +0 -0
  142. data/public/images/knitkit/menu_select.png +0 -0
  143. data/public/images/knitkit/search.png +0 -0
  144. data/public/javascripts/datepicker.js +440 -0
  145. data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +473 -0
  146. data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +576 -0
  147. data/public/javascripts/erp_app/desktop/applications/knitkit/comments_grid_panel.js +217 -0
  148. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +26 -0
  149. data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +109 -0
  150. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +30 -0
  151. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +160 -0
  152. data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +46 -0
  153. data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +46 -0
  154. data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +92 -0
  155. data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +220 -0
  156. data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +613 -0
  157. data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +573 -0
  158. data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +664 -0
  159. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +2161 -0
  160. data/public/javascripts/erp_app/desktop/applications/knitkit/widgets_panel.js +52 -0
  161. data/public/stylesheets/datepicker.css +121 -0
  162. data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +114 -0
  163. data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +219 -0
  164. data/public/stylesheets/knitkit/style.css +394 -0
  165. metadata +289 -0
@@ -0,0 +1,3 @@
1
+ class WebsiteHost < ActiveRecord::Base
2
+ belongs_to :website
3
+ end
@@ -0,0 +1,11 @@
1
+ class WebsiteInquiry < ActiveRecord::Base
2
+ belongs_to :website
3
+ belongs_to :user
4
+
5
+ has_dynamic_forms
6
+ has_dynamic_data
7
+
8
+ def send_email
9
+ WebsiteInquiryMailer.inquiry(self).deliver
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ class WebsiteInquiryMailer < ActionMailer::Base
2
+
3
+ def inquiry(website_inquiry)
4
+ @website_inquiry = website_inquiry
5
+ mail( :to => website_inquiry.website.email,
6
+ :from => website_inquiry.data.dyn_email,
7
+ :subject => "#{website_inquiry.website.title} Inquiry",
8
+ :content_type => 'text/plain'
9
+ )
10
+ end
11
+ end
12
+
@@ -0,0 +1,17 @@
1
+ class WebsiteNav < ActiveRecord::Base
2
+ belongs_to :website
3
+
4
+ validates_uniqueness_of :name, :scope => [:website_id], :message => "That Name is Already in Use"
5
+
6
+ has_many :website_nav_items, :dependent => :destroy do
7
+ def positioned
8
+ where('parent_id is null').order('position')
9
+ end
10
+ end
11
+
12
+ def all_menu_items
13
+ self.website_nav_items.collect{|item| item.self_and_descendants}.flatten
14
+ end
15
+
16
+ alias :items :website_nav_items
17
+ end
@@ -0,0 +1,21 @@
1
+ class WebsiteNavItem < ActiveRecord::Base
2
+ belongs_to :website_nav
3
+ belongs_to :linked_to_item, :polymorphic => true
4
+
5
+ has_roles
6
+ acts_as_nested_set
7
+ include ErpTechSvcs::Utils::DefaultNestedSetMethods
8
+
9
+ def path
10
+ linked_to_item.nil? ? url : linked_to_item.path
11
+ end
12
+
13
+ def positioned_children
14
+ children.sort_by{|child| [child.position]}
15
+ end
16
+
17
+ def website_nav
18
+ website_nav_id.nil? ? self.parent.website_nav : WebsiteNav.find(website_nav_id)
19
+ end
20
+
21
+ end
@@ -0,0 +1,152 @@
1
+ class WebsiteSection < ActiveRecord::Base
2
+ before_destroy :destroy_content # only destroy content that does not belong to another section, NOTE: this callback must be declared before the associations or it will not work
3
+
4
+ has_permalink :title, :url_attribute => :permalink, :sync_url => true, :only_when_blank => true, :scope => [:website_id, :parent_id]
5
+ acts_as_nested_set
6
+ include ErpTechSvcs::Utils::DefaultNestedSetMethods
7
+ acts_as_versioned :table_name => :website_section_versions, :non_versioned_columns => %w{parent_id lft rgt}
8
+ can_be_published
9
+ has_roles
10
+
11
+ belongs_to :website
12
+ has_many :website_section_contents, :dependent => :destroy
13
+ has_many :contents, :through => :website_section_contents
14
+
15
+ validates :title, :presence => {:message => 'Title cannot be blank'}
16
+ validates_uniqueness_of :permalink, :scope => [:website_id, :parent_id]
17
+ validates_uniqueness_of :internal_identifier, :scope => :website_id
18
+
19
+ after_create :update_paths
20
+ before_save :update_path, :check_internal_indentifier
21
+
22
+ KNIT_KIT_ROOT = Knitkit::Engine.root.to_s
23
+ WEBSITE_SECTIONS_TEMP_LAYOUT_PATH = "#{Knitkit::Engine.root.to_s}/app/views/knitkit/website_sections"
24
+
25
+ @@types = ['Page']
26
+ cattr_reader :types
27
+
28
+ def articles
29
+ Article.find_by_section_id(self.id)
30
+ end
31
+
32
+ def website
33
+ website_id.nil? ? self.parent.website : Website.find(website_id)
34
+ end
35
+
36
+ class << self
37
+ def register_type(type)
38
+ @@types << type
39
+ @@types.uniq!
40
+ end
41
+ end
42
+
43
+ def positioned_children
44
+ children.sort_by{|child| [child.position]}
45
+ end
46
+
47
+ def paths
48
+ all_paths = [self.path]
49
+ all_paths | self.descendants.collect(&:path)
50
+ end
51
+
52
+ def child_by_path(path)
53
+ self.descendants.detect{|child| child.path == path}
54
+ end
55
+
56
+ def type
57
+ read_attribute(:type) || 'Page'
58
+ end
59
+
60
+ def create_layout
61
+ self.layout = IO.read(File.join(WEBSITE_SECTIONS_TEMP_LAYOUT_PATH,"index.html.erb"))
62
+ self.save
63
+ end
64
+
65
+ def get_published_layout(active_publication)
66
+ layout_content = nil
67
+ published_website_id = active_publication.id
68
+ published_element = PublishedElement.includes([:published_website]).where('published_websites.id = ? and published_element_record_id = ? and published_element_record_type = ?', published_website_id, self.id, 'WebsiteSection').first
69
+ unless published_element.nil?
70
+ layout_content = WebsiteSection::Version.where('version = ? and website_section_id = ?', published_element.version, published_element.published_element_record_id).first.layout
71
+ else
72
+ layout_content = IO.read(File.join(WEBSITE_SECTIONS_TEMP_LAYOUT_PATH,"index.html.erb"))
73
+ end
74
+ layout_content
75
+ end
76
+
77
+ def get_tags
78
+ get_topics
79
+ end
80
+
81
+ def get_topics
82
+ # leaving this here for reference until we're sure the built in method tag_counts_on does what we need
83
+ # sql = "SELECT tags.*, taggings.tags_count AS count FROM \"tags\"
84
+ # JOIN (SELECT taggings.tag_id, COUNT(taggings.tag_id) AS tags_count FROM \"taggings\"
85
+ # INNER JOIN contents ON contents.id = taggings.taggable_id AND contents.type = 'Article'
86
+ # INNER JOIN website_section_contents ON contents.id=website_section_contents.content_id
87
+ # WHERE (taggings.taggable_type = 'Content' AND taggings.context = 'tags')
88
+ # AND website_section_contents.website_section_id=#{self.id}
89
+ # GROUP BY taggings.tag_id HAVING COUNT(*) > 0 AND COUNT(taggings.tag_id) > 0)
90
+ # AS taggings ON taggings.tag_id = tags.id
91
+ # ORDER BY tags.name ASC"
92
+ # ActsAsTaggableOn::Tag.find_by_sql(sql)
93
+
94
+ self.contents.tag_counts_on(:tags).sort_by{|t| t.name }
95
+ end
96
+
97
+ # Before destroying a section look at content belonging to this section
98
+ # and destroy content that does NOT belong to any OTHER section
99
+ def destroy_content
100
+ self.contents.each do |c|
101
+ unless c.website_sections.count > 1
102
+ puts "destroying"
103
+ c.destroy
104
+ end
105
+ end
106
+ end
107
+
108
+ def update_path!
109
+ new_path = build_path
110
+ self.path = new_path unless self.path == new_path
111
+ self.save
112
+ end
113
+
114
+ protected
115
+
116
+ def update_path
117
+ if permalink_changed?
118
+ new_path = build_path
119
+ self.path = new_path unless self.path == new_path
120
+ end
121
+ end
122
+
123
+ def build_path
124
+ "/#{self_and_ancestors.map(&:permalink).join('/')}"
125
+ end
126
+
127
+ def update_paths
128
+ if parent_id
129
+ move_to_child_of(WebsiteSection.find(parent_id))
130
+ website.sections.update_paths!
131
+ end
132
+ end
133
+
134
+ def check_internal_indentifier
135
+ self.internal_identifier = self.permalink if self.internal_identifier.blank?
136
+ end
137
+
138
+ private
139
+
140
+ def self.get_published_version(active_publication, content)
141
+ content_version = nil
142
+ published_website_id = active_publication.id
143
+ published_element = PublishedElement.includes([:published_website]).where('published_websites.id = ? and published_element_record_id = ? and published_element_record_type = ?', published_website_id, content.id, 'Content').first
144
+ unless published_element.nil?
145
+ content_version = Content::Version.where('version = ? and content_id = ?', published_element.version, published_element.published_element_record_id).first
146
+ end
147
+ content_version
148
+ end
149
+
150
+ end
151
+
152
+
@@ -0,0 +1,4 @@
1
+ class WebsiteSectionContent < ActiveRecord::Base
2
+ belongs_to :website_section
3
+ belongs_to :content
4
+ end
@@ -0,0 +1,3 @@
1
+ <h3><%=h @contents.first.title %></h3>
2
+ <p>Created at: <%= @contents.first.created_at.to_s(:long) %></p>
3
+ <%= @contents.first.body_html %>
@@ -0,0 +1,4 @@
1
+ <h3><%=h @content.title %></h3>
2
+ <p>Created at: <%= @content.created_at.to_s(:long) %></p>
3
+ <%= @content.body_html %>
4
+
@@ -0,0 +1,28 @@
1
+ <br/>
2
+ <h1>Add Comment</h1>
3
+ <div>
4
+ <div id="notice"></div>
5
+ <br/>
6
+
7
+ <%= form_tag "/comments/add/#{@website_section.id}/#{@published_content.content.id}", :remote => true, :id => 'add_comment_form' do %>
8
+ <div class="form_settings">
9
+ <div>
10
+ <p>
11
+ <span>Comment</span>
12
+ <%= text_area_tag :comment, @comment, :rows => 8, :cols => 50 %>
13
+ </p>
14
+ <p style="padding-top: 15px">
15
+ <span>&nbsp;</span>
16
+ <%= submit_tag "Add Comment", :disable_with => "Please wait...", :class => "submit" %>
17
+ </p>
18
+ </div>
19
+ </div>
20
+ <% end %>
21
+
22
+ </div>
23
+
24
+ <script type="text/javascript">
25
+ $('#add_comment_form').bind('ajaxComplete', function(e, xhr, settings){
26
+ $('#notice').html(xhr.responseText);
27
+ });
28
+ </script>
@@ -0,0 +1,8 @@
1
+ <div id="commentDiv">
2
+ <div>
3
+ <%=comment.comment %>
4
+ </div>
5
+ <br/>
6
+ <span><%=comment.commentor_name%> - <%=comment.created_at.strftime("Commented on %m/%d/%Y")%></span>
7
+ </div>
8
+ <br/>
@@ -0,0 +1,51 @@
1
+ <h2><%=h @website_section.title %></h2>
2
+
3
+ <div class="blog_articles left">
4
+ <% @contents.each do |content| %>
5
+ <div class="blog_post" id="blog_<%=h content.id %>">
6
+ <h4><%=h content.title %></h4>
7
+ <p>
8
+ Posted: <%= content.created_at.to_s(:long) %> <%=published_content_created_by %><br />
9
+ Topics: <%=content.content.tag_list %>
10
+ </p>
11
+ <div class="blog_body">
12
+ <%= raw content.excerpt_html %>
13
+ </div>
14
+ <div><%= link_to 'Read More...', main_app.blog_article_path(@website_section.id, content.permalink) %></div>
15
+ </div>
16
+ <% end %>
17
+
18
+ <%= blog_pagination 'blog_pagination', params %>
19
+
20
+ </div>
21
+
22
+ <div class="sidebar blog_tags">
23
+ <h4>Topics</h4>
24
+ <%=blog_topics 'tag_link' %>
25
+ </div>
26
+
27
+ <div class="sidebar rss">
28
+ <h4>Links</h4>
29
+ <%=blog_rss_links 'RSS Feed' %>
30
+ </div>
31
+
32
+ <div class="sidebar blog_search">
33
+ <% #Optional Parameters:
34
+ # content_type: Leave blank to search all section types, set to Blog to only search Blog articles
35
+ # section_permalink: This is the permalink value for the section
36
+ # Useful if you only want to search articles within a single Blog section
37
+ # results_permalink: How do you want your results to display? via ajax? or on a new page?
38
+ # Leave blank if you want results to display via ajax on the same page as the search form
39
+ # Enter the permalink of results page if you want the search results to display on a new page
40
+ # per_page: Number of results per page
41
+ # class: CSS class for the form %>
42
+ <%= render_widget :search,
43
+ :action => get_widget_action,
44
+ :params => set_widget_params({
45
+ :content_type => 'Blog',
46
+ :section_permalink => '',
47
+ :results_permalink => 'search',
48
+ :per_page => 20,
49
+ :class => ''
50
+ }) %>
51
+ </div>
@@ -0,0 +1,23 @@
1
+ xml.instruct! :xml, :version => "1.0"
2
+ xml.rss :version => "2.0" do
3
+ xml.channel do
4
+ xml.title @blog.title
5
+ xml.description @blog.title
6
+
7
+ if params[:action] == 'tag'
8
+ xml.link main_app.blog_tag_url(params[:section_id], params[:tag_id], :rss)
9
+ else
10
+ xml.link main_app.blogs_url(params[:section_id], :rss)
11
+ end
12
+
13
+ for article in @contents
14
+ xml.item do
15
+ xml.title article.title
16
+ xml.description article.excerpt_html
17
+ xml.pubDate article.created_at.to_s(:rfc822)
18
+ xml.link main_app.blog_article_url(params[:section_id], article.permalink)
19
+ xml.guid main_app.blog_article_url(params[:section_id], article.permalink)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ <div class="blog_post">
2
+
3
+ <h2><%=h @blog.title %></h2>
4
+ <br/>
5
+ <h3><%=h @published_content.title %></h3>
6
+ <p>
7
+ Posted: <%= @published_content.created_at.to_s(:long) %> <%=published_content_created_by %><br />
8
+ Topics: <%= @published_content.content.tag_list %>
9
+ </p>
10
+ <p><%= raw @published_content.excerpt_html %></p>
11
+ <%= raw @published_content.body_html %>
12
+
13
+ <h3>Comments</h3>
14
+ <br/>
15
+ <%= blog_recent_approved_comments %>
16
+ <br/>
17
+ <br/>
18
+
19
+ <hr/>
20
+ <%=blog_add_comment_form %>
21
+
22
+ </div>
@@ -0,0 +1,4 @@
1
+ <h1 style="color:red;">Unauthorized Access</h1>
2
+ <p>
3
+ You are not allowed to access this section
4
+ </p>
@@ -0,0 +1,6 @@
1
+ <h2><%=h @website_section.title %></h2>
2
+
3
+ <% @contents.each do |content| %>
4
+ <h3><%=h content.title %></h3>
5
+ <%=raw content.body_html %>
6
+ <% end %>
@@ -0,0 +1,59 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <meta name="generator" content="Knitkit - Compass AE Open source content management platform" />
6
+
7
+ <meta name="description" content="" />
8
+ <meta name="keywords" content="" />
9
+ <meta name="copyright" content="&copy;" />
10
+ <meta name="robots" content="ALL" />
11
+ <meta name="language" content="English" />
12
+
13
+ <title><%= @website.title %></title>
14
+ <%= javascript_include_tag :application %>
15
+ <%= include_extjs %>
16
+ <%= static_javascript_include_tag('erp_app/jquery_support.js') %>
17
+ <%= static_javascript_include_tag('datepicker.js') %>
18
+ <%= static_stylesheet_link_tag('datepicker.css') %>
19
+ <%= static_javascript_include_tag('erp_app/utility.js') %>
20
+ <%= static_stylesheet_link_tag('extjs/resources/css/knitkit_extjs_4.css') %>
21
+ <%= static_stylesheet_link_tag('knitkit/style.css') %>
22
+ <%= static_javascript_include_tag('erp_app/widgets.js') %>
23
+ <%= static_javascript_include_tag('erp_app/shared/ajax_pagination.js') %>
24
+ <%= static_javascript_include_tag('erp_app/shared/dynamic_forms/dynamic_forms_validation.js') %>
25
+ <%= yield :head %>
26
+ </head>
27
+ <body>
28
+ <div id="main">
29
+ <div id="header">
30
+ <div id="logo">
31
+ <%=render_version_viewing%>
32
+ <%= render_widget :login,
33
+ :action => :login_header,
34
+ :params => {:login_url => '/login',
35
+ :signup_url => '/sign-up'}%>
36
+ <div id="logo_text">
37
+ <!-- class="logo_color", allows you to change the color of the text -->
38
+ <h1><a href="/"><%= @website.title %></a></h1>
39
+ <h2><%= @website.subtitle %></h2>
40
+ </div>
41
+ </div>
42
+ <%= content_for?(:menu) ? yield(:menu) : render_menu(@contents) %>
43
+ <%#=render_menu(@contents, :menu => 'main')%>
44
+ </div>
45
+ <div id="site_content">
46
+ <%=build_crumbs %>
47
+ <br/>
48
+ <%= content_for?(:sub_menu) ? yield(:sub_menu) : render_sub_menu(@contents) %>
49
+ <%#=render_sub_menu(@contents, :menu => 'main')%>
50
+ <div id="content">
51
+ <%= yield %>
52
+ </div>
53
+ </div>
54
+ <div id="content_footer"></div>
55
+ <%= content_for?(:footer) ? yield(:footer) : (render :partial => 'shared/knitkit/footer') %>
56
+ <%= yield :foot %>
57
+ </div>
58
+ </body>
59
+ </html>