mokio 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -0
  3. data/app/assets/stylesheets/backend/custom.css.scss +1 -1
  4. data/app/views/mokio/common/_meta.html.slim +20 -20
  5. data/app/views/mokio/menus/_form.html.haml +1 -1
  6. data/app/views/mokio/menus/_menu.html.slim +7 -1
  7. data/app/views/mokio/menus/index.html.slim +1 -0
  8. data/app/views/mokio/menus/new_menu_position.slim +21 -0
  9. data/config/locales/en.yml +4 -1
  10. data/config/locales/pl.yml +4 -1
  11. data/config/routes.rb +6 -3
  12. data/db/migrate/20140422135850_add_mokio_to_application.rb +15 -15
  13. data/lib/mokio/concerns/controllers/menus.rb +25 -2
  14. data/lib/mokio/concerns/models/contact.rb +1 -1
  15. data/lib/mokio/concerns/models/menu.rb +2 -1
  16. data/lib/mokio/concerns/models/recipient.rb +0 -9
  17. data/lib/mokio/engine.rb +8 -0
  18. data/lib/mokio/frontend_helpers/langs_helper.rb +16 -9
  19. data/lib/mokio/frontend_helpers/menu_helper.rb +21 -16
  20. data/lib/mokio/slugged.rb +5 -0
  21. data/lib/mokio/version.rb +1 -1
  22. data/spec/controllers/{backend → mokio}/contents_controller_spec.rb +34 -25
  23. data/spec/controllers/mokio/dashboard_controller_spec.rb +76 -0
  24. data/spec/controllers/{backend → mokio}/menus_controller_spec.rb +104 -99
  25. data/spec/controllers/mokio/mov_galleries_controller_spec.rb +125 -0
  26. data/spec/controllers/mokio/photos_controller_spec.rb +350 -0
  27. data/spec/controllers/mokio/pic_galleries_controller_spec.rb +125 -0
  28. data/spec/controllers/mokio/static_modules_controller_spec.rb +166 -0
  29. data/spec/factories/contact_templates.rb +1 -1
  30. data/spec/factories/content_links_factory.rb +1 -1
  31. data/spec/factories/contents_factory.rb +8 -8
  32. data/spec/factories/gmaps.rb +1 -1
  33. data/spec/factories/langs.rb +1 -1
  34. data/spec/factories/menus_factory.rb +1 -1
  35. data/spec/factories/meta.rb +1 -1
  36. data/spec/factories/recipients.rb +1 -1
  37. data/spec/factories/selected_modules.rb +1 -1
  38. data/spec/factories/static_modules_factory.rb +2 -2
  39. data/spec/factories/users.rb +1 -1
  40. data/spec/helpers/mokio/common_helper_spec.rb +141 -0
  41. data/spec/helpers/mokio/menus_helper_spec.rb +70 -0
  42. data/spec/models/available_module_spec.rb +13 -10
  43. data/spec/models/contact_template_spec.rb +5 -3
  44. data/spec/models/content_link_spec.rb +5 -4
  45. data/spec/models/content_spec.rb +71 -70
  46. data/spec/models/data_file_spec.rb +5 -4
  47. data/spec/models/gmap_spec.rb +5 -4
  48. data/spec/models/lang_spec.rb +5 -4
  49. data/spec/models/menu_spec.rb +10 -2
  50. data/spec/models/meta_spec.rb +5 -4
  51. data/spec/models/module_position_spec.rb +11 -10
  52. data/spec/models/mov_gallery_spec.rb +62 -59
  53. data/spec/models/pic_gallery_spec.rb +62 -59
  54. data/spec/models/recipient_spec.rb +5 -4
  55. data/spec/models/selected_module_spec.rb +72 -88
  56. data/spec/models/static_module_spec.rb +56 -55
  57. data/spec/models/user_spec.rb +7 -3
  58. data/spec/spec_helper.rb +4 -1
  59. metadata +21 -22
  60. data/spec/controllers/backend/dashboard_controller_spec.rb +0 -69
  61. data/spec/controllers/backend/mov_galleries_controller_spec.rb +0 -118
  62. data/spec/controllers/backend/photos_controller_spec.rb +0 -342
  63. data/spec/controllers/backend/pic_galleries_controller_spec.rb +0 -118
  64. data/spec/controllers/backend/static_modules_controller_spec.rb +0 -159
  65. data/spec/factories/tags.rb +0 -17
  66. data/spec/helpers/backend/common_helper_spec.rb +0 -137
  67. data/spec/helpers/backend/menus_helper_spec.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e673fcdb00f127378b0dc70c8586e6e22cd38322
