phcdevworks_members 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +34 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/config/phcdevworks_members_manifest.js +2 -0
  6. data/app/assets/javascripts/phcdevworks_members/application.js +2 -0
  7. data/app/assets/javascripts/phcdevworks_members/directory/categories.coffee +3 -0
  8. data/app/assets/javascripts/phcdevworks_members/info/dashboard.coffee +3 -0
  9. data/app/assets/javascripts/phcdevworks_members/member/addresses.coffee +3 -0
  10. data/app/assets/javascripts/phcdevworks_members/member/listings.coffee +3 -0
  11. data/app/assets/javascripts/phcdevworks_members/member/profiles.coffee +3 -0
  12. data/app/assets/stylesheets/phcdevworks_members/application.scss +2 -0
  13. data/app/assets/stylesheets/phcdevworks_members/directory/categories.scss +3 -0
  14. data/app/assets/stylesheets/phcdevworks_members/info/dashboard.scss +3 -0
  15. data/app/assets/stylesheets/phcdevworks_members/member/addresses.scss +3 -0
  16. data/app/assets/stylesheets/phcdevworks_members/member/listings.scss +3 -0
  17. data/app/assets/stylesheets/phcdevworks_members/member/profiles.scss +3 -0
  18. data/app/controllers/phcdevworks_members/api/v1/categories_controller.rb +15 -0
  19. data/app/controllers/phcdevworks_members/api/v1/listings_controller.rb +17 -0
  20. data/app/controllers/phcdevworks_members/application_controller.rb +13 -0
  21. data/app/controllers/phcdevworks_members/directory/categories_controller.rb +86 -0
  22. data/app/controllers/phcdevworks_members/info/dashboard_controller.rb +19 -0
  23. data/app/controllers/phcdevworks_members/member/addresses_controller.rb +94 -0
  24. data/app/controllers/phcdevworks_members/member/listings_controller.rb +94 -0
  25. data/app/controllers/phcdevworks_members/member/profiles_controller.rb +87 -0
  26. data/app/helpers/phcdevworks_members/application_helper.rb +4 -0
  27. data/app/helpers/phcdevworks_members/directory/categories_helper.rb +4 -0
  28. data/app/helpers/phcdevworks_members/info/dashboard_helper.rb +4 -0
  29. data/app/helpers/phcdevworks_members/member/addresses_helper.rb +4 -0
  30. data/app/helpers/phcdevworks_members/member/listings_helper.rb +4 -0
  31. data/app/helpers/phcdevworks_members/member/profiles_helper.rb +4 -0
  32. data/app/jobs/phcdevworks_members/application_job.rb +4 -0
  33. data/app/mailers/phcdevworks_members/application_mailer.rb +6 -0
  34. data/app/models/phcdevworks_members/address_versions.rb +5 -0
  35. data/app/models/phcdevworks_members/application_record.rb +5 -0
  36. data/app/models/phcdevworks_members/category_versions.rb +5 -0
  37. data/app/models/phcdevworks_members/directory.rb +7 -0
  38. data/app/models/phcdevworks_members/directory/category.rb +21 -0
  39. data/app/models/phcdevworks_members/listing_versions.rb +5 -0
  40. data/app/models/phcdevworks_members/member.rb +7 -0
  41. data/app/models/phcdevworks_members/member/address.rb +39 -0
  42. data/app/models/phcdevworks_members/member/listing.rb +58 -0
  43. data/app/models/phcdevworks_members/member/profile.rb +46 -0
  44. data/app/models/phcdevworks_members/profile_versions.rb +5 -0
  45. data/app/views/layouts/phcdevworks_members/application.html.erb +79 -0
  46. data/app/views/layouts/phcdevworks_members/components/backend/footer/_footer.html.erb +16 -0
  47. data/app/views/layouts/phcdevworks_members/components/backend/navigation/_top_menu.html.erb +37 -0
  48. data/app/views/layouts/phcdevworks_members/components/backend/sidebars/_side_menu.html.erb +189 -0
  49. data/app/views/layouts/phcdevworks_members/mailer.html.erb +11 -0
  50. data/app/views/layouts/phcdevworks_members/mailer.text.erb +1 -0
  51. data/app/views/layouts/phcdevworks_members/member_profile.html.erb +78 -0
  52. data/app/views/phcdevworks_members/api/v1/categories/index.json.rabl +2 -0
  53. data/app/views/phcdevworks_members/api/v1/listings/index.json.rabl +2 -0
  54. data/app/views/phcdevworks_members/directory/categories/_form.html.erb +22 -0
  55. data/app/views/phcdevworks_members/directory/categories/components/_category_audits.html.erb +25 -0
  56. data/app/views/phcdevworks_members/directory/categories/components/_category_list.html.erb +15 -0
  57. data/app/views/phcdevworks_members/directory/categories/components/_category_main.html.erb +31 -0
  58. data/app/views/phcdevworks_members/directory/categories/components/_category_sidebar.html.erb +16 -0
  59. data/app/views/phcdevworks_members/directory/categories/edit.html.erb +37 -0
  60. data/app/views/phcdevworks_members/directory/categories/index.html.erb +52 -0
  61. data/app/views/phcdevworks_members/directory/categories/new.html.erb +37 -0
  62. data/app/views/phcdevworks_members/directory/categories/show.html.erb +30 -0
  63. data/app/views/phcdevworks_members/info/dashboard/index.html.erb +54 -0
  64. data/app/views/phcdevworks_members/member/addresses/_form.html.erb +46 -0
  65. data/app/views/phcdevworks_members/member/addresses/components/_address_audits_table.html.erb +15 -0
  66. data/app/views/phcdevworks_members/member/addresses/components/_address_main.html.erb +17 -0
  67. data/app/views/phcdevworks_members/member/addresses/edit.html.erb +37 -0
  68. data/app/views/phcdevworks_members/member/addresses/index.html.erb +75 -0
  69. data/app/views/phcdevworks_members/member/addresses/new.html.erb +37 -0
  70. data/app/views/phcdevworks_members/member/addresses/show.html.erb +65 -0
  71. data/app/views/phcdevworks_members/member/dashboards/index.html.erb +54 -0
  72. data/app/views/phcdevworks_members/member/listings/_form.html.erb +68 -0
  73. data/app/views/phcdevworks_members/member/listings/components/_listing_audits_table.html.erb +15 -0
  74. data/app/views/phcdevworks_members/member/listings/components/_listing_main.html.erb +22 -0
  75. data/app/views/phcdevworks_members/member/listings/edit.html.erb +37 -0
  76. data/app/views/phcdevworks_members/member/listings/index.html.erb +77 -0
  77. data/app/views/phcdevworks_members/member/listings/new.html.erb +37 -0
  78. data/app/views/phcdevworks_members/member/listings/show.html.erb +65 -0
  79. data/app/views/phcdevworks_members/member/profiles/_form.html.erb +42 -0
  80. data/app/views/phcdevworks_members/member/profiles/components/_profile_addresses_table.html.erb +24 -0
  81. data/app/views/phcdevworks_members/member/profiles/components/_profile_audits_table.html.erb +15 -0
  82. data/app/views/phcdevworks_members/member/profiles/components/_profile_header.html.erb +31 -0
  83. data/app/views/phcdevworks_members/member/profiles/components/_profile_information_table.html.erb +27 -0
  84. data/app/views/phcdevworks_members/member/profiles/components/_profile_listings_table.html.erb +24 -0
  85. data/app/views/phcdevworks_members/member/profiles/edit.html.erb +37 -0
  86. data/app/views/phcdevworks_members/member/profiles/index.html.erb +72 -0
  87. data/app/views/phcdevworks_members/member/profiles/new.html.erb +37 -0
  88. data/app/views/phcdevworks_members/member/profiles/show.html.erb +102 -0
  89. data/config/initializers/friendly_id.rb +107 -0
  90. data/config/routes.rb +31 -0
  91. data/db/migrate/20170509002355_create_phcdevworks_members_friendly_id_slugs.rb +20 -0
  92. data/db/migrate/20170517064030_create_phcdevworks_members_profile_versions.rb +19 -0
  93. data/db/migrate/20170517064049_create_phcdevworks_members_listing_versions.rb +19 -0
  94. data/db/migrate/20170517064114_create_phcdevworks_members_address_versions.rb +19 -0
  95. data/db/migrate/20170517064427_create_phcdevworks_members_category_versions.rb +19 -0
  96. data/db/migrate/20190317215659_create_join_table_categories_listings.rb +10 -0
  97. data/db/migrate/20190728233154_create_phcdevworks_members_member_addresses.rb +23 -0
  98. data/db/migrate/20190729233450_create_phcdevworks_members_member_listings.rb +29 -0
  99. data/db/migrate/20190729235705_create_phcdevworks_members_member_profiles.rb +20 -0
  100. data/db/migrate/20190730101344_create_phcdevworks_members_directory_categories.rb +15 -0
  101. data/lib/phcdevworks_members.rb +5 -0
  102. data/lib/phcdevworks_members/engine.rb +33 -0
  103. data/lib/phcdevworks_members/version.rb +3 -0
  104. data/lib/tasks/phcdevworks_members_tasks.rake +4 -0
  105. metadata +306 -0
