e9_crm 0.1.17 → 0.1.18

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.
@@ -14,7 +14,8 @@ class E9Crm::OffersController < E9Crm::ResourcesController
14
14
 
15
15
  def show
16
16
  clear_breadcrumbs
17
- @show_title = resource.name
17
+ add_home_crumb
18
+ add_breadcrumb! @show_title = resource.name
18
19
  end
19
20
 
20
21
  protected
@@ -38,4 +39,12 @@ class E9Crm::OffersController < E9Crm::ResourcesController
38
39
  def determine_layout
39
40
  request.xhr? ? false : super
40
41
  end
42
+
43
+ def default_ordered_on
44
+ :name
45
+ end
46
+
47
+ def default_ordered_dir
48
+ :ASC
49
+ end
41
50
  end
@@ -1,4 +1,6 @@
1
1
  class E9Crm::ResourcesController < E9Crm::BaseController
2
+ inherit_resources
3
+
2
4
  include E9Rails::Helpers::ResourceErrorMessages
3
5
 
4
6
  # NOTE depending on e9_base pagination (which should eventually use this module)
@@ -12,8 +14,6 @@ class E9Crm::ResourcesController < E9Crm::BaseController
12
14
  class_inheritable_accessor :should_paginate_index
13
15
  self.should_paginate_index = true
14
16
 
15
- inherit_resources
16
-
17
17
  respond_to :js
18
18
 
19
19
  add_resource_breadcrumbs
@@ -1,12 +1,18 @@
1
1
  module E9Crm::CampaignsHelper
2
2
  def display_campaign_fee(val)
3
- Money === val && val || 'n/a'
3
+ Money === val && val.format || 'n/a'
4
4
  end
5
5
 
6
6
  def no_money
7
7
  @_no_money ||= Money.new(0)
8
8
  end
9
9
 
10
+ def m(val)
11
+ val ||= no_money
12
+ val = val.to_money
13
+ val.format
14
+ end
15
+
10
16
  def display_campaign_code(val)
11
17
  val && "?#{E9Crm.query_param}=#{val}" || 'n/a'
12
18
  end
@@ -16,6 +16,7 @@ module E9Crm::DealsHelper
16
16
  def deal_status_select_options
17
17
  @_deal_status_select_options ||= begin
18
18
  options = Deal::Status::OPTIONS - %w(lead)
19
+ options.map! {|o| [o.titleize, o] }
19
20
  options.unshift ['All Statuses', nil]
20
21
  options_for_select(options)
21
22
  end
@@ -23,7 +24,7 @@ module E9Crm::DealsHelper
23
24
 
24
25
  def deal_category_select_options
25
26
  @_deal_category_select_options ||= begin
26
- options = MenuOption.options_for('Deal Category')
27
+ options = MenuOption.options_for('Deal Category').sort
27
28
  options.unshift ['All Categories', nil]
28
29
  options_for_select(options)
29
30
  end
@@ -31,7 +32,7 @@ module E9Crm::DealsHelper
31
32
 
32
33
  def deal_owner_select_options
33
34
  @_deal_owner_select_options ||= begin
34
- options = Contact.deal_owners.all.map {|c| [c.name, c.id] }
35
+ options = deal_contacts_array
35
36
  options.unshift ['All Responsible', nil]
36
37
  options_for_select(options)
37
38
  end
@@ -39,7 +40,7 @@ module E9Crm::DealsHelper
39
40
 
40
41
  def deal_offer_select_options
41
42
  @_deal_offer_select_options ||= begin
42
- options = Offer.all.map {|c| [c.name, c.id] }
43
+ options = Offer.all.map {|c| [c.name, c.id] }.sort_by {|name, id| name.upcase }
43
44
  options.unshift ['Any/No Offer', nil]
44
45
  options_for_select(options)
45
46
  end
@@ -84,11 +85,11 @@ module E9Crm::DealsHelper
84
85
  def deal_contacts