4
- data.tar.gz: 9fb714ca0ca7e7198a308c15e264ab7658247b04
3
+ metadata.gz: 8c699e4ede04dd7a79e2766ec3509713d773bb90
4
+ data.tar.gz: 0921f2de69320c60df935bfc8743ce59cd438819
5
5
  SHA512:
6
- metadata.gz: fa463c58d2d3f9b3eec64b9c782c24d8bfe88cf86bb824b17d1da0f0034347ee6a5419da6352563a530c274c6196df5f14ced82fcd123d6a356f3d7b3e5d3fc7
7
- data.tar.gz: b44132d923eba7f55f18403fb760896fdadcc722d21733f629826d84a048bf02eeb6d93fc42415c15a48968029c78807fd509ed435697f36b7bf736dbd2250c0
6
+ metadata.gz: 52e420ddad472cb8381e668b04f07160ed75ba352c9aa4de5656c62a40117560d96e9b695515dfa3af835dd362f622ee50e075bdc94b4c8b42f6dbedad0e496a
7
+ data.tar.gz: 940fa445ad459f82942ce668c3f1ad969c2335cda3e6213e2630b41927a3731c0a9f6946c3f6f91ddb2e3b1d2cc503ae96cbe8bc2da9753d0e745d6a40d861da
data/Rakefile CHANGED
@@ -30,6 +30,8 @@ Bundler::GemHelper.install_tasks
30
30
  # t.verbose = false
31
31
  # end
32
32
 
33
+ Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
34
+
33
35
  require 'rspec/core'
34
36
  require 'rspec/core/rake_task'
35
37
  desc "Run all specs in spec directory (excluding plugin specs)"
@@ -645,4 +645,4 @@ select[multiple] {
645
645
  bottom: 8px;
646
646
  }
647
647
  }
648
- }
648
+ }
@@ -9,32 +9,32 @@
9
9
  span.icon16.icomoon-icon-facebook-2.white
10
10
  = bt("meta_facebook", Mokio::Meta)
11
11
 
12
- #meta_g_modal.modal.fade role="dialog" aria-hidden="true" style="display:none;" aria-labelledby="meta_g_ModalLabel"
13
- .modal-dialog
14
- .modal-content
15
- .modal-header
16
- h3.modal-title.modal-photo id="meta_g_ModalLabel"
17
- span.icon24.icomoon-icon-google-plus
18
- = bt("meta_google", Mokio::Meta)
19
- small= bt("meta_google_desc", Mokio::Meta)
12
+ #meta_g_modal.modal.fade role="dialog" aria-hidden="true" style="display:none;" aria-labelledby="meta_g_ModalLabel"
13
+ .modal-dialog
14
+ .modal-content
15
+ .modal-header
16
+ h3.modal-title.modal-photo id="meta_g_ModalLabel"
17
+ span.icon24.icomoon-icon-google-plus
18
+ = bt("meta_google", Mokio::Meta)
19
+ small= bt("meta_google_desc", Mokio::Meta)
20
20
 
