suggested articles / email is now sent

This commit is contained in:
Senad Uka
2015-09-21 06:31:52 +02:00
parent 2a4800fdab
commit 56f9c7b72b
10 changed files with 158 additions and 30 deletions

View File

@@ -22,4 +22,4 @@ gem 'puma'
gem "sinatra-contrib" gem "sinatra-contrib"
gem 'rerun' gem 'rerun'
gem 'xxhash', '~> 0.3.0' gem 'xxhash', '~> 0.3.0'
gem 'pony' gem 'sendgrid-ruby'

View File

@@ -26,6 +26,8 @@ GEM
builder (3.2.2) builder (3.2.2)
celluloid (0.16.0) celluloid (0.16.0)
timers (~> 4.0.0) timers (~> 4.0.0)
domain_name (0.5.24)
unf (>= 0.0.5, < 1.0.0)
elasticsearch (1.0.8) elasticsearch (1.0.8)
elasticsearch-api (= 1.0.7) elasticsearch-api (= 1.0.7)
elasticsearch-transport (= 1.0.7) elasticsearch-transport (= 1.0.7)
@@ -40,6 +42,8 @@ GEM
ffi (1.9.6-java) ffi (1.9.6-java)
hitimes (1.2.2) hitimes (1.2.2)
hitimes (1.2.2-java) hitimes (1.2.2-java)
http-cookie (1.0.2)
domain_name (~> 0.5)
i18n (0.7.0) i18n (0.7.0)
jdbc-postgres (9.3.1102) jdbc-postgres (9.3.1102)
jruby-openssl (0.9.6-java) jruby-openssl (0.9.6-java)
@@ -49,15 +53,12 @@ GEM
celluloid (>= 0.15.2) celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3) rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9) rb-inotify (>= 0.9)
mail (2.6.3) mime-types (2.6.2)
mime-types (>= 1.16, < 3)
mime-types (2.6.1)
minitest (5.5.0) minitest (5.5.0)
multi_json (1.10.1) multi_json (1.10.1)
multipart-post (2.0.0) multipart-post (2.0.0)
netrc (0.10.3)
pg (0.17.1) pg (0.17.1)
pony (1.11)
mail (>= 2.0)
puma (2.10.2) puma (2.10.2)
rack (>= 1.1, < 2.0) rack (>= 1.1, < 2.0)
puma (2.10.2-java) puma (2.10.2-java)
@@ -72,6 +73,13 @@ GEM
ffi (>= 0.5.0) ffi (>= 0.5.0)
rerun (0.10.0) rerun (0.10.0)
listen (~> 2.7, >= 2.7.3) listen (~> 2.7, >= 2.7.3)
rest-client (1.8.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
netrc (~> 0.7)
sendgrid-ruby (0.0.3)
rest-client
smtpapi
sinatra (1.4.5) sinatra (1.4.5)
rack (~> 1.4) rack (~> 1.4)
rack-protection (~> 1.4) rack-protection (~> 1.4)
@@ -86,6 +94,7 @@ GEM
rack-test rack-test
sinatra (~> 1.4.0) sinatra (~> 1.4.0)
tilt (~> 1.3) tilt (~> 1.3)
smtpapi (0.1.0)
thread_safe (0.3.4) thread_safe (0.3.4)
thread_safe (0.3.4-java) thread_safe (0.3.4-java)
tilt (1.4.1) tilt (1.4.1)
@@ -93,6 +102,10 @@ GEM
hitimes hitimes
tzinfo (1.2.2) tzinfo (1.2.2)
thread_safe (~> 0.1) thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf (0.1.4-java)
unf_ext (0.0.7.1)
xxhash (0.3.0) xxhash (0.3.0)
PLATFORMS PLATFORMS
@@ -107,9 +120,9 @@ DEPENDENCIES
jruby-openssl jruby-openssl
json json
pg pg
pony
puma puma
rerun rerun
sendgrid-ruby
sinatra sinatra
sinatra-activerecord sinatra-activerecord
sinatra-contrib sinatra-contrib

View File

@@ -5,7 +5,7 @@ require 'json'
require 'sinatra/cookies' require 'sinatra/cookies'
require 'elasticsearch' require 'elasticsearch'
require 'xxhash' require 'xxhash'
require 'pony' require 'sendgrid-ruby'
Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file } Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file }

View File

