ecm_tags 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/ecm/tags/tagging.rb +16 -0
  3. data/config/initializers/inject_taggable_concern.rb +6 -0
  4. data/config/locales/de.yml +18 -8
  5. data/config/locales/en.yml +21 -8
  6. data/lib/ecm/tags/configuration.rb +3 -3
  7. data/lib/ecm/tags/engine.rb +0 -7
  8. data/lib/ecm/tags/version.rb +1 -1
  9. data/lib/generators/ecm/tags/install/templates/initializer.rb +10 -5
  10. data/spec/dummy/README.rdoc +28 -0
  11. data/spec/dummy/Rakefile +6 -0
  12. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  13. data/spec/dummy/app/assets/javascripts/posts.js +2 -0
  14. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
  16. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  17. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  18. data/spec/dummy/app/controllers/frontend_controller.rb +2 -0
  19. data/spec/dummy/app/controllers/posts_controller.rb +59 -0
  20. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  21. data/spec/dummy/app/helpers/posts_helper.rb +2 -0
  22. data/spec/dummy/app/models/post.rb +4 -0
  23. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/spec/dummy/app/views/posts/_form.html.erb +25 -0
  25. data/spec/dummy/app/views/posts/_post.html.erb +3 -0
  26. data/spec/dummy/app/views/posts/edit.html.erb +6 -0
  27. data/spec/dummy/app/views/posts/index.html.erb +29 -0
  28. data/spec/dummy/app/views/posts/new.html.erb +5 -0
  29. data/spec/dummy/app/views/posts/show.html.erb +14 -0
  30. data/spec/dummy/bin/bundle +3 -0
  31. data/spec/dummy/bin/rails +4 -0
  32. data/spec/dummy/bin/rake +4 -0
  33. data/spec/dummy/bin/setup +29 -0
  34. data/spec/dummy/config.ru +4 -0
  35. data/spec/dummy/config/application.rb +31 -0
  36. data/spec/dummy/config/boot.rb +5 -0
  37. data/spec/dummy/config/database.yml +25 -0
  38. data/spec/dummy/config/environment.rb +5 -0
  39. data/spec/dummy/config/environments/development.rb +41 -0
  40. data/spec/dummy/config/environments/production.rb +79 -0
  41. data/spec/dummy/config/environments/test.rb +42 -0
  42. data/spec/dummy/config/initializers/assets.rb +11 -0
  43. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  44. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  45. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  46. data/spec/dummy/config/initializers/inflections.rb +16 -0
  47. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  48. data/spec/dummy/config/initializers/session_store.rb +3 -0
  49. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  50. data/spec/dummy/config/locales/en.yml +23 -0
  51. data/spec/dummy/config/routes.rb +5 -0
  52. data/spec/dummy/config/secrets.yml +22 -0
  53. data/spec/dummy/db/development.sqlite3 +0 -0
  54. data/spec/dummy/db/migrate/20160212133931_create_ecm_tags_tags.ecm_tags.rb +11 -0
  55. data/spec/dummy/db/migrate/20160212133932_create_ecm_tags_taggings.ecm_tags.rb +18 -0
  56. data/spec/dummy/db/migrate/20160212134222_create_posts.rb +10 -0
  57. data/spec/dummy/db/schema.rb +41 -0
  58. data/spec/dummy/db/test.sqlite3 +0 -0
  59. data/spec/dummy/public/404.html +67 -0
  60. data/spec/dummy/public/422.html +67 -0
  61. data/spec/dummy/public/500.html +66 -0
  62. data/spec/dummy/public/favicon.ico +0 -0
  63. data/spec/dummy/spec/controllers/posts_controller_spec.rb +157 -0
  64. data/spec/dummy/spec/factories/posts.rb +6 -0
  65. data/spec/dummy/spec/helpers/posts_helper_spec.rb +15 -0
  66. data/spec/dummy/spec/models/post_spec.rb +5 -0
  67. data/spec/dummy/spec/requests/posts_spec.rb +10 -0
  68. data/spec/dummy/spec/routing/posts_routing_spec.rb +37 -0
  69. data/spec/dummy/spec/views/posts/edit.html.erb_spec.rb +20 -0
  70. data/spec/dummy/spec/views/posts/index.html.erb_spec.rb +22 -0
  71. data/spec/dummy/spec/views/posts/new.html.erb_spec.rb +20 -0
  72. data/spec/dummy/spec/views/posts/show.html.erb_spec.rb +16 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-Rk46EWcF9JNQvs4jamoC5UetyQe_Liydnzz339Ah5c.cache +2 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-tiBAjaN_MhRxnGs10DJTQjnj4h1yRQkeejcmBYdwJo.cache +1 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Yi2yjcAHgeIXKOYmsGlDp7Jc9-YxdBAerr4uk4uO0Q.cache +0 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3vFcUkP2kWu2iktHlcSC_OfjYi3u_BqXmoCf2gvEE2M.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4JaU4ZW9j_RMb-z_fzYbPLoZctdUv0Fzt3_U-gy3kAw.cache +1 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +2 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5P-OzgUkwyAgoOv7CZL2UfSgs4rcG7DcMYr5WUkHaZc.cache +1 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5TzYmONEI2HYkxGdPZU9iJFCuuoe70CB-i-w-KEHZv0.cache +2 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6H66m5FQazePA0g_qkHvuCMPzaPtznXdj-yAWWUtPnw.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7C_O90lo1Yi2b0Ed9bpFF6gUVqTrK_4goAv2_cdLnSI.cache +1 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8wkEYFnE3ZJ8vdlwNXJpFg1xc81ULuNYx7O-FuYA55w.cache +1 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AAiF0geR48ctD2aHAqAVSLKQFWesFqJLP-ZGPId5wWM.cache +1 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ClUHQDSdna_TRtjSG_r6jD3hQEmJ_laO_2IDDTNafGw.cache +1 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DesJkeilWecg6a2hoWgP6KtHYFXVculbTQwOY824Ov0.cache +0 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +2 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ETOLFW7z9GHBdRPSYUVj-RVoXPXxMmOc86KlwkUFXWM.cache +1 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FQvx5zKlMSn1gKaT7Elj4CgsWHC-_8FYDN_VO0vyGH4.cache +0 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I-Fn3is-YC5z6FFns4kf2DQWiNPmSh5FE6mqR4hNeqY.cache +1 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JAmHv7GyzaWXmLMT2CiP8pUuvPOX7gNlyP7DcId3xcA.cache +1 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JIV6P9o3lv6AF-6_7Yd35SryD44vS_LPdThsYeXjgQk.cache +1 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB1t0DQJfRViGhML3u0NuVlVpQHjbFYWs_SrFvbXQB0.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M76cE2oAZjvfK9meOD0uCS1k5slLFYxmtLiMykNl1oY.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MWYCQbJoVG_HtuEyKiBNUM4zGAV9pVXr6uoxvtpixrE.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +2 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q8H_klVplUAUyXyRxcoz5K3HyirGXjwxQ9-6sTKm74U.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RSK82eed7XubPBRL-4jf0eOlKgtGg-ooQXrY0F4W194.cache +0 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z_pLuEtd8bZcpv5q0r6aYNl9SP4KClCsP-i0wAOelmM.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dlQOci5ZlcWlh7tHZpxpamNwe343IjDbezrfcPEcPw0.cache +3 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/egxIcSNP_AHgCIboNW03qbGhxwrCOcPqms6nGntC7Fs.cache +0 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +2 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i18WqDjAKooAMM0YPXJRMtHBycPcmo-BU8eoqXKyfPU.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jVD7-rQv89s_Pta-2_Sf9U7i8ao1gix2Lp90ISIkasA.cache +2 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nWo2ysO8pNRVLI4LiUqzjyZyrU1cIxq20bSCDbgswdM.cache +2 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ompUzgaB0qfmoE6djKuHjLjMYlToLX0_lb6iFwWPO0o.cache +2 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +2 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pOoJAHtZ3sqU9_DaqDFTu0HPRhuSfgJDE8bdi9IVlI4.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pzyYjBHQiM-yOIhztKOpuHU7Jepq82zWJg-mzp5L418.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wJMzpOMn4cGBbHRf1uOBEApoBZag48B9djjpFhAG8mE.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wafl6XJiIk4VCd-yj42MMaao0dyAqQSTSPn0YiXvElQ.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xuNJ32gKsrwphnFigSODyGeYqNKhBBSa49ffAXRJ8jg.cache +3 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zF3sNycdAc5fpqhKKmuKS2F2Zc-OkZ-T2Qiqq4ywang.cache +0 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zMHd1CpL0ukpIS90SExzXc3eTzMQreOm__lG4fVygp8.cache +1 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zPep_9K14vA0ICucNx5t8umt9e2caMo0jvNg80b4kJs.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zt-2He-6ayIMtuqNcliVhJNUcEnCi6M39pTVaXV9VjA.cache +0 -0
  117. data/spec/factories/ecm_tags_taggings.rb +6 -0
  118. data/spec/factories/ecm_tags_tags.rb +6 -0
  119. data/spec/features/ecm/tags/search_spec.rb +19 -0
  120. data/spec/models/ecm/tags/tag_search_spec.rb +43 -0
  121. data/spec/rails_helper.rb +57 -0
  122. data/spec/spec_helper.rb +90 -0
  123. data/spec/support/capybara.rb +1 -0
  124. data/spec/support/factory_girl_rails.rb +5 -0
  125. data/spec/support/formulaic.rb +5 -0
  126. data/spec/support/shoulda_matchers.rb +8 -0
  127. metadata +120 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '089a26c830a568d80f74fba165f02f1b416c1d87'