21
- .modal-body
22
- = f.fields_for :meta do |m|
23
- = m.input :g_title
24
- = m.input :g_desc
25
- = m.input :g_keywords
26
- = m.input :g_author
27
- = m.input :g_copyright
28
- = m.input :g_application_name
21
+ .modal-body
22
+ = f.fields_for :meta do |m|
23
+ = m.input :g_title
24
+ = m.input :g_desc
25
+ = m.input :g_keywords
26
+ = m.input :g_author
27
+ = m.input :g_copyright
28
+ = m.input :g_application_name
29
29
 
30
- .modal-footer
31
- button.btn.btn-primary type="button" data-dismiss="modal" = bt("close")
30
+ .modal-footer
31
+ button.btn.btn-primary type="button" data-dismiss="modal" = bt("close")
32
32
 
33
- #meta_f_modal.modal.fade role="dialog" aria-hidden="true" style="display:none;" aria-labelledby="meta_f_ModalLabel"
33
+ #meta_f_modal.modal.fade role="dialog" aria-hidden="true" style="display:none;" aria-labelledby="meta_f_ModalLabel"
34
34
  .modal-dialog
35
35
  .modal-content
36
36
  .modal-header
37
- h3.modal-title.modal-photo id="meta_f_ModalLabel"
37
+ h3.modal-title.modal-photo id="meta_f_ModalLabel"
38
38
  span.icon24.icomoon-icon-facebook-2
39
39
  = bt("meta_facebook", Mokio::Meta)
40
40
  small= bt("meta_facebook_desc", Mokio::Meta)
@@ -19,7 +19,7 @@
19
19
  #url_box{:style => "display: #{@menu.contents.empty? && !@menu.external_link.blank? ? 'block' : 'none'};"}
20
20
  = f.input :external_link, label: btc("external_link",'Menu'), disabled: !@menu.display_editable_field?('external_link')
21
21
  = f.input :follow, :as => :select, :collection => [[bt("follow",'Menu'), "true"], [bt("nofollow",'Menu'), "false"]], :include_blank => false
22
- = f.input :parent_id, :collection => @menu.parent_tree.collect{|m| [m.name, m.id]}, include_blank: false, disabled: !@menu.display_editable_field?('parent_id')
22
+ = f.input :parent_id, :collection => @menu.parent_tree.collect{|m| ["#{'-' * m.ancestry.count('/')}#{m.name}", m.id]}, include_blank: false, disabled: !@menu.display_editable_field?('parent_id')
23
23
 
24
24
  .row-fluid
25
25
  %label.form-label.span2
@@ -1,8 +1,14 @@
1
1
  - cache [:tree, menu] do
2
- div class=("menu_div active_#{menu.active} visible_#{menu.visible} fake_#{menu.fake}")
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
5
  = "#{menu.name} (ID: #{menu.id})"
6
+ span.menu_details
7
+ span.edit_buttons
8
+ - if menu.fake && !menu.parent.blank? && menu.children.empty?
9
+ = table_controls_delete_btn(obj_url(menu.class, menu), btc('confirm', Mokio::Menu))
10
+ - else
11
+ span.blank-delete
6
12
  - else
7
13
  - if menu.invisible_content
8
14
  span.warning
@@ -6,6 +6,7 @@
6
6
  h4
7
7
  span= bt("index_title", Mokio::Menu)
8
8
  = btn_new( bt("index_add_new", Mokio::Menu), new_url(Mokio::Menu) )
9
+ = btn_new( bt("index_add_new_menu_position", Mokio::Menu), new_menu_position_menus_url(Mokio::Menu) )
9
10
 
10
11
  - if @menus.present?
11
12
  ol#menusList.sortable
