wco_models 3.1.0.160 → 3.1.0.162

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8a8b3788af1a09b4a90fdc06c83ccc2e98c179c665a81a11af981b768800371
4
- data.tar.gz: 1726230a660a720a942bd07bc452b0efd4cba30294510d13166f7674dd6d1954
3
+ metadata.gz: 4a881b4fa95b5c516fbc39b907e19300cc4398503ecc724f91d8f0828dd76886
4
+ data.tar.gz: 5f22a57dc79487a648a9c3e5330308287e47adc1b439614a7b7fc3663576d008
5
5
  SHA512:
6
- metadata.gz: 501eca4933ea763b0b2b9c10d81eb33274952f19a459eb2fb052392ea755282869db92108ac8c3422780be83b73c4d5f1551abbe9b86e167f68862bcb2d4c905
7
- data.tar.gz: fa02980d1b8e50109518fb2893b853922c76eaeeee09b77870c06fefb9531fc0a1a9168c6b2f75534ea069ccfc2fadaf1a45940179470e022d545c0634ee2532
6
+ metadata.gz: 160e765cac58ae6cb17d8d9681fc792760d10b6023a2eead64a3d8f207b2122f6c54710482e8980478c0128214922faa0790d3f00455ff48d49c89e2e24e6c77
7
+ data.tar.gz: 29f31d850a1a2b77f6b1c0f9747fb0cc5ef25383068f4e8e826d25277b7387a11f830207d20a5f847d536949b7deec22f8ec9c8a8eb3ae81bfc19a7b7b509065
@@ -16,12 +16,14 @@ $enable-important-utilities: false;
16
16
 
17
17
 
18
18
  /* A */
19
+
19
20
  .application--main-header.development {
20
21
  background: url('//wasyaco.com/wp-content/uploads/2024/02/weather-bg-development.png'),
21
22
  linear-gradient(90deg, pink, rgba(255,255,255,0) 5% );
22
23
  }
23
24
 
24
25
  /* B */
26
+
25
27
  .bold {
26
28
  font-weight: bold;
27
29
  }
@@ -29,6 +31,23 @@ $enable-important-utilities: false;
29
31
  border-bottom: 1px solid grey !important;
30
32
  }
31
33
 
34
+ /* F */
35
+
36
+ .field {
37
+ display: flex;
38
+ margin-bottom: 0.5em;
39
+
40
+ input {
41
+ flex-grow: 1;
42
+ }
43
+
44
+ label {
45
+ margin-right: 0.5em;
46
+ min-width: 100px;
47
+ }
48
+ }
49
+
50
+ /* M */
32
51
 
33
52
  .main-footer {
34
53
  border-top: 2px solid #6395b9;
@@ -46,10 +65,14 @@ $enable-important-utilities: false;
46
65
  }
47
66
  }
48
67
 
68
+ /* S */
69
+
49
70
  .select2 {
50
71
  min-width: 200px;
51
72
  }
52
73
 
74
+ /* T */
75
+
53
76
  td.tags {
54
77
  min-width: 200px;
55
78
  }
@@ -60,7 +60,7 @@ class Wco::LeadsetsController < Wco::ApplicationController
60
60
  @email_contexts[lead.email] = lead.email_contexts
61
61
  end
62
62
 
63
- @leads = @leadset.leads.page( params[:leads_page] ).per( current_profile.per_page )
63
+ @leads = @leadset.leads.page( params[:leads_page] ).per( current_profile.per_page )
64
64
  @subscriptions = @leadset.subscriptions
65
65
  @invoices = @leadset.invoices
66
66
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  class Wco::VideosController < Wco::ApplicationController
3
3
 
4
- # before_action :set_lists
4
+ before_action :set_lists
5
5
 
6
6
  # Alphabetized : )
7
7
 
@@ -46,9 +46,7 @@ class Wco::VideosController < Wco::ApplicationController
46
46
  @videos = @videos.page( params[:videos_page] ).per( 9 )
47
47
 
48
48
  respond_to do |format|
49
- format.html do
50
- render '_index'
51
- end
49
+ format.html
52
50
  format.json do
53
51
  render :json => @videos
54
52
  end
@@ -98,9 +96,20 @@ class Wco::VideosController < Wco::ApplicationController
98
96
  flash[:notice] = 'Success.'
99
97
  redirect_to video_path(@video)
100
98
  else
101
- flash[:alert] = "No luck: #{@video.errors.full_messages.joing(', ')}"
99
+ flash[:alert] = "No luck: #{@video.errors.full_messages.join(', ')}"
102
100
  render :edit
103
101
  end
104
102
  end
105
103
 
104
+ ##
105
+ ## private
106
+ ##
107
+ private
108
+
109
+ def set_lists
110
+ super
111
+ @leads_list = Wco::Lead.list
112
+ @tags_list = Wco::Tag.list
113
+ end
114
+
106
115
  end
