blast_contacts 0.0.1

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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +22 -0
  5. data/app/assets/javascripts/blast/contacts/application.js +13 -0
  6. data/app/assets/stylesheets/blast/contacts/application.css +14 -0
  7. data/app/controllers/blast/admin/contacts_controller.rb +23 -0
  8. data/app/controllers/blast/contacts/application_controller.rb +6 -0
  9. data/app/controllers/blast/contacts/contacts_controller.rb +65 -0
  10. data/app/decorators/controllers/admin_decorator.rb +11 -0
  11. data/app/decorators/controllers/dashboard_decorator.rb +9 -0
  12. data/app/decorators/models/user_decorator.rb +3 -0
  13. data/app/helpers/blast/contacts/application_helper.rb +6 -0
  14. data/app/models/blast/contacts/contact.rb +6 -0
  15. data/app/overrides/add_contacts_link_to_admin_nav.rb +6 -0
  16. data/app/overrides/add_contacts_link_to_nav.rb +6 -0
  17. data/app/overrides/add_contacts_list_to_dashboard.rb +5 -0
  18. data/app/overrides/add_contacts_list_to_index.rb +5 -0
  19. data/app/views/blast/admin/contacts/index.html.erb +32 -0
  20. data/app/views/blast/contacts/contacts/_form.html.erb +36 -0
  21. data/app/views/blast/contacts/contacts/edit.html.erb +12 -0
  22. data/app/views/blast/contacts/contacts/index.html.erb +45 -0
  23. data/app/views/blast/contacts/contacts/new.html.erb +13 -0
  24. data/app/views/blast/contacts/contacts/show.html.erb +26 -0
  25. data/app/views/blast/contacts/overrides/_admin_contacts_link.html.erb +7 -0
  26. data/app/views/blast/contacts/overrides/_contacts_link.html.erb +3 -0
  27. data/app/views/blast/contacts/overrides/_contacts_list.html.erb +29 -0
  28. data/app/views/blast/contacts/overrides/_contacts_list_admin.html.erb +22 -0
  29. data/config/routes.rb +8 -0
  30. data/db/migrate/20211217071056_create_blast_contacts_contacts.rb +14 -0
  31. data/lib/blast/contacts/engine.rb +27 -0
  32. data/lib/blast/contacts/version.rb +5 -0
  33. data/lib/blast/contacts.rb +6 -0
  34. data/lib/blast_contacts.rb +2 -0
  35. data/lib/tasks/blast/contacts_tasks.rake +4 -0
  36. metadata +105 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 00b8fcc224301c458f755bc005dc3ae4730ac9742432f214e712af22dee00cc8
