diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 0000000..41fe96a --- /dev/null +++ b/README.rdoc @@ -0,0 +1,25 @@ +=Redmine Issue Template Plugin + +==About + +Allows to manage templates of issues, and adding them to a new issue body. + +==Install + +# Follow the Redmine plugin installation steps at: www.redmine.org/wiki/redmine/Plugins +# Make sure the plugin is installed to +vendor/plugins/redmine-issues-template+ +# Setup the database using the migrations. +rake db:migrate_plugins RAILS_ENV=production+ +# Add a new *issue template* by clicking at *issue templates* menu under Administration Area + +==Roadmap + +* Each issue template need to be scoped by project + +==Authors + +* 'undev.ru' http://undev.ru' +* Otávio Sampaio, otaviofcs@gmail.com + + + + diff --git a/app/controllers/issue_templates_controller.rb b/app/controllers/issue_templates_controller.rb index 365cf2f..0a67031 100644 --- a/app/controllers/issue_templates_controller.rb +++ b/app/controllers/issue_templates_controller.rb @@ -1,6 +1,7 @@ class IssueTemplatesController < ApplicationController - before_filter :find_issue_template, :except => [:index, :new, :create] - before_filter :require_admin + unloadable + before_filter :find_issue_template, :except => [:index, :new, :create, :show] + before_filter :require_admin, :except => [:show] def index @issue_templates = IssueTemplate.all(:order => "created_at DESC") @@ -34,6 +35,13 @@ def destroy redirect_to issue_templates_url end + def show + @issue_template = IssueTemplate.find(params[:issue_template_id]) + respond_to do |type| + type.js { render } + end + end + private def find_issue_template diff --git a/app/helpers/issue_templates_helper.rb b/app/helpers/issue_templates_helper.rb index 36cc164..9c71548 100644 --- a/app/helpers/issue_templates_helper.rb +++ b/app/helpers/issue_templates_helper.rb @@ -1,6 +1,6 @@ module IssueTemplatesHelper def issue_templates_options - options_from_collection_for_select(IssueTemplate.all, 'content', 'title') + options_from_collection_for_select(IssueTemplate.all, 'id', 'title') end end diff --git a/app/views/issue_templates/_issue_template_control.html.erb b/app/views/issue_templates/_issue_template_control.html.erb index 754f761..4bdaba7 100644 --- a/app/views/issue_templates/_issue_template_control.html.erb +++ b/app/views/issue_templates/_issue_template_control.html.erb @@ -1,18 +1,17 @@ <% html = capture do %> -
+<% if @issue.new_record? && IssueTemplate.count > 0 %> +
+<% form_remote_tag :html => {:method => :get}, :url => { :controller => 'issue_templates', :action => 'show'} do %> - <%= issue_templates_options %> - + <%= submit_tag l(:label_issue_template_insert_button) %> +<% end %>
<% end %> +<% end %> <% javascript_tag do %> - $('issue_description').insert({after: '<%= escape_javascript(html) %>'}); - var head = $$('head')[0]; - if (head) { - script = new Element('script', { type: 'text/javascript', src: '/plugin_assets/redmine_issue_template/javascripts/issue_templates.js'}); - head.appendChild(script); - } + $('issue_description').insert({before: '<%= escape_javascript(html) %>'}); <% end %> diff --git a/app/views/issue_templates/show.js.rjs b/app/views/issue_templates/show.js.rjs new file mode 100644 index 0000000..3d7e83d --- /dev/null +++ b/app/views/issue_templates/show.js.rjs @@ -0,0 +1 @@ +page.replace_html :issue_description, :text => @issue_template.content diff --git a/assets/javascripts/issue_templates.js b/assets/javascripts/issue_templates.js deleted file mode 100644 index 03f231c..0000000 --- a/assets/javascripts/issue_templates.js +++ /dev/null @@ -1,25 +0,0 @@ - -function insertTemplate(selectId, textareaId) { - var value = $(selectId).value; - var textarea = $(textareaId); - insertAtCursor(textarea, value); -} - -function insertAtCursor(myField, myValue) { - //IE support - if (document.selection) { - myField.focus(); - sel = document.selection.createRange(); - sel.text = myValue; - } - //MOZILLA/NETSCAPE support - else if (myField.selectionStart || myField.selectionStart == '0') { - var startPos = myField.selectionStart; - var endPos = myField.selectionEnd; - myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); - } else { - myField.value += myValue; - } -} - - diff --git a/config/locales/en.yml b/config/locales/en.yml index 9709cb4..20f1124 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4,4 +4,5 @@ en: label_issue_template_new: New issue template label_issue_template_edit: Edit issue template label_issue_template_insert: Insert template + label_issue_template_insert_button: Insert diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml new file mode 100644 index 0000000..47feca3 --- /dev/null +++ b/config/locales/pt-BR.yml @@ -0,0 +1,8 @@ +pt-BR: + label_issue_template: Modelo de Tarefa + label_issue_template_plural: Modelo de Tarefas + label_issue_template_new: Novo Modelo de Tarefa + label_issue_template_edit: Edição de Modelo de Tarefa + label_issue_template_insert: Inserir Modelo + label_issue_template_insert_button: Inserir + diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 2ce0ac2..eb8f269 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -4,4 +4,5 @@ ru: label_issue_template_new: Новый шаблон задачи label_issue_template_edit: Редактирование шаблона задачи label_issue_template_insert: Вставить шаблон + label_issue_template_insert_button: Вставить