cloudrider 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -1
  3. data/cloudrider.gemspec +0 -3
  4. data/generica/app/assets/javascripts/adapters/admin/taxon.js.em +2 -0
  5. data/generica/app/assets/javascripts/components/hero-splash.js.em +1 -15
  6. data/generica/app/assets/javascripts/components/products-showcase.js.em +6 -0
  7. data/generica/app/assets/javascripts/components/select-locale.js.em +2 -2
  8. data/generica/app/assets/javascripts/components/tr-span.js.em +1 -0
  9. data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +27 -2
  10. data/generica/app/assets/javascripts/components/tree/taxon-wrapper.js.em +5 -18
  11. data/generica/app/assets/javascripts/config/i18n-translations.js.ls +6 -2
  12. data/generica/app/assets/javascripts/config/router.js.ls +4 -1
  13. data/generica/app/assets/javascripts/controllers/admin/messages/index_controller.js.em +10 -0
  14. data/generica/app/assets/javascripts/controllers/admin/product/edit_controller.js.em +10 -1
  15. data/generica/app/assets/javascripts/controllers/admin/products/new_controller.js.em +6 -0
  16. data/generica/app/assets/javascripts/controllers/admin/taxon/edit_controller.js.em +17 -0
  17. data/generica/app/assets/javascripts/controllers/admin/taxons/new_controller.js.em +25 -0
  18. data/generica/app/assets/javascripts/controllers/messages/new_controller.js.em +16 -0
  19. data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +5 -8
  20. data/generica/app/assets/javascripts/helpers/hash_ex.js.ls +6 -0
  21. data/generica/app/assets/javascripts/helpers/string_ex.js.ls +1 -1
  22. data/generica/app/assets/javascripts/models/admin/product.js.em +2 -0
  23. data/generica/app/assets/javascripts/models/admin/taxon.js.em +4 -1
  24. data/generica/app/assets/javascripts/models/message.js.em +7 -0
  25. data/generica/app/assets/javascripts/models/product.js.em +7 -2
  26. data/generica/app/assets/javascripts/models/taxon.js.em +3 -5
  27. data/generica/app/assets/javascripts/routes/admin/messages/index_route.js.em +1 -0
  28. data/generica/app/assets/javascripts/routes/admin/taxon_route.js.em +3 -0
  29. data/generica/app/assets/javascripts/routes/admin/taxons/index_route.js.em +1 -1
  30. data/generica/app/assets/javascripts/routes/admin/taxons/new_route.js.em +2 -0
  31. data/generica/app/assets/javascripts/routes/index_route.js.em +3 -2
  32. data/generica/app/assets/javascripts/routes/products/index_route.js.em +1 -1
  33. data/generica/app/assets/javascripts/templates/admin.emblem +17 -5
  34. data/generica/app/assets/javascripts/templates/admin/messages/index.emblem +19 -0
  35. data/generica/app/assets/javascripts/templates/admin/messages/slice.emblem +12 -0
  36. data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +23 -6
  37. data/generica/app/assets/javascripts/templates/admin/products/new.emblem +17 -0
  38. data/generica/app/assets/javascripts/templates/admin/products/slice.emblem +6 -1
  39. data/generica/app/assets/javascripts/templates/admin/taxon/edit.emblem +36 -0
  40. data/generica/app/assets/javascripts/templates/admin/taxons/index.emblem +1 -1
  41. data/generica/app/assets/javascripts/templates/admin/taxons/new.emblem +40 -0
  42. data/generica/app/assets/javascripts/templates/admin/translations/index.emblem +1 -1
  43. data/generica/app/assets/javascripts/templates/components/product-display.emblem +4 -0
  44. data/generica/app/assets/javascripts/templates/components/product-listing.emblem +9 -0
  45. data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +1 -1
  46. data/generica/app/assets/javascripts/templates/components/site-nav/_top-nav.emblem +1 -1
  47. data/generica/app/assets/javascripts/templates/components/table-booths.emblem +3 -65
  48. data/generica/app/assets/javascripts/templates/components/tree-taxon-li.emblem +11 -3
  49. data/generica/app/assets/javascripts/templates/components/tree-taxon-ul.emblem +6 -7
  50. data/generica/app/assets/javascripts/templates/components/tree-taxon-wrapper.emblem +2 -2
  51. data/generica/app/assets/javascripts/templates/employees/index.emblem +32 -0
  52. data/generica/app/assets/javascripts/templates/index.emblem +2 -1
  53. data/generica/app/assets/javascripts/templates/messages/new.emblem +43 -0
  54. data/generica/app/assets/javascripts/templates/products/product/show.emblem +8 -0
  55. data/generica/app/assets/javascripts/transforms/form_data_transformer.js.ls +4 -0
  56. data/generica/app/assets/stylesheets/apiv1/_admin.css.scss +1 -0
  57. data/generica/app/assets/stylesheets/apiv1/admin/messages/_index.css.scss +34 -0
  58. data/generica/app/assets/stylesheets/apiv1/components/_product-display.css.scss +24 -0
  59. data/generica/app/assets/stylesheets/apiv1/components/_product-listing.css.scss +27 -2
  60. data/generica/app/assets/stylesheets/apiv1/components/_table-booths.css.scss +10 -0
  61. data/generica/app/assets/stylesheets/apiv1/components/_tree-taxon-wrapper.css.scss +37 -22
  62. data/generica/app/assets/stylesheets/apiv1/products/product/_show.css.scss +24 -0
  63. data/generica/app/assets/stylesheets/apiv1/shared/_constants.css.scss +2 -2
  64. data/generica/app/controllers/admin/taxons/create_controller.rb +26 -0
  65. data/generica/app/controllers/apiv1/i18n_translations/index_controller.rb +9 -5
  66. data/generica/app/controllers/apiv1/messages/create_controller.rb +17 -0
  67. data/generica/app/controllers/apiv1/messages/index_controller.rb +18 -0
  68. data/generica/app/controllers/apiv1/products/index_controller.rb +1 -1
  69. data/generica/app/controllers/apiv1/taxons/destroy_controller.rb +9 -0
  70. data/generica/app/controllers/apiv1/taxons/index_controller.rb +1 -0
  71. data/generica/app/controllers/apiv1/taxons/update_controller.rb +28 -0
  72. data/generica/app/controllers/apiv1/translations/create_controller.rb +5 -4
  73. data/generica/app/controllers/apiv1/translations/update_controller.rb +2 -2
  74. data/generica/app/models/admin/product_modifier.rb +16 -3
  75. data/generica/app/models/admin/taxon_factory.rb +23 -0
  76. data/generica/app/models/admin/taxon_relationships_factory.rb +32 -0
  77. data/generica/app/models/apiv1/employee.rb +1 -2
  78. data/generica/app/models/apiv1/message.rb +24 -0
  79. data/generica/app/models/apiv1/messages_machine.rb +31 -0
  80. data/generica/app/models/apiv1/product.rb +33 -13
  81. data/generica/app/models/apiv1/products_machine.rb +9 -1
  82. data/generica/app/models/apiv1/taxon.rb +8 -2
  83. data/generica/app/models/apiv1/translation.rb +73 -14
  84. data/generica/app/models/i18n/backend/active_record.rb +49 -0
  85. data/generica/app/varissets/javascripts/templates/components/introductory-lobby.emblem.erb +15 -1
  86. data/generica/app/varissets/javascripts/templates/components/table-booths.emblem.erb +39 -0
  87. data/generica/app/varissets/stylesheets/apiv1/components/_introductory-lobby.css.scss.erb +15 -1
  88. data/generica/app/varissets/stylesheets/apiv1/components/_table-booths.css.scss.erb +71 -0
  89. data/generica/config/initializers/i18n_backend.rb +7 -0
  90. data/generica/config/routes.rb +5 -2
  91. data/generica/db/migrate/20141010215459_create_apiv1_translations.rb +3 -1
  92. data/generica/db/migrate/20141105231548_add_showcase_priority_to_apiv1_products.rb +5 -0
  93. data/generica/db/migrate/20141107174821_create_apiv1_messages.rb +12 -0
  94. data/generica/db/schema.rb +11 -16
  95. data/generica/lib/tasks/production.rake +2 -1
  96. data/generica/spec/controllers/admin/taxons/create_controller_spec.rb +44 -0
  97. data/generica/spec/controllers/apiv1/messages/index_controller_spec.rb +5 -0
  98. data/generica/spec/controllers/apiv1/taxons/index_controller_spec.rb +59 -0
  99. data/generica/spec/controllers/apiv1/taxons/update_controller_spec.rb +54 -0
  100. data/generica/spec/controllers/apiv1/translations/create_controller_spec.rb +50 -0
  101. data/generica/spec/controllers/apiv1/translations/update_controller_spec.rb +54 -0
  102. data/generica/spec/factories/apiv1/product_factory.rb +12 -11
  103. data/generica/spec/models/admin/product_modifier_spec.rb +32 -0
  104. data/generica/spec/models/admin/taxon_relationships_factory_spec.rb +49 -0
  105. data/generica/spec/models/apiv1/message_spec.rb +16 -0
  106. data/generica/spec/models/apiv1/product_spec.rb +13 -12
  107. data/generica/spec/models/apiv1/translation_spec.rb +41 -0
  108. data/generica/spec/models/i18n/backend/active_record_spec.rb +27 -0
  109. data/lib/cloudrider/apiv1/base.rb +4 -4
  110. data/lib/cloudrider/apiv1/introductory_lobby_component.rb +1 -0
  111. data/lib/cloudrider/apiv1/introductory_lobby_sass.rb +9 -0
  112. data/lib/cloudrider/apiv1/table_booths_component.rb +6 -0
  113. data/lib/cloudrider/master_context.rb +105 -0
  114. data/lib/cloudrider/version.rb +1 -1
  115. metadata +43 -31
  116. data/generica/app/assets/javascripts/components/products-showcase.js.ls +0 -5
  117. data/generica/config/locales/ar.yml +0 -78
  118. data/generica/config/locales/ca.yml +0 -78
  119. data/generica/config/locales/cs.yml +0 -78
  120. data/generica/config/locales/da.yml +0 -78
  121. data/generica/config/locales/de.yml +0 -78
  122. data/generica/config/locales/el.yml +0 -78
  123. data/generica/config/locales/en.yml +0 -78
  124. data/generica/config/locales/es.yml +0 -78
  125. data/generica/config/locales/fi.yml +0 -78
  126. data/generica/config/locales/fr.yml +0 -78
  127. data/generica/config/locales/hu.yml +0 -78
  128. data/generica/config/locales/id.yml +0 -78
  129. data/generica/config/locales/is.yml +0 -78
  130. data/generica/config/locales/it.yml +0 -78
  131. data/generica/config/locales/ja.yml +0 -78
  132. data/generica/config/locales/ko.yml +0 -78
  133. data/generica/config/locales/ms.yml +0 -78
  134. data/generica/config/locales/nl.yml +0 -78
  135. data/generica/config/locales/no.yml +0 -78
  136. data/generica/config/locales/pl.yml +0 -78
  137. data/generica/config/locales/pt.yml +0 -78
  138. data/generica/config/locales/ru.yml +0 -78
  139. data/generica/config/locales/sv.yml +0 -78
  140. data/generica/config/locales/th.yml +0 -78
  141. data/generica/config/locales/tr.yml +0 -78
  142. data/generica/config/locales/zh-CN.yml +0 -78
  143. data/generica/config/locales/zh-TW.yml +0 -78
  144. data/lib/cloudrider/file_orders_maker.rb +0 -24
