redmine_extensions 0.2.9 → 0.2.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d98db28efe7496ec0f3986b69f17855b42525ce5
4
- data.tar.gz: 6fd4ddd1065bd0e1c7d4b47ebf95d766e672259b
3
+ metadata.gz: ee45cc8ecef4a8702670c2992e3599fdb96682dd
4
+ data.tar.gz: ffd40d9a0183a752fc463c8f7be2ae4aec17ddf7
5
5
  SHA512:
6
- metadata.gz: 599834873e59075acc8e742df2a8d8506f92b813c9ec8fcb8c54c9f571284d90777a7653c81b7e460800e23d27dc6624a9eceebf5bb3c5ab059c5ac9764cfb02
7
- data.tar.gz: bbb849daba70d27ccd05b1f9c02d8da245df98e410eda07b3a7a40a9922540253d0f85bef3ca73c9408f9db308d9096e2e65667a8d14b9b7ebb1294e644722be
6
+ metadata.gz: 3561ac257b97d0eb8a69a1cf5b7a7c185e852e0dc40db32f6d192a2e82ebe8336f44e741d2963d18602c37b43bebd343caa90afb804f54a66dad60321fa1cb89
7
+ data.tar.gz: fae10df3d70b5b551fa62bdf4289ff09490eba0cc3aa6423307923e49674e8fa5580e431419408c2ba706681ac783c003293ad3c56323f49f34e6d0254898615
@@ -0,0 +1,11 @@
1
+ <% half_size = (custom_field_values.size / 2.0).ceil %>
2
+ <% 0.upto(half_size - 1).each do |row|
3
+ left_value = custom_field_values[row]
4
+ right_value = custom_field_values[row + half_size] %>
5
+ <tr>
6
+ <th><%= left_value ? h(left_value.custom_field.translated_name) : '' %></th>
7
+ <td><%= left_value ? show_value(left_value, true) : '' %></td>
8
+ <th><%= right_value ? h(right_value.custom_field.translated_name) : '' %></th>
9
+ <td><%= right_value ? show_value(right_value, true) : '' %></td>
10
+ </tr>
11
+ <% end %>
@@ -87,7 +87,29 @@ module RedmineExtensions
87
87
  template 'model.rb.erb', "#{plugin_path}/app/models/#{model_name_underscored}.rb"
88
88
  template 'new.html.erb.erb', "#{plugin_path}/app/views/#{model_name_pluralize_underscored}/new.html.erb"
89
89
  template 'new.js.erb.erb', "#{plugin_path}/app/views/#{model_name_pluralize_underscored}/new.js.erb"
90
- template 'query.rb.erb', "#{plugin_path}/app/models/#{model_name_underscored}_query.rb"
90
+
91
+ if Redmine::Plugin.installed?(:easy_extensions)
92
+ template 'easy_query.rb.erb', "#{plugin_path}/app/models/#{model_name_underscored}_query.rb"
93
+ template 'entity_attribute_helper_patch.rb.erb', "#{plugin_path}/extra/easy_patch/easy_extensions/helpers/entity_attribute_helper_patch.rb"
94
+
95
+ if File.exists?("#{plugin_path}/extra/easy_patch/easy_extensions/helpers/entity_attribute_helper_patch.rb")
96
+
97
+ inject_into_file "#{plugin_path}/extra/easy_patch/easy_extensions/helpers/entity_attribute_helper_patch.rb",
98
+ "\n def format_html_#{model_name_underscored}_attribute(entity_class, attribute, unformatted_value, options={})" +
99
+ "\n value = format_entity_attribute(entity_class, attribute, unformatted_value, options)" +
100
+ "\n case attribute.name" +
101
+ "\n when :name" +
102
+ "\n link_to(value, #{model_name_underscored.singularize}_path(options[:entity].id))" +
103
+ "\n else" +
104
+ "\n h(value)" +
105
+ "\n end" +
106
+ "\n end" +
107
+ "\n", after: "base.class_eval do"
108
+
109
+ end
110
+ else
111
+ template 'query.rb.erb', "#{plugin_path}/app/models/#{model_name_underscored}_query.rb"
112
+ end
91
113
 
92
114
  if File.exists?("#{plugin_path}/config/routes.rb")
93
115
  if project?
@@ -26,6 +26,14 @@
26
26
  </p>
27
27
  <%% end %>
28
28
  <%- end -%>