85
86
  @_eligible_responsible_contacts ||= begin
86
87
  roles = E9::Roles.list.map(&:role).select {|r| r > 'user' && r < 'e9_user' }
87
- User.includes(:contact).for_roles(roles).all.map(&:contact).compact
88
+ User.includes(:contact).for_roles(roles).all.map(&:contact).compact.sort_by {|c| c.name.upcase }
88
89
  end
89
90
  end
90
91
 
91
92
  def deal_contacts_array
92
- deal_contacts.map {|c| [c.name, c.id] }.sort_by {|name, id| name.upcase }
93
+ deal_contacts.map {|c| [c.name, c.id] }
93
94
  end
94
95
  end
@@ -70,4 +70,12 @@ class Campaign < ActiveRecord::Base
70
70
  def to_s
71
71
  name.tap {|n| n << " (#{code})" if code.present? }
72
72
  end
73
+
74
+ def to_liquid
75
+ Drop.new(self)
76
+ end
77
+
78
+ class Drop < ::E9::Liquid::Drops::Base
79
+ source_methods :name, :code
80
+ end
73
81
  end
data/app/models/deal.rb CHANGED
@@ -27,8 +27,7 @@ class Deal < ActiveRecord::Base
27
27
  # lead only validations
28
28
  # require lead_name and lead_email; gotten from current_user if it exists
29
29
  validates :lead_name, :presence => { :if => lambda {|r| r.lead? } }
30
- validates :lead_email, :presence => { :if => lambda {|r| r.lead? } },
31
- :email => { :if => lambda {|r| r.lead? }, :allow_blank => true }
30
+ validates :lead_email, :presence => { :if => lambda {|r| r.lead? } }
32
31
 
33
32
  # NOTE should offer be validated?
34
33
  #validates :offer, :presence => { :if => lambda {|r| r.lead? } }
@@ -47,6 +46,7 @@ class Deal < ActiveRecord::Base
47
46
  # If a lead with no user, find the user by email or create it, then if mailing_lists
48
47
  # were passed, assign the user those mailing lists
49
48
  after_create :handle_user_if_lead
49
+ after_create :send_offer_conversion_email_if_lead
50
50
 
51
51
  # money column definitions for pseudo attributes (added on the reports scope)
52
52
  %w(total_value average_value total_cost average_cost).each do |money_column|
@@ -173,6 +173,10 @@ class Deal < ActiveRecord::Base
173
173
  scope :owner, lambda {|owner| where(:contact_id => owner.to_param) }
174
174
  scope :status, lambda {|status| where(:status => status) }
175
175
 
176
+ def to_liquid
177
+ Drop.new(self)
178
+ end
179
+
176
180
  protected
177
181
 
178
182
  def write_options(obj={})
@@ -250,6 +254,15 @@ class Deal < ActiveRecord::Base
250
254
  end
251
255
  end
252
256
 
257
+ def send_offer_conversion_email_if_lead
258
+ if lead? && offer && email = offer.conversion_alert_email.presence
259
+ Rails.logger.debug("Sending Deal Conversion Alert to [#{email}]")
260
+ Offer.conversion_email.send!(email, :offer => offer, :lead => self)
261
+ end
262
+ rescue
263
+ Rails.logger.debug("Deal conversion alert failed: #{$!}")
264
+ end
265
+
253
266
  def update_to_pending_status
254
267
  if self.status == Status::Lead
255
268
  self.status = Status::Pending
@@ -264,6 +277,13 @@ class Deal < ActiveRecord::Base
264
277
  )
265
278
  end
266
279
 
280
+ class Drop < ::E9::Liquid::Drops::Base
281
+ source_methods :name, :category, :lead_email, :lead_name, :info, :offer,
282
+ :campaign, :contacts, :owner, :status
283
+
284
+ date_methods :closed_at, :converted_at
285
+ end
286
+
267
287
  module Status
268
288
  OPTIONS = %w(lead pending won lost)
