diff --git a/app/assets/javascripts/app/views/package.jst.eco b/app/assets/javascripts/app/views/package.jst.eco index 2200a0632656..8f59206cfdc2 100644 --- a/app/assets/javascripts/app/views/package.jst.eco +++ b/app/assets/javascripts/app/views/package.jst.eco @@ -58,7 +58,7 @@ <%= item.name %> <%= item.version %> - <%= item.vendor %> + <% if item.url: %><% end %><%= item.vendor %><% if item.url: %><% end %> <%- @T(item.state) %> <% for action in item.action: %><%- @T(action) %>
<% end %> diff --git a/app/models/package.rb b/app/models/package.rb index 783156d44e4f..d8963c7dad35 100644 --- a/app/models/package.rb +++ b/app/models/package.rb @@ -237,6 +237,7 @@ def self.install(data) name: package['name'], version: package['version'], vendor: package['vendor'], + url: package['url'], state: 'uninstalled', created_by_id: 1, updated_by_id: 1, diff --git a/db/migrate/20120101000001_create_base.rb b/db/migrate/20120101000001_create_base.rb index dc415db0a44d..b9254e8281e1 100644 --- a/db/migrate/20120101000001_create_base.rb +++ b/db/migrate/20120101000001_create_base.rb @@ -296,6 +296,7 @@ def up t.string :version, limit: 50, null: false t.string :vendor, limit: 150, null: false t.string :state, limit: 50, null: false + t.string :url, limit: 512, null: true t.integer :updated_by_id, null: false t.integer :created_by_id, null: false t.timestamps limit: 3, null: false diff --git a/db/migrate/20230825101042_show_package_url.rb b/db/migrate/20230825101042_show_package_url.rb new file mode 100644 index 000000000000..6d7eb500992d --- /dev/null +++ b/db/migrate/20230825101042_show_package_url.rb @@ -0,0 +1,19 @@ +# Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/ + +class ShowPackageUrl < ActiveRecord::Migration[6.1] + def change + # return if it's a new setup + return if !Setting.exists?(name: 'system_init_done') + + add_column :packages, :url, :string, limit: 512 + Package.reset_column_information + + Package.find_each do |package| + json_file = Package._get_bin(package.name, package.version) + data = JSON.parse(json_file) + next if data['url'].blank? + + package.update!(url: data['url']) + end + end +end diff --git a/spec/models/package_spec.rb b/spec/models/package_spec.rb index f881c0a48d66..c2362a19a1c5 100644 --- a/spec/models/package_spec.rb +++ b/spec/models/package_spec.rb @@ -279,4 +279,11 @@ def expect_uninstall_package expect_uninstall_package end end + + describe 'Vendor url in installed package is the zammad instance url #4753' do + it 'does have a url for the package' do + described_class.install(string: package_zpm_json) + expect(described_class.last.url).to eq('https://zammad.org/') + end + end end