redmine_extensions 0.6.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -32
- data/Rakefile +0 -8
- data/app/assets/javascripts/redmine_extensions/blocking.js +0 -3
- data/app/assets/javascripts/redmine_extensions/blocking_namespace.js +1 -2
- data/app/assets/javascripts/redmine_extensions/redmine_extensions.js +1 -33
- data/config/routes.rb +0 -7
- data/lib/redmine_extensions/easy_settings.rb +5 -5
- data/lib/redmine_extensions/engine.rb +12 -32
- data/lib/redmine_extensions/hooks.rb +6 -35
- data/lib/redmine_extensions/version.rb +1 -1
- data/lib/redmine_extensions.rb +5 -2
- data/spec/spec_helper.rb +10 -2
- metadata +3 -76
- data/app/assets/javascripts/redmine_extensions/blocking_render.js +0 -137
- data/app/assets/javascripts/redmine_extensions/blocking_schedule.js +0 -280
- data/app/assets/javascripts/redmine_extensions/event_bus.js +0 -61
- data/app/assets/stylesheets/redmine_extensions/application.css +0 -15
- data/lib/generators/redmine_extensions/entity/USAGE +0 -11
- data/lib/generators/redmine_extensions/entity/entity_generator.rb +0 -418
- data/lib/generators/redmine_extensions/entity/templates/_form.html.erb.erb +0 -51
- data/lib/generators/redmine_extensions/entity/templates/_list.html.erb.erb +0 -70
- data/lib/generators/redmine_extensions/entity/templates/_sidebar.html.erb.erb +0 -9
- data/lib/generators/redmine_extensions/entity/templates/app/models/%model_name_underscored%_query.rb.tt +0 -42
- data/lib/generators/redmine_extensions/entity/templates/app/views/%model_name_pluralize_underscored%/_%model_name_underscored%.api.rsb.tt +0 -18
- data/lib/generators/redmine_extensions/entity/templates/app/views/%model_name_pluralize_underscored%/_form.html.erb.tt +0 -62
- data/lib/generators/redmine_extensions/entity/templates/app/views/%model_name_pluralize_underscored%/edit.html.erb.tt +0 -8
- data/lib/generators/redmine_extensions/entity/templates/app/views/%model_name_pluralize_underscored%/new.html.erb.tt +0 -8
- data/lib/generators/redmine_extensions/entity/templates/context_menu.html.erb.erb +0 -20
- data/lib/generators/redmine_extensions/entity/templates/controller.rb.erb +0 -208
- data/lib/generators/redmine_extensions/entity/templates/custom_field.rb.erb +0 -11
- data/lib/generators/redmine_extensions/entity/templates/easy_query.rb.erb +0 -37
- data/lib/generators/redmine_extensions/entity/templates/edit.html.erb.erb +0 -19
- data/lib/generators/redmine_extensions/entity/templates/edit.js.erb.erb +0 -18
- data/lib/generators/redmine_extensions/entity/templates/en.yml.erb +0 -16
- data/lib/generators/redmine_extensions/entity/templates/entity_attribute_helper_patch.rb.erb +0 -10
- data/lib/generators/redmine_extensions/entity/templates/helper.rb.erb +0 -3
- data/lib/generators/redmine_extensions/entity/templates/hooks.rb.erb +0 -5
- data/lib/generators/redmine_extensions/entity/templates/index.api.rsb.erb +0 -3
- data/lib/generators/redmine_extensions/entity/templates/index.html.erb.erb +0 -30
- data/lib/generators/redmine_extensions/entity/templates/index.js.erb.erb +0 -12
- data/lib/generators/redmine_extensions/entity/templates/mail_added.html.erb.erb +0 -1
- data/lib/generators/redmine_extensions/entity/templates/mail_added.text.erb.erb +0 -2
- data/lib/generators/redmine_extensions/entity/templates/mail_updated.html.erb.erb +0 -1
- data/lib/generators/redmine_extensions/entity/templates/mail_updated.text.erb.erb +0 -2
- data/lib/generators/redmine_extensions/entity/templates/mailer.rb.erb +0 -41
- data/lib/generators/redmine_extensions/entity/templates/migration.rb.erb +0 -16
- data/lib/generators/redmine_extensions/entity/templates/model.rb.erb +0 -143
- data/lib/generators/redmine_extensions/entity/templates/new.html.erb.erb +0 -19
- data/lib/generators/redmine_extensions/entity/templates/new.js.erb.erb +0 -18
- data/lib/generators/redmine_extensions/entity/templates/query.rb.erb +0 -67
- data/lib/generators/redmine_extensions/entity/templates/routes.rb.erb +0 -15
- data/lib/generators/redmine_extensions/entity/templates/show.api.rsb.erb +0 -1
- data/lib/generators/redmine_extensions/entity/templates/show.html.erb.erb +0 -50
- data/lib/generators/redmine_extensions/entity/templates/show.js.erb.erb +0 -12
- data/lib/generators/redmine_extensions/entity/templates/spec/controllers/%model_name_underscored%_controller_spec.rb.tt +0 -94
- data/lib/generators/redmine_extensions/entity/templates/spec/factories.rb.erb +0 -11
- data/lib/generators/redmine_extensions/entity/templates/spec/requests/%model_name_underscored%_spec.rb.tt +0 -19
- data/lib/generators/redmine_extensions/plugin/USAGE +0 -13
- data/lib/generators/redmine_extensions/plugin/plugin_generator.rb +0 -74
- data/lib/generators/redmine_extensions/plugin/templates/Gemfile.erb +0 -1
- data/lib/generators/redmine_extensions/plugin/templates/after_init.rb.erb +0 -23
- data/lib/generators/redmine_extensions/plugin/templates/en.yml.erb +0 -3
- data/lib/generators/redmine_extensions/plugin/templates/gitkeep.erb +0 -0
- data/lib/generators/redmine_extensions/plugin/templates/hooks.rb.erb +0 -5
- data/lib/generators/redmine_extensions/plugin/templates/init.rb.erb +0 -20
- data/lib/generators/redmine_extensions/plugin/templates/internals.rb.erb +0 -4
- data/lib/generators/redmine_extensions/plugin/templates/issue_patch.example.erb +0 -30
- data/lib/generators/redmine_extensions/plugin/templates/issues_controller_patch.example.erb +0 -30
- data/lib/generators/redmine_extensions/plugin/templates/issues_helper_patch.example.erb +0 -30
- data/lib/generators/redmine_extensions/plugin/templates/javascript.js +0 -1
- data/lib/generators/redmine_extensions/plugin/templates/routes.rb.erb +0 -0
- data/lib/generators/redmine_extensions/plugin/templates/stylesheet.css +0 -3
- data/lib/redmine_extensions/core_ext/date_range.rb +0 -152
- data/lib/redmine_extensions/core_ext/object.rb +0 -19
- data/lib/redmine_extensions/core_ext/string.rb +0 -5
- data/lib/redmine_extensions/core_ext.rb +0 -3
- data/lib/redmine_extensions/deprecator.rb +0 -11
- data/lib/redmine_extensions/migration.rb +0 -9
- data/lib/redmine_extensions/patch_manager.rb +0 -440
- data/lib/redmine_extensions/rails_patches/route_set_generator_patch.rb +0 -10
- data/lib/redmine_extensions/redmine_patches/controllers/application_controller_patch.rb +0 -65
- data/lib/redmine_extensions/redmine_patches/models/custom_field_patch.rb +0 -11
- data/lib/redmine_extensions/redmine_patches/models/project_patch.rb +0 -10
- data/lib/tasks/redmine_extensions_tasks.rake +0 -4
- data/spec/init_rails.rb +0 -13
@@ -1,62 +0,0 @@
|
|
1
|
-
<%%= labelled_form_for([@project, @<%= model_name_underscored %>], html: { multipart: <%= acts_as_attachable? %>, id: '<%= model_name_underscored %>_form', class: 'tabular', remote: request.xhr? }) do |f| %>
|
2
|
-
<%%= error_messages_for @<%= model_name_underscored %> %>
|
3
|
-
|
4
|
-
<div class="box">
|
5
|
-
<%- if project? -%>
|
6
|
-
<%% if <%= model_name_underscored %>.safe_attribute?('project_id') && !@project %>
|
7
|
-
<p>
|
8
|
-
<%%= f.label :project_id, ::<%= model_name %>.human_attribute_name(:project_id) %>
|
9
|
-
<%%= f.select :project_id, Project.allowed_to(:manage_<%= model_name_pluralize_underscored %>).collect{|x| [x.name, x.id]}, include_blank: true %>
|
10
|
-
</p>
|
11
|
-
<%% end %>
|
12
|
-
<%- end -%>
|
13
|
-
<%- safe_columns.each do |column_name, column_options| -%>
|
14
|
-
<%% if <%= model_name_underscored %>.safe_attribute?('<%= column_name %>') %>
|
15
|
-
<p>
|
16
|
-
<%%= f.label :<%= column_name %>, ::<%= model_name %>.human_attribute_name(:<%= column_name %>) %>
|
17
|
-
<%- if column_options[:query_type] == 'string' || column_options[:query_type] == 'integer' -%>
|
18
|
-
<%%= f.text_field :<%= column_name %> %>
|
19
|
-
<%- elsif column_options[:query_type] == 'list' || column_options[:query_type] == 'list_optional' -%>
|
20
|
-
<%%= f.select :<%= column_name %>, <%= column_options[:class] %>.all.collect{|x| [x.<%= column_options[:list_class_name] %>, x.id]}.sort, include_blank: true %>
|
21
|
-
<%- elsif column_options[:query_type] == 'text' -%>
|
22
|
-
<%%= f.text_area :<%= column_name %>, :cols => 60, :rows => (<%= model_name_underscored %>.<%= column_name %>.blank? ? 10 : [[10, <%= model_name_underscored %>.<%= column_name %>.length / 50].max, 100].min), :accesskey => accesskey(:edit), :class => 'wiki-edit' %>
|
23
|
-
<%%= wikitoolbar_for '<%= model_name_underscored %>_<%= column_name %>' %>
|
24
|
-
<%- elsif column_options[:query_type] == 'boolean' -%>
|
25
|
-
<%%= f.radio_button :<%= column_name %>, false %>
|
26
|
-
<%- else -%>
|
27
|
-
<%%= f.text_field :<%= column_name %> %>
|
28
|
-
<%- end -%>
|
29
|
-
</p>
|
30
|
-
<%% end %>
|
31
|
-
<%- end -%>
|
32
|
-
<% associations.each do |assoc| %>
|
33
|
-
<%- next if assoc[1][:type] == 'has_many' -%>
|
34
|
-
<% association_name = assoc[0] %>
|
35
|
-
<p>
|
36
|
-
<%%= f.label l(:label_<%= association_name %>) %>
|
37
|
-
<%%= f.select :<%= association_name %>_id, <%= association_name.camelcase %>.visible.sorted.map{ |<%= association_name %>| [<%= association_name %>.to_s, <%= association_name %>.id]} %>
|
38
|
-
</p>
|
39
|
-
<% end %>
|
40
|
-
<%- if acts_as_customizable? -%>
|
41
|
-
<%% custom_field_values = <%= model_name_underscored %>.visible_custom_field_values %>
|
42
|
-
<%% custom_field_values.each do |value| %>
|
43
|
-
<p>
|
44
|
-
<%%= custom_field_tag_with_label :<%= model_name_underscored %>, value %>
|
45
|
-
</p>
|
46
|
-
<%% end %>
|
47
|
-
<%- end -%>
|
48
|
-
<%- if acts_as_attachable? -%>
|
49
|
-
<p id="attachments_form"><label><%%= l(:label_attachment_plural) %></label><%%= render :partial => 'attachments/form', :locals => {:container => <%= model_name_underscored %>} %></p>
|
50
|
-
<%- end -%>
|
51
|
-
</div>
|
52
|
-
|
53
|
-
<%% if !request.xhr? %>
|
54
|
-
<p>
|
55
|
-
<%% if f.object.new_record? %>
|
56
|
-
<%%= submit_tag l(:button_create), title: l(:button_create), class: "button-positive" %>
|
57
|
-
<%% else %>
|
58
|
-
<%%= submit_tag l(:button_update), title: l(:button_update), class: "button-positive" %>
|
59
|
-
<%% end %>
|
60
|
-
</p>
|
61
|
-
<%% end %>
|
62
|
-
<%% end %>
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<%%= title l(:heading_<%= model_name_underscored %>_edit) %>
|
2
|
-
|
3
|
-
<%%= render partial: 'form', locals: { <%= model_name_underscored %>: @<%= model_name_underscored %> } %>
|
4
|
-
|
5
|
-
<%% ### PAGE CUSTOMS ########################################################## %>
|
6
|
-
<%% content_for :sidebar do %>
|
7
|
-
<%%= render partial: '<%= model_name_pluralize_underscored %>/sidebar' %>
|
8
|
-
<%% end %>
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<%%= title l(:heading_<%= model_name_underscored %>_new) %>
|
2
|
-
|
3
|
-
<%%= render partial: 'form', locals: { <%= model_name_underscored %>: @<%= model_name_underscored %> } %>
|
4
|
-
|
5
|
-
<%% ### PAGE CUSTOMS ########################################################## %>
|
6
|
-
<%% content_for :sidebar do %>
|
7
|
-
<%%= render partial: '<%= model_name_pluralize_underscored %>/sidebar' %>
|
8
|
-
<%% end %>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<ul>
|
2
|
-
<%% if @<%= model_name_underscored %> %>
|
3
|
-
<li><%%= context_menu_link l(:button_edit), edit_<%= model_name_underscored %>_path(@<%= model_name_underscored %>), class: 'icon icon-edit', disabled: !@can[:edit] %></li>
|
4
|
-
<%% end %>
|
5
|
-
<%% if @safe_attributes.include? 'status' %>
|
6
|
-
<li class="folder">
|
7
|
-
<a href="#" class="submenu icon icon-issue-status" onclick="return false;"><%%= l(:field_status) %></a>
|
8
|
-
<ul>
|
9
|
-
<%% <%= model_name %>.statuses.keys.each do |status| %>
|
10
|
-
<li>
|
11
|
-
<%%= context_menu_link l("<%= model_name_underscored %>.statuses.#{status}"), bulk_update_<%= model_name_underscored %>_path(id: @<%= model_name_underscored %>_ids, <%= model_name_underscored %>: { status: status }, back_url: @back), method: :put, selected: (@selected[:status] == status), disabled: !@can[:edit], confirm: l(:text_are_you_sure) %>
|
12
|
-
</li>
|
13
|
-
<%% end %>
|
14
|
-
</ul>
|
15
|
-
</li>
|
16
|
-
<%% end %>
|
17
|
-
<li><%%= context_menu_link l(:button_delete), <%= model_name_underscored %>_path(id: @<%= model_name_underscored %>_ids, back_url: @back), method: :delete, data: { confirm: l(:text_are_you_sure) }, class: 'icon icon-del', disabled: !@can[:delete] %></li>
|
18
|
-
|
19
|
-
<%%= call_hook(:view_<%= model_name_pluralize_underscored %>_context_menu_end, { <%= model_name_underscored %>: @<%= model_name_underscored %>, <%= model_name_pluralize_underscored %>: @<%= model_name_pluralize_underscored %>, can: @can, back: @back, project: @project }) %>
|
20
|
-
</ul>
|
@@ -1,208 +0,0 @@
|
|
1
|
-
class <%= controller_class %>Controller < ApplicationController
|
2
|
-
|
3
|
-
menu_item :<%= model_name_pluralize_underscored %>
|
4
|
-
|
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]
|
8
|
-
<%- if project? -%>
|
9
|
-
before_action :find_project
|
10
|
-
<%- end -%>
|
11
|
-
|
12
|
-
helper :<%= model_name_pluralize_underscored %>
|
13
|
-
helper :custom_fields, :context_menus, :attachments, :issues
|
14
|
-
include_query_helpers
|
15
|
-
|
16
|
-
accept_api_auth :index, :show, :create, :update, :destroy
|
17
|
-
|
18
|
-
def index
|
19
|
-
<%- if Redmine::Plugin.installed?(:easy_extensions) %>
|
20
|
-
index_for_easy_query(<%= model_name %>Query)
|
21
|
-
<% else %>
|
22
|
-
retrieve_query(<%= model_name %>Query)
|
23
|
-
@entity_count = @query.<%= model_name_pluralize_underscored %>.count
|
24
|
-
@entity_pages = Paginator.new @entity_count, per_page_option, params['page']
|
25
|
-
@entities = @query.<%= model_name_pluralize_underscored %>(offset: @entity_pages.offset, limit: @entity_pages.per_page)
|
26
|
-
<%- end %>
|
27
|
-
end
|
28
|
-
|
29
|
-
def show
|
30
|
-
respond_to do |format|
|
31
|
-
format.html
|
32
|
-
format.api
|
33
|
-
format.js
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def new
|
38
|
-
@<%= model_name_underscored %> = <%= model_name %>.new
|
39
|
-
<%- if project? -%>
|
40
|
-
@<%= model_name_underscored %>.project = @project
|
41
|
-
<%- end -%>
|
42
|
-
@<%= model_name_underscored %>.safe_attributes = params[:<%= model_name_underscored %>]
|
43
|
-
|
44
|
-
respond_to do |format|
|
45
|
-
format.html
|
46
|
-
format.js
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def create
|
51
|
-
@<%= model_name_underscored %> = <%= model_name %>.new <%= "author: User.current" if author? %>
|
52
|
-
<%- if project? -%>
|
53
|
-
@<%= model_name_underscored %>.project = @project
|
54
|
-
<%- end -%>
|
55
|
-
@<%= model_name_underscored %>.safe_attributes = params[:<%= model_name_underscored %>]
|
56
|
-
<%- if acts_as_attachable? -%>
|
57
|
-
@<%= model_name_underscored %>.save_attachments(params[:attachments] || (params[:<%= model_name_underscored %>] && params[:<%= model_name_underscored %>][:uploads]))
|
58
|
-
<%- end -%>
|
59
|
-
|
60
|
-
respond_to do |format|
|
61
|
-
if @<%= model_name_underscored %>.save
|
62
|
-
format.html do
|
63
|
-
flash[:notice] = l(:notice_successful_create)
|
64
|
-
redirect_back_or_default <%= model_name_underscored %>_path(@<%= model_name_underscored %>)
|
65
|
-
end
|
66
|
-
format.api { render action: 'show', status: :created, location: <%= model_name_underscored %>_url(@<%= model_name_underscored %>) }
|
67
|
-
format.js { render template: 'common/close_modal' }
|
68
|
-
else
|
69
|
-
format.html { render action: 'new' }
|
70
|
-
format.api { render_validation_errors(@<%= model_name_underscored %>) }
|
71
|
-
format.js { render action: 'new' }
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def edit
|
77
|
-
@<%= model_name_underscored %>.safe_attributes = params[:<%= model_name_underscored %>]
|
78
|
-
|
79
|
-
respond_to do |format|
|
80
|
-
format.html
|
81
|
-
format.js
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def update
|
86
|
-
@<%= model_name_underscored %>.safe_attributes = params[:<%= model_name_underscored %>]
|
87
|
-
<%- if acts_as_attachable? -%>
|
88
|
-
@<%= model_name_underscored %>.save_attachments(params[:attachments] || (params[:<%= model_name_underscored %>] && params[:<%= model_name_underscored %>][:uploads]))
|
89
|
-
<%- end -%>
|
90
|
-
|
91
|
-
respond_to do |format|
|
92
|
-
if @<%= model_name_underscored %>.save
|
93
|
-
format.html do
|
94
|
-
flash[:notice] = l(:notice_successful_update)
|
95
|
-
redirect_back_or_default <%= model_name_underscored %>_path(@<%= model_name_underscored %>)
|
96
|
-
end
|
97
|
-
format.api { render_api_ok }
|
98
|
-
format.js { render template: 'common/close_modal' }
|
99
|
-
else
|
100
|
-
format.html { render action: 'edit' }
|
101
|
-
format.api { render_validation_errors(@<%= model_name_underscored %>) }
|
102
|
-
format.js { render action: 'edit' }
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def destroy
|
108
|
-
@<%= model_name_pluralize_underscored %>.each(&:destroy)
|
109
|
-
|
110
|
-
respond_to do |format|
|
111
|
-
format.html do
|
112
|
-
flash[:notice] = l(:notice_successful_delete)
|
113
|
-
redirect_back_or_default <%= model_name_pluralize_underscored %>_path
|
114
|
-
end
|
115
|
-
format.api { render_api_ok }
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def bulk_edit
|
120
|
-
end
|
121
|
-
|
122
|
-
def bulk_update
|
123
|
-
unsaved, saved = [], []
|
124
|
-
attributes = parse_params_for_bulk_update(params[:<%= model_name_underscored %>])
|
125
|
-
@<%= model_name_pluralize_underscored %>.each do |entity|
|
126
|
-
entity.init_journal(User.current) if entity.respond_to? :init_journal
|
127
|
-
entity.safe_attributes = attributes
|
128
|
-
if entity.save
|
129
|
-
saved << entity
|
130
|
-
else
|
131
|
-
unsaved << entity
|
132
|
-
end
|
133
|
-
end
|
134
|
-
respond_to do |format|
|
135
|
-
format.html do
|
136
|
-
if unsaved.blank?
|
137
|
-
flash[:notice] = l(:notice_successful_update)
|
138
|
-
else
|
139
|
-
flash[:error] = unsaved.map{|i| i.errors.full_messages}.flatten.uniq.join(",\n")
|
140
|
-
end
|
141
|
-
redirect_back_or_default :index
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
def context_menu
|
147
|
-
if @<%= model_name_pluralize_underscored %>.size == 1
|
148
|
-
@<%= model_name_underscored %> = @<%= model_name_pluralize_underscored %>.first
|
149
|
-
end
|
150
|
-
|
151
|
-
can_edit = @<%= model_name_pluralize_underscored %>.detect{|c| !c.editable?}.nil?
|
152
|
-
can_delete = @<%= model_name_pluralize_underscored %>.detect{|c| !c.deletable?}.nil?
|
153
|
-
@can = {edit: can_edit, delete: can_delete}
|
154
|
-
@back = back_url
|
155
|
-
|
156
|
-
@<%= model_name_underscored %>_ids, @safe_attributes, @selected = [], [], {}
|
157
|
-
@<%= model_name_pluralize_underscored %>.each do |e|
|
158
|
-
@<%= model_name_underscored %>_ids << e.id
|
159
|
-
@safe_attributes.concat e.safe_attribute_names
|
160
|
-
attributes = e.safe_attribute_names - (%w(custom_field_values custom_fields))
|
161
|
-
attributes.each do |c|
|
162
|
-
column_name = c.to_sym
|
163
|
-
if @selected.key? column_name
|
164
|
-
@selected[column_name] = nil if @selected[column_name] != e.send(column_name)
|
165
|
-
else
|
166
|
-
@selected[column_name] = e.send(column_name)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
@safe_attributes.uniq!
|
172
|
-
|
173
|
-
render layout: false
|
174
|
-
end
|
175
|
-
|
176
|
-
def autocomplete
|
177
|
-
end
|
178
|
-
|
179
|
-
private
|
180
|
-
|
181
|
-
def find_<%= model_name_underscored %>
|
182
|
-
@<%= model_name_underscored %> = <%= model_name %>.find(params[:id])
|
183
|
-
rescue ActiveRecord::RecordNotFound
|
184
|
-
render_404
|
185
|
-
end
|
186
|
-
|
187
|
-
def find_<%= model_name_pluralize_underscored %>
|
188
|
-
@<%= model_name_pluralize_underscored %> = <%= model_name %>.visible.where(id: (params[:id] || params[:ids])).to_a
|
189
|
-
@<%= model_name_underscored %> = @<%= model_name_pluralize_underscored %>.first if @<%= model_name_pluralize_underscored %>.count == 1
|
190
|
-
raise ActiveRecord::RecordNotFound if @<%= model_name_pluralize_underscored %>.empty?
|
191
|
-
raise Unauthorized unless @<%= model_name_pluralize_underscored %>.all?(&:visible?)
|
192
|
-
|
193
|
-
@projects = @<%= model_name_pluralize_underscored %>.collect(&:project).compact.uniq
|
194
|
-
@project = @projects.first if @projects.size == 1
|
195
|
-
rescue ActiveRecord::RecordNotFound
|
196
|
-
render_404
|
197
|
-
end
|
198
|
-
|
199
|
-
<%- if project? -%>
|
200
|
-
def find_project
|
201
|
-
@project ||= @<%= model_name_underscored %>.project if @<%= model_name_underscored %>
|
202
|
-
@project ||= Project.find(params[:project_id]) if params[:project_id].present?
|
203
|
-
rescue ActiveRecord::RecordNotFound
|
204
|
-
render_404
|
205
|
-
end
|
206
|
-
<%- end -%>
|
207
|
-
|
208
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class <%= model_name %>Query < EasyQuery
|
2
|
-
|
3
|
-
self.queried_class = <%= model_name %>
|
4
|
-
|
5
|
-
def initialize_available_filters
|
6
|
-
on_filter_group(default_group_label) do
|
7
|
-
<%- db_columns.each do |column_name, column_options| -%>
|
8
|
-
<%- if project? && column_name == 'project_id' -%>
|
9
|
-
if project.nil?
|
10
|
-
add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>, values: all_projects_values
|
11
|
-
end
|
12
|
-
<%- else -%>
|
13
|
-
add_available_filter '<%= column_name %>', name: <%= model_name %>.human_attribute_name(:<%= column_name %>), type: :<%= column_options[:query_type] %>
|
14
|
-
<%- end -%>
|
15
|
-
<%- end -%>
|
16
|
-
<%- if acts_as_customizable? -%>
|
17
|
-
add_custom_fields_filters(<%= model_name %>CustomField)
|
18
|
-
<%- end -%>
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def initialize_available_columns
|
23
|
-
on_filter_group(default_group_label) do
|
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 %>)
|
26
|
-
<%- end -%>
|
27
|
-
<%- if acts_as_customizable? -%>
|
28
|
-
add_available_columns <%= model_name %>CustomField.sorted.visible.collect { |cf| EasyQueryCustomFieldColumn.new(cf, group: l(:label_filter_group_custom_fields)) }
|
29
|
-
<%- end -%>
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def default_list_columns
|
34
|
-
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] }
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<%%= title l(:heading_<%= model_name_underscored %>_edit) %>
|
2
|
-
|
3
|
-
<%%= form_for([@project, @<%= model_name_underscored %>], html: { multipart: <%= acts_as_attachable? %>, id: '<%= model_name_underscored %>_form', class: 'tabular', remote: request.xhr? }) do |f| %>
|
4
|
-
<%%= error_messages_for @<%= model_name_underscored %> %>
|
5
|
-
|
6
|
-
<div class="box">
|
7
|
-
<%%= render partial: 'form', locals: {<%= model_name_underscored %>: @<%= model_name_underscored %>} %>
|
8
|
-
</div>
|
9
|
-
|
10
|
-
<%% if !request.xhr? %>
|
11
|
-
<p>
|
12
|
-
<%%= submit_tag l(:button_update), title: l(:button_update) %>
|
13
|
-
</p>
|
14
|
-
<%% end %>
|
15
|
-
<%% end %>
|
16
|
-
<%% ### PAGE CUSTOMS ########################################################## %>
|
17
|
-
<%% content_for :sidebar do %>
|
18
|
-
<%%= render partial: '<%= model_name_pluralize_underscored %>/sidebar' %>
|
19
|
-
<%% end %>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
var modal = $("#ajax-modal");
|
2
|
-
modal.html("<%%= j render(template: '<%= model_name_pluralize_underscored %>/edit', formats: [:html]) %>");
|
3
|
-
showModal(modal.attr("id"));
|
4
|
-
var submitButton = {
|
5
|
-
text:"<%%=j l(:button_update) %>",
|
6
|
-
title:"<%%=j l(:button_update) %>",
|
7
|
-
click: function() {$(this).find('form').submit()},
|
8
|
-
'class': 'button-positive'
|
9
|
-
};
|
10
|
-
var closeButton = {
|
11
|
-
text: "<%%=j l(:button_close) %>",
|
12
|
-
title: "<%%=j l(:button_close) %>",
|
13
|
-
click: function() {$(this).dialog('close');},
|
14
|
-
'class': 'button'
|
15
|
-
};
|
16
|
-
modal.dialog('option', {
|
17
|
-
buttons: [closeButton, submitButton]
|
18
|
-
});
|
@@ -1,16 +0,0 @@
|
|
1
|
-
en:
|
2
|
-
activerecord:
|
3
|
-
attributes:
|
4
|
-
<%= model_name_underscored %>: <%= db_columns.collect{|column_name, column_options| "\n #{column_options[:lang_key]}: #{column_name.humanize}" }.join %>
|
5
|
-
easy_query:
|
6
|
-
name:
|
7
|
-
<%= model_name_underscored %>_query: <%= model_name_pluralize_underscored.titleize %>
|
8
|
-
heading_<%= model_name_underscored %>_new: New <%= model_name_underscored.titleize %>
|
9
|
-
heading_<%= model_name_underscored %>_edit: Edit <%= model_name_underscored.titleize %>
|
10
|
-
button_<%= model_name_underscored %>_new: New <%= model_name_underscored.titleize %>
|
11
|
-
label_<%= model_name_pluralize_underscored %>: <%= model_name_pluralize_underscored.titleize %>
|
12
|
-
label_<%= model_name_underscored %>: <%= model_name_underscored.titleize %>
|
13
|
-
permission_view_<%= model_name_pluralize_underscored %>: View <%= model_name_pluralize_underscored.titleize %>
|
14
|
-
permission_manage_<%= model_name_pluralize_underscored %>: Manage <%= model_name_pluralize_underscored.titleize %>
|
15
|
-
title_<%= model_name_underscored %>_new: Click to create new <%= model_name_underscored.titleize %>
|
16
|
-
label_filter_group_<%= model_name_underscored %>_query: <%= model_name %>
|
data/lib/generators/redmine_extensions/entity/templates/entity_attribute_helper_patch.rb.erb
DELETED
@@ -1,10 +0,0 @@
|
|
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,30 +0,0 @@
|
|
1
|
-
<% if Redmine::Plugin.installed?(:easy_extensions) %>
|
2
|
-
<%%= render @query %>
|
3
|
-
<%% ### PAGE CUSTOMS ########################################################## %>
|
4
|
-
<%%= context_menu context_menu_<%= model_name_pluralize_underscored %>_path(project_id: @project) %>
|
5
|
-
<%% content_for :sidebar do %>
|
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
|
-
|
17
|
-
<%%= form_tag(<%= model_name_pluralize_underscored %>_path, method: :get, id: 'query_form') do %>
|
18
|
-
<%%= render partial: 'queries/query_form' %>
|
19
|
-
<%% end %>
|
20
|
-
|
21
|
-
<%% if @query.valid? %>
|
22
|
-
<%% if @entities.empty? %>
|
23
|
-
<p class="nodata"><%%= l(:label_no_data) %></p>
|
24
|
-
<%% else %>
|
25
|
-
<%%= render_query_totals(@query) %>
|
26
|
-
<%%= render partial: 'list', locals: { entities: @entities }%>
|
27
|
-
<span class="pagination"><%%= pagination_links_full @entity_pages, @entity_count %></span>
|
28
|
-
<%% end %>
|
29
|
-
<%% end %>
|
30
|
-
<% end %>
|
@@ -1,12 +0,0 @@
|
|
1
|
-
var modal = $("#ajax-modal");
|
2
|
-
modal.html("<%%= j render(template: '<%= model_name_pluralize_underscored %>/index', formats: [:html]) %>");
|
3
|
-
showModal(modal.attr("id"));
|
4
|
-
var closeButton = {
|
5
|
-
text: "<%%=j l(:button_close) %>",
|
6
|
-
title: "<%%=j l(:button_close) %>",
|
7
|
-
click: function() {$(this).dialog('close');},
|
8
|
-
'class': 'button'
|
9
|
-
};
|
10
|
-
modal.dialog('option', {
|
11
|
-
buttons: [closeButton, submitButton]
|
12
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
<h1><%%= link_to(@<%= model_name_underscored %>.to_s, @<%= model_name_underscored %>_url) %></h1>
|
@@ -1 +0,0 @@
|
|
1
|
-
<h1><%%= link_to(@<%= model_name_underscored %>.to_s, @<%= model_name_underscored %>_url) %></h1>
|
@@ -1,41 +0,0 @@
|
|
1
|
-
class <%= model_name %>Mailer < Mailer
|
2
|
-
|
3
|
-
helper :<%= model_name_pluralize_underscored %>
|
4
|
-
|
5
|
-
def <%= model_name_underscored %>_added(recipient, <%= model_name_underscored %>)
|
6
|
-
<%- if project? -%>
|
7
|
-
redmine_headers 'Project' => <%= model_name_underscored %>.project.identifier
|
8
|
-
|
9
|
-
<%- end -%>
|
10
|
-
<%- if author? -%>
|
11
|
-
@author = <%= model_name_underscored %>.author
|
12
|
-
<%- end -%>
|
13
|
-
@<%= model_name_underscored %> = <%= model_name_underscored %>
|
14
|
-
@<%= model_name_underscored %>_url = url_for(controller: '<%= model_name_pluralize_underscored %>', action: 'show', id: <%= model_name_underscored %>)
|
15
|
-
|
16
|
-
message_id <%= model_name_underscored %>
|
17
|
-
references <%= model_name_underscored %>
|
18
|
-
|
19
|
-
mail to: recipient,
|
20
|
-
subject: "#{l(:label_<%= model_name_underscored %>)}: #{<%= model_name_underscored %>.to_s}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def <%= model_name_underscored %>_updated(recipient, <%= model_name_underscored %>)
|
24
|
-
<%- if project? -%>
|
25
|
-
redmine_headers 'Project' => <%= model_name_underscored %>.project.identifier
|
26
|
-
|
27
|
-
<%- end -%>
|
28
|
-
<%- if author? -%>
|
29
|
-
@author = <%= model_name_underscored %>.author
|
30
|
-
<%- end -%>
|
31
|
-
@<%= model_name_underscored %> = <%= model_name_underscored %>
|
32
|
-
@<%= model_name_underscored %>_url = url_for(controller: '<%= model_name_pluralize_underscored %>', action: 'show', id: <%= model_name_underscored %>)
|
33
|
-
|
34
|
-
message_id <%= model_name_underscored %>
|
35
|
-
references <%= model_name_underscored %>
|
36
|
-
|
37
|
-
mail to: recipient,
|
38
|
-
subject: "#{l(:label_<%= model_name_underscored %>)}: #{<%= model_name_underscored %>.to_s}"
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Create<%= model_name_pluralize_underscored.camelize %> < ActiveRecord::Migration[<%= ActiveRecord::Migration::Current.current_version %>]
|
2
|
-
def change
|
3
|
-
create_table :<%= model_name_pluralize_underscored %> do |t|
|
4
|
-
<%- columns = db_columns.reject{|k| k.in?(["created_at", "updated_at"])} -%>
|
5
|
-
<%- author_col = db_columns.delete "author_id" %>
|
6
|
-
<%- project_col = db_columns.delete "project_id" %>
|
7
|
-
<%- columns.each do |column_name, column_attrs| -%>
|
8
|
-
t.<%= column_attrs[:type] %> :<%= column_name %>, null: <%= column_attrs[:null] %>
|
9
|
-
<%- end -%>
|
10
|
-
<%= "t.belongs_to :author" if author_col %>
|
11
|
-
<%= "t.belongs_to :project" if project_col %>
|
12
|
-
|
13
|
-
t.timestamps
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|