cloudrider 0.1.2 → 0.1.3

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 (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