knitkit 2.0.5 → 2.0.6
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/app/controllers/knitkit/erp_app/desktop/app_controller.rb +5 -8
- data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +11 -8
- data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +26 -4
- data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +49 -35
- data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +30 -21
- data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +41 -32
- data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +0 -6
- data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +42 -6
- data/app/{models → mailers}/website_inquiry_mailer.rb +0 -0
- data/app/models/article.rb +4 -0
- data/app/models/content.rb +0 -4
- data/app/models/theme.rb +3 -3
- data/app/models/website.rb +44 -17
- data/app/views/knitkit/website_sections/index.html.erb +1 -1
- data/app/views/layouts/knitkit/base.html.erb +6 -0
- data/app/views/shared/knitkit/_footer.html.erb +2 -2
- data/app/widgets/signup/base.rb +0 -2
- data/db/data_migrations/20120809020508_update_website_and_configuration.rb +77 -0
- data/lib/knitkit/engine.rb +4 -0
- data/lib/knitkit/extensions.rb +4 -1
- data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +36 -33
- data/lib/knitkit/extensions/action_mailer/theme_support/acts_as_themed_mailer.rb +60 -0
- data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +9 -4
- data/lib/knitkit/extensions/active_record/acts_as_document.rb +1 -1
- data/lib/knitkit/extensions/compass_ae/widgets/base.rb +21 -1
- data/lib/knitkit/extensions/compass_ae/widgets/widget_proxy_controller.rb +26 -0
- data/lib/knitkit/extensions/railties/action_view/base.rb +11 -0
- data/lib/knitkit/extensions/railties/action_view/helpers/blog_helper.rb +62 -0
- data/lib/knitkit/extensions/railties/action_view/helpers/content_helper.rb +83 -0
- data/lib/knitkit/extensions/railties/action_view/helpers/knitkit_helper.rb +67 -0
- data/lib/knitkit/extensions/railties/action_view/helpers/menu_helper.rb +71 -0
- data/lib/knitkit/version.rb +1 -1
- data/public/images/knitkit/close.png +0 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +150 -400
- data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +687 -593
- data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +1 -2
- data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +39 -15
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +1 -1
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +65 -126
- data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +65 -1
- data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +265 -183
- data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +24 -9
- data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +631 -595
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/document.js +265 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/host.js +133 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/menu.js +174 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/section.js +399 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website.js +165 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website_nav_items.js +266 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/west_region.js +1224 -0
- data/public/javascripts/knitkit/inline_editing.js +136 -0
- data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +1 -2
- data/public/stylesheets/knitkit/inline_editing.css +88 -0
- data/public/stylesheets/knitkit/style.css +1 -1
- metadata +47 -31
- data/lib/knitkit/extensions/railties/action_view.rb +0 -199
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +0 -2725
@@ -0,0 +1,60 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module Extensions
|
3
|
+
module ActionMailer
|
4
|
+
module ThemeSupport
|
5
|
+
class Cache
|
6
|
+
cattr_accessor :theme_resolvers
|
7
|
+
end
|
8
|
+
module ActsAsThemedMailer
|
9
|
+
def self.included(base)
|
10
|
+
base.class_eval do
|
11
|
+
extend ActMacro
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ActMacro
|
16
|
+
def acts_as_themed_mailer
|
17
|
+
include InstanceMethods
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module InstanceMethods
|
22
|
+
def add_theme_view_paths(website)
|
23
|
+
ThemeSupport::Cache.theme_resolvers = [] if ThemeSupport::Cache.theme_resolvers.nil?
|
24
|
+
current_theme_paths(website).each do |theme|
|
25
|
+
resolver = case Rails.application.config.erp_tech_svcs.file_storage
|
26
|
+
when :s3
|
27
|
+
path = File.join(theme[:url], "templates")
|
28
|
+
cached_resolver = ThemeSupport::Cache.theme_resolvers.find { |cached_resolver| cached_resolver.to_path == path }
|
29
|
+
if cached_resolver.nil?
|
30
|
+
resolver = ActionView::S3Resolver.new(path)
|
31
|
+
ThemeSupport::Cache.theme_resolvers << resolver
|
32
|
+
resolver
|
33
|
+
else
|
34
|
+
cached_resolver
|
35
|
+
end
|
36
|
+
when :filesystem
|
37
|
+
path = "#{theme[:path]}/templates"
|
38
|
+
cached_resolver = ThemeSupport::Cache.theme_resolvers.find { |cached_resolver| cached_resolver.to_path == path }
|
39
|
+
if cached_resolver.nil?
|
40
|
+
resolver = ActionView::ThemeFileResolver.new(path)
|
41
|
+
ThemeSupport::Cache.theme_resolvers << resolver
|
42
|
+
resolver
|
43
|
+
else
|
44
|
+
cached_resolver
|
45
|
+
end
|
46
|
+
end
|
47
|
+
prepend_view_path(resolver)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def current_theme_paths(website)
|
52
|
+
website.themes.active.map { |theme| {:path => theme.path.to_s, :url => theme.url.to_s} }
|
53
|
+
end
|
54
|
+
|
55
|
+
end #InstanceMethods
|
56
|
+
end #ActsAsThemedMailer
|
57
|
+
end #ThemeSupport
|
58
|
+
end #ActionMailer
|
59
|
+
end #Extensions
|
60
|
+
end #Knitkit
|
@@ -21,8 +21,13 @@ module Knitkit
|
|
21
21
|
end
|
22
22
|
|
23
23
|
module InstanceMethods
|
24
|
+
|
25
|
+
def add_comment(options={})
|
26
|
+
self.comments.create(options)
|
27
|
+
end
|
28
|
+
|
24
29
|
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
30
|
+
end #ActsAsCommentable
|
31
|
+
end #ActiveRecord
|
32
|
+
end #Extensions
|
33
|
+
end #Knitkit
|
@@ -4,7 +4,8 @@
|
|
4
4
|
paths = widget[:view_paths]
|
5
5
|
|
6
6
|
website.themes.active.map{ |theme| {:path => theme.path.to_s, :url => theme.url.to_s}}.each do |theme|
|
7
|
-
|
7
|
+
path = File.join(theme[:path],'widgets',self.widget_name,'views')
|
8
|
+
paths << path unless paths.include?(path)
|
8
9
|
end if website
|
9
10
|
|
10
11
|
paths.reverse!
|
@@ -14,6 +15,25 @@
|
|
14
15
|
end
|
15
16
|
|
16
17
|
::ErpApp::Widgets::Base.class_eval do
|
18
|
+
#adding ability to pass website
|
19
|
+
def initialize(proxy_controller=nil, name=nil, view=nil, uuid=nil, widget_params=nil, passed_website=nil)
|
20
|
+
ErpApp::Widgets::Base.view_resolver_cache = [] if ErpApp::Widgets::Base.view_resolver_cache.nil?
|
21
|
+
self.name = name
|
22
|
+
self.proxy_controller = proxy_controller
|
23
|
+
self.view = view
|
24
|
+
self.uuid = uuid
|
25
|
+
self.widget_params = widget_params
|
26
|
+
@website = passed_website
|
27
|
+
add_view_paths
|
28
|
+
store_widget_params
|
29
|
+
merge_params
|
30
|
+
end
|
31
|
+
|
32
|
+
#adding ability to get website
|
33
|
+
def website
|
34
|
+
@website
|
35
|
+
end
|
36
|
+
|
17
37
|
private
|
18
38
|
|
19
39
|
def add_view_paths
|
@@ -0,0 +1,26 @@
|
|
1
|
+
ErpApp::WidgetProxyController.class_eval do
|
2
|
+
attr_accessor :performed_redirect
|
3
|
+
before_filter :set_website
|
4
|
+
|
5
|
+
def index
|
6
|
+
@widget_name = params[:widget_name]
|
7
|
+
@widget_action = params[:widget_action]
|
8
|
+
@uuid = params[:uuid]
|
9
|
+
|
10
|
+
#get widget params
|
11
|
+
widget_params = nil
|
12
|
+
widget_params = JSON.parse(params[:widget_params]) unless params[:widget_params].blank?
|
13
|
+
|
14
|
+
widget_obj = "::Widgets::#{@widget_name.camelize}::Base".constantize.new(self, @widget_name, @widget_action, @uuid, widget_params, @website)
|
15
|
+
|
16
|
+
result = widget_obj.process(@widget_action)
|
17
|
+
result.nil? ? return : (render result)
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
#setting website to pass to widgets
|
22
|
+
def set_website
|
23
|
+
@website = Website.find_by_host(request.host_with_port)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#require all ActionView helper files
|
2
|
+
Dir.entries(File.join(File.dirname(__FILE__),"helpers")).delete_if{|name| name =~ /^\./}.each do |file|
|
3
|
+
require "knitkit/extensions/railties/action_view/helpers/#{file}"
|
4
|
+
end
|
5
|
+
|
6
|
+
ActionView::Base.class_eval do
|
7
|
+
include Knitkit::Extensions::Railties::ActionView::Helpers::BlogHelper
|
8
|
+
include Knitkit::Extensions::Railties::ActionView::Helpers::ContentHelper
|
9
|
+
include Knitkit::Extensions::Railties::ActionView::Helpers::MenuHelper
|
10
|
+
include Knitkit::Extensions::Railties::ActionView::Helpers::KnitkitHelper
|
11
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module Extensions
|
3
|
+
module Railties
|
4
|
+
module ActionView
|
5
|
+
module Helpers
|
6
|
+
module BlogHelper
|
7
|
+
|
8
|
+
def blog_add_comment_form
|
9
|
+
render :partial => 'add_comment' unless current_user.nil?
|
10
|
+
end
|
11
|
+
|
12
|
+
def blog_topics(css_class='tag_link')
|
13
|
+
html = ''
|
14
|
+
|
15
|
+
@website_section.get_topics.each do |tag|
|
16
|
+
html += '<div class="'+css_class+'">'
|
17
|
+
html += link_to(tag.name, main_app.blog_tag_path(@website_section.id, tag.id))
|
18
|
+
html += '</div>'
|
19
|
+
end
|
20
|
+
|
21
|
+
raw html
|
22
|
+
end
|
23
|
+
|
24
|
+
def blog_rss_links(link_title='RSS Feed')
|
25
|
+
if params[:action] == 'tag'
|
26
|
+
return link_to link_title, main_app.blog_tag_url(params[:section_id], params[:tag_id], :rss)
|
27
|
+
else
|
28
|
+
return link_to link_title, main_app.blogs_url(params[:section_id], :rss)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def blog_recent_approved_comments
|
33
|
+
if @published_content.content.comments.recent.approved.empty?
|
34
|
+
return 'No Comments'
|
35
|
+
else
|
36
|
+
html = ''
|
37
|
+
|
38
|
+
@published_content.content.comments.recent.approved.each do |comment|
|
39
|
+
html += render :partial => 'comment', :locals => {:comment => comment}
|
40
|
+
end
|
41
|
+
|
42
|
+
return raw html
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def blog_pagination(css_class, params)
|
47
|
+
return will_paginate @contents, :class => css_class, :params => {
|
48
|
+
:section_id => params[:section_id],
|
49
|
+
:per_page => params[:per_page],
|
50
|
+
:format => params[:format],
|
51
|
+
:only_path => true,
|
52
|
+
:use_route => params[:use_route],
|
53
|
+
:scope => main_app
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
end #BlogHelper
|
58
|
+
end #Helpers
|
59
|
+
end #ActionView
|
60
|
+
end #Railties
|
61
|
+
end #Extensions
|
62
|
+
end #Knitkit
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module Extensions
|
3
|
+
module Railties
|
4
|
+
module ActionView
|
5
|
+
module Helpers
|
6
|
+
module ContentHelper
|
7
|
+
|
8
|
+
def setup_inline_editing
|
9
|
+
if can_inline_edit?
|
10
|
+
raw "<script type='text/javascript'>
|
11
|
+
jQuery(document).ready(function() {
|
12
|
+
Knitkit.InlineEditing.setup(#{@website.id});
|
13
|
+
});
|
14
|
+
</script>"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def render_editable_content(content_version, additional_css_classes=[])
|
19
|
+
raw "<div class='knitkit_content #{additional_css_classes.join(' ')}'
|
20
|
+
contentid='#{content_version.content.id}'
|
21
|
+
lastupdate='#{content_version.content.updated_at.strftime("%m/%d/%Y %I:%M%p")}'>#{content_version.body_html}</div>"
|
22
|
+
end
|
23
|
+
|
24
|
+
# render a piece of content by internal identifier regardless if it belongs to a section or not
|
25
|
+
def render_content(iid)
|
26
|
+
content = Content.find_by_internal_identifier(iid)
|
27
|
+
content_version = Content.get_published_version(@active_publication, content) unless @active_publication.nil?
|
28
|
+
content_version = content if @active_publication.nil? or content_version.nil?
|
29
|
+
|
30
|
+
if content_version.nil?
|
31
|
+
''
|
32
|
+
else
|
33
|
+
raw "<div class='knitkit_content'
|
34
|
+
contentid='#{content.id}'
|
35
|
+
lastupdate='#{content_version.content.updated_at.strftime("%m/%d/%Y %I:%M%p")}'>
|
36
|
+
#{(content_version.body_html.nil? ? '' : content_version.body_html)}</div>"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def render_content_area(name)
|
41
|
+
html = ''
|
42
|
+
|
43
|
+
section_contents = WebsiteSectionContent.includes(:content)
|
44
|
+
.where(:website_section_id => @website_section.id, :content_area => name.to_s)
|
45
|
+
.order(:position).all
|
46
|
+
published_contents = []
|
47
|
+
section_contents.each do |sc|
|
48
|
+
content_version = Content.get_published_version(@active_publication, sc.content)
|
49
|
+
published_contents << content_version unless content_version.nil?
|
50
|
+
end
|
51
|
+
|
52
|
+
published_contents.each do |content|
|
53
|
+
html << "<div class='knitkit_content'
|
54
|
+
contentid='#{content.content.id}'
|
55
|
+
lastupdate='#{content.updated_at.strftime("%m/%d/%Y %I:%M%p")}'>
|
56
|
+
#{(content.body_html.nil? ? '' : content.body_html)}</div>"
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
raw html
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def can_inline_edit?
|
66
|
+
result = false
|
67
|
+
model = DesktopApplication.find_by_internal_identifier('knitkit')
|
68
|
+
unless ((current_user.nil? or current_user === false))
|
69
|
+
if ((current_user.has_capability?(model, 'edit_html', 'Article') rescue false))
|
70
|
+
if (@website.configurations.first.get_configuration_item(:auto_active_publications).options.first.value == 'yes' and @website.configurations.first.get_configuration_item(:publish_on_save).options.first.value == 'yes')
|
71
|
+
result = true
|
72
|
+
end #make sure auto acitvate and publish on save our set
|
73
|
+
end #make sure they have this capability
|
74
|
+
end #check for user
|
75
|
+
result
|
76
|
+
end
|
77
|
+
|
78
|
+
end #ContentHelper
|
79
|
+
end #Helpers
|
80
|
+
end #ActionView
|
81
|
+
end #Railties
|
82
|
+
end #Extensions
|
83
|
+
end #Knitkit
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module Extensions
|
3
|
+
module Railties
|
4
|
+
module ActionView
|
5
|
+
module Helpers
|
6
|
+
module KnitkitHelper
|
7
|
+
|
8
|
+
def published_content_created_by
|
9
|
+
"by #{@published_content.content.created_by.username}" rescue ''
|
10
|
+
end
|
11
|
+
|
12
|
+
def render_version_viewing
|
13
|
+
html = ''
|
14
|
+
|
15
|
+
if !session[:website_version].blank? && !session[:website_version].empty?
|
16
|
+
site_version_hash = session[:website_version].find{|item| item[:website_id] == @website.id}
|
17
|
+
unless site_version_hash.nil?
|
18
|
+
if site_version_hash[:version].to_f != @website.active_publication.version
|
19
|
+
html = "<div style='float:left;'>Viewing version #{site_version_hash[:version].to_f} <a href='/view_current_publication'>View current publication</a></div>"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
raw html
|
25
|
+
end
|
26
|
+
|
27
|
+
#options
|
28
|
+
#nothing
|
29
|
+
# - uses current page to lookup section and go up tree
|
30
|
+
#menu
|
31
|
+
# - menu to look for menu title in
|
32
|
+
#menu_item
|
33
|
+
# - title of menu_item to start breadcrumbs at
|
34
|
+
#section_unique_name
|
35
|
+
# - sections permalink to start breadcrumbs at
|
36
|
+
def build_crumbs(options={})
|
37
|
+
links = []
|
38
|
+
if options[:menu]
|
39
|
+
menu = WebsiteNav.find_by_name(options[:menu])
|
40
|
+
raise "Menu with name #{options[:menu]} does not exist" if menu.nil?
|
41
|
+
menu_item = menu.website_nav_items.find(:first, :conditions => ["title = ?", options[:menu_item]])
|
42
|
+
raise "Menu Item with Title #{options[:menu]} does not exist" if menu_item.nil?
|
43
|
+
links = menu_item.self_and_ancestors.map{|child| {:url => child.path, :title => child.title}}
|
44
|
+
elsif options[:section_unique_name]
|
45
|
+
section = WebsiteSection.find_by_internal_identifier(options[:section_unique_name])
|
46
|
+
raise "Website Section with that unique name does not exist" if section.nil?
|
47
|
+
links = section.self_and_ancestors.map{|child| {:url => child.path, :title => child.title}}
|
48
|
+
else
|
49
|
+
links = @website_section.self_and_ancestors.collect{|child| {:url => child.path, :title => child.title}}
|
50
|
+
end
|
51
|
+
links
|
52
|
+
|
53
|
+
render :partial => 'shared/knitkit/bread_crumb', :locals => {:links => links}
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def tool_tip(message, img_src=nil)
|
58
|
+
img_src = img_src || '/images/knitkit/tooltip.gif'
|
59
|
+
raw "<a href='#' class='tooltip'> <img src='#{img_src}' alt='ToolTip' /><span>#{message}</span></a>"
|
60
|
+
end
|
61
|
+
|
62
|
+
end #KnitkitHelper
|
63
|
+
end #Helpers
|
64
|
+
end #ActionView
|
65
|
+
end #Railties
|
66
|
+
end #Extensions
|
67
|
+
end #Knitkit
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module Extensions
|
3
|
+
module Railties
|
4
|
+
module ActionView
|
5
|
+
module Helpers
|
6
|
+
module MenuHelper
|
7
|
+
|
8
|
+
def menu_item_selected(menu_item)
|
9
|
+
result = false
|
10
|
+
result = request.path == menu_item.path
|
11
|
+
unless result
|
12
|
+
menu_item.descendants.each do |child|
|
13
|
+
result = request.path == child.path
|
14
|
+
break if result
|
15
|
+
end
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
|
20
|
+
#options
|
21
|
+
#menu
|
22
|
+
# - use a designed layout not sections
|
23
|
+
#layout
|
24
|
+
# - use defined layout
|
25
|
+
def render_menu(contents, options={})
|
26
|
+
locals = {:contents => contents}
|
27
|
+
if options[:menu]
|
28
|
+
menu = WebsiteNav.find_by_name_and_website_id(options[:menu], @website.id)
|
29
|
+
raise "Menu with name #{options[:menu]} does not exist" if menu.nil?
|
30
|
+
layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_menu"
|
31
|
+
locals[:menu_items] = menu.website_nav_items.positioned
|
32
|
+
else
|
33
|
+
layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_section_menu"
|
34
|
+
end
|
35
|
+
|
36
|
+
render :partial => layout, :locals => locals
|
37
|
+
end
|
38
|
+
|
39
|
+
#options
|
40
|
+
#menu
|
41
|
+
# - use a designed layout not sections
|
42
|
+
#menu_item
|
43
|
+
# - menu item title to start at
|
44
|
+
#section_unique_name
|
45
|
+
# - section to begin at
|
46
|
+
#layout
|
47
|
+
# - use defined layout
|
48
|
+
def render_sub_menu(contents, options={})
|
49
|
+
locals = {:contents => contents}
|
50
|
+
if options[:menu]
|
51
|
+
menu = WebsiteNav.find_by_name_and_website_id(options[:menu], @website.id)
|
52
|
+
raise "Menu with name #{options[:menu]} does not exist" if menu.nil?
|
53
|
+
locals[:menu_items] = (options[:menu_item].nil? ? menu.all_menu_items.find{|item| menu_item_selected(item)}.positioned_children : menu.all_menu_items.find{|item| item.title = options[:menu_item]}.positioned_children)
|
54
|
+
raise "No menu items exist" if locals[:menu_items].nil?
|
55
|
+
layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_sub_menu"
|
56
|
+
else
|
57
|
+
section = options[:section_unique_name].nil? ? @website_section : WebsiteSection.find_by_internal_identifier(options[:section_unique_name])
|
58
|
+
raise "No website sections exist" if section.nil?
|
59
|
+
locals[:section] = section
|
60
|
+
layout = options[:layout] ? "menus/#{options[:layout]}" : "menus/knitkit/default_sub_section_menu"
|
61
|
+
end
|
62
|
+
|
63
|
+
render :partial => layout, :locals => locals
|
64
|
+
end
|
65
|
+
|
66
|
+
end #MenuHelper
|
67
|
+
end #Helpers
|
68
|
+
end #ActionView
|
69
|
+
end #Railties
|
70
|
+
end #Extensions
|
71
|
+
end #Knitkit
|