diff --git a/.gitignore b/.gitignore index 5b61ab0..088b771 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,47 @@ # git config --global core.excludesfile '~/.gitignore_global' # Ignore bundler config. -/.bundle +/ribica-back-office/.bundle # Ignore all logfiles and tempfiles. -/log/* -!/log/.keep -/tmp +/ribica-back-office/log/* +!/ribica-back-office/log/.keep +/ribica-back-office/tmp +*.gem +*.rbc +/ribica-front-api/.config +/ribica-front-api/coverage/ +/ribica-front-api/InstalledFiles +/ribica-front-api/pkg/ +/ribica-front-api/spec/reports/ +/ribica-front-api/test/tmp/ +/ribica-front-api/test/version_tmp/ +/ribica-front-api/tmp/ + +## Specific to RubyMotion: +.dat* +.repl_history +build/ + +## Documentation cache and generated files: +/ribica-front-api/.yardoc/ +/ribica-front-api/_yardoc/ +/ribica-front-api/doc/ +/ribica-front-api/rdoc/ + +## Environment normalisation: +/ribica-front-api/.bundle/ +/ribica-front-api/lib/bundler/man/ + + +# for a library or gem, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# Gemfile.lock +# .ruby-version +# .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +# everyone has it's own configuration :) +config.rb diff --git a/Gemfile b/ribica-back-office/Gemfile similarity index 100% rename from Gemfile rename to ribica-back-office/Gemfile diff --git a/Gemfile.lock b/ribica-back-office/Gemfile.lock similarity index 100% rename from Gemfile.lock rename to ribica-back-office/Gemfile.lock diff --git a/README.md b/ribica-back-office/README.md similarity index 100% rename from README.md rename to ribica-back-office/README.md diff --git a/Rakefile b/ribica-back-office/Rakefile similarity index 100% rename from Rakefile rename to ribica-back-office/Rakefile diff --git a/app/assets/images/.keep b/ribica-back-office/app/assets/images/.keep similarity index 100% rename from app/assets/images/.keep rename to ribica-back-office/app/assets/images/.keep diff --git a/app/assets/javascripts/application.js b/ribica-back-office/app/assets/javascripts/application.js similarity index 100% rename from app/assets/javascripts/application.js rename to ribica-back-office/app/assets/javascripts/application.js diff --git a/app/assets/stylesheets/application.css b/ribica-back-office/app/assets/stylesheets/application.css similarity index 100% rename from app/assets/stylesheets/application.css rename to ribica-back-office/app/assets/stylesheets/application.css diff --git a/app/controllers/application_controller.rb b/ribica-back-office/app/controllers/application_controller.rb similarity index 100% rename from app/controllers/application_controller.rb rename to ribica-back-office/app/controllers/application_controller.rb diff --git a/app/controllers/categories_controller.rb b/ribica-back-office/app/controllers/categories_controller.rb similarity index 100% rename from app/controllers/categories_controller.rb rename to ribica-back-office/app/controllers/categories_controller.rb diff --git a/app/controllers/concerns/.keep b/ribica-back-office/app/controllers/concerns/.keep similarity index 100% rename from app/controllers/concerns/.keep rename to ribica-back-office/app/controllers/concerns/.keep diff --git a/app/controllers/items_controller.rb b/ribica-back-office/app/controllers/items_controller.rb similarity index 100% rename from app/controllers/items_controller.rb rename to ribica-back-office/app/controllers/items_controller.rb diff --git a/app/controllers/media_types_controller.rb b/ribica-back-office/app/controllers/media_types_controller.rb similarity index 100% rename from app/controllers/media_types_controller.rb rename to ribica-back-office/app/controllers/media_types_controller.rb diff --git a/app/controllers/multi_media_descriptions_controller.rb b/ribica-back-office/app/controllers/multi_media_descriptions_controller.rb similarity index 100% rename from app/controllers/multi_media_descriptions_controller.rb rename to ribica-back-office/app/controllers/multi_media_descriptions_controller.rb diff --git a/app/controllers/sections_controller.rb b/ribica-back-office/app/controllers/sections_controller.rb similarity index 100% rename from app/controllers/sections_controller.rb rename to ribica-back-office/app/controllers/sections_controller.rb diff --git a/app/controllers/sub_categories_controller.rb b/ribica-back-office/app/controllers/sub_categories_controller.rb similarity index 100% rename from app/controllers/sub_categories_controller.rb rename to ribica-back-office/app/controllers/sub_categories_controller.rb diff --git a/app/controllers/units_controller.rb b/ribica-back-office/app/controllers/units_controller.rb similarity index 100% rename from app/controllers/units_controller.rb rename to ribica-back-office/app/controllers/units_controller.rb diff --git a/app/helpers/application_helper.rb b/ribica-back-office/app/helpers/application_helper.rb similarity index 100% rename from app/helpers/application_helper.rb rename to ribica-back-office/app/helpers/application_helper.rb diff --git a/app/helpers/categories_helper.rb b/ribica-back-office/app/helpers/categories_helper.rb similarity index 100% rename from app/helpers/categories_helper.rb rename to ribica-back-office/app/helpers/categories_helper.rb diff --git a/app/helpers/items_helper.rb b/ribica-back-office/app/helpers/items_helper.rb similarity index 100% rename from app/helpers/items_helper.rb rename to ribica-back-office/app/helpers/items_helper.rb diff --git a/app/helpers/media_types_helper.rb b/ribica-back-office/app/helpers/media_types_helper.rb similarity index 100% rename from app/helpers/media_types_helper.rb rename to ribica-back-office/app/helpers/media_types_helper.rb diff --git a/app/helpers/multi_media_descriptions_helper.rb b/ribica-back-office/app/helpers/multi_media_descriptions_helper.rb similarity index 100% rename from app/helpers/multi_media_descriptions_helper.rb rename to ribica-back-office/app/helpers/multi_media_descriptions_helper.rb diff --git a/app/helpers/sections_helper.rb b/ribica-back-office/app/helpers/sections_helper.rb similarity index 100% rename from app/helpers/sections_helper.rb rename to ribica-back-office/app/helpers/sections_helper.rb diff --git a/app/helpers/sub_categories_helper.rb b/ribica-back-office/app/helpers/sub_categories_helper.rb similarity index 100% rename from app/helpers/sub_categories_helper.rb rename to ribica-back-office/app/helpers/sub_categories_helper.rb diff --git a/app/helpers/units_helper.rb b/ribica-back-office/app/helpers/units_helper.rb similarity index 100% rename from app/helpers/units_helper.rb rename to ribica-back-office/app/helpers/units_helper.rb diff --git a/app/mailers/.keep b/ribica-back-office/app/mailers/.keep similarity index 100% rename from app/mailers/.keep rename to ribica-back-office/app/mailers/.keep diff --git a/app/models/.keep b/ribica-back-office/app/models/.keep similarity index 100% rename from app/models/.keep rename to ribica-back-office/app/models/.keep diff --git a/app/models/category.rb b/ribica-back-office/app/models/category.rb similarity index 100% rename from app/models/category.rb rename to ribica-back-office/app/models/category.rb diff --git a/app/models/concerns/.keep b/ribica-back-office/app/models/concerns/.keep similarity index 100% rename from app/models/concerns/.keep rename to ribica-back-office/app/models/concerns/.keep diff --git a/app/models/item.rb b/ribica-back-office/app/models/item.rb similarity index 100% rename from app/models/item.rb rename to ribica-back-office/app/models/item.rb diff --git a/app/models/media_type.rb b/ribica-back-office/app/models/media_type.rb similarity index 100% rename from app/models/media_type.rb rename to ribica-back-office/app/models/media_type.rb diff --git a/app/models/multi_media_description.rb b/ribica-back-office/app/models/multi_media_description.rb similarity index 100% rename from app/models/multi_media_description.rb rename to ribica-back-office/app/models/multi_media_description.rb diff --git a/app/models/section.rb b/ribica-back-office/app/models/section.rb similarity index 100% rename from app/models/section.rb rename to ribica-back-office/app/models/section.rb diff --git a/app/models/sub_category.rb b/ribica-back-office/app/models/sub_category.rb similarity index 100% rename from app/models/sub_category.rb rename to ribica-back-office/app/models/sub_category.rb diff --git a/app/models/unit.rb b/ribica-back-office/app/models/unit.rb similarity index 100% rename from app/models/unit.rb rename to ribica-back-office/app/models/unit.rb diff --git a/app/views/layouts/application.html.erb b/ribica-back-office/app/views/layouts/application.html.erb similarity index 100% rename from app/views/layouts/application.html.erb rename to ribica-back-office/app/views/layouts/application.html.erb diff --git a/bin/bundle b/ribica-back-office/bin/bundle similarity index 100% rename from bin/bundle rename to ribica-back-office/bin/bundle diff --git a/bin/rails b/ribica-back-office/bin/rails similarity index 100% rename from bin/rails rename to ribica-back-office/bin/rails diff --git a/bin/rake b/ribica-back-office/bin/rake similarity index 100% rename from bin/rake rename to ribica-back-office/bin/rake diff --git a/bin/setup b/ribica-back-office/bin/setup similarity index 100% rename from bin/setup rename to ribica-back-office/bin/setup diff --git a/bin/spring b/ribica-back-office/bin/spring similarity index 100% rename from bin/spring rename to ribica-back-office/bin/spring diff --git a/config.ru b/ribica-back-office/config.ru similarity index 100% rename from config.ru rename to ribica-back-office/config.ru diff --git a/config/application.rb b/ribica-back-office/config/application.rb similarity index 100% rename from config/application.rb rename to ribica-back-office/config/application.rb diff --git a/config/boot.rb b/ribica-back-office/config/boot.rb similarity index 100% rename from config/boot.rb rename to ribica-back-office/config/boot.rb diff --git a/config/cloudinary.yml b/ribica-back-office/config/cloudinary.yml similarity index 100% rename from config/cloudinary.yml rename to ribica-back-office/config/cloudinary.yml diff --git a/config/database.yml b/ribica-back-office/config/database.yml similarity index 100% rename from config/database.yml rename to ribica-back-office/config/database.yml diff --git a/config/environment.rb b/ribica-back-office/config/environment.rb similarity index 100% rename from config/environment.rb rename to ribica-back-office/config/environment.rb diff --git a/config/environments/development.rb b/ribica-back-office/config/environments/development.rb similarity index 100% rename from config/environments/development.rb rename to ribica-back-office/config/environments/development.rb diff --git a/config/environments/production.rb b/ribica-back-office/config/environments/production.rb similarity index 100% rename from config/environments/production.rb rename to ribica-back-office/config/environments/production.rb diff --git a/config/environments/test.rb b/ribica-back-office/config/environments/test.rb similarity index 100% rename from config/environments/test.rb rename to ribica-back-office/config/environments/test.rb diff --git a/config/initializers/assets.rb b/ribica-back-office/config/initializers/assets.rb similarity index 100% rename from config/initializers/assets.rb rename to ribica-back-office/config/initializers/assets.rb diff --git a/config/initializers/backtrace_silencers.rb b/ribica-back-office/config/initializers/backtrace_silencers.rb similarity index 100% rename from config/initializers/backtrace_silencers.rb rename to ribica-back-office/config/initializers/backtrace_silencers.rb diff --git a/config/initializers/cookies_serializer.rb b/ribica-back-office/config/initializers/cookies_serializer.rb similarity index 100% rename from config/initializers/cookies_serializer.rb rename to ribica-back-office/config/initializers/cookies_serializer.rb diff --git a/config/initializers/filter_parameter_logging.rb b/ribica-back-office/config/initializers/filter_parameter_logging.rb similarity index 100% rename from config/initializers/filter_parameter_logging.rb rename to ribica-back-office/config/initializers/filter_parameter_logging.rb diff --git a/config/initializers/inflections.rb b/ribica-back-office/config/initializers/inflections.rb similarity index 100% rename from config/initializers/inflections.rb rename to ribica-back-office/config/initializers/inflections.rb diff --git a/config/initializers/mime_types.rb b/ribica-back-office/config/initializers/mime_types.rb similarity index 100% rename from config/initializers/mime_types.rb rename to ribica-back-office/config/initializers/mime_types.rb diff --git a/config/initializers/session_store.rb b/ribica-back-office/config/initializers/session_store.rb similarity index 100% rename from config/initializers/session_store.rb rename to ribica-back-office/config/initializers/session_store.rb diff --git a/config/initializers/wrap_parameters.rb b/ribica-back-office/config/initializers/wrap_parameters.rb similarity index 100% rename from config/initializers/wrap_parameters.rb rename to ribica-back-office/config/initializers/wrap_parameters.rb diff --git a/config/locales/en.yml b/ribica-back-office/config/locales/en.yml similarity index 100% rename from config/locales/en.yml rename to ribica-back-office/config/locales/en.yml diff --git a/config/routes.rb b/ribica-back-office/config/routes.rb similarity index 100% rename from config/routes.rb rename to ribica-back-office/config/routes.rb diff --git a/config/secrets.yml b/ribica-back-office/config/secrets.yml similarity index 100% rename from config/secrets.yml rename to ribica-back-office/config/secrets.yml diff --git a/db/seeds.rb b/ribica-back-office/db/seeds.rb similarity index 100% rename from db/seeds.rb rename to ribica-back-office/db/seeds.rb diff --git a/lib/assets/.keep b/ribica-back-office/lib/assets/.keep similarity index 100% rename from lib/assets/.keep rename to ribica-back-office/lib/assets/.keep diff --git a/lib/tasks/.keep b/ribica-back-office/lib/tasks/.keep similarity index 100% rename from lib/tasks/.keep rename to ribica-back-office/lib/tasks/.keep diff --git a/log/.keep b/ribica-back-office/log/.keep similarity index 100% rename from log/.keep rename to ribica-back-office/log/.keep diff --git a/public/404.html b/ribica-back-office/public/404.html similarity index 100% rename from public/404.html rename to ribica-back-office/public/404.html diff --git a/public/422.html b/ribica-back-office/public/422.html similarity index 100% rename from public/422.html rename to ribica-back-office/public/422.html diff --git a/public/500.html b/ribica-back-office/public/500.html similarity index 100% rename from public/500.html rename to ribica-back-office/public/500.html diff --git a/public/favicon.ico b/ribica-back-office/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to ribica-back-office/public/favicon.ico diff --git a/public/robots.txt b/ribica-back-office/public/robots.txt similarity index 100% rename from public/robots.txt rename to ribica-back-office/public/robots.txt diff --git a/test/controllers/.keep b/ribica-back-office/test/controllers/.keep similarity index 100% rename from test/controllers/.keep rename to ribica-back-office/test/controllers/.keep diff --git a/test/controllers/categories_controller_test.rb b/ribica-back-office/test/controllers/categories_controller_test.rb similarity index 100% rename from test/controllers/categories_controller_test.rb rename to ribica-back-office/test/controllers/categories_controller_test.rb diff --git a/test/controllers/items_controller_test.rb b/ribica-back-office/test/controllers/items_controller_test.rb similarity index 100% rename from test/controllers/items_controller_test.rb rename to ribica-back-office/test/controllers/items_controller_test.rb diff --git a/test/controllers/media_types_controller_test.rb b/ribica-back-office/test/controllers/media_types_controller_test.rb similarity index 100% rename from test/controllers/media_types_controller_test.rb rename to ribica-back-office/test/controllers/media_types_controller_test.rb diff --git a/test/controllers/multi_media_descriptions_controller_test.rb b/ribica-back-office/test/controllers/multi_media_descriptions_controller_test.rb similarity index 100% rename from test/controllers/multi_media_descriptions_controller_test.rb rename to ribica-back-office/test/controllers/multi_media_descriptions_controller_test.rb diff --git a/test/controllers/sections_controller_test.rb b/ribica-back-office/test/controllers/sections_controller_test.rb similarity index 100% rename from test/controllers/sections_controller_test.rb rename to ribica-back-office/test/controllers/sections_controller_test.rb diff --git a/test/controllers/sub_categories_controller_test.rb b/ribica-back-office/test/controllers/sub_categories_controller_test.rb similarity index 100% rename from test/controllers/sub_categories_controller_test.rb rename to ribica-back-office/test/controllers/sub_categories_controller_test.rb diff --git a/test/controllers/units_controller_test.rb b/ribica-back-office/test/controllers/units_controller_test.rb similarity index 100% rename from test/controllers/units_controller_test.rb rename to ribica-back-office/test/controllers/units_controller_test.rb diff --git a/test/fixtures/.keep b/ribica-back-office/test/fixtures/.keep similarity index 100% rename from test/fixtures/.keep rename to ribica-back-office/test/fixtures/.keep diff --git a/test/fixtures/categories.yml b/ribica-back-office/test/fixtures/categories.yml similarity index 100% rename from test/fixtures/categories.yml rename to ribica-back-office/test/fixtures/categories.yml diff --git a/test/fixtures/items.yml b/ribica-back-office/test/fixtures/items.yml similarity index 100% rename from test/fixtures/items.yml rename to ribica-back-office/test/fixtures/items.yml diff --git a/test/fixtures/media_types.yml b/ribica-back-office/test/fixtures/media_types.yml similarity index 100% rename from test/fixtures/media_types.yml rename to ribica-back-office/test/fixtures/media_types.yml diff --git a/test/fixtures/multi_media_descriptions.yml b/ribica-back-office/test/fixtures/multi_media_descriptions.yml similarity index 100% rename from test/fixtures/multi_media_descriptions.yml rename to ribica-back-office/test/fixtures/multi_media_descriptions.yml diff --git a/test/fixtures/sections.yml b/ribica-back-office/test/fixtures/sections.yml similarity index 100% rename from test/fixtures/sections.yml rename to ribica-back-office/test/fixtures/sections.yml diff --git a/test/fixtures/sub_categories.yml b/ribica-back-office/test/fixtures/sub_categories.yml similarity index 100% rename from test/fixtures/sub_categories.yml rename to ribica-back-office/test/fixtures/sub_categories.yml diff --git a/test/fixtures/units.yml b/ribica-back-office/test/fixtures/units.yml similarity index 100% rename from test/fixtures/units.yml rename to ribica-back-office/test/fixtures/units.yml diff --git a/test/helpers/.keep b/ribica-back-office/test/helpers/.keep similarity index 100% rename from test/helpers/.keep rename to ribica-back-office/test/helpers/.keep diff --git a/test/integration/.keep b/ribica-back-office/test/integration/.keep similarity index 100% rename from test/integration/.keep rename to ribica-back-office/test/integration/.keep diff --git a/test/mailers/.keep b/ribica-back-office/test/mailers/.keep similarity index 100% rename from test/mailers/.keep rename to ribica-back-office/test/mailers/.keep diff --git a/test/models/.keep b/ribica-back-office/test/models/.keep similarity index 100% rename from test/models/.keep rename to ribica-back-office/test/models/.keep diff --git a/test/models/category_test.rb b/ribica-back-office/test/models/category_test.rb similarity index 100% rename from test/models/category_test.rb rename to ribica-back-office/test/models/category_test.rb diff --git a/test/models/item_test.rb b/ribica-back-office/test/models/item_test.rb similarity index 100% rename from test/models/item_test.rb rename to ribica-back-office/test/models/item_test.rb diff --git a/test/models/media_type_test.rb b/ribica-back-office/test/models/media_type_test.rb similarity index 100% rename from test/models/media_type_test.rb rename to ribica-back-office/test/models/media_type_test.rb diff --git a/test/models/multi_media_description_test.rb b/ribica-back-office/test/models/multi_media_description_test.rb similarity index 100% rename from test/models/multi_media_description_test.rb rename to ribica-back-office/test/models/multi_media_description_test.rb diff --git a/test/models/section_test.rb b/ribica-back-office/test/models/section_test.rb similarity index 100% rename from test/models/section_test.rb rename to ribica-back-office/test/models/section_test.rb diff --git a/test/models/sub_category_test.rb b/ribica-back-office/test/models/sub_category_test.rb similarity index 100% rename from test/models/sub_category_test.rb rename to ribica-back-office/test/models/sub_category_test.rb diff --git a/test/models/unit_test.rb b/ribica-back-office/test/models/unit_test.rb similarity index 100% rename from test/models/unit_test.rb rename to ribica-back-office/test/models/unit_test.rb diff --git a/test/test_helper.rb b/ribica-back-office/test/test_helper.rb similarity index 100% rename from test/test_helper.rb rename to ribica-back-office/test/test_helper.rb diff --git a/vendor/assets/javascripts/.keep b/ribica-back-office/vendor/assets/javascripts/.keep similarity index 100% rename from vendor/assets/javascripts/.keep rename to ribica-back-office/vendor/assets/javascripts/.keep diff --git a/vendor/assets/stylesheets/.keep b/ribica-back-office/vendor/assets/stylesheets/.keep similarity index 100% rename from vendor/assets/stylesheets/.keep rename to ribica-back-office/vendor/assets/stylesheets/.keep diff --git a/ribica-front-api/.DS_Store b/ribica-front-api/.DS_Store new file mode 100644 index 0000000..6880bbc Binary files /dev/null and b/ribica-front-api/.DS_Store differ diff --git a/ribica-front-api/.gitignore b/ribica-front-api/.gitignore new file mode 100644 index 0000000..1151a5b --- /dev/null +++ b/ribica-front-api/.gitignore @@ -0,0 +1,38 @@ +*.gem +*.rbc +/.config +/coverage/ +/InstalledFiles +/pkg/ +/spec/reports/ +/test/tmp/ +/test/version_tmp/ +/tmp/ + +## Specific to RubyMotion: +.dat* +.repl_history +build/ + +## Documentation cache and generated files: +/.yardoc/ +/_yardoc/ +/doc/ +/rdoc/ + +## Environment normalisation: +/.bundle/ +/lib/bundler/man/ + + +# for a library or gem, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# Gemfile.lock +# .ruby-version +# .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +# everyone has it's on configuration :) +config.rb \ No newline at end of file diff --git a/ribica-front-api/Gemfile b/ribica-front-api/Gemfile new file mode 100644 index 0000000..29600e5 --- /dev/null +++ b/ribica-front-api/Gemfile @@ -0,0 +1,22 @@ +source 'https://rubygems.org' + + + +platform :jruby do + gem 'activerecord-jdbcpostgresql-adapter' + gem 'jruby-openssl' + +end + +platform :ruby do + gem 'pg' + + gem "activerecord" +end + + +gem "sinatra" + +gem "sinatra-activerecord" +gem "json" +gem 'puma' diff --git a/ribica-front-api/Gemfile.lock b/ribica-front-api/Gemfile.lock new file mode 100644 index 0000000..f9c7608 --- /dev/null +++ b/ribica-front-api/Gemfile.lock @@ -0,0 +1,63 @@ +GEM + remote: https://rubygems.org/ + specs: + activemodel (4.2.0) + activesupport (= 4.2.0) + builder (~> 3.1) + activerecord (4.2.0) + activemodel (= 4.2.0) + activesupport (= 4.2.0) + arel (~> 6.0) + activerecord-jdbc-adapter (1.3.13) + activerecord (>= 2.2) + activerecord-jdbcpostgresql-adapter (1.3.13) + activerecord-jdbc-adapter (~> 1.3.13) + jdbc-postgres (>= 9.1) + activesupport (4.2.0) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + arel (6.0.0) + builder (3.2.2) + i18n (0.7.0) + jdbc-postgres (9.3.1102) + jruby-openssl (0.9.6-java) + json (1.8.1) + json (1.8.1-java) + minitest (5.5.0) + pg (0.17.1) + puma (2.10.2) + rack (>= 1.1, < 2.0) + puma (2.10.2-java) + rack (>= 1.1, < 2.0) + rack (1.6.0) + rack-protection (1.5.3) + rack + sinatra (1.4.5) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + sinatra-activerecord (2.0.3) + activerecord (>= 3.2) + sinatra (~> 1.0) + thread_safe (0.3.4) + thread_safe (0.3.4-java) + tilt (1.4.1) + tzinfo (1.2.2) + thread_safe (~> 0.1) + +PLATFORMS + java + ruby + +DEPENDENCIES + activerecord + activerecord-jdbcpostgresql-adapter + jruby-openssl + json + pg + puma + sinatra + sinatra-activerecord diff --git a/ribica-front-api/README.md b/ribica-front-api/README.md new file mode 100644 index 0000000..d12b801 --- /dev/null +++ b/ribica-front-api/README.md @@ -0,0 +1,34 @@ +# Ribica front office API + +## Getting started: + +1. install postgresql and libraries (for native 'pg' gem to be able to compile) +2. run `bundle install` +3. create postgresql user protected with password +4. create postgresql database +5. copy config.rb.example to config.rb and change the information inside of it +6. run `rake db:schema:load` +7. run `gem install rerun` + +## Running dev server (with autoreloading) + +1. run `rerun ruby app.rb` + +## Generating migrations + +Sinatra has a different syntax than rails to generate migration: + +`rake db:create_migration NAME=create_categories` + +## Handling shared models + +Some of models will necesarrily be shared between front and back office. +Migrations for those models *must be in front office* and +back office will just have a model file with custom code if needed. + +When generating active scaffold - migration is generated by default so it +needs to be removed before using it. + + + + diff --git a/ribica-front-api/app.rb b/ribica-front-api/app.rb new file mode 100644 index 0000000..460aa9a --- /dev/null +++ b/ribica-front-api/app.rb @@ -0,0 +1,21 @@ +require 'sinatra' +require 'sinatra/activerecord' +require './config' +require 'json' + +Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file } + +set :bind, '0.0.0.0' + +before do + content_type :json + # TODO: before running to production change this so that only specific + # domain is allowed + headers 'Access-Control-Allow-Origin' => '*', + 'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST'] +end + + +Dir[File.dirname(__FILE__) + '/controllers/*.rb'].each {|file| require file } + + diff --git a/ribica-front-api/config.rb.example b/ribica-front-api/config.rb.example new file mode 100644 index 0000000..b1b8bdf --- /dev/null +++ b/ribica-front-api/config.rb.example @@ -0,0 +1,12 @@ +db = URI.parse('postgres://postgres:testni_hamo2@localhost/ribica') + + + +ActiveRecord::Base.establish_connection( + :adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme, + :host => db.host, + :username => db.user, + :password => db.password, + :database => db.path[1..-1], + :encoding => 'utf8' +) diff --git a/ribica-front-api/config.ru b/ribica-front-api/config.ru new file mode 100644 index 0000000..76a6edf --- /dev/null +++ b/ribica-front-api/config.ru @@ -0,0 +1,2 @@ +require './app' +run Sinatra::Application diff --git a/ribica-front-api/controllers/category.rb b/ribica-front-api/controllers/category.rb new file mode 100644 index 0000000..fa6a47d --- /dev/null +++ b/ribica-front-api/controllers/category.rb @@ -0,0 +1,10 @@ + + +get '/category' do + Category.order(:name).all.to_json(include: :sub_categories) +end + +get '/category/:id' do + id = params[:id].to_i + Category.find(id).to_json(include: :sub_categories) +end \ No newline at end of file diff --git a/ribica-front-api/controllers/common_for_controllers.rb b/ribica-front-api/controllers/common_for_controllers.rb new file mode 100644 index 0000000..a66ccd9 --- /dev/null +++ b/ribica-front-api/controllers/common_for_controllers.rb @@ -0,0 +1,5 @@ + +# converts list of parameters to array of integers +def mass_to_i(*id_strings) + id_strings.map(&:to_i) +end \ No newline at end of file diff --git a/ribica-front-api/controllers/item.rb b/ribica-front-api/controllers/item.rb new file mode 100644 index 0000000..d4a27dc --- /dev/null +++ b/ribica-front-api/controllers/item.rb @@ -0,0 +1,67 @@ + + +def prepare_items_for_mass_display(items) + items.to_json( + :except => [:created_at, :current_input_price, :stock, :on_display], + :include => [ + :unit , + :multi_media_descriptions , + :sub_category + ]) +end + + + + +def offset_and_limit_invalid?(offset, limit) + offset < 0 or limit <= 0 or limit > 100 +end + + +# gets single item for detailed display (like comments etc. ) # TODO: change when comments are added +get '/item/:id' do |id_s| + item = Item.find(id_s.to_i) + + prepare_items_for_mass_display(item) +end + + +# gets items regardless of classification ( useful for frontpage ) +get '/item/offset/:offset/limit/:limit' do |offset_s, limit_s| + offset, limit = mass_to_i(offset_s, limit_s) + return [].to_json if offset_and_limit_invalid?(offset,limit) + + items = Item.best_selling(offset,limit) + prepare_items_for_mass_display(items) +end + + +# gets items in section ( useful for page showing single section ) +get '/item/section/:section_id/offset/:offset/limit/:limit' do |section_id_s, offset_s, limit_s| + section_id, offset, limit = mass_to_i(section_id_s, offset_s, limit_s) + input_invalid = offset_and_limit_invalid?(offset,limit) or section_id <= 0 + return [].to_json if input_invalid + + items = Item.best_selling_in_section(section_id, offset, limit) + prepare_items_for_mass_display(items) +end + +# gets items in category ( useful for page showing single category ) +get '/item/category/:category_id/offset/:offset/limit/:limit' do |category_id_s, offset_s, limit_s| + category_id, offset, limit = mass_to_i(category_id_s, offset_s, limit_s) + input_invalid = offset_and_limit_invalid?(offset,limit) or category_id <= 0 + return [].to_json if input_invalid + + items = Item.best_selling_in_category(category_id, offset,limit) + prepare_items_for_mass_display(items) +end + +# gets items in sub category ( useful for page showing single sub_category ) +get '/item/sub_category/:sub_category_id/offset/:offset/limit/:limit' do |sub_category_id_s, offset_s, limit_s| + sub_category_id, offset, limit = mass_to_i(sub_category_id_s, offset_s, limit_s) + input_invalid = offset_and_limit_invalid?(offset,limit) or sub_category_id <= 0 + return [].to_json if input_invalid + + items = Item.best_selling_in_sub_category(sub_category_id, offset, limit) + prepare_items_for_mass_display(items) +end \ No newline at end of file diff --git a/ribica-front-api/controllers/section.rb b/ribica-front-api/controllers/section.rb new file mode 100644 index 0000000..eb22147 --- /dev/null +++ b/ribica-front-api/controllers/section.rb @@ -0,0 +1,10 @@ +get '/section' do + Section.order(:name).all.to_json(:include => + [:categories => { :include => :sub_categories }]) +end + +get '/section/:id' do + Section.find(params[:id].to_i).to_json(:include => [ + :categories => { :include => :sub_categories } ]) + +end diff --git a/ribica-front-api/db/migrate/20150114051135_create_categories.rb b/ribica-front-api/db/migrate/20150114051135_create_categories.rb new file mode 100644 index 0000000..5969c73 --- /dev/null +++ b/ribica-front-api/db/migrate/20150114051135_create_categories.rb @@ -0,0 +1,7 @@ +class CreateCategories < ActiveRecord::Migration + def change + create_table :categories do |t| + t.string :name + end + end +end diff --git a/ribica-front-api/db/migrate/20150116055430_create_sub_categories.rb b/ribica-front-api/db/migrate/20150116055430_create_sub_categories.rb new file mode 100644 index 0000000..5a84c3d --- /dev/null +++ b/ribica-front-api/db/migrate/20150116055430_create_sub_categories.rb @@ -0,0 +1,8 @@ +class CreateSubCategories < ActiveRecord::Migration + def change + create_table :sub_categories do |t| + t.string :name + t.integer :category_id + end + end +end diff --git a/ribica-front-api/db/migrate/20150117094552_create_sections.rb b/ribica-front-api/db/migrate/20150117094552_create_sections.rb new file mode 100644 index 0000000..23a6cf2 --- /dev/null +++ b/ribica-front-api/db/migrate/20150117094552_create_sections.rb @@ -0,0 +1,7 @@ +class CreateSections < ActiveRecord::Migration + def change + create_table :sections do |t| + t.string :name + end + end +end diff --git a/ribica-front-api/db/migrate/20150117100744_add_sectionid_to_categories.rb b/ribica-front-api/db/migrate/20150117100744_add_sectionid_to_categories.rb new file mode 100644 index 0000000..8e06760 --- /dev/null +++ b/ribica-front-api/db/migrate/20150117100744_add_sectionid_to_categories.rb @@ -0,0 +1,9 @@ +class AddSectionidToCategories < ActiveRecord::Migration + def self.up + add_column :categories, :section_id, :integer + end + + def self.down + remove_column :categories, :section_id + end +end diff --git a/ribica-front-api/db/migrate/20150118035004_create_units.rb b/ribica-front-api/db/migrate/20150118035004_create_units.rb new file mode 100644 index 0000000..0a64bb2 --- /dev/null +++ b/ribica-front-api/db/migrate/20150118035004_create_units.rb @@ -0,0 +1,8 @@ +class CreateUnits < ActiveRecord::Migration + def change + create_table :units do |t| + t.string :name + t.string :short_name, limit: 4 + end + end +end diff --git a/ribica-front-api/db/migrate/20150118040134_create_items.rb b/ribica-front-api/db/migrate/20150118040134_create_items.rb new file mode 100644 index 0000000..f7bab85 --- /dev/null +++ b/ribica-front-api/db/migrate/20150118040134_create_items.rb @@ -0,0 +1,18 @@ +class CreateItems < ActiveRecord::Migration + def change + create_table :items do |t| + t.string :name + t.string :code, limit: 10 + t.decimal :current_input_price, precision: 5, scale: 2 + t.decimal :list_price, precision: 5, scale: 2 + t.integer :unit_id + t.decimal :units_in_pack, precision: 5, scale: 3 + t.text :description + t.integer :sub_category_id + t.integer :stock + t.boolean :on_display + + t.timestamps null: false + end + end +end diff --git a/ribica-front-api/db/migrate/20150118041606_create_media_types.rb b/ribica-front-api/db/migrate/20150118041606_create_media_types.rb new file mode 100644 index 0000000..76e4bc7 --- /dev/null +++ b/ribica-front-api/db/migrate/20150118041606_create_media_types.rb @@ -0,0 +1,7 @@ +class CreateMediaTypes < ActiveRecord::Migration + def change + create_table :media_types do |t| + t.string :name + end + end +end diff --git a/ribica-front-api/db/migrate/20150118054718_create_multi_media_descriptions.rb b/ribica-front-api/db/migrate/20150118054718_create_multi_media_descriptions.rb new file mode 100644 index 0000000..b7987f6 --- /dev/null +++ b/ribica-front-api/db/migrate/20150118054718_create_multi_media_descriptions.rb @@ -0,0 +1,11 @@ +class CreateMultiMediaDescriptions < ActiveRecord::Migration + def change + create_table :multi_media_descriptions do |t| + t.string :url + t.integer :item_id + t.integer :media_type_id + + t.timestamps null: false + end + end +end diff --git a/ribica-front-api/db/migrate/20150118082022_add_tags_to_item.rb b/ribica-front-api/db/migrate/20150118082022_add_tags_to_item.rb new file mode 100644 index 0000000..c3bf0e4 --- /dev/null +++ b/ribica-front-api/db/migrate/20150118082022_add_tags_to_item.rb @@ -0,0 +1,5 @@ +class AddTagsToItem < ActiveRecord::Migration + def change + add_column :items, :tags, :string + end +end diff --git a/ribica-front-api/db/schema.rb b/ribica-front-api/db/schema.rb new file mode 100644 index 0000000..f8c845f --- /dev/null +++ b/ribica-front-api/db/schema.rb @@ -0,0 +1,68 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20150118082022) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "categories", force: :cascade do |t| + t.string "name" + t.integer "section_id" + end + + create_table "items", force: :cascade do |t| + t.string "name" + t.string "code", limit: 10 + t.decimal "current_input_price", precision: 5, scale: 2 + t.decimal "list_price", precision: 5, scale: 2 + t.integer "unit_id" + t.decimal "units_in_pack", precision: 5, scale: 3 + t.text "description" + t.integer "sub_category_id" + t.integer "stock" + t.boolean "on_display" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "tags" + end + + create_table "media_types", force: :cascade do |t| + t.string "name" + end + + create_table "multi_media_descriptions", force: :cascade do |t| + t.string "url" + t.integer "item_id" + t.integer "media_type_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "sections", force: :cascade do |t| + t.string "name" + end + + create_table "sub_categories", force: :cascade do |t| + t.string "name" + t.integer "category_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "units", force: :cascade do |t| + t.string "name" + t.string "short_name", limit: 4 + end + +end diff --git a/ribica-front-api/models/category.rb b/ribica-front-api/models/category.rb new file mode 100644 index 0000000..df3f6f4 --- /dev/null +++ b/ribica-front-api/models/category.rb @@ -0,0 +1,4 @@ +class Category < ActiveRecord::Base + has_many :sub_categories + belongs_to :section +end diff --git a/ribica-front-api/models/item.rb b/ribica-front-api/models/item.rb new file mode 100644 index 0000000..e9a3103 --- /dev/null +++ b/ribica-front-api/models/item.rb @@ -0,0 +1,12 @@ +class Item < ActiveRecord::Base + belongs_to :unit + has_many :multi_media_descriptions + belongs_to :sub_category + + # TODO: change "best selling" algorithm when get some data - currently it's only sorted by earnings + scope :best_selling, -> (offset, limit) { where(:on_display => true).order("(list_price - current_input_price) DESC").limit(limit).offset(offset) } + scope :best_selling_in_sub_category, -> (sub_category_id, offset, limit) { best_selling(offset, limit).where(sub_category_id: sub_category_id) } + scope :best_selling_in_category, -> (category_id, offset, limit) { best_selling(offset, limit).joins( sub_category: [:category] ).where(["category_id = ?", category_id]) } + scope :best_selling_in_section, -> (section_id, offset, limit) { best_selling(offset, limit).joins( sub_category: [category: [ :section ]] ).where( ["section_id = ?", section_id] ) } + +end diff --git a/ribica-front-api/models/media_type.rb b/ribica-front-api/models/media_type.rb new file mode 100644 index 0000000..97977ac --- /dev/null +++ b/ribica-front-api/models/media_type.rb @@ -0,0 +1,3 @@ +class MediaType < ActiveRecord::Base + has_many :multi_media_descriptions +end diff --git a/ribica-front-api/models/multi_media_description.rb b/ribica-front-api/models/multi_media_description.rb new file mode 100644 index 0000000..57f7a26 --- /dev/null +++ b/ribica-front-api/models/multi_media_description.rb @@ -0,0 +1,5 @@ +class MultiMediaDescription < ActiveRecord::Base + belongs_to :item + belongs_to :media_type + +end diff --git a/ribica-front-api/models/section.rb b/ribica-front-api/models/section.rb new file mode 100644 index 0000000..d255568 --- /dev/null +++ b/ribica-front-api/models/section.rb @@ -0,0 +1,3 @@ +class Section < ActiveRecord::Base + has_many :categories +end diff --git a/ribica-front-api/models/sub_category.rb b/ribica-front-api/models/sub_category.rb new file mode 100644 index 0000000..9bab403 --- /dev/null +++ b/ribica-front-api/models/sub_category.rb @@ -0,0 +1,5 @@ +class SubCategory < ActiveRecord::Base + belongs_to :category +end + + diff --git a/ribica-front-api/models/unit.rb b/ribica-front-api/models/unit.rb new file mode 100644 index 0000000..ee09039 --- /dev/null +++ b/ribica-front-api/models/unit.rb @@ -0,0 +1,2 @@ +class Unit < ActiveRecord::Base +end diff --git a/ribica-front-api/rakefile.rb b/ribica-front-api/rakefile.rb new file mode 100644 index 0000000..e2ec847 --- /dev/null +++ b/ribica-front-api/rakefile.rb @@ -0,0 +1,3 @@ +require "./app" +require "./config" +require "sinatra/activerecord/rake" diff --git a/ribica-front-ui/.gitignore b/ribica-front-ui/.gitignore new file mode 100644 index 0000000..d3585cc --- /dev/null +++ b/ribica-front-ui/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release +build/*.js +build/*.css + +# Dependency directory +# Commenting this out is preferred by some people, see +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- +node_modules + +# Users Environment Variables +.lock-wscript diff --git a/ribica-front-ui/Gruntfile.js b/ribica-front-ui/Gruntfile.js new file mode 100644 index 0000000..a76e1a0 --- /dev/null +++ b/ribica-front-ui/Gruntfile.js @@ -0,0 +1,62 @@ +module.exports = function(grunt) { + grunt.initConfig({ + browserify: { + basic: { + src: ['app/ribica.js'], + dest: 'build/ribica.bundle.js', + options: { + browserifyOptions: { + standalone: 'RIBICA', + debug: true, + }, + transform: ['reactify'], + watch: true + } + + } + }, + watch: { + files: ['build/ribica.bundle.js', 'app/css/*.css'], + tasks: ['concat:css', 'concat:js'] + }, + connect: { + server: { + options: { + port: 3001, + base: 'build' + } + } + }, + uglify: { + my_target: { + files: { + 'build/ribica.min.js': ['build/ribica.js'] + } + } + }, + concat: { + css: { + src: [ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'app/css/*.css' + + ], + dest: 'build/ribica.css' + }, + js: { + src: ['node_modules/jquery/dist/jquery.min.js', 'node_modules/bootstrap/dist/css/bootstrap.min.js', 'build/ribica.bundle.js'], + dest: 'build/ribica.js' + } + } + + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-browserify'); + grunt.loadNpmTasks('grunt-contrib-connect'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + + grunt.registerTask('default', []); + grunt.registerTask('dev', ['browserify', 'concat:css', 'concat:js', 'connect:server:keepalive']); +}; diff --git a/ribica-front-ui/README.md b/ribica-front-ui/README.md new file mode 100644 index 0000000..e1a4838 --- /dev/null +++ b/ribica-front-ui/README.md @@ -0,0 +1,14 @@ +# Ribica front office + +Front end shop-a (javascript) + +All the code is in the ``app`` folder. This structure will evolve over time. + +## Getting started + +``npm install`` + +``grunt dev`` (starts dev server and watches for changes apparently) + +Visit ``http://localhost:3001/index.html`` + diff --git a/ribica-front-ui/app/app.js b/ribica-front-ui/app/app.js new file mode 100644 index 0000000..f7fc069 --- /dev/null +++ b/ribica-front-ui/app/app.js @@ -0,0 +1,14 @@ +var Router = require('./router'), + Backbone = require('backbone'); + +var App = function() { + this.bootstrap = function() { + // here goes all app initialization and bootstraping logic + this.router = new Router(); + Backbone.history.start(); + }; +}; + + +var app = new App(); +module.exports = app; diff --git a/ribica-front-ui/app/components/itemList.js b/ribica-front-ui/app/components/itemList.js new file mode 100644 index 0000000..463e636 --- /dev/null +++ b/ribica-front-ui/app/components/itemList.js @@ -0,0 +1,30 @@ +var React = require('react'); +var SingleItem = require('./singleItem'); +var ItemCollection = require('../models/itemCollection.js'); + +var ItemList = React.createClass({ + + + + render: function() { + var items = this.props.items.models.map( function(item) { + return ( + + ); + }); + + return ( +
+
+
    + {items} +