29
+ <% associations.each do |assoc| %>
30
+ <%- next if assoc[1][:type] == 'has_many' -%>
31
+ <% association_name = assoc[0] %>
32
+ <p>
33
+ <%%= f.label l(:label_<%= association_name %>) %>
34
+ <%%= f.select :<%= association_name %>_id, <%= association_name.camelcase %>.visible.sorted.map{ |<%= association_name %>| [<%= association_name %>.to_s, <%= association_name %>.id]} %>
35
+ </p>
36
+ <% end %>
29
37
  <%- if acts_as_customizable? -%>
30
38
  <%% custom_field_values = <%= model_name_underscored %>.visible_custom_field_values %>
31
39
  <%% custom_field_values.each do |value| %>
@@ -2,12 +2,12 @@ class <%= controller_class %>Controller < ApplicationController
2
2
 
3
3
  menu_item :<%= model_name_pluralize_underscored %>
4
4
 
5
- before_filter :find_<%= model_name_underscored %>, only: [:show, :edit, :update]
6
- before_filter :find_<%= model_name_pluralize_underscored %>, only: [:context_menu, :bulk_edit, :bulk_update, :destroy]
5
+ before_action :authorize_global
6
+ before_action :find_<%= model_name_underscored %>, only: [:show, :edit, :update]
7
+ before_action :find_<%= model_name_pluralize_underscored %>, only: [:context_menu, :bulk_edit, :bulk_update, :destroy]
7
8
  <%- if project? -%>
8
- before_filter :find_project
9
+ before_action :find_project
9
10
  <%- end -%>
10
- before_filter :authorize_global
11
11
 
12
12
  helper :<%= model_name_pluralize_underscored %>
13
13
  helper :custom_fields
@@ -19,7 +19,11 @@ class <%= controller_class %>Controller < ApplicationController
19
19
  accept_api_auth :index, :show, :create, :update, :destroy
20
20
 
21
21
  def index
22
+ <% if Redmine::Plugin.installed?(:easy_extensions) %>
22
23
  index_for_easy_query(<%= model_name %>Query)
24
+ <% else %>
25
+ retrieve_query(<%= model_name %>Query)
26
+ <% end %>
23
27
  end
24
28
 
25
29
  def show
@@ -4,4 +4,8 @@ class <%= model_name %>CustomField < CustomField
4
4
  :label_<%= @model_name_pluralize_underscored %>
5
5
  end
6
6
 
7
+ def form_fields
8
+ [:is_filter, :searchable, :is_required]
9
+ end
10
+
7
11
  end
@@ -0,0 +1,38 @@
1
+ class <%= model_name %>Query < EasyQuery
2
+
3
+ self.queried_class = <%= model_name %>
4
+
5
+ def initialize_available_filters
6
+ <%- db_columns.each do |column_name, column_options| -%>
7
+ <%- if project? && column_name == 'project_id' -%>
8
+ if project.nil?
9
+ add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>, values: all_projects_values
10
+ end
11
+ <%- else -%>
12
+ add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>
13
+ <%- end -%>
14
+ <%- end -%>
15
+ <%- if acts_as_customizable? -%>
16
+ add_custom_fields_filters(<%= model_name %>CustomField)
17
+ <%- end -%>
18
+ end
19
+
20
+ def initialize_available_columns
21
+ return @available_columns if @available_columns
22
+ group = l("label_filter_group_#{self.class.name.underscore}")
23
+
24
+ <%- db_columns.each do |column_name, column_options| -%>
25
+ add_available_column '<%= column_options[:query_column_name] || column_name %>', caption: <%= model_name %>.human_attribute_name(:<%= column_name %>), title: <%= model_name %>.human_attribute_name(:<%= column_name %>), group: group
26
+ <%- end -%>
27
+ <%- if acts_as_customizable? -%>
28
+ @available_columns += <%= model_name %>CustomField.visible.collect { |cf| EasyQueryCustomFieldColumn.new(cf, :group => l(:label_filter_group_custom_fields)) }
29
+ <%- end -%>
30
+
31
+ @available_columns
32
+ end
33
+
34
+ def default_list_columns
35
+ super.presence || <%= db_columns.collect{|column_name, column_options| (column_options[:query_column_name] || column_name).to_s}[0..3].to_s %>.flat_map{|c| [c.to_s, c.to_sym]}
36
+ end
37
+
38
+ end
@@ -0,0 +1,10 @@
1
+ module <%= plugin_name.camelcase %>Patch
2
+ module EntityAttributeHelperPatch
3
+ def self.included(base)
4
+ base.class_eval do
5
+
6
+ end
7
+ end
8
+ end
9
+ end
10
+ EasyExtensions::PatchManager.register_helper_patch 'EntityAttributeHelper', '<%= plugin_name.camelcase %>Patch::EntityAttributeHelperPatch'
@@ -1,9 +1,38 @@
1
+ <% if Redmine::Plugin.installed?(:easy_extensions) %>
1
2
  <%%= render @query %>