4
- data.tar.gz: 4fab17d56300b381ff309c5e8ee55124e46388ff
3
+ metadata.gz: bbd0e62a081a5db9b51441c38d589727952cc4a8
4
+ data.tar.gz: b1658ebc6c92982338b9735f998c198667f32023
5
5
  SHA512:
6
- metadata.gz: 6bf89a3f411561807f0c0a3ad09fb3e5e53b5471777f1eb04c53698773dd3a2a4ace64d72aaa932c01cde63713a8f6c58d6c60399aa4e75e298acb18f4ea8ad6
7
- data.tar.gz: 0debb306e7d7ba1af57035e1da4187b286fe44179f9e81e46a3b917a1a1055807f8b065779063df2f0bf24b3a026e57101242113f209578ce48cfc89463dae41
6
+ metadata.gz: 2102c9d667f4ac5f1e4125990e696e68f49a61986d4c1b66656ea4a7311604d82cc134b452d4fcb5fabdb353b567450dcdae875805b81f524f6162704981c335
7
+ data.tar.gz: 9eb61fc02a79138736602d7ed1b85e773b035276349bd10c2450b99b28dfd09fb91889e8a31ea8a5137c03847d973848ad26ab74c97fea5619dc72cfb692e07b
@@ -3,5 +3,21 @@ module Ecm::Tags
3
3
  def human