@@ -1,9 +1,8 @@
1
- if adminMode
1
+ if rootTaxon.children.isPending
2
2
  .tree-taxon-li
3
- link-to "admin.translations.new" class="taxon-interactor admin-mode"
4
- .view
5
- span.spacebar
6
- i.fa.fa-plus
7
- tr-span en="new taxon"
8
- each taxon in taxons
3
+ .view
4
+ span.spacebar
5
+ i.fa.fa-spin.fa-cog
6
+ tr-span en="loading"
7
+ each taxon in rootTaxon.children
9
8
  tree-taxon-li taxon=taxon activeTaxons=activeTaxons adminMode=adminMode
@@ -1,3 +1,3 @@
1
1
  h2.wrapper-title
2
- tr-span en="browse and search"
3
- tree-taxon-ul taxons=rootGenuses activeTaxons=activeTaxons adminMode=adminMode
2
+ tr-span en="categories"
3
+ tree-taxon-ul rootTaxon=rootTaxon activeTaxons=activeTaxons adminMode=adminMode
@@ -0,0 +1,32 @@
1
+ .row
2
+ .small-12.columns
3
+ h2.capitalize.align-right
4
+ tr-span en="our team"
5
+ .row
6
+ each contact in model
7
+ .small-12.medium-6.columns
8
+ .business-card.panel.radius
9
+ .text-right
10
+ .name.capitalize= contact.personName
11
+ .job= contact.employeeTitle
12
+
13
+ .text-left
14
+ .info
15
+ span.bold.capitalize.colon
16
+ tr-span en="email"
17
+ span.prespace= contact.email
18
+ .info
19
+ span.bold.capitalize.colon
20
+ tr-span en="phone"
21
+ span.prespace= contact.phoneNumber
22
+
23
+ else
24
+ .small-12.medium-6.columns
25
+ .business-card.panel.radius
26
+ .text-right
27
+ .name
28
+ i.fa.fa-cog.fa-spin
29
+ span.capitalize.prespace
30
+ tr-span en="loading employees"
31
+ .job
32
+ tr-span en="or perhaps no employees have been listed"
@@ -4,4 +4,5 @@ introductory-lobby id="about"
4
4
 