2
3
  <%% ### PAGE CUSTOMS ########################################################## %>
3
- <%%= context_menu context_menu_<%= model_name_pluralize_underscored %>_path(:project_id => @project) %>
4
+ <%%= context_menu context_menu_<%= model_name_pluralize_underscored %>_path(project_id: @project) %>
4
5
  <%% content_for :sidebar do %>
5
- <%%= render :partial => '<%= model_name_pluralize_underscored %>/sidebar' %>
6
- <% if Redmine::Plugin.installed?(:easy_extensions) %>
7
- <%%= render :partial => 'sidebar/saved_easyqueries_by_type', :locals => {:query_class => @query.class, :project => @project} %>
8
- <% end %>
9
- <%% end %>
6
+ <%%= render partial: '<%= model_name_pluralize_underscored %>/sidebar' %>
7
+ <%%= render partial: 'sidebar/saved_easyqueries_by_type', locals: {query_class: @query.class, project: @project} %>
8
+ <%% end %>
9
+ <% else %>
10
+ <div class="contextual">
11
+ <%% if User.current.allowed_to?(:add_<%= model_name_pluralize_underscored %>, @project, global: true) %>
12
+ <%%= link_to l(:button_<%= model_name_underscored %>_new), new_<%= model_name_underscored %>_path, class: 'icon icon-add' %>
13
+ <%% end %>
14
+ </div>
15
+ <h2><%%= @query.queried_class.to_s %></h2>
16
+ <div id="query_form_with_buttons" class="hide-when-print">
17
+ <div id="query_form_content">
18
+ <table class="list issues">
19
+ <thead>
20
+ <%% @query.available_columns.each do |column| %>
21
+ <th>
22
+ <%%= column.caption %>
23
+ </th>
24
+ <%% end %>
25
+ </thead>
26
+ <tbody>
27
+ <%% @query.<%= model_name_pluralize_underscored %>.each do |entity| %>
28
+ <tr>
29
+ <%% @query.available_columns.each do |column| %>
30
+ <%%= content_tag('td', column_content(column, entity)) %>
31
+ <%% end %>
32
+ </tr>
33
+ <%% end %>
34
+ </tbody>
35
+ </table>
36
+ </div>
37
+ </div>
38
+ <% end %>
@@ -2,7 +2,7 @@ class <%= model_name %> < ActiveRecord::Base
2
2
  include Redmine::SafeAttributes
3
3
 
4
4
  <%= 'belongs_to :project' if project? %>
5
- <%= 'belongs_to :author, class_name: \'User\'' if author? %>
5
+ <%= 'belongs_to :author, class_name: \'User\'' if author? %>
6
6
 