4
4
  "#{taggable} - #{tag}"
5
5
  end
6
+
7
+ def taggable=(taggable)
8
+ if taggable.is_a?(String)
9
+ super(GlobalID::Locator.locate(taggable))
10
+ else
11
+ super
12
+ end
13
+ end
14
+
15
+ def tagger=(tagger)
16
+ if tagger.is_a?(String)
17
+ super(GlobalID::Locator.locate(tagger))
18
+ else
19
+ super
20
+ end
21
+ end
6
22
  end
7
23
  end
@@ -0,0 +1,6 @@
1
+ Rails.configuration.to_prepare do
2
+ Ecm::Tags::Configuration.taggable_classes.each do |taggable|
3
+ puts "Including Model::Ecm::Tags::TaggableConcern in #{taggable}"
4
+ taggable.send(:include, Model::Ecm::Tags::TaggableConcern)
5
+ end
6
+ end
@@ -4,26 +4,36 @@ de:
4
4
  attributes:
5
5
  tag_list: Tags
6
6
  activerecord:
7
+ models:
8
+ ecm/tags/tag:
9
+ one: Tag
10
+ other: Tags
11
+ ecm/tags/tagging:
12
+ one: Tagging
13
+ other: Taggings
7
14
  attributes:
8
15
  ecm/tags/tag:
16
+ id: ID
17
+ color: Farbe
9
18
  name: Name
