cloudrider 0.3.0 → 0.3.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/cloudrider.gemspec +1 -0
- data/generica/.gitignore +18 -0
- data/generica/Gemfile +8 -1
- data/generica/Gemfile.lock +3 -0
- data/generica/app/assets/javascripts/apiv1.js.ls +6 -1
- data/generica/app/assets/javascripts/components/offers-summary.js.em +2 -0
- data/generica/app/assets/javascripts/components/picture-chunk.js.em +17 -0
- data/generica/app/assets/javascripts/components/pictures-group.js.em +21 -0
- data/generica/app/assets/javascripts/components/search-and-filter.js.em +4 -0
- data/generica/app/assets/javascripts/components/site-nav.js.em +5 -1
- data/generica/app/assets/javascripts/components/taggable-field.js.em +28 -0
- data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +6 -2
- data/generica/app/assets/javascripts/controllers/index_controller.js.em +19 -2
- data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +23 -9
- data/generica/app/assets/javascripts/controllers/modals/register_controller.js.em +24 -0
- data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +23 -13
- data/generica/app/assets/javascripts/controllers/products/product/offers/new_controller.js.em +17 -0
- data/generica/app/assets/javascripts/controllers/users/offers/index_controller.js.em +10 -0
- data/generica/app/assets/javascripts/controllers/users/product/edit_controller.js.em +31 -0
- data/generica/app/assets/javascripts/controllers/users/products/index_controller.js.em +8 -0
- data/generica/app/assets/javascripts/controllers/users/products/new_controller.js.em +22 -0
- data/generica/app/assets/javascripts/controllers/users/products/slice_controller.js.em +4 -0
- data/generica/app/assets/javascripts/helpers/filte_previewer.js.ls +21 -0
- data/generica/app/assets/javascripts/helpers/listing_picture.js.em +17 -0
- data/generica/app/assets/javascripts/models/offer.js.em +9 -8
- data/generica/app/assets/javascripts/models/user.js.em +12 -0
- data/generica/app/assets/javascripts/models/users/product.js.em +12 -0
- data/generica/app/assets/javascripts/routes/application_route.js.em +10 -2
- data/generica/app/assets/javascripts/routes/products/index_route.js.em +23 -2
- data/generica/app/assets/javascripts/routes/products/product/offers/new_route.js.em +18 -0
- data/generica/app/assets/javascripts/routes/users/offers/index_route.js.em +1 -0
- data/generica/app/assets/javascripts/routes/users/product_route.js.em +3 -0
- data/generica/app/assets/javascripts/routes/users/products/index_route.js.em +3 -0
- data/generica/app/assets/javascripts/routes/users/products/new_route.js.em +3 -0
- data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +2 -0
- data/generica/app/assets/javascripts/templates/admin/products/_form-core.emblem +44 -0
- data/generica/app/assets/javascripts/templates/admin/products/new.emblem +4 -42
- data/generica/app/assets/javascripts/templates/components/offers-summary.emblem +9 -0
- data/generica/app/assets/javascripts/templates/components/picture-chunk.emblem +9 -0
- data/generica/app/assets/javascripts/templates/components/pictures-group.emblem +6 -0
- data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +5 -1
- data/generica/app/assets/javascripts/templates/components/taggable-field.emblem +1 -0
- data/generica/app/assets/javascripts/templates/modals/register.emblem +57 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/_anonymous-form.emblem +11 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/_offer-form.emblem +55 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/new.emblem +37 -0
- data/generica/app/assets/javascripts/templates/products/product/show.emblem +26 -1
- data/generica/app/assets/javascripts/templates/users.emblem +24 -0
- data/generica/app/assets/javascripts/templates/users/index.emblem +3 -0
- data/generica/app/assets/javascripts/templates/users/offers/index.emblem +25 -0
- data/generica/app/assets/javascripts/templates/users/offers/slice.emblem +31 -0
- data/generica/app/assets/javascripts/templates/users/product/edit.emblem +82 -0
- data/generica/app/assets/javascripts/templates/users/products/index.emblem +22 -0
- data/generica/app/assets/javascripts/templates/users/products/new.emblem +28 -0
- data/generica/app/assets/javascripts/templates/users/products/slice.emblem +27 -0
- data/generica/app/assets/stylesheets/apiv1/_application.css.scss +4 -0
- data/generica/app/assets/stylesheets/apiv1/components/_offers-summary.css.scss +20 -0
- data/generica/app/assets/stylesheets/apiv1/components/_pictures-group.css.scss +32 -0
- data/generica/app/assets/stylesheets/apiv1/components/_taggable-field.css.scss +32 -0
- data/generica/app/assets/stylesheets/apiv1/products/product/offers/_new.css.scss +8 -0
- data/generica/app/controllers/admin/base_controller.rb +1 -1
- data/generica/app/controllers/admin/sessions/destroy_controller.rb +16 -0
- data/generica/app/controllers/apiv1/offers/create_controller.rb +30 -0
- data/generica/app/controllers/apiv1/offers/index_controller.rb +22 -0
- data/generica/app/controllers/apiv1/offers/show_controller.rb +12 -0
- data/generica/app/controllers/apiv1/products/destroy_controller.rb +6 -0
- data/generica/app/controllers/apiv1/products/index_controller.rb +8 -2
- data/generica/app/controllers/apiv1/products/show_controller.rb +7 -3
- data/generica/app/controllers/apiv1/taxons/index_controller.rb +5 -1
- data/generica/app/controllers/apiv1/users/create_controller.rb +17 -0
- data/generica/app/controllers/apiv1/users/show_controller.rb +12 -0
- data/generica/app/controllers/apiv1/users_controller.rb +9 -0
- data/generica/app/controllers/application_controller.rb +3 -0
- data/generica/app/controllers/users/offers/create_controller.rb +26 -0
- data/generica/app/controllers/users/products/create_controller.rb +26 -0
- data/generica/app/controllers/users/products/update_controller.rb +35 -0
- data/generica/app/mailers/apiv1/aggregate_mailer.rb +13 -0
- data/generica/app/mailers/apiv1/aggregate_mailer/summary_context.rb +121 -0
- data/generica/app/mailers/apiv1/notifications_mailer.rb +19 -0
- data/generica/app/mailers/apiv1/notifications_mailer/new_offer_context.rb +53 -0
- data/generica/app/models/admin/user.rb +43 -2
- data/generica/app/models/apiv1/attachment.rb +2 -0
- data/generica/app/models/apiv1/email_object.rb +35 -0
- data/generica/app/models/apiv1/email_request.rb +107 -0
- data/generica/app/models/apiv1/offer_message.rb +53 -0
- data/generica/app/models/apiv1/offer_postboy.rb +33 -0
- data/generica/app/models/apiv1/picture.rb +2 -0
- data/generica/app/models/apiv1/product.rb +28 -6
- data/generica/app/models/apiv1/products/offer_message_factory.rb +13 -0
- data/generica/app/models/apiv1/products_machine.rb +8 -2
- data/generica/app/models/apiv1/taxon.rb +1 -1
- data/generica/app/models/apiv1/users/product_factory.rb +22 -0
- data/generica/app/models/apiv1/users/product_relationship.rb +19 -0
- data/generica/app/models/users/products/offer_factory.rb +40 -0
- data/generica/app/varissets/javascripts/templates/application.emblem.erb +2 -2
- data/generica/app/varissets/javascripts/templates/components/offers-overview.emblem.erb +1 -0
- data/generica/app/varissets/javascripts/templates/components/search-and-filter.emblem.erb +33 -0
- data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +8 -0
- data/generica/app/varissets/javascripts/templates/components/taggable-field.emblem.erb +11 -0
- data/generica/app/varissets/javascripts/templates/modals/login.emblem.erb +36 -0
- data/generica/app/varissets/javascripts/templates/products.emblem.erb +4 -0
- data/generica/app/varissets/javascripts/templates/products/index.emblem.erb +17 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/_anonymous-form.emblem.erb +11 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/_offer-form.emblem.erb +55 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/new.emblem.erb +37 -0
- data/generica/app/varissets/javascripts/templates/products/product/show.emblem.erb +108 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_offers-overview.css.scss.erb +3 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_offers_overview.css.scss.erb +3 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_search-and-filter.css.scss.erb +15 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_site-footer.css.scss.erb +23 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_taggable-field.css.scss.erb +32 -0
- data/generica/app/views/apiv1/home/index.html.haml +3 -1
- data/generica/app/views/apiv1/layouts/application.html.haml +37 -2
- data/generica/config/{database.yml.erb → database.yml.str} +3 -3
- data/generica/config/email.yml +11 -0
- data/generica/config/email_slave.god +9 -0
- data/generica/config/initializers/premailer.rb +1 -0
- data/generica/config/initializers/squash.rb.erb +3 -0
- data/generica/config/nginx.conf.erb +4 -4
- data/generica/config/routes.rb +14 -0
- data/generica/db/migrate/20141114213427_add_user_rank_to_admin_users.rb +9 -0
- data/generica/db/migrate/20141114225019_create_apiv1_users_products.rb +9 -0
- data/generica/db/migrate/20141116053522_create_apiv1_offer_messages.rb +16 -0
- data/generica/db/migrate/20141116235011_add_deleted_at_to_apiv1_products.rb +5 -0
- data/generica/db/migrate/20141116235209_add_deleted_at_to_apiv1_offer_messages.rb +5 -0
- data/generica/db/migrate/20141116235651_add_deleted_at_to_apiv1_pictures.rb +5 -0
- data/generica/db/migrate/20141116235808_add_deleted_at_to_apiv1_attachments.rb +5 -0
- data/generica/db/migrate/20141127230304_create_apiv1_email_requests.rb +16 -0
- data/generica/db/migrate/20141127230455_create_apiv1_email_objects.rb +11 -0
- data/generica/lib/generica/assets_unretardifier.rb +32 -0
- data/generica/lib/generica/email_slave.rb +92 -0
- data/generica/lib/tasks/email_slave.rake +11 -0
- data/generica/lib/tasks/production.rake +1 -1
- data/generica/public/tests/bermese.jpg +0 -0
- data/generica/public/tests/chow.jpg +0 -0
- data/generica/public/tests/malamute.jpg +0 -0
- data/generica/public/tests/malamute2.JPG +0 -0
- data/generica/spec/controllers/apiv1/users/create_controller_spec.rb +17 -0
- data/generica/spec/controllers/users/products/create_controller_spec.rb +31 -0
- data/generica/spec/mailers/apiv1/aggregate_mailer_spec.rb +29 -0
- data/generica/spec/models/apiv1/email_request_spec.rb +4 -0
- data/generica/spec/models/apiv1/offer_postboy_spec.rb +22 -0
- data/generica/spec/models/apiv1/product_spec.rb +1 -0
- data/generica/spec/models/apiv1/products/offer_message_factory_spec.rb +37 -0
- data/generica/spec/models/apiv1/products_machine_spec.rb +77 -0
- data/generica/spec/models/apiv1/users/product_factory_spec.rb +47 -0
- data/generica/spec/models/users/products/offer_factory_spec.rb +38 -0
- data/generica/test/mailers/.keep +0 -0
- data/generica/test/mailers/previews/apiv1/aggregate_preview.rb +6 -0
- data/generica/test/mailers/previews/apiv1/notifications_preview.rb +5 -0
- data/lib/cloudrider.rb +1 -1
- data/lib/cloudrider/apiv1/base.rb +2 -2
- data/lib/cloudrider/apiv1/login_modal_emblem.rb +25 -0
- data/lib/cloudrider/apiv1/offers_anonymous_form_partial_emblem.rb +12 -0
- data/lib/cloudrider/apiv1/offers_new_emblem.rb +15 -0
- data/lib/cloudrider/apiv1/offers_overview_component.rb +8 -0
- data/lib/cloudrider/apiv1/offers_overview_sass.rb +8 -0
- data/lib/cloudrider/apiv1/product_show_emblem.rb +31 -0
- data/lib/cloudrider/apiv1/products_emblem.rb +11 -0
- data/lib/cloudrider/apiv1/products_index_emblem.rb +14 -0
- data/lib/cloudrider/apiv1/search_and_filter_component.rb +11 -0
- data/lib/cloudrider/apiv1/search_and_filter_sass.rb +11 -0
- data/lib/cloudrider/apiv1/site_footer_component.rb +7 -7
- data/lib/cloudrider/apiv1/site_footer_sass.rb +9 -0
- data/lib/cloudrider/application_commander.rb +46 -34
- data/lib/cloudrider/backend_commander.rb +15 -9
- data/lib/cloudrider/protofile.rb +18 -2
- data/lib/cloudrider/protosite.example.json +26 -0
- data/lib/cloudrider/protosite.rb +66 -0
- data/lib/cloudrider/serverside/base.rb +2 -2
- data/lib/cloudrider/serverside/database_yaml.rb +9 -4
- data/lib/cloudrider/serverside/nginx_conf.rb +7 -2
- data/lib/cloudrider/serverside/squash_ruby.rb +14 -0
- data/lib/cloudrider/serverside/unicorn_conf_ruby.rb +2 -1
- data/lib/cloudrider/version.rb +1 -1
- data/lib/cloudrider/web_firm.rb +16 -0
- data/lib/cloudrider/web_firm/component_architect.rb +23 -0
- data/lib/cloudrider/web_firm/page_designer.rb +13 -0
- data/lib/cloudrider/web_firm/project_lead.rb +30 -0
- data/lib/cloudrider/web_firm/scumbag_engineer.rb +40 -0
- data/lib/cloudrider/web_firm/support_intern.rb +113 -0
- data/lib/generators/cloudrider/server/server_generator.rb +4 -8
- data/lib/generators/cloudrider/website/website_generator.rb +25 -0
- data/spec/cloudrider/protosite_spec.rb +63 -0
- data/vanilla/.bowerrc +4 -0
- data/vanilla/.editorconfig +33 -0
- data/vanilla/.ember-cli +9 -0
- data/vanilla/.gitignore +17 -0
- data/vanilla/.jshintrc +32 -0
- data/vanilla/.travis.yml +16 -0
- data/vanilla/Brocfile.js +20 -0
- data/vanilla/README.md +51 -0
- data/vanilla/app/app.js +16 -0
- data/vanilla/app/components/.gitkeep +0 -0
- data/vanilla/app/controllers/.gitkeep +0 -0
- data/vanilla/app/controllers/admin.coffee +5 -0
- data/vanilla/app/helpers/.gitkeep +0 -0
- data/vanilla/app/index.html +21 -0
- data/vanilla/app/models/.gitkeep +0 -0
- data/vanilla/app/router.js +11 -0
- data/vanilla/app/routes/.gitkeep +0 -0
- data/vanilla/app/styles/.gitkeep +0 -0
- data/vanilla/app/styles/app.css +3 -0
- data/vanilla/app/templates/.gitkeep +0 -0
- data/vanilla/app/templates/application.hbs +3 -0
- data/vanilla/app/templates/components/.gitkeep +0 -0
- data/vanilla/app/views/.gitkeep +0 -0
- data/vanilla/bower.json +17 -0
- data/vanilla/config/environment.js +47 -0
- data/vanilla/package.json +39 -0
- data/vanilla/public/.gitkeep +0 -0
- data/vanilla/public/crossdomain.xml +15 -0
- data/vanilla/public/robots.txt +3 -0
- data/vanilla/testem.json +11 -0
- data/vanilla/tests/.jshintrc +74 -0
- data/vanilla/tests/helpers/resolver.js +11 -0
- data/vanilla/tests/helpers/start-app.js +25 -0
- data/vanilla/tests/index.html +45 -0
- data/vanilla/tests/test-helper.js +12 -0
- data/vanilla/tests/unit/.gitkeep +0 -0
- data/vanilla/tests/unit/controllers/admin-test.coffee +12 -0
- data/vanilla/vendor/.gitkeep +0 -0
- metadata +189 -5
- data/generica/app/views/layouts/application.html.erb +0 -14
- data/lib/cloudrider/master_context.rb +0 -105
@@ -0,0 +1,31 @@
|
|
1
|
+
class Cloudrider::Apiv1::ProductShowEmblem < Cloudrider::Apiv1::Base
|
2
|
+
class Context
|
3
|
+
attr_accessor :show_style
|
4
|
+
def online_offerable?
|
5
|
+
case show_style.to_s
|
6
|
+
when "ecommerce"
|
7
|
+
true
|
8
|
+
else
|
9
|
+
false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
private
|
14
|
+
def _file_name
|
15
|
+
"show.emblem"
|
16
|
+
end
|
17
|
+
def _source_folder
|
18
|
+
"app/varissets/javascripts/templates/products/product"
|
19
|
+
end
|
20
|
+
def _context
|
21
|
+
Context.new.tap do |c|
|
22
|
+
if @protosite.public_offer?
|
23
|
+
c.show_style = "public_market"
|
24
|
+
elsif @protosite.private_offer?
|
25
|
+
c.show_style = "private_market"
|
26
|
+
else
|
27
|
+
c.show_style = "no_market"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Cloudrider::Apiv1::ProductsIndexEmblem < Cloudrider::Apiv1::Base
|
2
|
+
class Context
|
3
|
+
attr_accessor :theme
|
4
|
+
end
|
5
|
+
private
|
6
|
+
def _file_name
|
7
|
+
"products/index.emblem"
|
8
|
+
end
|
9
|
+
def _context
|
10
|
+
Context.new.tap do |c|
|
11
|
+
c.theme = @protosite.theme
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
class Cloudrider::Apiv1::SiteFooterComponent < Cloudrider::Apiv1::Base
|
2
2
|
class Context
|
3
|
-
|
4
|
-
"Cloudrider"
|
5
|
-
end
|
6
|
-
def my_company_tagline
|
7
|
-
"Some sort of company tagline"
|
8
|
-
end
|
3
|
+
attr_accessor :my_company_name, :my_company_tagline
|
9
4
|
end
|
10
5
|
|
11
6
|
private
|
12
7
|
def _context
|
13
|
-
Context.new
|
8
|
+
Context.new.tap do |c|
|
9
|
+
if @protosite.present?
|
10
|
+
c.my_company_name = @protosite.project_name
|
11
|
+
c.my_company_tagline = "Some sort of company tagline"
|
12
|
+
end
|
13
|
+
end
|
14
14
|
end
|
15
15
|
end
|
@@ -6,33 +6,13 @@ class Cloudrider::ApplicationCommander
|
|
6
6
|
def varisset_protofiles_for(params)
|
7
7
|
new(params).files_to_write
|
8
8
|
end
|
9
|
-
def all_varissets
|
10
|
-
new(name: :all).all_files
|
11
|
-
end
|
12
9
|
end
|
13
10
|
def initialize(params)
|
14
11
|
@params = params
|
15
12
|
end
|
16
13
|
|
17
14
|
def files_to_write
|
18
|
-
_related_assets.flatten.map { |ac| ac.new _varisset_style }.map(&:protofile)
|
19
|
-
end
|
20
|
-
|
21
|
-
def all_files
|
22
|
-
[
|
23
|
-
_product_display,
|
24
|
-
_application,
|
25
|
-
_hero_splash,
|
26
|
-
_introductory_lobby,
|
27
|
-
_product_listing,
|
28
|
-
_index,
|
29
|
-
_cookie_splash,
|
30
|
-
_products_catalog,
|
31
|
-
_products_showcase,
|
32
|
-
_site_nav,
|
33
|
-
_table_booths,
|
34
|
-
_site_footer
|
35
|
-
].flatten.map { |ac| ac.new _varisset_style }.map(&:protofile)
|
15
|
+
_related_assets.flatten.map { |ac| ac.new style: _varisset_style, protosite: _protosite }.map(&:protofile)
|
36
16
|
end
|
37
17
|
|
38
18
|
private
|
@@ -80,7 +60,25 @@ class Cloudrider::ApplicationCommander
|
|
80
60
|
]
|
81
61
|
end
|
82
62
|
def _site_footer
|
83
|
-
[Cloudrider::Apiv1::SiteFooterComponent]
|
63
|
+
[Cloudrider::Apiv1::SiteFooterComponent, Cloudrider::Apiv1::SiteFooterSass]
|
64
|
+
end
|
65
|
+
def _offers_new
|
66
|
+
[Cloudrider::Apiv1::OffersNewEmblem, Cloudrider::Apiv1::OffersAnonymousFormPartial, Cloudrider::Apiv1::OffersFormPartial]
|
67
|
+
end
|
68
|
+
def _product_show
|
69
|
+
[Cloudrider::Apiv1::ProductShowEmblem]
|
70
|
+
end
|
71
|
+
def _products_index
|
72
|
+
[Cloudrider::Apiv1::ProductsIndexEmblem, Cloudrider::Apiv1::ProductsEmblem]
|
73
|
+
end
|
74
|
+
def _offers_overview
|
75
|
+
[Cloudrider::Apiv1::OffersOverviewComponent, Cloudrider::Apiv1::OffersOverviewSass]
|
76
|
+
end
|
77
|
+
def _search_and_filter
|
78
|
+
[Cloudrider::Apiv1::SearchAndFilterComponent, Cloudrider::Apiv1::SearchAndFilterSass]
|
79
|
+
end
|
80
|
+
def _protosite
|
81
|
+
@params[:protosite]
|
84
82
|
end
|
85
83
|
def _varisset_name
|
86
84
|
@params[:name]
|
@@ -89,31 +87,41 @@ class Cloudrider::ApplicationCommander
|
|
89
87
|
@params[:style]
|
90
88
|
end
|
91
89
|
def _related_assets
|
92
|
-
case _varisset_name
|
90
|
+
case _varisset_name.underscore
|
93
91
|
when "application"
|
94
92
|
_application
|
95
93
|
when "index"
|
96
94
|
_index
|
97
|
-
when "
|
95
|
+
when "cookie_splash"
|
98
96
|
_cookie_splash
|
99
|
-
when "
|
97
|
+
when "hero_splash"
|
100
98
|
_hero_splash
|
101
|
-
when "
|
99
|
+
when "introductory_lobby"
|
102
100
|
_introductory_lobby
|
103
|
-
when "
|
101
|
+
when "product_display"
|
104
102
|
_product_display
|
105
|
-
when "
|
103
|
+
when "product_listing"
|
106
104
|
_product_listing
|
107
|
-
when "
|
105
|
+
when "products_catalog"
|
108
106
|
_products_catalog
|
109
|
-
when "
|
107
|
+
when "products_showcase"
|
110
108
|
_products_showcase
|
111
|
-
when "
|
109
|
+
when "site_footer"
|
112
110
|
_site_footer
|
113
|
-
when "
|
111
|
+
when "site_nav"
|
114
112
|
_site_nav
|
115
|
-
when "
|
113
|
+
when "table_booths"
|
116
114
|
_table_booths
|
115
|
+
when "product_show"
|
116
|
+
_product_show
|
117
|
+
when "products_index"
|
118
|
+
_products_index
|
119
|
+
when "offers_overview"
|
120
|
+
_offers_overview
|
121
|
+
when "offers_new"
|
122
|
+
_offers_new
|
123
|
+
when "search_and_filter"
|
124
|
+
_search_and_filter
|
117
125
|
else
|
118
126
|
raise UnknownOrUnimplmenetedVarisset, _varisset_name
|
119
127
|
end
|
@@ -130,7 +138,11 @@ class Cloudrider::ApplicationCommander
|
|
130
138
|
"products-showcase",
|
131
139
|
"site-nav",
|
132
140
|
"site-footer",
|
133
|
-
"table-booths"
|
141
|
+
"table-booths",
|
142
|
+
"product-show",
|
143
|
+
"products-index",
|
144
|
+
"offers-overview",
|
145
|
+
"search-and-filter"
|
134
146
|
]
|
135
147
|
end
|
136
148
|
|
@@ -14,7 +14,7 @@ class Cloudrider::BackendCommander
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def files_to_write
|
17
|
-
_related_backends.flatten.map { |ac| ac.new _backend_style }.map(&:protofile)
|
17
|
+
_related_backends.flatten.map { |ac| ac.new style: _backend_style, protosite: _protosite }.map(&:protofile)
|
18
18
|
end
|
19
19
|
private
|
20
20
|
def _nginx
|
@@ -26,30 +26,36 @@ class Cloudrider::BackendCommander
|
|
26
26
|
def _database
|
27
27
|
[Cloudrider::Serverside::DatabaseYaml]
|
28
28
|
end
|
29
|
+
def _squash
|
30
|
+
[Cloudrider::Serverside::SquashRuby]
|
31
|
+
end
|
32
|
+
def _configs
|
33
|
+
_nginx + _unicorn + _database + _squash
|
34
|
+
end
|
29
35
|
def _related_backends
|
30
36
|
case _backend_name
|
31
|
-
when "
|
32
|
-
|
33
|
-
when "employee"
|
34
|
-
when "product"
|
35
|
-
when "offer"
|
36
|
-
when "message"
|
37
|
-
when "taxon"
|
37
|
+
when "configs"
|
38
|
+
_configs
|
38
39
|
when "nginx"
|
39
40
|
_nginx
|
40
41
|
when "unicorn"
|
41
42
|
_unicorn
|
42
43
|
when "database"
|
43
44
|
_database
|
45
|
+
when "squash"
|
46
|
+
_squash
|
44
47
|
else
|
45
48
|
raise UnknownOrUnimplmenetedVarisset, _backend_name
|
46
49
|
end
|
47
50
|
end
|
51
|
+
def _protosite
|
52
|
+
@params[:protosite]
|
53
|
+
end
|
48
54
|
def _backend_style
|
49
55
|
@params[:style]
|
50
56
|
end
|
51
57
|
def _backend_name
|
52
58
|
@params[:name]
|
53
59
|
end
|
54
|
-
KnownBackends = ["
|
60
|
+
KnownBackends = ["configs", "nginx", "unicorn", "database", "squash"]
|
55
61
|
end
|
data/lib/cloudrider/protofile.rb
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
class Cloudrider::Protofile
|
2
|
-
|
2
|
+
class OnlyBeCalledWhenNoType < StandardError; end
|
3
|
+
attr_accessor :file_name, :folder, :renderer, :source, :target, :type
|
4
|
+
def initialize(opts={})
|
5
|
+
@type = opts[:type]
|
6
|
+
@source = opts[:source]
|
7
|
+
@target = opts[:target]
|
8
|
+
end
|
3
9
|
def full_name
|
4
|
-
|
10
|
+
raise OnlyBeCalledWhenNoType, _debug_string if ["copy_file", "directory"].include? @type.to_s
|
11
|
+
File.join *[folder, file_name].reject(&:blank?)
|
5
12
|
end
|
6
13
|
def content
|
7
14
|
renderer.call
|
8
15
|
end
|
16
|
+
private
|
17
|
+
def _debug_string
|
18
|
+
{
|
19
|
+
file_name: file_name,
|
20
|
+
folder: folder,
|
21
|
+
target: target,
|
22
|
+
type: type
|
23
|
+
}.inspect
|
24
|
+
end
|
9
25
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{
|
2
|
+
"project_name": "craigslist inspired market",
|
3
|
+
"domain_names": ["www.craigslist-clone.com", "craigslist-clone.com"],
|
4
|
+
"squash_api_key": "666-6235lksdfsd",
|
5
|
+
"pages": [
|
6
|
+
{
|
7
|
+
"name": "index",
|
8
|
+
"components": ["products-showcase", "product-display", "search-and-filter"]
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"name": "products_index",
|
12
|
+
"components": ["products-catalog", "product-listing", "search-and-filter"]
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"name": "product_show",
|
16
|
+
"components": ["offers-overview"]
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"name": "offers_new",
|
20
|
+
"components": []
|
21
|
+
}
|
22
|
+
],
|
23
|
+
"functionalities": ["admin_panel", "user_accounts", "public_offer", "categorizable_products"],
|
24
|
+
"theme": "craigslist",
|
25
|
+
"layout": "mixed-width, hero-narrow"
|
26
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# protosite_example = {
|
2
|
+
# pages: [protopage],
|
3
|
+
# functions: someof KnownFunctionalities,
|
4
|
+
# theme: oneof KnownThemes,
|
5
|
+
# layout: oneof KnownLayouts
|
6
|
+
# }
|
7
|
+
|
8
|
+
# protopage_example = {
|
9
|
+
# name: oneof KnownPages,
|
10
|
+
# components: someof KnownComponents
|
11
|
+
# }
|
12
|
+
|
13
|
+
class Cloudrider::Protosite
|
14
|
+
KnownPages = [:index, :products_index, :product_show, :about_us, :contact_us, :offers_new]
|
15
|
+
KnownFunctionalities = [:admin_panel, :user_accounts, :public_offer, :categorizable_products]
|
16
|
+
KnownThemes = [:craigslist, :material, :amateur, :girly, :flat]
|
17
|
+
KnownLayouts = [
|
18
|
+
"full-width, triple-column", # https://medium.com/@erikdkennedy/7-rules-for-creating-gorgeous-ui-part-1-559d4e805cda?hn=1 wikipedia redesign
|
19
|
+
"full-width, double-column", # circa 2014 wikipedia
|
20
|
+
"full-width, single-column", # full page sites (i.e. gamified sites)
|
21
|
+
"mixed-width, hero-full", # like the tons of profile pages out there
|
22
|
+
"mixed-width, hero-narrow", # bootstrap circa 2011
|
23
|
+
"narrow-width" # circa 2007 yahoo
|
24
|
+
]
|
25
|
+
|
26
|
+
def self.from_hash(hash)
|
27
|
+
symbolized_hash = hash.symbolize_keys
|
28
|
+
new.tap do |p|
|
29
|
+
p.project_name = symbolized_hash[:project_name]
|
30
|
+
p.domain_names = symbolized_hash[:domain_names]
|
31
|
+
p.theme = symbolized_hash[:theme]
|
32
|
+
p.layout = symbolized_hash[:layout]
|
33
|
+
p.squash_api_key = symbolized_hash[:squash_api_key]
|
34
|
+
p.functionalities = symbolized_hash[:functionalities]
|
35
|
+
p.pages = symbolized_hash[:pages].to_a.map { |page_hash| Protopage.new page_hash.symbolize_keys }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
attr_accessor :pages, :functionalities, :theme, :project_name, :domain_names, :layout
|
39
|
+
|
40
|
+
def public_offer?
|
41
|
+
functionalities.include?("public_offer") && pages.any? { |page| page.name == "offers_new" }
|
42
|
+
end
|
43
|
+
|
44
|
+
def private_offer?
|
45
|
+
!functionalities.include?("public_offer") && pages.any? { |page| page.name == "offers_new" }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
class Cloudrider::Protosite::Protopage
|
51
|
+
attr_accessor :name, :components
|
52
|
+
KnownComponents = [
|
53
|
+
"hero-splash",
|
54
|
+
"cookie-splash",
|
55
|
+
"introductory-lobby",
|
56
|
+
"products-showcase",
|
57
|
+
"table-booths",
|
58
|
+
"products-catalog",
|
59
|
+
"search-and-filter",
|
60
|
+
"offers-overview"
|
61
|
+
]
|
62
|
+
def initialize(name: name, components: components)
|
63
|
+
@name, @components = name, components.to_a
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|