269
289
  Lead = OPTIONS[0]
@@ -6,4 +6,8 @@ class NoCampaign < Campaign
6
6
  def cost
7
7
  0
8
8
  end
9
+
10
+ def code
11
+ 'No Code'
12
+ end
9
13
  end
data/app/models/offer.rb CHANGED
@@ -45,6 +45,9 @@ class Offer < Renderable
45
45
  name
46
46
  end
47
47
 
48
+ def to_liquid
49
+ Drop.new(self)
50
+ end
48
51
 
49
52
  protected
50
53
 
@@ -54,6 +57,10 @@ class Offer < Renderable
54
57
  self.success_page_text ||= 'Thank you!'
55
58
  end
56
59
 
60
+ class Drop < ::E9::Liquid::Drops::Base
61
+ source_methods :name, :deals, :leads
62
+ end
63
+
57
64
  module Identifiers
58
65
  CONVERSION_EMAIL = 'offer_conversion_email'
59
66
  PAGE = 'offer_page'
@@ -6,9 +6,5 @@ class DealObserver < ActiveRecord::Observer
6
6
  end
7
7
 
8
8
  def before_convert(record)
9
- if email = record.offer && record.offer.conversion_alert_email.presence
10
- Rails.logger.debug("Sending Offer Conversion Alert to [#{email}]")
11
- Offer.conversion_email.try(:send!, email)
12
- end
13
9
  end
14
10
  end
@@ -23,9 +23,9 @@
23
23
  = record.name
24
24
  %td.record-code
25
25
  = display_campaign_code(record.code)
26
- %td.record-affiliate-fee
26
+ %td.record-affiliate-fee.num
27
27
  = display_campaign_fee(record.affiliate_fee)
28
- %td.record-sales-fee
28
+ %td.record-sales-fee.num
29
29
  = display_campaign_fee(record.sales_fee)
30
30
  %td.links
31
31
  - if record.is_a?(AdvertisingCampaign)
@@ -1,5 +1,5 @@
1
1
  = render 'e9_crm/offers/form_inner', :f => f
2
2
 
3
3
  .field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
4
- = f.label :success_page_text, nil, :class => :req
4
+ = help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
5
5
  = f.text_area :success_page_text
@@ -45,7 +45,7 @@
45
45
  .contact-deal-status
46
46
  = deal.status
47
47
  .contact-deal-name
48
- = link_to deal.name, edit_deal_path(deal)
48
+ = link_to deal.name, deal
49
49
  .contact-deal-value
50
50
  = deal.value
51
51
 
@@ -10,6 +10,6 @@
10
10
  - fid = "dated_cost_cost_#{id}"
11
11
  - unless request.xhr?
12
12
  = f.label :cost, nil, :class => :req, :for => id
13
- = f.text_field :cost, :id => id
13
+ = f.text_field :cost, :id => id, :value => f.object.cost.to_money
14
14
  .actions
15
15
  = f.submit
@@ -16,21 +16,21 @@
16
16
  = f.text_area :info
17
17
  .field
18
18
  = f.label :value, nil, :class => :req
19
- = f.text_field :value
19
+ = f.text_field :value, :value => f.object.value.to_s
20
20
  .field.select
21
- = f.label :campaign, :for => 'deal_campaign_select'
21
+ = f.label :campaign, :for => 'deal_campaign_select', :class => 'req'
22
22
  = f.collection_select :campaign_id, Campaign.ordered.all, :id, :to_s, {:prompt => true}, :id => 'deal_campaign_select'
23
23
  .field.select
24
24
  = f.label :status
25
25
  = f.select :status, Deal::Status::OPTIONS[1..-1]
26
26
  .field.select
27
27
  = f.label :contacts