+
+
+ ); + }, + +}); + + +module.exports = ItemList; diff --git a/ribica-front-ui/app/components/sectionsListComponent.js b/ribica-front-ui/app/components/sectionsListComponent.js new file mode 100644 index 0000000..7421f4a --- /dev/null +++ b/ribica-front-ui/app/components/sectionsListComponent.js @@ -0,0 +1,61 @@ +var React = require('react'), + SectionCollection = require('../models/sectionCollection'), + Section = require('../models/section'); + +var SectionItem = React.createClass({ + subCatClicked: function() { + alert('you clicked on subcategory'); + }, + render: function() { + var catStyle = { + paddingLeft: '20px' + }; + var subStyle = { + paddingLeft: '20px' + }; + + var style = { + paddingLeft: '30px' + }; + var self = this; + + return ( +
  • + + {this.props.data.get('name')} +
    + { + this.props.data.get('categories').map(function(cat) { + return (
    {cat.name} + + + { cat.sub_categories.map(function(sc) { + return
    {sc.name}
    + }) } +
    ) + }) + } +
    +
  • + ); + } +}); + +var SectionsListComponent = React.createClass({ + render: function() { + return ( +
    + + +
    + ); + } +}); + +module.exports = SectionsListComponent; diff --git a/ribica-front-ui/app/components/singleItem.js b/ribica-front-ui/app/components/singleItem.js new file mode 100644 index 0000000..698a618 --- /dev/null +++ b/ribica-front-ui/app/components/singleItem.js @@ -0,0 +1,23 @@ +var React = require('react'); + +var SingleItem = React.createClass({ + render: function() { + + var firstImage = this.state.item.get('multi_media_descriptions')[0]; + firstImage = firstImage || { url: "http://res.cloudinary.com/lfvt7ps2n/image/upload/c_crop,g_center,w_300/v1421732950/http_www.asms.ru_bitrix_templates_main_images_nophoto_irnofq.png" } ; + return ( +
    + +

    { this.state.item.get('name') }

    +
    { this.state.item.get('list_price') } KM
    +
    + ); + }, + + getInitialState: function () { + return { item: this.props.item }; + }, +}); + + +module.exports = SingleItem; diff --git a/ribica-front-ui/app/controllers/homeController.js b/ribica-front-ui/app/controllers/homeController.js new file mode 100644 index 0000000..b6bed7f --- /dev/null +++ b/ribica-front-ui/app/controllers/homeController.js @@ -0,0 +1,13 @@ +var StartPageSectionsView = require('../views/startPageSectionsView'), + StartPageItemsView = require('../views/startPageItemsView'); + +function HomeController() { + console.log('HomeController'); + var sectionsView = new StartPageSectionsView(); + sectionsView.render(); + + var itemsView = new StartPageItemsView(); + itemsView.render(); +} + +module.exports = HomeController; diff --git a/ribica-front-ui/app/css/items.css b/ribica-front-ui/app/css/items.css new file mode 100644 index 0000000..1c75170 --- /dev/null +++ b/ribica-front-ui/app/css/items.css @@ -0,0 +1,22 @@ +.single_item { + + text-align: center; + vertical-align: center; + display: inline-block; + +} + +.single_item img { + padding: 5px; + +} + +.single_item div { + width: 315px; +} + +.single_item h1 { + font-size: 15px; + text-decoration: bold; + +} \ No newline at end of file diff --git a/ribica-front-ui/app/globals.js b/ribica-front-ui/app/globals.js new file mode 100644 index 0000000..4f46fce --- /dev/null +++ b/ribica-front-ui/app/globals.js @@ -0,0 +1,3 @@ +module.exports = { + ApiUrl: 'http://localhost:4567' +}; diff --git a/ribica-front-ui/app/models/item.js b/ribica-front-ui/app/models/item.js new file mode 100644 index 0000000..3b14f33 --- /dev/null +++ b/ribica-front-ui/app/models/item.js @@ -0,0 +1,9 @@ +var Backbone = require('backbone'); +var Globals = require('../globals'); + +var Item = Backbone.Model.extend({ + urlRoot : Globals.ApiUrl + '/item' +}); + +module.exports = Item; + diff --git a/ribica-front-ui/app/models/itemCollection.js b/ribica-front-ui/app/models/itemCollection.js new file mode 100644 index 0000000..83399e2 --- /dev/null +++ b/ribica-front-ui/app/models/itemCollection.js @@ -0,0 +1,38 @@ +var Backbone = require('backbone'), + Item = require('./item'), + Globals = require('../globals'); + +var ItemCollection = Backbone.Collection.extend({ + + setLimit: function(limit) { + this.queryLimit = limit; + }, + + setOffset: function(offset) { + this.offset = offset; + }, + + classificationTypeUrlParts: ['','section','category','sub_category'], + + setClassificationType: function(type) { + this.classificationType = type; + } , + + setClassificatonId: function(id) { + this.classificationId = id; + }, + + model: Item, + url: function() { + var path = '/item' + if(this.classificationType > 0) { + // eg. http://localhost:4567/item/section/1/offset/0/limit/10 + var urlPart = this.classificationTypeUrlParts[this.classificationType]; + path += "/" + urlPart + "/" + this.classificationId + } // else eg. http://localhost:4567/item/offset/0/limit/10 + path += "/offset/" + this.offset + "/limit/" + this.queryLimit; + return Globals.ApiUrl + path; + } +}); + +module.exports = ItemCollection; diff --git a/ribica-front-ui/app/models/section.js b/ribica-front-ui/app/models/section.js new file mode 100644 index 0000000..a1453bf --- /dev/null +++ b/ribica-front-ui/app/models/section.js @@ -0,0 +1,12 @@ +var Backbone = require('backbone'); +var Globals = require('../globals'); + +var Section = Backbone.Model.extend({ + urlRoot : Globals.ApiUrl + '/section', + defaults : { + name: '' + } +}); + + +module.exports = Section; diff --git a/ribica-front-ui/app/models/sectionCollection.js b/ribica-front-ui/app/models/sectionCollection.js new file mode 100644 index 0000000..0ea9e82 --- /dev/null +++ b/ribica-front-ui/app/models/sectionCollection.js @@ -0,0 +1,10 @@ +var Backbone = require('backbone'), + Section = require('./section'), + Globals = require('../globals'); + +var SectionCollection = Backbone.Collection.extend({ + model: Section, + url: Globals.ApiUrl + '/section' +}); + +module.exports = SectionCollection; diff --git a/ribica-front-ui/app/ribica.js b/ribica-front-ui/app/ribica.js new file mode 100644 index 0000000..84ac24c --- /dev/null +++ b/ribica-front-ui/app/ribica.js @@ -0,0 +1,7 @@ +var Backbone = require('backbone'); +var app = require('./app'); +Backbone.$ = $; + +module.exports = { + App : app +} diff --git a/ribica-front-ui/app/router.js b/ribica-front-ui/app/router.js new file mode 100644 index 0000000..a5ab82c --- /dev/null +++ b/ribica-front-ui/app/router.js @@ -0,0 +1,11 @@ +var Backbone = require('backbone'), + HomeController = require('./controllers/homeController'); + +var Router = Backbone.Router.extend({ + routes : { + "home" : HomeController, + "*default": HomeController + } +}); + +module.exports = Router; diff --git a/ribica-front-ui/app/views/startPageItemsView.js b/ribica-front-ui/app/views/startPageItemsView.js new file mode 100644 index 0000000..43393cd --- /dev/null +++ b/ribica-front-ui/app/views/startPageItemsView.js @@ -0,0 +1,34 @@ +var Backbone = require('backbone'), + React = require('react'), + ItemList = require('../components/itemList'), + ItemCollection = require('../models/itemCollection'), + Item = require('../models/item'); + +var StartPageItemsView = Backbone.View.extend({ + el: '#content', + template: '
    ', + initialize: function() { + //alert('StartPageItemsView init'); + }, + render: function() { + this.$el.append(this.template); + + var items = new ItemCollection(); + items.setClassificationType(0); + items.setLimit(30); + items.setOffset(0); + var self = this; + items.fetch({success: function() { + + // var resultItems = items.map(function (a) { return a.attributes }); + React.render(new ItemList({ + items: items + }), + self.$('.item-list-container').get(0)); + + }}); + return this; + } +}); + +module.exports = StartPageItemsView; diff --git a/ribica-front-ui/app/views/startPageSectionsView.js b/ribica-front-ui/app/views/startPageSectionsView.js new file mode 100644 index 0000000..b592f68 --- /dev/null +++ b/ribica-front-ui/app/views/startPageSectionsView.js @@ -0,0 +1,35 @@ +var Backbone = require('backbone'), + React = require('react'), + SectionsViewComponent = require('../components/sectionsListComponent'), + SectionCollection = require('../models/sectionCollection'), + Section = require('../models/section'); + +var StartPageSectionsView = Backbone.View.extend({ + el: '#content', + template: '
    ', + initialize: function() { + //alert('StartPageSectionsView init'); + }, + render: function() { + this.$el.append(this.template); + + var sections = new SectionCollection(); + var self = this; + sections.fetch({success: function() { + + console.log(sections); + React.render(new SectionsViewComponent({ + handleClick: self.clickHandler.bind(self), + sections: sections + }), + self.$('.section-list-container').get(0)); + + }}); + return this; + }, + clickHandler : function() { + alert('the item was clicked!'); + } +}); + +module.exports = StartPageSectionsView; diff --git a/ribica-front-ui/package.json b/ribica-front-ui/package.json new file mode 100644 index 0000000..1d44b33 --- /dev/null +++ b/ribica-front-ui/package.json @@ -0,0 +1,28 @@ +{ + "name": "ribica-ui-stack", + "version": "0.0.0", + "description": "Ribica UI app", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "BSD-2-Clause", + "devDependencies": { + "grunt-cli": "~0.1.13", + "grunt": "~0.4.5", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-concat": "~0.5.0", + "grunt-browserify": "~3.2.1", + "grunt-contrib-connect": "~0.9.0", + "browserify": "~8.1.0", + "reactify": "~0.17.1", + "grunt-contrib-uglify": "~0.7.0" + }, + "dependencies": { + "react": "~0.12.2", + "backbone": "~1.1.2", + "bootstrap": "~3.3.1", + "jquery": "~2.1.3" + } +}