redmine_extensions 0.2.9 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
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