7
7
  scope :visible, lambda { |*args|
8
8
  where(<%= model_name %>.visible_condition(args.shift || User.current, *args))<%= '.joins(:project)' if project? %>
@@ -11,7 +11,7 @@ class <%= model_name %> < ActiveRecord::Base
11
11
  scope :sorted, lambda { order("#{table_name}.<%= name_column %> ASC") }
12
12
  <% end %>
13
13
 
14
- <% if acts_as_searchable? %>
14
+ <%- if acts_as_searchable? -%>
15
15
  acts_as_searchable columns: [<%= string_columns.collect{|c, _| "\"\#{#{model_name}.table_name}.#{c}\"" }.join(', ') %>],
16
16
  date_column: :created_at
17
17
  <%- end -%>
@@ -45,13 +45,11 @@ class <%= model_name %> < ActiveRecord::Base
45
45
  <%= values[:type] %> :<%= assoc_name %><%= options %>
46
46
  <%- end -%>
47
47
  <%- end -%>
48
-
49
- <%- if safe_columns.any? -%>
50
- safe_attributes <%= safe_columns.collect{|column_name, _| "'#{column_name}'"}.join(', ') %>
51
- <%- end -%>
52
- <%- if acts_as_customizable? -%>
53
- safe_attributes 'custom_field_values', 'custom_fields'
54
- <%- end -%>
48
+ <%- attributes = [] -%>
49
+ <%- attributes += safe_columns.keys if safe_columns.any? -%>
50
+ <%- attributes += ['custom_field_values', 'custom_fields'] if acts_as_customizable? -%>
51
+ <%-attributes += associations.keys.map{ |assoc| "#{assoc}_id" } -%>
52
+ safe_attributes *%w(<%= attributes.join(' ') %>)
55
53
  <%- if project? -%>
56
54
  safe_attributes 'project_id', if: ->(<%= model_name_underscored %>, _user) { <%= model_name_underscored %>.new_record? }
57
55
  <%- end -%>
@@ -1,4 +1,4 @@
1
- class <%= model_name %>Query < EasyQuery
1
+ class <%= model_name %>Query < Query
2
2
 
3
3
  self.queried_class = <%= model_name %>
4
4
 
@@ -6,10 +6,10 @@ class <%= model_name %>Query < EasyQuery
6
6
  <%- db_columns.each do |column_name, column_options| -%>
7
7
  <%- if project? && column_name == 'project_id' -%>
8
8
  if project.nil?
9
- add_available_filter '<%= column_name %>', name: ::<%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>, values: all_projects_values
9
+ add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>, values: all_projects_values
10
10
  end
11
11
  <%- else -%>
12
- add_available_filter '<%= column_name %>', name: ::<%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>
12
+ add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>
13
13
  <%- end -%>
14
14
  <%- end -%>
15
15
 
@@ -20,27 +20,43 @@ class <%= model_name %>Query < EasyQuery
20
20
 
21
21
  def available_columns
22
22
  return @available_columns if @available_columns
23
+ @available_columns = []
23
24
  group = l("label_filter_group_#{self.class.name.underscore}")
24
25
 
25
26
  <%- db_columns.each do |column_name, column_options| -%>
26
- add_available_column '<%= column_options[:query_column_name] || column_name %>', caption: ::<%= model_name %>.human_attribute_name(:<%= column_name %>), title: ::<%= model_name %>.human_attribute_name(:<%= column_name %>), group: group
27
+ @available_columns << QueryColumn.new('<%= column_options[:query_column_name] || column_name %>', caption: <%= model_name %>.human_attribute_name(:<%= column_name %>), title: <%= model_name %>.human_attribute_name(:<%= column_name %>), group: group)
27
28
  <%- end -%>
28
29
  <%- if acts_as_customizable? -%>
29
- <% if Redmine::Plugin.installed?(:easy_extensions) %>
30
- @available_columns += <%= model_name %>CustomField.visible.collect { |cf| EasyQueryCustomFieldColumn.new(cf, :group => l(:label_filter_group_custom_fields)) }
31
- <% else %>
32
30
  @available_columns += <%= model_name %>CustomField.visible.collect { |cf| QueryCustomFieldColumn.new(cf) }
33
31
  <%- end -%>
34
- <%- end -%>
35
32
 
36
33
  @available_columns
37
34
  end
38
35
 
39
- def default_list_columns
36
+ def default_columns_names
40
37
  super.presence || <%= db_columns.collect{|column_name, column_options| (column_options[:query_column_name] || column_name).to_s}[0..3].to_s %>.flat_map{|c| [c.to_s, c.to_sym]}
41
38
  end
42
39
 
43
- def default_columns_names
44
- super.presence || <%= db_columns.collect{|column_name, column_options| (column_options[:query_column_name] || column_name).to_s}[0..3].to_s %>.flat_map{|c| [c.to_s, c.to_sym]}
40
+ def <%= model_name_pluralize_underscored %>(options={})
41
+ order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?)
42
+
43
+ scope = <%= model_name %>.visible.
44
+ where(statement).
45
+ includes(((options[:include] || [])).uniq).
46
+ where(options[:conditions]).
47
+ order(order_option).
48
+ joins(joins_for_order_statement(order_option.join(','))).
49
+ limit(options[:limit]).
50
+ offset(options[:offset])
51
+
52
+ if has_custom_field_column?
53
+ scope = scope.preload(:custom_values)
54
+ end
55
+
56
+ <%= model_name_pluralize_underscored %> = scope.to_a
57
+
58
+ <%= model_name_pluralize_underscored %>
59
+ rescue ::ActiveRecord::StatementInvalid => e
60
+ raise StatementInvalid.new(e.message)
45
61
  end
46
62
  end
@@ -9,10 +9,20 @@
9
9
  <%- else -%>
10
10
  <%% rows.right ::<%= model_name %>.human_attribute_name(:<%= column[0] %>), format_object(@<%= model_name_underscored %>.<%= column[0] %>) %>