4
+ data.tar.gz: 30f25e09d1ae81cce020fb0bd8eae83647d60370f657e92fc6c6fac89c8417c8
5
+ SHA512:
6
+ metadata.gz: 70f4162fdb7cdfd0dd7fbe889fdb9b7044b098429f140d6c7c2c2e78070c4fe4e7127be04b5d79cff483036e9518aa7874a8c2909a614e28b8accfbc1ad5d84f
7
+ data.tar.gz: 85e83085dfe7e763970d218eb1a55dfd8a1d986c3d0dc01f48d634538673165787a3a57a2b8423d81f8d90648eb06071a7bb1a830a3c90fe4c870d9070eb0bac
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2021 maheshsass
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = Blast::Contacts
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Blast::Contacts'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+
18
+ Bundler::GemHelper.install_tasks
19
+
20
+
21
+
22
+ task default: :test
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,14 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. It is generally better to create a new file per style scope.
11
+ *
12
+ *= require_tree .
13
+ *= require_self
14
+ */
@@ -0,0 +1,23 @@
1
+ require_dependency "blast/contacts/application_controller"
2
+
3
+ module Blast
4
+ module Admin
5
+ class ContactsController < ApplicationController
6
+ before_action :set_contact_count, only: :index
7
+ def index
8
+ authorize [:blast, :admin], :index?
9
+ @contacts = Blast::Contacts::Contact.all
10
+ end
11
+
12
+ private
13
+
14
+ def set_contact_count
15
+ @users_count = policy_scope(Blast::User).count
16
+ @contacts_count = Blast::Contacts::Contact.count
17
+ if Blast::Core.available?(:tasks)
18
+ @tasks_count = Blast::Tasks::Task.count
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,6 @@
1
+ module Blast
2
+ module Contacts
3
+ class ApplicationController < Blast::ApplicationController
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,65 @@
1
+ require_dependency "blast/contacts/application_controller"
2
+
3
+ module Blast
4
+ module Contacts
5
+ class ContactsController < ApplicationController
6
+ before_action :set_contact, only: [:show, :edit, :update, :destroy]
7
+
8
+ def index
9
+ @contacts = current_user.contacts
10
+ end
11
+
12
+ def show
13
+ end
14
+
15
+ def new
16
+ @contact = Contact.new
17
+ end
18
+
19
+ def edit
20
+ end
21
+
22
+ def create
23
+ @contact = Contact.new(contact_params)
24
+ @contact.user = current_user
25
+
26
+ if @contact.save
27
+ # Add blast to access the correct path
28
+ redirect_to [blast, @contact],
29
+ notice: 'Contact was successfully created.'
30
+ else
31
+ render :new
32
+ end
33
+ end
34
+
35
+ def update
36
+ if @contact.update(contact_params)
37
+ # Add blast to access the correct path
38
+ redirect_to [blast, @contact],
39
+ notice: 'Contact was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ @contact.destroy
47
+ # Add blast to access the correct path
48
+ redirect_to blast.contacts_url,
49
+ notice: 'Contact was successfully destroyed.'
50
+ end
51
+
52
+ private
53
+
54
+ def set_contact
55
+ @contact = Contact.find(params[:id])
56
+ end
57
+
58
+ def contact_params
59
+ # Add the parameters we allow
60
+ params.require(:contact).permit(:first_name, :last_name, :company,
61
+ :email, :phone, :user_id)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,11 @@
1
+ Blast::Admin::AdminController.class_eval do
2
+ before_action :set_contacts, only: :index
3
+
4
+ private
5
+
6
+ def set_contacts
7
+ authorize [:blast, :admin], :index?
8
+ @contacts = Blast::Contacts::Contact.ordered.limit(3)
9
+ @contacts_count = Blast::Contacts::Contact.count
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ Blast::DashboardController.class_eval do
2
+ before_action :set_contacts, only: :index
3
+
4
+ private
5
+
6
+ def set_contacts
7
+ @contacts = current_user.contacts
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ Blast::User.class_eval do
2
+ has_many :contacts, class_name: "Blast::Contacts::Contact"
3
+ end
@@ -0,0 +1,6 @@
1
+ module Blast
2
+ module Contacts
3
+ module ApplicationHelper
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Blast::Contacts
2
+ class Contact < ApplicationRecord
3
+ belongs_to :user
4
+ scope :ordered, -> { order(created_at: :desc) }
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(:virtual_path => "admin/shared/_nav",
2
+ :name => "add_contacts_link_to_admin_nav",
3
+ :insert_after => "[data-blast-hook='nav_item']",
4
+ :partial => "overrides/admin_contacts_link",
5
+ :namespaced => true,
6
+ :original => 'f5fe48b6dc6986328e0b873b3ffa1b228dd52a7c')
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(:virtual_path => "layouts/blast/application",
2
+ :name => "add_contacts_link_to_nav",
3
+ :insert_after => "[data-blast-hook='main_nav']",
4
+ :partial => "overrides/contacts_link",
5
+ :namespaced => true,
6
+ :original => 'f5fe48b6dc6986328e0b873b3ffa1b228dd52a7c')
@@ -0,0 +1,5 @@
1
+ Deface::Override.new(:virtual_path => "blast/dashboard/index",
2
+ :name => "add_contacts_list_to_dashboard",
3
+ :insert_after => "[data-blast-hook='dashboard']",
4
+ :partial => "overrides/contacts_list",
5
+ :namespaced => true)
@@ -0,0 +1,5 @@
1
+ Deface::Override.new(:virtual_path => "blast/admin/admin/index",
2
+ :name => "add_contacts_list_to_index",
3
+ :insert_after => "[data-blast-hook='index']",
4
+ :partial => "overrides/contacts_list_admin",
5
+ :namespaced => true)
@@ -0,0 +1,32 @@
1
+ <h2 class='float-left'>Contacts</h2>
2
+ <%= render 'admin/shared/nav' %>
3
+
4
+ <div class='clearfix'></div>
5
+ <hr/>
6
+
7
+ <table class="table table-bordered">
8
+ <thead class="table-active">
9
+ <th>ID</th>
10
+ <th>First Name</th>
11
+ <th>Last Name</th>
12
+ <th>Company</th>
13
+ <th>Email</th>
14
+ <th>Phone</th>
15
+ </thead>
16
+ <tbody>
17
+ <% @contacts.each do |contact| %>
18
+ <tr>
19
+ <td><%= contact.id %></td>
20
+ <td><%= contact.first_name %></td>
21
+ <td><%= contact.last_name %></td>
22
+ <td><%= contact.company %></td>
23
+ <td><%= contact.email %></td>
24
+ <td><%= contact.phone %></td>
25
+ </tr>
26
+ <% end %>
27
+ </tbody>
28
+ </table>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <br>
@@ -0,0 +1,36 @@
1
+ <div class="row">
2
+ <div class="col-md-8">
3
+ <% if @contact.errors.any? %>
4
+ <div id="error_explanation">
5
+ <h2>
6
+ <%= pluralize(@contact.errors.count, "error") %>
7
+ prohibited this contact from being saved:</h2>
8
+ <ul>
9
+ <% @contact.errors.full_messages.each do |message| %>
10
+ <li><%= message %></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ <% end %>
15
+ <div class="form-group">
16
+ <%= f.label :first_name, class: "control-label" %>
17
+ <%= f.text_field :first_name, class: "form-control" %>
18
+ </div>
19
+ <div class="form-group">
20
+ <%= f.label :last_name, class: "control-label" %>
21
+ <%= f.text_field :last_name, class: "form-control" %>
22
+ </div>
23
+ <div class="form-group">
24
+ <%= f.label :company, class: "control-label" %>
25
+ <%= f.text_field :company, class: "form-control" %>
26
+ </div>
27
+ <div class="form-group">
28
+ <%= f.label :email, class: "control-label" %>
29
+ <%= f.email_field :email, class: "form-control" %>
30
+ </div>
31
+ <div class="form-group">
32
+ <%= f.label :phone, class: "control-label" %>
33
+ <%= f.text_field :phone, class: "form-control" %>
34
+ </div>
35
+ </div>
36
+ </div>
@@ -0,0 +1,12 @@
1
+ <h2>Editing Contact</h2>
2
+ <hr>
3
+
4
+ <%= form_for([blast, @contact]) do |f| %>
5
+ <%= render 'form', f: f %>
6
+ <div class="form-group">
7
+ <div>
8
+ <%= f.submit "Update Contact", class: "btn btn-primary" %>
9
+ <%= link_to 'Back', blast.contacts_path, class: 'btn btn-default' %>
10
+ </div>
11
+ </div>
12
+ <% end %>
@@ -0,0 +1,45 @@
1
+ <%= link_to 'New Contact', blast.new_contact_path,
2
+ class: 'float-right btn btn-primary' %>
3
+
4
+ <h2>Listing Contacts</h2>
5
+ <hr>
6
+
7
+ <div class="panel panel-primary">
8
+ <div class="panel-heading">
9
+ My Contacts
10
+ </div>
11
+
12
+ <table class="table">
13
+ <thead>
14
+ <th>ID</th>
15
+ <th>First Name</th>
16
+ <th>Last Name</th>
17
+ <th>Company</th>
18
+ <th>Email</th>
19
+ <th>Phone</th>
20
+ <th></th>
21
+ </thead>
22
+ <tbody>
23
+ <% @contacts.each do |contact| %>
24
+ <tr>
25
+ <td><%= contact.id %></td>
26
+ <td><%= contact.first_name %></td>
27
+ <td><%= contact.last_name %></td>
28
+ <td><%= contact.company %></td>
29
+ <td><%= contact.email %></td>
30
+ <td><%= contact.phone %></td>
31
+ <td>
32
+ <%= link_to 'Show', [blast, contact],
33
+ class: 'btn btn-primary' %>
34
+ <%= link_to 'Edit', blast.edit_contact_path(contact),
35
+ class: 'btn btn-primary' %>
36
+ <%= link_to 'Destroy', [blast, contact],
37
+ class: 'btn btn-primary' , method: :delete,
38
+ data: { confirm: 'Are you sure?' } %>
39
+ </td>
40
+ </tr>
41
+ <% end %>
42
+ </tbody>
43
+ </table>
44
+ </div>
45
+ <br>
@@ -0,0 +1,13 @@
1
+ <h2>New Contact</h2>
2
+ <hr>
3
+
4
+ <%= form_for([blast, @contact]) do |f| %>
5
+ <%= render 'form', f: f %>
6
+
7
+ <div class="form-group">
8
+ <div>
9
+ <%= f.submit "Create Contact", class: "btn btn-primary" %>
10
+ <%= link_to 'Back', blast.contacts_path, class: 'btn btn-default' %>
11
+ </div>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,26 @@
1
+ <h2><%= @contact.first_name %></h2>
2
+ <hr>
3
+
4
+ <div class="row">
5
+ <div class="col-md-8">
6
+ <strong>First Name:</strong>
7
+ <%= @contact.first_name %>
8
+ <br/>
9
+ <strong>Last Name:</strong>
10
+ <%= @contact.last_name %>
11
+ <br/>
12
+ <strong>Company:</strong>
13
+ <%= @contact.company %>
14
+ <br/>
15
+ <strong>Email:</strong>
16
+ <%= @contact.email %>
17
+ <br/>
18
+ <strong>Phone:</strong>
19
+ <%= @contact.phone %>
20
+ </div>
21
+ </div>
22
+ <hr>
23
+ <%= link_to 'Edit', blast.edit_contact_path(@contact), class: "btn btn-primary" %>
24
+ <%= link_to 'Back', blast.contacts_path, class: 'btn btn-default' %>
25
+
26
+ <span data-blast-hook='contacts_show'></span>
@@ -0,0 +1,7 @@
1
+ <li class="nav-item <%= active(blast.admin_contacts_path) %>">
2
+ <%= link_to blast.admin_contacts_path,
3
+ class: "nav-link #{active(blast.admin_contacts_path)}" do %>
4
+ Contacts
5
+ <span class="badge">(<%= @contacts_count %>)</span>
6
+ <% end %>
7
+ </li>
@@ -0,0 +1,3 @@
1
+ <li class="nav-item <%= active(blast.contacts_path) %>">
2
+ <%= link_to 'Contacts', blast.contacts_path, class: 'nav-link' %>
3
+ </li>
@@ -0,0 +1,29 @@
1
+ <div class="col-md-6">
2
+ <div class="panel panel-primary">
3
+ <div class="panel-heading">
4
+ Last 3 Contacts
5
+ </div>
6
+ <table class="table">
7
+ <thead>
8
+ <th>ID</th>
9
+ <th>Name</th>
10
+ <th>Email</th>
11
+ <th>Created On</th>
12
+ </thead>
13
+ <tbody>
14
+ <%- @contacts.each do |contact| %>
15
+ <tr>
16
+ <td><%= contact.id %></td>
17
+ <td><%= contact.first_name %> <%= contact.last_name %></td>
18
+ <td><%= contact.email %></td>
19
+ <td><%= contact.created_at.strftime("%d %b. %Y") %></td>
20
+ </tr>
21
+ <% end %>
22
+ </tbody>
23
+ </table>
24
+
25
+ <div class="panel-body text-center">
26
+ <%= link_to '...', contacts_path %>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,22 @@
1
+ <div class="col-md-6">
2
+ <div class="card">
3
+ <div class="card-header">
4
+ Last 3 contacts
5
+ <div class="float-right">
6
+ <%= link_to 'See All', blast.admin_contacts_path %>
7
+ </div>
8
+ </div>
9
+ <table class="table table-bordered mb-0">
10
+ <tbody>
11
+ <%- @contacts.each do |contact| %>
12
+ <tr>
13
+ <td><%= contact.id %></td>
14
+ <td><%= contact.first_name %></td>
15
+ <td><%= contact.last_name %></td>
16
+ <td><%= contact.company %></td>
17
+ </tr>
18
+ <% end %>
19
+ </tbody>
20
+ </table>
21
+ </div>
22
+ </div>
data/config/routes.rb ADDED
@@ -0,0 +1,8 @@
1
+ Blast::Core::Engine.routes.draw do
2
+ scope module: 'contacts' do
3
+ resources :contacts
4
+ end
5
+ namespace :admin do
6
+ get '/contacts' => 'contacts#index'
7
+ end
8
+ end
@@ -0,0 +1,14 @@
1
+ class CreateBlastContactsContacts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :blast_contacts_contacts do |t|
4
+ t.string :first_name
5
+ t.string :last_name
6
+ t.string :company
7
+ t.string :email
8
+ t.string :phone
9
+ t.references :user, foreign_key: { to_table: :blast_users }
10
+
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ module Blast
2
+ module Contacts
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Blast::Contacts
5
+ paths["app/views"] << "app/views/blast/contacts"
6
+
7
+ initializer :append_migrations do |app|
8
+ unless app.root.to_s.match(root.to_s)
9
+ config.paths["db/migrate"].expanded.each do |p|
10
+ app.config.paths["db/migrate"] << p
11
+ end
12
+ end
13
+ end
14
+
15
+ config.to_prepare do
16
+ Dir.glob(Engine.root.join("app", "decorators", "**", "*_decorator*.rb")) do |c|
17
+ Rails.configuration.cache_classes ? require(c) : load(c)
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+
26
+
27
+
@@ -0,0 +1,5 @@
1
+ module Blast
2
+ module Contacts
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ require "deface"
2
+
3
+ module Blast
4
+ module Contacts
5
+ end
6
+ end
@@ -0,0 +1,2 @@
1
+ require "blast/contacts"
2
+ require "blast/contacts/engine"
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :contacts do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blast_contacts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Devblast
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-12-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: deface
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.0
41
+ description: Contact feature for BlastCRM.
42
+ email:
43
+ - info@devlast.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - MIT-LICENSE
49
+ - README.rdoc
50
+ - Rakefile
51
+ - app/assets/javascripts/blast/contacts/application.js
52
+ - app/assets/stylesheets/blast/contacts/application.css
53
+ - app/controllers/blast/admin/contacts_controller.rb
54
+ - app/controllers/blast/contacts/application_controller.rb
55
+ - app/controllers/blast/contacts/contacts_controller.rb
56
+ - app/decorators/controllers/admin_decorator.rb
57
+ - app/decorators/controllers/dashboard_decorator.rb
58
+ - app/decorators/models/user_decorator.rb
59
+ - app/helpers/blast/contacts/application_helper.rb
60
+ - app/models/blast/contacts/contact.rb
61
+ - app/overrides/add_contacts_link_to_admin_nav.rb
62
+ - app/overrides/add_contacts_link_to_nav.rb
63
+ - app/overrides/add_contacts_list_to_dashboard.rb
64
+ - app/overrides/add_contacts_list_to_index.rb
65
+ - app/views/blast/admin/contacts/index.html.erb
66
+ - app/views/blast/contacts/contacts/_form.html.erb
67
+ - app/views/blast/contacts/contacts/edit.html.erb
68
+ - app/views/blast/contacts/contacts/index.html.erb
69
+ - app/views/blast/contacts/contacts/new.html.erb
70
+ - app/views/blast/contacts/contacts/show.html.erb
71
+ - app/views/blast/contacts/overrides/_admin_contacts_link.html.erb
72
+ - app/views/blast/contacts/overrides/_contacts_link.html.erb
73
+ - app/views/blast/contacts/overrides/_contacts_list.html.erb
74
+ - app/views/blast/contacts/overrides/_contacts_list_admin.html.erb
75
+ - config/routes.rb
76
+ - db/migrate/20211217071056_create_blast_contacts_contacts.rb
77
+ - lib/blast/contacts.rb
78
+ - lib/blast/contacts/engine.rb
79
+ - lib/blast/contacts/version.rb
80
+ - lib/blast_contacts.rb
81
+ - lib/tasks/blast/contacts_tasks.rake
82
+ homepage: https://devblast.com
83
+ licenses:
84
+ - MIT
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubygems_version: 3.0.8
102
+ signing_key:
103
+ specification_version: 4
104
+ summary: Contact feature for BlastCRM.
105
+ test_files: []