@@ -61,8 +61,8 @@ class Wco::Lead
61
61
  has_and_belongs_to_many :email_campaigns, class_name: '::WcoEmail::Campaign'
62
62
  has_and_belongs_to_many :tags, class_name: '::Wco::Tag', index: true
63
63
 
64
- # has_many :galleries, class_name: 'Wco::Gallery'
65
- # has_many :videos, class_name: 'Wco::Video'
64
+ has_many :galleries, class_name: 'Wco::Gallery'
65
+ has_many :videos, class_name: 'Wco::Video'
66
66
 
67
67
  OP_DELETE = 'delete'
68
68
  OP_ADD_TO_CAMPAIGN = 'add_to_campaign'
@@ -32,6 +32,8 @@ class Wco::Video
32
32
  # belongs_to :user_profile, :class_name => 'Ish::UserProfile', :inverse_of => :videos
33
33
  # has_and_belongs_to_many :shared_profiles, :class_name => 'Ish::UserProfile', :inverse_of => :shared_videos
34
34
 
35
+ belongs_to :lead, optional: true
36
+
35
37
  has_and_belongs_to_many :tags
36
38
 
37
39
 
@@ -6,8 +6,8 @@
6
6
  <b>By</b>
7
7
  = link_to item.profile.name, edit_profile_path( item.profile )
8
8
 
9
- -# - if item.tags.length > 0
10
- -# <b>Tags:</b> #{ item.tags.map(&:name).join(', ') }
9
+ - if item.tags.length > 0
10
+ <b>Tags:</b> #{ item.tags.map(&:slug).join(', ') }
11
11
 
12
12
  - if defined?(item.premium_tier) && item.premium_tier > 0
13
13
  <b>Tier $#{item.premium_tier}</b>
@@ -2,15 +2,6 @@
2
2
  %ul.leads--list
3
3
  - leads.each do |lead|
4
4
  %li.item
5
- = image_tag lead.photo.photo.url(:thumb)
5
+ = image_tag lead.photo.photo.url(:thumb) if lead.photo
6
6
  = link_to lead, lead_path(lead)
7
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
@@ -26,7 +26,7 @@
26
26
  .col-md-4
27
27
  &nbsp;
28
28
  .col-md-8
29
- .field
29
+ .a
30
30
  %label Next Office Action Templates
31
31
  .eg rand(1..5).business_days.from_now.to_date + rand(8..16).hours + rand(1..59).minutes
32
32
  .eg This is not an interval! But you can do Time.now + 30.seconds
@@ -36,7 +36,7 @@
36
36
  .flex-row.field
37
37
  %label next_at_exe
38
38
  = next_f.text_field :next_at_exe, class: 'flex-grow w-100'
39
- .flex-row.field
39
+ .flex-row
40
40
  %label to_delete
41
41
  = next_f.check_box :to_delete
42
42
  = next_f.select :next_office_action_template_id, options_for_select( @oats_list, selected: next_f.object.next_office_action_template_id ), { }, { class: 'select2' }
@@ -0,0 +1,31 @@
1
+
2
+ %table.bordered.tags--index.data-table
3
+ %thead
4
+ %tr
5
+ %td &nbsp;
6
+ %td N Conv
7
+ %td N Stubs
8
+
9
+ %td N Headlines
10
+
11
+ %td N Galleries
12
+ %td N Reports
13
+ %td N Videos
14
+
15
+ %td N Leads
16
+
17
+ %td N Logs
18
+ %tbody
19
+ - tags.each do |tag|
20
+ %tr
21
+ %td
22
+ = link_to '[~]', edit_tag_path(tag)
23
+ = link_to tag.slug, tag_path(tag)
24
+ %td= tag.conversations.length
25
+ %td= tag.message_stubs.length
26
+ %td= tag.headlines.length
27
+ %td= tag.galleries.length
28
+ %td= tag.reports.length
29
+ %td= tag.videos.length
30
+ %td= tag.leads.length
31
+ %td= tag.logs.length
@@ -1,9 +1,9 @@
1
1
 
2
- .tags-index.maxwidth
2
+ .tags-index.padded
3
3
  .header
