redmineup 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/chart.min.js +13 -0
- data/{vendor → app}/assets/javascripts/select2_helpers.js +1 -1
- data/{vendor → app}/assets/stylesheets/select2.css +1 -1
- data/doc/CHANGELOG +15 -3
- data/lib/redmineup/acts_as_votable/votable.rb +2 -5
- data/lib/redmineup/assets_manager.rb +12 -1
- data/lib/redmineup/helpers/external_assets_helper.rb +1 -1
- data/lib/redmineup/liquid/drops/attachment_drop.rb +8 -0
- data/lib/redmineup/liquid/drops/custom_field_enumeration_drop.rb +11 -0
- data/lib/redmineup/liquid/drops/issues_drop.rb +11 -19
- data/lib/redmineup/liquid/drops/users_drop.rb +2 -3
- data/lib/redmineup/liquid/drops/version_drop.rb +40 -0
- data/lib/redmineup/liquid/filters/additional.rb +31 -0
- data/lib/redmineup/liquid/filters/base.rb +6 -1
- data/lib/redmineup/patches/compatibility/sprite_patch.rb +21 -0
- data/lib/redmineup/patches/compatibility_patch.rb +4 -1
- data/lib/redmineup/version.rb +1 -1
- data/lib/redmineup.rb +17 -1
- data/test/liquid/drops/issues_drop_test.rb +5 -0
- data/test/liquid/filters/additional_filter_test.rb +31 -0
- data/test/models/attachment.rb +5 -0
- data/test/models/issue.rb +5 -0
- data/test/models/journal.rb +6 -0
- data/test/schema.rb +64 -57
- metadata +19 -10
- /data/{vendor → app}/assets/images/money.png +0 -0
- /data/{vendor → app}/assets/images/vcard.png +0 -0
- /data/{vendor/assets/javascripts/Chart.bundle.min.js → app/assets/javascripts/Chart.bundle.min.js.bak} +0 -0
- /data/{vendor → app}/assets/javascripts/select2.js +0 -0
- /data/{vendor → app}/assets/stylesheets/calendars.css +0 -0
- /data/{vendor → app}/assets/stylesheets/money.css +0 -0
@@ -2,7 +2,8 @@ module Redmineup
|
|
2
2
|
class AssetsManager
|
3
3
|
def self.install_assets
|
4
4
|
return unless Gem.loaded_specs[GEM_NAME]
|
5
|
-
|
5
|
+
|
6
|
+
source = File.join(Gem.loaded_specs[GEM_NAME].full_gem_path, 'app', 'assets')
|
6
7
|
destination = File.join(Dir.pwd, 'public', 'plugin_assets', GEM_NAME)
|
7
8
|
return unless File.directory?(source)
|
8
9
|
|
@@ -39,5 +40,15 @@ module Redmineup
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
end
|
43
|
+
|
44
|
+
def self.base_path
|
45
|
+
Gem.loaded_specs[GEM_NAME].full_gem_path
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.assets_paths
|
49
|
+
return [] unless Gem.loaded_specs[GEM_NAME]
|
50
|
+
|
51
|
+
Dir[File.join(base_path, 'app', 'assets', '*')]
|
52
|
+
end
|
42
53
|
end
|
43
54
|
end
|
@@ -35,6 +35,7 @@ module Redmineup
|
|
35
35
|
|
36
36
|
delegate :id,
|
37
37
|
:subject,
|
38
|
+
:description,
|
38
39
|
:visible?,
|
39
40
|
:closed?,
|
40
41
|
:start_date,
|
@@ -71,6 +72,10 @@ module Redmineup
|
|
71
72
|
@assignee ||= UserDrop.new(@issue.assigned_to)
|
72
73
|
end
|
73
74
|
|
75
|
+
def attachments
|
76
|
+
@attachments ||= @issue.attachments.map { |attachment| AttachmentDrop.new(attachment) }
|
77
|
+
end
|
78
|
+
|
74
79
|
def tracker
|
75
80
|
@tracker ||= @issue.tracker && @issue.tracker.name
|
76
81
|
end
|
@@ -103,10 +108,6 @@ module Redmineup
|
|
103
108
|
@project ||= ProjectDrop.new @issue.project if @issue.project
|
104
109
|
end
|
105
110
|
|
106
|
-
def description
|
107
|
-
@description ||= replace_images_urls(@issue.description)
|
108
|
-
end
|
109
|
-
|
110
111
|
def subtasks
|
111
112
|
@subtasks ||= IssuesDrop.new @issue.children
|
112
113
|
end
|
@@ -120,11 +121,11 @@ module Redmineup
|
|
120
121
|
end
|
121
122
|
|
122
123
|
def notes
|
123
|
-
@notes ||= @issue.journals.where.not(notes: [nil, '']).order(:created_on).map(&:notes)
|
124
|
+
@notes ||= @issue.journals.where.not(notes: [nil, '']).order(:created_on).map(&:notes)
|
124
125
|
end
|
125
126
|
|
126
127
|
def journals
|
127
|
-
@journals ||= JournalsDrop.new
|
128
|
+
@journals ||= JournalsDrop.new @issue.journals.where.not(notes: [nil, ''])
|
128
129
|
end
|
129
130
|
|
130
131
|
def tags
|
@@ -158,19 +159,6 @@ module Redmineup
|
|
158
159
|
def custom_field_values
|
159
160
|
@issue.custom_field_values
|
160
161
|
end
|
161
|
-
|
162
|
-
private
|
163
|
-
|
164
|
-
def replace_images_urls(text)
|
165
|
-
text.gsub(/\!.*\!/) do |i_name|
|
166
|
-
i_name = i_name.delete('!')
|
167
|
-
i_name_css = i_name.scan(/^\{.*\}/).first.to_s
|
168
|
-
attachment = @issue.attachments.find_by(filename: i_name.gsub(i_name_css, ''))
|
169
|
-
image = AttachmentDrop.new attachment if attachment
|
170
|
-
attach_url = image.try(:url)
|
171
|
-
attach_url ? "!#{i_name_css}#{attach_url}!" : i_name
|
172
|
-
end
|
173
|
-
end
|
174
162
|
end
|
175
163
|
|
176
164
|
class JournalsDrop < ::Liquid::Drop
|
@@ -212,6 +200,10 @@ module Redmineup
|
|
212
200
|
def issue
|
213
201
|
@issue ||= IssueDrop.new @journal.issue if @journal.issue
|
214
202
|
end
|
203
|
+
|
204
|
+
def attachments
|
205
|
+
@attachments ||= @journal.attachments.map { |attachment| AttachmentDrop.new(attachment) }
|
206
|
+
end
|
215
207
|
end
|
216
208
|
end
|
217
209
|
end
|
@@ -35,7 +35,7 @@ module Redmineup
|
|
35
35
|
end
|
36
36
|
|
37
37
|
class UserDrop < ::Liquid::Drop
|
38
|
-
delegate :id, :name, :firstname, :lastname, :mail, :active?, :admin?, :logged?, :language, :to => :@user, allow_nil: true
|
38
|
+
delegate :id, :name, :firstname, :lastname, :mail, :active?, :admin?, :logged?, :language, :to_s, :to => :@user, allow_nil: true
|
39
39
|
|
40
40
|
def initialize(user)
|
41
41
|
@user = user
|
@@ -61,8 +61,7 @@ module Redmineup
|
|
61
61
|
|
62
62
|
def custom_field_values
|
63
63
|
@user.custom_field_values
|
64
|
-
end
|
65
|
-
|
64
|
+
end
|
66
65
|
end
|
67
66
|
end
|
68
67
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Redmineup
|
2
|
+
module Liquid
|
3
|
+
class VersionDrop < ::Liquid::Drop
|
4
|
+
delegate :id,
|
5
|
+
:name,
|
6
|
+
:description,
|
7
|
+
:effective_date,
|
8
|
+
:due_date,
|
9
|
+
:wiki_page_title,
|
10
|
+
:status,
|
11
|
+
:sharing,
|
12
|
+
:default_project_version,
|
13
|
+
:start_date,
|
14
|
+
:due_date,
|
15
|
+
:estimated_hours,
|
16
|
+
:spent_hours,
|
17
|
+
:closed?,
|
18
|
+
:open?,
|
19
|
+
:completed?,
|
20
|
+
:completed_percent,
|
21
|
+
:closed_percent,
|
22
|
+
:overdue?,
|
23
|
+
:issues_count,
|
24
|
+
:open_issues_count,
|
25
|
+
:closed_issues_count,
|
26
|
+
:visible_fixed_issues,
|
27
|
+
:wiki_page,
|
28
|
+
:to_s_with_project,
|
29
|
+
:shared?,
|
30
|
+
:deletable?,
|
31
|
+
:default_project_version,
|
32
|
+
:to_s,
|
33
|
+
to: :@version
|
34
|
+
|
35
|
+
def initialize(version)
|
36
|
+
@version = version
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'liquid'
|
2
|
+
|
3
|
+
module Redmineup
|
4
|
+
module Liquid
|
5
|
+
module Filters
|
6
|
+
module Additional
|
7
|
+
def parse_inline_attachments(text, obj)
|
8
|
+
attachments = obj.attachments if obj.respond_to?(:attachments)
|
9
|
+
|
10
|
+
if attachments.present?
|
11
|
+
text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m|
|
12
|
+
filename, ext, alt, alttext = $1, $2, $3, $4
|
13
|
+
# search for the picture in attachments
|
14
|
+
if found = Attachment.latest_attach(attachments, CGI.unescape(filename))
|
15
|
+
desc = found.description.to_s.delete('"')
|
16
|
+
alt = " title=\"#{desc}\" alt=\"#{desc}\"" if !desc.blank? && alttext.blank?
|
17
|
+
"src='data:image/#{found.content_type};base64,#{found.to_base64_string}' #{alt}"
|
18
|
+
else
|
19
|
+
m
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
text
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
::Liquid::Template.register_filter(Redmineup::Liquid::Filters::Additional)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -100,7 +100,12 @@ module Redmineup
|
|
100
100
|
def custom_field(input, field_name)
|
101
101
|
if input.respond_to?(:custom_field_values)
|
102
102
|
custom_value = input.custom_field_values.detect { |cfv| cfv.custom_field.name == field_name }
|
103
|
-
|
103
|
+
if custom_value
|
104
|
+
result = custom_value.custom_field.format.formatted_custom_value(nil, custom_value)
|
105
|
+
return result if result.respond_to?(:to_liquid)
|
106
|
+
drop_class = "Redmineup::Liquid::#{result.class.name}Drop"
|
107
|
+
Object.const_defined?(drop_class) ? drop_class.constantize.new(result) : result
|
108
|
+
end
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Redmineup
|
2
|
+
module Patches
|
3
|
+
module Compatibility
|
4
|
+
module SpritePatch
|
5
|
+
def self.included(base)
|
6
|
+
base.send(:include, InstanceMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
module InstanceMethods
|
10
|
+
def sprite_icon(icon_name, label = nil, icon_only: false, size: '18', css_class: nil, sprite: "icons", plugin: nil)
|
11
|
+
label
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
unless ApplicationHelper.included_modules.include?(Redmineup::Patches::Compatibility::SpritePatch)
|
20
|
+
ApplicationHelper.send(:include, Redmineup::Patches::Compatibility::SpritePatch)
|
21
|
+
end
|
@@ -4,4 +4,7 @@ end
|
|
4
4
|
if Redmine::VERSION.to_s < "5"
|
5
5
|
require 'redmineup/patches/compatibility/user_patch'
|
6
6
|
end
|
7
|
-
|
7
|
+
unless ApplicationHelper.method_defined?(:sprite_icon)
|
8
|
+
require 'redmineup/patches/compatibility/sprite_patch'
|
9
|
+
end
|
10
|
+
require 'redmineup/patches/compatibility/routing_mapper_patch'
|
data/lib/redmineup/version.rb
CHANGED
data/lib/redmineup.rb
CHANGED
@@ -27,6 +27,7 @@ require 'redmineup/money_helper'
|
|
27
27
|
require 'redmineup/colors_helper'
|
28
28
|
|
29
29
|
require 'liquid'
|
30
|
+
require 'redmineup/liquid/filters/additional'
|
30
31
|
require 'redmineup/liquid/filters/base'
|
31
32
|
require 'redmineup/liquid/filters/arrays'
|
32
33
|
require 'redmineup/liquid/filters/colors'
|
@@ -37,6 +38,8 @@ require 'redmineup/liquid/drops/users_drop'
|
|
37
38
|
require 'redmineup/liquid/drops/time_entries_drop'
|
38
39
|
require 'redmineup/liquid/drops/attachment_drop'
|
39
40
|
require 'redmineup/liquid/drops/issue_relations_drop'
|
41
|
+
require 'redmineup/liquid/drops/version_drop'
|
42
|
+
require 'redmineup/liquid/drops/custom_field_enumeration_drop'
|
40
43
|
|
41
44
|
require 'redmineup/helpers/external_assets_helper'
|
42
45
|
require 'redmineup/helpers/form_tag_helper'
|
@@ -61,7 +64,20 @@ if defined?(ActiveRecord::Base)
|
|
61
64
|
ActiveRecord::Base.extend(Redmineup::ActsAsVotable::Votable)
|
62
65
|
end
|
63
66
|
|
64
|
-
|
67
|
+
if defined?(Propshaft::Assembly)
|
68
|
+
Propshaft::Assembly.prepend(Module.new do
|
69
|
+
def initialize(config)
|
70
|
+
base_dir = Pathname.new(Redmineup::AssetsManager.base_path)
|
71
|
+
paths = Redmineup::AssetsManager.assets_paths.map { |path| Pathname.new(path)}
|
72
|
+
asset_prefix = "plugin_assets/#{Redmineup::GEM_NAME}"
|
73
|
+
|
74
|
+
config[:redmine_extension_paths] << Redmine::AssetPath.new(base_dir, paths, asset_prefix)
|
75
|
+
super
|
76
|
+
end
|
77
|
+
end)
|
78
|
+
else
|
79
|
+
Redmineup::AssetsManager.install_assets
|
80
|
+
end
|
65
81
|
|
66
82
|
if defined?(ActionView::Base)
|
67
83
|
ActionView::Base.send :include, Redmineup::CalendarsHelper
|
@@ -26,6 +26,11 @@ module Redmineup
|
|
26
26
|
assert_equal @user.name, @liquid_render.render('{{ issue.author.name }}')
|
27
27
|
end
|
28
28
|
|
29
|
+
def test_issue_attachments
|
30
|
+
attachment_author = @issue.attachments.first.author.name
|
31
|
+
assert_equal attachment_author, @liquid_render.render('{% assign attach = issue.attachments | first %}{{ attach.author.name }}')
|
32
|
+
end
|
33
|
+
|
29
34
|
def test_issue_delegated
|
30
35
|
assert_equal [@issue.id, @issue.subject, @issue.description].join('|'),
|
31
36
|
@liquid_render.render('{{ issue.id }}|{{ issue.subject }}|{{ issue.description }}')
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../liquid_helper'
|
2
|
+
include LiquidHelperMethods
|
3
|
+
|
4
|
+
module Redmineup
|
5
|
+
class AdditionalFilterTest < ActiveSupport::TestCase
|
6
|
+
def setup
|
7
|
+
@issue = Issue.first
|
8
|
+
@issue_drop = Liquid::IssueDrop.new(@issue)
|
9
|
+
@strainer = ::Liquid::Context.new.strainer
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_parse_inline_attachments
|
13
|
+
text = '<p>description with image <img src="screenshot.png" /></p>'
|
14
|
+
attachment = mock_attachment
|
15
|
+
attachments = [attachment]
|
16
|
+
@issue_drop.define_singleton_method(:attachments) { attachments }
|
17
|
+
Attachment.stub(:latest_attach, attachment) do
|
18
|
+
assert_equal '<p>description with image <img src="mock_url" title="attach_image" alt="attach_image" loading="lazy" /></p>', @strainer.parse_inline_attachments(text, @issue_drop)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def mock_attachment
|
25
|
+
attachment = Minitest::Mock.new
|
26
|
+
attachment.expect(:url, 'mock_url')
|
27
|
+
attachment.expect(:description, "attach_image")
|
28
|
+
attachment
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/test/models/attachment.rb
CHANGED
data/test/models/issue.rb
CHANGED
@@ -8,6 +8,7 @@ class Issue < ActiveRecord::Base
|
|
8
8
|
|
9
9
|
has_many :relations_from, class_name: 'IssueRelation', foreign_key: 'issue_from_id', dependent: :delete_all
|
10
10
|
has_many :relations_to, class_name: 'IssueRelation', foreign_key: 'issue_to_id', dependent: :delete_all
|
11
|
+
has_many :journals, foreign_key: 'journalized_id'
|
11
12
|
|
12
13
|
up_acts_as_draftable
|
13
14
|
up_acts_as_taggable
|
@@ -18,4 +19,8 @@ class Issue < ActiveRecord::Base
|
|
18
19
|
def visible?
|
19
20
|
true
|
20
21
|
end
|
22
|
+
|
23
|
+
def attachments
|
24
|
+
Attachment.all
|
25
|
+
end
|
21
26
|
end
|
data/test/schema.rb
CHANGED
@@ -25,97 +25,104 @@ ActiveRecord::Schema.define version: 0 do
|
|
25
25
|
t.datetime :updated_at
|
26
26
|
end
|
27
27
|
|
28
|
-
create_table
|
29
|
-
t.
|
28
|
+
create_table :journals, force: true do |t|
|
29
|
+
t.integer :journalized_id, default: 0, null: false
|
30
|
+
t.string :journalized_type, limit: 30, default: "", null: false
|
31
|
+
t.integer :user_id, default: 0, null: false
|
32
|
+
t.text :notes
|
33
|
+
t.datetime :created_on, null: false
|
34
|
+
t.boolean :private_notes, default: false, null: false
|
30
35
|
end
|
31
36
|
|
32
|
-
create_table
|
33
|
-
t.
|
34
|
-
t.column "taggable_id", :integer
|
35
|
-
t.column "taggable_type", :string
|
36
|
-
t.column "created_at", :datetime
|
37
|
-
end
|
38
|
-
|
39
|
-
create_table "users", :force => true do |t|
|
40
|
-
t.column "name", :string
|
41
|
-
t.column "language", :string
|
42
|
-
end
|
43
|
-
|
44
|
-
create_table "issue_relations", :force => true do |t|
|
45
|
-
t.column "issue_from_id", :integer
|
46
|
-
t.column "issue_to_id", :integer
|
47
|
-
t.column "relation_type", :string
|
48
|
-
t.column "delay", :integer
|
37
|
+
create_table :tags, force: true do |t|
|
38
|
+
t.string :name
|
49
39
|
end
|
50
40
|
|
51
|
-
create_table
|
52
|
-
t.integer
|
53
|
-
t.
|
54
|
-
t.
|
55
|
-
t.
|
56
|
-
t.column "cached_tag_list", :string
|
57
|
-
t.column "user_id", :integer
|
58
|
-
t.column "author_id", :integer
|
59
|
-
t.column "views", :integer, :default => 0
|
60
|
-
t.column "total_views", :integer, :default => 0
|
41
|
+
create_table :taggings, force: true do |t|
|
42
|
+
t.integer :tag_id
|
43
|
+
t.integer :taggable_id
|
44
|
+
t.string :taggable_type
|
45
|
+
t.datetime :created_at
|
61
46
|
end
|
62
47
|
|
63
|
-
create_table
|
64
|
-
t.
|
65
|
-
t.
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
t.integer
|
70
|
-
t.
|
71
|
-
|
48
|
+
create_table :users, force: true do |t|
|
49
|
+
t.string :name
|
50
|
+
t.string :language
|
51
|
+
end
|
52
|
+
|
53
|
+
create_table :issue_relations, force: true do |t|
|
54
|
+
t.integer :issue_from_id
|
55
|
+
t.integer :issue_to_id
|
56
|
+
t.string :relation_type
|
57
|
+
t.integer :delay
|
58
|
+
end
|
59
|
+
|
60
|
+
create_table :issues, force: true do |t|
|
61
|
+
t.integer :project_id
|
62
|
+
t.string :subject
|
63
|
+
t.string :description
|
64
|
+
t.boolean :closed
|
65
|
+
t.string :cached_tag_list
|
66
|
+
t.integer :user_id
|
67
|
+
t.integer :author_id
|
68
|
+
t.integer :views, default: 0
|
69
|
+
t.integer :total_views, default: 0
|
70
|
+
end
|
71
|
+
|
72
|
+
create_table :votes, force: true do |t|
|
73
|
+
t.references :votable, polymorphic: true
|
74
|
+
t.references :voter, polymorphic: true
|
75
|
+
t.boolean :vote_flag
|
76
|
+
t.string :vote_scope
|
77
|
+
t.integer :vote_weight
|
78
|
+
t.string :vote_ip
|
72
79
|
t.timestamps
|
73
80
|
end
|
74
81
|
|
75
|
-
create_table
|
76
|
-
t.string
|
77
|
-
t.text
|
78
|
-
t.integer
|
82
|
+
create_table :news, force: true do |t|
|
83
|
+
t.string :title
|
84
|
+
t.text :description
|
85
|
+
t.integer :author_id
|
79
86
|
end
|
80
87
|
|
81
|
-
create_table
|
82
|
-
t.string
|
83
|
-
t.text
|
84
|
-
t.string
|
85
|
-
t.integer
|
88
|
+
create_table :projects, force: true do |t|
|
89
|
+
t.string :name
|
90
|
+
t.text :description
|
91
|
+
t.string :identifier
|
92
|
+
t.integer :status
|
86
93
|
end
|
87
94
|
|
88
|
-
create_table :voters, :
|
95
|
+
create_table :voters, force: true do |t|
|
89
96
|
t.string :name
|
90
97
|
end
|
91
98
|
|
92
|
-
create_table :not_voters, :
|
99
|
+
create_table :not_voters, force: true do |t|
|
93
100
|
t.string :name
|
94
101
|
end
|
95
102
|
|
96
|
-
create_table :votables, :
|
103
|
+
create_table :votables, force: true do |t|
|
97
104
|
t.string :name
|
98
105
|
end
|
99
106
|
|
100
|
-
create_table :votable_voters, :
|
107
|
+
create_table :votable_voters, force: true do |t|
|
101
108
|
t.string :name
|
102
109
|
end
|
103
110
|
|
104
|
-
create_table :sti_votables, :
|
111
|
+
create_table :sti_votables, force: true do |t|
|
105
112
|
t.string :name
|
106
113
|
t.string :type
|
107
114
|
end
|
108
115
|
|
109
|
-
create_table :sti_not_votables, :
|
116
|
+
create_table :sti_not_votables, force: true do |t|
|
110
117
|
t.string :name
|
111
118
|
t.string :type
|
112
119
|
end
|
113
120
|
|
114
|
-
create_table :not_votables, :
|
121
|
+
create_table :not_votables, force: true do |t|
|
115
122
|
t.string :name
|
116
123
|
end
|
117
124
|
|
118
|
-
create_table :votable_caches, :
|
125
|
+
create_table :votable_caches, force: true do |t|
|
119
126
|
t.string :name
|
120
127
|
t.integer :cached_votes_total
|
121
128
|
t.integer :cached_votes_score
|
@@ -134,11 +141,11 @@ ActiveRecord::Schema.define version: 0 do
|
|
134
141
|
t.float :cached_scoped_weighted_average
|
135
142
|
end
|
136
143
|
|
137
|
-
create_table :viewings, :
|
144
|
+
create_table :viewings, force: true do |t|
|
138
145
|
t.column :viewer_id, :integer
|
139
146
|
t.column :viewed_id, :integer
|
140
147
|
t.column :viewed_type, :string
|
141
|
-
t.column :ip, :string, :
|
148
|
+
t.column :ip, :string, limit: '24'
|
142
149
|
t.column :created_at, :datetime
|
143
150
|
end
|
144
151
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmineup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RedmineUP
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -112,6 +112,15 @@ files:
|
|
112
112
|
- Gemfile
|
113
113
|
- README.md
|
114
114
|
- Rakefile
|
115
|
+
- app/assets/images/money.png
|
116
|
+
- app/assets/images/vcard.png
|
117
|
+
- app/assets/javascripts/Chart.bundle.min.js.bak
|
118
|
+
- app/assets/javascripts/chart.min.js
|
119
|
+
- app/assets/javascripts/select2.js
|
120
|
+
- app/assets/javascripts/select2_helpers.js
|
121
|
+
- app/assets/stylesheets/calendars.css
|
122
|
+
- app/assets/stylesheets/money.css
|
123
|
+
- app/assets/stylesheets/select2.css
|
115
124
|
- app/controllers/redmineup_controller.rb
|
116
125
|
- app/views/redmineup/_money.html.erb
|
117
126
|
- app/views/redmineup/settings.html.erb
|
@@ -155,18 +164,22 @@ files:
|
|
155
164
|
- lib/redmineup/helpers/vote_helper.rb
|
156
165
|
- lib/redmineup/hooks/views_layouts_hook.rb
|
157
166
|
- lib/redmineup/liquid/drops/attachment_drop.rb
|
167
|
+
- lib/redmineup/liquid/drops/custom_field_enumeration_drop.rb
|
158
168
|
- lib/redmineup/liquid/drops/issue_relations_drop.rb
|
159
169
|
- lib/redmineup/liquid/drops/issues_drop.rb
|
160
170
|
- lib/redmineup/liquid/drops/news_drop.rb
|
161
171
|
- lib/redmineup/liquid/drops/projects_drop.rb
|
162
172
|
- lib/redmineup/liquid/drops/time_entries_drop.rb
|
163
173
|
- lib/redmineup/liquid/drops/users_drop.rb
|
174
|
+
- lib/redmineup/liquid/drops/version_drop.rb
|
175
|
+
- lib/redmineup/liquid/filters/additional.rb
|
164
176
|
- lib/redmineup/liquid/filters/arrays.rb
|
165
177
|
- lib/redmineup/liquid/filters/base.rb
|
166
178
|
- lib/redmineup/liquid/filters/colors.rb
|
167
179
|
- lib/redmineup/money_helper.rb
|
168
180
|
- lib/redmineup/patches/compatibility/application_controller_patch.rb
|
169
181
|
- lib/redmineup/patches/compatibility/routing_mapper_patch.rb
|
182
|
+
- lib/redmineup/patches/compatibility/sprite_patch.rb
|
170
183
|
- lib/redmineup/patches/compatibility/user_patch.rb
|
171
184
|
- lib/redmineup/patches/compatibility_patch.rb
|
172
185
|
- lib/redmineup/patches/liquid_patch.rb
|
@@ -203,6 +216,7 @@ files:
|
|
203
216
|
- test/liquid/drops/news_drop_test.rb
|
204
217
|
- test/liquid/drops/projects_drop_test.rb
|
205
218
|
- test/liquid/drops/uses_drop_test.rb
|
219
|
+
- test/liquid/filters/additional_filter_test.rb
|
206
220
|
- test/liquid/filters/arrays_filter_test.rb
|
207
221
|
- test/liquid/filters/base_filter_test.rb
|
208
222
|
- test/liquid/filters/colors_filter_test.rb
|
@@ -210,6 +224,7 @@ files:
|
|
210
224
|
- test/models/attachment.rb
|
211
225
|
- test/models/issue.rb
|
212
226
|
- test/models/issue_relation.rb
|
227
|
+
- test/models/journal.rb
|
213
228
|
- test/models/news.rb
|
214
229
|
- test/models/project.rb
|
215
230
|
- test/models/user.rb
|
@@ -219,14 +234,6 @@ files:
|
|
219
234
|
- test/tags_helper_test.rb
|
220
235
|
- test/test_helper.rb
|
221
236
|
- test/vote_helper_test.rb
|
222
|
-
- vendor/assets/images/money.png
|
223
|
-
- vendor/assets/images/vcard.png
|
224
|
-
- vendor/assets/javascripts/Chart.bundle.min.js
|
225
|
-
- vendor/assets/javascripts/select2.js
|
226
|
-
- vendor/assets/javascripts/select2_helpers.js
|
227
|
-
- vendor/assets/stylesheets/calendars.css
|
228
|
-
- vendor/assets/stylesheets/money.css
|
229
|
-
- vendor/assets/stylesheets/select2.css
|
230
237
|
homepage: https://www.redmineup.com
|
231
238
|
licenses:
|
232
239
|
- GPL-2.0
|
@@ -280,6 +287,7 @@ test_files:
|
|
280
287
|
- test/liquid/drops/news_drop_test.rb
|
281
288
|
- test/liquid/drops/projects_drop_test.rb
|
282
289
|
- test/liquid/drops/uses_drop_test.rb
|
290
|
+
- test/liquid/filters/additional_filter_test.rb
|
283
291
|
- test/liquid/filters/arrays_filter_test.rb
|
284
292
|
- test/liquid/filters/base_filter_test.rb
|
285
293
|
- test/liquid/filters/colors_filter_test.rb
|
@@ -287,6 +295,7 @@ test_files:
|
|
287
295
|
- test/models/attachment.rb
|
288
296
|
- test/models/issue.rb
|
289
297
|
- test/models/issue_relation.rb
|
298
|
+
- test/models/journal.rb
|
290
299
|
- test/models/news.rb
|
291
300
|
- test/models/project.rb
|
292
301
|
- test/models/user.rb
|