10
19
  taggings_count: Getagte Objekte
11
20
  ecm/tags/tagging:
21
+ id: ID
22
+ color: Farbe
23
+ context: Kontext
24
+ tag_id: Tag
12
25
  tag: Tag
26
+ taggable_id: Getagtes Objekt
13
27
  taggable: Getagtes Objekt
28
+ taggable_type: Getagtes Objekt-Typ
29
+ tagger_id: Ersteller
14
30
  tagger: Ersteller
31
+ tagger_type: Ersteller-Typ
15
32
  created_at: Erstellt am
16
- udpated_at: Aktualisiert am
33
+ updated_at: Aktualisiert am
17
34
  ecm/tags/tag_search:
18
35
  exact: Wortgenau
19
36
  tag_list: Tags
20
- models:
21
- ecm/tags/tag:
22
- one: Tag
23
- other: Tags
24
- ecm/tags/tagging:
25
- one: Tagging
26
- other: Taggings
27
37
  ecm:
28
38
  tags:
29
39
  search_box:
@@ -4,23 +4,36 @@ en:
4
4
  attributes:
5
5
  tag_list: Tags
6
6
  activerecord:
7
+ models:
8
+ ecm/tags/tag:
9
+ one: Tag
10
+ other: Tags
11
+ ecm/tags/tagging:
12
+ one: Tagging
13
+ other: Taggings
7
14
  attributes:
8
15
  ecm/tags/tag:
16
+ id: ID
17
+ color: Color
9
18
  name: Name
10
19
  taggings_count: Tagged Items
11
20
  ecm/tags/tagging:
21
+ id: ID
22
+ color: Color
23
+ context: Context
24
+ tag_id: Tag
12
25
  tag: Tag
13
- taggable: Tagged Item
26
+ taggable_id: Taggable
27
+ taggable: Taggable
28
+ taggable_type: Taggable type
29
+ tagger_id: Tagger
30
+ tagger_type: Tagger type
14
31
  tagger: Tagger
15
32
  created_at: Created at
16
33
  udpated_at: Updated at
17
- model:
18
- ecm/tags/tag:
19
- one: Tag
20
- other: Tags
21
- ecm/tags/tag:
22
- one: Tagging
23
- other: Taggings
34
+ ecm/tags/tag_search:
35
+ exact: Exact
36
+ tag_list: Tags
24
37
  ecm:
25
38
  tags:
26
39
  search_box:
@@ -11,10 +11,10 @@ module Ecm
11
11
  mattr_accessor(:base_controller) { 'FrontendController' }
12
12
  mattr_accessor(:add_submit_button_to_search_box) { true }
13
13
  mattr_accessor(:tag_search_exact_default_value) { false }
14
- mattr_accessor(:taggable_models) { [] }
14
+ mattr_accessor(:taggable_class_names) { [] }
15
15
 
16
- def self.taggable_models
17
- @@taggable_models.map(&:constantize)
16
+ def self.taggable_classes
17
+ @@taggable_class_names.map(&:constantize)
18
18
  end
19
19
  end
20
20
  end
@@ -2,13 +2,6 @@ module Ecm
2
2
  module Tags
3
3
  class Engine < ::Rails::Engine
4
4
  isolate_namespace Ecm::Tags
5
-
6
- config.after_initialize do
7
- Configuration.taggable_models.each do |model|
8
- puts "Including Models::Ecm::Tags::TaggableConcern in #{model}"
9
- model.send(:include, Model::Ecm::Tags::TaggableConcern)
10
- end
11
- end
12
5
  end
13
6
  end
14
7
  end
@@ -1,5 +1,5 @@
1
1
  module Ecm
2
2
  module Tags
3
- VERSION = '2.1.0'.freeze
3
+ VERSION = '2.2.0'.freeze
4
4
  end
5
5
  end
@@ -6,21 +6,26 @@ Ecm::Tags.configure do |config|
6
6
  config.base_controller = '<%= base_controller_class_name %>'
7
7
 
8
8
  # Add a submit button to the tag search box.
9
- #
9
+ #
10
10
  # Default: config.add_submit_button_to_search_box = true
11
11
  #
12
12
  config.add_submit_button_to_search_box = true