5
5
  products-showcase id="products" products=model.products
6
6
 
7
- table-booths id="contacts" contacts=model.employees
7
+ table-booths id="contacts" contacts=model.employees message=model.message
8
+
@@ -0,0 +1,43 @@
1
+ .row
2
+ .small-12.columns
3
+ h2.capitalize.white.align-left
4
+ tr-span en="contact us"
5
+ if alreadySubmitted
6
+ .thank-you-card
7
+ tr-span en="your message has been submitted"
8
+
9
+ else
10
+ form-for errors=failureReason submit="formSubmitted"
11
+ .input-section attr-name="fromCompany"
12
+ label.form-label
13
+ span.capitalize.white
14
+ span.asterisk
15
+ tr-span en="your company"
16
+ Ember.TextField value=model.fromCompany type="text" placeholder="ex. Jack Smith"
17
+
18
+ .input-section attr-name="senderEmail"
19
+ label.form-label
20
+ span.capitalize.white
21
+ span.asterisk
22
+ tr-span en="company email"
23
+ Ember.TextField value=model.senderEmail type="email" placeholder="ex. jsmith@gmail.com"
24
+
25
+ .input-section attr-name="subjectText"
26
+ label.form-label
27
+ span.capitalize.white
28
+ span.asterisk
29
+ tr-span en="subject"
30
+ Ember.TextField value=model.subjectText type="text"
31
+
32
+ .input-section attr-name="message"
33
+ label.form-label
34
+ span.capitalize.white
35
+ span.asterisk
36
+ tr-span en="message"
37
+ Ember.TextArea value=model.message
38
+
39
+ .button-forms
40
+ promise-button model=model class="button expand"
41
+ span.capitalize
42
+ i.fa.fa-check
43
+ tr-span en="submit"
@@ -40,6 +40,14 @@
40
40
  tr-span en="quality"
