wco_models 3.1.0.155 → 3.1.0.158
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/wco/utils.scss +10 -0
- data/app/controllers/wco/invoices_controller.rb +5 -24
- data/app/controllers/wco/leads_controller.rb +24 -20
- data/app/models/wco/invoice.rb +25 -1
- data/app/models/wco_game/location.rb +257 -0
- data/app/models/wco_game/marker.rb +9 -0
- data/app/views/wco/leads/_form.haml +6 -5
- data/app/views/wco/leads/_list.haml +16 -0
- data/app/views/wco/leads/{_index.haml → _table.haml} +1 -1
- data/app/views/wco/leads/index.haml +1 -1
- data/app/views/wco/leads/show.haml +4 -4
- data/app/views/wco/tags/_index.haml +1 -0
- data/app/views/wco/tags/index.haml +1 -1
- data/app/views/wco/tags/show.haml +7 -2
- metadata +7 -5
- data/app/views/wco/leads/_index_rows.haml +0 -11
- /data/app/views/wco/photos/{_form.haml → _form.haml-trash} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee76b07543560bf87e0fcb7bedeb3ea1d7e6757fcd19f2ec32a4ac483fd04ba4
|
4
|
+
data.tar.gz: 842db59465941e06a296e602130f541a15045412cb80b172ce917ee654a225d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10ac16fc0d8a4a34ee9511dff6d8c9afa34154a53bcb73eaedd3f140cf047625fe9d8a4e4db75d8ebb2818b60f58949a26ac08328aeced1bcc3e08a8acdebe24
|
7
|
+
data.tar.gz: b7a3b725b47b2ff7936be1059ec2caae5440e20a8f75dde373cd55553a457974beed2dd74dad51b7af9d89eda0dc515191bf1a0017a681230c9a1d7135baecc1
|
@@ -56,32 +56,13 @@ class Wco::InvoicesController < Wco::ApplicationController
|
|
56
56
|
@invoice = Wco::Invoice.new params[:invoice].permit!
|
57
57
|
authorize! :create, @invoice
|
58
58
|
|
59
|
-
stripe_invoice = Stripe::Invoice.create({
|
60
|
-
customer: @invoice.leadset.customer_id,
|
61
|
-
collection_method: 'send_invoice',
|
62
|
-
days_until_due: 0,
|
63
|
-
# collection_method: 'charge_automatically',
|
64
|
-
pending_invoice_items_behavior: 'exclude',
|
65
|
-
})
|
66
|
-
params[:invoice][:items].each do |item|
|
67
|
-
stripe_price = Wco::Price.find( item[:price_id] ).price_id
|
68
|
-
puts! stripe_price, 'stripe_price'
|
69
|
-
invoice_item = Stripe::InvoiceItem.create({
|
70
|
-
customer: @invoice.leadset.customer_id,
|
71
|
-
price: stripe_price,
|
72
|
-
invoice: stripe_invoice.id,
|
73
|
-
quantity: item[:quantity],
|
74
|
-
})
|
75
|
-
end
|
76
|
-
Stripe::Invoice.finalize_invoice( stripe_invoice[:id] )
|
77
|
-
if params[:do_send]
|
78
|
-
Stripe::Invoice.send_invoice(stripe_invoice[:id])
|
79
|
-
flash_notice "Scheduled to send the invoice via stripe."
|
80
|
-
end
|
81
|
-
@invoice.update_attributes({ invoice_id: stripe_invoice[:id] })
|
82
|
-
|
83
59
|
if @invoice.save
|
84
60
|
flash_notice "Created the invoice."
|
61
|
+
|
62
|
+
if params[:do_send]
|
63
|
+
Stripe::Invoice.send_invoice(@invoice[:invoice_id])
|
64
|
+
end
|
65
|
+
|
85
66
|
redirect_to action: :show, id: @invoice.id
|
86
67
|
else
|
87
68
|
flash_alert "Cannot create invoice: #{@invoice.errors.messages}"
|
@@ -1,14 +1,23 @@
|
|
1
1
|
|
2
2
|
class Wco::LeadsController < Wco::ApplicationController
|
3
|
-
|
4
3
|
before_action :set_lists
|
5
4
|
|
6
5
|
def create
|
7
|
-
params[:lead][:
|
8
|
-
params[:lead]
|
6
|
+
params[:lead][:tag_ids]&.delete ''
|
7
|
+
params[:lead].delete :leadset_id if params[:lead][:leadset_id].blank?
|
9
8
|
|
10
9
|
@lead = Wco::Lead.new params[:lead].permit!
|
11
10
|
authorize! :create, @lead
|
11
|
+
|
12
|
+
if params[:lead][:photo]
|
13
|
+
photo = Wco::Photo.new photo: params[:lead][:photo]
|
14
|
+
photo.is_public = true
|
15
|
+
if photo.save
|
16
|
+
@lead.photo = photo
|
17
|
+
end
|
18
|
+
params[:lead].delete :photo
|
19
|
+
end
|
20
|
+
|
12
21
|
if @lead.save
|
13
22
|
flash_notice 'ok'
|
14
23
|
else
|
@@ -26,8 +35,6 @@ class Wco::LeadsController < Wco::ApplicationController
|
|
26
35
|
authorize! :index, Wco::Lead
|
27
36
|
@leads = Wco::Lead.all
|
28
37
|
|
29
|
-
|
30
|
-
|
31
38
|
if params[:q].present?
|
32
39
|
q = params[:q].downcase
|
33
40
|
@leads = @leads.any_of(
|
@@ -41,19 +48,6 @@ class Wco::LeadsController < Wco::ApplicationController
|
|
41
48
|
end
|
42
49
|
end
|
43
50
|
|
44
|
-
# if params[:q_tag_ids].present?
|
45
|
-
# carry = nil
|
46
|
-
# params[:q_tag_ids].each do |term_id|
|
47
|
-
# lts = LeadTag.where({ term_id: term_id }).map(&:lead_id)
|
48
|
-
# if carry
|
49
|
-
# carry = carry & lts
|
50
|
-
# else
|
51
|
-
# carry = lts
|
52
|
-
# end
|
53
|
-
# end
|
54
|
-
# @leads = Lead.where({ :id.in => carry })
|
55
|
-
# end
|
56
|
-
|
57
51
|
@leads = @leads.page( params[:leads_page ] ).per( current_profile.per_page )
|
58
52
|
end
|
59
53
|
|
@@ -77,11 +71,21 @@ class Wco::LeadsController < Wco::ApplicationController
|
|
77
71
|
end
|
78
72
|
|
79
73
|
def update
|
80
|
-
params[:lead][:
|
81
|
-
params[:lead].delete :
|
74
|
+
params[:lead][:tag_ids]&.delete ''
|
75
|
+
params[:lead].delete :leadset_id if params[:lead][:leadset_id].blank?
|
82
76
|
|
83
77
|
@lead = Wco::Lead.find params[:id]
|
84
78
|
authorize! :update, @lead
|
79
|
+
|
80
|
+
if params[:lead][:photo]
|
81
|
+
photo = Wco::Photo.new photo: params[:lead][:photo]
|
82
|
+
photo.is_public = true
|
83
|
+
if photo.save
|
84
|
+
@lead.photo = photo
|
85
|
+
end
|
86
|
+
params[:lead].delete :photo
|
87
|
+
end
|
88
|
+
|
85
89
|
if @lead.update params[:lead].permit!
|
86
90
|
flash_notice 'ok'
|
87
91
|
else
|
data/app/models/wco/invoice.rb
CHANGED
@@ -14,6 +14,8 @@ class Wco::Invoice
|
|
14
14
|
include Mongoid::Paranoia
|
15
15
|
store_in collection: 'ish_invoice'
|
16
16
|
|
17
|
+
attr_accessor :is_stripe
|
18
|
+
|
17
19
|
field :email, type: String
|
18
20
|
|
19
21
|
field :invoice_id, type: String # stripe
|
@@ -35,7 +37,29 @@ class Wco::Invoice
|
|
35
37
|
field :description, type: String
|
36
38
|
field :items, type: Array # used by stripe
|
37
39
|
|
38
|
-
|
40
|
+
before_validation :create_stripe, on: :create
|
41
|
+
def create_stripe
|
42
|
+
if is_stripe
|
43
|
+
stripe_invoice = Stripe::Invoice.create({
|
44
|
+
customer: leadset.customer_id,
|
45
|
+
collection_method: 'send_invoice',
|
46
|
+
days_until_due: 0,
|
47
|
+
# collection_method: 'charge_automatically',
|
48
|
+
pending_invoice_items_behavior: 'exclude',
|
49
|
+
})
|
50
|
+
items.each do |item|
|
51
|
+
stripe_price = Wco::Price.find( item[:price_id] ).price_id
|
52
|
+
invoice_item = Stripe::InvoiceItem.create({
|
53
|
+
customer: leadset.customer_id,
|
54
|
+
price: stripe_price,
|
55
|
+
invoice: stripe_invoice.id,
|
56
|
+
quantity: item[:quantity],
|
57
|
+
})
|
58
|
+
end
|
59
|
+
Stripe::Invoice.finalize_invoice( stripe_invoice[:id] )
|
60
|
+
self.invoice_id = stripe_invoice[:id]
|
61
|
+
end
|
62
|
+
end
|
39
63
|
|
40
64
|
## Prawn/pdf unit of measure is 1/72"
|
41
65
|
## Canvas width: 612, height: 792
|
@@ -0,0 +1,257 @@
|
|
1
|
+
|
2
|
+
# require 'ish/premium_item'
|
3
|
+
# require 'ish/utils'
|
4
|
+
|
5
|
+
class WcoGame::Location
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Timestamps
|
8
|
+
# include Ish::PremiumItem
|
9
|
+
include Mongoid::Paranoia
|
10
|
+
include Wco::Utils
|
11
|
+
store_in collection: 'gameui_maps'
|
12
|
+
|
13
|
+
field :name
|
14
|
+
|
15
|
+
field :newsitems_page_size, default: 25
|
16
|
+
|
17
|
+
field :slug
|
18
|
+
validates :slug, uniqueness: true, presence: true
|
19
|
+
|
20
|
+
field :description
|
21
|
+
|
22
|
+
has_many :markers, :class_name => '::Gameui::Marker', inverse_of: :map
|
23
|
+
has_many :from_markers, :class_name => '::Gameui::Marker', inverse_of: :destination
|
24
|
+
|
25
|
+
has_many :newsitems, inverse_of: :map, order: :created_at.desc
|
26
|
+
|
27
|
+
# @TODO: remove field, replace with relation. _vp_ 2022-09-13
|
28
|
+
field :parent_slug
|
29
|
+
belongs_to :parent, class_name: '::Gameui::Map', inverse_of: :childs, optional: true
|
30
|
+
has_many :childs, class_name: '::Gameui::Map', inverse_of: :parent
|
31
|
+
|
32
|
+
has_one :image, class_name: '::Ish::ImageAsset', inverse_of: :location
|
33
|
+
belongs_to :creator_profile, class_name: '::Ish::UserProfile', inverse_of: :my_maps
|
34
|
+
|
35
|
+
has_and_belongs_to_many :bookmarked_profiles, class_name: '::Ish::UserProfile', inverse_of: :bookmarked_location
|
36
|
+
|
37
|
+
# shareable, nonpublic
|
38
|
+
field :is_public, type: Boolean, default: true
|
39
|
+
scope :public, ->{ where( is_public: true ) }
|
40
|
+
has_and_belongs_to_many :shared_profiles, :class_name => 'Ish::UserProfile', :inverse_of => :shared_locations
|
41
|
+
|
42
|
+
field :version, type: String, default: '0.0.0'
|
43
|
+
|
44
|
+
## @TODO: or self, right? and refactor this, seems N+1. _vp_ 2022-09-13
|
45
|
+
field :map_slug
|
46
|
+
def map
|
47
|
+
::Gameui::Map.where( slug: map_slug ).first
|
48
|
+
end
|
49
|
+
|
50
|
+
RATED_OPTIONS = [ 'pg-13', 'r', 'nc-17' ]
|
51
|
+
field :rated, default: 'pg-13' # 'r', 'nc-17'
|
52
|
+
|
53
|
+
## Possible keys: description, map, markers, newsitems,
|
54
|
+
field :labels, type: Object, default: <<~AOL
|
55
|
+
{ "description":"Description", "map":"Map", "markers":"Markers", "newsitems":"Newsitems"
|
56
|
+
}
|
57
|
+
AOL
|
58
|
+
|
59
|
+
## Possible keys:
|
60
|
+
## config.description.collapsible
|
61
|
+
field :config, type: Object, default: <<~AOL
|
62
|
+
{ "map_panel_type": "ThreePanelV1",
|
63
|
+
"studio": { "hasFloor": true, "studioLength": 2500, "studioWidth": 2500 }
|
64
|
+
}
|
65
|
+
AOL
|
66
|
+
|
67
|
+
# @deprecated, dont use!
|
68
|
+
field :img_path
|
69
|
+
|
70
|
+
## Not used! See config.map_panel_type instead.
|
71
|
+
# MAP_TYPES = [ :map_2d, :map_3d, :map_geospatial, :map_gallery, :map_toc ] ## Mostly not implemented. _vp_ 2022-09-06
|
72
|
+
# field :map_type, default: :map_2d
|
73
|
+
|
74
|
+
## Make sure to use x,y,z and w,h as appropriate.
|
75
|
+
## @TODO: abstract this into a module
|
76
|
+
field :x, type: Float
|
77
|
+
field :y, type: Float
|
78
|
+
field :z, type: Float
|
79
|
+
|
80
|
+
## Make sure to use x,y,z and w,h as appropriate.
|
81
|
+
field :w, type: Integer
|
82
|
+
validates :w, presence: true
|
83
|
+
field :h, type: Integer
|
84
|
+
validates :h, presence: true
|
85
|
+
# @TODO: this is shared between map and marker, move to a concern.
|
86
|
+
before_validation :compute_w_h
|
87
|
+
def compute_w_h
|
88
|
+
return if !image ## @TODO: test this
|
89
|
+
|
90
|
+
begin
|
91
|
+
geo = Paperclip::Geometry.from_file(Paperclip.io_adapters.for(image.image))
|
92
|
+
self.w = geo.width
|
93
|
+
self.h = geo.height
|
94
|
+
rescue Paperclip::Errors::NotIdentifiedByImageMagickError => e
|
95
|
+
puts! e, 'Could not #compute_w_h'
|
96
|
+
# @TODO: do something with this
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
ORDERING_TYPE_ALPHABETIC = 'alphabetic'
|
101
|
+
ORDERING_TYPE_CUSTOM = 'custom'
|
102
|
+
ORDERING_TYPE_TIMESTAMP = 'timestamp'
|
103
|
+
ORDERING_TYPES = [ ORDERING_TYPE_ALPHABETIC, ORDERING_TYPE_CUSTOM, ORDERING_TYPE_TIMESTAMP ]
|
104
|
+
field :ordering_type, type: String, default: 'custom' # timestamp, alphabetic, custom
|
105
|
+
validates :ordering_type, presence: true
|
106
|
+
|
107
|
+
def self.list conditions = { is_trash: false }
|
108
|
+
out = self.order_by( created_at: :desc )
|
109
|
+
[[nil, nil]] + out.map { |item| [ item.name, item.id.to_s ] }
|
110
|
+
end
|
111
|
+
|
112
|
+
def breadcrumbs
|
113
|
+
out = [{ name: self.name, slug: self.slug, link: false }]
|
114
|
+
p = self.parent
|
115
|
+
while p
|
116
|
+
out.push({ name: p.name, slug: p.slug })
|
117
|
+
p = p.parent
|
118
|
+
end
|
119
|
+
out.reverse
|
120
|
+
end
|
121
|
+
|
122
|
+
##
|
123
|
+
## @TODO: move the export func, below, to a module. _vp_ 2022-09-20
|
124
|
+
##
|
125
|
+
|
126
|
+
def empty_export
|
127
|
+
return {
|
128
|
+
galleries: {},
|
129
|
+
image_assets: {},
|
130
|
+
maps: {}, markers: {},
|
131
|
+
newsitems: {},
|
132
|
+
photos: {}, profiles: {},
|
133
|
+
reports: {},
|
134
|
+
videos: {},
|
135
|
+
}
|
136
|
+
end
|
137
|
+
def self.empty_export; Gameui::Map.new.empty_export; end
|
138
|
+
|
139
|
+
def empty_export_arr
|
140
|
+
return {
|
141
|
+
galleries: [],
|
142
|
+
image_assets: [],
|
143
|
+
maps: [], markers: [],
|
144
|
+
newsitems: [],
|
145
|
+
photos: [], profiles: [],
|
146
|
+
reports: [],
|
147
|
+
videos: [],
|
148
|
+
}
|
149
|
+
end
|
150
|
+
|
151
|
+
def export_key_to_class
|
152
|
+
return {
|
153
|
+
galleries: 'Gallery',
|
154
|
+
image_assets: 'Ish::ImageAsset',
|
155
|
+
maps: 'Gameui::Map',
|
156
|
+
markers: 'Gameui::Marker',
|
157
|
+
newsitems: 'Newsitem',
|
158
|
+
photos: 'Photo',
|
159
|
+
profiles: 'Ish::UserProfile',
|
160
|
+
reports: 'Report',
|
161
|
+
videos: 'Video',
|
162
|
+
# 'galleries' => 'Gallery',
|
163
|
+
# 'image_assets' => 'Ish::ImageAsset',
|
164
|
+
# 'maps' => 'Gameui::Map',
|
165
|
+
# 'markers' => 'Gameui::Marker',
|
166
|
+
# 'newsitems' => 'Newsitem',
|
167
|
+
# 'photos' => 'Photo',
|
168
|
+
# 'profiles' => 'Ish::UserProfile',
|
169
|
+
# 'reports' => 'Report',
|
170
|
+
# 'videos' => 'Video',
|
171
|
+
}.with_indifferent_access
|
172
|
+
end
|
173
|
+
def self.export_key_to_class
|
174
|
+
Map.new.export_key_to_class
|
175
|
+
end
|
176
|
+
|
177
|
+
def export_fields
|
178
|
+
%w|
|
179
|
+
creator_profile_id config
|
180
|
+
deleted_at description
|
181
|
+
h
|
182
|
+
is_public
|
183
|
+
labels
|
184
|
+
map_slug
|
185
|
+
name
|
186
|
+
ordering_type
|
187
|
+
parent_slug
|
188
|
+
rated
|
189
|
+
slug
|
190
|
+
version
|
191
|
+
w
|
192
|
+
|
|
193
|
+
end
|
194
|
+
|
195
|
+
## This is the starting point _vp_ 2022-03-12
|
196
|
+
##
|
197
|
+
def export_subtree
|
198
|
+
collected = collect(empty_export)
|
199
|
+
exportable = empty_export_arr
|
200
|
+
collected.map do |k, v|
|
201
|
+
if v.present?
|
202
|
+
v.map do |id|
|
203
|
+
id = id[0]
|
204
|
+
item = export_key_to_class[k].constantize.unscoped.find id
|
205
|
+
export = item.export
|
206
|
+
exportable[k].push( export )
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
JSON.pretty_generate exportable
|
211
|
+
end
|
212
|
+
|
213
|
+
def collect export_object
|
214
|
+
map = self
|
215
|
+
export_object[:maps][map.id.to_s] = map.id.to_s
|
216
|
+
|
217
|
+
if map.markers.present?
|
218
|
+
map.markers.map do |marker|
|
219
|
+
id = marker.id.to_s
|
220
|
+
if !export_object[:markers][id]
|
221
|
+
marker.collect( export_object )
|
222
|
+
end
|
223
|
+
export_object[:markers][id] = id
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
if map.newsitems.present?
|
228
|
+
map.newsitems.map do |newsitem|
|
229
|
+
id = newsitem.id.to_s
|
230
|
+
export_object[:newsitems][id] = id
|
231
|
+
newsitem.collect export_object
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
## @TODO: maybe implement this later, maybe not. _vp_ 2022-03-12
|
236
|
+
# if map.childs.present?
|
237
|
+
# export_object[:maps].push( map.childs.map &:id )
|
238
|
+
# map.childs.map do |child|
|
239
|
+
# child.collect export_object
|
240
|
+
# end
|
241
|
+
# end
|
242
|
+
|
243
|
+
if map.creator_profile.present?
|
244
|
+
export_object[:profiles][map.creator_profile.id.to_s] = map.creator_profile.id.to_s
|
245
|
+
end
|
246
|
+
|
247
|
+
if map.image.present?
|
248
|
+
export_object[:image_assets][map.image.id.to_s] = map.image.id.to_s
|
249
|
+
end
|
250
|
+
|
251
|
+
export_object
|
252
|
+
end
|
253
|
+
|
254
|
+
## endExport
|
255
|
+
|
256
|
+
|
257
|
+
end
|
@@ -6,8 +6,9 @@
|
|
6
6
|
= f.text_field :name
|
7
7
|
|
8
8
|
.field
|
9
|
-
|
10
|
-
= f.text_field :email
|
9
|
+
%label.required Email
|
10
|
+
= f.text_field :email, required: true
|
11
|
+
.small.gray Required to create a leadset
|
11
12
|
|
12
13
|
.field
|
13
14
|
= f.label :phone
|
@@ -19,7 +20,7 @@
|
|
19
20
|
|
20
21
|
.field
|
21
22
|
= f.label "Leadset (company)"
|
22
|
-
= f.select :
|
23
|
+
= f.select :leadset_id, options_for_select(@leadsets_list, selected: lead.leadset_id), {}, { class: :select2 }
|
23
24
|
|
24
25
|
-# .field
|
25
26
|
-# %label Rating
|
@@ -31,10 +32,10 @@
|
|
31
32
|
|
32
33
|
.field
|
33
34
|
= f.label "Tags"
|
34
|
-
= f.select :
|
35
|
+
= f.select :tag_ids, options_for_select(@tags_list, selected: lead.tag_ids ), {}, { class: :select2, multiple: true }
|
35
36
|
|
36
37
|
.field
|
37
|
-
|
38
|
+
%label Photo
|
38
39
|
= f.file_field :photo
|
39
40
|
|
40
41
|
.actions
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
%ul.leads--list
|
3
|
+
- leads.each do |lead|
|
4
|
+
%li.item
|
5
|
+
= image_tag lead.photo.photo.url(:thumb)
|
6
|
+
= link_to lead, lead_path(lead)
|
7
|
+
= link_to '[~]', edit_lead_path(lead)
|
8
|
+
|
9
|
+
-# \(#{lead.scheduled_email_actions.length} sch
|
10
|
+
-# %span.expand-next [+]
|
11
|
+
-# .expand-hide= render 'ish_manager/scheduled_actions/form_mini'
|
12
|
+
-# \)
|
13
|
+
|
14
|
+
- if defined?( wco_email )
|
15
|
+
%span.expand-next [reply]
|
16
|
+
.expand-hide= render '/wco_email/contexts/form_reply_mini', lead: lead
|
@@ -39,7 +39,7 @@
|
|
39
39
|
= link_to '[~]', edit_lead_path( lead )
|
40
40
|
= link_to "#{lead.name} <#{lead.email}>", lead_path( lead )
|
41
41
|
%td
|
42
|
-
= image_tag lead.photo.url(:thumb) if lead.photo
|
42
|
+
= image_tag lead.photo.photo.url(:thumb) if lead.photo
|
43
43
|
%td.company
|
44
44
|
= lead.leadset.company_url
|
45
45
|
%td
|
@@ -22,16 +22,16 @@
|
|
22
22
|
%li Address: #{@lead.address}
|
23
23
|
-# - if @lead.comment
|
24
24
|
-# %li Comment: #{raw @lead.comment}
|
25
|
-
- if @lead.photo
|
26
|
-
%li
|
27
|
-
= image_tag Photo.find( @lead.photo_id ).photo.url(:small)
|
28
25
|
|
29
26
|
.col-md-6
|
27
|
+
- if @lead.photo
|
28
|
+
= image_tag @lead.photo.photo.url(:thumb2)
|
29
|
+
|
30
30
|
%h5 Tags
|
31
31
|
%ul
|
32
32
|
- @lead.tags.each do |tag|
|
33
33
|
%li
|
34
|
-
= link_to tag
|
34
|
+
= link_to tag, tag_path(tag)
|
35
35
|
|
36
36
|
.row
|
37
37
|
.col-md-6.ctxs
|
@@ -14,12 +14,17 @@
|
|
14
14
|
<b>Message Stubs (#{@tag.message_stubs.length}): </b>
|
15
15
|
= render '/wco_email/message_stubs/index', stubs: @tag.message_stubs
|
16
16
|
|
17
|
+
%li.d-flex
|
18
|
+
<b>Galleries (#{@galleries.length}): </b>
|
19
|
+
= render 'wco/galleries/index', galleries: @galleries, config: { skip_tags: true }
|
17
20
|
%li.d-flex
|
18
21
|
<b>Headlines (#{@tag.headlines.length}): </b>
|
19
22
|
= render '/wco/headlines/index', headlines: @tag.headlines
|
23
|
+
|
20
24
|
%li.d-flex
|
21
|
-
<b>
|
22
|
-
= render 'wco/
|
25
|
+
<b>Leads (#{@tag.leads.length}): </b>
|
26
|
+
= render 'wco/leads/list', leads: @tag.leads
|
27
|
+
|
23
28
|
%li.d-flex
|
24
29
|
<b>Reports (#{@reports.length}): </b>
|
25
30
|
= render 'wco/reports/index', reports: @reports, config: { skip_tags: true }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wco_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.0.
|
4
|
+
version: 3.1.0.158
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Pudeyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-s3
|
@@ -473,6 +473,8 @@ files:
|
|
473
473
|
- app/models/wco_email/message_stub.rb
|
474
474
|
- app/models/wco_email/obfuscated_redirect.rb
|
475
475
|
- app/models/wco_email/unsubscribe.rb
|
476
|
+
- app/models/wco_game/location.rb
|
477
|
+
- app/models/wco_game/marker.rb
|
476
478
|
- app/models/wco_hosting/appliance.rb
|
477
479
|
- app/models/wco_hosting/appliance_tmpl.rb
|
478
480
|
- app/models/wco_hosting/domain.rb
|
@@ -529,8 +531,8 @@ files:
|
|
529
531
|
- app/views/wco/leads/_form.haml
|
530
532
|
- app/views/wco/leads/_form_import.haml
|
531
533
|
- app/views/wco/leads/_header.haml
|
532
|
-
- app/views/wco/leads/
|
533
|
-
- app/views/wco/leads/
|
534
|
+
- app/views/wco/leads/_list.haml
|
535
|
+
- app/views/wco/leads/_table.haml
|
534
536
|
- app/views/wco/leads/edit.haml
|
535
537
|
- app/views/wco/leads/index.haml
|
536
538
|
- app/views/wco/leads/new.haml
|
@@ -561,7 +563,7 @@ files:
|
|
561
563
|
- app/views/wco/office_actions/index.haml
|
562
564
|
- app/views/wco/office_actions/new.haml
|
563
565
|
- app/views/wco/office_actions/show.haml
|
564
|
-
- app/views/wco/photos/_form.haml
|
566
|
+
- app/views/wco/photos/_form.haml-trash
|
565
567
|
- app/views/wco/photos/_index_thumbs.haml
|
566
568
|
- app/views/wco/photos/_meta.haml
|
567
569
|
- app/views/wco/photos/_meta_manager.haml
|
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
.leads--index-rows
|
3
|
-
- leads.each do |lead|
|
4
|
-
.item
|
5
|
-
= link_to lead.email, lead_path(lead)
|
6
|
-
\(#{lead.scheduled_email_actions.length} sch
|
7
|
-
%span.expand-next [+]
|
8
|
-
.expand-hide= render 'ish_manager/scheduled_actions/form_mini'
|
9
|
-
\)
|
10
|
-
%span.expand-next [reply]
|
11
|
-
.expand-hide= render 'ish_manager/email_contexts/form_reply', lead: lead
|
File without changes
|