diff --git a/app/views/projects/settings/_custom_workflow.html.erb b/app/views/projects/settings/_custom_workflow.html.erb
index b3a4e8d..d7de42c 100644
--- a/app/views/projects/settings/_custom_workflow.html.erb
+++ b/app/views/projects/settings/_custom_workflow.html.erb
@@ -6,8 +6,17 @@
<% if CustomWorkflow.exists? %>
<% CustomWorkflow.all.each do |w| %>
-
-
<%= textilizable(w.description) %>
+
+
+
+
<%= textilizable(w.description) %>
<% end %>
<% else %>
diff --git a/assets/images/active.png b/assets/images/active.png
new file mode 100644
index 0000000000000000000000000000000000000000..a662809d43348f68f86d599fb3406075c8652c5a
GIT binary patch
literal 316
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b
z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPVk-lnPX{%hSa%
z#KJ%M$N&HKGLu=`HZuCYkNRJIx4$h}KwhhrYlGy2I(?xvnFqgH7Vtc3KC;kDfZ;B~
z1Yd>LV0-_@$0y^}nlmR@w0U3PWw?3e!#Y-Vwv)}GhZuG-Dntv-fA+_}ZWjA-1v{SP
z3g){E-M|0+|NH*0#LT=By}Z;C1rt33
zJ=4@yqg0@p-JULvAr}70KmPx>mzm7kwvqAutY81{fB)2;EFiDd%C$kV;QU?oH7|e9
zDJ|f6)O=*2mjJ_Eh6%n3t@D@bv_00JEZ&$o!J^Ik0xyI0_J!=~Y$uyV4>9awREVCZ
zmiD)P)|}o03U(sN70h=Vev5_ufB(DvZ@qv3-!TOHq)$
literal 0
HcmV?d00001
diff --git a/assets/stylesheets/style.css b/assets/stylesheets/style.css
index 5260306..d6e4dce 100644
--- a/assets/stylesheets/style.css
+++ b/assets/stylesheets/style.css
@@ -2,6 +2,10 @@
background-image: url(../../../images/ticket_go.png);
}
+#tab-content-custom_workflows .disabled {
+ color: silver;
+}
+
table.list.custom-workflows td {
vertical-align: middle;
}
@@ -10,6 +14,10 @@ table.list.custom-workflows td.description {
text-align: left;
}
+table.list.custom-workflows tr.disabled {
+ color: silver;
+}
+
#custom_workflow_description, #custom_workflow_name {
width: 98%;
}
@@ -26,3 +34,5 @@ table.list.custom-workflows td.description {
.icon-export { background-image: url(../images/export.png); }
.icon-import { background-image: url(../images/import.png); }
+.icon-active { background-image: url(../images/active.png); }
+.icon-inactive { background-image: url(../images/inactive.png); }
diff --git a/config/locales/en.yml b/config/locales/en.yml
index dbb4025..4b213cc 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -11,6 +11,8 @@ en:
label_custom_workflow_import: "Import workflow"
button_import: "Import"
+ button_custom_workflow_activate: "Activate"
+ button_custom_workflow_deactivate: "Deactivate"
field_after_save: "Workflow script executable after saving the issue"
field_before_save: "Workflow script executable before saving the issue"
@@ -18,10 +20,12 @@ en:
field_enabled_for_all_projects: "Enabled for all projects"
field_custom_workflow_author: "Author's e-mail"
field_custom_workflow_file: "Select the XML file previously exported process"
+ field_custom_workflow_active: "Active"
field_custom_workflow:
script: "Workflow script"
notice_successful_import: "Custom workflow has successfully imported"
+ notice_successful_status_change: "Status has successfully changed"
error_failed_import: "Error importing custom workflow (unknown format? please see log)"
activerecord:
@@ -36,4 +40,6 @@ en:
text_custom_workflow_after_save_note: You can update or create related issues here. Note that this script will be also executed for the newly created issues. So make appropriate checks to prevent infinite recursion.
text_custom_workflow_general_note: Both scripts are executed in the context of the issue like ordinary before_save and after_save callbacks. So use methods and properties of the issue directly (or through "self"). Instance variables (@variable) are also allowed and may be used if needed.
text_no_enabled_projects: No projects
- text_custom_workflow_author: Will be included in exported XML
\ No newline at end of file
+ text_custom_workflow_author: Will be included in exported XML
+ text_custom_workflow_disabled: disabled by admin
+ text_custom_workflow_is_for_all: enabled for all projects
\ No newline at end of file
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 0374270..b0a89df 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -11,6 +11,8 @@ ru:
label_custom_workflow_import: "Импорт процесса"
button_import: "Импортировать"
+ button_custom_workflow_activate: "Активировать"
+ button_custom_workflow_deactivate: "Деактивировать"
field_after_save: "Сценарий выполняемый после сохранения задачи"
field_before_save: "Сценарий выполняемый перед сохранением задачи"
@@ -18,10 +20,12 @@ ru:
field_enabled_for_all_projects: "Разрешен для всех проектов"
field_custom_workflow_author: "E-Mail адрес автора"
field_custom_workflow_file: "Выберите XML файл ранее экспортированного процесса"
+ field_custom_workflow_active: "Активен"
field_custom_workflow:
script: "Сценарий"
notice_successful_import: "Рабочий процесс успешно импортирован"
+ notice_successful_status_change: "Статус успешно изменен"
error_failed_import: "Ошибка импорта рабочего процесса (неверный формат? смотри журнал)"
activerecord:
@@ -36,4 +40,6 @@ ru:
text_custom_workflow_after_save_note: Вы можете обновлять и создавать задачи (в том числе и связанные задачи) здесь. Обратите внимание, что данный сценарий будет также выполняться и для вновь создаваемых задач. Поэтому используйте дополнительные проверки, чтобы избежать бесконечной рекурсии.
text_custom_workflow_general_note: Оба сценария исполняются в контексте задачи, как и обычные обратные вызовы before_save и after_save. Поэтому используйте методы и свойства задачи напрямую или через ключевое слово self.
text_no_enabled_projects: Нет проектов
- text_custom_workflow_author: Будет использован в XML файле при экспорте
\ No newline at end of file
+ text_custom_workflow_author: Будет использован в XML файле при экспорте
+ text_custom_workflow_disabled: отключен администратором
+ text_custom_workflow_is_for_all: разрешен для всех проектов
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 14684bc..d5d0df0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -3,4 +3,5 @@ RedmineApp::Application.routes.draw do
resources :custom_workflows
post '/custom_workflows/:id', :to => 'custom_workflows#update'
get '/custom_workflows/:id/export', :to => 'custom_workflows#export', :as => 'export_custom_workflow'
+ post '/custom_workflows/:id/change_status', :to => 'custom_workflows#change_status', :as => 'custom_workflow_status'
end
diff --git a/db/migrate/20150526134840_add_active_field_to_custom_workflows.rb b/db/migrate/20150526134840_add_active_field_to_custom_workflows.rb
new file mode 100644
index 0000000..0dfb9bc
--- /dev/null
+++ b/db/migrate/20150526134840_add_active_field_to_custom_workflows.rb
@@ -0,0 +1,5 @@
+class AddActiveFieldToCustomWorkflows < ActiveRecord::Migration
+ def change
+ add_column :custom_workflows, :active, :boolean, :null => false, :default => true
+ end
+end
diff --git a/lib/redmine_custom_workflows/project_patch.rb b/lib/redmine_custom_workflows/project_patch.rb
index 80bc427..15e1215 100644
--- a/lib/redmine_custom_workflows/project_patch.rb
+++ b/lib/redmine_custom_workflows/project_patch.rb
@@ -13,7 +13,7 @@ module RedmineCustomWorkflows
module InstanceMethods
def enabled_custom_workflows
- (CustomWorkflow.for_all + custom_workflows).uniq.sort
+ (CustomWorkflow.for_all + custom_workflows).select { |w| w.active? }.uniq.sort
end
end
end