41
41
  dd
42
42
  span= product.quality
43
+ if product.taxons
44
+ .row
45
+ .small-12.columns
46
+ h4.tags.capitalize
47
+ tr-span en="category tags"
48
+ .taxon-tags
49
+ each taxon in product.taxons
50
+ span.tag= taxon.taxonName
43
51
  if product.others
44
52
  .row
45
53
  .small-12.columns
@@ -1,4 +1,7 @@
1
1
  class Apiv1.FormDataTransformer
2
+ _is-integer = (number) ->
3
+ _.isFinite(parseInt number) and (parseFloat(number) % 1 is 0)
4
+
2
5
  _is-form-data-primitive = (data) ->
3
6
  (data instanceof File) or (typeof data is "string") or (typeof data is "number")
4
7
 
@@ -6,6 +9,7 @@ class Apiv1.FormDataTransformer
6
9
  return key if Ember.is-blank pre
7
10
  pre + "[#{key}]"
8
11
 
12
+
9
13
  @shallowify = (hash, pre="") ->
10
14
  return {} unless hash
11
15
  output = {}
@@ -1,4 +1,5 @@
1
1
  @import "apiv1/admin/contacts/index";
2
+ @import "apiv1/admin/messages/index";
2
3
  @import "apiv1/admin/products/index";
3
4
  @import "apiv1/admin/products/new";
4
5
  @import "apiv1/admin/translations/index";
