diff --git a/back-office/app/models/link_banner.rb b/back-office/app/models/link_banner.rb index dc95b74..44a468a 100644 --- a/back-office/app/models/link_banner.rb +++ b/back-office/app/models/link_banner.rb @@ -3,7 +3,6 @@ class LinkBanner < ActiveRecord::Base belongs_to :category belongs_to :section belongs_to :sub_category - has_many :items validates_presence_of :beginning, :ending, :image_url validate :validate_beginning_before_ending diff --git a/front-api/controllers/link_banner.rb b/front-api/controllers/link_banner.rb new file mode 100644 index 0000000..96a5c4e --- /dev/null +++ b/front-api/controllers/link_banner.rb @@ -0,0 +1,6 @@ + + +get '/link_banner' do + LinkBanner.all.to_json +end + diff --git a/front-api/models/link_banner.rb b/front-api/models/link_banner.rb new file mode 100644 index 0000000..0da2c99 --- /dev/null +++ b/front-api/models/link_banner.rb @@ -0,0 +1,7 @@ +class LinkBanner < ActiveRecord::Base + belongs_to :category + belongs_to :section + belongs_to :sub_category + belongs_to :item + +end \ No newline at end of file diff --git a/front-ui/app/components/browsing/byCategory.js b/front-ui/app/components/browsing/byCategory.js index d6e646c..fa5541a 100644 --- a/front-ui/app/components/browsing/byCategory.js +++ b/front-ui/app/components/browsing/byCategory.js @@ -10,6 +10,7 @@ var React = require('react'), NavigationStore = require('../../stores/navigationStore'), ItemList = require('../items/itemList'), NavigationActions = require('../../actions/navigationActions'), + LinkBanner = require('../linkBanner/linkBanner'), Globals = require('../../globals'); var ByCategory = React.createClass({ @@ -50,6 +51,10 @@ var ByCategory = React.createClass({ render: function() { var self = this; + + + + return (
- Hvala na narudžbi. Naša zaposlenica će vas kontaktirati da ugovori detalje o preuzimanju.
+ +Registrujte se kako biste dobili informaciju o popustima, imali pregled svih vaših narudžbi, koristili Baby Shower, Predlagač poklona te kalendar događaja.
@@ -28,31 +31,7 @@ var ThankYouPage = React.createClass({ ); - }, - - // Add change listeners to stores - /* - , - componentDidMount: function() { - CartStore.addChangeListener(this._onChange); - CartActions.load(); - }, - - componentWillUnmount: function () { - CartStore.removeChangeListener(this._onChange); - }, - - _onChange: function () { - if (this.isMounted()) { - this.setState(CartStore.getWholeCartState()); - } - - }, - - - getInitialState: function () { - return CartStore.getWholeCartState(); - }*/ + } }); diff --git a/front-ui/app/models/linkBanner.js b/front-ui/app/models/linkBanner.js new file mode 100644 index 0000000..ab453be --- /dev/null +++ b/front-ui/app/models/linkBanner.js @@ -0,0 +1,8 @@ +var Backbone = require('backbone'); +var Globals = require('../globals'); +var LinkBanner = Backbone.Model.extend({ + urlRoot : Globals.ApiUrl + '/link_banner' +}); + +module.exports = LinkBanner; + diff --git a/front-ui/app/models/linkBannerCollection.js b/front-ui/app/models/linkBannerCollection.js new file mode 100644 index 0000000..c425c86 --- /dev/null +++ b/front-ui/app/models/linkBannerCollection.js @@ -0,0 +1,10 @@ +var Backbone = require('backbone'), + LinkBanner = require('./linkBanner'), + Globals = require('../globals'); + +var LinkBannerCollection = Backbone.Collection.extend({ + model: LinkBanner, + url: Globals.ApiUrl + '/link_banner' +}); + +module.exports = LinkBannerCollection; diff --git a/front-ui/app/models/place.js b/front-ui/app/models/place.js index 0abd06b..dcc81b4 100644 --- a/front-ui/app/models/place.js +++ b/front-ui/app/models/place.js @@ -20,4 +20,4 @@ var Place = Backbone.Model.extend({ -module.exports = Place; +module.exports = Place; \ No newline at end of file diff --git a/front-ui/app/stores/initializationStore.js b/front-ui/app/stores/initializationStore.js index 3f54bad..0b688e2 100644 --- a/front-ui/app/stores/initializationStore.js +++ b/front-ui/app/stores/initializationStore.js @@ -1,25 +1,96 @@ var AppDispatcher = require('../dispatcher/appDispatcher'); var EventEmitter = require('events').EventEmitter; var Cart = require('../models/cart'); +var LinkBannerCollection = require('../models/linkBannerCollection'); var InitializationConstants = require('../constants/initializationConstants') var _ = require('underscore'); +var banners = {}; + var state = { isEverythingReadyToStartTheShow: false -} +}; var initializeTheShop = function () { // for now only guarantee that cart is created var cart = new Cart(); cart.save(null, { success: function () { + state.isEverythingReadyToStartTheShow = true; InitializationStore.emitChange(); + } }) -} + + initializeBanners(); + + +}; + + +var putBannerOnItsPlace = function(banners, lb) { + + + if(lb.get('start_page')) banners['startPage'].push(lb); + if(lb.get('thank_you_page')) banners['thankYouPage'].push(lb); + if(lb.get('search_result_page')) banners['searchResultPage'].push(lb); + if(lb.get('checkout_page')) banners['checkoutPage'].push(lb); + + var itemId = lb.get('item_id'); + if (itemId) { + banners['item'][itemId] = banners['item'][itemId] || []; + banners['item'][itemId].push(lb); + } + + var sectionId = lb.get('section_id'); + if (sectionId) { + banners['section'][sectionId] = banners['section'][sectionId] || []; + banners['section'][sectionId].push(lb); + } + + var categoryId = lb.get('category_id'); + if (categoryId) { + banners['category'][categoryId] = banners['category'][categoryId] || []; + banners['category'][categoryId].push(lb); + } + + var subCategoryId = lb.get('sub_category_id'); + if (subCategoryId) { + banners['subCategory'][subCategoryId] = banners['subCategory'][subCategoryId] || []; + banners['subCategory'][subCategoryId].push(lb); + } + +}; + +var initializeBanners = function() { + banners["startPage"] = []; + banners["searchResultPage"] = []; + banners["thankYouPage"] = []; + banners["checkoutPage"] = []; + banners["header"] = []; + banners["footer"] = []; + banners["section"] = {}; + banners["category"] = {}; + banners["subCategory"] = {}; + banners["item"] = {}; + + var lbc = new LinkBannerCollection(); + lbc.fetch({ + success: function() { + lbc.each(function(linkBanner) { + putBannerOnItsPlace( banners, linkBanner ); + } ); + + InitializationStore.emitChange(); + } + }); + +}; + + // Extend ItemStore with EventEmitter to add eventing capabilities var InitializationStore = _.extend({}, EventEmitter.prototype, { @@ -28,6 +99,11 @@ var InitializationStore = _.extend({}, EventEmitter.prototype, { return state; }, + + getBanners: function() { + return banners; + }, + // Emit Change event emitChange: function() { console.log("InitializationStore change!");