redmineup 1.0.2
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 +7 -0
- data/.gitignore +21 -0
- data/Gemfile +4 -0
- data/README.md +204 -0
- data/Rakefile +11 -0
- data/app/controllers/redmineup_controller.rb +26 -0
- data/app/views/redmine_crm/redmineup_calendar/_calendar.html.erb +34 -0
- data/app/views/redmineup/_money.html.erb +44 -0
- data/app/views/redmineup/settings.html.erb +10 -0
- data/bitbucket-pipelines.yml +50 -0
- data/config/currency_iso.json +2544 -0
- data/config/locales/cs.yml +13 -0
- data/config/locales/de.yml +13 -0
- data/config/locales/en.yml +13 -0
- data/config/locales/es.yml +13 -0
- data/config/locales/ru.yml +13 -0
- data/config/routes.rb +5 -0
- data/doc/CHANGELOG +14 -0
- data/doc/LICENSE.txt +339 -0
- data/lib/redmineup/acts_as_draftable/draft.rb +40 -0
- data/lib/redmineup/acts_as_draftable/up_acts_as_draftable.rb +172 -0
- data/lib/redmineup/acts_as_list/list.rb +282 -0
- data/lib/redmineup/acts_as_priceable/up_acts_as_priceable.rb +33 -0
- data/lib/redmineup/acts_as_taggable/tag.rb +81 -0
- data/lib/redmineup/acts_as_taggable/tag_list.rb +111 -0
- data/lib/redmineup/acts_as_taggable/tagging.rb +16 -0
- data/lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb +357 -0
- data/lib/redmineup/acts_as_viewed/up_acts_as_viewed.rb +274 -0
- data/lib/redmineup/acts_as_votable/up_acts_as_votable.rb +80 -0
- data/lib/redmineup/acts_as_votable/up_acts_as_voter.rb +20 -0
- data/lib/redmineup/acts_as_votable/votable.rb +323 -0
- data/lib/redmineup/acts_as_votable/vote.rb +28 -0
- data/lib/redmineup/acts_as_votable/voter.rb +131 -0
- data/lib/redmineup/assets_manager.rb +43 -0
- data/lib/redmineup/colors_helper.rb +192 -0
- data/lib/redmineup/compatibility/application_controller_patch.rb +33 -0
- data/lib/redmineup/compatibility/routing_mapper_patch.rb +25 -0
- data/lib/redmineup/currency/formatting.rb +224 -0
- data/lib/redmineup/currency/heuristics.rb +151 -0
- data/lib/redmineup/currency/loader.rb +23 -0
- data/lib/redmineup/currency.rb +450 -0
- data/lib/redmineup/engine.rb +4 -0
- data/lib/redmineup/helpers/external_assets_helper.rb +20 -0
- data/lib/redmineup/helpers/form_tag_helper.rb +88 -0
- data/lib/redmineup/helpers/rup_calendar_helper.rb +146 -0
- data/lib/redmineup/helpers/tags_helper.rb +13 -0
- data/lib/redmineup/helpers/vote_helper.rb +35 -0
- data/lib/redmineup/hooks/views_layouts_hook.rb +11 -0
- data/lib/redmineup/liquid/drops/attachment_drop.rb +47 -0
- data/lib/redmineup/liquid/drops/issue_relations_drop.rb +41 -0
- data/lib/redmineup/liquid/drops/issues_drop.rb +217 -0
- data/lib/redmineup/liquid/drops/news_drop.rb +54 -0
- data/lib/redmineup/liquid/drops/projects_drop.rb +86 -0
- data/lib/redmineup/liquid/drops/time_entries_drop.rb +65 -0
- data/lib/redmineup/liquid/drops/users_drop.rb +68 -0
- data/lib/redmineup/liquid/filters/arrays.rb +254 -0
- data/lib/redmineup/liquid/filters/base.rb +249 -0
- data/lib/redmineup/liquid/filters/colors.rb +31 -0
- data/lib/redmineup/money_helper.rb +66 -0
- data/lib/redmineup/patches/liquid_patch.rb +33 -0
- data/lib/redmineup/settings/money.rb +46 -0
- data/lib/redmineup/settings.rb +53 -0
- data/lib/redmineup/version.rb +3 -0
- data/lib/redmineup.rb +108 -0
- data/redmineup.gemspec +29 -0
- data/test/acts_as_draftable/draft_test.rb +29 -0
- data/test/acts_as_draftable/rup_acts_as_draftable_test.rb +178 -0
- data/test/acts_as_taggable/rup_acts_as_taggable_test.rb +350 -0
- data/test/acts_as_taggable/tag_list_test.rb +34 -0
- data/test/acts_as_taggable/tag_test.rb +72 -0
- data/test/acts_as_taggable/tagging_test.rb +15 -0
- data/test/acts_as_viewed/rup_acts_as_viewed_test.rb +47 -0
- data/test/acts_as_votable/rup_acts_as_votable_test.rb +19 -0
- data/test/acts_as_votable/rup_acts_as_voter_test.rb +14 -0
- data/test/acts_as_votable/votable_test.rb +507 -0
- data/test/acts_as_votable/voter_test.rb +296 -0
- data/test/currency_test.rb +292 -0
- data/test/database.yml +17 -0
- data/test/fixtures/attachments.yml +14 -0
- data/test/fixtures/issues.yml +24 -0
- data/test/fixtures/news.yml +8 -0
- data/test/fixtures/projects.yml +10 -0
- data/test/fixtures/taggings.yml +32 -0
- data/test/fixtures/tags.yml +11 -0
- data/test/fixtures/users.yml +9 -0
- data/test/fixtures/votable_caches.yml +2 -0
- data/test/fixtures/votables.yml +4 -0
- data/test/fixtures/voters.yml +6 -0
- data/test/liquid/drops/attachment_drop_test.rb +15 -0
- data/test/liquid/drops/issue_relations_drop_test.rb +24 -0
- data/test/liquid/drops/issues_drop_test.rb +38 -0
- data/test/liquid/drops/news_drop_test.rb +38 -0
- data/test/liquid/drops/projects_drop_test.rb +44 -0
- data/test/liquid/drops/uses_drop_test.rb +36 -0
- data/test/liquid/filters/arrays_filter_test.rb +31 -0
- data/test/liquid/filters/base_filter_test.rb +67 -0
- data/test/liquid/filters/colors_filter_test.rb +33 -0
- data/test/liquid/liquid_helper.rb +34 -0
- data/test/models/attachment.rb +3 -0
- data/test/models/issue.rb +21 -0
- data/test/models/issue_relation.rb +10 -0
- data/test/models/news.rb +3 -0
- data/test/models/project.rb +8 -0
- data/test/models/user.rb +11 -0
- data/test/models/vote_classes.rb +33 -0
- data/test/money_helper_test.rb +12 -0
- data/test/schema.rb +144 -0
- data/test/tags_helper_test.rb +29 -0
- data/test/test_helper.rb +66 -0
- data/test/vote_helper_test.rb +28 -0
- data/vendor/assets/images/money.png +0 -0
- data/vendor/assets/images/vcard.png +0 -0
- data/vendor/assets/javascripts/Chart.bundle.min.js +16 -0
- data/vendor/assets/javascripts/select2.js +2 -0
- data/vendor/assets/javascripts/select2_helpers.js +192 -0
- data/vendor/assets/stylesheets/money.css +96 -0
- data/vendor/assets/stylesheets/select2.css +424 -0
- metadata +295 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f8906ecd18c32f3d77f7ecb9ce342051cf620884442332900bd18b3678847264
|
|
4
|
+
data.tar.gz: ac7a23b98f0a4e612fe255c981d563069c53d4d29448fd1e60fefc8d45244cca
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 9367020f0bb91903c3c64c2e631f4ccf7559331b59373f11b4b6afa0ed98f6496e1441af347ef287720cee9a6461aab3b3138f4e902dad6e5d6e54ac2d9ad29c
|
|
7
|
+
data.tar.gz: 6dc7397b41cd7141de6167777edfc2306dd9d7010aa8813e868df272e648f8f6ed49a129104ff54d469fad074d0762d38468f86b2ac8ebdea38e90f0774f25ae
|
data/.gitignore
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/.bundle/
|
|
2
|
+
/.yardoc
|
|
3
|
+
/Gemfile.lock
|
|
4
|
+
/_yardoc/
|
|
5
|
+
/coverage/
|
|
6
|
+
/pkg/
|
|
7
|
+
/public/
|
|
8
|
+
/test/public/
|
|
9
|
+
/spec/reports/
|
|
10
|
+
/tmp/
|
|
11
|
+
*.bundle
|
|
12
|
+
*.so
|
|
13
|
+
*.o
|
|
14
|
+
*.a
|
|
15
|
+
mkmf.log
|
|
16
|
+
/test/debug.log
|
|
17
|
+
/Guardfile
|
|
18
|
+
/Gemfile.local
|
|
19
|
+
/Gemfile.local.lock
|
|
20
|
+
*.gem
|
|
21
|
+
/.idea/*
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Redmineup
|
|
2
|
+
|
|
3
|
+
This gem is used at RedmineUP as a general place for shared functionality and
|
|
4
|
+
assets. It contains **Chart.js** and **select2** JS libraries, various mixins
|
|
5
|
+
for ActiveRecord models and other things you might find useful.
|
|
6
|
+
|
|
7
|
+
Among mixins there are:
|
|
8
|
+
|
|
9
|
+
* up_acts_as_draftable
|
|
10
|
+
* up_acts_as_taggable
|
|
11
|
+
* up_acts_as_viewable
|
|
12
|
+
* up_acts_as_votable
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
Add it to your plugin's Gemfile:
|
|
18
|
+
```ruby
|
|
19
|
+
gem 'redmineup'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then invoke the following command in your plugin's or Redmine directory:
|
|
23
|
+
```
|
|
24
|
+
$ bundle install
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
And now you can start using it.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
### Drafts
|
|
32
|
+
This module allows saving and restoring drafts for different models. To be
|
|
33
|
+
saved as a draft, an instance does not need to pass the validations. Drafts
|
|
34
|
+
store not only model attributes, but also associations and virtual attributes.
|
|
35
|
+
A draft could be linked to a given user, so every user can manage his/her own
|
|
36
|
+
drafts independent of others. A draft might have a parent instance.
|
|
37
|
+
|
|
38
|
+
First of all, drafts need to be saved somewhere, so let's create a migration:
|
|
39
|
+
```ruby
|
|
40
|
+
class CreateDrafts < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
|
41
|
+
def change
|
|
42
|
+
ActiveRecord::Base.create_drafts_table
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then in the Redmine directory run:
|
|
48
|
+
```
|
|
49
|
+
$ rake redmine:plugins:migrate
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Next, add `up_acts_as_draftable` to a model for which you want to save drafts:
|
|
53
|
+
```ruby
|
|
54
|
+
class Message < ActiveRecord::Base
|
|
55
|
+
up_acts_as_draftable
|
|
56
|
+
end
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
And that's it for the preparation, now you're ready to make use of drafts:
|
|
60
|
+
```ruby
|
|
61
|
+
# You can save message as a draft.
|
|
62
|
+
Message.new(subject: 'foo').save_draft
|
|
63
|
+
|
|
64
|
+
# And later restore message from the draft.
|
|
65
|
+
draft = Message.drafts(nil).last
|
|
66
|
+
message = draft.restore
|
|
67
|
+
puts message.subject
|
|
68
|
+
# => foo
|
|
69
|
+
|
|
70
|
+
# Draft can be overwritten.
|
|
71
|
+
message.content = 'bar'
|
|
72
|
+
puts message.save_draft
|
|
73
|
+
# => true
|
|
74
|
+
|
|
75
|
+
# You can also save draft linked to a particular user.
|
|
76
|
+
Message.new(subject: 'baz').save_draft(user: current_user)
|
|
77
|
+
|
|
78
|
+
# And restore message from some user's draft.
|
|
79
|
+
user_draft = Message.drafts(current_user).last
|
|
80
|
+
user_message = user_draft.restore
|
|
81
|
+
puts user_message.subject
|
|
82
|
+
# => baz
|
|
83
|
+
|
|
84
|
+
# It's also possible to restore a bunch of messages at once.
|
|
85
|
+
messages = Message.drafts(current_user).restore_all
|
|
86
|
+
p messages.map(&:subject)
|
|
87
|
+
# => ["baz"]
|
|
88
|
+
|
|
89
|
+
# When a model instance is saved, corresponding draft is removed.
|
|
90
|
+
puts Message.drafts(current_user).count
|
|
91
|
+
# => 1
|
|
92
|
+
user_message.board_id = Board.first.id
|
|
93
|
+
user_message.save!
|
|
94
|
+
puts Message.drafts(current_user).count
|
|
95
|
+
# => 0
|
|
96
|
+
|
|
97
|
+
# Drafts will be saved only for new (not persisted) or changed instances.
|
|
98
|
+
puts Message.new.save_draft
|
|
99
|
+
# => true
|
|
100
|
+
persisted = Message.last
|
|
101
|
+
puts persisted.save_draft
|
|
102
|
+
# => false
|
|
103
|
+
persisted.subject = 'other subject'
|
|
104
|
+
puts persisted.save_draft
|
|
105
|
+
# => true
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Tags
|
|
109
|
+
This module makes it possible to tag objects.
|
|
110
|
+
|
|
111
|
+
First, create a migration:
|
|
112
|
+
```ruby
|
|
113
|
+
class CreateTags < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
|
114
|
+
def change
|
|
115
|
+
ActiveRecord::Base.create_taggable_table
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Then in the Redmine directory run:
|
|
121
|
+
```
|
|
122
|
+
$ rake redmine:plugins:migrate
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Next, add `up_acts_as_taggable` to a model for which you want to provide tags:
|
|
126
|
+
```ruby
|
|
127
|
+
class Contact < ActiveRecord::Base
|
|
128
|
+
up_acts_as_taggable
|
|
129
|
+
end
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
TODO: Add examples of usage.
|
|
133
|
+
|
|
134
|
+
### Viewings
|
|
135
|
+
This module allows you to count views for some ActiveRecord model instances.
|
|
136
|
+
|
|
137
|
+
To count views you'll need to create a migration:
|
|
138
|
+
```ruby
|
|
139
|
+
class CreateViewings < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
|
140
|
+
def change
|
|
141
|
+
ActiveRecord::Base.create_viewings_table
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
To apply it, run the following in the Redmine directory:
|
|
147
|
+
```
|
|
148
|
+
$ rake redmine:plugins:migrate
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Then add `up_acts_as_viewed` to a model for which you want to count views.
|
|
152
|
+
```ruby
|
|
153
|
+
class Question < ActiveRecord::Base
|
|
154
|
+
up_acts_as_viewed
|
|
155
|
+
end
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
TODO: Provide some usage examples.
|
|
159
|
+
|
|
160
|
+
### Votes
|
|
161
|
+
With this module you can make your models votable and allow users to vote.
|
|
162
|
+
|
|
163
|
+
As always, create a migration first:
|
|
164
|
+
```ruby
|
|
165
|
+
class CreateVotes < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
|
166
|
+
def change
|
|
167
|
+
ActiveRecord::Base.create_votable_table
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Then apply it by running the following command in the Redmine directory:
|
|
173
|
+
```
|
|
174
|
+
$ rake redmine:plugins:migrate
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
To make a model votable, add `up_acts_as_votable` to it:
|
|
178
|
+
```ruby
|
|
179
|
+
class Question < ActiveRecord::Base
|
|
180
|
+
up_acts_as_votable
|
|
181
|
+
end
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
TODO: Write about `up_acts_as_voter` and add usage examples.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
## Development
|
|
188
|
+
|
|
189
|
+
If you're planning to extend this gem, you will need to install development
|
|
190
|
+
dependencies. To do this, execute the following command in the project's
|
|
191
|
+
directory:
|
|
192
|
+
```
|
|
193
|
+
$ bundle install
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
After that you'll be able to run tests:
|
|
197
|
+
```
|
|
198
|
+
$ bundle exec rake test
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
SQLite in-memory database will be used by default, which is the fastest way to run tests. To run them using different database adapters, set `DB` environment variable to one of the available values — `mysql`, `postgresql`, `sqlite`. For example, to use PostgreSQL, invoke tests like so:
|
|
202
|
+
```
|
|
203
|
+
$ bundle exec rake test DB=postgresql
|
|
204
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class RedmineupController < ApplicationController
|
|
2
|
+
layout 'admin'
|
|
3
|
+
|
|
4
|
+
before_action :require_admin
|
|
5
|
+
require_sudo_mode :settings if respond_to?(:require_sudo_mode)
|
|
6
|
+
|
|
7
|
+
def settings
|
|
8
|
+
@section = Redmineup::Settings::SECTIONS[params[:id]]
|
|
9
|
+
return render_404 unless @section
|
|
10
|
+
|
|
11
|
+
if request.post?
|
|
12
|
+
setting =
|
|
13
|
+
if params[:settings].present?
|
|
14
|
+
params[:settings].respond_to?(:to_unsafe_hash) ? params[:settings].to_unsafe_hash : params[:settings]
|
|
15
|
+
else
|
|
16
|
+
{}
|
|
17
|
+
end
|
|
18
|
+
Redmineup::Settings.apply = setting
|
|
19
|
+
flash[:notice] = l(:notice_successful_update)
|
|
20
|
+
redirect_to redmineup_settings_path(@section[:id])
|
|
21
|
+
else
|
|
22
|
+
@settings = Redmineup::Settings.values
|
|
23
|
+
end
|
|
24
|
+
@section_tabs = Redmineup::Settings::SECTIONS.map { |_n, s| { name: s[:id], partial: s[:partial], label: s[:label] } }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<ul class="cal">
|
|
2
|
+
<li scope="col" title="<%= l(:label_week) %>" class="calhead week-number"></li>
|
|
3
|
+
<% 7.times do |i| %>
|
|
4
|
+
<li scope="col" class="calhead"><%= day_name((calendar.first_wday + i) % 7) %></li>
|
|
5
|
+
<% end %>
|
|
6
|
+
<% calendar.format_month.each_slice(7) do |week| %>
|
|
7
|
+
<li class='week-number'>
|
|
8
|
+
<span class="label-week"><%= l(:label_week) %></span> <%= calendar.week_number week.first %>
|
|
9
|
+
</li>
|
|
10
|
+
<% week.each do |day| %>
|
|
11
|
+
<li class="<%= calendar.day_css_classes day %> calbody">
|
|
12
|
+
<p class="day-num"><%= day.day %>
|
|
13
|
+
<span class="abbr-day">(<%= abbr_day_name(day.cwday) %>)</span>
|
|
14
|
+
</p>
|
|
15
|
+
<% calendar.events_on(day).each do |i| %>
|
|
16
|
+
<% if i.is_a? Issue %>
|
|
17
|
+
<%= tag.div class: [ i.css_classes, 'tooltip hascontextmenu', starting: day == i.start_date, ending: day == i.due_date] do %>
|
|
18
|
+
<%= "#{i.project} -" unless @project && @project == i.project %>
|
|
19
|
+
<%= link_to_issue i, :truncate => 30 %>
|
|
20
|
+
<span class="tip"><%= render_issue_tooltip i %></span>
|
|
21
|
+
<%= check_box_tag 'ids[]', i.id, false, :style => 'display:none;', :id => nil %>
|
|
22
|
+
<% end %>
|
|
23
|
+
<% else %>
|
|
24
|
+
<span class="icon icon-package">
|
|
25
|
+
<%= "#{i.project} -" unless @project && @project == i.project %>
|
|
26
|
+
<%= link_to_version i %>
|
|
27
|
+
</span>
|
|
28
|
+
<% end %>
|
|
29
|
+
<% end %>
|
|
30
|
+
</li>
|
|
31
|
+
<% end %>
|
|
32
|
+
<% end %>
|
|
33
|
+
</ul>
|
|
34
|
+
<%= context_menu %>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<p>
|
|
2
|
+
<label for="cb_settings_disable_taxes"><%= l(:label_redmineup_disable_taxes) %></label>
|
|
3
|
+
<%= hidden_field_tag 'settings[disable_taxes]', '0' %>
|
|
4
|
+
<%= check_box_tag 'settings[disable_taxes]', 1, Redmineup::Settings::Money.disable_taxes?, id: 'cb_settings_disable_taxes' %>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<span id="tax_data">
|
|
8
|
+
<p>
|
|
9
|
+
<label><%= l(:label_redmineup_default_tax) %></label>
|
|
10
|
+
<%= text_field_tag 'settings[default_tax]', Redmineup::Settings::Money.default_tax, size: 6, maxlength: 5 %> %
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p>
|
|
14
|
+
<label><%= l(:label_redmineup_tax_type) %></label>
|
|
15
|
+
<%= select_tag 'settings[tax_type]', options_for_select([[l(:label_redmineup_tax_type_exclusive), Redmineup::Settings::Money::TAX_TYPE_EXCLUSIVE],
|
|
16
|
+
[l(:label_redmineup_tax_type_inclusive), Redmineup::Settings::Money::TAX_TYPE_INCLUSIVE]],
|
|
17
|
+
@settings['tax_type']) %>
|
|
18
|
+
</p>
|
|
19
|
+
</span>
|
|
20
|
+
|
|
21
|
+
<p>
|
|
22
|
+
<label><%= l(:label_redmineup_default_currency) %></label>
|
|
23
|
+
<%= select_tag 'settings[default_currency]', options_for_select(all_currencies.insert(0, ['', '']), Redmineup::Settings::Money.default_currency) %>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<p>
|
|
27
|
+
<label><%= l(:label_redmineup_major_currencies) %></label>
|
|
28
|
+
<%= text_field_tag 'settings[major_currencies]', Redmineup::Settings::Money.major_currencies.join(', '), size: 40 %>
|
|
29
|
+
<br>
|
|
30
|
+
<em class="info"><%= l(:text_comma_separated) %></em>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
<p>
|
|
34
|
+
<label><%= l(:label_redmineup_thousands_delimiter) %></label>
|
|
35
|
+
<%= select_tag 'settings[thousands_delimiter]', options_for_select([["9 999", " "],
|
|
36
|
+
["9,999", ","],
|
|
37
|
+
["9.999", "."]], Redmineup::Settings::Money.thousands_delimiter) %>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
<p>
|
|
41
|
+
<label><%= l(:label_redmineup_decimal_separator) %></label>
|
|
42
|
+
<%= select_tag 'settings[decimal_separator]', options_for_select([["0.00", "."],
|
|
43
|
+
["0,00", ","]], Redmineup::Settings::Money.decimal_separator) %>
|
|
44
|
+
</p>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<%= title l(:label_redmineup_settings) %>
|
|
2
|
+
|
|
3
|
+
<div id="settings">
|
|
4
|
+
<%= form_tag({ action: 'settings', id: @section[:id] }) do %>
|
|
5
|
+
<div class="box tabular settings">
|
|
6
|
+
<%= render partial: 'money' %>
|
|
7
|
+
</div>
|
|
8
|
+
<%= submit_tag l(:button_apply) %>
|
|
9
|
+
<% end %>
|
|
10
|
+
</div>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# This is a sample build configuration for Ruby.
|
|
2
|
+
# Check our guides at https://confluence.atlassian.com/x/8r-5Mw for more examples.
|
|
3
|
+
# Only use spaces to indent your .yml configuration.
|
|
4
|
+
# -----
|
|
5
|
+
# You can specify a custom docker image from Docker Hub as your build environment.
|
|
6
|
+
|
|
7
|
+
pipelines:
|
|
8
|
+
default:
|
|
9
|
+
- parallel:
|
|
10
|
+
- step:
|
|
11
|
+
name: 2.4.1 ruby
|
|
12
|
+
image: ruby:2.4.1
|
|
13
|
+
script:
|
|
14
|
+
- sed -i "s/'sqlite3'/'sqlite3', '~> 1.3.6'/g" redmineup.gemspec
|
|
15
|
+
- sed -i "s/'mysql2'/'mysql2', '~> 0.4.0'/g" redmineup.gemspec
|
|
16
|
+
- sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'loofah', '~>2.19.1'/g" redmineup.gemspec
|
|
17
|
+
- bundle install
|
|
18
|
+
- bundle exec rake test DB=sqlite
|
|
19
|
+
- bundle exec rake test DB=postgresql
|
|
20
|
+
- bundle exec rake test DB=mysql
|
|
21
|
+
services:
|
|
22
|
+
- mysql
|
|
23
|
+
- postgres
|
|
24
|
+
- step:
|
|
25
|
+
name: 3.2.2 ruby
|
|
26
|
+
image: ruby:3.2.2
|
|
27
|
+
script:
|
|
28
|
+
- sed -i "s/'sqlite3'/'sqlite3', '~> 1.4.4'/g" redmineup.gemspec
|
|
29
|
+
- sed -i "s/'mysql2'/'mysql2', '~> 0.5.0'/g" redmineup.gemspec
|
|
30
|
+
- sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'loofah', '~>2.19.1'/g" redmineup.gemspec
|
|
31
|
+
- bundle install
|
|
32
|
+
- bundle exec rake test DB=sqlite
|
|
33
|
+
- bundle exec rake test DB=postgresql
|
|
34
|
+
- bundle exec rake test DB=mysql
|
|
35
|
+
services:
|
|
36
|
+
- mysql
|
|
37
|
+
- postgres
|
|
38
|
+
|
|
39
|
+
definitions:
|
|
40
|
+
services:
|
|
41
|
+
mysql:
|
|
42
|
+
image: mysql:5.7
|
|
43
|
+
environment:
|
|
44
|
+
MYSQL_DATABASE: redmineup_test
|
|
45
|
+
MYSQL_ROOT_PASSWORD: password
|
|
46
|
+
postgres:
|
|
47
|
+
image: postgres
|
|
48
|
+
environment:
|
|
49
|
+
POSTGRES_DB: redmineup_test
|
|
50
|
+
POSTGRES_PASSWORD: password
|