@@ -0,0 +1,21 @@
1
+ .span12
2
+ = render :partial => "mokio/common/notice"
3
+ .box
4
+ = box_title do
5
+ = bt("new_menu_position_title", @menu.class)
6
+ = common_form do
7
+ .row-fluid
8
+ = simple_form_for @menu, :url => create_menu_position_menus_path, :html => { :class => 'form-horizontal' } do |f|
9
+
10
+ .row-fluid
11
+ = f.hidden_field :fake, :value => true
12
+ = f.input :lang_id, collection: Mokio::Lang.all.collect{|lang| [bt(lang.name), lang.id]}, include_blank: false, disabled: !@menu.display_editable_field?('lang_id')
13
+ = f.input :name
14
+
15
+
16
+ - cache [:form_buttons, obj] do
17
+ .form-actions
18
+ = btn_submit bt("save")
19
+ = btn_submit bt("save_and_create_new"), true
20
+ = btn_cancel "#{engine_root}#{obj.class.to_s.tableize.gsub("mokio/", "")}"
21
+
@@ -182,6 +182,7 @@ en:
182
182
  content_management: Content management
183
183
  page_elements: Site elements
184
184
  settings: Settings
185
+ new_menu_position: New menu position
185
186
 
186
187
  static_modules:
187
188
  actions: Actions
@@ -296,8 +297,9 @@ en:
296
297
  not_updated: "Menu <strong>'%{title}'</strong> has NOT been saved"
297
298
  not_deleted: "Menu <strong>'%{title}'</strong> has NOT beed deleted"
298
299
  index_title: Menu management
299
- index_add_new: Add menu
300
+ index_add_new: Add menu element
300
301
  new_title: "New menu element"
302
+ index_add_new_menu_position: Add menu position
301
303
  edit_title: "Edit menu element"
302
304
  copy_title: "Copy menu element"
303
305
  save: Save
@@ -319,6 +321,7 @@ en:
319
321
  type: Type
320
322
  filter: filter ...
321
323
  blocks: "Reusable blocks"
324
+ new_menu_position_title: "New menu position"
322
325
 
323
326
  pic_galleries:
324
327
  active: Active
@@ -182,6 +182,7 @@ pl:
182
182
  content_management: Zarządzanie treścią
183
183
  page_elements: Elementy strony
184
184
  settings: Ustawienia
185
+ new_menu_position: Nowa pozycja dla menu
185
186
 
186
187
  static_modules:
187
188
  actions: Akcje
@@ -296,7 +297,8 @@ pl:
296
297
  not_updated: "Menu <strong>'%{title}'</strong> nie zostało poprawnie zapisane."
297
298
  not_deleted: "Menu <strong>'%{title}'</strong> nie zostało usunięte."
298
299
  index_title: Zarządzanie menu
299
- index_add_new: Dodaj menu
300
+ index_add_new: Dodaj element menu
301
+ index_add_new_menu_position: Dodaj pozycję dla menu
300
302
  new_title: "Nowy element menu"
301
303
  edit_title: "Edytuj element menu"
302
304
  copy_title: "Kopiuj element menu"
@@ -319,6 +321,7 @@ pl:
319
321
  type: Typ
320
322
  filter: wyszukaj treść ...
321
323
  blocks: Bloki
324
+ new_menu_position_title: Nowa pozycja dla menu
322
325
 
323
326
  pic_galleries:
324
327
  active: Włączona
@@ -9,11 +9,14 @@ Mokio::Engine.routes.draw do
9
9
  member do
10
10
  get :update_menu_breadcrumps
11
11
  get :copy
12
+
12
13
  end
13
14
 
14
15
  collection do
15
16
  post :sort
16
- get :lang_changed
17
+ get :lang_changed
18
+ get :new_menu_position
19
+ post :create_menu_position
17
20
  end
18
21
  end
19
22
 
@@ -23,7 +26,7 @@ Mokio::Engine.routes.draw do
23
26
  resources :static_modules do
24
27
  member do
25
28
  get :copy
26
- get :update_active
29
+ post :update_active
27
30
  end
28
31
  end
29
32
 
@@ -133,7 +136,7 @@ Mokio::Engine.routes.draw do
133
136
 