11
11
  <%- end -%>
12
+ <%- end -%>
13
+ <% associations.each_with_index do |assoc, idx| %>
14
+ <%- next if assoc[1][:type] == 'has_many' -%>
15
+ <% association_name = assoc[0] %>
16
+ <%- if idx % 2 == 0 -%>
17
+ <%% rows.left l(:label_<%= association_name %>), format_object(@<%= model_name_underscored %>.<%= association_name %>) %>
18
+ <%- else -%>
19
+ <%% rows.right l(:label_<%= association_name %>), format_object(@<%= model_name_underscored %>.<%= association_name %>) %>
20
+ <%- end -%>
12
21
  <%- end -%>
13
22
  <%% end %>
14
23
  <%- if acts_as_customizable? -%>
15
- <%%= render_custom_fields_rows(@<%= model_name_underscored %>) %>
24
+ <hr />
25
+ <%%= render partial: 'redmine_extensions/custom_field_rows', :locals => { :custom_field_values => @<%= model_name_underscored %>.visible_custom_field_values } %>
16
26
  <%- end -%>
17
27
  <%%= call_hook(:view_<%= model_name_pluralize_underscored %>_show_details_bottom, :<%= model_name_underscored %> => @<%= model_name_underscored %>) %>
18
28
  </table>
@@ -2,7 +2,7 @@ Description:
2
2
  The plugin generator creates stubs for new Redmine plugin.
3
3
  Plugin is prepared for use in Redmine and Easy Redmine as well.
4
4
  You can use --customer flag to generate a special plugin if you can make just a few changes to code. Backup this plugin before Redmine or Easy Redmine upgrade and move back for keep you changes.
5
- You can use --path flag to specify parent directory.
5
+ You can use --easy_plugin flag to specify easy plugin build.
6
6
 
7
7
  Example:
8
8
  rails g redmine_extensions:plugin NameOfNewPlugin
@@ -2,18 +2,18 @@ module RedmineExtensions
2
2
  class PluginGenerator < Rails::Generators::NamedBase
3
3
  source_root File.expand_path('../templates', __FILE__)
4
4
 
5
- attr_reader :plugin_path, :plugin_name_underscored, :plugin_pretty_name, :plugin_title
5
+ attr_reader :plugin_path, :plugin_name_underscored, :plugin_pretty_name, :plugin_title, :easy_plugin
6
6
 
7
7
  class_option :customer, type: :boolean, default: false, banner: '', :desc => 'plugin will act as customer modification. It is useful for changing few things and be uptodate with the core.'
8
- class_option :path, type: :string, default: nil, banner: '', :desc => 'relative path to parent directory for plugin.'
8
+ class_option :easy_plugin, type: :boolean, default: false, banner: '', :desc => 'generate easy plugin'
9
9
 
10
10
  def initialize(*args)
11
11
  super
12
-
12
+ @easy_plugin = options[:easy_plugin]
13
13
  @plugin_name_underscored = options[:customer] ? "modification_#{file_name.underscore}" : file_name.underscore
14
14
  @plugin_pretty_name = plugin_name_underscored.titleize
15
15
 
16
- @plugin_path = (options[:path] || "plugins") + "/#{plugin_name_underscored}"
16
+ @plugin_path = (easy_plugin ? "plugins/easyproject/easy_plugins" : "plugins") + "/#{plugin_name_underscored}"
17
17
  @plugin_title = @plugin_name_underscored.camelize
18
18
  end
19
19
 
@@ -45,7 +45,7 @@ module RedmineExtensions
45
45
  template 'gitkeep.erb', "#{plugin_path}/lib/#{plugin_name_underscored}/easy_patch/redmine/others/.gitkeep"
46
46
 
47
47
  template 'after_init.rb.erb', "#{plugin_path}/after_init.rb"
48
- template 'Gemfile.erb', "#{plugin_path}/Gemfile"
48
+ template 'Gemfile.erb', "#{plugin_path}/Gemfile" unless easy_plugin
49
49
  template 'init.rb.erb', "#{plugin_path}/init.rb"
50
50
  template 'javascript.js', "#{plugin_path}/assets/javascripts/#{plugin_name_underscored}.js"
51
51
  template 'stylesheet.css', "#{plugin_path}/assets/stylesheets/#{plugin_name_underscored}.css"
