Browse Source

Fixes #4753 - Vendor url in installed package is the zammad instance url.

Co-authored-by: Florian Liebe <fl@zammad.com>
Rolf Schmidt 1 year ago
parent
commit
82846102b1

+ 1 - 1
app/assets/javascripts/app/views/package.jst.eco

@@ -58,7 +58,7 @@
       <tr data-id="<%= item.id %>">
         <td><%= item.name %></td>
         <td><%= item.version %></td>
-        <td><a href="<%- item.url %>" target="_blank"><%= item.vendor %></a></td>
+        <td><% if item.url: %><a href="<%= item.url %>" target="_blank"><% end %><%= item.vendor %><% if item.url: %></a><% end %></td>
         <td><%- @T(item.state) %></td>
         <td><% for action in item.action: %><a href="#" class="package-action btn btn--action<%= ' btn--danger' if action == 'uninstall' %>" data-type="<%= action %>"><%- @T(action) %></a><br/><% end %></td>
       </tr>

+ 1 - 0
app/models/package.rb

@@ -237,6 +237,7 @@ subsequently in a separate step.
       name:          package['name'],
       version:       package['version'],
       vendor:        package['vendor'],
+      url:           package['url'],
       state:         'uninstalled',
       created_by_id: 1,
       updated_by_id: 1,

+ 1 - 0
db/migrate/20120101000001_create_base.rb

@@ -296,6 +296,7 @@ class CreateBase < ActiveRecord::Migration[4.2]
       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

+ 19 - 0
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

+ 7 - 0
spec/models/package_spec.rb

@@ -279,4 +279,11 @@ RSpec.describe Package, type: :model do
       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