134
137
  resources :module_positions do
135
138
  member do
136
- get :update_active
139
+ post :update_active
137
140
  get :copy
138
141
  end
139
142
  end
@@ -1,6 +1,6 @@
1
1
  class AddMokioToApplication < ActiveRecord::Migration
2
2
  def change
3
- create_table "mokio_available_modules", force: true do |t|
3
+ create_table "mokio_available_modules" do |t|
4
4
  t.datetime "created_at"
5
5
  t.datetime "updated_at"
6
6
  t.integer "module_position_id"
@@ -10,7 +10,7 @@ class AddMokioToApplication < ActiveRecord::Migration
10
10
  add_index "mokio_available_modules", ["module_position_id"], name: "index_mokio_available_modules_on_module_position_id", using: :btree
11
11
  add_index "mokio_available_modules", ["static_module_id"], name: "index_mokio_available_modules_on_static_module_id", using: :btree
12
12
 
13
- create_table "ckeditor_assets", force: true do |t|
13
+ create_table "ckeditor_assets" do |t|
14
14
  t.string "data_file_name", null: false
15
15
  t.string "data_content_type"
16
16
  t.integer "data_file_size"
@@ -27,7 +27,7 @@ class AddMokioToApplication < ActiveRecord::Migration
27
27
  add_index "ckeditor_assets", ["assetable_type", "type", "assetable_id"], name: "idx_ckeditor_assetable_type", using: :btree
28
28
 
29
29
 
30
- create_table "mokio_contact_templates", force: true do |t|
30
+ create_table "mokio_contact_templates" do |t|
31
31
  t.text "tpl"
32
32
  t.datetime "created_at"
33
33
  t.datetime "updated_at"
@@ -36,7 +36,7 @@ class AddMokioToApplication < ActiveRecord::Migration
36
36
 
37
37
  add_index "mokio_contact_templates", ["contact_id"], name: "index_mokio_contact_templates_on_contact_id", using: :btree
38
38
 
39
- create_table "mokio_content_links", force: true do |t|
39
+ create_table "mokio_content_links" do |t|
40
40
  t.integer "content_id"
41
41
  t.integer "menu_id"
42
42
  t.integer "seq"
@@ -44,7 +44,7 @@ class AddMokioToApplication < ActiveRecord::Migration
44
44
 
45
45
  add_index "mokio_content_links", ["content_id", "menu_id"], name: "index_mokio_content_links_on_content_id_and_menu_id", unique: true, using: :btree
46
46
 
47
- create_table "mokio_contents", force: true do |t|
47
+ create_table "mokio_contents" do |t|
48
48
  t.string "title"
49
49
  t.text "intro"
50
50
  t.text "content"
@@ -71,7 +71,7 @@ class AddMokioToApplication < ActiveRecord::Migration
71
71
  add_index "mokio_contents", ["gmap_id"], name: "index_mokio_contents_on_gmap_id", using: :btree
72
72
  add_index "mokio_contents", ["meta_id"], name: "index_mokio_contents_on_meta_id", using: :btree
73
73
 
74
- create_table "mokio_data_files", force: true do |t|
74
+ create_table "mokio_data_files" do |t|
75
75
  t.string "name"
76
76
  t.string "data_file"
77
77
  t.integer "download_count", default: 0
@@ -92,7 +92,7 @@ class AddMokioToApplication < ActiveRecord::Migration
92
92
 
93
93
  add_index "mokio_data_files", ["content_id"], name: "index_mokio_data_files_on_content_id", using: :btree
94
94
 
95
- create_table "mokio_gmaps", force: true do |t|
95
+ create_table "mokio_gmaps" do |t|
96
96
  t.string "full_address"
97
97
  t.string "street_number"
98
98
  t.string "route"
@@ -112,7 +112,7 @@ class AddMokioToApplication < ActiveRecord::Migration
112
112
  add_index "mokio_gmaps", ["lat"], name: "index_mokio_gmaps_on_lat", using: :btree
