mokio 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d075d4b3838e3120c82c5d4970cebcd78f329773
4
- data.tar.gz: 2c64df9f1f249f23234bbfe4a229b8abe185729b
3
+ metadata.gz: 8d9580cc7a530c2fa75974d77e5b22e972a83619
4
+ data.tar.gz: 720f18e51b6d58b2a7bb31e10bbb27e890b37a29
5
5
  SHA512:
6
- metadata.gz: 3dd0be5bc579b84a929a476eea48e4d54c10357a89b364e88108de305105989d008b66bf69f88e22ef04779f459639d959a40a2594ead88e17eb9d6009ed2489
7
- data.tar.gz: f84b5dd7d74daba6b8c52aa9ff7dcafb8336566cd502e587fd82e24e463209631d43ccb703f11722ae9c6433ce6122faae8296b38cdec755df2ea13beaee32fd
6
+ metadata.gz: 2dc1cd4ff618b9bfc077e9cbb6ce05eaccf69024d7e39d2fd6ed139b1a7fa9bc4f5a896c93b6b0075bfe3f59d4d340ce4dd65355cd261fb0d973a489b1415478
7
+ data.tar.gz: fb8eeb931e6bb4195152c91147433e802223ecf47010b9e62ab7adc2ffbaebe73297154d7cd61618ced3c0084a386e98195f6c17d2cb57c0c176f9ce8dde094c
@@ -5699,7 +5699,7 @@
5699
5699
  *margin-right: .3em;
5700
5700
  line-height: 14px;
5701
5701
  vertical-align: text-top;
5702
- background-image: url("backend/glyphicons-halflings.png");
5702
+ background-image: image-url("backend/glyphicons-halflings.png");
5703
5703
  background-position: 14px 14px;
5704
5704
  background-repeat: no-repeat;
5705
5705
  }
@@ -5713,7 +5713,7 @@
5713
5713
  .dropdown-menu > li > a:hover > [class*=" icon-"],
5714
5714
  .dropdown-menu > .active > a > [class^="icon-"],
5715
5715
  .dropdown-menu > .active > a > [class*=" icon-"] {
5716
- background-image: url("backend/glyphicons-halflings-white.png");
5716
+ background-image: image-url("backend/glyphicons-halflings-white.png");
5717
5717
  }
5718
5718
 