@@ -0,0 +1,34 @@
1
+ .admin-messages-index {
2
+ .actions {
3
+ @include display-flex;
4
+ @include justify-content(space-between);
5
+ @include flex-direction(row);
6
+ a {
7
+ display: block;
8
+ }
9
+ }
10
+ .summary {
11
+ @include display-flex;
12
+ @include justify-content(flex-start);
13
+ @include flex-direction(column);
14
+ padding: 0px 15px 15px 15px;
15
+ }
16
+ .view,
17
+ .date {
18
+ padding: 15px;
19
+ font-size: 1.25rem;
20
+ }
21
+ .media-text {
22
+ padding-left: 15px;
23
+ }
24
+ .admin-message-slice {
25
+ @include transition-property(background-color);
26
+ @include transition-duration(300ms);
27
+ @include transition-timing-function(ease-out);
28
+ border-bottom: 1px solid #444;
29
+ background-color: #ddd;
30
+ &:hover {
31
+ background-color: lighten(#ddd, 10%);
32
+ }
33
+ }
34
+ }
@@ -24,4 +24,28 @@
24
24
  font-size: 2rem;
25
25
  text-transform: capitalize;
26
26
  }
27
+ .taxon-tags {
28
+ padding-bottom: 15px;
29
+ }
30
+ .tag {
31
+ @include transition-property(background-color);
32
+ @include transition-duration(300ms);
33
+ @include transition-timing-function(ease-out);
34
+ background: {
35
+ color: darken(red, 25%);
36
+ }
37
+ &:hover {
38
+ background-color: darken(red, 15%);
39
+ }
40
+ &:before {
41
+ content: "+";
42
+ }
43
+ font-size: 1.15rem;
44
+ color: #ddd;
45
+ padding-left: 5px;
46
+ padding-right: 10px;
47
+ padding-top: 5px;
48
+ padding-bottom: 5px;
49
+ margin-right: 10px;
50
+ }
27
51
  }
@@ -11,8 +11,8 @@
11
11
  }
12
12
  }
13
13
  .product-image {
14
- width: 75px;
15
- max-height: 100px;
14
+ width: 100px;
15
+ max-height: 200px;
16
16
  }
17
17
  .media-texts {
18
18
  font-size: 1.45rem;
@@ -31,4 +31,29 @@
31
31
  @include align-items(center);
32
32
  border-bottom: 1px solid #bbb;
33
33
  }
34
+ .taxon-tags {
35
+ margin-top: 5px;
36
+ margin-bottom: 5px;
37
+ }
38
+ .tag {
39
+ @include transition-property(background-color);
40
+ @include transition-duration(300ms);
41
+ @include transition-timing-function(ease-out);
42
+ background: {
43
+ color: #777;
44
+ }
45
+ &:hover {
46
+ background-color: #999;
47
+ }
48
+ &:before {
49
+ content: "+";
50
+ }
51
+ font-size: 1.15rem;
52
+ color: #ddd;
53
+ padding-left: 5px;
54
+ padding-right: 10px;
55
+ padding-top: 5px;
56
+ padding-bottom: 5px;
57
+ margin-right: 10px;
58
+ }
34
59
  }
@@ -22,4 +22,14 @@
22
22
  .text-left {
23
23
  padding-top: 15px;
24
24
  }
25
+ .thank-you-card {
26
+ background: {
27
+ color: darken(green, 10%);
28
+ }
29
+ text-align: center;
30
+ color: #eee;
31
+ font-size: 2.5rem;
32
+ padding-top: 5rem;
33
+ padding-bottom: 5rem;
34
+ }
25
35
  }
@@ -3,12 +3,10 @@
3
3
  margin-left: 0px;
4
4
  }
5
5
  .expanded > .taxon-interactor {
6
- background-color: #008cba;
7
- color: lighten(#ddd, 10%);
6
+ color: darken(#43ac6a, 10%)
8
7
  }
9
8
  .selected > .taxon-interactor {
10
- background-color: #008cba;
11
- color: lighten(#ddd, 10%);
9
+ color: darken(#43ac6a, 10%);
12
10
  }
13
11
  .taxon-interactor {
14
12
  @include transition-property(background-color);
@@ -16,27 +14,30 @@
16
14
  @include transition-timing-function(ease-out);
17
15
  background-color: #ddd;
18
16
  &.admin-mode {
19
- background-color: #43ac6a;
20
- color: #ddd;
21
- }
22
- @media #{$small-only} {
23
- padding-left: 5px;
24
- }
25
- @media #{$medium-only} {
26
- padding-left: 10px;
27
- }
28
- @media #{$large-up} {
29
- padding-left: 15px;
17
+ color: #333;
30
18
  }
19
+
31
20
  &:hover {
32
21
  &:not(.admin-mode) {
33
- background-color: #008cba;
22
+ background-color: #e1e1e1;
34
23
  }
35
24
  &.admin-mode {
36
- background-color: lighten(#43ac6a, 10%);
25
+ background-color: darken(#43ac6a, 10%);
26
+ color: #eee;
37
27
  }
38
28
  }
39
29
  }
30
+ .new-child-taxon {
31
+ @media #{$small-only} {
32
+ margin-left: 5px;
33
+ }
34
+ @media #{$medium-only} {
35
+ margin-left: 10px;
36
+ }
37
+ @media #{$large-up} {
38
+ margin-left: 15px;
39
+ }
40
+ }
40
41
  .tree-taxon-ul {
41
42
  list-style: none;
42
43
  }