4
4
  %h5.title Tags (#{@tags.length})
5
5
 
6
- = render 'index', tags: @tags
6
+ = render 'index_table', tags: @tags
7
7
 
8
8
  %hr
9
9
 
@@ -16,15 +16,15 @@
16
16
 
17
17
  %li.d-flex
18
18
  <b>Galleries (#{@galleries.length}):&nbsp;</b>
19
- = render 'wco/galleries/index', galleries: @galleries, config: { skip_tags: true }
19
+ = render '/wco/galleries/index', galleries: @galleries, config: { skip_tags: true }
20
20
  %li.d-flex
21
21
  <b>Headlines (#{@tag.headlines.length}):&nbsp;</b>
22
22
  = render '/wco/headlines/index', headlines: @tag.headlines
23
23
 
24
24
  %li.d-flex
25
25
  <b>Leads (#{@tag.leads.length}):&nbsp;</b>
26
- = render 'wco/leads/list', leads: @tag.leads
26
+ = render '/wco/leads/index', leads: @tag.leads
27
27
 
28
28
  %li.d-flex
29
29
  <b>Reports (#{@reports.length}):&nbsp;</b>
30
- = render 'wco/reports/index', reports: @reports, config: { skip_tags: true }
30
+ = render '/wco/reports/index', reports: @reports, config: { skip_tags: true }
@@ -3,20 +3,17 @@
3
3
  .row
4
4
  .col-sm-6
5
5
  .field
6
- = f.label :youtube_id
6
+ %label youtube_id
7
7
  = f.text_field :youtube_id
8
8
  .field
9
- = f.label :name
9
+ %label Title (name)
10
10
  = f.text_field :name
11
- -# .input-group
12
- -# = f.label :premium_tier
13
- -# = f.number_field :premium_tier
14
- -# .input-group
15
- -# = f.check_box :is_trash
16
- -# = f.label :is_trash
17
- -# .field
18
- -# %label Lead
19
- -# = f.select :lead_id, options_for_select(@leads_list, selected: video.lead_id), {}, class: :select2
11
+ .field
12
+ %label Lead
13
+ = f.select :lead_id, options_for_select(@leads_list, selected: video.lead_id), {}, class: :select2
14
+ .field
15
+ %label Tags
16
+ = f.select :tag_ids, options_for_select(@tags_list, selected: video.tag_ids), { }, { class: :select2, multiple: 'multiple' }
20
17
  .col-sm-6
21
18
  .field
22
19
  = f.label :video
@@ -30,9 +27,8 @@
30
27
 
31
28
  .row
32
29
  .col-md-6
33
- .field
34
- = f.label :descr
35
- = f.text_area :descr, class: :tinymce
30
+ %label descr
31
+ = f.text_area :descr, class: :tinymce
36
32
 
37
33
 
38
34
  .action
@@ -1,19 +1,5 @@
1
1
 
2
- - videos ||= @videos
3
- - this_videos_path ||= videos_path
4
-
5
2
  .videos--index.container-fluid
6
- .videos--menu
7
- = link_to "Videos (#{videos.count})", this_videos_path
8
-
9
- -# = render 'search', path: this_videos_path
10
- .inline-search
11
- = form_tag this_videos_path, method: :get do
12
- = text_field_tag :q
13
-
14
- = link_to '[+]', new_video_path
15
- %hr
16
-
17
3
  = paginate videos, param_name: :videos_page, views_prefix: 'wco'
18
4
 
19
5
  .row
@@ -0,0 +1,11 @@
1
+
2
+ .videos-index.container-fluid
3
+ .d-flex
4
+ = link_to "Videos (#{@videos.count})", videos_path
5
+
6
+ .inline-search
7
+ = form_tag videos_path, method: :get do
8
+ = text_field_tag :q
9
+
10
+ = link_to '[+]', new_video_path
11
+ = render '/wco/videos/index', videos: @videos
@@ -6,7 +6,8 @@ class Wco::ScrapeWsj
6
6
  def initialize site: nil, max_count: 2
7
7
  site ||= Wco::Site.find_by slug: 'wsj'
8
8
 
9
- out = HTTParty.get( site.origin ).response.body
9
+ # out = HTTParty.get( site.origin ).response.body
10
+ # out = `curl #{site.origin}`
10
11
  out = Nokogiri::HTML(out)
11
12
  out.css('h3').each_with_index do |headline, idx|
12
13
  if idx < max_count
@@ -23,6 +24,7 @@ class Wco::ScrapeWsj
23
24
  end
24
25
  end
25
26
  end
27
+
26
28
  end
27
29
 
28
30
  end
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.160
4
+ version: 3.1.0.162
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-05-15 00:00:00.000000000 Z
11
+ date: 2024-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ahoy_matey
@@ -639,6 +639,7 @@ files:
639
639
  - app/views/wco/tags/_header.haml
640
640
  - app/views/wco/tags/_index.haml
641
641
  - app/views/wco/tags/_index_chips.haml
642
+ - app/views/wco/tags/_index_table.haml
642
643
  - app/views/wco/tags/_list_chips.haml
643
644
  - app/views/wco/tags/_menuitem.haml
644
645
  - app/views/wco/tags/edit.haml
@@ -651,6 +652,7 @@ files:
651
652
  - app/views/wco/videos/_header.haml
652
653
  - app/views/wco/videos/_index.haml
653
654
  - app/views/wco/videos/edit.haml
655
+ - app/views/wco/videos/index.haml
654
656
  - app/views/wco/videos/new.haml
655
657
  - app/views/wco/videos/show.haml
656
658
  - app/views/wco_email/application_mailer/_footer_unsubscribe.html.erb