28
- %input#contact_autocomplete.list{:type => 'text', 'data-values' => resource.contact_ids.join(','), 'data-iname' => resource_instance_name, 'data-field' => '[contact_ids]', :id => 'deal_contacts'}
28
+ %input#contact_autocomplete.list{:type => 'text', 'data-values' => resource.contact_ids.join(','), 'data-iname' => resource_instance_name, 'data-field' => '[contact_ids]'}
29
29
  %ul.select
30
30
  - f.object.contacts.each do |contact|
31
31
  %li.ui-state-default
32
32
  %span.content= contact.name
33
- %input{:type => :hidden, :name => "contact[contact_ids][]", :value => contact.id}
33
+ %input{:type => :hidden, :name => "#{resource_instance_name}[contact_ids][]", :value => contact.id}
34
34
  %a{:class => :remove, :title => "Remove", :alt => "Remove"} Remove
35
35
  .field.select
36
36
  = f.label :owner
@@ -2,8 +2,8 @@
2
2
  %thead
3
3
  %tr
4
4
  %th= orderable_column_link(:campaign_type)
5
- %th= orderable_column_link(:campaign_name)
6
5
  %th= orderable_column_link(:campaign_group)
6
+ %th= orderable_column_link(:campaign_name)
7
7
  %th= orderable_column_link(:new_visits)
8
8
  %th= orderable_column_link(:repeat_visits)
9
9
  %th= orderable_column_link(:lead_count)
@@ -26,61 +26,61 @@
26
26
  %tr{:id => "ids_#{record.id}", :class => cycle('odd', 'even')}
27
27
  %td.record-campaign-type
28
28
  = display_campaign_type(record.campaign_type)
29
- %td.record-campaign-name
30
- = record.campaign_name || 'n/a'
31
29
  %td.record-campaign-group
32
30
  = record.campaign_group || 'n/a'
33
- %td.record-new-visits
31
+ %td.record-campaign-name
32
+ = record.campaign_name || 'n/a'
33
+ %td.record-new-visits.num
34
34
  - dat[:new_visits] << record.new_visits
35
35
  = record.new_visits
36
- %td.record-repeat-visits
36
+ %td.record-repeat-visits.num
37
37
  - dat[:repeat_visits] << record.repeat_visits
38
38
  = record.repeat_visits
39
- %td.record-lead-count
39
+ %td.record-lead-count.num
40
40
  - dat[:lead_count] << record.lead_count
41
41
  = record.lead_count.to_i
42
- %td.record-deal-count
42
+ %td.record-deal-count.num
43
43
  - dat[:deal_count] << record.deal_count
44
44
  = record.deal_count.to_i
45
- %td.record-won-deal-count
45
+ %td.record-won-deal-count.num
46
46
  - dat[:won_deal_count] << record.won_deal_count
47
47
  = record.won_deal_count.to_i
48
- %td.record-total-value
48
+ %td.record-total-value.num
49
49
  - dat[:total_value] << record.total_value
50
- = record.total_value || no_money
51
- %td.record-averate-value
50
+ = m record.total_value
51
+ %td.record-averate-value.num
52
52
  - dat[:average_value] << record.average_value
53
- = record.average_value || no_money
54
- %td.record-total-cost
53
+ = m record.average_value
54
+ %td.record-total-cost.num
55
55
  - dat[:total_cost] << record.total_cost
56
- = record.total_cost || no_money
57
- %td.record-average-cost
56
+ = m record.total_cost
57
+ %td.record-average-cost.num
58
58
  - dat[:average_cost] << record.average_cost
59
- = record.average_cost || no_money
60
- %td.record-average-elapsed
59
+ = m record.average_cost
60
+ %td.record-average-elapsed.num
61
61
  - dat[:average_elapsed] << record.average_elapsed
62
62
  = record.average_elapsed && "%s days" % record.average_elapsed || 'n/a'
63
63
  %tfooter
64
64
  %tr{:class => 'record-totals'}
65
65
  %td.record-totals-label{:colspan => 3}
66
66
  #{t(:totals)}:
67
- %td.record-new-visits
67
+ %td.record-new-visits.num
68
68
  = dat[:new_visits].sum
