phcdevworks_portfolio 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/phcdevworks_portfolio/project/categories.coffee +3 -0
  3. data/app/assets/javascripts/phcdevworks_portfolio/project/types.coffee +3 -0
  4. data/app/assets/stylesheets/phcdevworks_portfolio/project/categories.scss +3 -0
  5. data/app/assets/stylesheets/phcdevworks_portfolio/project/types.scss +3 -0
  6. data/app/assets/stylesheets/scaffolds.scss +65 -0
  7. data/app/controllers/phcdevworks_portfolio/project/categories_controller.rb +77 -0
  8. data/app/controllers/phcdevworks_portfolio/project/posts_controller.rb +3 -7
  9. data/app/controllers/phcdevworks_portfolio/project/types_controller.rb +77 -0
  10. data/app/helpers/phcdevworks_portfolio/project/categories_helper.rb +4 -0
  11. data/app/helpers/phcdevworks_portfolio/project/types_helper.rb +4 -0
  12. data/app/models/phcdevworks_portfolio/project/category.rb +9 -0
  13. data/app/models/phcdevworks_portfolio/project/post.rb +9 -4
  14. data/app/models/phcdevworks_portfolio/project/type.rb +9 -0
  15. data/app/views/layouts/phcdevworks_portfolio/components/backend/sidebars/_side_menu.html.erb +22 -0
  16. data/app/views/phcdevworks_portfolio/project/categories/_form.html.erb +22 -0
  17. data/app/views/phcdevworks_portfolio/project/categories/edit.html.erb +47 -0
  18. data/app/views/phcdevworks_portfolio/project/categories/index.html.erb +79 -0
  19. data/app/views/phcdevworks_portfolio/project/categories/new.html.erb +47 -0
  20. data/app/views/phcdevworks_portfolio/project/posts/_form.html.erb +17 -2
  21. data/app/views/phcdevworks_portfolio/project/posts/index.html.erb +3 -3
  22. data/app/views/phcdevworks_portfolio/project/types/_form.html.erb +22 -0
  23. data/app/views/phcdevworks_portfolio/project/types/edit.html.erb +47 -0
  24. data/app/views/phcdevworks_portfolio/project/types/index.html.erb +79 -0
  25. data/app/views/phcdevworks_portfolio/project/types/new.html.erb +47 -0
  26. data/config/routes.rb +2 -0
  27. data/db/migrate/20191021225231_create_phcdevworks_portfolio_project_categories.rb +15 -0
  28. data/db/migrate/20191021225316_create_phcdevworks_portfolio_project_types.rb +15 -0
  29. data/db/migrate/20191024232111_create_phcdevworks_portfolio_categories_posts.rb +8 -0
  30. data/db/migrate/20191024232406_create_phcdevworks_portfolio_posts_types.rb +8 -0
  31. data/lib/phcdevworks_portfolio/version.rb +1 -1
  32. metadata +26 -4
  33. data/app/views/phcdevworks_portfolio/project/posts/show.html.erb +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fbcfdf16e24a5d5261db1e23907f304247d9457fdc23d3c3d1fdb62188000d3
4
- data.tar.gz: 453913543f633d7d7b4efae94b3225aa06a868e2e0561e5f12d816b40354d25d
3
+ metadata.gz: d948c332e186d366e46c560b08032d3f0d41867d3340dcffa405a5fd5eb6025d
4
+ data.tar.gz: f95e06084febb9c969b8b8d8f784c989c0179fc158cfa6edb17abb997d25d71a
5
5
  SHA512:
6
- metadata.gz: 1193865c9c545941a90d1b43093d2885ad2a9be350dabb49b5d60ee78420d15ad60ab43a01a7a34579cd60c7ec1dfa12a25c8e2bbefbac621972a41486c3b697
7
- data.tar.gz: 0a47502090ac87e3d27dada756e902290314758b7970bef649024a5b9ddb38add96a8573dbf271328471e83335ee65b76182838daac8c458680f3aa55ec66fe0
6
+ metadata.gz: 2a7338af5d23da120e2e4b3a13357a31f6a977ac99919610471af3b3362ce871f36b92f90ee950fda15801ad31edac5db66917d3930c212a71a5c91c4cd160c6
7
+ data.tar.gz: 887a00c8a82b8c3ea71dde16971990aea917d8d4dcca6c42462f63779727c1808cc9226ab67589540c43b6f83878c7852db1aba8f00a0ec3216c4d4b510aedb2
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the project::categories controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the project::types controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,65 @@
1
+ body {
2
+ background-color: #fff;
3
+ color: #333;
4
+ margin: 33px; }
5
+
6
+ body, p, ol, ul, td {
7
+ font-family: verdana, arial, helvetica, sans-serif;
8
+ font-size: 13px;
9
+ line-height: 18px; }
10
+
11
+ pre {
12
+ background-color: #eee;
13
+ padding: 10px;
14
+ font-size: 11px; }
15
+
16
+ a {
17
+ color: #000; }
18
+
19
+ a:visited {
20
+ color: #666; }
21
+
22
+ a:hover {
23
+ color: #fff;
24
+ background-color: #000; }
25
+
26
+ th {
27
+ padding-bottom: 5px; }
28
+
29
+ td {
30
+ padding: 0 5px 7px; }
31
+
32
+ div.field,
33
+ div.actions {
34
+ margin-bottom: 10px; }
35
+
36
+ #notice {
37
+ color: green; }
38
+
39
+ .field_with_errors {
40
+ padding: 2px;
41
+ background-color: red;
42
+ display: table; }
43
+
44
+ #error_explanation {
45
+ width: 450px;
46
+ border: 2px solid red;
47
+ padding: 7px 7px 0;
48
+ margin-bottom: 20px;
49
+ background-color: #f0f0f0; }
50
+
51
+ #error_explanation h2 {
52
+ text-align: left;
53
+ font-weight: bold;
54
+ padding: 5px 5px 5px 15px;
55
+ font-size: 12px;
56
+ margin: -7px -7px 0;
57
+ background-color: #c00;
58
+ color: #fff; }
59
+
60
+ #error_explanation ul li {
61
+ font-size: 12px;
62
+ list-style: square; }
63
+
64
+ label {
65
+ display: block; }
@@ -0,0 +1,77 @@
1
+ require_dependency "phcdevworks_portfolio/application_controller"
2
+
3
+ module PhcdevworksPortfolio
4
+ class Project::CategoriesController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+ before_action :set_paper_trail_whodunnit
10
+ before_action :set_project_category, only: [:edit, :update, :destroy]
11
+
12
+ # GET /project/categories
13
+ def index
14
+ @project_categories = Project::Category.all
15
+ end
16
+
17
+ # GET /project/categories/new
18
+ def new
19
+ @project_category = Project::Category.new
20
+ end
21
+
22
+ # GET /project/categories/1/edit
23
+ def edit
24
+ end
25
+
26
+ # POST /project/categories
27
+ def create
28
+ @project_category = Project::Category.new(project_category_params)
29
+ @project_category.user_id = current_user.id
30
+ @project_category.org_id = current_user.org_id
31
+ respond_to do |format|
32
+ if @project_category.save
33
+ format.html { redirect_to project_categories_path, :flash => { :success => 'Project Category has been Added.' }}
34
+ format.json { render :show, status: :created, location: @project_category }
35
+ else
36
+ format.html { render :new }
37
+ format.json { render json: @project_category.errors, status: :unprocessable_entity }
38
+ end
39
+ end
40
+ end
41
+
42
+ # PATCH/PUT /project/categories/1
43
+ def update
44
+ respond_to do |format|
45
+ if @project_category.update(project_post_params)
46
+ format.html { redirect_to project_categories_path, :flash => { :notice => 'Project Category has been Updated.' }}
47
+ format.json { render :show, status: :ok, location: @project_category }
48
+ else
49
+ format.html { render :edit }
50
+ format.json { render json: @project_category.errors, status: :unprocessable_entity }
51
+ end
52
+ end
53
+ end
54
+
55
+ # DELETE /project/categories/1
56
+ def destroy
57
+ @project_category.destroy
58
+ respond_to do |format|
59
+ format.html { redirect_to project_categories_path, :flash => { :error => 'Project Category has been Removed.' }}
60
+ format.json { head :no_content }
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ # Common Callbacks
67
+ def set_project_category
68
+ @project_category = Project::Category.find(params[:id])
69
+ end
70
+
71
+ # Whitelist
72
+ def project_category_params
73
+ params.require(:project_category).permit(:project_category_name, :slug, :user_id, :org_id)
74
+ end
75
+
76
+ end
77
+ end
@@ -7,17 +7,13 @@ module PhcdevworksPortfolio
7
7
  #include PhcdevworksCore::PhcpluginsHelper
8
8
  before_action :authenticate_user!
9
9
  before_action :set_paper_trail_whodunnit
10
- before_action :set_project_post, only: [:show, :edit, :update, :destroy]
10
+ before_action :set_project_post, only: [:edit, :update, :destroy]
11
11
 
12
12
  # GET /project/posts
13
13
  def index
14
14
  @project_posts = Project::Post.all
15
15
  end
16
16
 
17
- # GET /project/posts/1
18
- def show
19
- end
20
-
21
17
  # GET /project/posts/new
22
18
  def new
23
19
  @project_post = Project::Post.new
@@ -29,7 +25,7 @@ module PhcdevworksPortfolio
29
25
 
30
26
  # POST /project/posts
31
27
  def create
32
- @project_post = Project::Post.new(project_post_params)
28
+ @project_post = Project::Post.new(project_post_params)
33
29
  @project_post.user_id = current_user.id
34
30
  @project_post.org_id = current_user.org_id
35
31
  respond_to do |format|
@@ -74,7 +70,7 @@ module PhcdevworksPortfolio
74
70
 
75
71
  # Whitelist
76
72
  def project_post_params
77
- params.require(:project_post).permit(:project_post_title, :project_post_description, :project_post_url, :project_post_type, :project_post_status, :project_post_image, :project_post_images)
73
+ params.require(:project_post).permit(:project_post_title, :project_post_description, :project_post_url, :project_post_type, :project_post_status, :project_post_image, :project_post_images, :slug, :user_id, :org_id, category_ids: [], type_ids: [])
78
74
  end
79
75
 
80
76
  end
@@ -0,0 +1,77 @@
1
+ require_dependency "phcdevworks_portfolio/application_controller"
2
+
3
+ module PhcdevworksPortfolio
4
+ class Project::TypesController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+ before_action :set_paper_trail_whodunnit
10
+ before_action :set_project_type, only: [:edit, :update, :destroy]
11
+
12
+ # GET /project/types
13
+ def index
14
+ @project_types = Project::Type.all
15
+ end
16
+
17
+ # GET /project/types/new
18
+ def new
19
+ @project_type = Project::Type.new
20
+ end
21
+
22
+ # GET /project/types/1/edit
23
+ def edit
24
+ end
25
+
26
+ # POST /project/types
27
+ def create
28
+ @project_type = Project::Type.new(project_type_params)
29
+ @project_type.user_id = current_user.id
30
+ @project_type.org_id = current_user.org_id
31
+ respond_to do |format|
32
+ if @project_type.save
33
+ format.html { redirect_to project_types_path, :flash => { :success => 'Project Type has been Added.' }}
34
+ format.json { render :show, status: :created, location: @project_type }
35
+ else
36
+ format.html { render :new }
37
+ format.json { render json: @project_type.errors, status: :unprocessable_entity }
38
+ end
39
+ end
40
+ end
41
+
42
+ # PATCH/PUT /project/types/1
43
+ def update
44
+ respond_to do |format|
45
+ if @project_type.update(project_post_params)
46
+ format.html { redirect_to project_types_path, :flash => { :notice => 'Project Type has been Updated.' }}
47
+ format.json { render :show, status: :ok, location: @project_type }
48
+ else
49
+ format.html { render :edit }
50
+ format.json { render json: @project_type.errors, status: :unprocessable_entity }
51
+ end
52
+ end
53
+ end
54
+
55
+ # DELETE /project/types/1
56
+ def destroy
57
+ @project_type.destroy
58
+ respond_to do |format|
59
+ format.html { redirect_to project_types_path, :flash => { :error => 'Project Type has been Removed.' }}
60
+ format.json { head :no_content }
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ # Common Callbacks
67
+ def set_project_type
68
+ @project_type = Project::Type.find(params[:id])
69
+ end
70
+
71
+ # Whitelist
72
+ def project_type_params
73
+ params.require(:project_type).permit(:project_type_name, :slug, :user_id, :org_id)
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,4 @@
1
+ module PhcdevworksPortfolio
2
+ module Project::CategoriesHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module PhcdevworksPortfolio
2
+ module Project::TypesHelper
3
+ end
4
+ end
@@ -0,0 +1,9 @@
1
+ module PhcdevworksPortfolio
2
+ class Project::Category < ApplicationRecord
3
+
4
+ # Relationships
5
+ has_and_belongs_to_many :posts, class_name: "Project::Post", :join_table => "phcdevworks_portfolio_categories_posts", :dependent => :destroy
6
+ belongs_to :user, class_name: "PhcdevworksAccounts::User"
7
+
8
+ end
9
+ end
@@ -1,8 +1,13 @@
1
1
  module PhcdevworksPortfolio
2
- class Project::Post < ApplicationRecord
2
+ class Project::Post < ApplicationRecord
3
3
 
4
- # Image Upload
5
- has_one_attached :project_post_image
4
+ # Image Upload
5
+ has_one_attached :project_post_image
6
6
 
7
- end
7
+ # Relationships
8
+ has_and_belongs_to_many :categories, class_name: "Project::Category", :join_table => "phcdevworks_portfolio_categories_posts"
9
+ has_and_belongs_to_many :types, class_name: "Project::Type", :join_table => "phcdevworks_portfolio_posts_types"
10
+ belongs_to :user, class_name: "PhcdevworksAccounts::User"
11
+
12
+ end
8
13
  end
@@ -0,0 +1,9 @@
1
+ module PhcdevworksPortfolio
2
+ class Project::Type < ApplicationRecord
3
+
4
+ # Relationships
5
+ has_and_belongs_to_many :posts, class_name: "Project::Post", :join_table => "phcdevworks_portfolio_posts_types", :dependent => :destroy
6
+ belongs_to :user, class_name: "PhcdevworksAccounts::User"
7
+
8
+ end
9
+ end
@@ -81,6 +81,28 @@
81
81
  <li class="<%= phc_menu_active_controller("phcdevworks_portfolio/project/posts#new") %>"><%= link_to("New Project", phcdevworks_portfolio.new_project_post_path) %></li>
82
82
  </ul>
83
83
  </li>
84
+ <li class="has-sub">
85
+ <a href="javascript:;">
86
+ <b class="caret"></b>
87
+ <i class="fad fa-sitemap"></i>
88
+ <span>Project Categories</span>
89
+ </a>
90
+ <ul class="sub-menu">
91
+ <li class="<%= phc_menu_active_controller("phcdevworks_portfolio/project/posts") %>"><%= link_to("Project Category", phcdevworks_portfolio.project_categories_path) %></li>
92
+ <li class="<%= phc_menu_active_controller("phcdevworks_portfolio/project/posts#new") %>"><%= link_to("New Category", phcdevworks_portfolio.new_project_category_path) %></li>
93
+ </ul>
94
+ </li>
95
+ <li class="has-sub">
96
+ <a href="javascript:;">
97
+ <b class="caret"></b>
98
+ <i class="fad fa-folders"></i>
99
+ <span>Project Types</span>
100
+ </a>
101
+ <ul class="sub-menu">
102
+ <li class="<%= phc_menu_active_controller("phcdevworks_portfolio/project/posts") %>"><%= link_to("Project Type", phcdevworks_portfolio.project_types_path) %></li>
103
+ <li class="<%= phc_menu_active_controller("phcdevworks_portfolio/project/posts#new") %>"><%= link_to("New Types", phcdevworks_portfolio.new_project_type_path) %></li>
104
+ </ul>
105
+ </li>
84
106
  <!-- Sidebar - Sidebar Navigation - PHCDevworks Press -->
85
107
  <% end %>
86
108
 
@@ -0,0 +1,22 @@
1
+ <!-- Form - Project - Categories -->
2
+ <%= form_with(model: project_category, local: true) do |form| %>
3
+
4
+ <!-- PHCNotifi Render Validation -->
5
+ <%= render "phcdevworks_notifications/bootstrap/validations", :object => @project_category %>
6
+ <!-- PHCNotifi Render Validation -->
7
+
8
+ <!-- Form Input Fields -->
9
+ <div class="form-group field_with_errors">
10
+ <%= form.label :project_category_name, "Project Category" %>
11
+ <%= form.text_field :project_category_name, placeholder: "Project Category", class: "form-control" %>
12
+ </div>
13
+ <!-- Form Input Fields -->
14
+
15
+ <!-- Form Submition Button -->
16
+ <div class="actions">
17
+ <%= form.submit class: "btn btn-primary" %>
18
+ </div>
19
+ <!-- For Submition Button -->
20
+
21
+ <% end %>
22
+ <!-- Form - Project - Posts -->
@@ -0,0 +1,47 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Update Project Category" %>
4
+ <% phc_breadcrumb_one link_to "Category List", phcdevworks_portfolio.project_types_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- Edit Form -->
36
+ <%= render 'form', project_category: @project_category %>
37
+ <!-- Edit Form -->
38
+
39
+ </div>
40
+ <!-- Panel - Body -->
41
+
42
+ </div>
43
+ <!-- Panel -->
44
+
45
+ </div>
46
+ </div>
47
+ <!-- Page Content -->
@@ -0,0 +1,79 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Project Category Index" %>
4
+ <% phc_breadcrumb_one link_to "Category List", phcdevworks_portfolio.project_categories_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- Index - Table -->
36
+ <div class="table-responsive">
37
+ <table class="table table-striped table-bordered">
38
+
39
+ <thead>
40
+ <tr>
41
+ <th>Category Name</th>
42
+ <th></th>
43
+ </tr>
44
+ </thead>
45
+
46
+ <tbody>
47
+ <% @project_categories.each do |project_category| %>
48
+ <tr>
49
+ <td><%= project_category.project_category_name %></td>
50
+ <td>
51
+ <div class="btn-group d-flex" role="group">
52
+ <%= link_to "Update Category", edit_project_category_path(project_category), class: "btn btn-purple btn-xs" %>
53
+ <%= link_to "Remove Category", project_category, 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" %>
54
+ </div>
55
+ </td>
56
+ </tr>
57
+ <% end %>
58
+ </tbody>
59
+
60
+ </table>
61
+ </div>
62
+ <!-- Index - Table -->
63
+
64
+ <!-- New Button -->
65
+ <%= link_to phcdevworks_portfolio.new_project_category_path, class: "btn btn-primary btn-sm" do %>
66
+ <i class="fad fa-plus-circle"></i>
67
+ Add a New Category
68
+ <% end %>
69
+ <!-- New Button -->
70
+
71
+ </div>
72
+ <!-- Panel - Body -->
73
+
74
+ </div>
75
+ <!-- Panel -->
76
+
77
+ </div>
78
+ </div>
79
+ <!-- Page Content -->
@@ -0,0 +1,47 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Update Project Category" %>
4
+ <% phc_breadcrumb_one link_to "Category List", phcdevworks_portfolio.project_categories_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- New Form -->
36
+ <%= render 'form', project_category: @project_category %>
37
+ <!-- New Form -->
38
+
39
+ </div>
40
+ <!-- Panel - Body -->
41
+
42
+ </div>
43
+ <!-- Panel -->
44
+
45
+ </div>
46
+ </div>
47
+ <!-- Page Content -->
@@ -27,8 +27,8 @@
27
27
  </div>
28
28
 
29
29
  <div class="form-group field_with_errors">
30
- <%= form.label :project_post_status, "Project Status" %>
31
- <%= form.text_field :project_post_status, placeholder: "Project Status", class: "form-control" %>
30
+ <%= form.label :project_post_status, "Tutorial Status" %>
31
+ <%= form.select( :project_post_status, [["Draft","draft"],["Published","published"],["Review","review"]], {}, {class: "form-control"}) %>
32
32
  </div>
33
33
 
34
34
  <div class="form-group field_with_errors">
@@ -38,6 +38,21 @@
38
38
  <% if form.object.project_post_image.attached? %>
39
39
  <%= image_tag main_app.url_for(form.object.project_post_image), class: "img-responsive img-thumbnail" %>
40
40
  <% end %>
41
+
42
+ <div class="form-group field_with_errors">
43
+ <%= form.collection_check_boxes :category_ids, PhcdevworksPortfolio::Project::Category.all, :id, :project_category_name do |project_category| %>
44
+ <%= project_category.check_box %>
45
+ <%= project_category.label %><br>
46
+ <% end %>
47
+ </div>
48
+
49
+
50
+ <div class="form-group field_with_errors">
51
+ <%= form.collection_check_boxes :type_ids, PhcdevworksPortfolio::Project::Type.all, :id, :project_type_name do |project_type| %>
52
+ <%= project_type.check_box %>
53
+ <%= project_type.label %><br>
54
+ <% end %>
55
+ </div>
41
56
  <!-- Form Input Fields -->
42
57
 
43
58
  <!-- Form Submition Button -->
@@ -57,9 +57,9 @@
57
57
  <td><%= project_post.project_post_status %></td>
58
58
  <td>
59
59
  <div class="btn-group d-flex" role="group">
60
- <%= link_to "Tutorial Details", project_post, class: "btn btn-primary btn-xs" %>
61
- <%= link_to "Update Tutorial", edit_project_post_path(project_post), class: "btn btn-purple btn-xs" %>
62
- <%= link_to "Remove Tutorial", project_post, 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" %>
60
+ <%= link_to "Project Details", project_post, class: "btn btn-primary btn-xs" %>
61
+ <%= link_to "Update Project", edit_project_post_path(project_post), class: "btn btn-purple btn-xs" %>
62
+ <%= link_to "Remove Project", project_post, 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" %>
63
63
  </div>
64
64
  </td>
65
65
  </tr>
@@ -0,0 +1,22 @@
1
+ <!-- Form - Project - Types -->
2
+ <%= form_with(model: project_type, local: true) do |form| %>
3
+
4
+ <!-- PHCNotifi Render Validation -->
5
+ <%= render "phcdevworks_notifications/bootstrap/validations", :object => @project_type %>
6
+ <!-- PHCNotifi Render Validation -->
7
+
8
+ <!-- Form Input Fields -->
9
+ <div class="form-group field_with_errors">
10
+ <%= form.label :project_type_name, "Project Type Name" %>
11
+ <%= form.text_field :project_type_name, placeholder: "Project Type", class: "form-control" %>
12
+ </div>
13
+ <!-- Form Input Fields -->
14
+
15
+ <!-- Form Submition Button -->
16
+ <div class="actions">
17
+ <%= form.submit class: "btn btn-primary" %>
18
+ </div>
19
+ <!-- For Submition Button -->
20
+
21
+ <% end %>
22
+ <!-- Form - Project - Posts -->
@@ -0,0 +1,47 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Update Project Type" %>
4
+ <% phc_breadcrumb_one link_to "Type List", phcdevworks_portfolio.project_types_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- Edit Form -->
36
+ <%= render 'form', project_type: @project_type %>
37
+ <!-- Edit Form -->
38
+
39
+ </div>
40
+ <!-- Panel - Body -->
41
+
42
+ </div>
43
+ <!-- Panel -->
44
+
45
+ </div>
46
+ </div>
47
+ <!-- Page Content -->
@@ -0,0 +1,79 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Project Type Index" %>
4
+ <% phc_breadcrumb_one link_to "Type List", phcdevworks_portfolio.project_types_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- Index - Table -->
36
+ <div class="table-responsive">
37
+ <table class="table table-striped table-bordered">
38
+
39
+ <thead>
40
+ <tr>
41
+ <th>Project Type</th>
42
+ <th></th>
43
+ </tr>
44
+ </thead>
45
+
46
+ <tbody>
47
+ <% @project_types.each do |project_type| %>
48
+ <tr>
49
+ <td><%= project_type.project_type_name %></td>
50
+ <td>
51
+ <div class="btn-group d-flex" role="group">
52
+ <%= link_to "Update Type Name", edit_project_type_path(project_type), class: "btn btn-purple btn-xs" %>
53
+ <%= link_to "Remove Project Type", project_type, 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" %>
54
+ </div>
55
+ </td>
56
+ </tr>
57
+ <% end %>
58
+ </tbody>
59
+
60
+ </table>
61
+ </div>
62
+ <!-- Index - Table -->
63
+
64
+ <!-- New Button -->
65
+ <%= link_to phcdevworks_portfolio.new_project_type_path, class: "btn btn-primary btn-sm" do %>
66
+ <i class="fad fa-plus-circle"></i>
67
+ Add a New Project Type
68
+ <% end %>
69
+ <!-- New Button -->
70
+
71
+ </div>
72
+ <!-- Panel - Body -->
73
+
74
+ </div>
75
+ <!-- Panel -->
76
+
77
+ </div>
78
+ </div>
79
+ <!-- Page Content -->
@@ -0,0 +1,47 @@
1
+ <!-- PHCTitleSEO Title Variables -->
2
+ <% phc_title "Portfolio Manager" %>
3
+ <% phc_title_tagline "Update Project Type" %>
4
+ <% phc_breadcrumb_one link_to "Type List", phcdevworks_portfolio.project_types_path %>
5
+ <% phc_breadcrumb_two yield(:phc_title_tagline) %>
6
+ <!-- PHCTitleSEO Title Variables -->
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
+ <h2 class="page-header"><%= yield(:phc_title) %></h2>
17
+ <!-- Page Header -->
18
+
19
+ <!-- Page Content -->
20
+ <div class="row">
21
+ <div class="col-lg-12">
22
+
23
+ <!-- Panel -->
24
+ <div class="panel panel-inverse">
25
+
26
+ <!-- Panel - Heading -->
27
+ <div class="panel-heading">
28
+ <h4 class="panel-title"><%= yield(:phc_title) %></h4>
29
+ </div>
30
+ <!-- Panel - Heading -->
31
+
32
+ <!-- Panel - Body -->
33
+ <div class="panel-body">
34
+
35
+ <!-- New Form -->
36
+ <%= render 'form', project_type: @project_type %>
37
+ <!-- New Form -->
38
+
39
+ </div>
40
+ <!-- Panel - Body -->
41
+
42
+ </div>
43
+ <!-- Panel -->
44
+
45
+ </div>
46
+ </div>
47
+ <!-- Page Content -->
data/config/routes.rb CHANGED
@@ -3,6 +3,8 @@ PhcdevworksPortfolio::Engine.routes.draw do
3
3
  # Project Routes
4
4
  namespace :project do
5
5
  resources :posts, class_name: "Project::Post"
6
+ resources :categories, class_name: "Project::Category"
7
+ resources :types, class_name: "Project::Type"
6
8
  resources :pages, only: [:index, :show]
7
9
  end
8
10
 
@@ -0,0 +1,15 @@
1
+ class CreatePhcdevworksPortfolioProjectCategories < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :phcdevworks_portfolio_project_categories do |t|
4
+
5
+ t.string :project_category_name
6
+
7
+ t.string :slug
8
+ t.string :user_id
9
+ t.string :org_id
10
+
11
+ t.timestamps
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ class CreatePhcdevworksPortfolioProjectTypes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :phcdevworks_portfolio_project_types do |t|
4
+
5
+ t.string :project_type_name
6
+
7
+ t.string :slug
8
+ t.string :user_id
9
+ t.string :org_id
10
+
11
+ t.timestamps
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ class CreatePhcdevworksPortfolioCategoriesPosts < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :phcdevworks_portfolio_categories_posts do |t|
4
+ t.integer :category_id
5
+ t.integer :post_id
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class CreatePhcdevworksPortfolioPostsTypes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :phcdevworks_portfolio_posts_types do |t|
4
+ t.integer :post_id
5
+ t.integer :type_id
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module PhcdevworksPortfolio
2
- VERSION = '0.4.0'
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phcdevworks_portfolio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PHCDevworks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-20 00:00:00.000000000 Z
11
+ date: 2019-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -240,7 +240,7 @@ dependencies:
240
240
  - - "~>"
241
241
  - !ruby/object:Gem::Version
242
242
  version: '1.4'
243
- description: Ruby on Rails 6 Engine to Manage and Organize a Rails site Work Portfolio.
243
+ description: Ruby on Rails 6 Engine to Manage and Organize a Websites Work Portfolio.
244
244
  email:
245
245
  - info@phcdevworks.com
246
246
  executables: []
@@ -252,36 +252,58 @@ files:
252
252
  - Rakefile
253
253
  - app/assets/config/phcdevworks_portfolio_manifest.js
254
254
  - app/assets/javascripts/phcdevworks_portfolio/application.js
255
+ - app/assets/javascripts/phcdevworks_portfolio/project/categories.coffee
255
256
  - app/assets/javascripts/phcdevworks_portfolio/project/pages.coffee
256
257
  - app/assets/javascripts/phcdevworks_portfolio/project/posts.coffee
258
+ - app/assets/javascripts/phcdevworks_portfolio/project/types.coffee
257
259
  - app/assets/stylesheets/phcdevworks_portfolio/application.scss
260
+ - app/assets/stylesheets/phcdevworks_portfolio/project/categories.scss
258
261
  - app/assets/stylesheets/phcdevworks_portfolio/project/pages.scss
259
262
  - app/assets/stylesheets/phcdevworks_portfolio/project/posts.scss
263
+ - app/assets/stylesheets/phcdevworks_portfolio/project/types.scss
264
+ - app/assets/stylesheets/scaffolds.scss
260
265
  - app/controllers/phcdevworks_portfolio/application_controller.rb
266
+ - app/controllers/phcdevworks_portfolio/project/categories_controller.rb
261
267
  - app/controllers/phcdevworks_portfolio/project/pages_controller.rb
262
268
  - app/controllers/phcdevworks_portfolio/project/posts_controller.rb
269
+ - app/controllers/phcdevworks_portfolio/project/types_controller.rb
263
270
  - app/helpers/phcdevworks_portfolio/application_helper.rb
271
+ - app/helpers/phcdevworks_portfolio/project/categories_helper.rb
264
272
  - app/helpers/phcdevworks_portfolio/project/pages_helper.rb
265
273
  - app/helpers/phcdevworks_portfolio/project/posts_helper.rb
274
+ - app/helpers/phcdevworks_portfolio/project/types_helper.rb
266
275
  - app/jobs/phcdevworks_portfolio/application_job.rb
267
276
  - app/mailers/phcdevworks_portfolio/application_mailer.rb
268
277
  - app/models/phcdevworks_portfolio/application_record.rb
269
278
  - app/models/phcdevworks_portfolio/project.rb
279
+ - app/models/phcdevworks_portfolio/project/category.rb
270
280
  - app/models/phcdevworks_portfolio/project/post.rb
281
+ - app/models/phcdevworks_portfolio/project/type.rb
271
282
  - app/views/layouts/phcdevworks_portfolio/application.html.erb
272
283
  - app/views/layouts/phcdevworks_portfolio/components/backend/footer/_footer.html.erb
273
284
  - app/views/layouts/phcdevworks_portfolio/components/backend/navigation/_top_menu.html.erb
274
285
  - app/views/layouts/phcdevworks_portfolio/components/backend/sidebars/_side_menu.html.erb
275
286
  - app/views/layouts/phcdevworks_portfolio/frontend.html.erb
287
+ - app/views/phcdevworks_portfolio/project/categories/_form.html.erb
288
+ - app/views/phcdevworks_portfolio/project/categories/edit.html.erb
289
+ - app/views/phcdevworks_portfolio/project/categories/index.html.erb
290
+ - app/views/phcdevworks_portfolio/project/categories/new.html.erb
276
291
  - app/views/phcdevworks_portfolio/project/pages/index.html.erb
277
292
  - app/views/phcdevworks_portfolio/project/pages/show.html.erb
278
293
  - app/views/phcdevworks_portfolio/project/posts/_form.html.erb
279
294
  - app/views/phcdevworks_portfolio/project/posts/edit.html.erb
280
295
  - app/views/phcdevworks_portfolio/project/posts/index.html.erb
281
296
  - app/views/phcdevworks_portfolio/project/posts/new.html.erb
282
- - app/views/phcdevworks_portfolio/project/posts/show.html.erb
297
+ - app/views/phcdevworks_portfolio/project/types/_form.html.erb
298
+ - app/views/phcdevworks_portfolio/project/types/edit.html.erb
299
+ - app/views/phcdevworks_portfolio/project/types/index.html.erb
300
+ - app/views/phcdevworks_portfolio/project/types/new.html.erb
283
301
  - config/routes.rb
284
302
  - db/migrate/20191014112330_create_phcdevworks_portfolio_project_posts.rb
303
+ - db/migrate/20191021225231_create_phcdevworks_portfolio_project_categories.rb
304
+ - db/migrate/20191021225316_create_phcdevworks_portfolio_project_types.rb
305
+ - db/migrate/20191024232111_create_phcdevworks_portfolio_categories_posts.rb
306
+ - db/migrate/20191024232406_create_phcdevworks_portfolio_posts_types.rb
285
307
  - lib/phcdevworks_portfolio.rb
286
308
  - lib/phcdevworks_portfolio/engine.rb
287
309
  - lib/phcdevworks_portfolio/version.rb
@@ -1,39 +0,0 @@
1
- <p id="notice"><%= notice %></p>
2
-
3
- <p>
4
- <strong>Project post title:</strong>
5
- <%= @project_post.project_post_title %>
6
- </p>
7
-
8
- <p>
9
- <strong>Project post description:</strong>
10
- <%= @project_post.project_post_description %>
11
- </p>
12
-
13
- <p>
14
- <strong>Project post url:</strong>
15
- <%= @project_post.project_post_url %>
16
- </p>
17
-
18
- <p>
19
- <strong>Project post type:</strong>
20
- <%= @project_post.project_post_type %>
21
- </p>
22
-
23
- <p>
24
- <strong>Project post status:</strong>
25
- <%= @project_post.project_post_status %>
26
- </p>
27
-
28
- <p>
29
- <strong>Project post image:</strong>
30
- <%= @project_post.project_post_image %>
31
- </p>
32
-
33
- <p>
34
- <strong>Project post images:</strong>
35
- <%= @project_post.project_post_images %>
36
- </p>
37
-
38
- <%= link_to 'Edit', edit_project_post_path(@project_post) %> |
39
- <%= link_to 'Back', project_posts_path %>