infopark_rails_connector 6.9.1.3.22208381 → 6.9.2.1.125136549
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/README +2 -14
- data/app/assets/javascripts/infopark_rails_connector.js.erb +0 -3
- data/app/assets/stylesheets/infopark_rails_connector.css.erb +0 -4
- data/app/controllers/rails_connector/default_cms_controller.rb +0 -1
- data/app/helpers/rails_connector/default_cms_helper.rb +0 -6
- data/app/helpers/rails_connector/layout_helper.rb +2 -7
- data/app/views/cms/index.html.erb +0 -2
- data/app/views/errors/410_gone.html.erb +2 -2
- data/config/ca-bundle.crt +1 -1
- data/config/cms_routes.rb +2 -1
- data/config/locales/de.rails_connector.views.yml +0 -78
- data/config/locales/en.rails_connector.views.yml +0 -78
- data/lib/generators/rails_connector/install/install_generator.rb +0 -1
- data/lib/generators/rails_connector/install/templates/initializers/rails_connector.rb +0 -27
- data/lib/rails_connector/cms_accessible.rb +0 -4
- data/lib/rails_connector/configuration.rb +9 -72
- data/lib/rails_connector/engine.rb +0 -18
- metadata +3 -181
- data/app/assets/images/ratings/star.gif +0 -0
- data/app/assets/images/time_machine/calendar-menuarrow.gif +0 -0
- data/app/assets/images/time_machine/calendar_bg.png +0 -0
- data/app/assets/images/time_machine/icon.png +0 -0
- data/app/assets/images/time_machine/slider_bg.png +0 -0
- data/app/assets/images/time_machine/slider_handle.png +0 -0
- data/app/assets/images/time_machine/timemachine_bg.png +0 -0
- data/app/assets/javascripts/comments.js +0 -29
- data/app/assets/javascripts/initializer.js +0 -9
- data/app/assets/javascripts/ratings.js +0 -26
- data/app/assets/javascripts/time_machine.js +0 -8
- data/app/assets/javascripts/time_machine/calendar-setup.js +0 -200
- data/app/assets/javascripts/time_machine/calendar.js +0 -1806
- data/app/assets/javascripts/time_machine/lang/calendar-de.js +0 -127
- data/app/assets/javascripts/time_machine/lang/calendar-en.js +0 -127
- data/app/assets/javascripts/time_machine/lang/calendar-es.js +0 -129
- data/app/assets/javascripts/time_machine/lang/calendar-fr.js +0 -125
- data/app/assets/javascripts/time_machine/lang/calendar-it.js +0 -124
- data/app/assets/javascripts/time_machine/slider.js +0 -278
- data/app/assets/stylesheets/ratings.css +0 -97
- data/app/assets/stylesheets/time_machine.css +0 -6
- data/app/assets/stylesheets/time_machine/time_machine.css +0 -292
- data/app/controllers/comments_controller.rb +0 -6
- data/app/controllers/crm_form_controller.rb +0 -6
- data/app/controllers/rails_connector/default_comments_controller.rb +0 -70
- data/app/controllers/rails_connector/default_crm_form_controller.rb +0 -167
- data/app/controllers/rails_connector/default_ratings_controller.rb +0 -84
- data/app/controllers/rails_connector/default_rss_controller.rb +0 -30
- data/app/controllers/rails_connector/default_search_controller.rb +0 -60
- data/app/controllers/rails_connector/default_user_controller.rb +0 -269
- data/app/controllers/rails_connector/time_machine_controller.rb +0 -48
- data/app/controllers/ratings_controller.rb +0 -6
- data/app/controllers/rss_controller.rb +0 -6
- data/app/controllers/search_controller.rb +0 -6
- data/app/controllers/seo_sitemap_controller.rb +0 -12
- data/app/controllers/user_controller.rb +0 -6
- data/app/helpers/crm_form_helper.rb +0 -6
- data/app/helpers/rails_connector/default_crm_form_helper.rb +0 -58
- data/app/helpers/rails_connector/default_ratings_helper.rb +0 -38
- data/app/helpers/rails_connector/default_user_helper.rb +0 -90
- data/app/helpers/rails_connector/error_messages_helper.rb +0 -23
- data/app/helpers/rails_connector/link_helper.rb +0 -93
- data/app/helpers/rails_connector/mandatory_label_helper.rb +0 -10
- data/app/helpers/rails_connector/menu_helper.rb +0 -73
- data/app/helpers/rails_connector/micronav_helper.rb +0 -109
- data/app/helpers/rails_connector/seo_helper.rb +0 -44
- data/app/helpers/rails_connector/time_machine_helper.rb +0 -26
- data/app/helpers/rails_connector/tracking_helper.rb +0 -32
- data/app/helpers/ratings_helper.rb +0 -4
- data/app/helpers/user_helper.rb +0 -6
- data/app/mailers/confirmation_mailer.rb +0 -15
- data/app/models/crm_form.rb +0 -2
- data/app/models/rails_connector/default_comment.rb +0 -30
- data/app/models/rails_connector/default_rating.rb +0 -22
- data/app/views/cms/_comments.html.erb +0 -44
- data/app/views/cms/_rating.html.erb +0 -31
- data/app/views/comments/_comment.html.erb +0 -28
- data/app/views/confirmation_mailer/register_confirmation.erb +0 -5
- data/app/views/confirmation_mailer/reset_password.erb +0 -5
- data/app/views/crm_form/_flash_messages.html.erb +0 -11
- data/app/views/crm_form/_form.html.erb +0 -17
- data/app/views/crm_form/confirmation.html.erb +0 -3
- data/app/views/crm_form/index.html.erb +0 -5
- data/app/views/crm_form/not_logged_in.html.erb +0 -1
- data/app/views/layouts/rails_connector/time_machine.html.erb +0 -12
- data/app/views/rails_connector/time_machine/index.html.erb +0 -88
- data/app/views/rss/_item.rss.builder +0 -11
- data/app/views/rss/index.rss.builder +0 -11
- data/app/views/search/_hit.html.erb +0 -11
- data/app/views/search/_hits.html.erb +0 -11
- data/app/views/search/_mini_panel.html.erb +0 -4
- data/app/views/search/_pagination.html.erb +0 -5
- data/app/views/search/_panel.html.erb +0 -4
- data/app/views/search/search.html.erb +0 -12
- data/app/views/seo_sitemap/show.xml.builder +0 -16
- data/app/views/user/_flash_messages.html.erb +0 -11
- data/app/views/user/edit.html.erb +0 -6
- data/app/views/user/edit_password.html.erb +0 -11
- data/app/views/user/forgot_password.html.erb +0 -7
- data/app/views/user/login.html.erb +0 -15
- data/app/views/user/new.html.erb +0 -13
- data/app/views/user/profile.html.erb +0 -8
- data/app/views/user/register_pending.html.erb +0 -1
- data/app/views/user/set_password.html.erb +0 -14
- data/config/locales/de.rails_connector.controllers.yml +0 -28
- data/config/locales/de.rails_connector.helpers.yml +0 -9
- data/config/locales/de.rails_connector.models.yml +0 -8
- data/config/locales/en.rails_connector.controllers.yml +0 -28
- data/config/locales/en.rails_connector.helpers.yml +0 -9
- data/config/locales/en.rails_connector.models.yml +0 -8
- data/config/routes.rb +0 -31
- data/lib/generators/rails_connector/comments/comments_generator.rb +0 -20
- data/lib/generators/rails_connector/comments/templates/migration.rb +0 -16
- data/lib/generators/rails_connector/install/templates/initializers/crm_connector.rb +0 -22
- data/lib/generators/rails_connector/ratings/ratings_generator.rb +0 -20
- data/lib/generators/rails_connector/ratings/templates/migration.rb +0 -14
- data/lib/rails_connector/commentable.rb +0 -23
- data/lib/rails_connector/configuration/google_analytics.rb +0 -29
- data/lib/rails_connector/configuration/rss.rb +0 -46
- data/lib/rails_connector/crm.rb +0 -282
- data/lib/rails_connector/googlebot_checker.rb +0 -46
- data/lib/rails_connector/liquid_support.rb +0 -25
- data/lib/rails_connector/liquid_support/field_value_drop.rb +0 -22
- data/lib/rails_connector/liquid_support/general_helper_tag.rb +0 -44
- data/lib/rails_connector/liquid_support/link_drop.rb +0 -22
- data/lib/rails_connector/liquid_support/liquid_template_handler.rb +0 -162
- data/lib/rails_connector/liquid_support/named_object_drop.rb +0 -14
- data/lib/rails_connector/liquid_support/obj_drop.rb +0 -43
- data/lib/rails_connector/liquid_support/obj_filters.rb +0 -77
- data/lib/rails_connector/rateable.rb +0 -57
- data/lib/rails_connector/seo.rb +0 -52
- data/lib/rails_connector/ses.rb +0 -81
- data/lib/rails_connector/syndicateable.rb +0 -11
- data/lib/search_request.rb +0 -2
@@ -1,12 +0,0 @@
|
|
1
|
-
# Renders a search engine optimized sitemap.xml
|
2
|
-
# Enable via <tt>RailsConnector::Configuration.enable(:seo_sitemap)</tt>
|
3
|
-
class SeoSitemapController < ApplicationController
|
4
|
-
layout nil
|
5
|
-
|
6
|
-
# Finds all objects which are to be shown in the SEO sitemap. Responds to xml only.
|
7
|
-
def show
|
8
|
-
@objects = Obj.find_all_for_sitemap
|
9
|
-
respond_to { |format| format.xml }
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
|
3
|
-
module DefaultCrmFormHelper
|
4
|
-
|
5
|
-
include ::RailsConnector::DefaultUserHelper
|
6
|
-
include ::RailsConnector::MandatoryLabelHelper
|
7
|
-
include ::RailsConnector::ErrorMessagesHelper
|
8
|
-
|
9
|
-
def custom_fields_for(form)
|
10
|
-
activity = instance_variable_get("@#{form.object_name}")
|
11
|
-
custom_attribute_defs = Infopark::Crm::CustomType.find(activity.kind).custom_attributes
|
12
|
-
content = "".html_safe
|
13
|
-
custom_attribute_defs.each do |attribute|
|
14
|
-
custom_attr = "custom_#{attribute.name}"
|
15
|
-
next unless allow_custom_attribute?(custom_attr)
|
16
|
-
value = activity.__send__(custom_attr).to_s
|
17
|
-
input_field =
|
18
|
-
case attribute.type
|
19
|
-
when 'enum'
|
20
|
-
form.select(custom_attr, [''] + attribute.valid_values, :value => value)
|
21
|
-
when 'text'
|
22
|
-
form.text_area(custom_attr, :value => value, :cols => 50, :rows => 5)
|
23
|
-
else
|
24
|
-
form.text_field(custom_attr, :value => value, :size => "40")
|
25
|
-
end
|
26
|
-
content << content_tag(:div, :class => 'label') do
|
27
|
-
if attribute.mandatory
|
28
|
-
mandatory_label_for(form, custom_attr, h(attribute.title))
|
29
|
-
else
|
30
|
-
form.label(custom_attr, h(attribute.title))
|
31
|
-
end
|
32
|
-
end
|
33
|
-
content << content_tag(:div, input_field, :class => 'field')
|
34
|
-
end
|
35
|
-
content
|
36
|
-
end
|
37
|
-
|
38
|
-
def title_field_for(form)
|
39
|
-
content = "".html_safe
|
40
|
-
if has_title_input_field?
|
41
|
-
content << content_tag(:div, :class => 'label') do
|
42
|
-
mandatory_label_for(form, :title, t(:"rails_connector.views.crm_form.title"))
|
43
|
-
end
|
44
|
-
content << content_tag(:div, :class => 'field') do
|
45
|
-
form.text_field :title
|
46
|
-
end
|
47
|
-
end
|
48
|
-
content
|
49
|
-
end
|
50
|
-
|
51
|
-
def logged_in_as(user)
|
52
|
-
content_tag(:em) do
|
53
|
-
t('rails_connector.views.crm_form.logged_in_as',
|
54
|
-
:user => content_tag(:strong, user)).html_safe
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
#
|
3
|
-
# This helper provides methods for use with ratings.
|
4
|
-
module DefaultRatingsHelper
|
5
|
-
# Determines whether the current user has rated a CMS object.
|
6
|
-
def rated_by_current_user?(obj)
|
7
|
-
session[:rated_objs] && session[:rated_objs][obj.id]
|
8
|
-
end
|
9
|
-
|
10
|
-
# Builds the HTML markup for the ratings section.
|
11
|
-
def stars_for_rating(obj)
|
12
|
-
stars = "".html_safe
|
13
|
-
(Rating::MINIMUM..Rating::MAXIMUM).collect do |score|
|
14
|
-
stars << content_tag(:li, link_a_star(score, obj))
|
15
|
-
end
|
16
|
-
stars
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def link_a_star(score, obj)
|
22
|
-
css_classes = ["", "one-star", "two-stars", "three-stars", "four-stars", "five-stars"]
|
23
|
-
descriptions = ["",
|
24
|
-
t(:"rails_connector.helpers.ratings.bad"),
|
25
|
-
t(:"rails_connector.helpers.ratings.mediocre"),
|
26
|
-
t(:"rails_connector.helpers.ratings.average"),
|
27
|
-
t(:"rails_connector.helpers.ratings.good"),
|
28
|
-
t(:"rails_connector.helpers.ratings.very_good")
|
29
|
-
]
|
30
|
-
html_options = {
|
31
|
-
:title => "#{score} von #{Rating::MAXIMUM} Sternen",
|
32
|
-
:class => css_classes[score],
|
33
|
-
"data-description" => descriptions[score]
|
34
|
-
}
|
35
|
-
link_to(score.to_s, ratings_url(:action => :rate, :id => obj.id, :score => score), html_options)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require "recaptcha"
|
2
|
-
|
3
|
-
module RailsConnector
|
4
|
-
|
5
|
-
# This module contains helpers for the {UserController} and {DefaultUserController}
|
6
|
-
module DefaultUserHelper
|
7
|
-
|
8
|
-
include ::ReCaptcha::ViewHelper
|
9
|
-
include ::RailsConnector::MandatoryLabelHelper
|
10
|
-
include ::RailsConnector::ErrorMessagesHelper
|
11
|
-
|
12
|
-
# Returns mandatory user fields as array of symbols.
|
13
|
-
def mandatory_user_fields
|
14
|
-
[:email, :gender, :language, :last_name]
|
15
|
-
end
|
16
|
-
|
17
|
-
# Generates part of a form for the given attributes:
|
18
|
-
#
|
19
|
-
# In your view, use:
|
20
|
-
#
|
21
|
-
# <%= form_for @user, :as => :user do |f| -%>
|
22
|
-
# <%= user_fields_for(f, 'contact', :first_name, :last_name) %>
|
23
|
-
# <% end -%>
|
24
|
-
#
|
25
|
-
# to generate labels and fields for the contact:
|
26
|
-
#
|
27
|
-
# <form>
|
28
|
-
# <div class="label"><label for="user_first_name">First name</label></div>
|
29
|
-
# <div class="field"><input id="user_first_name" name="user[first_name]" size="30" type="text" /></div>
|
30
|
-
# <div class="label"><label for="user_last_name">Last name</label></div>
|
31
|
-
# <div class="field"><input id="user_last_name" name="user[last_name]" size="30" type="text" /></div>
|
32
|
-
# </form>
|
33
|
-
#
|
34
|
-
# Labels are localized automatically, using the scope views.contact and views.location,
|
35
|
-
# respectively. For example:
|
36
|
-
#
|
37
|
-
# views:
|
38
|
-
# user:
|
39
|
-
# first_name: First name
|
40
|
-
# last_name: Last name
|
41
|
-
def user_fields_for(form, model_name, *attributes)
|
42
|
-
output = "".html_safe
|
43
|
-
attributes.flatten.each do |attr|
|
44
|
-
output += content_tag(:div, :class => 'label') do
|
45
|
-
if mandatory_user_fields.include?(attr)
|
46
|
-
mandatory_label_for(form, attr, t("rails_connector.views.user.#{model_name}.#{attr}"))
|
47
|
-
else
|
48
|
-
form.label(attr, t("rails_connector.views.user.#{model_name}.#{attr}"))
|
49
|
-
end
|
50
|
-
end
|
51
|
-
form_field = case attr
|
52
|
-
when :gender
|
53
|
-
form.select(:gender, genders_for_select)
|
54
|
-
when :language
|
55
|
-
languages = Infopark::Crm::CustomType.find('contact').languages
|
56
|
-
form.select(:language, languages_for_select_for(languages),
|
57
|
-
:selected => (@user ? @user.language : I18n.locale.to_s) )
|
58
|
-
else
|
59
|
-
form.text_field(attr)
|
60
|
-
end
|
61
|
-
output += content_tag(:div, form_field, :class => 'field')
|
62
|
-
end
|
63
|
-
output
|
64
|
-
end
|
65
|
-
|
66
|
-
def genders_for_select
|
67
|
-
[
|
68
|
-
['', 'N'],
|
69
|
-
[t('rails_connector.views.user.gender_female'),'F'],
|
70
|
-
[t('rails_connector.views.user.gender_male'), 'M']
|
71
|
-
]
|
72
|
-
end
|
73
|
-
|
74
|
-
def languages_for_select_for(*languages)
|
75
|
-
options = []
|
76
|
-
languages.flatten.each do |lang|
|
77
|
-
options << [t(:"rails_connector.views.user.languages.#{lang}"), lang]
|
78
|
-
end
|
79
|
-
options
|
80
|
-
end
|
81
|
-
|
82
|
-
def profile_fields_for(form, editable_attributes={})
|
83
|
-
output = "".html_safe
|
84
|
-
output += user_fields_for(form, "contact", editable_attributes[:contact])
|
85
|
-
output
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
module ErrorMessagesHelper
|
3
|
-
# Shortened error_messages_for from git://github.com/rails/dynamic_form.git
|
4
|
-
def error_messages(*objects)
|
5
|
-
objects.compact!
|
6
|
-
count = objects.inject(0) {|sum, object| sum + object.errors.count }
|
7
|
-
return '' if count.zero?
|
8
|
-
|
9
|
-
content_tag(:div, :class => 'errorExplanation') do
|
10
|
-
c = ''.html_safe
|
11
|
-
c << content_tag(:ul) do
|
12
|
-
li = ''.html_safe
|
13
|
-
objects.each do |object|
|
14
|
-
object.errors.full_messages.each do |msg|
|
15
|
-
li << content_tag(:li, msg)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
li
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
require "uri"
|
2
|
-
|
3
|
-
module RailsConnector
|
4
|
-
|
5
|
-
# This module contains a helper that can be used to build markup for a link, e.g. a download link.
|
6
|
-
# @api public
|
7
|
-
module LinkHelper
|
8
|
-
# Generates a link by producing the corresponding HTML markup.
|
9
|
-
# <em>link</em> is the Link to be rendered, you may specify the following <em>options</em>:
|
10
|
-
#
|
11
|
-
# [:file_extension] specifies the file extension if the link object is an internal link.
|
12
|
-
# An external link has no file extension since there is no destination object from which
|
13
|
-
# the file extension could be taken. File extensions are, for example, 'pdf', 'zip', or 'doc'.
|
14
|
-
#
|
15
|
-
# The HTML text generated depends on the kind of Link passed to the helper:
|
16
|
-
#
|
17
|
-
# <%= link(@myLinkObject) %>
|
18
|
-
#
|
19
|
-
# [With an internal Link] The helper will produce the following HTML where path is
|
20
|
-
# the path created by the PageHelper, file extension is the file_extension of the
|
21
|
-
# destination object. For a Content, the display title is the Link's display_title and
|
22
|
-
# size is the size of its body (in KB or MB):
|
23
|
-
# <a href='path' class='link'>
|
24
|
-
# <span class='file extension'>
|
25
|
-
# display title
|
26
|
-
# <span class='link_size'> (size)</span>
|
27
|
-
# </span>
|
28
|
-
# </a></tt>
|
29
|
-
#
|
30
|
-
# [With an external Link] The helper will produce the following HTML where url
|
31
|
-
# is the external url of the link and display title is the display_title of the Link:
|
32
|
-
#
|
33
|
-
# <a class='link' href='url'>
|
34
|
-
# <span>display title</span>
|
35
|
-
# </a>
|
36
|
-
#
|
37
|
-
# Normally, you do not know the file extension of the external source, so by default
|
38
|
-
# there will be no CSS class generated for the nested <tt><span></tt> tag. In the case
|
39
|
-
# that you do know it or want some external links to have a special style, you can
|
40
|
-
# specify the file extension with the :file_extension option:
|
41
|
-
#
|
42
|
-
# <%= link(@myLinkObject, :file_extension => 'file_extension' %>
|
43
|
-
#
|
44
|
-
# The helper would then produce the following:
|
45
|
-
#
|
46
|
-
# <a class='link' href='destination'>
|
47
|
-
# <span class='file_extension'>title</span>
|
48
|
-
# </a>
|
49
|
-
# @api public
|
50
|
-
def link(link, options = {})
|
51
|
-
link_attributes = {
|
52
|
-
:href => cms_path(link),
|
53
|
-
:class => 'link'
|
54
|
-
}
|
55
|
-
link_attributes[:target] = link.target unless link.target.blank?
|
56
|
-
content_tag(:a,
|
57
|
-
content_tag(:span,
|
58
|
-
display_value(link.display_title) + size_content(link),
|
59
|
-
:class => options[:file_extension] || link.file_extension
|
60
|
-
),
|
61
|
-
link_attributes
|
62
|
-
)
|
63
|
-
end
|
64
|
-
|
65
|
-
# Displays a link list as an HTML list.
|
66
|
-
# <em>link_list</em> is the link list to be rendered. For each link #link is called.
|
67
|
-
# For a list of valid <em>options</em> see #link.
|
68
|
-
#
|
69
|
-
# The generated list element has the CSS class 'linklist'.
|
70
|
-
# @api public
|
71
|
-
def link_list(link_list, options = {})
|
72
|
-
return if link_list.blank?
|
73
|
-
markup = "<ul class='linklist'>"
|
74
|
-
link_list.each do |l|
|
75
|
-
markup << "<li>#{link l, options}</li>"
|
76
|
-
end
|
77
|
-
markup << "</ul>"
|
78
|
-
|
79
|
-
markup.html_safe
|
80
|
-
end
|
81
|
-
|
82
|
-
private
|
83
|
-
|
84
|
-
def size_content(link)
|
85
|
-
return "" unless link.internal? && link.destination_object && link.destination_object.binary?
|
86
|
-
size = ' (' + number_to_human_size(link.destination_object.body_length) + ')'
|
87
|
-
content_tag(:span, size, :class => 'link_size')
|
88
|
-
end
|
89
|
-
|
90
|
-
include DisplayHelper
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
module MandatoryLabelHelper
|
3
|
-
def mandatory_label_for(form, object, label)
|
4
|
-
html = "".html_safe
|
5
|
-
html += label
|
6
|
-
html += content_tag(:span, " *", :class => "mandatory_star")
|
7
|
-
form.label(object, html, :class => "mandatory")
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
|
3
|
-
# This module contains helpers that can be used to build all kinds of menus.
|
4
|
-
# @api public
|
5
|
-
module MenuHelper
|
6
|
-
include DisplayHelper
|
7
|
-
|
8
|
-
# The <tt>build_menu</tt> method should serve as an example of how to build navigational
|
9
|
-
# menus using Infopark Rails Connector. If you need to extend this method, copy it into
|
10
|
-
# the relevant helper for your application.
|
11
|
-
#
|
12
|
-
# Example 1 - Single-tier menu:
|
13
|
-
#
|
14
|
-
# build_menu(Obj.find(123), nil, :id => "menu")
|
15
|
-
#
|
16
|
-
# produces:
|
17
|
-
#
|
18
|
-
# <ul id="menu">
|
19
|
-
# <li>
|
20
|
-
# <a href="path/to/history">History</a>
|
21
|
-
# </li>
|
22
|
-
# <li>
|
23
|
-
# <a href="path/to/services">Services</a>
|
24
|
-
# </li>
|
25
|
-
# </ul>
|
26
|
-
#
|
27
|
-
# <tt>build_menu</tt> also takes a block so you can use it recursively for multiple levels
|
28
|
-
# (<tt>current_page</tt> returns the Obj for "Insurance" in this example):
|
29
|
-
#
|
30
|
-
# Example 2 - Two-tier Menu:
|
31
|
-
#
|
32
|
-
# build_menu(Obj.find(123), current_page, :id => "main_menu") do |entry|
|
33
|
-
# build_menu(entry, current_page, :id => "sub_menu")
|
34
|
-
# end
|
35
|
-
#
|
36
|
-
# produces:
|
37
|
-
#
|
38
|
-
# <ul id="main_menu">
|
39
|
-
# <li>
|
40
|
-
# <a href="path/to/history">History</a>
|
41
|
-
# </li>
|
42
|
-
# <li>
|
43
|
-
# <a href="path/to/products">Services</a>
|
44
|
-
# <ul id="sub_menu">
|
45
|
-
# <li>
|
46
|
-
# <a href="path/to/products/insurance">Insurance</a>
|
47
|
-
# </li>
|
48
|
-
# <li>
|
49
|
-
# <a href="path/to/products/finance">Finance</a>
|
50
|
-
# </li>
|
51
|
-
# </ul>
|
52
|
-
# </li>
|
53
|
-
# </ul>
|
54
|
-
#
|
55
|
-
# @api public
|
56
|
-
def build_menu(start_obj, current_obj, html_options, &block)
|
57
|
-
children = table_of_contents(start_obj)
|
58
|
-
content_tag(:ul, html_options) do
|
59
|
-
content = "".html_safe
|
60
|
-
children.each do |child|
|
61
|
-
content << content_tag(:li) do
|
62
|
-
list_entry = link_to(child.display_title, cms_path(child))
|
63
|
-
list_entry += block.call(child) if block_given? && current_obj &&
|
64
|
-
(current_obj == child || current_obj.ancestors.include?(child))
|
65
|
-
list_entry
|
66
|
-
end
|
67
|
-
end
|
68
|
-
content
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
module RailsConnector
|
2
|
-
|
3
|
-
# This module contains a helper that can be used to build a micronavigation.
|
4
|
-
# @api public
|
5
|
-
module MicronavHelper
|
6
|
-
|
7
|
-
# Generates a micronavigation by producing HTML markup.
|
8
|
-
# <em>obj</em> becomes the rightmost Obj in the micronavigation since it is the one
|
9
|
-
# for which the micronavigation is built. Assume that all the ancestors of this obj are
|
10
|
-
# available as an array starting with the root object at index 1.
|
11
|
-
# The following <em>options</em> exist:
|
12
|
-
#
|
13
|
-
# [:start] index of the ancestor object to start with. Default is 1, i.e. the object Obj::root.
|
14
|
-
# [:micronav_id] ID of the micronavigation. Default is 'micronav'.
|
15
|
-
#
|
16
|
-
# All ancestors of <em>obj</em> are linked to the respective objects. <em>obj</em>
|
17
|
-
# has no linkage. The first and the last <tt><li></tt> tags have apropriate CSS classes.
|
18
|
-
#
|
19
|
-
# For example, assume that you have the following object hierarchy:
|
20
|
-
#
|
21
|
-
# * Root
|
22
|
-
# * Ancestor_1
|
23
|
-
# * Ancestor_2
|
24
|
-
# * Current_Object
|
25
|
-
#
|
26
|
-
# Normal usage with the context Obj set to <tt>@obj</tt>:
|
27
|
-
#
|
28
|
-
# <%= micronav(@obj) %>
|
29
|
-
#
|
30
|
-
# The helper will start with the Root and will generate the follwing HTML if <tt>@obj</tt> is set to Current_Object:
|
31
|
-
#
|
32
|
-
# <ul id='micronav'>
|
33
|
-
# <li class='first'>
|
34
|
-
# <a href='/2001/Root'>
|
35
|
-
# Root
|
36
|
-
# </a>
|
37
|
-
# </li>
|
38
|
-
# <li>
|
39
|
-
# <a href='/2011/Ancestor_1'>
|
40
|
-
# Ancestor_1
|
41
|
-
# </a>
|
42
|
-
# </li>
|
43
|
-
# <li>
|
44
|
-
# <a href='/2012/Ancestor_2'>
|
45
|
-
# Ancestor_2
|
46
|
-
# </a>
|
47
|
-
# </li>
|
48
|
-
# <li class='last'>
|
49
|
-
# <span>
|
50
|
-
# Current_Object
|
51
|
-
# </span>
|
52
|
-
# </li>
|
53
|
-
# </ul>
|
54
|
-
#
|
55
|
-
# If the <tt>:start</tt> option is set to 2
|
56
|
-
#
|
57
|
-
# <%= micronav(@obj, :start => 2) %>
|
58
|
-
#
|
59
|
-
# then the helper will start with Ancestor_1 and will generate:
|
60
|
-
#
|
61
|
-
# <ul id='micronav'>
|
62
|
-
# <li class='first'>
|
63
|
-
# <a href='/2011/Ancestor_1'>
|
64
|
-
# Ancestor_1
|
65
|
-
# </a>
|
66
|
-
# </li>
|
67
|
-
# <li>
|
68
|
-
# <a href='/2012/Ancestor_2'>
|
69
|
-
# Ancestor_2
|
70
|
-
# </a>
|
71
|
-
# </li>
|
72
|
-
# <li class='last'>
|
73
|
-
# <span>
|
74
|
-
# Current_Object
|
75
|
-
# </span>
|
76
|
-
# </li>
|
77
|
-
# </ul>
|
78
|
-
#
|
79
|
-
# If you specify the <tt>:micronav_id</tt> option as in
|
80
|
-
#
|
81
|
-
# <%= micronav(@obj, :micronav_id => '<em><b>micronav_below_banner</b></em>') %>
|
82
|
-
#
|
83
|
-
# then the <tt><ul></tt> tag of the micronavigation will get your custom ID:
|
84
|
-
#
|
85
|
-
# <ul id='<em><b>micronav_below_banner</b></em>'></tt>
|
86
|
-
# ...
|
87
|
-
# </ul>
|
88
|
-
# @api public
|
89
|
-
def micronav(obj, options = {})
|
90
|
-
options.reverse_merge!({:start => 1, :micronav_id => 'micronav'})
|
91
|
-
ancestors = obj.ancestors
|
92
|
-
start = options[:start] - 1
|
93
|
-
start = 0 if start < 0
|
94
|
-
ancestors = ancestors[start..-1]
|
95
|
-
ancestors ||= []
|
96
|
-
li_tags = "".html_safe
|
97
|
-
ancestors.each do |ancestor|
|
98
|
-
tag_options = {}
|
99
|
-
tag_options[:class] = "first" if li_tags.empty?
|
100
|
-
li_tags << content_tag(:li, link_to(display_value(ancestor.display_title), cms_path(ancestor)), tag_options)
|
101
|
-
end
|
102
|
-
li_tags << content_tag(:li, content_tag(:span, display_value(obj.display_title)), :class => 'last')
|
103
|
-
content_tag(:ul, li_tags, :id => options[:micronav_id])
|
104
|
-
end
|
105
|
-
|
106
|
-
include DisplayHelper
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|