@@ -1 +1 @@
1
- gem 'redmine_extensions' unless Dir.exist?(File.expand_path('../../easyproject', __FILE__))
1
+ gem 'redmine_extensions' unless Dir.exist?(File.expand_path('../../easyproject', __FILE__))
@@ -1,4 +1,5 @@
1
1
  Dir[File.dirname(__FILE__) + '/lib/<%= plugin_name_underscored %>/easy_patch/**/*.rb'].each {|file| require_dependency file }
2
+ Dir[File.dirname(__FILE__) + '/extra/easy_patch/**/*.rb'].each { |file| require_dependency file }
2
3
 
3
4
  # this block is executed once just after Redmine is started
4
5
  # means after all plugins are initialized
@@ -7,9 +7,14 @@ Redmine::Plugin.register :<%= plugin_name_underscored %> do
7
7
 
8
8
  #into easy_settings goes available setting as a symbol key, default value as a value
9
9
  settings easy_settings: { }
10
+ <% if easy_plugin %>
11
+ plugin_in_relative_subdirectory File.join('easyproject', 'easy_plugins')
12
+ <% end %>
10
13
  end
11
14
 
15
+ <% unless easy_plugin %>
12
16
  unless Redmine::Plugin.registered_plugins[:easy_extensions]
13
17
  require_relative 'after_init'
14
18
  end
15
19
 
20
+ <% end %>
@@ -1,3 +1,3 @@
1
1
  module RedmineExtensions
2
- VERSION = '0.2.9'
2
+ VERSION = '0.2.10'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Easy Software Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-21 00:00:00.000000000 Z
11
+ date: 2018-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -181,6 +181,7 @@ files:
181
181
  - app/views/easy_queries/_index.html.erb
182
182
  - app/views/easy_queries/_settings.html.erb
183
183
  - app/views/easy_settings/edit.html.erb
184
+ - app/views/redmine_extensions/_custom_field_rows.html.erb
184
185
  - app/views/redmine_extensions/_development_mode.html.erb
185
186
  - config/locales/cs.yml
186
187
  - config/locales/en.yml
@@ -195,9 +196,11 @@ files:
195
196
  - lib/generators/redmine_extensions/entity/templates/controller.rb.erb
196
197
  - lib/generators/redmine_extensions/entity/templates/controller_spec.rb.erb
197
198
  - lib/generators/redmine_extensions/entity/templates/custom_field.rb.erb
199
+ - lib/generators/redmine_extensions/entity/templates/easy_query.rb.erb
198
200
  - lib/generators/redmine_extensions/entity/templates/edit.html.erb.erb
199
201
  - lib/generators/redmine_extensions/entity/templates/edit.js.erb.erb
200
202
  - lib/generators/redmine_extensions/entity/templates/en.yml.erb
203
+ - lib/generators/redmine_extensions/entity/templates/entity_attribute_helper_patch.rb.erb
201
204
  - lib/generators/redmine_extensions/entity/templates/factories.rb.erb
202
205
  - lib/generators/redmine_extensions/entity/templates/helper.rb.erb
203
206
  - lib/generators/redmine_extensions/entity/templates/hooks.rb.erb
@@ -301,22 +304,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
301
304
  version: '0'
302
305
  requirements: []
303
306
  rubyforge_project:
304
- rubygems_version: 2.6.13
307
+ rubygems_version: 2.6.12
305
308
  signing_key:
306
309
  specification_version: 4
307
310
  summary: Redmine Extensions is set of usefull features for Redmine. Main focus is
308
311
  on development helpers, but many users can find it helpfull
309
312
  test_files:
310
- - spec/rails_helper.rb
311
- - spec/factories/time_entries.rb
313
+ - spec/spec_helper.rb
314
+ - spec/features/autocomplete_spec.rb
315
+ - spec/models/easy_setting_spec.rb
316
+ - spec/presenters/redmine_extensions/easy_setting_presenter_spec.rb
317
+ - spec/support/plugin_generator.rb
312
318
  - spec/factories/easy_settings.rb
313
- - spec/factories/issues.rb
314
319
  - spec/factories/projects.rb
315
320
  - spec/factories/trackers.rb
321
+ - spec/factories/time_entries.rb
316
322
  - spec/factories/easy_queries.rb
317
323
  - spec/factories/users.rb
318
- - spec/presenters/redmine_extensions/easy_setting_presenter_spec.rb
319
- - spec/support/plugin_generator.rb
320
- - spec/spec_helper.rb
321
- - spec/models/easy_setting_spec.rb
322
- - spec/features/autocomplete_spec.rb
324
+ - spec/factories/issues.rb
325
+ - spec/rails_helper.rb