69
- %td.record-repeat-visits
69
+ %td.record-repeat-visits.num
70
70
  = dat[:repeat_visits].sum
71
- %td.record-lead-count
71
+ %td.record-lead-count.num
72
72
  = dat[:lead_count].sum
73
- %td.record-deal-count
73
+ %td.record-deal-count.num
74
74
  = dat[:deal_count].sum.to_i
75
- %td.record-won-deal-count
75
+ %td.record-won-deal-count.num
76
76
  = dat[:won_deal_count].sum.to_i
77
- %td.record-total-value
78
- = dat[:total_value].compact.sum.to_money
79
- %td.record-average-value
80
- = dat[:average_value].compact.average.to_money
81
- %td.record-total-cost
82
- = dat[:total_cost].compact.sum.to_money
83
- %td.record-average-cost
84
- = dat[:average_cost].compact.average.to_money
85
- %td.record-average-elapsed
77
+ %td.record-total-value.num
78
+ = m dat[:total_value].compact.sum
79
+ %td.record-average-value.num
80
+ = m dat[:average_value].compact.average
81
+ %td.record-total-cost.num
82
+ = m dat[:total_cost].compact.sum
83
+ %td.record-average-cost.num
84
+ = m dat[:average_cost].compact.average
85
+ %td.record-average-elapsed.num
86
86
  = "%s days" % dat[:average_elapsed].compact.average
@@ -1,7 +1,7 @@
1
1
  = render 'e9_crm/offers/form_inner', :f => f
2
2
 
3
3
  .field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
4
- = f.label :success_page_text, nil, :class => :req
4
+ = help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
5
5
  = f.text_area :success_page_text
6
6
 
7
7
  %fieldset.upload
@@ -1,6 +1,6 @@
1
1
  = title @offer.name
2
2
 
3
3
  .offer-body
4
- = @offer.template
4
+ = k @offer.template
5
5
 
6
6
  = render 'form'
@@ -3,7 +3,7 @@
3
3
  = f.text_field :name
4
4
 
5
5
  .field.tinymce
6
- = f.label :template
6
+ = help_label(f, :template, :markdown => true)
7
7
  = f.text_area :template
8
8
 
9
9
  .field
@@ -1,5 +1,5 @@
1
1
  #offer-body
2
- = resource.success_page_text
2
+ = k resource.success_page_text
3
3
 
4
4
  - if resource.file?
5
5
  #offer-download-link
@@ -1,5 +1,5 @@
1
1
  = render 'e9_crm/offers/form_inner', :f => f
2
2
 
3
3
  .field{:class => request.xhr? ? 'tinymcexhr' : 'tinymce'}
4
- = f.label :success_page_text, nil, :class => :req
4
+ = help_label(f, :success_page_text, :key => :markdown_help, :header => "Markdown Help", :class => :req)
5
5
  = f.text_area :success_page_text
@@ -14,6 +14,12 @@ en:
14
14
  view: View
15
15
  save: Save
16
16
 
17
+ flash:
18
+ e9_crm:
19
+ contact_emails:
20
+ create:
21
+ notice: Contact email sent to recipients.
22
+
17
23
  e9_crm:
18
24
  add_record_attribute: Add
19
25
  destroy_record_attribute: Remove
@@ -23,7 +29,6 @@ en:
23
29
  show: 'Show %{model}'
24
30
  campaign:
25
31
  show: '%{model}'
26
-
27
32
  links:
28
33
  index: "Manage %{models}"
29
34
  new: "New %{model}"
@@ -31,14 +36,12 @@ en:
31
36
  destroy: "Delete"
32
37
  show: "View"
33
38
  confirm_destroy: Are you sure? This cannot be undone.
34
-
35
39
  campaign_group:
36
40
  confirm_destroy: Are you sure? This cannot be undone. Any campaigns which are associated with this group will become groupless.
37
41
 
38
42
  errors:
39
43
  messages:
40
44
  merge_required: 'Merge Required! <a href="%{merge_path}">MERGE ME</a>.'
41
-
42
45
  models:
43
46
  campaign:
44
47
  not_a_number: "%{attribute} must be a number (maximum 2 decimal places)."
@@ -46,7 +49,7 @@ en:
46
49
  code:
47
50
  invalid: "%{attribute} must be comprised of letters and numbers only."
48
51
  contact:
49
- delete_restricted: "This contact is related to leads and/or deals and can not be deleted."
52
+ delete_restricted: "You cannot delete a contact that has deals or leads."
50
53
  attributes:
51
54
  users:
52
55
  taken: "Two or more of the login accounts entered share a duplicate email."
@@ -115,6 +118,18 @@ en:
115
118
  no_leads: 'There are no leads associated with this contact.'
116
119
  company:
117
120
  info: Background Information
121
+ email:
122
+ body_help:
123
+ <p>System emails have variable data which you can interpolate into the fields</p>
124
+ <h3>Offer Conversion Email:</h3>
125
+ <p>
126
+ &#123;&#123; offer.name &#125;&#125;<br/>
127
+ &#123;&#123; lead.lead_email &#125;&#125;<br/>
128
+ &#123;&#123; lead.lead_name &#125;&#125;<br/>
129
+ &#123;&#123; lead.info &#125;&#125;<br/>
130
+ &#123;&#123; lead.created_at &#125;&#125;<br/>
131
+ </p>
132
+
118
133
  email_template:
119
134
  text_body_help: |
120
135
  <h3>Variables:</h3>
@@ -131,8 +146,16 @@ en:
131
146
  offer_name: Offer
132
147
  created_at: Date
133
148
  owner: Responsible
149
+ won_deal_count: Won count
134
150
  offer:
135
151
  template: Teaser Text
152
+ template_help: |
153
+ <h3>Variables:</h3>
154
+ <p>You can insert the following to render variable data in the field</p>
155
+ <p>
156
+ &#123;&#123;campaign.name&#125;&#125;<br/>
157
+ &#123;&#123;campaign.code&#125;&#125;<br/>
158
+ </p>
136
159
  alert_email_instructions: (Enter an email if you want to be notified of conversions)
137
160
  submit_button_text: Submit Button Text
138
161
  success_alert_text: Success Alert Text
@@ -12,6 +12,14 @@ module E9Crm
12
12
  prepend_before_filter do
13
13
  E9Crm.log("E9Crm controller request")
14
14
  end
15
+
16
+ alias :liquid_env_without_crm :liquid_env
17
+
18
+ def liquid_env
19
+ liquid_env_without_crm.tap do |env|
20
+ env[:campaign] = tracking_campaign
21
+ end
22
+ end
15
23
  end
16
24
 
17
25
  protected
@@ -1,3 +1,3 @@
1
1
  module E9Crm
2
- VERSION = '0.1.17'
2
+ VERSION = '0.1.18'
3
3
  end
data/lib/e9_crm.rb CHANGED
@@ -1,10 +1,5 @@
1
1
  require 'e9_base'
2
- require 'e9_rails'
3
- require 'e9_tags'
4
- require 'e9_attributes'
5
-
6
2
  require 'money'
7
-
8
3
  require 'e9_crm/rails_extensions'
9
4
 
10
5
  module E9Crm
@@ -55,7 +50,7 @@ module E9Crm
55
50
  user_model.send(:include, E9Crm::Model)
56
51
  end
57
52
 
58
- ActionController::Base.send(:include, E9Crm::Controller)
53
+ ApplicationController.send(:include, E9Crm::Controller)
59
54
 
60
55
  ::Email.send(:include, E9Crm::Email)
61
56
 
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: e9_crm
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 17
9
- version: 0.1.17
4
+ prerelease:
5
+ version: 0.1.18
10
6
  platform: ruby
11
7
  authors:
12
8
  - Travis Cox