@@ -56,8 +57,7 @@
56
57
  @include flex-direction(row);
57
58
  @include justify-content(space-between);
58
59
  font-size: 1.25rem;
59
- padding-top: 10px;
60
- padding-bottom: 10px;
60
+
61
61
  }
62
62
  .taxon-name {
63
63
  padding-left: 10px;
@@ -70,7 +70,7 @@
70
70
  color: #ddd;
71
71
  background-color: darken(red, 10%);
72
72
  }
73
- color: darken(red, 10%);
73
+ color: darken(red, 10%);padding-right: 15px;
74
74
  }
75
75
  .edit {
76
76
  @include transition-property(background-color);
@@ -86,7 +86,22 @@
86
86
  color: darken(green, 5%);
87
87
  }
88
88
  }
89
- .view {
90
- @include flex-grow(3);
89
+ .view,
90
+ .edit,
91
+ .delete {
92
+ @media #{$small-only} {
93
+ padding-left: 5px;
94
+ padding-right: 5px;
95
+ }
96
+ @media #{$medium-only} {
97
+ padding-left: 10px;
98
+ padding-right: 10px;
99
+ }
100
+ @media #{$large-up} {
101
+ padding-left: 15px;
102
+ padding-right: 15px;
103
+ }
104
+ padding-top: 10px;
105
+ padding-bottom: 10px;
91
106
  }
92
107
  }
@@ -15,4 +15,28 @@
15
15
  margin-bottom: 15px;
16
16
  font-size: 1.45rem;
17
17
  }
18
+ .taxon-tags {
19
+ padding-bottom: 15px;
20
+ }
21
+ .tag {
22
+ @include transition-property(background-color);
23
+ @include transition-duration(300ms);
24
+ @include transition-timing-function(ease-out);
25
+ background: {
26
+ color: darken(red, 25%);
27
+ }
28
+ &:hover {
29
+ background-color: darken(red, 15%);
30
+ }
31
+ &:before {
32
+ content: "+";
33
+ }
34
+ font-size: 1.15rem;
35
+ color: #ddd;
36
+ padding-left: 5px;
37
+ padding-right: 10px;
38
+ padding-top: 5px;
39
+ padding-bottom: 5px;
40
+ margin-right: 10px;
41
+ }
18
42
  }
@@ -20,10 +20,10 @@
20
20
  text-overflow: ellipsis;
21
21
  }
22
22
  .parantheses:after {
23
- content: ")";
23
+ content: ") ";
24
24
  }
25
25
  .parantheses:before {
26
- content: "(";
26
+ content: " (";
27
27
  }
28
28
  .italic {
29
29
  font-style: italic;
@@ -0,0 +1,26 @@
1
+ class Admin::Taxons::CreateController < Admin::BaseController
2
+ def create
3
+ if _taxon_creation_success?
4
+ _taxon_factory.save!
5
+ render json: _taxon_hash
6
+ else
7
+ render json: _error_hash, status: :expectation_failed
8
+ end
9
+ end
10
+ private
11
+ def _taxon_creation_success?
12
+ _taxon_factory.satisfy_specifications?
13
+ end
14
+ def _taxon_hash
15
+ _taxon_factory.taxon_hash
16
+ end
17
+ def _error_hash
18
+ _taxon_factory.error_hash
19
+ end
20
+ def _taxon_factory
21
+ @taxon_factory ||= Admin::TaxonFactory.new _taxon_params
22
+ end
23
+ def _taxon_params
24
+ params.require(:admin_taxon)
25
+ end
26
+ end