13
13
 
14
14
  # Use exact search by default or not.
15
- #
15
+ #
16
16
  # Default: config.tag_search_exact_default_value = false
17
17
  #
18
18
  config.tag_search_exact_default_value = false
19
19
 
20
-
21
20
  # Specify the models to be tagged.
22
21
  #
23
- # Default: config.taggable_models = %w()
22
+ # Default: config.taggable_class_names = %w()
23
+ #
24
+ config.taggable_class_names = %w()
25
+
26
+ # Specify the models the can tag things.
24
27
  #
25
- config.taggable_models = %w()
28
+ # Default: config.tagger_class_names = %w()
29
+ #
30
+ config.tagger_class_names = %w()
26
31
  end
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,56 @@
1
+ body { background-color: #fff; color: #333; }
2
+
3
+ body, p, ol, ul, td {
4
+ font-family: verdana, arial, helvetica, sans-serif;
5
+ font-size: 13px;
6
+ line-height: 18px;
7
+ }
8
+
9
+ pre {
10
+ background-color: #eee;
11
+ padding: 10px;
12
+ font-size: 11px;
13
+ }
14
+
15
+ a { color: #000; }
16
+ a:visited { color: #666; }
17
+ a:hover { color: #fff; background-color:#000; }
18
+
19
+ div.field, div.actions {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ #notice {
24
+ color: green;
25
+ }
26
+
27
+ .field_with_errors {
28
+ padding: 2px;
29
+ background-color: red;
30
+ display: table;
31
+ }
32
+
33
+ #error_explanation {
34
+ width: 450px;
35
+ border: 2px solid red;
36
+ padding: 7px;
37
+ padding-bottom: 0;
38
+ margin-bottom: 20px;
39
+ background-color: #f0f0f0;
40
+ }
41
+
42
+ #error_explanation h2 {
43
+ text-align: left;
44
+ font-weight: bold;
45
+ padding: 5px 5px 5px 15px;
46
+ font-size: 12px;
47
+ margin: -7px;
48
+ margin-bottom: 0px;
49
+ background-color: #c00;
50
+ color: #fff;
51
+ }
52
+
53
+ #error_explanation ul li {
54
+ font-size: 12px;
55
+ list-style: square;
56
+ }
@@ -0,0 +1,5 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+ end
@@ -0,0 +1,2 @@
1
+ class FrontendController < ApplicationController
2
+ end
@@ -0,0 +1,59 @@
1
+ class PostsController < ApplicationController
2
+ before_action :set_post, only: [:show, :edit, :update, :destroy]
3
+
4
+ # GET /posts
5
+ def index
6
+ @posts = Post.all
7
+ end
8
+
9
+ # GET /posts/1
10
+ def show
11
+ end
12
+
13
+ # GET /posts/new
14
+ def new
15
+ @post = Post.new
16
+ end
17
+
18
+ # GET /posts/1/edit
19
+ def edit
20
+ end
21
+
22
+ # POST /posts
23
+ def create
24
+ @post = Post.new(post_params)
25
+
26
+ if @post.save
27
+ redirect_to @post, notice: 'Post was successfully created.'
28
+ else
29
+ render :new
30
+ end
31
+ end
32
+
33
+ # PATCH/PUT /posts/1
34
+ def update
35
+ if @post.update(post_params)
36
+ redirect_to @post, notice: 'Post was successfully updated.'
37
+ else
38
+ render :edit
39
+ end
40
+ end
41
+
42
+ # DELETE /posts/1
43
+ def destroy
44
+ @post.destroy
45
+ redirect_to posts_url, notice: 'Post was successfully destroyed.'
46
+ end
47
+
48
+ private
49
+
50
+ # Use callbacks to share common setup or constraints between actions.
51
+ def set_post
52
+ @post = Post.find(params[:id])
53
+ end
54
+
55
+ # Only allow a trusted parameter "white list" through.
56
+ def post_params
57
+ params.require(:post).permit(:title, :body)
58
+ end
59
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module PostsHelper
2
+ end
@@ -0,0 +1,4 @@
1
+ class Post < ActiveRecord::Base
2
+ # tagging
3
+ acts_as_taggable
4
+ end
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>