bookingsync_portal 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +174 -0
- data/Rakefile +28 -0
- data/app/assets/config/manifest.js +3 -0
- data/app/assets/images/bookingsync_portal/bookingsync.png +0 -0
- data/app/assets/images/bookingsync_portal/help/connect.gif +0 -0
- data/app/assets/javascripts/bookingsync_portal/admin/application.js.coffee +83 -0
- data/app/assets/javascripts/bookingsync_portal/admin/connections.js.coffee +3 -0
- data/app/assets/javascripts/bookingsync_portal/admin/handle_remote_errors.js.coffee +3 -0
- data/app/assets/javascripts/bookingsync_portal/admin/lib/list-filter.js.coffee +28 -0
- data/app/assets/javascripts/bookingsync_portal/admin/live_updates.js.coffee +7 -0
- data/app/assets/javascripts/bookingsync_portal/admin/rentals.js.coffee +12 -0
- data/app/assets/javascripts/bookingsync_portal/admin/templates/filter_input.hbs +6 -0
- data/app/assets/javascripts/bookingsync_portal/admin/vendor/css-contains.js +29 -0
- data/app/assets/stylesheets/bookingsync_portal/admin/application.scss +241 -0
- data/app/controllers/bookingsync_portal/admin/base_controller.rb +25 -0
- data/app/controllers/bookingsync_portal/admin/connections_controller.rb +48 -0
- data/app/controllers/bookingsync_portal/admin/help_controller.rb +7 -0
- data/app/controllers/bookingsync_portal/admin/remote_accounts_controller.rb +27 -0
- data/app/controllers/bookingsync_portal/admin/rentals_controller.rb +36 -0
- data/app/controllers/bookingsync_portal/application_controller.rb +4 -0
- data/app/helpers/bookingsync_portal/admin/application_helper.rb +34 -0
- data/app/models/bookingsync_portal/account.rb +15 -0
- data/app/models/bookingsync_portal/connection.rb +29 -0
- data/app/models/bookingsync_portal/photo.rb +8 -0
- data/app/models/bookingsync_portal/rate.rb +6 -0
- data/app/models/bookingsync_portal/remote_account.rb +9 -0
- data/app/models/bookingsync_portal/remote_rental.rb +31 -0
- data/app/models/bookingsync_portal/rental.rb +26 -0
- data/app/synchronizers/bookingsync_portal/write/ensure_source_exists.rb +22 -0
- data/app/synchronizers/bookingsync_portal/write/source.rb +30 -0
- data/app/views/bookingsync_portal/admin/connections/create.js.coffee +6 -0
- data/app/views/bookingsync_portal/admin/connections/destroy.js.coffee +7 -0
- data/app/views/bookingsync_portal/admin/help/_help.html.erb +5 -0
- data/app/views/bookingsync_portal/admin/help/index.html.erb +7 -0
- data/app/views/bookingsync_portal/admin/remote_accounts/_form.html.erb +11 -0
- data/app/views/bookingsync_portal/admin/remote_accounts/_how_to_connect.html.erb +1 -0
- data/app/views/bookingsync_portal/admin/remote_accounts/new.html.erb +5 -0
- data/app/views/bookingsync_portal/admin/rentals/_connected_rental.html.erb +30 -0
- data/app/views/bookingsync_portal/admin/rentals/_new_remote_account.html.erb +3 -0
- data/app/views/bookingsync_portal/admin/rentals/_new_remote_rental.html.erb +6 -0
- data/app/views/bookingsync_portal/admin/rentals/_remote_rental.html.erb +11 -0
- data/app/views/bookingsync_portal/admin/rentals/_rental.html.erb +14 -0
- data/app/views/bookingsync_portal/admin/rentals/_rentals.html.erb +14 -0
- data/app/views/bookingsync_portal/admin/rentals/index.html.erb +56 -0
- data/app/views/bookingsync_portal/admin/rentals/show.js.erb +7 -0
- data/app/views/layouts/bookingsync_portal/_flash.html.erb +8 -0
- data/app/views/layouts/bookingsync_portal/_menu.html.erb +30 -0
- data/app/views/layouts/bookingsync_portal/admin.html.erb +21 -0
- data/app/views/layouts/bookingsync_portal/fullscreen/application.html.erb +19 -0
- data/config/locales/en.yml +85 -0
- data/config/routes.rb +9 -0
- data/db/migrate/20150222172825_create_accounts.rb +17 -0
- data/db/migrate/20150222173413_create_rentals.rb +14 -0
- data/db/migrate/20150222173711_create_remote_accounts.rb +10 -0
- data/db/migrate/20150222174023_create_remote_rentals.rb +12 -0
- data/db/migrate/20150222174234_create_connections.rb +10 -0
- data/db/migrate/20150520134912_create_photos.rb +13 -0
- data/db/migrate/20150521091056_create_rates.rb +12 -0
- data/db/migrate/20151210164752_add_synced_source_id_to_account.rb +5 -0
- data/db/migrate/20160301141356_create_bookings.rb +9 -0
- data/lib/bookingsync_portal.rb +77 -0
- data/lib/bookingsync_portal/booking_map.rb +109 -0
- data/lib/bookingsync_portal/engine.rb +18 -0
- data/lib/bookingsync_portal/mash_serializer.rb +9 -0
- data/lib/bookingsync_portal/version.rb +3 -0
- data/lib/generators/bookingsync_portal/install_generator.rb +22 -0
- data/lib/generators/templates/initializers/bookingsync_portal.rb +48 -0
- data/lib/generators/templates/models/account.rb +14 -0
- data/lib/generators/templates/models/connection.rb +2 -0
- data/lib/generators/templates/models/photo.rb +4 -0
- data/lib/generators/templates/models/rate.rb +3 -0
- data/lib/generators/templates/models/remote_account.rb +6 -0
- data/lib/generators/templates/models/remote_rental.rb +6 -0
- data/lib/generators/templates/models/rental.rb +11 -0
- data/lib/tasks/bookingsync_portal_tasks.rake +4 -0
- metadata +521 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="panel panel-remote" id="<%= dom_id remote_rental %>">
|
2
|
+
<div class="panel-body-grid">
|
3
|
+
<div class="panel-body-grid-photo">
|
4
|
+
</div>
|
5
|
+
<div class="panel-body-grid-text">
|
6
|
+
<h4 title="<%= RemoteRental.human_attribute_name(:uid) %>
|
7
|
+
<%= remote_rental.uid %>"><%= remote_rental.display_name %></h4>
|
8
|
+
<p class="text-overflow"></p>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="panel panel-bookingsync bookingsync-rental"
|
2
|
+
id="<%= dom_id rental %>">
|
3
|
+
<div class="panel-body-grid">
|
4
|
+
<div class="panel-body-grid-photo">
|
5
|
+
<%- if rental.ordered_photos.first -%>
|
6
|
+
<%= image_tag rental.ordered_photos.first.thumb_url, class: "img-responsive" %>
|
7
|
+
<%- end -%>
|
8
|
+
</div>
|
9
|
+
<div class="panel-body-grid-text">
|
10
|
+
<h4><%= rental.name.presence || t('.no_name') %></h4>
|
11
|
+
<p class="text-overflow"><%= rental_details rental %></p>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%- if visible_rentals.count == 0 -%>
|
2
|
+
<div class="lead text-center well">
|
3
|
+
<p><%= t('.no_published_rentals_html', id: current_account.synced_id) %></p>
|
4
|
+
</div>
|
5
|
+
<%- elsif not_connected_rentals.count > 0 -%>
|
6
|
+
<% not_connected_rentals.each do |rental| %>
|
7
|
+
<%= render rental %>
|
8
|
+
<% end %>
|
9
|
+
<%- else -%>
|
10
|
+
<div class="lead text-center well">
|
11
|
+
<p class=""><%= icon 'thumbs-up fa-lg' %></p>
|
12
|
+
<p><%=t '.all_synchronized' %></p>
|
13
|
+
</div>
|
14
|
+
<%- end -%>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<%- content_for :navbar_right do -%>
|
2
|
+
<ul class="nav navbar-nav">
|
3
|
+
<li><%= link_to icon("life-ring", t('.help')), admin_help_path %></li>
|
4
|
+
</ul>
|
5
|
+
<%- end -%>
|
6
|
+
<div class="rentals-container row">
|
7
|
+
<div class="col-xs-6">
|
8
|
+
<div class="bookingsync-rentals-list rentals-list">
|
9
|
+
<div class="rentals-list-header">
|
10
|
+
<legend class="text-center"><%= image_tag('bookingsync_portal/bookingsync.png', alt: 'BookingSync') %></legend>
|
11
|
+
</div>
|
12
|
+
<div class="rentals-list-scroll">
|
13
|
+
<%= render "rentals", visible_rentals: @visible_rentals,
|
14
|
+
not_connected_rentals: @not_connected_rentals %>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<div class="col-xs-6">
|
19
|
+
<div class="remote-rentals-list rentals-list"
|
20
|
+
data-connect-url="<%= BookingsyncPortal::Engine.routes.url_helpers.admin_connections_path %>">
|
21
|
+
<div class="rentals-list-header">
|
22
|
+
<legend class="text-center">
|
23
|
+
<%= image_tag("#{BookingsyncPortal.portal_name.parameterize}.png",
|
24
|
+
alt: BookingsyncPortal.portal_name) %>
|
25
|
+
</legend>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="rentals-list-scroll">
|
29
|
+
<% @remote_accounts.each do |remote_account| %>
|
30
|
+
<h3><%=t '.remote_header', portal_name: BookingsyncPortal.portal_name,
|
31
|
+
account_name: remote_account.name %></h3>
|
32
|
+
<%- if Array(@remote_rentals_by_account[remote_account]).length > 0 -%>
|
33
|
+
<% Array(@remote_rentals_by_account[remote_account]).each do |remote_rental| %>
|
34
|
+
<% if remote_rental.connected? %>
|
35
|
+
<%= render "connected_rental", remote_rental: remote_rental, rental: remote_rental.rental %>
|
36
|
+
<% else %>
|
37
|
+
<%= render "remote_rental", remote_rental: remote_rental %>
|
38
|
+
<% end %>
|
39
|
+
<% end %>
|
40
|
+
<%- elsif !BookingsyncPortal.create_remote_rental -%>
|
41
|
+
<div class="lead text-center well">
|
42
|
+
<p class=""><%= icon 'info fa-lg' %></p>
|
43
|
+
<p><%=t '.create_listings_first', portal_name: BookingsyncPortal.portal_name %></p>
|
44
|
+
</div>
|
45
|
+
<%- end -%>
|
46
|
+
<%- if BookingsyncPortal.create_remote_rental -%>
|
47
|
+
<%= render "new_remote_rental", remote_account: remote_account %>
|
48
|
+
<%- end -%>
|
49
|
+
<% end %>
|
50
|
+
</div>
|
51
|
+
<div class="rentals-list-footer text-center">
|
52
|
+
<%= render partial: 'new_remote_account' %>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
$("#<%= dom_id @rental %>").replaceWith(
|
2
|
+
<%- if @rental.connected? %>
|
3
|
+
"<%=j render 'connected_rental', rental: @rental, remote_rental: @rental.remote_rental,
|
4
|
+
disconnect_url: BookingsyncPortal::Engine.routes.url_helpers.admin_connection_path(@rental.connection) %>");
|
5
|
+
<%- else %>
|
6
|
+
"<%=j render 'rental', rental: @rental %>");
|
7
|
+
<%- end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%- if flash[:error] -%>
|
2
|
+
<div id="flash">
|
3
|
+
<div class="alert alert-danger">
|
4
|
+
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
5
|
+
<strong><%=t 'bookingsync_portal.admin.layout.flash.error.legend' %></strong> <%= flash[:error] %>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
<%- end -%>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
2
|
+
<div class="container container-fullscreen">
|
3
|
+
<div class="navbar-header">
|
4
|
+
<%- if yield(:navbar_right).present? -%>
|
5
|
+
<button type="button" class="navbar-toggle navbar-toggle-context" data-toggle="collapse"
|
6
|
+
data-target=".navbar-context1-collapse">
|
7
|
+
<span class="sr-only">
|
8
|
+
<%=t 'bookingsync_portal.admin.layout.menu.toggle_navigation' %>
|
9
|
+
</span>
|
10
|
+
<span class="icon-bar"></span>
|
11
|
+
<span class="icon-bar"></span>
|
12
|
+
<span class="icon-bar"></span>
|
13
|
+
</button>
|
14
|
+
<%- end -%>
|
15
|
+
<div>
|
16
|
+
<%= link_to icon("globe", BookingsyncPortal.portal_name), admin_root_path,
|
17
|
+
class: "navbar-brand h1",
|
18
|
+
data: { toggle: "dropdown" } %>
|
19
|
+
</a>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<%- if yield(:navbar_right).present? -%>
|
23
|
+
<div class="collapse navbar-collapse navbar-context1-collapse">
|
24
|
+
<div class="navbar-right">
|
25
|
+
<%= yield(:navbar_right) %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<%- end -%>
|
29
|
+
</div>
|
30
|
+
</nav>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<title><%=t 'bookingsync_portal.admin.layout.title',
|
7
|
+
portal_name: BookingsyncPortal.portal_name %></title>
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
9
|
+
<%= stylesheet_link_tag 'admin/application', media: 'all' %>
|
10
|
+
<%= csrf_meta_tags %>
|
11
|
+
</head>
|
12
|
+
<body data-messagebus-channel="<%= messagebus_channel %>">
|
13
|
+
<%= render partial: '/layouts/bookingsync_portal/menu' %>
|
14
|
+
<div class="container container-fullscreen">
|
15
|
+
<%= render '/layouts/bookingsync_portal/flash' %>
|
16
|
+
<%= yield %>
|
17
|
+
</div>
|
18
|
+
<%= javascript_include_tag 'admin/application' %>
|
19
|
+
<div class="footer"></div>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<title><%=t 'bookingsync_portal.admin.layout.title',
|
7
|
+
portal_name: BookingsyncPortal.portal_name %></title>
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
9
|
+
<%= stylesheet_link_tag 'admin/application', media: 'all' %>
|
10
|
+
<%= csrf_meta_tags %>
|
11
|
+
</head>
|
12
|
+
<body class="fullscreen">
|
13
|
+
<div class="container">
|
14
|
+
<%= render '/layouts/bookingsync_portal/flash' %>
|
15
|
+
<%= yield %>
|
16
|
+
</div>
|
17
|
+
<%= javascript_include_tag 'admin/application' %>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -0,0 +1,85 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
attributes:
|
4
|
+
remote_account:
|
5
|
+
uid: Remote account ID
|
6
|
+
errors:
|
7
|
+
messages:
|
8
|
+
not_matching_accounts: Different ownership of rental and remote_rental
|
9
|
+
|
10
|
+
bookingsync_portal:
|
11
|
+
admin:
|
12
|
+
help:
|
13
|
+
index:
|
14
|
+
title: What to do?
|
15
|
+
close: Close
|
16
|
+
help:
|
17
|
+
publish_rentals:
|
18
|
+
title: Publish rentals
|
19
|
+
description_html: 'Only rentals that are in the "Published" status can be connected to the portal. If you see the message "No published rentals present, please make sure to fill all your rentals details" on the left column, go back to the Rentals section to publish the ones you want to connect.'
|
20
|
+
connect:
|
21
|
+
title: Connect rentals
|
22
|
+
description_html: 'Drag the rentals from the left column and drop it to the corresponding listing on the right one.<br>You can filter the lists with the listings names.'
|
23
|
+
layout:
|
24
|
+
title: Connect BookingSync with %{portal_name}
|
25
|
+
flash:
|
26
|
+
error:
|
27
|
+
legend: Error
|
28
|
+
menu:
|
29
|
+
toggle_navigation: Toggle Navigation
|
30
|
+
|
31
|
+
remote_accounts:
|
32
|
+
new:
|
33
|
+
title: Connect with %{portal_name}
|
34
|
+
form:
|
35
|
+
submit_new: Connect with %{portal_name}
|
36
|
+
|
37
|
+
remote_rentals:
|
38
|
+
show:
|
39
|
+
listing_id: "Listing #%{id}"
|
40
|
+
|
41
|
+
rentals:
|
42
|
+
new_remote_account:
|
43
|
+
connect_accounts: Connect additional accounts
|
44
|
+
new_remote_rental:
|
45
|
+
drop_here: "Drop here to create a new rental on %{portal_name}"
|
46
|
+
index:
|
47
|
+
connect: Connect
|
48
|
+
bookingsync_header: "BookingSync: %{account_name}"
|
49
|
+
create_listings_first: "You must create your rentals on %{portal_name} before you can synchronize them automatically."
|
50
|
+
connect_accounts: Add External Portal Account
|
51
|
+
remote_header: "%{portal_name}: %{account_name}"
|
52
|
+
help: Help
|
53
|
+
rentals:
|
54
|
+
no_published_rentals_html: 'No published rentals present, please make sure to <a href="https://www.bookingsync.com/en/admin/v2/%{id}/rentals" target="_blank">fill all your rentals details</a>.'
|
55
|
+
all_synchronized: Perfect! All your rentals are synchronized.
|
56
|
+
rental:
|
57
|
+
bedrooms_html:
|
58
|
+
one: '<strong>1</strong> Bedroom'
|
59
|
+
other: '<strong>%{count}</strong> Bedrooms'
|
60
|
+
bathrooms_html:
|
61
|
+
one: '<strong>1</strong> Bathroom'
|
62
|
+
other: '<strong>%{count}</strong> Bathrooms'
|
63
|
+
sleeps_html:
|
64
|
+
one: '<strong>%{count}</strong> Person'
|
65
|
+
other: '<strong>%{count}</strong> People'
|
66
|
+
surface_html:
|
67
|
+
zero: ''
|
68
|
+
one: '<span>Surface</span> <strong>%{count}%{unit}</strong>'
|
69
|
+
other: '<span>Surface</span> <strong>%{count}%{unit}</strong>'
|
70
|
+
no_name: Unnamed rental
|
71
|
+
remote_rental:
|
72
|
+
no_name: Unnamed remote rental
|
73
|
+
connected_rental:
|
74
|
+
disconnect_rental: 'Disconnect'
|
75
|
+
disconnecting_rental: 'Disconnecting...'
|
76
|
+
synchronizing: 'Synchronizing...'
|
77
|
+
|
78
|
+
simple_form:
|
79
|
+
"yes": 'Yes'
|
80
|
+
"no": 'No'
|
81
|
+
required:
|
82
|
+
text: 'required'
|
83
|
+
mark: '*'
|
84
|
+
error_notification:
|
85
|
+
default_message: "Please review the problems below:"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
BookingsyncPortal::Engine.routes.draw do
|
2
|
+
namespace :admin do
|
3
|
+
resources :rentals, only: [:index, :show]
|
4
|
+
resources :connections, only: [:create, :destroy]
|
5
|
+
resources :remote_accounts, only: [:new, :create]
|
6
|
+
get 'help', to: 'help#index'
|
7
|
+
root to: 'rentals#index'
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateAccounts < ActiveRecord::Migration[4.2]
|
2
|
+
def change
|
3
|
+
create_table :accounts do |t|
|
4
|
+
t.string :provider
|
5
|
+
t.integer :synced_id, index: true
|
6
|
+
t.string :name
|
7
|
+
t.string :oauth_access_token
|
8
|
+
t.string :oauth_refresh_token
|
9
|
+
t.datetime :oauth_expires_at
|
10
|
+
t.text :synced_data
|
11
|
+
t.datetime :synced_all_at
|
12
|
+
t.string :email
|
13
|
+
|
14
|
+
t.timestamps null: false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateRentals < ActiveRecord::Migration[4.2]
|
2
|
+
def change
|
3
|
+
create_table :rentals do |t|
|
4
|
+
t.belongs_to :account, index: true
|
5
|
+
t.integer :synced_id, index: true
|
6
|
+
t.text :synced_data
|
7
|
+
t.datetime :synced_all_at
|
8
|
+
t.integer :position
|
9
|
+
t.datetime :published_at
|
10
|
+
|
11
|
+
t.timestamps null: false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateRemoteRentals < ActiveRecord::Migration[4.2]
|
2
|
+
def change
|
3
|
+
create_table :remote_rentals do |t|
|
4
|
+
t.belongs_to :remote_account, index: true
|
5
|
+
t.integer :uid
|
6
|
+
t.text :remote_data
|
7
|
+
t.datetime :synchronized_at
|
8
|
+
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreatePhotos < ActiveRecord::Migration[4.2]
|
2
|
+
def change
|
3
|
+
create_table :photos do |t|
|
4
|
+
t.belongs_to :rental, index: true
|
5
|
+
t.integer :synced_id, index: true
|
6
|
+
t.text :synced_data
|
7
|
+
t.datetime :synced_all_at
|
8
|
+
t.integer :position
|
9
|
+
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateRates < ActiveRecord::Migration[4.2]
|
2
|
+
def change
|
3
|
+
create_table :rates do |t|
|
4
|
+
t.belongs_to :rental, index: true
|
5
|
+
t.integer :synced_id, index: true
|
6
|
+
t.text :synced_data
|
7
|
+
t.datetime :synced_all_at
|
8
|
+
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'bookingsync_application'
|
2
|
+
require 'bookingsync_portal/engine'
|
3
|
+
require 'bookingsync_portal/mash_serializer'
|
4
|
+
require 'bookingsync_portal/booking_map'
|
5
|
+
require 'message_bus'
|
6
|
+
|
7
|
+
# FIXME requires below should get removed when ember frontend is added
|
8
|
+
require 'uglifier'
|
9
|
+
require 'coffee-rails'
|
10
|
+
require 'sass-rails'
|
11
|
+
require 'bootstrap-bookingsync-sass'
|
12
|
+
require 'jquery-rails'
|
13
|
+
require 'jquery-ui-rails'
|
14
|
+
require 'font-awesome-sass'
|
15
|
+
require 'handlebars_assets'
|
16
|
+
require 'simple_form'
|
17
|
+
require 'turbolinks'
|
18
|
+
require 'responders'
|
19
|
+
|
20
|
+
module BookingsyncPortal
|
21
|
+
# portal name
|
22
|
+
mattr_accessor :portal_name
|
23
|
+
@@portal_name = 'Portal'
|
24
|
+
|
25
|
+
# source name for use in bookings
|
26
|
+
mattr_accessor :source_name
|
27
|
+
|
28
|
+
# Allow to create a remote rental from this app.
|
29
|
+
mattr_accessor :create_remote_rental
|
30
|
+
@@create_remote_rental = false
|
31
|
+
|
32
|
+
# account model class
|
33
|
+
mattr_accessor :account_model
|
34
|
+
@@account_model = 'BookingsyncPortal::Account'
|
35
|
+
|
36
|
+
# remote account model class
|
37
|
+
mattr_accessor :remote_account_model
|
38
|
+
@@remote_account_model = 'BookingsyncPortal::RemoteAccount'
|
39
|
+
|
40
|
+
# rental model class
|
41
|
+
mattr_accessor :rental_model
|
42
|
+
@@rental_model = 'BookingsyncPortal::Rental'
|
43
|
+
|
44
|
+
# remote rental model class
|
45
|
+
mattr_accessor :remote_rental_model
|
46
|
+
@@remote_rental_model = 'BookingsyncPortal::RemoteRental'
|
47
|
+
|
48
|
+
# connection model class
|
49
|
+
mattr_accessor :connection_model
|
50
|
+
@@connection_model = 'BookingsyncPortal::Connection'
|
51
|
+
|
52
|
+
# photo model class
|
53
|
+
mattr_accessor :photo_model
|
54
|
+
@@photo_model = 'BookingsyncPortal::Photo'
|
55
|
+
|
56
|
+
# rate model class
|
57
|
+
mattr_accessor :rate_model
|
58
|
+
@@rate_model = 'BookingsyncPortal::Rate'
|
59
|
+
|
60
|
+
# message bus channel scope
|
61
|
+
mattr_accessor :message_bus_channel_scope
|
62
|
+
|
63
|
+
# fetch remote rentals
|
64
|
+
def self.fetch_remote_rentals(account)
|
65
|
+
# return false if remote account is not present or not valid
|
66
|
+
end
|
67
|
+
|
68
|
+
# Default way to setup BookingsyncPortal. Run rails generate bookingsync_portal:install to create
|
69
|
+
# a fresh initializer with all configuration values.
|
70
|
+
def self.setup
|
71
|
+
yield self
|
72
|
+
raise ArgumentError.new("message_bus_channel_scope must be defined") unless message_bus_channel_scope.present?
|
73
|
+
::MessageBus.site_id_lookup do
|
74
|
+
message_bus_channel_scope
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|