From 498003555ea2d5a58b66572367626a237a640a85 Mon Sep 17 00:00:00 2001 From: Miha Mencin Date: Wed, 22 Jan 2020 11:24:35 +0100 Subject: [PATCH 01/13] Bump version to 1.18.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index ada2e4fce..84cc52946 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.17.10 +1.18.0 From 3af2f4af198f10818981fdb832d86e302a8ce1be Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Fri, 24 Jan 2020 15:43:13 +0100 Subject: [PATCH 02/13] Change to new style checkboxes on share inventory modal --- app/assets/javascripts/repositories/index.js | 10 +- app/assets/stylesheets/repositories.scss | 10 +- app/assets/stylesheets/shared/checkbox.scss | 108 ------------------ .../shared_styles/elements/checkboxes.scss | 8 +- .../shared_styles/elements/toggles.scss | 12 +- .../_share_repository_modal.html.erb | 30 +++-- .../manage_column_partials/_date.html.erb | 6 +- .../manage_column_partials/_datetime.html.erb | 6 +- .../manage_column_partials/_time.html.erb | 6 +- 9 files changed, 55 insertions(+), 141 deletions(-) delete mode 100644 app/assets/stylesheets/shared/checkbox.scss diff --git a/app/assets/javascripts/repositories/index.js b/app/assets/javascripts/repositories/index.js index 638d8cff5..144b11cfe 100644 --- a/app/assets/javascripts/repositories/index.js +++ b/app/assets/javascripts/repositories/index.js @@ -108,18 +108,18 @@ var permissionCBs = form.find("input[name='write_permissions[]']"); var permissionChanges = form.find("input[name='permission_changes']"); var submitBtn = form.find('input[type="submit"]'); - var selectAllCheckbox = form.find('.all-teams .simple-checkbox'); + var selectAllCheckbox = form.find('.all-teams .sci-checkbox'); - form.find('.teams-list').find('input.simple-checkbox, .permission-selector') + form.find('.teams-list').find('input.sci-checkbox, .permission-selector') .toggleClass('hidden', selectAllCheckbox.is(':checked')); - form.find('.all-teams .trigger-checkbox') + form.find('.all-teams .sci-toggle-checkbox') .toggleClass('hidden', !selectAllCheckbox.is(':checked')) .attr('disabled', !selectAllCheckbox.is(':checked')); selectAllCheckbox.change(function() { - form.find('.teams-list').find('input.simple-checkbox, .permission-selector') + form.find('.teams-list').find('input.sci-checkbox, .permission-selector') .toggleClass('hidden', this.checked); - form.find('.all-teams .trigger-checkbox').toggleClass('hidden', !this.checked) + form.find('.all-teams .sci-toggle-checkbox').toggleClass('hidden', !this.checked) .attr('disabled', !this.checked); }); diff --git a/app/assets/stylesheets/repositories.scss b/app/assets/stylesheets/repositories.scss index 946c89f8f..160e1f70e 100644 --- a/app/assets/stylesheets/repositories.scss +++ b/app/assets/stylesheets/repositories.scss @@ -418,13 +418,8 @@ display: flex; padding: 5px 0; - .simple-checkbox.hidden { + .sci-checkbox.hidden { display: inline-block !important; - - + .checkbox-label { - display: inline-block; - opacity: 0; - } } } } @@ -441,7 +436,7 @@ display: flex; flex-grow: 1; - .checkbox-label { + .sci-checkbox-container { margin-right: 5px; } } @@ -470,4 +465,3 @@ color: $color-silver-chalice; } } - diff --git a/app/assets/stylesheets/shared/checkbox.scss b/app/assets/stylesheets/shared/checkbox.scss deleted file mode 100644 index f62fe718f..000000000 --- a/app/assets/stylesheets/shared/checkbox.scss +++ /dev/null @@ -1,108 +0,0 @@ -// scss-lint:disable SelectorDepth SelectorFormat QualifyingElement -// scss-lint:disable NestingDepth ImportantRule - -@import "constants"; -@import "mixins"; - -:root { - --checkbox-size: 16px; -} - -input[type="checkbox"].simple-checkbox { - cursor: pointer; - flex-shrink: 0; - height: var(--checkbox-size); - margin: 0; - opacity: 0; - position: relative; - width: var(--checkbox-size); - z-index: 2; - - + .checkbox-label { - display: inline-block; - flex-shrink: 0; - height: var(--checkbox-size); - margin-left: calc((var(--checkbox-size) * -1) - 1px); - position: relative; - width: var(--checkbox-size); - - &::before { - content: "\f0c8"; - font-family: "Font Awesome 5 Free"; - font-size: var(--checkbox-size); - font-weight: 400; - left: 0; - line-height: var(--checkbox-size); - position: absolute; - text-align: center; - top: 1px; - width: var(--checkbox-size); - } - } - - &.disabled { - pointer-events: none; - - + .checkbox-label { - color: $color-silver-chalice; - cursor: not-allowed; - } - } - - &.hidden + .checkbox-label { - display: none; - } - - &:checked + .checkbox-label { - &::before { - content: "\f14a"; - } - } -} - -input[type="checkbox"].trigger-checkbox { - cursor: pointer; - flex-shrink: 0; - height: 16px; - margin: 0; - opacity: 0; - position: relative; - width: 24px; - z-index: 2; - - + .checkbox-label { - background: $color-silver-chalice; - border-radius: 8px; - display: inline-block; - flex-shrink: 0; - height: 16px; - margin-left: -24px; - position: relative; - transition: .2s; - width: 24px; - - &::before { - background: $color-white; - border-radius: 7px; - content: ""; - height: 12px; - left: 0; - margin: 2px; - position: absolute; - transition: .2s; - width: 12px; - } - } - - &.hidden + .checkbox-label { - display: none; - } - - &:checked + .checkbox-label { - background: $brand-success; - - &::before { - left: 8px; - } - } -} diff --git a/app/assets/stylesheets/shared_styles/elements/checkboxes.scss b/app/assets/stylesheets/shared_styles/elements/checkboxes.scss index 66dbe2cd5..d19779aa2 100644 --- a/app/assets/stylesheets/shared_styles/elements/checkboxes.scss +++ b/app/assets/stylesheets/shared_styles/elements/checkboxes.scss @@ -4,6 +4,13 @@ --sci-checkbox-size: 16px; } +.sci-checkbox-container { + display: inline-block; + height: var(--sci-checkbox-size); + position: relative; + width: var(--sci-checkbox-size); +} + input[type="checkbox"].sci-checkbox { cursor: pointer; flex-shrink: 0; @@ -36,7 +43,6 @@ input[type="checkbox"].sci-checkbox { line-height: calc(var(--sci-checkbox-size) - 2px); position: absolute; text-align: center; - top: 1px; transition: .2s; width: var(--sci-checkbox-size); } diff --git a/app/assets/stylesheets/shared_styles/elements/toggles.scss b/app/assets/stylesheets/shared_styles/elements/toggles.scss index e95ae09c6..b5937e8db 100644 --- a/app/assets/stylesheets/shared_styles/elements/toggles.scss +++ b/app/assets/stylesheets/shared_styles/elements/toggles.scss @@ -1,5 +1,12 @@ // scss-lint:disable SelectorDepth QualifyingElement NestingDepth +.sci-toggle-checkbox-container { + display: inline-block; + height: 16px; + position: relative; + width: 24px; +} + input[type="checkbox"].sci-toggle-checkbox { cursor: pointer; flex-shrink: 0; @@ -17,8 +24,9 @@ input[type="checkbox"].sci-toggle-checkbox { display: inline-block; flex-shrink: 0; height: 16px; - margin-left: -27px; - position: relative; + left: 0; + position: absolute; + top: 0; transition: .2s; width: 24px; diff --git a/app/views/repositories/_share_repository_modal.html.erb b/app/views/repositories/_share_repository_modal.html.erb index 5f7d3141a..67e45bf49 100644 --- a/app/views/repositories/_share_repository_modal.html.erb +++ b/app/views/repositories/_share_repository_modal.html.erb @@ -17,29 +17,37 @@
"> - <%= check_box_tag 'select_all_teams', 0, @repository.shared_read? || @repository.shared_write?, { class: 'simple-checkbox' } %> - + + <%= check_box_tag 'select_all_teams', 0, @repository.shared_read? || @repository.shared_write?, { class: 'sci-checkbox' } %> + + <%= t("repositories.index.modal_share.all_teams") %> - <%= check_box_tag 'select_all_write_permission', 0, @repository.shared_write?, { class: 'hidden trigger-checkbox' }%> - + + <%= check_box_tag 'select_all_write_permission', 0, @repository.shared_write?, { class: 'hidden sci-toggle-checkbox' }%> + +
<% (current_user.teams - [@repository.team]).each do |t| %>
- <%= check_box_tag 'share_team_ids[]', t.id, @repository.private_shared_with?(t), {id: "shared_#{t.id}", class: "simple-checkbox"} %> - + + <%= check_box_tag 'share_team_ids[]', t.id, @repository.private_shared_with?(t), {id: "shared_#{t.id}", class: "sci-checkbox"} %> + + <%= t.name %>
- <%= check_box_tag 'write_permissions[]', t.id, @repository.private_shared_with_write?(t), { - id: "editable_#{t.id}", - class: (@repository.private_shared_with?(t) ? 'trigger-checkbox' : 'trigger-checkbox hidden') - }.compact %> - + + <%= check_box_tag 'write_permissions[]', t.id, @repository.private_shared_with_write?(t), { + id: "editable_#{t.id}", + class: (@repository.private_shared_with?(t) ? 'sci-toggle-checkbox' : 'sci-toggle-checkbox hidden') + }.compact %> + +
<% end %> diff --git a/app/views/repository_columns/manage_column_partials/_date.html.erb b/app/views/repository_columns/manage_column_partials/_date.html.erb index 7e15b5bee..7727b7431 100644 --- a/app/views/repository_columns/manage_column_partials/_date.html.erb +++ b/app/views/repository_columns/manage_column_partials/_date.html.erb @@ -2,8 +2,10 @@
- <%= check_box_tag 'range', '', column&.repository_date_range_value?, { id: 'date-range', class: column.new_record? ? 'simple-checkbox' : 'simple-checkbox disabled' } %> - + + <%= check_box_tag 'range', '', column&.repository_date_range_value?, { id: 'date-range', class: column.new_record? ? 'sci-checkbox' : 'sci-checkbox disabled' } %> + + <%= t('libraries.manange_modal_column.datetime_type.range_label') %>
diff --git a/app/views/repository_columns/manage_column_partials/_datetime.html.erb b/app/views/repository_columns/manage_column_partials/_datetime.html.erb index 0d18903e2..bd0fd1c2f 100644 --- a/app/views/repository_columns/manage_column_partials/_datetime.html.erb +++ b/app/views/repository_columns/manage_column_partials/_datetime.html.erb @@ -2,8 +2,10 @@
- <%= check_box_tag 'range', '', column&.repository_date_time_range_value?, { id: 'datetime-range', class: column.new_record? ? 'simple-checkbox' : 'simple-checkbox disabled' } %> - + + <%= check_box_tag 'range', '', column&.repository_date_time_range_value?, { id: 'datetime-range', class: column.new_record? ? 'sci-checkbox' : 'sci-checkbox disabled' } %> + + <%= t('libraries.manange_modal_column.datetime_type.range_label') %>
diff --git a/app/views/repository_columns/manage_column_partials/_time.html.erb b/app/views/repository_columns/manage_column_partials/_time.html.erb index 8dd38230a..26ae71a0e 100644 --- a/app/views/repository_columns/manage_column_partials/_time.html.erb +++ b/app/views/repository_columns/manage_column_partials/_time.html.erb @@ -2,8 +2,10 @@
- <%= check_box_tag 'range', '', column&.repository_time_range_value?, { id: 'time-range', class: column.new_record? ? 'simple-checkbox' : 'simple-checkbox disabled' } %> - + + <%= check_box_tag 'range', '', column&.repository_time_range_value?, { id: 'time-range', class: column.new_record? ? 'sci-checkbox' : 'sci-checkbox disabled' } %> + + <%= t('libraries.manange_modal_column.datetime_type.range_label') %>
From ec8af5f94364100845b68663e3c5397f104f34fa Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Fri, 24 Jan 2020 16:33:44 +0100 Subject: [PATCH 03/13] Add readonly repository rows records --- .../repositories/repository_datatable.js | 24 +++++++++++++++---- .../stylesheets/my_modules/repositories.scss | 9 ++++++- .../repository/repository_table.scss | 10 ++++++++ app/helpers/repository_datatable_helper.rb | 7 +++++- app/services/repository_datatable_service.rb | 1 + config/initializers/extends.rb | 3 +++ 6 files changed, 47 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js index 10be0e2bd..267d811bb 100644 --- a/app/assets/javascripts/repositories/repository_datatable.js +++ b/app/assets/javascripts/repositories/repository_datatable.js @@ -17,6 +17,7 @@ var RepositoryDatatable = (function(global) { var SELECT_ALL_SELECTOR = "#checkbox > input[name=select_all]" var rowsSelected = []; + var rowsLocked = []; // Tells whether we're currently viewing or editing table var currentMode = 'viewMode'; @@ -76,6 +77,11 @@ var RepositoryDatatable = (function(global) { $('#copyRepositoryRecords').prop('disabled', false); $('#assignRepositoryRecords').prop('disabled', false); $('#unassignRepositoryRecords').prop('disabled', false); + + if (rowsSelected.some(r=> rowsLocked.indexOf(r) >= 0)) { // Some selected rows is rowsLocked + $('#editRepositoryRecord').prop('disabled', true); + $('#deleteRepositoryRecordsButton').prop('disabled', true); + } $('#editDeleteCopy').show(); } } else if (currentMode === 'editMode') { @@ -422,8 +428,9 @@ var RepositoryDatatable = (function(global) { orderable: false, className: 'dt-body-center', sWidth: '1%', - render: function() { - return ""; + render: function(data, type, row) { + return ` + `; } }, { // Assigned column is not searchable @@ -433,11 +440,13 @@ var RepositoryDatatable = (function(global) { orderable: true, className: 'assigned-column', sWidth: '1%', - render: function(data) { + render: function(data, type, row) { let content = data; - if (EDITABLE) { - content = '' + content; + let icon = ''; + if (!row.recordEditable) { + icon = ''; } + content = icon + content; return content; } }, { @@ -461,6 +470,7 @@ var RepositoryDatatable = (function(global) { sSearch: I18n.t('general.filter_dots') }, rowCallback: function(row, data) { + $(row).attr('data-editable', data.recordEditable); // Get row ID let rowId = data.DT_RowId; // If row ID is in the list of selected row IDs @@ -576,6 +586,10 @@ var RepositoryDatatable = (function(global) { $('.dataTables_filter').find('label').remove(); $('.main-actions, .pagination-row').removeClass('hidden'); + + $(TABLE_ID).find('tr[data-editable=false]').each(function(_, e) { + rowsLocked.push(parseInt($(e).attr('id'), 10)); + }); } }); diff --git a/app/assets/stylesheets/my_modules/repositories.scss b/app/assets/stylesheets/my_modules/repositories.scss index a2c0bd294..34443255a 100644 --- a/app/assets/stylesheets/my_modules/repositories.scss +++ b/app/assets/stylesheets/my_modules/repositories.scss @@ -21,8 +21,15 @@ } tbody { - tr:hover { + tr { + .assigned-column { + .repository-row-lock-icon { + display: none !important; + } + } + } + tr:hover { .assigned-column { .repository-row-edit-icon { display: none !important; diff --git a/app/assets/stylesheets/repository/repository_table.scss b/app/assets/stylesheets/repository/repository_table.scss index 2853b0d4f..75999a961 100644 --- a/app/assets/stylesheets/repository/repository_table.scss +++ b/app/assets/stylesheets/repository/repository_table.scss @@ -33,6 +33,10 @@ width: 30px; } + .repository-row-lock-icon { + width: 30px; + } + .assign-counter-container { border-radius: $border-radius-tag; cursor: pointer; @@ -198,6 +202,12 @@ .editing { border: 1px solid; } + + tr[data-editable=false] { + .assign-counter-container { + margin-left: 0; + } + } } &.editing { diff --git a/app/helpers/repository_datatable_helper.rb b/app/helpers/repository_datatable_helper.rb index c847d7b29..c925784cb 100644 --- a/app/helpers/repository_datatable_helper.rb +++ b/app/helpers/repository_datatable_helper.rb @@ -28,7 +28,8 @@ module RepositoryDatatableHelper record.id ), 'recordInfoUrl': Rails.application.routes.url_helpers - .repository_row_path(record.id) + .repository_row_path(record.id), + 'recordEditable': record_editable } # Add custom columns @@ -74,6 +75,10 @@ module RepositoryDatatableHelper Constants::REPOSITORY_TABLE_DEFAULT_STATE['columns'].to_json end + def record_editable + true + end + def display_cell_value(cell, team) value_name = cell.repository_column.data_type.underscore serializer_class = "RepositoryDatatable::#{cell.repository_column.data_type}Serializer".constantize diff --git a/app/services/repository_datatable_service.rb b/app/services/repository_datatable_service.rb index 6692a4d29..b6ee3c154 100644 --- a/app/services/repository_datatable_service.rb +++ b/app/services/repository_datatable_service.rb @@ -52,6 +52,7 @@ class RepositoryDatatableService .select('COUNT(DISTINCT my_modules.experiment_id) AS "assigned_experiments_count"') .select('COUNT(DISTINCT experiments.project_id) AS "assigned_projects_count"') end + repository_rows.preload(Extends::REPOSITORY_ROWS_PRELOAD_RELATIONS) @repository_rows = sort_rows(order_obj, repository_rows) end diff --git a/config/initializers/extends.rb b/config/initializers/extends.rb index 8b81b6743..41c6b376d 100644 --- a/config/initializers/extends.rb +++ b/config/initializers/extends.rb @@ -79,6 +79,9 @@ class Extends repository_status_value: :repository_status_item, repository_asset_value: { asset: { file_attachment: :blob } }] + # Array of preload relations used in search query for repository rows + REPOSITORY_ROWS_PRELOAD_RELATIONS = [] + # List of implemented core API versions API_VERSIONS = ['v1'] From 0effb3ee697faec60e37fba04239b9cbd84431c7 Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Sat, 25 Jan 2020 08:52:33 +0100 Subject: [PATCH 04/13] Add translation for read-only items --- app/assets/javascripts/repositories/repository_datatable.js | 2 +- config/locales/en.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js index 267d811bb..1c758c3b2 100644 --- a/app/assets/javascripts/repositories/repository_datatable.js +++ b/app/assets/javascripts/repositories/repository_datatable.js @@ -444,7 +444,7 @@ var RepositoryDatatable = (function(global) { let content = data; let icon = ''; if (!row.recordEditable) { - icon = ''; + icon = ``; } content = icon + content; return content; diff --git a/config/locales/en.yml b/config/locales/en.yml index 67eb5c0ca..64881fe0f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1055,6 +1055,7 @@ en: added_on: "Added on" added_by: "Added by" enter_row_name: "Enter name" + locked_item: "This is read-only item." assets: select_file_btn: "Select File (Max %{max_size} MB)..." text: From 503c05805d124b49d6153e8f630dd40c9b97a925 Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Sat, 25 Jan 2020 09:43:05 +0100 Subject: [PATCH 05/13] Move editable? method from helper to model --- app/helpers/repository_datatable_helper.rb | 6 +----- app/models/repository_row.rb | 4 ++++ app/services/repository_datatable_service.rb | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/helpers/repository_datatable_helper.rb b/app/helpers/repository_datatable_helper.rb index c925784cb..95f2006ee 100644 --- a/app/helpers/repository_datatable_helper.rb +++ b/app/helpers/repository_datatable_helper.rb @@ -29,7 +29,7 @@ module RepositoryDatatableHelper ), 'recordInfoUrl': Rails.application.routes.url_helpers .repository_row_path(record.id), - 'recordEditable': record_editable + 'recordEditable': record.editable? } # Add custom columns @@ -75,10 +75,6 @@ module RepositoryDatatableHelper Constants::REPOSITORY_TABLE_DEFAULT_STATE['columns'].to_json end - def record_editable - true - end - def display_cell_value(cell, team) value_name = cell.repository_column.data_type.underscore serializer_class = "RepositoryDatatable::#{cell.repository_column.data_type}Serializer".constantize diff --git a/app/models/repository_row.rb b/app/models/repository_row.rb index 6fb472b51..eb87cbf7b 100644 --- a/app/models/repository_row.rb +++ b/app/models/repository_row.rb @@ -37,4 +37,8 @@ class RepositoryRow < ApplicationRecord .where('repositories.team_id = ? and repository_rows.created_by_id = ?', team, user) .update_all(created_by_id: new_owner.id) end + + def editable? + true + end end diff --git a/app/services/repository_datatable_service.rb b/app/services/repository_datatable_service.rb index b6ee3c154..415f6ecf6 100644 --- a/app/services/repository_datatable_service.rb +++ b/app/services/repository_datatable_service.rb @@ -52,7 +52,7 @@ class RepositoryDatatableService .select('COUNT(DISTINCT my_modules.experiment_id) AS "assigned_experiments_count"') .select('COUNT(DISTINCT experiments.project_id) AS "assigned_projects_count"') end - repository_rows.preload(Extends::REPOSITORY_ROWS_PRELOAD_RELATIONS) + repository_rows = repository_rows.preload(Extends::REPOSITORY_ROWS_PRELOAD_RELATIONS) @repository_rows = sort_rows(order_obj, repository_rows) end From 276df8c1519ee96f405faa28b55c0d91f30c2d57 Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Mon, 27 Jan 2020 10:20:49 +0100 Subject: [PATCH 06/13] Fix Safari inventories bug --- app/assets/stylesheets/repositories.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/repositories.scss b/app/assets/stylesheets/repositories.scss index 160e1f70e..2dc7907e4 100644 --- a/app/assets/stylesheets/repositories.scss +++ b/app/assets/stylesheets/repositories.scss @@ -116,6 +116,7 @@ padding-top: 123px; .dataTables_scrollHead { + position: -webkit-sticky !important; position: sticky !important; top: 194px; z-index: 90; From 81023f8c69f466ef55cdbb68f6b6bfe89e822f3b Mon Sep 17 00:00:00 2001 From: Miha Mencin Date: Mon, 27 Jan 2020 14:27:46 +0100 Subject: [PATCH 07/13] SCI-4300 sckip permission checking for list --- .../repository_columns/checklist_columns_controller.rb | 2 +- app/controllers/repository_columns/list_columns_controller.rb | 2 +- app/controllers/repository_columns/status_columns_controller.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/repository_columns/checklist_columns_controller.rb b/app/controllers/repository_columns/checklist_columns_controller.rb index c3adf3cd6..0d9af4e56 100644 --- a/app/controllers/repository_columns/checklist_columns_controller.rb +++ b/app/controllers/repository_columns/checklist_columns_controller.rb @@ -4,7 +4,7 @@ module RepositoryColumns class ChecklistColumnsController < BaseColumnsController before_action :load_column, only: %i(update destroy items) before_action :check_create_permissions, only: :create - before_action :check_manage_permissions, only: %i(update destroy items) + before_action :check_manage_permissions, only: %i(update destroy) helper_method :delimiters def create diff --git a/app/controllers/repository_columns/list_columns_controller.rb b/app/controllers/repository_columns/list_columns_controller.rb index 88be0397e..63649506d 100644 --- a/app/controllers/repository_columns/list_columns_controller.rb +++ b/app/controllers/repository_columns/list_columns_controller.rb @@ -4,7 +4,7 @@ module RepositoryColumns class ListColumnsController < BaseColumnsController before_action :load_column, only: %i(update destroy items) before_action :check_create_permissions, only: :create - before_action :check_manage_permissions, only: %i(update destroy items) + before_action :check_manage_permissions, only: %i(update destroy) helper_method :delimiters def create diff --git a/app/controllers/repository_columns/status_columns_controller.rb b/app/controllers/repository_columns/status_columns_controller.rb index 30b515531..9142b0fc3 100644 --- a/app/controllers/repository_columns/status_columns_controller.rb +++ b/app/controllers/repository_columns/status_columns_controller.rb @@ -5,7 +5,7 @@ module RepositoryColumns include InputSanitizeHelper before_action :load_column, only: %i(update destroy items) before_action :check_create_permissions, only: :create - before_action :check_manage_permissions, only: %i(update destroy items) + before_action :check_manage_permissions, only: %i(update destroy) def create service = RepositoryColumns::CreateColumnService From 0d3e8ac3e16609ff4022c86b96467f2bdbe9f6fa Mon Sep 17 00:00:00 2001 From: Miha Mencin Date: Mon, 27 Jan 2020 15:04:53 +0100 Subject: [PATCH 08/13] remove silly test --- .../status_columns_controller_spec.rb | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/spec/controllers/repository_columns/status_columns_controller_spec.rb b/spec/controllers/repository_columns/status_columns_controller_spec.rb index b1ff322cc..5e1c7b76e 100644 --- a/spec/controllers/repository_columns/status_columns_controller_spec.rb +++ b/spec/controllers/repository_columns/status_columns_controller_spec.rb @@ -262,18 +262,5 @@ RSpec.describe RepositoryColumns::StatusColumnsController, type: :controller do expect(response).to(have_http_status(404)) end end - - context 'when user does not have permissions' do - before do - user_team.role = :guest - user_team.save - end - - it 'respons with status 403' do - action - - expect(response).to(have_http_status(403)) - end - end end end From 13c9dd8cf62abdd599049e545699afa747e8a520 Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Tue, 28 Jan 2020 13:38:37 +0100 Subject: [PATCH 09/13] Safe navigation for serializer value of RepositoryListItem --- app/models/repository_checklist_item.rb | 2 +- .../repository_datatable/repository_list_value_serializer.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/repository_checklist_item.rb b/app/models/repository_checklist_item.rb index 7bf66000c..f25165bfd 100644 --- a/app/models/repository_checklist_item.rb +++ b/app/models/repository_checklist_item.rb @@ -11,5 +11,5 @@ class RepositoryChecklistItem < ApplicationRecord belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', inverse_of: :modified_repository_checklist_types has_many :repository_checklist_items_values, dependent: :destroy - has_many :repository_checklist_values, through: :repository_checklist_items_values + has_many :repository_checklist_values, through: :repository_checklist_items_values, dependent: :destroy end diff --git a/app/serializers/repository_datatable/repository_list_value_serializer.rb b/app/serializers/repository_datatable/repository_list_value_serializer.rb index d47deb4d3..2631870e8 100644 --- a/app/serializers/repository_datatable/repository_list_value_serializer.rb +++ b/app/serializers/repository_datatable/repository_list_value_serializer.rb @@ -4,8 +4,8 @@ module RepositoryDatatable class RepositoryListValueSerializer < RepositoryBaseValueSerializer def value { - id: object.repository_list_item.id, - text: object.data + id: (object.repository_list_item&.id || ''), + text: (object.data || '') } end end From 1a834c206bb88a9b72696ad1febfe2525af1299d Mon Sep 17 00:00:00 2001 From: Mojca Lorber Date: Tue, 28 Jan 2020 15:12:09 +0100 Subject: [PATCH 10/13] Fix repository data time range column width --- app/assets/stylesheets/repository/repository_table.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/assets/stylesheets/repository/repository_table.scss b/app/assets/stylesheets/repository/repository_table.scss index 75999a961..827737598 100644 --- a/app/assets/stylesheets/repository/repository_table.scss +++ b/app/assets/stylesheets/repository/repository_table.scss @@ -6,6 +6,14 @@ .repository-table { margin-top: 20px; + &.editing { + .dataTables_scrollHead { + .repository-column[data-type="RepositoryDateTimeRangeValue"] { + min-width: 520px; + } + } + } + .dataTables_filter { float: right; } From 94cce6d57e65b46a79e8bf3261763878baa1be68 Mon Sep 17 00:00:00 2001 From: Miha Mencin Date: Tue, 28 Jan 2020 16:25:21 +0100 Subject: [PATCH 11/13] Revert "Fix repository data time range column width [SCI-4306]" --- app/assets/stylesheets/repository/repository_table.scss | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/assets/stylesheets/repository/repository_table.scss b/app/assets/stylesheets/repository/repository_table.scss index 827737598..75999a961 100644 --- a/app/assets/stylesheets/repository/repository_table.scss +++ b/app/assets/stylesheets/repository/repository_table.scss @@ -6,14 +6,6 @@ .repository-table { margin-top: 20px; - &.editing { - .dataTables_scrollHead { - .repository-column[data-type="RepositoryDateTimeRangeValue"] { - min-width: 520px; - } - } - } - .dataTables_filter { float: right; } From 6c7a88475e9dde651f7396c61cfe9da2dfdf5868 Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Wed, 29 Jan 2020 09:36:21 +0100 Subject: [PATCH 12/13] Fix icon selection --- .../columns_initializers/status_column_type.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/repository_columns/columns_initializers/status_column_type.js b/app/assets/javascripts/repository_columns/columns_initializers/status_column_type.js index 45e71d66d..a26eecaa6 100644 --- a/app/assets/javascripts/repository_columns/columns_initializers/status_column_type.js +++ b/app/assets/javascripts/repository_columns/columns_initializers/status_column_type.js @@ -24,12 +24,12 @@ var RepositoryStatusColumnType = (function() { $.each($statusRows, (index, statusRow) => { var $row = $(statusRow); var $statusField = $row.find('.status-item-field'); - var iconPlaceholder = $row.find(iconId).attr('emoji'); + var icon = $row.find(iconId).attr('emoji'); var stringLength = $statusField.val().length; if (stringLength < GLOBAL_CONSTANTS.NAME_MIN_LENGTH || stringLength > GLOBAL_CONSTANTS.NAME_MAX_LENGTH - || !iconPlaceholder) { + || !icon) { $row.addClass('error').attr('data-error-text', I18n.t('libraries.manange_modal_column.status_type.errors.icon_and_name_error')); } else { $row.removeClass('error'); @@ -55,6 +55,7 @@ var RepositoryStatusColumnType = (function() { var iconElement = this; picker.on('emoji', emoji => { $(iconElement).attr('emoji', emoji).html(twemoji.parse(emoji)); + validateForm(); }); if (picker.pickerVisible) { From 05b9a36c45b2ab97bc75af271936657c7eeded4b Mon Sep 17 00:00:00 2001 From: Miha Mencin Date: Wed, 29 Jan 2020 11:48:16 +0100 Subject: [PATCH 13/13] Bump version to 1.18.1 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 84cc52946..ec6d649be 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.0 +1.18.1