@@ -14,8 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-09-09 00:00:00 -04:00
18
- default_executable:
13
+ date: 2011-09-12 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: rails
@@ -25,10 +20,6 @@ dependencies:
25
20
  requirements:
26
21
  - - ~>
27
22
  - !ruby/object:Gem::Version
28
- segments:
29
- - 3
30
- - 0
31
- - 0
32
23
  version: 3.0.0
33
24
  type: :runtime
34
25
  version_requirements: *id001
@@ -40,10 +31,6 @@ dependencies:
40
31
  requirements:
41
32
  - - ~>
42
33
  - !ruby/object:Gem::Version
43
- segments:
44
- - 1
45
- - 1
46
- - 2
47
34
  version: 1.1.2
48
35
  type: :runtime
49
36
  version_requirements: *id002
@@ -55,8 +42,6 @@ dependencies:
55
42
  requirements:
56
43
  - - ">="
57
44
  - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
45
  version: "0"
61
46
  type: :runtime
62
47
  version_requirements: *id003
@@ -68,8 +53,6 @@ dependencies:
68
53
  requirements:
69
54
  - - ">="
70
55
  - !ruby/object:Gem::Version
71
- segments:
72
- - 0
73
56
  version: "0"
74
57
  type: :runtime
75
58
  version_requirements: *id004
@@ -81,8 +64,6 @@ dependencies:
81
64
  requirements:
82
65
  - - ">="
83
66
  - !ruby/object:Gem::Version
84
- segments:
85
- - 0
86
67
  version: "0"
87
68
  type: :runtime
88
69
  version_requirements: *id005
@@ -94,8 +75,6 @@ dependencies:
94
75
  requirements:
95
76
  - - ">="
96
77
  - !ruby/object:Gem::Version
97
- segments:
98
- - 0
99
78
  version: "0"
100
79
  type: :runtime
101
80
  version_requirements: *id006
@@ -107,8 +86,6 @@ dependencies:
107
86
  requirements:
108
87
  - - ">="
109
88
  - !ruby/object:Gem::Version
110
- segments:
111
- - 0
112
89
  version: "0"
113
90
  type: :runtime
114
91
  version_requirements: *id007
@@ -120,8 +97,6 @@ dependencies:
120
97
  requirements:
121
98
  - - ">="
122
99
  - !ruby/object:Gem::Version
123
- segments:
124
- - 0
125
100
  version: "0"
126
101
  type: :runtime
127
102
  version_requirements: *id008
@@ -133,9 +108,6 @@ dependencies:
133
108
  requirements:
134
109
  - - ~>
135
110
  - !ruby/object:Gem::Version
136
- segments:
137
- - 0
138
- - 13
139
111
  version: "0.13"
140
112
  type: :runtime
141
113
  version_requirements: *id009
@@ -353,7 +325,6 @@ files:
353
325
  - lib/generators/e9_crm/templates/migration.rb
354
326
  - test/functional/e9_crm/campaign_types_controller_test.rb
355
327
  - test/functional/home_controller_test.rb
356
- has_rdoc: true
357
328
  homepage: http://www.e9digital.com
358
329
  licenses: []
359
330
 
@@ -367,21 +338,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
367
338
  requirements:
368
339
  - - ">="
369
340
  - !ruby/object:Gem::Version
370
- segments:
371
- - 0
372
341
  version: "0"
373
342
  required_rubygems_version: !ruby/object:Gem::Requirement
374
343
  none: false
375
344
  requirements:
376
345
  - - ">="
377
346
  - !ruby/object:Gem::Version
378
- segments:
379
- - 0
380
347
  version: "0"
381
348
  requirements: []
382
349
 
383
350
  rubyforge_project: e9_crm
384
- rubygems_version: 1.3.7
351
+ rubygems_version: 1.8.10
385
352
  signing_key:
386
353
  specification_version: 3
387
354
  summary: CRM engine plugin for the e9 CMS