diff --git a/app/assets/javascripts/sitewide/repository_row_card.js b/app/assets/javascripts/sitewide/repository_row_card.js index d575a8814..18fa9cc9d 100644 --- a/app/assets/javascripts/sitewide/repository_row_card.js +++ b/app/assets/javascripts/sitewide/repository_row_card.js @@ -104,4 +104,8 @@ } } }); + + $(document).on('turbolinks:load', () => { + $('#itemLandingPagelink').trigger('click'); + }); }()); diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 2f28cb65e..113f5e80d 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -25,6 +25,7 @@ class RepositoriesController < ApplicationController before_action :check_create_permissions, only: %i(create_modal create) before_action :check_copy_permissions, only: %i(copy_modal copy) before_action :set_inline_name_editing, only: %i(show) + before_action :load_repository_row, only: %i(show) before_action :set_breadcrumbs_items, only: %i(index show) layout 'fluid' @@ -470,6 +471,14 @@ class RepositoriesController < ApplicationController @repositories = current_team.repositories.archived.where(id: params[:repository_ids]) end + def load_repository_row + @repository_row = nil + @repository_row_landing_page = true if params[:landing_page].present? + return if params[:row_id].blank? + + @repository_row = @repository.repository_rows.find_by(id: params[:row_id]) + end + def set_inline_name_editing return unless can_manage_repository?(@repository) diff --git a/app/javascript/packs/vue/repository_item_error_sidebar.js b/app/javascript/packs/vue/repository_item_error_sidebar.js new file mode 100644 index 000000000..ebe9a4c41 --- /dev/null +++ b/app/javascript/packs/vue/repository_item_error_sidebar.js @@ -0,0 +1,12 @@ +/* global */ + +import PerfectScrollbar from 'vue3-perfect-scrollbar'; +import { createApp } from 'vue/dist/vue.esm-bundler.js'; +import { mountWithTurbolinks } from './helpers/turbolinks.js'; +import RepositoryItemErrorSidebar from '../../vue/repository_item_sidebar/RepositoryItemErrorSidebar.vue'; + +const app = createApp({}); +app.component('RepositoryItemErrorSidebar', RepositoryItemErrorSidebar); +app.use(PerfectScrollbar); +app.config.globalProperties.i18n = window.I18n; +mountWithTurbolinks(app, '#repositoryItemErrorSidebar'); diff --git a/app/javascript/vue/repository_item_sidebar/RepositoryItemErrorSidebar.vue b/app/javascript/vue/repository_item_sidebar/RepositoryItemErrorSidebar.vue new file mode 100644 index 000000000..989b08331 --- /dev/null +++ b/app/javascript/vue/repository_item_sidebar/RepositoryItemErrorSidebar.vue @@ -0,0 +1,51 @@ + + + diff --git a/app/javascript/vue/repository_item_sidebar/RepositoryItemSidebar.vue b/app/javascript/vue/repository_item_sidebar/RepositoryItemSidebar.vue index 4c38848f9..2fc821fed 100644 --- a/app/javascript/vue/repository_item_sidebar/RepositoryItemSidebar.vue +++ b/app/javascript/vue/repository_item_sidebar/RepositoryItemSidebar.vue @@ -22,7 +22,7 @@ -
+
@@ -122,7 +122,7 @@
-
+
@@ -138,7 +138,7 @@ :permissions="permissions" :updatePath="updatePath" :actions="actions" @update="update" /> -
+
@@ -241,7 +241,7 @@
-
+
@@ -292,7 +292,7 @@
-
+
@@ -318,7 +318,7 @@
-
+
+ + <% if @repository_row && @repository_row_landing_page %> + + <% elsif @repository_row_landing_page %> +
+ +
+ <% end %> + <%= render partial: "repositories/repository_table", @@ -84,6 +93,7 @@ <%= javascript_include_tag 'vue_repository_search' %> <%= javascript_include_tag 'repositories/repository_datatable' %> <%= javascript_include_tag "repositories/show" %> +<%= javascript_include_tag "vue_components_repository_item_error_sidebar" %> <%= javascript_include_tag 'inputmask' %> <%= javascript_include_tag 'emoji_button' %> <%= javascript_include_tag 'pdf_js' %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 4ab5b22e4..9b809da8a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2309,6 +2309,8 @@ en: invalid_arguments: "Can't find %{key}" my_module_assigned_snapshot_service: invalid_arguments: "Can't find %{key}" + item_card_errors: + item_not_found: "Inventory item you're looking for doesn't exist." item_card: add_relationship_button_text: "Add" repository_item_relationships_modal: diff --git a/config/webpack/webpack.config.js b/config/webpack/webpack.config.js index 07ac72a33..71e970e2b 100644 --- a/config/webpack/webpack.config.js +++ b/config/webpack/webpack.config.js @@ -39,6 +39,7 @@ const entryList = { vue_navigation_top_menu: './app/javascript/packs/vue/navigation/top_menu.js', vue_navigation_navigator: './app/javascript/packs/vue/navigation/navigator.js', vue_components_repository_item_sidebar: './app/javascript/packs/vue/repository_item_sidebar.js', + vue_components_repository_item_error_sidebar: './app/javascript/packs/vue/repository_item_error_sidebar.js', vue_components_action_toolbar: './app/javascript/packs/vue/action_toolbar.js', vue_components_open_vector_editor: './app/javascript/packs/vue/open_vector_editor.js', vue_navigation_breadcrumbs: './app/javascript/packs/vue/navigation/breadcrumbs.js',