@@ -55,22 +55,21 @@ post '/cart/delivery_destination', &update_delivery_destination
def send_order_email(cart) def send_order_email(cart)
Pony.options = {
:subject => "Nova Narudžba: #{cart.id}", client = SendGrid::Client.new(api_user: "ribica",
:html_body => "Mušterija naručila nešto. <br /> Pogledati https://www.ribica.ba/backoffice/carts/#{cart.id}", api_key: "plava*kutija*svjetlo*torba07"
:body => "Mušterija naručila nešto. Pogledati https://www.ribica.ba/backoffice/carts/#{cart.id}", )
:via => :smtp,
:via_options => { email = SendGrid::Mail.new do |m|
:address => 'smtp.gmail.com', m.to = "narudzbe@ribica.ba"
:port => '587', m.from = "draga@ribica.ba"
:enable_starttls_auto => true, m.from_name = "Prodavnica Ribica"
:user_name => 'ribica.ba@gmail.com', m.subject = "Nova Narudžba: #{cart.id}"
:password => 'pumparica*pumpa*sumpa*lumpa', m.html = "Mušterija naručila nešto. <br /> Pogledati https://www.ribica.ba/backoffice/carts/#{cart.id}"
:authentication => :plain, # :plain, :login, :cram_md5, no auth by default end
:domain => "localhost.localdomain"
} client.send(email)
}
Pony.mail(:to => "narudzbe@ribica.ba")
end end

View File

@@ -8,7 +8,7 @@ class MultiMediaDescription < ActiveRecord::Base
end end
def resized_url def resized_url
url.gsub('/upload/v','/upload/c_lpad,h_170,w_226/v') url.gsub('/upload/v','/upload/c_lpad,h_281,w_375/v')
end end
end end

View File

@@ -0,0 +1,50 @@
var React = require('react');
var ItemList = require('./itemList');
var ItemStore = require('../../stores/itemStore.js');
var ItemActions = require('../../actions/itemActions.js');
var ItemCollection = require('../../models/itemCollection');
var RandomItems = React.createClass({
render: function() {
return (
<ItemList items={this.state.items} />
);
},
// Add change listeners to stores
componentDidMount: function() {
ItemActions.loadFrontPageItems();
ItemStore.addChangeListener(this._onChange);
},
componentWillUnmount: function () {
ItemStore.removeChangeListener(this._onChange);
},
getInitialState: function() {
return {
items: this.getRandomItems()
}
},
getRandomItems: function() {
var NUMBER_OF_SUGGESTED_ITEMS = 8;
var allItems = ItemStore.getItems();
var randomIndexStart = Math.floor(Math.random() * ((allItems.models.length - NUMBER_OF_SUGGESTED_ITEMS + 1)));
allItems.models = allItems.models.slice(randomIndexStart, randomIndexStart + NUMBER_OF_SUGGESTED_ITEMS);
return allItems;
},
_onChange: function () {
this.setState({
items: this.getRandomItems()
});
},
});
module.exports = RandomItems;

View File

@@ -2,6 +2,7 @@ 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'),
RandomItems = require('../items/randomItems'),
LinkBanner = require('../linkBanner/linkBanner'), LinkBanner = require('../linkBanner/linkBanner'),
AllItemsInGroup = require('../items/allItemsInGroup'); AllItemsInGroup = require('../items/allItemsInGroup');
@@ -16,7 +17,9 @@ var StartPage = React.createClass({
<div className='col-md-12'> <div className='col-md-12'>
<LinkBanner locationName="startPage" /> <LinkBanner locationName="startPage" />
<AllItemsInGroup /> <AllItemsInGroup />
<RouteHandler /> <h2>Preporučeno</h2>
<RandomItems />
</div> </div>
<GAInitiailizer /> <GAInitiailizer />
</div> </div>

View File

@@ -529,3 +529,7 @@ text-decoration: none;
font-size: 29px; font-size: 29px;
color: #06c3c3; color: #06c3c3;
} }
.footer {
text-align: center;
}

File diff suppressed because one or more lines are too long

View File

@@ -21,6 +21,9 @@
<img height={50} src="https://res.cloudinary.com/du5pdibul/image/upload/v1434870249/progress_bar_idgtad.gif" /> <img height={50} src="https://res.cloudinary.com/du5pdibul/image/upload/v1434870249/progress_bar_idgtad.gif" />
</div> </div>
<script src='/ribica.js' type='text/javascript'></script> <script src='/ribica.js' type='text/javascript'></script>
<div class="footer">
© Ribica.ba 2015.
</div>
<script type='text/javascript'> <script type='text/javascript'>
RIBICA.App.bootstrap(); RIBICA.App.bootstrap();
</script> </script>