113
113
  add_index "mokio_gmaps", ["lng"], name: "index_mokio_gmaps_on_lng", using: :btree
114
114
 
115
- create_table "mokio_langs", force: true do |t|
115
+ create_table "mokio_langs" do |t|
116
116
  t.string "name"
117
117
  t.string "shortname"
118
118
  t.boolean "active"
@@ -121,7 +121,7 @@ class AddMokioToApplication < ActiveRecord::Migration
121
121
  t.datetime "updated_at"
122
122
  end
123
123
 
124
- create_table "mokio_menus", force: true do |t|
124
+ create_table "mokio_menus" do |t|
125
125
  t.string "name"
126
126
  t.boolean "active", default: true
127
127
  t.integer "seq"
@@ -148,7 +148,7 @@ class AddMokioToApplication < ActiveRecord::Migration
148
148
  add_index "mokio_menus", ["meta_id"], name: "index_mokio_menus_on_meta_id", using: :btree
149
149
  add_index "mokio_menus", ["slug"], name: "index_mokio_menus_on_slug", unique: true, using: :btree
150
150
 
151
- create_table "mokio_meta", force: true do |t|
151
+ create_table "mokio_meta" do |t|
152
152
  t.string "g_title"
153
153
  t.string "g_desc"
154
154
  t.string "g_keywords"
@@ -164,14 +164,14 @@ class AddMokioToApplication < ActiveRecord::Migration
164
164
  t.datetime "updated_at"
165
165
  end
166
166
 
167
- create_table "mokio_module_positions", force: true do |t|
167
+ create_table "mokio_module_positions" do |t|
168
168
  t.string "name"
169
169
  t.string "tpl"
170
170
  t.datetime "created_at"
171
171
  t.datetime "updated_at"
172
172
  end
173
173
 
174
- create_table "mokio_recipients", force: true do |t|
174
+ create_table "mokio_recipients" do |t|
175
175
  t.string "email", null: false
176
176
  t.boolean "active", default: true
177
177
  t.datetime "created_at"
@@ -181,7 +181,7 @@ class AddMokioToApplication < ActiveRecord::Migration
181
181
 
182
182
  add_index "mokio_recipients", ["contact_id"], name: "index_mokio_recipients_on_contact_id", using: :btree
183
183
 
184
- create_table "mokio_selected_modules", force: true do |t|
184
+ create_table "mokio_selected_modules" do |t|
185
185
  t.integer "available_module_id"
186
186
  t.integer "menu_id"
187
187
  t.integer "seq"
@@ -189,7 +189,7 @@ class AddMokioToApplication < ActiveRecord::Migration
189
189
  t.datetime "updated_at"
190
190
  end
191
191
 
192
- create_table "mokio_static_modules", force: true do |t|
192
+ create_table "mokio_static_modules" do |t|
193
193
  t.integer "available_modules_id"
194
194
  t.string "title"
195
195
  t.text "content"
@@ -207,7 +207,7 @@ class AddMokioToApplication < ActiveRecord::Migration
207
207
  t.text "intro"
208
208
  end
209
209
 
210
- create_table "mokio_users", force: true do |t|
210
+ create_table "mokio_users" do |t|
211
211
  t.string "email", default: "", null: false
212
212
  t.string "encrypted_password", default: "", null: false
213
213
  t.string "reset_password_token"
@@ -71,6 +71,19 @@ module Mokio
71
71
  render :nothing => true
72
72
  end
73
73
 
74
+ # Renders form for creating menu positon (fake menu - direct child of a lang root)
75
+
76
+ def new_menu_position
77
+ @menu = Mokio::Menu.new
78
+ end
79
+
80
+ def create_menu_position
81
+ parent = Mokio::Menu.where(lang_id: params[:menu][:lang_id], ancestry: nil).first
82
+ params[:menu][:parent_id] = parent.id
83
+ params[:menu][:deletable] = true
84
+ create
85
+ end
86
+
74
87
  private
