bookingsync_portal 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/bookingsync_portal/admin/application.js.coffee +4 -0
- data/app/assets/javascripts/bookingsync_portal/admin/connections.js.coffee +48 -0
- data/app/assets/javascripts/bookingsync_portal/admin/rentals.js.coffee +0 -79
- data/app/assets/stylesheets/bookingsync_portal/admin/application.css.scss +19 -39
- data/app/controllers/bookingsync_portal/admin/base_controller.rb +1 -0
- data/app/controllers/bookingsync_portal/admin/connections_controller.rb +45 -0
- data/app/controllers/bookingsync_portal/admin/rentals_controller.rb +0 -25
- data/app/helpers/bookingsync_portal/admin/{rentals_helper.rb → application_helper.rb} +1 -1
- data/app/models/bookingsync_portal/connection.rb +9 -0
- data/app/models/bookingsync_portal/remote_rental.rb +4 -0
- data/app/views/bookingsync_portal/admin/connections/create.js.erb +5 -0
- data/app/views/bookingsync_portal/admin/rentals/_connected_rental.html.erb +26 -28
- 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 +2 -2
- data/app/views/bookingsync_portal/admin/rentals/_rental.html.erb +1 -2
- data/app/views/bookingsync_portal/admin/rentals/index.html.erb +7 -3
- data/app/views/bookingsync_portal/admin/rentals/show.js.erb +3 -2
- data/config/locales/en.yml +3 -1
- data/config/routes.rb +2 -4
- data/lib/bookingsync_portal.rb +7 -11
- data/lib/bookingsync_portal/version.rb +1 -1
- data/lib/generators/templates/initializers/bookingsync_portal.rb +19 -7
- metadata +7 -4
- data/app/assets/javascripts/bookingsync_portal/admin/templates/rentals/connected_rental.hbs +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c409dc3f373173cf63975b3e7deea34767d19a3d
|
4
|
+
data.tar.gz: bea7083a6fb9bde9eeeb60da4101db6b1d501206
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b86598c7bca993d3105cbb5518f22cbce58c90355dc2f09c16b4ac65168423e389f4b60f07897b7ec6921f48fdc5f315f6f9efc58934c1c0a1af54bbd4195da4
|
7
|
+
data.tar.gz: 30dbf6577ba6ddfcaf4206c0e96c2f7bddcc264fe2ae4b0a99a96c0e93dd35fa2095b82a6c4af1b1a715de5e8096cb64a46c0fd78774ba5c574799595481113c
|
@@ -0,0 +1,48 @@
|
|
1
|
+
$ ->
|
2
|
+
$(".bookingsync-rental").draggable
|
3
|
+
revert: "invalid"
|
4
|
+
zIndex: 50
|
5
|
+
revertDuration: 100
|
6
|
+
cursor: "move"
|
7
|
+
containment: '.rentals-container'
|
8
|
+
appendTo: '.rentals-container'
|
9
|
+
helper: "clone"
|
10
|
+
scroll: false
|
11
|
+
|
12
|
+
start: (e, ui) ->
|
13
|
+
$(ui.helper).addClass "ui-draggable-helper"
|
14
|
+
|
15
|
+
$(".panel.panel-remote").droppable
|
16
|
+
accept: ".bookingsync-rental"
|
17
|
+
activeClass: "dropzone-active"
|
18
|
+
hoverClass: "dropzone-hover"
|
19
|
+
greedy: true
|
20
|
+
tolerance: "pointer"
|
21
|
+
drop: (event, ui) ->
|
22
|
+
remoteRentalDropZone = $(@)
|
23
|
+
|
24
|
+
rentalId = extractIdFromDomId($(ui.draggable).attr("id"))
|
25
|
+
remoteRentalId = extractIdFromDomId(remoteRentalDropZone.attr("id"))
|
26
|
+
remoteAccountId = remoteRentalDropZone.data("remote-account-id")
|
27
|
+
remoteRentalUid = remoteRentalDropZone.data("uid")
|
28
|
+
|
29
|
+
if remoteRentalId
|
30
|
+
postData = { "rental_id": rentalId, "remote_rental_id": remoteRentalId }
|
31
|
+
else
|
32
|
+
postData = { "rental_id": rentalId, "remote_account_id": remoteAccountId }
|
33
|
+
# clone new remote rental drop zone and append to the end
|
34
|
+
remoteRentalDropZone.clone().insertBefore(remoteRentalDropZone).addClass('new_rental_placeholder');
|
35
|
+
|
36
|
+
$(ui.draggable).remove()
|
37
|
+
|
38
|
+
connect_url = $('.remote-rentals-list.rentals-list').data('connect-url')
|
39
|
+
|
40
|
+
$.ajax
|
41
|
+
url: connect_url
|
42
|
+
type: "POST"
|
43
|
+
data: postData
|
44
|
+
dataType: 'script'
|
45
|
+
beforeSend: ->
|
46
|
+
$(@).addClass('loading')
|
47
|
+
success: ->
|
48
|
+
$(@).removeClass('loading')
|
@@ -1,83 +1,4 @@
|
|
1
1
|
$ ->
|
2
|
-
$(".bookingsync-rental").draggable
|
3
|
-
revert: "invalid"
|
4
|
-
zIndex: 50
|
5
|
-
revertDuration: 100
|
6
|
-
cursor: "move"
|
7
|
-
containment: '.rentals-container'
|
8
|
-
appendTo: '.rentals-container'
|
9
|
-
helper: "clone"
|
10
|
-
scroll: false
|
11
|
-
|
12
|
-
start: (e, ui) ->
|
13
|
-
$(ui.helper).addClass "ui-draggable-helper"
|
14
|
-
|
15
|
-
$(".not-connected-remote-rental").droppable
|
16
|
-
accept: ".bookingsync-rental"
|
17
|
-
activeClass: "dropzone-active"
|
18
|
-
hoverClass: "dropzone-hover"
|
19
|
-
greedy: true
|
20
|
-
tolerance: "pointer"
|
21
|
-
drop: (event, ui) ->
|
22
|
-
remoteRental = $(@)
|
23
|
-
|
24
|
-
rentalId = parseInt($(ui.draggable).attr("id").split("_").pop())
|
25
|
-
remoteRentalId = parseInt(remoteRental.attr("id").split("_").pop())
|
26
|
-
remoteRentalUid = parseInt(remoteRental.data("uid"))
|
27
|
-
|
28
|
-
remoteRental.replaceWith HandlebarsTemplates["rentals/connected_rental"]
|
29
|
-
rentalName: $(ui.draggable).children('.panel-heading').text()
|
30
|
-
rentalDescription: $(ui.draggable).children('.panel-body').html()
|
31
|
-
rentalId: rentalId
|
32
|
-
listingId: "Listing #" + remoteRentalUid
|
33
|
-
$(ui.draggable).remove()
|
34
|
-
|
35
|
-
connect_url = "/en/admin/rentals/" + rentalId + "/connect" +
|
36
|
-
"?remote_rental_id=" + remoteRentalId
|
37
|
-
|
38
|
-
$.ajax
|
39
|
-
url: connect_url
|
40
|
-
type: "PUT"
|
41
|
-
dataType: 'json'
|
42
|
-
beforeSend: ->
|
43
|
-
$(@).addClass('loading')
|
44
|
-
success: ->
|
45
|
-
$(@).removeClass('loading')
|
46
|
-
|
47
|
-
$(".remote-new-rental").droppable
|
48
|
-
accept: ".bookingsync-rental"
|
49
|
-
activeClass: "dropzone-active"
|
50
|
-
hoverClass: "dropzone-hover"
|
51
|
-
greedy: true
|
52
|
-
tolerance: "pointer"
|
53
|
-
drop: (event, ui) ->
|
54
|
-
rentalId = parseInt($(ui.draggable).attr("id").split("_")[1])
|
55
|
-
remoteAccountId = parseInt($(@).data("remote-account-id"))
|
56
|
-
|
57
|
-
newRental = HandlebarsTemplates["rentals/connected_rental"]
|
58
|
-
rentalName: $(ui.draggable).children('.panel-heading').text()
|
59
|
-
rentalDescription: $(ui.draggable).children('.panel-body').html()
|
60
|
-
rentalId: rentalId
|
61
|
-
|
62
|
-
rentalsScrollingList = $(@).closest(".rentals-list").find(".rentals-list-scroll")
|
63
|
-
$(newRental).appendTo(rentalsScrollingList).addClass('pending')
|
64
|
-
rentalsScrollingList.animate
|
65
|
-
scrollTop: rentalsScrollingList.prop("scrollHeight")
|
66
|
-
|
67
|
-
$(ui.draggable).remove()
|
68
|
-
|
69
|
-
new_connect_url = "/en/admin/rentals/" + rentalId + "/connect_to_new" +
|
70
|
-
"?remote_account_id=" + remoteAccountId
|
71
|
-
|
72
|
-
$.ajax
|
73
|
-
url: new_connect_url
|
74
|
-
type: "PUT"
|
75
|
-
dataType: 'json'
|
76
|
-
beforeSend: ->
|
77
|
-
$(@).addClass('loading')
|
78
|
-
success: ->
|
79
|
-
$(@).removeClass('loading')
|
80
|
-
|
81
2
|
for rentalsList, index in $(".rentals-list")
|
82
3
|
inputId = "rentals-list-filter-#{index}"
|
83
4
|
new ListFilter(
|
@@ -1,5 +1,3 @@
|
|
1
|
-
$dropzone-active-bg: #fbf9ee;
|
2
|
-
|
3
1
|
@import "font-awesome-sprockets";
|
4
2
|
@import "font-awesome";
|
5
3
|
@import "bootstrap-bookingsync-sprockets";
|
@@ -112,20 +110,6 @@ body > .footer {
|
|
112
110
|
.remote-rentals-list {
|
113
111
|
background-color: #fff;
|
114
112
|
|
115
|
-
&.dropzone-active {
|
116
|
-
border: 1px dashed darken($dropzone-active-bg, 7%);
|
117
|
-
background-color: lighten($dropzone-active-bg, 2%);
|
118
|
-
}
|
119
|
-
|
120
|
-
&.dropzone-hover {
|
121
|
-
border: 1px solid darken($dropzone-active-bg, 7%);
|
122
|
-
background-color: $dropzone-active-bg;
|
123
|
-
|
124
|
-
.remote-new-rental {
|
125
|
-
border: 1px solid $btn-success-border;
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
113
|
.dropzone-active {
|
130
114
|
border: 1px dashed $btn-success-border;
|
131
115
|
}
|
@@ -201,40 +185,36 @@ body > .footer {
|
|
201
185
|
}
|
202
186
|
|
203
187
|
.panel-connected {
|
204
|
-
&.pending {
|
205
|
-
border-color: darken($dropzone-active-bg, 7%);
|
206
|
-
|
207
|
-
.panel-heading {
|
208
|
-
background-color: $dropzone-active-bg;
|
209
|
-
color: darken($dropzone-active-bg, 50%);
|
210
|
-
}
|
211
|
-
}
|
212
|
-
|
213
188
|
.panel-heading {
|
214
189
|
position: relative;
|
215
190
|
}
|
216
191
|
|
217
|
-
.
|
192
|
+
.status {
|
218
193
|
position: absolute;
|
219
194
|
right: 3px;
|
220
195
|
top: 8px;
|
221
|
-
border-radius: 11px;
|
222
|
-
|
223
|
-
span {
|
224
|
-
display: none;
|
225
|
-
}
|
226
|
-
|
227
|
-
&:hover {
|
228
|
-
background-color: $brand-danger;
|
229
|
-
border-color: $brand-danger;
|
230
|
-
border-radius: $border-radius-small;
|
231
196
|
|
232
|
-
|
197
|
+
.remove-connection {
|
198
|
+
.hover_show {
|
233
199
|
display: none;
|
234
200
|
}
|
235
201
|
|
236
|
-
|
237
|
-
|
202
|
+
.fa-check {
|
203
|
+
border-radius: 11px;
|
204
|
+
}
|
205
|
+
|
206
|
+
&:hover {
|
207
|
+
background-color: $brand-danger;
|
208
|
+
border-color: $brand-danger;
|
209
|
+
border-radius: $border-radius-small;
|
210
|
+
|
211
|
+
.hover_hide {
|
212
|
+
display: none;
|
213
|
+
}
|
214
|
+
|
215
|
+
.hover_show {
|
216
|
+
display: block;
|
217
|
+
}
|
238
218
|
}
|
239
219
|
}
|
240
220
|
}
|
@@ -3,6 +3,7 @@ require 'bookingsync_application/admin/common_base_controller'
|
|
3
3
|
module BookingsyncPortal
|
4
4
|
module Admin
|
5
5
|
class BaseController < ApplicationController
|
6
|
+
helper BookingsyncPortal::Admin::ApplicationHelper
|
6
7
|
layout 'bookingsync_portal/admin'
|
7
8
|
respond_to :html
|
8
9
|
include BookingsyncApplication::Admin::CommonBaseController
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module BookingsyncPortal
|
2
|
+
module Admin
|
3
|
+
class ConnectionsController < Admin::BaseController
|
4
|
+
def create
|
5
|
+
if remote_account? && BookingsyncPortal.create_remote_rental
|
6
|
+
new_remote_rental = BookingsyncPortal.remote_rental_model.constantize.new(remote_account: remote_account)
|
7
|
+
@connection = rental.create_connection(remote_rental: new_remote_rental)
|
8
|
+
else
|
9
|
+
@connection = rental.create_connection(remote_rental: remote_rental)
|
10
|
+
end
|
11
|
+
|
12
|
+
respond_to do |wants|
|
13
|
+
wants.html { redirect_to admin_rentals_path }
|
14
|
+
wants.js
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
connection = current_account.connections.find(params[:id]).destroy
|
20
|
+
|
21
|
+
respond_to do |wants|
|
22
|
+
wants.html { redirect_to admin_rentals_path }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def rental
|
29
|
+
@rental ||= current_account.rentals.not_connected.visible.find(params[:rental_id])
|
30
|
+
end
|
31
|
+
|
32
|
+
def remote_rental
|
33
|
+
@remote_rental ||= current_account.remote_rentals.not_connected.find(params[:remote_rental_id])
|
34
|
+
end
|
35
|
+
|
36
|
+
def remote_account
|
37
|
+
@remote_account ||= current_account.remote_accounts.find(params[:remote_account_id])
|
38
|
+
end
|
39
|
+
|
40
|
+
def remote_account?
|
41
|
+
params[:remote_account_id].present? && remote_account
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -16,24 +16,6 @@ module BookingsyncPortal
|
|
16
16
|
rental
|
17
17
|
end
|
18
18
|
|
19
|
-
def connect
|
20
|
-
remote_rental = current_account.remote_rentals.find(params[:remote_rental_id])
|
21
|
-
connection = rental.build_connection(remote_rental: remote_rental)
|
22
|
-
connection.save
|
23
|
-
|
24
|
-
BookingsyncPortal.connection_created(connection)
|
25
|
-
redirect_or_js_response
|
26
|
-
end
|
27
|
-
|
28
|
-
def disconnect
|
29
|
-
connection = rental.connection
|
30
|
-
rental.remote_rental.update_attribute(:synchronized_at, nil)
|
31
|
-
connection.destroy
|
32
|
-
|
33
|
-
BookingsyncPortal.connection_destroyed(connection)
|
34
|
-
redirect_or_js_response
|
35
|
-
end
|
36
|
-
|
37
19
|
private
|
38
20
|
|
39
21
|
def synchronize_rentals
|
@@ -49,13 +31,6 @@ module BookingsyncPortal
|
|
49
31
|
def rental
|
50
32
|
@rental ||= current_account.rentals.visible.find(params[:id])
|
51
33
|
end
|
52
|
-
|
53
|
-
def redirect_or_js_response
|
54
|
-
respond_to do |wants|
|
55
|
-
wants.html { redirect_to admin_rentals_path }
|
56
|
-
wants.json { head :ok }
|
57
|
-
end
|
58
|
-
end
|
59
34
|
end
|
60
35
|
end
|
61
36
|
end
|
@@ -9,6 +9,15 @@ class BookingsyncPortal::Connection < ActiveRecord::Base
|
|
9
9
|
|
10
10
|
validate :matching_accounts, if: -> { rental && remote_rental }
|
11
11
|
|
12
|
+
after_save :notify_via_message_bus
|
13
|
+
after_destroy :notify_via_message_bus
|
14
|
+
|
15
|
+
def notify_via_message_bus
|
16
|
+
MessageBus.publish "/account-#{rental.account_id}", { refresh_from:
|
17
|
+
BookingsyncPortal::Engine.routes.url_helpers.admin_rental_path(rental, format: :js)
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
12
21
|
private
|
13
22
|
|
14
23
|
def matching_accounts?
|
@@ -17,6 +17,10 @@ class BookingsyncPortal::RemoteRental < ActiveRecord::Base
|
|
17
17
|
scope :connected, -> { joins(:rental) }
|
18
18
|
scope :not_connected, -> { includes(:rental).where(rentals: { id: nil }) }
|
19
19
|
|
20
|
+
def display_name
|
21
|
+
uid
|
22
|
+
end
|
23
|
+
|
20
24
|
def connected?
|
21
25
|
rental.present?
|
22
26
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%- if @connection.persisted? %>
|
2
|
+
$("#<%= dom_id @connection.remote_rental %>, .new_rental_placeholder").replaceWith(
|
3
|
+
"<%=j render 'bookingsync_portal/admin/rentals/connected_rental', rental: @connection.rental, remote_rental: @connection.remote_rental,
|
4
|
+
disconnect_url: bookingsync_portal.admin_connection_url(@connection) %>");
|
5
|
+
<%- end %>
|
@@ -1,31 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
<div
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<%=
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
<p class="text-overflow"><%= rental_details(rental) %></p>
|
1
|
+
<div id="<%= dom_id rental %>"
|
2
|
+
class="panel panel-connected <%= "pending" unless rental.remote_rental.synchronized? %>">
|
3
|
+
|
4
|
+
<div class="panel-body-grid">
|
5
|
+
<div class="panel-body-grid-photo">
|
6
|
+
<%- if rental.ordered_photos.first -%>
|
7
|
+
<%= image_tag rental.ordered_photos.first.thumb_url, class: "img-responsive" %>
|
8
|
+
<%- end -%>
|
9
|
+
</div>
|
10
|
+
<div class="panel-body-grid-text">
|
11
|
+
<h4 title="<%= RemoteRental.human_attribute_name(:uid) %>: <%= remote_rental.uid %>">
|
12
|
+
<%= remote_rental.display_name %> / <%= rental.name %>
|
13
|
+
</h4>
|
14
|
+
<div class="status">
|
15
|
+
<%= link_to bookingsync_portal.admin_connection_path(rental.connection),
|
16
|
+
class: ["btn", "btn-xs", "remove-connection", rental.remote_rental.synchronized? ? "btn-success" : "btn-warning"],
|
17
|
+
data: { disable_with: t('.disconnecting_rental') }, method: :delete do %>
|
18
|
+
<% unless rental.remote_rental.synchronized? %>
|
19
|
+
<span class="hover_hide"><%= icon('spinner') %></span>
|
20
|
+
<% else %>
|
21
|
+
<span class="hover_hide"><%= icon('check') %></span>
|
22
|
+
<% end %>
|
23
|
+
<span class="hover_show"><%= t('.disconnect_rental') %></span>
|
24
|
+
<% end %>
|
26
25
|
</div>
|
26
|
+
<p class="text-overflow"><%= rental_details(rental) %></p>
|
27
27
|
</div>
|
28
|
-
|
29
|
-
<div class="panel-body"><%= icon('spinner fa-spin', t('.synchronizing')) %></div>
|
30
|
-
<% end %>
|
28
|
+
</div>
|
31
29
|
</div>
|
@@ -1,11 +1,11 @@
|
|
1
|
-
<div class="panel panel-remote
|
1
|
+
<div class="panel panel-remote" id="<%= dom_id remote_rental %>"
|
2
2
|
data-uid="<%= remote_rental.uid %>">
|
3
3
|
<div class="panel-body-grid">
|
4
4
|
<div class="panel-body-grid-photo">
|
5
5
|
</div>
|
6
6
|
<div class="panel-body-grid-text">
|
7
7
|
<h4 title="<%= RemoteRental.human_attribute_name(:uid) %>
|
8
|
-
<%= remote_rental.uid %>"><%= remote_rental.
|
8
|
+
<%= remote_rental.uid %>"><%= remote_rental.display_name %></h4>
|
9
9
|
<p class="text-overflow"></p>
|
10
10
|
</div>
|
11
11
|
</div>
|
@@ -1,6 +1,5 @@
|
|
1
1
|
<div class="panel panel-bookingsync bookingsync-rental"
|
2
|
-
id="<%= dom_id rental %>"
|
3
|
-
data-connect-url="<%= connect_admin_rental_url(rental) %>">
|
2
|
+
id="<%= dom_id rental %>">
|
4
3
|
<div class="panel-body-grid">
|
5
4
|
<div class="panel-body-grid-photo">
|
6
5
|
<%- if rental.ordered_photos.first -%>
|
@@ -28,7 +28,8 @@
|
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
<div class="col-xs-6">
|
31
|
-
<div class="remote-rentals-list rentals-list"
|
31
|
+
<div class="remote-rentals-list rentals-list"
|
32
|
+
data-connect-url="<%= bookingsync_portal.admin_connections_url %>">
|
32
33
|
<div class="rentals-list-header">
|
33
34
|
<legend class="text-center">
|
34
35
|
<%= image_tag("#{BookingsyncPortal.portal_name.parameterize}.png",
|
@@ -48,12 +49,15 @@
|
|
48
49
|
<%= render "remote_rental", remote_rental: remote_rental %>
|
49
50
|
<% end %>
|
50
51
|
<% end %>
|
51
|
-
<%-
|
52
|
+
<%- elsif !BookingsyncPortal.create_remote_rental -%>
|
52
53
|
<div class="lead text-center well">
|
53
54
|
<p class=""><%= icon 'info fa-lg' %></p>
|
54
|
-
<p><%=t '.create_listings_first' %></p>
|
55
|
+
<p><%=t '.create_listings_first', portal_name: BookingsyncPortal.portal_name %></p>
|
55
56
|
</div>
|
56
57
|
<%- end -%>
|
58
|
+
<%- if BookingsyncPortal.create_remote_rental -%>
|
59
|
+
<%= render "new_remote_rental", remote_account: remote_account %>
|
60
|
+
<%- end -%>
|
57
61
|
<% end %>
|
58
62
|
</div>
|
59
63
|
<div class="rentals-list-footer text-center">
|
@@ -1,6 +1,7 @@
|
|
1
1
|
$("#<%= dom_id @rental %>").replaceWith(
|
2
2
|
<%- if @rental.connected? %>
|
3
|
-
|
3
|
+
"<%=j render 'connected_rental', rental: @rental, remote_rental: @rental.remote_rental,
|
4
|
+
disconnect_url: bookingsync_portal.admin_connection_url(@rental.connection) %>");
|
4
5
|
<%- else %>
|
5
|
-
|
6
|
+
"<%=j render 'rental', rental: @rental %>");
|
6
7
|
<%- end %>
|
data/config/locales/en.yml
CHANGED
@@ -41,12 +41,14 @@ en:
|
|
41
41
|
rentals:
|
42
42
|
new_remote_account:
|
43
43
|
connect_accounts: Connect additional accounts
|
44
|
+
new_remote_rental:
|
45
|
+
drop_here: "Drop here to create a new rental on %{portal_name}"
|
44
46
|
index:
|
45
47
|
connect: Connect
|
46
48
|
bookingsync_header: "BookingSync: %{account_name}"
|
47
49
|
all_synchronized: Perfect! All your rentals are synchronized.
|
48
50
|
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>.'
|
49
|
-
create_listings_first: You must create your rentals on
|
51
|
+
create_listings_first: "You must create your rentals on %{portal_name} before you can synchronize them automatically."
|
50
52
|
connect_accounts: Add External Portal Account
|
51
53
|
remote_header: "%{portal_name}: %{account_name}"
|
52
54
|
help: Help
|
data/config/routes.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
BookingsyncPortal::Engine.routes.draw do
|
2
2
|
namespace :admin do
|
3
|
-
resources :rentals, only: [:index, :show]
|
4
|
-
|
5
|
-
put :connect, on: :member
|
6
|
-
end
|
3
|
+
resources :rentals, only: [:index, :show]
|
4
|
+
resources :connections, only: [:create, :destroy]
|
7
5
|
resources :remote_accounts, only: [:new, :create]
|
8
6
|
get 'help', to: 'help#index'
|
9
7
|
root to: 'rentals#index'
|
data/lib/bookingsync_portal.rb
CHANGED
@@ -21,6 +21,13 @@ module BookingsyncPortal
|
|
21
21
|
mattr_accessor :portal_name
|
22
22
|
@@portal_name = 'Portal'
|
23
23
|
|
24
|
+
# source name for use in bookings
|
25
|
+
mattr_accessor :source_name
|
26
|
+
|
27
|
+
# Allow to create a remote rental from this app.
|
28
|
+
mattr_accessor :create_remote_rental
|
29
|
+
@@create_remote_rental = false
|
30
|
+
|
24
31
|
# account model class
|
25
32
|
mattr_accessor :account_model
|
26
33
|
@@account_model = 'BookingsyncPortal::Account'
|
@@ -49,20 +56,9 @@ module BookingsyncPortal
|
|
49
56
|
mattr_accessor :rate_model
|
50
57
|
@@rate_model = 'BookingsyncPortal::Rate'
|
51
58
|
|
52
|
-
# source name for use in bookings
|
53
|
-
mattr_accessor :source_name
|
54
|
-
|
55
59
|
# message bus channel scope
|
56
60
|
mattr_accessor :message_bus_channel_scope
|
57
61
|
|
58
|
-
# handle synchronization of rentals after connection is made
|
59
|
-
def self.connection_created(connection)
|
60
|
-
end
|
61
|
-
|
62
|
-
# handle synchronization of rentals after connection is destroyed
|
63
|
-
def self.connection_destroyed(connection)
|
64
|
-
end
|
65
|
-
|
66
62
|
# fetch remote rentals
|
67
63
|
def self.fetch_remote_rentals(account)
|
68
64
|
# return false if remote account is not present or not valid
|
@@ -1,5 +1,17 @@
|
|
1
1
|
# Use this to customize the behaviour of BookingsyncPortal engine and hook up custom synchronization
|
2
2
|
BookingsyncPortal.setup do |config|
|
3
|
+
# customize the portal name
|
4
|
+
config.portal_name = "Replace with portal app name"
|
5
|
+
|
6
|
+
# customize the source name
|
7
|
+
config.source_name = "Replace with portal name"
|
8
|
+
|
9
|
+
# specify message_bus_channel_scope to allow shared redis setup
|
10
|
+
config.message_bus_channel_scope = 'portal_app_name'
|
11
|
+
|
12
|
+
# Allow to create a remote rental directly from this app.
|
13
|
+
config.create_remote_rental = false
|
14
|
+
|
3
15
|
# customize account model class, can extend BookingsyncPortal::Account
|
4
16
|
config.account_model = '::Account'
|
5
17
|
|
@@ -22,15 +34,15 @@ BookingsyncPortal.setup do |config|
|
|
22
34
|
config.rate_model = '::Rate'
|
23
35
|
|
24
36
|
# handle synchronization of rentals after connection is made
|
25
|
-
def config.connection_created(connection)
|
26
|
-
end
|
37
|
+
# def config.connection_created(connection)
|
38
|
+
# end
|
27
39
|
|
28
40
|
# handle synchronization of rentals after connection is destroyed
|
29
|
-
def config.connection_destroyed(connection)
|
30
|
-
end
|
41
|
+
# def config.connection_destroyed(connection)
|
42
|
+
# end
|
31
43
|
|
32
44
|
# fetch remote rentals
|
33
|
-
def config.fetch_remote_rentals(account)
|
34
|
-
|
35
|
-
end
|
45
|
+
# def config.fetch_remote_rentals(account)
|
46
|
+
# return false if remote account is not present or not valid
|
47
|
+
# end
|
36
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bookingsync_portal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Marciniak
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-02-
|
13
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -335,20 +335,21 @@ files:
|
|
335
335
|
- app/assets/images/bookingsync_portal/bookingsync.png
|
336
336
|
- app/assets/images/bookingsync_portal/help/connect.gif
|
337
337
|
- app/assets/javascripts/bookingsync_portal/admin/application.js.coffee
|
338
|
+
- app/assets/javascripts/bookingsync_portal/admin/connections.js.coffee
|
338
339
|
- app/assets/javascripts/bookingsync_portal/admin/handle_remote_errors.js.coffee
|
339
340
|
- app/assets/javascripts/bookingsync_portal/admin/lib/list-filter.js.coffee
|
340
341
|
- app/assets/javascripts/bookingsync_portal/admin/live_updates.js.coffee
|
341
342
|
- app/assets/javascripts/bookingsync_portal/admin/rentals.js.coffee
|
342
343
|
- app/assets/javascripts/bookingsync_portal/admin/templates/filter_input.hbs
|
343
|
-
- app/assets/javascripts/bookingsync_portal/admin/templates/rentals/connected_rental.hbs
|
344
344
|
- app/assets/javascripts/bookingsync_portal/admin/vendor/css-contains.js
|
345
345
|
- app/assets/stylesheets/bookingsync_portal/admin/application.css.scss
|
346
346
|
- app/controllers/bookingsync_portal/admin/base_controller.rb
|
347
|
+
- app/controllers/bookingsync_portal/admin/connections_controller.rb
|
347
348
|
- app/controllers/bookingsync_portal/admin/help_controller.rb
|
348
349
|
- app/controllers/bookingsync_portal/admin/remote_accounts_controller.rb
|
349
350
|
- app/controllers/bookingsync_portal/admin/rentals_controller.rb
|
350
351
|
- app/controllers/bookingsync_portal/application_controller.rb
|
351
|
-
- app/helpers/bookingsync_portal/admin/
|
352
|
+
- app/helpers/bookingsync_portal/admin/application_helper.rb
|
352
353
|
- app/models/bookingsync_portal/account.rb
|
353
354
|
- app/models/bookingsync_portal/connection.rb
|
354
355
|
- app/models/bookingsync_portal/photo.rb
|
@@ -358,6 +359,7 @@ files:
|
|
358
359
|
- app/models/bookingsync_portal/rental.rb
|
359
360
|
- app/synchronizers/bookingsync_portal/write/ensure_source_exists.rb
|
360
361
|
- app/synchronizers/bookingsync_portal/write/source.rb
|
362
|
+
- app/views/bookingsync_portal/admin/connections/create.js.erb
|
361
363
|
- app/views/bookingsync_portal/admin/help/_help.html.erb
|
362
364
|
- app/views/bookingsync_portal/admin/help/index.html.erb
|
363
365
|
- app/views/bookingsync_portal/admin/remote_accounts/_form.html.erb
|
@@ -365,6 +367,7 @@ files:
|
|
365
367
|
- app/views/bookingsync_portal/admin/remote_accounts/new.html.erb
|
366
368
|
- app/views/bookingsync_portal/admin/rentals/_connected_rental.html.erb
|
367
369
|
- app/views/bookingsync_portal/admin/rentals/_new_remote_account.html.erb
|
370
|
+
- app/views/bookingsync_portal/admin/rentals/_new_remote_rental.html.erb
|
368
371
|
- app/views/bookingsync_portal/admin/rentals/_remote_rental.html.erb
|
369
372
|
- app/views/bookingsync_portal/admin/rentals/_rental.html.erb
|
370
373
|
- app/views/bookingsync_portal/admin/rentals/index.html.erb
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<div class="panel panel-connected" id="rental_{{rentalId}}"}}>
|
2
|
-
<div class="panel-heading" title="{{listingId}}">{{rentalName}}
|
3
|
-
<a href="/en/admin/rentals/{{rentalId}}/disconnect"
|
4
|
-
class="btn btn-default btn-xs remove-connection"
|
5
|
-
data-method="put">Remove Connection</a>
|
6
|
-
</div>
|
7
|
-
<div class="panel-body"><i class="fa fa-spinner fa-spin"></i> Synchronizing...</div>
|
8
|
-
</div>
|