5719
5719
  .icon-glass {
@@ -15,8 +15,8 @@
15
15
  # gallery_type :string(255)
16
16
  # editable :boolean default(TRUE)
17
17
  # deletable :boolean default(TRUE)
18
- # display_from :date
19
- # display_to :date
18
+ # display_from :datetime
19
+ # display_to :datetime
20
20
  # created_at :datetime
21
21
  # updated_at :datetime
22
22
  # meta_id :integer
@@ -5,8 +5,8 @@
5
5
  = f.input :title, disabled: !obj.display_editable_field?('title')
6
6
  = f.input :intro, :wrapper => :ckeditor, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Mini', :height => 150} }, disabled: !obj.display_editable_field?('intro')
7
7
  = f.input :content, :wrapper => :ckeditor, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Medium', :height => 400} }, disabled: !obj.display_editable_field?('content')
8
- = f.input :display_from, :wrapper => :date, :as => :string, :input_html => { :class => "mask-date display_from", :value => (localize(f.object.display_from) if f.object.display_from) }, disabled: !obj.display_editable_field?('display_from')
9
- = f.input :display_to, :wrapper => :date, :as => :string, :input_html => { :class => "mask-date display_to", :value => (localize(f.object.display_to) if f.object.display_to) }, disabled: !obj.display_editable_field?('display_to')
8
+ = f.input :display_from, :wrapper => :date, :as => :string, :input_html => { :class => "mask-date display_from", :value => (localize(f.object.display_from, :format => :datepicker) if f.object.display_from) }, disabled: !obj.display_editable_field?('display_from')
9
+ = f.input :display_to, :wrapper => :date, :as => :string, :input_html => { :class => "mask-date display_to", :value => (localize(f.object.display_to, :format => :datepicker) if f.object.display_to) }, disabled: !obj.display_editable_field?('display_to')
10
10
  .row-fluid
11
11
  label.form-label.span2
12
12
  = t('menus.content_assoc')
@@ -2,7 +2,7 @@
2
2
  div class=("menu_div active_#{menu.active} visible_#{menu.visible} fake_#{menu.fake}")
3
3
  - if menu.fake
4
4
  span.menu_name
5
- = menu.name
5
+ = "#{menu.name} (ID: #{menu.id})"
6
6
  - else
7
7
  - if menu.invisible_content
8
8
  span.warning
@@ -11,7 +11,7 @@
11
11
  span.blank
12
12
  | !
13
13
  span.menu_name
14
- = link_to menu.name, edit_url(menu.class, menu)
14
+ = link_to "#{menu.name} (ID: #{menu.id})", edit_url(menu.class, menu)
15
15
  span.menu_details
16
16
  span.content_type
17
17
  = menu.content_type
@@ -8,7 +8,7 @@ Ckeditor.setup do |config|
8
8
 
9
9
  # Allowed image file types for upload.
10
10
  # Set to nil or [] (empty array) for all file types
11
- # config.image_file_types = ["jpg", "jpeg", "png", "gif", "tiff"]
11
+ config.image_file_types = ["jpg", "jpeg", "png", "gif", "tiff", "svg"]
12
12
 
13
13
  # Allowed attachment file types for upload.
14
14
  # Set to nil or [] (empty array) for all file types
@@ -23,6 +23,7 @@ en:
23
23
  time:
24
24
  formats:
25
25
  default: "%d-%m-%Y"
26
+ datepicker: "%d-%m-%Y %H:%M"
26
27
  date:
27
28
  formats:
28
29
  default: "%d-%m-%Y"
@@ -575,9 +576,8 @@ en:
575
576
  dayNamesShort: "Sun,Mon,Tue,Wed,Thu,Fri,Sat"
576
577
  dayNamesMin: "Su,Mo,Tu,We,Th,Fr,Sa"
577
578
  weekHeader: "Wk"
578
- mask: "99/99/9999"
579
- maskFormat: "MM/dd/yyyy"
580
- dateFormat: "mm/dd/yy"
579
+ mask: "99/99/9999 99:99"
580
+ dateFormat: "dd/mm/yy"
581
581
  firstDay: "0"
582
582
  isRTL: "0"
583
583
  showMonthAfterYear: "0"
@@ -652,6 +652,7 @@ en:
652
652
  password_confirmation:
653
653
  confirmation: Passwords do not match
654
654
  email:
655
+ taken: Given e-mail address is taken
655
656
  blank: Email cannot be empty
656
657
  invalid: Provided an incorrect e-mail address
657
658
  editable:
@@ -23,6 +23,7 @@ pl:
23
23
  time:
24
24
  formats:
25
25
  default: "%d-%m-%Y"
26
+ datepicker: "%d-%m-%Y %H:%M"
26
27
  date:
27
28
  formats:
28
29
  default: "%d-%m-%Y"
@@ -575,8 +576,7 @@ pl:
575
576
  dayNamesShort: "Nie,Pn,Wt,Śr,Czw,Pt,So"
576
577
  dayNamesMin: "N,Pn,Wt,Śr,Cz,Pt,So"
577
578
  weekHeader: "Tydz"
578
- mask: 99-99-9999
579
- maskFormat: dd-MM-yyyy
579
+ mask: 99-99-9999 99:99
580
580
  dateFormat: "dd-mm-yy"
581
581
  firstDay: "1"
582
582
  isRTL: "0"
@@ -652,6 +652,7 @@ pl:
652
652
  password_confirmation:
653
653
  confirmation: Hasła się nie zgadzają
654
654
  email:
655
+ taken: Podany adres e-mail jest już zajęty
655
656
  blank: Proszę wpisać adres email
656
657
  invalid: Podano nieprawidłowy adres e-mail
657
658
  editable:
@@ -0,0 +1,8 @@
1
+ class ChangeDataTypeForDisplayDates < ActiveRecord::Migration
2
+ def change
3
+ change_table :mokio_contents do |t|
4
+ t.change :display_from, :datetime
5
+ t.change :display_to, :datetime
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ class AddMenuCssOptions < ActiveRecord::Migration
2
+ def change
3
+ add_column :mokio_menus, :css_class, :string
4
+ add_column :mokio_menus, :css_body_class, :string
5
+ end
6
+ end
@@ -0,0 +1,26 @@
1
+ module Mokio
2
+ class GaScriptGenerator < Rails::Generators::Base #:nodoc:
3
+ source_root File.expand_path("../templates", __FILE__)
4
+ argument :uid, :type => :string
5
+ desc "Creates Google Analytics script and partial view"
6
+
7
+ def create_script
8
+ script = <<TEXT
9
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
10
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
11
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
12
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
13
+
14
+ ga('create', '#{uid}', 'auto');
15
+ ga('send', 'pageview');
16
+ TEXT
17
+ Mokio::ExternalScript.create(:name => "Google Analytics", :script =>script)
18
+ end
19
+
20
+ def create_view
21
+ puts "Paste it into your layout body: " + "= render :partial => 'frontend/layout_elements/google_analytics'".green
22
+ template "_google_analytics.html.slim", "app/views/frontend/layout_elements/_google_analytics.html.slim"
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module Mokio
2
+ class PositionsGenerator < Rails::Generators::Base #:nodoc:
3
+ argument :names, :type => :array
4
+
5
+ desc "Creates module positions"
6
+ def create_positions
7
+ names.each do |name|
8
+ Mokio::ModulePosition.create(:name => name)
9
+ puts "Successfully created #{name.green} position."
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ - content_for :js do
2
+ javascript:
3
+ #{build_external_script "Google Analytics"}
@@ -251,4 +251,5 @@ require "mokio/concerns"
251
251
  require "mokio/frontend_helpers"
252
252
  require "mokio/logger"
253
253
  require "mokio/template_renderer"
254
+ require "mokio/slugged"
254
255
  require "mokio/version"
@@ -10,7 +10,7 @@ module Mokio
10
10
  included do
11
11
  include Mokio::Concerns::Models::Common
12
12
 
13
- has_many :content_links
13
+ has_many :content_links, :dependent => :destroy
14
14
  has_many :data_files, :dependent => :destroy
15
15
  has_many :menus, :through => :content_links
16
16
 
@@ -30,8 +30,13 @@ module Mokio
30
30
  scope :lang, -> (lang_id) { where('lang_id = ? or lang_id is null', lang_id) }
31
31
  scope :order_default, -> { order("seq asc") }
32
32
  scope :active, -> { where(active: true) }
33
+ scope :_displayed_from, -> { where("display_from < ? OR display_from IS NULL", Time.zone.now) }
34
+ scope :_displayed_to, -> { where("display_to > ? OR display_to IS NULL", Time.zone.now) }
35
+ scope :displayed, -> { active._displayed_from._displayed_to}
36
+
33
37
  scope :order_created, -> { reorder(nil).order('created_at DESC') }
34
38
 
39
+ before_save :update_display_to
35
40
  after_save :update_etag
36
41
 
37
42
  self.per_page = 15
@@ -53,6 +58,17 @@ module Mokio
53
58
  self.touch(:etag)
54
59
  end
55
60
 
61
+
62
+ #
63
+ # Update display_to field: set time to 23:59:59 if time is set to 00:00:00
64
+ #
65
+ def update_display_to
66
+ if self.display_to && self.display_to.time.strftime("%H:%M") == "00:00"
67
+ updated = self.display_to.end_of_day
68
+ self.display_to = updated
69
+ end
70
+ end
71
+
56
72
  #
57
73
  # Output for title field
58
74
  #
@@ -53,6 +53,16 @@ module Mokio
53
53
  end
54
54
  end
55
55
 
56
+ module ClassMethods
57
+ #
58
+ # Columns for table - needed for coping a menu
59
+ #
60
+ def columns_for_table
61
+ %w(name active updated_at lang_id)
62
+ end
63
+ end
64
+
65
+
56
66
  #
57
67
  # Friendly_id slug_candidates (<b>gem 'friendly_id'</b>)
58
68
  #
@@ -65,7 +75,7 @@ module Mokio
65
75
 
66
76
  def build_slug
67
77
  if parent.nil?
68
- return ''
78
+ ''
69
79
  elsif !parent.fake
70
80
  parent.slug
71
81
  else
@@ -88,7 +98,7 @@ module Mokio
88
98
  # Returns list of contents available for assignment to given menu element (based on lang_id) ordered by title
89
99
  #
90
100
  def available_contents
91
- if (lang_id.nil? || lang_id == 0)
101
+ if lang_id.nil? || lang_id == 0
92
102
  Mokio::Content.lang(Mokio::Lang.first.id).order(:title) - contents
93
103
  else
94
104
  Mokio::Content.lang(lang_id).order(:title) - contents
@@ -124,7 +134,7 @@ module Mokio
124
134
  #
125
135
  def available_modules_by_pos
126
136
  menu_id = (self.id.nil? ? -1 : self.id)
127
- if (lang_id.nil? || lang_id == 0)
137
+ if lang_id.nil? || lang_id == 0
128
138
  Mokio::AvailableModule.not_selected_for_menu(menu_id).for_lang(Mokio::Lang.first.id).group_by(&:module_position_id)
129
139
  else
130
140
  Mokio::AvailableModule.not_selected_for_menu(menu_id).for_lang(lang_id).group_by(&:module_position_id)
@@ -164,11 +174,11 @@ module Mokio
164
174
  end
165
175
 
166
176
  def content_type
167
- if (contents.length > 1)
177
+ if contents.length > 1
168
178
  I18n.t('menus.list').titleize
169
- elsif (contents.length == 1)
179
+ elsif contents.length == 1
170
180
  I18n.t(contents[0].type.underscore).titleize
171
- elsif (!external_link.blank?)
181
+ elsif !external_link.blank?
172
182
  I18n.t('external_link', Menu).titleize
173
183
  else
174
184
  ''
@@ -176,7 +186,7 @@ module Mokio
176
186
  end
177
187
 
178
188
  #
179
- # Retruns always editable fields
189
+ # Returns always editable fields
180
190
  #
181
191
  def always_editable_fields
182
192
  @always = %w(active seq visible always_displayed ancestry)
@@ -191,13 +201,20 @@ module Mokio
191
201
  def full_slug
192
202
  m = self
193
203
  slug = m.slug
194
- unless m.parent.nil?
204
+ unless m.parent.nil? || slug.nil?
195
205
  while !m.parent.fake
196
206
  slug = m.parent.slug + "/" + slug
197
207
  m = m.parent
198
208
  end
199
209
  slug
200
210
  end
211
+ slug
212
+ end
213
+
214
+ # Real slug - menu slug hierarchical or not, with lang prefix or not
215
+
216
+ def real_slug (hierarchical)
217
+ "/#{hierarchical ? full_slug : slug}"
201
218
  end
202
219
 
203
220
  #
@@ -35,6 +35,7 @@ module Mokio
35
35
  ActionView::Base.send :include, Mokio::FrontendHelpers::StaticModulesHelper
36
36
  ActionView::Base.send :include, Mokio::FrontendHelpers::ContentHelper
37
37
  ActionView::Base.send :include, Mokio::FrontendHelpers::ExternalScriptsHelper
38
+ ActionView::Base.send :include, Mokio::FrontendHelpers::LangsHelper
38
39
  end
39
40
  end
40
41
 
@@ -2,4 +2,5 @@ require 'mokio/frontend_helpers/content_helper'
2
2
  require 'mokio/frontend_helpers/menu_helper'
3
3
  require 'mokio/frontend_helpers/static_modules_helper'
4
4
  require 'mokio/frontend_helpers/external_scripts_helper'
5
+ require 'mokio/frontend_helpers/langs_helper'
5
6
 
@@ -13,11 +13,8 @@ module Mokio
13
13
  # * +script_name+ - external script name from mokio_external_scripts
14
14
 
15
15
  def build_external_script(script_name)
16
- html = "";
17
16
  result = Mokio::ExternalScript.find_by(name:script_name)
18
- if !result.blank?
19
- html = build_common(result)
20
- end
17
+ html = result.blank? ? "" : build_common(result)
21
18
  html.html_safe
22
19
  end
23
20
 
@@ -29,9 +26,9 @@ module Mokio
29
26
  # * +result+ - all external scripts from mokio_external_scripts
30
27
 
31
28
  def build_all_external_scripts
32
- html = "";
29
+ html = ""
33
30
  result = Mokio::ExternalScript.all
34
- if !result.blank?
31
+ unless result.blank?
35
32
  result.each do |position|
36
33
  html = build_common(position)
37
34
  end
@@ -50,12 +47,12 @@ module Mokio
50
47
  # * +obj.script+ - external script content from mokio_external_scripts
51
48
  # * +obj.name+ - external script name from mokio_external_scripts
52
49
 
53
- def build_common(obj)
50
+ def build_common(obj, html_comments = false)
54
51
  html = ""
55
- if !obj.blank?
56
- html << "<!--#{obj.name} - EXTERNAL SCRIPT START-->\n"
52
+ unless obj.blank?
53
+ html << "<!--#{obj.name} - EXTERNAL SCRIPT START-->\n" if html_comments
57
54
  html << obj.script + "\n"
58
- html << "<!--#{obj.name} END -->\n"
55
+ html << "<!--#{obj.name} END -->\n" if html_comments
59
56
  html.html_safe
60
57
  end
61
58
  end
@@ -0,0 +1,31 @@
1
+ module Mokio
2
+ module FrontendHelpers
3
+ #
4
+ # Frontend helper methods used with Mokio::Lang objects
5
+ #
6
+ module LangsHelper
7
+ #
8
+ # Builds forms with buttons to choose site language
9
+ # Pass your controller action path and check params[:lang_code]
10
+ #
11
+ # ==== Attributes
12
+ #
13
+ # * +controller_action+ - your controller action path (e.g. "content_home_path")
14
+ # * +image_folder+ - folder where helper will search country flag images (default: "langs" - searched in app/assets/images/langs)
15
+ # * +submit_class+ - submit buttons css class (defaut: "btn-lang-submit")
16
+ # * +image_ext+ - language flag image extension(defaut: "png")
17
+ #
18
+ def build_lang_menu(controller_action, image_folder = "langs", submit_class = "btn-lang-submit", image_ext = "png")
19
+ html = ""
20
+ Mokio::Lang.active.each do |lang|
21
+ lang_form = form_tag(controller_action, :id => "#{lang.shortname}_lang_form") do
22
+ hidden_field_tag("lang_code", lang.shortname) +
23
+ image_submit_tag("#{image_folder}/#{lang.shortname}.#{image_ext}", :class => submit_class)
24
+ end
25
+ html << lang_form
26
+ end
27
+ html.html_safe
28
+ end
29
+ end
30
+ end
31
+ end
@@ -6,7 +6,7 @@ module Mokio
6
6
  module MenuHelper
7
7
 
8
8
  #
9
- # Builds menu tree for specified arguments, returns html
9
+ # Builds menu tree for specified arguments, returns html. Left for backward compatibility. Use build_menu_extended instead.
10
10
  #
11
11
  # ==== Attributes
12
12
  #
@@ -70,6 +70,7 @@ module Mokio
70
70
  # * +limit+ - how deep should builder look for children
71
71
  # * +index+ - how deep is function already
72
72
  #
73
+
73
74
  def build_items(item, limit, index, hierarchical = false, root_path = "")
74
75
  return "" if index > limit || !item.children.present?
75
76
 
@@ -98,6 +99,174 @@ module Mokio
98
99
 
99
100
  alias_method :create_menu, :build_menu
100
101
 
102
+ #
103
+ # Finds proper menu element - based on lang and menu position and calls build_menu_extended for this menu element
104
+ #
105
+
106
+ def build_menu_extended_lang(menu_position_name, lang_code, limit = 999999, include_menu_parent = false, options = {hierarchical: true, with_nav: true, nav_class: "nav_menu", active_class: "active", item_class: nil, item_with_children_class: nil, item_without_children_class: nil, ul_class: nil, ul_wrapper_class: nil, ul_nested_class:nil, ul_nested_wrapper_class:nil, a_class: nil})
107
+ lang = Mokio::Lang.find_by_shortname(lang_code)
108
+ menu_parent = Mokio::Menu.where(lang_id: lang.id, name: menu_position_name) unless lang.blank?
109
+ build_menu_extended(menu_parent.first.id, limit, include_menu_parent, options) unless menu_parent.blank?
110
+ end
111
+
112
+
113
+ #
114
+ # Builds menu tree for specified arguments, returns html. Allows specifying css classes and start from any menu element.
115
+ # Menu structure:
116
+ # <nav> (optional)
117
+ # <div class='#{ul_wrapper_class}'>
118
+ # <ul class='#{ul_class}'>
119
+ # <div class='#{item_wrapper_class}'> (optional)
120
+ # <li class='#{item_class} #{item_with_children_class} #{active_class}'>
121
+ # <a>item.slug or item.full_slug</a>
122
+ # <div class='#{ul_nested_wrapper_class}'>
123
+ # <ul class="#{ul_nested_class}">
124
+ # <li class='#{item_class}#{item without_children_class}'>
125
+ # <a class='#{active_class}'>item.slug or item.full_slug</a>
126
+ # </li>
127
+ # <li class='#{item_class}#{item without_children_class}'
128
+ # <a class='#{active_class}'>item.slug or item.full_slug</a>
129
+ # </li>
130
+ # </ul>
131
+ # </div>
132
+ # </li>
133
+ # </div>
134
+ # <li class='#{item_class}#{item without_children_class}'>
135
+ # <a class='#{active_class}'>item.slug or item.full_slug</a>
136
+ # <li>
137
+ # </ul>
138
+ # </div>
139
+ # </nav>
140
+ #
141
+ # ==== Attributes
142
+ #
143
+ # * +menu_parent_id+ - starting menu element's id - this element will be displayed or not and all its children will be displayed
144
+ # * +include_menu_parent+ - whether parent menu element should be displayed or not
145
+ # * +limit+ - how deep should builder look for children, count starts from 1
146
+ # * +options+ - hash with following options:
147
+ # * +hierarchical+ - specifies if you want to use hierarchical links or not
148
+ # * +with_nav+ - whether nav element should be generated
149
+ # * +nav_class+ - css class of the nav element
150
+ # * +active_class+ - css class of the active items
151
+ # * +item_class+ - css class of the items
152
+ # * +item_with_children_class+ - css class of the items that have children
153
+ # * +item_without_children_class+ - css class of the items without children
154
+ # * +ul_class+ - css class of the ul element
155
+ # * +ul_wrapper_class+ - css class of the ul wrapper class, if nil then wrapper for ul will not be generated
156
+ # * +ul_nested_class+ - css class of the nested ul element
157
+ # * +ul_nested_wrapper_class+ - css class of the ul wrapper class, generated only for nested uls, if nil then wrapper for nested ul will not be generated
158
+ # * +a_class+ - css class of the a element
159
+ #* +content_type+ - content types for which we'll build menu items(string or array e.g. "Mokio::Article" OR ["Mokio::Article", "Mokio::PicGallery"])
160
+ #* +content_item_class+ - css class of the content items (not Mokio::Menu, specified above)
161
+
162
+ # if you need hierarchical links in your frontend, add following route to your routes.rb
163
+
164
+ # get "/*menu_path/:menu_id" => "content#show"
165
+ # get "/:menu_id" => "content#show"
166
+
167
+ def build_menu_extended(menu_parent_id, limit = 999999, include_menu_parent = false, options = {})
168
+
169
+ set_options_defaults(options)
170
+
171
+ html = ""
172
+ html = "<nav #{"class='#{options[:nav_class]}'" if options[:nav_class]} id='menuMain'>" if options[:with_nav]
173
+ html << "<div class='#{options[:ul_wrapper_class]}'>" unless options[:ul_wrapper_class].nil?
174
+ html << "<ul #{"class='#{options[:ul_class]}'" if options[:ul_class]}>"
175
+ begin
176
+ menu_parent = Mokio::Menu.find(menu_parent_id)
177
+ if include_menu_parent
178
+ html << build_menu_items_extended(menu_parent, limit, 1, menu_parent.ancestor_ids, options)
179
+ else
180
+ menu_parent.children.order_default.each do |i|
181
+ html << build_menu_items_extended(i, limit, 1, i.ancestor_ids, options)
182
+ end
183
+ end
184
+
185
+ rescue => e
186
+ MOKIO_LOG.error "BUILD MENU ERROR: #{e}"
187
+ end
188
+ html << "</ul>"
189
+ html << "</div>" unless options[:ul_wrapper_class].nil?
190
+ html << "</nav>" if options[:with_nav]
191
+ html.html_safe
192
+ end
193
+
194
+ # Builds menu starting from given menu element (real menu only)
195
+ # - displays all its children
196
+
197
+ def build_menu_items_extended (i, limit, index, active_ids = [], options)
198
+
199
+ return "" if index > limit
200
+
201
+ html = ""
202
+ if i.visible && i.active
203
+ item_class = build_item_class(i, options, active_ids)
204
+ html << "<li #{"class='#{item_class}'" unless item_class.blank?}>"
205
+
206
+ if i.external_link.blank?
207
+ html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{i.real_slug(options[:hierarchical])}'>#{i.name}</a>"
208
+ else
209
+ html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{i.external_link}' #{"rel='nofollow'" unless i.follow || i.follow.nil?} #{"target='#{i.target}'" unless (i.target.blank? || i.target == '_self') }>#{i.name}</a>"
210
+ end
211
+
212
+ items_html = ""
213
+
214
+ i.children.order_default.each do |item_child|
215
+ items_html << build_menu_items_extended(item_child, limit, index + 1, active_ids, options)
216
+ end
217
+
218
+ content_item_class = [item_class, options[:content_item_class]].compact.join(" ")
219
+ i.contents.displayed.order_default.each do |content|
220
+ next if options[:content_type].blank? || options[:content_type].exclude?(content.type.to_s)
221
+ items_html << "<li #{"class='#{content_item_class}'" unless content_item_class.blank?}>"
222
+ items_html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{content.slug}'>#{content.title}</a>" if content.respond_to?("slug")
223
+ items_html << "</li>"
224
+ end
225
+
226
+ unless items_html.empty?
227
+ html << "<div class='#{options[:ul_nested_wrapper_class]}'>" unless options[:ul_nested_wrapper_class].nil?
228
+ html << "<ul #{"class='#{options[:ul_nested_class]}'" if options[:ul_nested_class]}>"
229
+ html << items_html
230
+ html << "</ul>"
231
+ html << "</div>" unless options[:ul_nested_wrapper_class].nil?
232
+ end
233
+ html << "</li>"
234
+ end
235
+ html.html_safe
236
+ end
237
+
238
+
239
+ # Builds css class fot one menu item
240
+
241
+ def build_item_class(i, options, active_ids)
242
+
243
+ item_class = []
244
+
245
+ item_class << options[:item_class]
246
+ item_class << i.css_class
247
+
248
+ if i.has_children?
249
+ item_class << options[:item_with_children_class]
250
+ else
251
+ item_class << options[:item_without_children_class]
252
+ end
253
+
254
+ item_class << options[:active_class] if i.slug == params[:menu_id] || i.slug == request.original_fullpath.match(/(\D+\/{1}|\D+)/)[0].gsub('/', '') || active_ids.include?(i.id)
255
+ item_class.compact.join(" ")
256
+ end
257
+
258
+
259
+ # Sets default values for build_menu_extended
260
+
261
+ def set_options_defaults(options)
262
+ options[:hierarchical] = true unless options.has_key? :hierarchical
263
+ options[:with_nav] = true unless options.has_key? :with_nav
264
+ options[:nav_class] = "nav_menu" unless options.has_key? :nav_class
265
+ options[:active_class] = "active" unless options.has_key? :active_class
266
+ options[:content_type] = "" unless options.has_key? :content_type
267
+ end
268
+
269
+
101
270
  #
102
271
  # Raises IsNotAMokioMenuErrorr if obj isn't a Mokio::Menu object
103
272
  #
@@ -0,0 +1,17 @@
1
+ module Mokio
2
+ module Slugged
3
+ def slug
4
+ "/#{slug_prefix}/#{id}/#{slug_candidate.parameterize}"
5
+ end
6
+ def print_slug
7
+ "#{slug}/print"
8
+ end
9
+ protected
10
+ def slug_prefix
11
+ "content"
12
+ end
13
+ def slug_candidate
14
+ title
15
+ end
16
+ end
17
+ end
@@ -2,5 +2,5 @@ module Mokio
2
2
  #
3
3
  # Actual Mokio version
4
4
  #
5
- VERSION = "0.0.9"
5
+ VERSION = "0.0.10"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mokio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - versoft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-19 00:00:00.000000000 Z
11
+ date: 2014-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -1466,9 +1466,14 @@ files:
1466
1466
  - db/migrate/20140731061227_create_mokio_external_scripts.rb
1467
1467
  - db/migrate/20141009125027_alter_external_scripts.rb
1468
1468
  - db/migrate/20141024131942_migrate_external_codes_to_external_scripts.rb
1469
+ - db/migrate/20141209072051_change_data_type_for_display_dates.rb
1470
+ - db/migrate/20141209101853_add_menu_css_options.rb
1469
1471
  - lib/generators/mokio/copy/assets_generator.rb
1470
1472
  - lib/generators/mokio/copy/views_generator.rb
1473
+ - lib/generators/mokio/ga_script_generator.rb
1471
1474
  - lib/generators/mokio/install_generator.rb
1475
+ - lib/generators/mokio/positions_generator.rb
1476
+ - lib/generators/mokio/templates/_google_analytics.html.slim
1472
1477
  - lib/generators/mokio/templates/mokio.rb
1473
1478
  - lib/mokio.rb
1474
1479
  - lib/mokio/common.rb
@@ -1523,11 +1528,13 @@ files:
1523
1528
  - lib/mokio/frontend_helpers.rb
1524
1529
  - lib/mokio/frontend_helpers/content_helper.rb
1525
1530
  - lib/mokio/frontend_helpers/external_scripts_helper.rb
1531
+ - lib/mokio/frontend_helpers/langs_helper.rb
1526
1532
  - lib/mokio/frontend_helpers/menu_helper.rb
1527
1533
  - lib/mokio/frontend_helpers/static_modules_helper.rb
1528
1534
  - lib/mokio/logger.rb
1529
1535
  - lib/mokio/simple-form-wrappers.rb
1530
1536
  - lib/mokio/site_helper.rb
1537
+ - lib/mokio/slugged.rb
1531
1538
  - lib/mokio/solr_config.rb
1532
1539
  - lib/mokio/template_renderer.rb
1533
1540
  - lib/mokio/uploader.rb