@@ -0,0 +1,42 @@
1
+ <!-- Form - Member - Profile -->
2
+ <%= form_with(model: @member_profile, local: true) do |form| %>
3
+
4
+ <!-- PHCNotifi Render Validation -->
5
+ <%= render 'phcdevworks_notifications/bootstrap/validations', :object => @member_profile %>
6
+ <!-- PHCNotifi Render Validation -->
7
+
8
+ <!-- Form Input Fields -->
9
+ <div class="form-group field_with_errors">
10
+ <%= form.label :member_profile_first_name, "First Name*" %>
11
+ <%= form.text_field :member_profile_first_name, class: 'form-control', placeholder: 'First Name' %>
12
+ </div>
13
+ <div class="form-group field_with_errors">
14
+ <%= form.label :member_profile_last_name, "Last Name*" %>
15
+ <%= form.text_field :member_profile_last_name, class: 'form-control', placeholder: 'Last Name' %>
16
+ </div>
17
+ <div class="form-group field_with_errors">
18
+ <%= form.label :member_profile_title, "Job Title" %>
19
+ <%= form.text_field :member_profile_title, class: 'form-control', placeholder: 'Job Title/Salutation' %>
20
+ </div>
21
+ <div class="form-group field_with_errors">
22
+ <%= form.label :member_profile_email, "Contact Email Address*" %>
23
+ <%= form.text_field :member_profile_email, class: 'form-control', placeholder: 'Contact Email (Will Remain Private)' %>
24
+ </div>
25
+ <div class="form-group field_with_errors">
26
+ <%= form.label :member_profile_phone, "Contact Phone Number*" %>
27
+ <%= form.text_field :member_profile_phone, class: 'form-control masked', placeholder: 'Contact Phone Number (Will Remain Private)', data: {format: '(999) 999-9999', placeholder: 'x'} %>
28
+ </div>
29
+ <div class="form-group field_with_errors">
30
+ <%= form.label :member_profile_notes, "Member" %>
31
+ <%= form.text_area :member_profile_notes, class: 'form-control masked', placeholder: 'Member Notes' %>
32
+ </div>
33
+ <!-- Form Input Fields -->
34
+
35
+ <!-- Form Submition Button -->
36
+ <div class="actions">
37
+ <%= form.submit class: "btn btn-primary btn-md" %>
38
+ </div>
39
+ <!-- For Submition Button -->
40
+
41
+ <% end %>
42
+ <!-- Form - Member - Profile -->
@@ -0,0 +1,24 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-striped table-bordered table-hover">
3
+ <thead>
4
+ <tr>
5
+ <th>Address Line 1</th>
6
+ <th>City</th>
7
+ <th>Province</th>
8
+ <th>Type</th>
9
+ </tr>
10
+ </thead>
11
+ <tbody>
12
+ <% @member_profile.addresses.each do |members_main_address| %>
13
+ <tr>
14
+ <td><%= members_main_address.member_address_line_1 %></td>
15
+ <td><%= members_main_address.member_address_city %></td>
16
+ <td><%= members_main_address.member_address_province %></td>
17
+ <td><%= members_main_address.member_address_type %></td>
18
+ </tr>
19
+ <% end %>
20
+ </tbody>
21
+ </table>
22
+ <%= link_to "See All of " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name + " Addresses", phcdevworks_members.member_profile_addresses_path(@member_profile), class: "btn btn-primary btn-xs" %>
23
+ <%= link_to "Add a New Address for " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name, phcdevworks_members.new_member_profile_address_path(@member_profile), class: "btn btn-purple btn-xs" %>
24
+ </div>
@@ -0,0 +1,15 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-striped table-bordered table-hover">
3
+ <tbody>
4
+ <% @member_profile_versions.each do |member_profile_version| %>
5
+ <tr>
6
+ <td><span class="label label-primary"><%= member_profile_version.event.humanize %></span></td>
7
+ <td><small>PROFILE EVENT ID#<%= member_profile_version.id %></small></td>
8
+ <td><%= member_profile_version.event.humanize + ' ' + @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %> Profile Information</td>
9
+ <td><%= member_profile_version.whodunnit %></td>
10
+ <td><%= l(member_profile_version.created_at, format: "%-d/%m/%Y") %> - <%= l(member_profile_version.created_at, format: "%H:%M %Z") %></td>
11
+ </tr>
12
+ <% end %>
13
+ </tbody>
14
+ </table>
15
+ </div>
@@ -0,0 +1,31 @@
1
+ <div class="profile-header">
2
+
3
+ <!-- Member Profiles - Header - Cover -->
4
+ <div class="profile-header-cover"></div>
5
+ <!-- Member Profiles - Header - Cover -->
6
+
7
+ <!-- Member Profiles - Header - Content -->
8
+ <div class="profile-header-content">
9
+ <div class="profile-header-img">
10
+ <%= image_tag @member_profile.gravatar_url :secure => true, :filetype => :png, :size => 128 %>
11
+ </div>
12
+ <div class="profile-header-info">
13
+ <h4 class="m-t-10 m-b-5"><%= @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %></h4>
14
+ <p class="m-b-10"><%= @member_profile.member_profile_phone %></p>
15
+ <%= link_to edit_member_profile_path(@member_profile), class: "btn btn-xs btn-yellow" do %>
16
+ <i class="far fa-pencil-alt"></i> Update Member Information
17
+ <% end %>
18
+ </div>
19
+ </div>
20
+ <!-- Member Profiles - Header - Content -->
21
+
22
+ <!-- Member Profiles - Header - Tab Bar -->
23
+ <ul class="profile-header-tab nav nav-tabs">
24
+ <li class="nav-item"><a href="#profile-information" class="nav-link" data-toggle="tab">MEMBER INFORMATION</a></li>
25
+ <li class="nav-item"><a href="#profile-addresses" class="nav-link" data-toggle="tab">MEMBER ADDRESSES</a></li>
26
+ <li class="nav-item"><a href="#profile-listings" class="nav-link" data-toggle="tab">MEMBER LISTINGS</a></li>
27
+ <li class="nav-item"><a href="#profile-logs" class="nav-link" data-toggle="tab">MEMBER CHANGE LOG</a></li>
28
+ </ul>
29
+ <!-- Member Profiles - Header - Tab Bar -->
30
+
31
+ </div>
@@ -0,0 +1,27 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-striped table-bordered table-hover">
3
+ <thead>
4
+ <tr>
5
+ <th>First Name</th>
6
+ <th>Last Name</th>
7
+ <th>Title</th>
8
+ <th>Email</th>
9
+ <th>Phone</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <tr>
14
+ <td><%= @member_profile.member_profile_first_name %></td>
15
+ <td><%= @member_profile.member_profile_last_name %></td>
16
+ <td><%= @member_profile.member_profile_title %></td>
17
+ <td><%= @member_profile.member_profile_email %></td>
18
+ <td><%= @member_profile.member_profile_phone %></td>
19
+ </tr>
20
+ <tr>
21
+ <td><strong>Notes:</strong></td>
22
+ <td colspan="4"><%= @member_profile.member_profile_notes %></td>
23
+ </tr>
24
+ </tbody>
25
+ </table>
26
+ <%= link_to "Update " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name + " Information", phcdevworks_members.edit_member_profile_path(@member_profile), class: "btn btn-primary btn-xs" %>
27
+ </div>
@@ -0,0 +1,24 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-striped table-bordered table-hover">
3
+ <thead>
4
+ <tr>
5
+ <th>Company Name</th>
6
+ <th>Conact Name</th>
7
+ <th>City</th>
8
+ <th>Business Phone</th>
9
+ </tr>
10
+ </thead>
11
+ <tbody>
12
+ <% @member_profile.listings.each do |member_profile_listing| %>
13
+ <tr>
14
+ <td><%= member_profile_listing.listing_company_name %></td>
15
+ <td><%= member_profile_listing.listing_contact_name %></td>
16
+ <td><%= member_profile_listing.listing_city %></td>
17
+ <td><%= member_profile_listing.listing_phone %></td>
18
+ </tr>
19
+ <% end %>
20
+ </tbody>
21
+ </table>
22
+ <%= link_to "See All of " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name + " Listings", phcdevworks_members.member_profile_listings_path(@member_profile), class: "btn btn-primary btn-xs" %>
23
+ <%= link_to "Add a New Listing for " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name, phcdevworks_members.new_member_profile_listing_path(@member_profile), class: "btn btn-purple btn-xs" %>
24
+ </div>
@@ -0,0 +1,37 @@
1
+ <!-- Title System -->
2
+ <% phc_title "Members Manager" %>
3
+ <% phc_title_tagline "Update Member Information for " + @member_profile.member_profile_first_name + " " + @member_profile.member_profile_last_name %>
4
+ <% phc_breadcrumb_one link_to "Dashboard", phcdevworks_members.dashboard_path %>
5
+ <% phc_breadcrumb_two link_to "Member Profiles", phcdevworks_members.member_profiles_path %>
6
+ <% phc_breadcrumb_three yield(:phc_title_tagline) %>
7
+ <!-- Title System -->
8
+
9
+ <!-- Page Bradcrumbs -->
10
+ <ol class="breadcrumb pull-right">
11
+ <li class="breadcrumb-item"><%= yield(:phc_breadcrumb_one) %></li>
12
+ <li class="breadcrumb-item"><%= yield(:phc_breadcrumb_two) %></li>
13
+ <li class="breadcrumb-item active"><%= yield(:phc_breadcrumb_three) %></li>
14
+ </ol>
15
+ <!-- Page Bradcrumbs -->
16
+
17
+ <!-- Page Header -->
18
+ <h1 class="page-header"><%= yield(:phc_title) %></h1>
19
+ <!-- Page Header -->
20
+
21
+ <!-- Page Content -->
22
+ <div class="panel panel-inverse">
23
+ <div class="panel-heading">
24
+ <div class="panel-heading-btn">
25
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
26
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
27
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
28
+ </div>
29
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
30
+ </div>
31
+ <div class="panel-body">
32
+ <!-- Form to Edit Member Profiles -->
33
+ <%= render 'form', member_profile: @member_profile %>
34
+ <!-- Form to Edit Member Profiles -->
35
+ </div>
36
+ </div>
37
+ <!-- Page Content -->
@@ -0,0 +1,72 @@
1
+ <!-- Title System -->
2
+ <% phc_title "Members Manager" %>
3
+ <% phc_title_tagline "Members List" %>
4
+ <% phc_breadcrumb_one link_to "Dashboard", phcdevworks_members.dashboard_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- Title System -->
7
+
8
+ <!-- Page Bradcrumbs -->
9
+ <ol class="breadcrumb pull-right">
10
+ <li class="breadcrumb-item"><%= yield(:phc_breadcrumb_one) %></li>
11
+ <li class="breadcrumb-item active"><%= yield(:phc_breadcrumb_two) %></li>
12
+ </ol>
13
+ <!-- Page Bradcrumbs -->
14
+
15
+ <!-- Page Header -->
16
+ <h1 class="page-header"><%= yield(:phc_title) %></h1>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page & Panel Content -->
20
+ <div class="panel panel-inverse">
21
+ <!-- Panel Heading -->
22
+ <div class="panel-heading">
23
+ <div class="panel-heading-btn">
24
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
25
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
26
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
27
+ </div>
28
+ <h4 class="panel-title"><%= yield(:phc_title_tagline) %></h4>
29
+ </div>
30
+ <!-- Panel Heading -->
31
+ <!-- Panel Body -->
32
+ <div class="panel-body">
33
+ <!-- Table - Member - Profiles - Index -->
34
+ <div class="table-responsive">
35
+ <table class="table table-striped table-bordered">
36
+ <thead>
37
+ <tr>
38
+ <th>First Name</th>
39
+ <th>Last Name</th>
40
+ <th>Email</th>
41
+ <th>Phone</th>
42
+ <th></th>
43
+ </tr>
44
+ </thead>
45
+ <tbody>
46
+ <% @member_profiles.each do |member_profile| %>
47
+ <tr>
48
+ <td><%= link_to member_profile.member_profile_first_name, member_profile %></td>
49
+ <td><%= link_to member_profile.member_profile_last_name, member_profile %></td>
50
+ <td><%= link_to member_profile.member_profile_email, member_profile %></td>
51
+ <td><%= link_to member_profile.member_profile_phone, member_profile %></td>
52
+ <td>
53
+ <div class="btn-group d-flex" role="group">
54
+ <%= link_to 'Details', member_profile, class: "btn btn-primary btn-xs" %>
55
+ <%= link_to 'Update', edit_member_profile_path(member_profile), class: "btn btn-purple btn-xs" %>
56
+ <%= link_to 'Remove', member_profile, method: :delete, data: { confirm: 'Are you sure? This will also remove the Members addresses and listings. This action cannot be reversed.' }, class: "btn btn-danger btn-xs" %>
57
+ </div>
58
+ </td>
59
+ </tr>
60
+ <% end %>
61
+ </tbody>
62
+ </table>
63
+ <%= link_to phcdevworks_members.new_member_profile_path, class: "btn btn-primary btn-sm" do %>
64
+ <i class="fas fa-plus-circle"></i>
65
+ Add a New Member
66
+ <% end %>
67
+ </div>
68
+ <!-- Table - Member - Profiles - Index -->
69
+ </div>
70
+ <!-- Panel Body -->
71
+ </div>
72
+ <!-- Page & Panel Content -->
@@ -0,0 +1,37 @@
1
+ <!-- Title System -->
2
+ <% phc_title "Members Manager" %>
3
+ <% phc_title_tagline "Create a New Member" %>
4
+ <% phc_breadcrumb_one link_to "Dashboard", phcdevworks_members.dashboard_path %>
5
+ <% phc_breadcrumb_two link_to "Member Profiles", phcdevworks_members.member_profiles_path %>
6
+ <% phc_breadcrumb_three yield(:phc_title_tagline) %>
7
+ <!-- Title System -->
8
+
9
+ <!-- Page Bradcrumbs -->
10
+ <ol class="breadcrumb pull-right">
11
+ <li class="breadcrumb-item"><%= yield(:phc_breadcrumb_one) %></li>
12
+ <li class="breadcrumb-item"><%= yield(:phc_breadcrumb_two) %></li>
13
+ <li class="breadcrumb-item active"><%= yield(:phc_breadcrumb_three) %></li>
14
+ </ol>
15
+ <!-- Page Bradcrumbs -->
16
+
17
+ <!-- Page Header -->
18
+ <h1 class="page-header"><%= yield(:phc_title) %></h1>
19
+ <!-- Page Header -->
20
+
21
+ <!-- Page Content -->
22
+ <div class="panel panel-inverse">
23
+ <div class="panel-heading">
24
+ <div class="panel-heading-btn">
25
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
26
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
27
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
28
+ </div>
29
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
30
+ </div>
31
+ <div class="panel-body">
32
+ <!-- Form for New Member Profile -->
33
+ <%= render 'form', member_profile: @member_profile %>
34
+ <!-- Form for New Member Profile -->
35
+ </div>
36
+ </div>
37
+ <!-- Page Content -->
@@ -0,0 +1,102 @@
1
+ <!-- Title System -->
2
+ <% phc_title "Members Manager" %>
3
+ <% phc_title_tagline "Detailed Information" %>
4
+ <% phc_breadcrumb_one link_to "Dashboard", phcdevworks_members.dashboard_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- Title System -->
7
+
8
+ <!-- Member Profiles - Header -->
9
+ <div class="profile">
10
+ <%= render 'phcdevworks_members/member/profiles/components/profile_header' %>
11
+ </div>
12
+ <!-- Member Profiles - Header -->
13
+
14
+ <!-- Member Profiles - Remove Full Page Width -->
15
+ <div class="profile-content">
16
+ <div class="tab-content p-0">
17
+
18
+ <%= render 'phcdevworks_notifications/bootstrap/notifications' %>
19
+
20
+ <!-- Member Profiles - Content - Information Tab -->
21
+ <div class="tab-pane active" id="profile-information">
22
+ <!-- Member Profiles - Content - Information -->
23
+ <div class="panel panel-inverse">
24
+ <div class="panel-heading">
25
+ <div class="panel-heading-btn">
26
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
27
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
28
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
29
+ </div>
30
+ <h4 class="panel-title"><%= @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %> Information</h4>
31
+ </div>
32
+ <div class="panel-body">
33
+ <%= render 'phcdevworks_members/member/profiles/components/profile_information_table' %>
34
+ </div>
35
+ </div>
36
+ <!-- Member Profiles - Content - Information -->
37
+ </div>
38
+ <!-- Member Profiles - Content - Information Tab -->
39
+
40
+ <!-- Member Profiles - Content - Addresses Tab -->
41
+ <div class="tab-pane" id="profile-addresses">
42
+ <!-- Member Profiles - Content - Addresses -->
43
+ <div class="panel panel-inverse">
44
+ <div class="panel-heading">
45
+ <div class="panel-heading-btn">
46
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
47
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
48
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
49
+ </div>
50
+ <h4 class="panel-title"><%= @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %> Addresses</h4>
51
+ </div>
52
+ <div class="panel-body">
53
+ <%= render 'phcdevworks_members/member/profiles/components/profile_addresses_table' %>
54
+ </div>
55
+ </div>
56
+ <!-- Member Profiles - Content - Addresses -->
57
+ </div>
58
+ <!-- Member Profiles - Content - Addresses Tab -->
59
+
60
+ <!-- Member Profiles - Content - Listings Tab -->
61
+ <div class="tab-pane fade in" id="profile-listings">
62
+ <!-- Member Profiles - Content - Listings -->
63
+ <div class="panel panel-inverse">
64
+ <div class="panel-heading">
65
+ <div class="panel-heading-btn">
66
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
67
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
68
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
69
+ </div>
70
+ <h4 class="panel-title"><%= @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %> Listings</h4>
71
+ </div>
72
+ <div class="panel-body">
73
+ <%= render 'phcdevworks_members/member/profiles/components/profile_listings_table' %>
74
+ </div>
75
+ </div>
76
+ <!-- Member Profiles - Content - Listings -->
77
+ </div>
78
+ <!-- Member Profiles - Content - Listings Tab -->
79
+
80
+ <!-- Member Profiles - Content - Audit Log Tab -->
81
+ <div class="tab-pane fade in" id="profile-logs">
82
+ <!-- Member Profiles - Content - Audit Log -->
83
+ <div class="panel panel-inverse">
84
+ <div class="panel-heading">
85
+ <div class="panel-heading-btn">
86
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a>
87
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-redo"></i></a>
88
+ <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a>
89
+ </div>
90
+ <h4 class="panel-title"><%= @member_profile.member_profile_first_name + ' ' + @member_profile.member_profile_last_name %> Change Log</h4>
91
+ </div>
92
+ <div class="panel-body">
93
+ <%= render 'phcdevworks_members/member/profiles/components/profile_audits_table' %>
94
+ </div>
95
+ </div>
96
+ <!-- Member Profiles - Content - Audit Log -->
97
+ </div>
98
+ <!-- Member Profiles - Content - Audit Log Tab -->
99
+
100
+ </div>
101
+ </div>
102
+ <!-- Member Profiles - Remove Full Page Width -->
@@ -0,0 +1,107 @@
1
+ # FriendlyId Global Configuration
2
+ #
3
+ # Use this to set up shared configuration options for your entire application.
4
+ # Any of the configuration options shown here can also be applied to single
5
+ # models by passing arguments to the `friendly_id` class method or defining
6
+ # methods in your model.
7
+ #
8
+ # To learn more, check out the guide:
9
+ #
10
+ # http://norman.github.io/friendly_id/file.Guide.html
11
+
12
+ FriendlyId.defaults do |config|
13
+ # ## Reserved Words
14
+ #
15
+ # Some words could conflict with Rails's routes when used as slugs, or are
16
+ # undesirable to allow as slugs. Edit this list as needed for your app.
17
+ config.use :reserved
18
+
19
+ config.reserved_words = %w(new edit index session login logout users admin
20
+ stylesheets assets javascripts images)
21
+
22
+ # This adds an option to treat reserved words as conflicts rather than exceptions.
23
+ # When there is no good candidate, a UUID will be appended, matching the existing
24
+ # conflict behavior.
25
+
26
+ # config.treat_reserved_as_conflict = true
27
+
28
+ # ## Friendly Finders
29
+ #
30
+ # Uncomment this to use friendly finders in all models. By default, if
31
+ # you wish to find a record by its friendly id, you must do:
32
+ #
33
+ # MyModel.friendly.find('foo')
34
+ #
35
+ # If you uncomment this, you can do:
36
+ #
37
+ # MyModel.find('foo')
38
+ #
39
+ # This is significantly more convenient but may not be appropriate for
40
+ # all applications, so you must explicity opt-in to this behavior. You can
41
+ # always also configure it on a per-model basis if you prefer.
42
+ #
43
+ # Something else to consider is that using the :finders addon boosts
44
+ # performance because it will avoid Rails-internal code that makes runtime
45
+ # calls to `Module.extend`.
46
+ #
47
+ config.use :finders
48
+ #
49
+ # ## Slugs
50
+ #
51
+ # Most applications will use the :slugged module everywhere. If you wish
52
+ # to do so, uncomment the following line.
53
+ #
54
+ config.use :slugged
55
+ #
56
+ # By default, FriendlyId's :slugged addon expects the slug column to be named
57
+ # 'slug', but you can change it if you wish.
58
+ #
59
+ config.slug_column = 'slug'
60
+ #
61
+ # By default, slug has no size limit, but you can change it if you wish.
62
+ #
63
+ # config.slug_limit = 255
64
+ #
65
+ # When FriendlyId can not generate a unique ID from your base method, it appends
66
+ # a UUID, separated by a single dash. You can configure the character used as the
67
+ # separator. If you're upgrading from FriendlyId 4, you may wish to replace this
68
+ # with two dashes.
69
+ #
70
+ # config.sequence_separator = '-'
71
+ #
72
+ # Note that you must use the :slugged addon **prior** to the line which
73
+ # configures the sequence separator, or else FriendlyId will raise an undefined
74
+ # method error.
75
+ #
76
+ # ## Tips and Tricks
77
+ #
78
+ # ### Controlling when slugs are generated
79
+ #
80
+ # As of FriendlyId 5.0, new slugs are generated only when the slug field is
81
+ # nil, but if you're using a column as your base method can change this
82
+ # behavior by overriding the `should_generate_new_friendly_id?` method that
83
+ # FriendlyId adds to your model. The change below makes FriendlyId 5.0 behave
84
+ # more like 4.0.
85
+ # Note: Use(include) Slugged module in the config if using the anonymous module.
86
+ # If you have `friendly_id :name, use: slugged` in the model, Slugged module
87
+ # is included after the anonymous module defined in the initializer, so it
88
+ # overrides the `should_generate_new_friendly_id?` method from the anonymous module.
89
+ #
90
+ # config.use :slugged
91
+ # config.use Module.new {
92
+ # def should_generate_new_friendly_id?
93
+ # slug.blank? || <your_column_name_here>_changed?
94
+ # end
95
+ # }
96
+ #
97
+ # FriendlyId uses Rails's `parameterize` method to generate slugs, but for
98
+ # languages that don't use the Roman alphabet, that's not usually sufficient.
99
+ # Here we use the Babosa library to transliterate Russian Cyrillic slugs to
100
+ # ASCII. If you use this, don't forget to add "babosa" to your Gemfile.
101
+ #
102
+ # config.use Module.new {
103
+ # def normalize_friendly_id(text)
104
+ # text.to_slug.normalize! :transliterations => [:russian, :latin]
105
+ # end
106
+ # }
107
+ end