banners are show now !
This commit is contained in:
@@ -3,7 +3,6 @@ class LinkBanner < ActiveRecord::Base
|
|||||||
belongs_to :category
|
belongs_to :category
|
||||||
belongs_to :section
|
belongs_to :section
|
||||||
belongs_to :sub_category
|
belongs_to :sub_category
|
||||||
has_many :items
|
|
||||||
|
|
||||||
validates_presence_of :beginning, :ending, :image_url
|
validates_presence_of :beginning, :ending, :image_url
|
||||||
validate :validate_beginning_before_ending
|
validate :validate_beginning_before_ending
|
||||||
|
|||||||
6
front-api/controllers/link_banner.rb
Normal file
6
front-api/controllers/link_banner.rb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
get '/link_banner' do
|
||||||
|
LinkBanner.all.to_json
|
||||||
|
end
|
||||||
|
|
||||||
7
front-api/models/link_banner.rb
Normal file
7
front-api/models/link_banner.rb
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
class LinkBanner < ActiveRecord::Base
|
||||||
|
belongs_to :category
|
||||||
|
belongs_to :section
|
||||||
|
belongs_to :sub_category
|
||||||
|
belongs_to :item
|
||||||
|
|
||||||
|
end
|
||||||
@@ -10,6 +10,7 @@ var React = require('react'),
|
|||||||
NavigationStore = require('../../stores/navigationStore'),
|
NavigationStore = require('../../stores/navigationStore'),
|
||||||
ItemList = require('../items/itemList'),
|
ItemList = require('../items/itemList'),
|
||||||
NavigationActions = require('../../actions/navigationActions'),
|
NavigationActions = require('../../actions/navigationActions'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
Globals = require('../../globals');
|
Globals = require('../../globals');
|
||||||
|
|
||||||
var ByCategory = React.createClass({
|
var ByCategory = React.createClass({
|
||||||
@@ -50,6 +51,10 @@ var ByCategory = React.createClass({
|
|||||||
render: function() {
|
render: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className='col-md-2'>
|
<div className='col-md-2'>
|
||||||
@@ -78,6 +83,8 @@ var ByCategory = React.createClass({
|
|||||||
|
|
||||||
<div className='col-md-10'>
|
<div className='col-md-10'>
|
||||||
|
|
||||||
|
<LinkBanner locationName="category" locationId={Number(this.getParams().id)} />
|
||||||
|
|
||||||
<h3> Kategorija - {this.state.category.get('name')}</h3>
|
<h3> Kategorija - {this.state.category.get('name')}</h3>
|
||||||
Number of items in this category: {this.state.items.length}
|
Number of items in this category: {this.state.items.length}
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var React = require('react'),
|
|||||||
SectionActions = require('../../actions/sectionActions.js'),
|
SectionActions = require('../../actions/sectionActions.js'),
|
||||||
NavigationActions = require('../../actions/navigationActions'),
|
NavigationActions = require('../../actions/navigationActions'),
|
||||||
Section = require('../../models/section'),
|
Section = require('../../models/section'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
Category = require('../../models/category');
|
Category = require('../../models/category');
|
||||||
|
|
||||||
var BySection = React.createClass({
|
var BySection = React.createClass({
|
||||||
@@ -28,6 +29,8 @@ var BySection = React.createClass({
|
|||||||
Here goes section for refining search, by section
|
Here goes section for refining search, by section
|
||||||
</div>
|
</div>
|
||||||
<div className='col-md-10'>
|
<div className='col-md-10'>
|
||||||
|
|
||||||
|
<LinkBanner locationName="section" locationId={Number(this.getParams().id)} />
|
||||||
<div className='h3'>
|
<div className='h3'>
|
||||||
Najprodavanije u sekciji {this.state.section.get('name')}
|
Najprodavanije u sekciji {this.state.section.get('name')}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ var React = require('react'),
|
|||||||
NavigationActions = require('../../actions/navigationActions'),
|
NavigationActions = require('../../actions/navigationActions'),
|
||||||
SingleItem = require('../items/singleItem'),
|
SingleItem = require('../items/singleItem'),
|
||||||
Globals = require('../../globals'),
|
Globals = require('../../globals'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
CartTotal = require('./cartTotal');
|
CartTotal = require('./cartTotal');
|
||||||
|
|
||||||
|
|
||||||
@@ -35,7 +36,8 @@ var CartPage = React.createClass({
|
|||||||
|
|
||||||
console.log("bla :" , this.state.items.length);
|
console.log("bla :" , this.state.items.length);
|
||||||
var cartTotal = (
|
var cartTotal = (
|
||||||
<div className="row cart-total">
|
<div className="row cart-total">
|
||||||
|
|
||||||
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
||||||
<div className="col-md-1 span1">
|
<div className="col-md-1 span1">
|
||||||
<button className="btn btn-warning" onClick={this._onOrderClick}>Izgleda OK</button>
|
<button className="btn btn-warning" onClick={this._onOrderClick}>Izgleda OK</button>
|
||||||
@@ -56,6 +58,7 @@ var CartPage = React.createClass({
|
|||||||
return (
|
return (
|
||||||
|
|
||||||
<div className="cart-page center">
|
<div className="cart-page center">
|
||||||
|
<LinkBanner locationName="thankYouPage" />
|
||||||
{cartTotal}
|
{cartTotal}
|
||||||
{displayedItems}
|
{displayedItems}
|
||||||
{buySomethingMessage}
|
{buySomethingMessage}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ var React = require('react'),
|
|||||||
SingleItem = require('../items/singleItem'),
|
SingleItem = require('../items/singleItem'),
|
||||||
Globals = require('../../globals'),
|
Globals = require('../../globals'),
|
||||||
CartTotal = require('./cartTotal'),
|
CartTotal = require('./cartTotal'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
RibicaFormError = require('../shared/ribicaFormError');
|
RibicaFormError = require('../shared/ribicaFormError');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
51
front-ui/app/components/linkBanner/linkBanner.js
Normal file
51
front-ui/app/components/linkBanner/linkBanner.js
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
var React = require('react');
|
||||||
|
var ItemActions = require('../../actions/itemActions');
|
||||||
|
var NavigationActions = require('../../actions/navigationActions');
|
||||||
|
var InitializationStore = require('../../stores/initializationStore')
|
||||||
|
|
||||||
|
var Router = require('react-router');
|
||||||
|
|
||||||
|
var LinkBanner = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
locationName: React.PropTypes.string.isRequired,
|
||||||
|
locationId: React.PropTypes.number,
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
|
||||||
|
var banners = this.state.banners.map(function (banner) {
|
||||||
|
|
||||||
|
return <div key={"banner" + banner.get('id')}><a href={banner.get('link_url')}><img src={banner.get('image_url')} /></a></div>
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return (<div>{ banners }</div>);
|
||||||
|
|
||||||
|
},
|
||||||
|
getInitialState: function () {
|
||||||
|
|
||||||
|
|
||||||
|
var allBanners = InitializationStore.getBanners();
|
||||||
|
var locationId = this.props.locationId;
|
||||||
|
var locationName = this.props.locationName;
|
||||||
|
var bannersToShow = [];
|
||||||
|
|
||||||
|
if (locationId) {
|
||||||
|
bannersToShow = allBanners[locationName][locationId];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
bannersToShow = allBanners[locationName];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bannersToShow = bannersToShow || [];
|
||||||
|
|
||||||
|
|
||||||
|
return { banners: bannersToShow };
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = LinkBanner;
|
||||||
@@ -48,7 +48,7 @@ var RootApp = React.createClass({
|
|||||||
<Link to="app"><img src="https://res.cloudinary.com/lfvt7ps2n/image/upload/c_scale,w_132/v1426226452/ribica-ispunjava-zelje_nng0gn.png" /></Link>
|
<Link to="app"><img src="https://res.cloudinary.com/lfvt7ps2n/image/upload/c_scale,w_132/v1426226452/ribica-ispunjava-zelje_nng0gn.png" /></Link>
|
||||||
|
|
||||||
</h1>
|
</h1>
|
||||||
<div style={{float:'right'}}>
|
<div style= {{float:'right'}}>
|
||||||
<div style={{display: 'inline-block'}}>
|
<div style={{display: 'inline-block'}}>
|
||||||
<Link to="korpa">Završi narudžbu</Link><CartIcon /> |
|
<Link to="korpa">Završi narudžbu</Link><CartIcon /> |
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var React = require('react'),
|
|||||||
NavigationActions = require('../../actions/navigationActions'),
|
NavigationActions = require('../../actions/navigationActions'),
|
||||||
Globals = require('../../globals')
|
Globals = require('../../globals')
|
||||||
Router = require("react-router"),
|
Router = require("react-router"),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
Link = Router.Link;
|
Link = Router.Link;
|
||||||
|
|
||||||
var SearchStore = require('../../stores/searchStore');
|
var SearchStore = require('../../stores/searchStore');
|
||||||
@@ -24,6 +25,8 @@ var SearchResultsPage = React.createClass({
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
|
<LinkBanner locationName="searchResultPage" />
|
||||||
<h2>Rezultati pretrage za '{this.state.q}'</h2>
|
<h2>Rezultati pretrage za '{this.state.q}'</h2>
|
||||||
|
|
||||||
{content}
|
{content}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
var React = require('react'),
|
var React = require('react'),
|
||||||
Router = require('react-router'),
|
Router = require('react-router'),
|
||||||
RouteHandler = Router.RouteHandler,
|
RouteHandler = Router.RouteHandler,
|
||||||
AllItems = require('../items/allItems');
|
AllItems = require('../items/allItems'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner');
|
||||||
|
|
||||||
var StartPage = React.createClass({
|
var StartPage = React.createClass({
|
||||||
render : function() {
|
render : function() {
|
||||||
@@ -13,6 +14,7 @@ var StartPage = React.createClass({
|
|||||||
</div>
|
</div>
|
||||||
<div className='col-md-10'>
|
<div className='col-md-10'>
|
||||||
<h2>Ribica Start Page</h2>
|
<h2>Ribica Start Page</h2>
|
||||||
|
<LinkBanner locationName="startPage" />
|
||||||
<AllItems />
|
<AllItems />
|
||||||
<RouteHandler />
|
<RouteHandler />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ var React = require('react'),
|
|||||||
CartStore = require('../../stores/cartStore'),
|
CartStore = require('../../stores/cartStore'),
|
||||||
AddToCart = require('../cart/addToCart'),
|
AddToCart = require('../cart/addToCart'),
|
||||||
CartActions = require('../../actions/cartActions'),
|
CartActions = require('../../actions/cartActions'),
|
||||||
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
NavigationActions = require('../../actions/navigationActions'),
|
NavigationActions = require('../../actions/navigationActions'),
|
||||||
Globals = require('../../globals')
|
Globals = require('../../globals')
|
||||||
Router = require("react-router"),
|
Router = require("react-router"),
|
||||||
@@ -17,6 +18,8 @@ var ThankYouPage = React.createClass({
|
|||||||
<div className="thank-you-page center">
|
<div className="thank-you-page center">
|
||||||
<h1>Roba je naručena!</h1>
|
<h1>Roba je naručena!</h1>
|
||||||
<p>Hvala na narudžbi. Naša zaposlenica će vas kontaktirati da ugovori detalje o preuzimanju. </p>
|
<p>Hvala na narudžbi. Naša zaposlenica će vas kontaktirati da ugovori detalje o preuzimanju. </p>
|
||||||
|
|
||||||
|
<p><LinkBanner locationName="thankYouPage" /></p>
|
||||||
|
|
||||||
<p>Registrujte se kako biste dobili informaciju o popustima, imali pregled svih vaših narudžbi,
|
<p>Registrujte se kako biste dobili informaciju o popustima, imali pregled svih vaših narudžbi,
|
||||||
koristili Baby Shower, Predlagač poklona te kalendar događaja.</p>
|
koristili Baby Shower, Predlagač poklona te kalendar događaja.</p>
|
||||||
@@ -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();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
8
front-ui/app/models/linkBanner.js
Normal file
8
front-ui/app/models/linkBanner.js
Normal file
@@ -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;
|
||||||
|
|
||||||
10
front-ui/app/models/linkBannerCollection.js
Normal file
10
front-ui/app/models/linkBannerCollection.js
Normal file
@@ -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;
|
||||||
@@ -20,4 +20,4 @@ var Place = Backbone.Model.extend({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = Place;
|
module.exports = Place;
|
||||||
@@ -1,25 +1,96 @@
|
|||||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||||
var EventEmitter = require('events').EventEmitter;
|
var EventEmitter = require('events').EventEmitter;
|
||||||
var Cart = require('../models/cart');
|
var Cart = require('../models/cart');
|
||||||
|
var LinkBannerCollection = require('../models/linkBannerCollection');
|
||||||
|
|
||||||
var InitializationConstants = require('../constants/initializationConstants')
|
var InitializationConstants = require('../constants/initializationConstants')
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
|
|
||||||
|
var banners = {};
|
||||||
|
|
||||||
|
|
||||||
var state = {
|
var state = {
|
||||||
isEverythingReadyToStartTheShow: false
|
isEverythingReadyToStartTheShow: false
|
||||||
}
|
};
|
||||||
|
|
||||||
var initializeTheShop = function () {
|
var initializeTheShop = function () {
|
||||||
// for now only guarantee that cart is created
|
// for now only guarantee that cart is created
|
||||||
var cart = new Cart();
|
var cart = new Cart();
|
||||||
cart.save(null, {
|
cart.save(null, {
|
||||||
success: function () {
|
success: function () {
|
||||||
|
|
||||||
state.isEverythingReadyToStartTheShow = true;
|
state.isEverythingReadyToStartTheShow = true;
|
||||||
InitializationStore.emitChange();
|
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
|
// Extend ItemStore with EventEmitter to add eventing capabilities
|
||||||
var InitializationStore = _.extend({}, EventEmitter.prototype, {
|
var InitializationStore = _.extend({}, EventEmitter.prototype, {
|
||||||
@@ -28,6 +99,11 @@ var InitializationStore = _.extend({}, EventEmitter.prototype, {
|
|||||||
return state;
|
return state;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
getBanners: function() {
|
||||||
|
return banners;
|
||||||
|
},
|
||||||
|
|
||||||
// Emit Change event
|
// Emit Change event
|
||||||
emitChange: function() {
|
emitChange: function() {
|
||||||
console.log("InitializationStore change!");
|
console.log("InitializationStore change!");
|
||||||
|
|||||||
Reference in New Issue
Block a user