diff --git a/Gemfile b/Gemfile
index ea0567c5..2fd214c9 100644
--- a/Gemfile
+++ b/Gemfile
@@ -31,7 +31,8 @@ gem 'jbuilder', '~> 2.5'
gem 'rails-controller-testing'
# Use rubocop for static code analysis
gem 'rubocop'
-
+# bundler audit
+gem 'rexml', '>= 3.2.7'
gem 'rubocop-rails', require: false
gem 'rubocop-rspec', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index fc165729..1c6744ad 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -261,7 +261,8 @@ GEM
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
- rexml (3.2.6)
+ rexml (3.2.8)
+ strscan (>= 3.0.9)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
@@ -364,6 +365,7 @@ GEM
net-scp (>= 1.1.2)
net-sftp (>= 2.1.2)
net-ssh (>= 2.8.0)
+ strscan (3.1.0)
thor (1.3.1)
tilt (2.3.0)
timeout (0.4.1)
@@ -430,6 +432,7 @@ DEPENDENCIES
rails-controller-testing
rb-readline
recaptcha
+ rexml (>= 3.2.7)
rspec-rails (~> 4.1.0)
rspec_junit_formatter
rubocop
diff --git a/app/assets/stylesheets/software_records.scss b/app/assets/stylesheets/software_records.scss
index fae872f4..04ae53cd 100644
--- a/app/assets/stylesheets/software_records.scss
+++ b/app/assets/stylesheets/software_records.scss
@@ -239,7 +239,7 @@ option {
}
.table td, .table th {
- vertical-align: middle !important;
+ vertical-align: top !important;
border-top: none;
}
diff --git a/app/controllers/software_records_controller.rb b/app/controllers/software_records_controller.rb
index 034e63bd..ee95d904 100644
--- a/app/controllers/software_records_controller.rb
+++ b/app/controllers/software_records_controller.rb
@@ -9,8 +9,11 @@ class SoftwareRecordsController < ApplicationController
before_action :authenticate_user!, except: %i[new create show]
before_action :set_software_record, only: %i[show edit update destroy]
before_action :navigation, except: %i[edit update]
- access all: %i[create show], viewer: %i[index show], owner: %i[index show edit update list_upgrades],
- manager: %i[index show edit update new create destroy list_upgrades], root_admin: :all, message: 'Permission Denied !
Please contact the administrator for more info.'
+ access all: %i[create show], viewer: %i[index show], owner: %i[index show edit update list_upgrades list_road_map edit_road_map update_road_map],
+ manager: %i[index show edit update new create destroy list_upgrades list_road_map edit_road_map update_road_map], root_admin: :all, message: 'Permission Denied !
Please
+contact the administrator for more
+info.'
+
# GET /software_records
def index
@@ -171,8 +174,42 @@ def list_upgrades
@softwarerecords_count = SoftwareRecord.count
end
+ def list_road_map
+ $page_title = 'Road Map | UCL Application Portfolio'
+ @params = request.query_parameters
+
+ @software_records = if @params['filter_by'].to_s == 'software_types' && !@params['software_type_filter'].nil? && !@params['software_type_filter'].empty?
+ SoftwareRecord.where(software_type_id: @params['software_type_filter']).order("#{sort_priority} #{sort_direction_priority}")
+ elsif @params['filter_by'].to_s == 'vendor_records' && !@params['vendor_record_filter'].nil? &&
+ !@params['vendor_record_filter'].empty?
+ SoftwareRecord.where(vendor_record_id: @params['vendor_record_filter']).order("#{sort_priority} #{sort_direction_priority}")
+ else
+ SoftwareRecord.order("#{sort_column} #{sort_direction}")
+ end
+ @vendor_records = VendorRecord.all
+ @software_types = SoftwareType.all
+ @softwarerecords_count = SoftwareRecord.count
+ end
+
+ def edit_road_map
+ @software_record = SoftwareRecord.find(params[:id])
+ end
+
+ def update_road_map
+ @software_record = SoftwareRecord.find(params[:id])
+ if @software_record.update(road_map_params)
+ redirect_to list_road_map_path, notice: 'Road map was successfully updated.'
+ else
+ render :edit_road_map
+ end
+ end
+
private
+ def road_map_params
+ params.require(:software_record).permit(:road_map)
+ end
+
# Use callbacks to share common setup or constraints between actions.
def set_software_record
@software_record = SoftwareRecord.find(params[:id])
@@ -239,6 +276,7 @@ def software_record_params
:installed_version,
:latest_version,
:proposed_version,
+ :road_map,
:last_upgrade_date,
:upgrade_available,
:vulnerabilities_reported,
diff --git a/app/views/shared/_dashboard_menu.html.erb b/app/views/shared/_dashboard_menu.html.erb
index 6f056b5f..46124fe7 100644
--- a/app/views/shared/_dashboard_menu.html.erb
+++ b/app/views/shared/_dashboard_menu.html.erb
@@ -20,6 +20,7 @@
View all Change Requests
<%= @software_record.title %>
+<%= sortable "title", "Title" %> + <% if params[:direction] == "asc" || params[:direction] == nil %> + + <% else %> + + <% end %> | + +<%= sortable "road_map", "Road Map" %> + <% if params[:direction] == "asc" || params[:direction] == nil %> + + <% else %> + + <% end %> | + + <% if current_user.role.to_s == "viewer" %> +Actions | + <% elsif current_user.role.to_s == "owner" %> +Actions | + <% else %> +Actions | + <% end %> +|||
---|---|---|---|---|---|---|---|
<%= software_record.title %> | +<%= simple_format(software_record.road_map) %> | + <% if current_user.role.to_s == "viewer" %> +<%= link_to 'View', software_record , { :class => "btn btn-success action-btn" }%> | + <% elsif current_user.role.to_s == "owner" %> +<%= link_to 'Edit Road Map', edit_road_map_software_record_path(software_record), class: "btn btn-primary action-btn", style: +"white-space: nowrap;" %> | + <% else %> +<%= link_to 'Edit Road Map', edit_road_map_software_record_path(software_record), class: "btn btn-primary action-btn", style: +"white-space: nowrap;" %> | + + <% end %> +
' do