75
88
  #
76
89
  # Method to initialize menu's dual select boxes
@@ -109,7 +122,17 @@ module Mokio
109
122
 
110
123
  def transform_modules #:doc:
111
124
  if !params[:menu][:available_module_ids].nil?
112
- params[:menu][:available_module_ids] = params[:menu][:available_module_ids].values.flatten
125
+ av_module_ids = params[:menu][:available_module_ids].values.flatten
126
+
127
+ # modules that are always displayed are not saved as selected_modules
128
+
129
+ av_modules = AvailableModule.where('id IN (?)', av_module_ids)
130
+ av_modules.each do |mod|
131
+ if mod.static_module.always_displayed
132
+ av_module_ids.delete(mod.id.to_s)
133
+ end
134
+ end
135
+ params[:menu][:available_module_ids] = av_module_ids
113
136
  end
114
137
  end
115
138
 
@@ -146,7 +169,7 @@ module Mokio
146
169
  # Never trust parameters from the scary internet, only allow the white list through.
147
170
  #
148
171
  def menu_params #:doc:
149
- params[:menu].permit(:name, :seq, :target, :external_link, :follow, :parent_id, :active, :visible, :description, :lang_id, :content_ids => [],:available_module_ids => [],
172
+ params[:menu].permit(:name, :seq, :target, :external_link, :follow, :parent_id, :active, :visible, :description, :lang_id, :fake, :content_ids => [],:available_module_ids => [],
150
173
  :meta_attributes => Mokio::Meta.meta_attributes)
151
174
  end
152
175
  end
@@ -21,7 +21,7 @@ module Mokio
21
21
  # Get recipient_id's for given email
22
22
  #
23
23
  def recipient_emails=(emails)
24
- self.recipient_ids = Mokio::Recipient.ids_from_emails(emails)
24
+ self.recipients = emails.delete(' ').split(',').map {|m| Mokio::Recipient.new(email: m) }
25
25
  end
26
26
 
27
27
  #
@@ -98,6 +98,7 @@ module Mokio
98
98
  # Returns list of contents available for assignment to given menu element (based on lang_id) ordered by title
99
99
  #
100
100
  def available_contents
101
+ raise "NoLangDefinedException" if Mokio::Lang.count < 1
101
102
  if lang_id.nil? || lang_id == 0
102
103
  Mokio::Content.lang(Mokio::Lang.first.id).order(:title) - contents
103
104
  else
@@ -202,7 +203,7 @@ module Mokio
202
203
  m = self
203
204
  slug = m.slug
204
205
  unless m.parent.nil? || slug.nil?
205
- while !m.parent.fake
206
+ while m.parent && !m.parent.fake
206
207
  slug = m.parent.slug + "/" + slug
207
208
  m = m.parent
208
209
  end
@@ -11,15 +11,6 @@ module Mokio
11
11
  belongs_to :contact
12
12
  validates :email, :email => true
13
13
  end
14
-
15
- module ClassMethods
16
- #
17
- # Get ids from given emails
18
- #
19
- def ids_from_emails(emails)
20
- emails.delete(' ').split(',').map {|m| Mokio::Recipient.create(email: m).id }
21
- end
22
- end
23
14
  end
24
15
  end
25
16
  end
@@ -85,5 +85,13 @@ module Mokio
85
85
  initializer "mokio.views" do |app|
86
86
  app.config.views_config = Mokio::TemplateRenderer.read_config
87
87
  end
88
+
89
+ config.generators do |g|
90
+ g.test_framework :rspec, :fixture => false
91
+ g.fixture_replacement :factory_girl, :dir => 'spec/factories'
92
+ g.assets false
93
+ g.helper false
94
+ end
95
+
88
96
  end
89
97
  end