diff --git a/app/controllers/crontabs_controller.rb b/app/controllers/crontabs_controller.rb deleted file mode 100644 index e31cfe57c..000000000 --- a/app/controllers/crontabs_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -class CrontabsController < ApplicationController - - def show - end - -end \ No newline at end of file diff --git a/app/models/product.rb b/app/models/product.rb index 7d0a59bcb..85c92ab99 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -46,6 +46,14 @@ class Product < ActiveRecord::Base self.attributes = attrs end + def cron_command + self.name + end + + def cron_tab + self[:cron_tab].present? ? self[:cron_tab] : "*\t*\t*\t*\t*" + end + protected def destroy_tar? diff --git a/app/views/crontabs/show.html.haml b/app/views/crontabs/show.html.haml deleted file mode 100644 index 776e65c24..000000000 --- a/app/views/crontabs/show.html.haml +++ /dev/null @@ -1,170 +0,0 @@ -- content_for :javascripts do - :javascript - $(function(){ - $(".chooser").click(function() { - var for_element = this.name.replace(/_chooser/,""); - $("#" + for_element).attr("disabled", (this.value !== "1")); - }); - - $("#crontab_generator").submit(function() { - var minute, hour, day, month, weekday; - - minute = getSelected('minute'); - hour = getSelected('hour'); - day = getSelected('day'); - month = getSelected('month'); - weekday = getSelected('weekday'); - - var command = $("#command").attr("value"); - $("#cron").attr("value", minute + "\t" + hour + "\t" + day + "\t" + month + "\t" + weekday + "\t" + command); - - return false; - }); - }); - - function getSelected(name) { - var chosen; - - if ($("#" + name + "_chooser_every").attr("checked")) { - chosen = '*'; - } else { - var all_selected = []; - - $("#" + name + " option:selected").each(function(i, ele) { all_selected.push($(ele).attr("value")); }); - - if (all_selected.length) { - chosen = all_selected.join(","); - } else { - chosen = '*'; - } - } - - return chosen; - } - -.block - .content - %h2.title= t("layout.crontabs.new_header") - .inner - = form_tag "", :class => :form, :id => "crontab_generator" do - .group - = label_tag :command, "Comman", :class => :label - = text_field_tag :command, "", :class => :text_field - - .columns.wat-cf - .column.left - %h3.title Minutes - .group - = label_tag :minute_chooser_every, "Every minute", :class => :label - = radio_button_tag :minute_chooser, 0, true, :id => :minute_chooser_every, :class => :chooser - - = label_tag :minute_chooser_choose, "Choose", :class => :label - = radio_button_tag :minute_chooser, 1, false, :id => :minute_chooser_choose, :class => :chooser - - .group - -#= select_tag :minute, options_from_collection_for_select((0..59)), :id => :minute, :multiple => true, :disabled => true - %select{ :name => :minute, :id => :minute, :multiple => true, :disabled => true } - - (0..59).each do |min| - %option{ :value => min }= min - - .column.right - %h3.title Hour - .group - = label_tag :hour_chooser_every, "Every hour", :class => :label - = radio_button_tag :hour_chooser, 0, true, :id => :minute_chooser_every, :class => :chooser - - = label_tag :hour_chooser_choose, "Choose", :class => :label - = radio_button_tag :hour_chooser, 1, false, :id => :minute_chooser_choose, :class => :chooser - - .group - %select{ :name => :hour, :id => :hour, :multiple => true, :disabled => true } - %option{ :value => "0" } 12 Midnight - %option{ :value => "1" } 1 AM - %option{ :value => "2" } 2 AM - %option{ :value => "3" } 3 AM - %option{ :value => "4" } 4 AM - %option{ :value => "5" } 5 AM - %option{ :value => "6" } 6 AM - %option{ :value => "7" } 7 AM - %option{ :value => "8" } 8 AM - %option{ :value => "9" } 9 AM - %option{ :value => "10" } 10 AM - %option{ :value => "11" } 11 AM - %option{ :value => "12" } 12 Noon - %option{ :value => "13" } 1 PM - %option{ :value => "14" } 2 PM - %option{ :value => "15" } 3 PM - %option{ :value => "16" } 4 PM - %option{ :value => "17" } 5 PM - %option{ :value => "18" } 6 PM - %option{ :value => "19" } 7 PM - %option{ :value => "20" } 8 PM - %option{ :value => "21" } 9 PM - %option{ :value => "22" } 10 PM - %option{ :value => "23" } 11 PM - - .columns.wat-cf - .column.left - %h3.title Day - .group - = label_tag :day_chooser_every, "Every day", :class => :label - = radio_button_tag :day_chooser, 0, true, :id => :day_chooser_every, :class => :chooser - - = label_tag :day_chooser_choose, "Choose", :class => :label - = radio_button_tag :day_chooser, 1, false, :id => :day_chooser_choose, :class => :chooser - - .group - -#= select_tag :day, options_from_collection_for_select((0..31)), :id => :day, :multiple => true, :disabled => true - %select{ :name => "day", :id => "day", :multiple => true, :disabled => true } - - (1..31).each do |day| - %option{ :value => day }= day - - .column.right - %h3.title Month - .group - = label_tag :month_chooser_every, "Every month", :class => :label - = radio_button_tag :month_chooser, 0, true, :id => :month_chooser_every, :class => :chooser - - = label_tag :month_chooser_choose, "Choose", :class => :label - = radio_button_tag :month_chooser, 1, false, :id => :month_chooser_choose, :class => :chooser - - .group - %select{ :name => "month", :id => "month", :multiple => true, :disabled => true } - %option{ :value => "1" } January - %option{ :value => "2" } February - %option{ :value => "3" } March - %option{ :value => "4" } April - %option{ :value => "5" } May - %option{ :value => "6" } June - %option{ :value => "7" } July - %option{ :value => "8" } August - %option{ :value => "9" } September - %option{ :value => "10" } October - %option{ :value => "11" } November - %option{ :value => "12" } December - - .columns.wat-cf - .column.left - %h3.title Weekday - .group - = label_tag :weekday_chooser_every, "Every weekday", :class => :label - = radio_button_tag :weekday_chooser, 0, true, :id => :weekday_chooser_every, :class => :chooser - - = label_tag :weekday_chooser_choose, "Choose", :class => :label - = radio_button_tag :weekday_chooser, 1, false, :id => :weekday_chooser_choose, :class => :chooser - - .group - %select{ :name => "weekday", :id => "weekday", :multiple => true, :disabled => "disabled" } - %option{ :value => "0" } Sunday - %option{ :value => "1" } Monday - %option{ :value => "2" } Tuesday - %option{ :value => "3" } Wednesday - %option{ :value => "4" } Thursday - %option{ :value => "5" } Friday - %option{ :value => "6" } Saturday - - .group - %textarea{ :name => "cron", :id => "cron", :rows => "3", :cols => "70" } - - .group.navform.wat-cf - %button.button{ :type => "submit" }= t("layout.crontabs.generate_crontab_line") diff --git a/app/views/products/_crontab.html.haml b/app/views/products/_crontab.html.haml new file mode 100644 index 000000000..0a7d212ea --- /dev/null +++ b/app/views/products/_crontab.html.haml @@ -0,0 +1,188 @@ +- content_for :javascripts do + :javascript + $(function(){ + $(".chooser").click(function() { + var for_element = this.name.replace(/_chooser/,""); + $("#" + for_element).attr("disabled", (this.value !== "1")); + }); + + $(".cron").change(function() { + var minute, hour, day, month, weekday; + + minute = getSelected('minute'); + hour = getSelected('hour'); + day = getSelected('day'); + month = getSelected('month'); + weekday = getSelected('weekday'); + + $("#cron").attr("value", minute + "\t" + hour + "\t" + day + "\t" + month + "\t" + weekday); + + return false; + }); + + $("#product_use_cron").change(function(){ + if ($("#product_use_cron:checked").length > 0) { + $("#cron").attr("disabled", false); + } else { + $("#cron").attr("disabled", true); + } + }); + + $("#genereator_btn a").click(function(){ + $("#crontab_generator").slideToggle(function(){ + + if ($("#crontab_generator").css("display") == "none") { + $("#genereator_btn a").text("Show crontab generator"); + } else { + $("#genereator_btn a").text("Hide crontab generator"); + } + + }); + + return false; + }); + }); + + function getSelected(name) { + var chosen; + + if ($("#" + name + "_chooser_every").attr("checked")) { + chosen = '*'; + } else { + var all_selected = []; + + $("#" + name + " option:selected").each(function(i, ele) { all_selected.push($(ele).attr("value")); }); + + if (all_selected.length) { + chosen = all_selected.join(","); + } else { + chosen = '*'; + } + } + + return chosen; + } + + +.group + = form.check_box :use_cron + = form.label :use_cron + +#genereator_btn + %a{ :href => "#" } Show crontab generator + +#crontab_generator{ :style => "display: none;" } + .columns.wat-cf + .column.left + %h3.title Minutes + .group + = label_tag :minute_chooser_every, "Every minute", :class => :label + = radio_button_tag :minute_chooser, 0, true, :id => :minute_chooser_every, :class => "chooser cron" + + = label_tag :minute_chooser_choose, "Choose", :class => :label + = radio_button_tag :minute_chooser, 1, false, :id => :minute_chooser_choose, :class => "chooser cron" + + .group + %select{ :name => :minute, :id => :minute, :multiple => true, :disabled => true, :class => "cron" } + - (0..59).each do |min| + %option{ :value => min }= min + + .column.right + %h3.title Hour + .group + = label_tag :hour_chooser_every, "Every hour", :class => :label + = radio_button_tag :hour_chooser, 0, true, :id => :minute_chooser_every, :class => "chooser cron" + + = label_tag :hour_chooser_choose, "Choose", :class => :label + = radio_button_tag :hour_chooser, 1, false, :id => :minute_chooser_choose, :class => "chooser cron" + + .group + %select{ :name => :hour, :id => :hour, :multiple => true, :disabled => true, :class => "cron" } + %option{ :value => "0" } 12 Midnight + %option{ :value => "1" } 1 AM + %option{ :value => "2" } 2 AM + %option{ :value => "3" } 3 AM + %option{ :value => "4" } 4 AM + %option{ :value => "5" } 5 AM + %option{ :value => "6" } 6 AM + %option{ :value => "7" } 7 AM + %option{ :value => "8" } 8 AM + %option{ :value => "9" } 9 AM + %option{ :value => "10" } 10 AM + %option{ :value => "11" } 11 AM + %option{ :value => "12" } 12 Noon + %option{ :value => "13" } 1 PM + %option{ :value => "14" } 2 PM + %option{ :value => "15" } 3 PM + %option{ :value => "16" } 4 PM + %option{ :value => "17" } 5 PM + %option{ :value => "18" } 6 PM + %option{ :value => "19" } 7 PM + %option{ :value => "20" } 8 PM + %option{ :value => "21" } 9 PM + %option{ :value => "22" } 10 PM + %option{ :value => "23" } 11 PM + + .columns.wat-cf + .column.left + %h3.title Day + .group + = label_tag :day_chooser_every, "Every day", :class => :label + = radio_button_tag :day_chooser, 0, true, :id => :day_chooser_every, :class => "chooser cron" + + = label_tag :day_chooser_choose, "Choose", :class => :label + = radio_button_tag :day_chooser, 1, false, :id => :day_chooser_choose, :class => "chooser cron" + + .group + %select{ :name => "day", :id => "day", :multiple => true, :disabled => true, :class => "cron" } + - (1..31).each do |day| + %option{ :value => day }= day + + .column.right + %h3.title Month + .group + = label_tag :month_chooser_every, "Every month", :class => :label + = radio_button_tag :month_chooser, 0, true, :id => :month_chooser_every, :class => "chooser cron" + + = label_tag :month_chooser_choose, "Choose", :class => :label + = radio_button_tag :month_chooser, 1, false, :id => :month_chooser_choose, :class => "chooser cron" + + .group + %select{ :name => "month", :id => "month", :multiple => true, :disabled => true, :class => "cron" } + %option{ :value => "1" } January + %option{ :value => "2" } February + %option{ :value => "3" } March + %option{ :value => "4" } April + %option{ :value => "5" } May + %option{ :value => "6" } June + %option{ :value => "7" } July + %option{ :value => "8" } August + %option{ :value => "9" } September + %option{ :value => "10" } October + %option{ :value => "11" } November + %option{ :value => "12" } December + + .columns.wat-cf + .column.left + %h3.title Weekday + .group + = label_tag :weekday_chooser_every, "Every weekday", :class => :label + = radio_button_tag :weekday_chooser, 0, true, :id => :weekday_chooser_every, :class => "chooser cron" + + = label_tag :weekday_chooser_choose, "Choose", :class => :label + = radio_button_tag :weekday_chooser, 1, false, :id => :weekday_chooser_choose, :class => "chooser cron" + + .group + %select{ :name => "weekday", :id => "weekday", :multiple => true, :disabled => "disabled", :class => "cron" } + %option{ :value => "0" } Sunday + %option{ :value => "1" } Monday + %option{ :value => "2" } Tuesday + %option{ :value => "3" } Wednesday + %option{ :value => "4" } Thursday + %option{ :value => "5" } Friday + %option{ :value => "6" } Saturday + +.group + = form.label :cron_tab, :class => :label + = form.text_field :cron_tab, :id => "cron", :class => "text_field", :style => "width: 40%", :disabled => !@product.use_cron, :value => @product.cron_tab + = @product.cron_command \ No newline at end of file diff --git a/app/views/products/_form.html.haml b/app/views/products/_form.html.haml index dc339a1be..a34544c6d 100644 --- a/app/views/products/_form.html.haml +++ b/app/views/products/_form.html.haml @@ -22,6 +22,10 @@ = link_to @product.tar_file_name, @product.tar.url = f.check_box :delete_tar = f.label :delete_tar, t('layout.delete') + +.group + = render :partial => "products/crontab", :locals => { :form => f } + .group = f.label :is_template, :class => :label = f.check_box :is_template, :class => 'check_box' diff --git a/config/routes.rb b/config/routes.rb index 3b62a7bb9..3f4a7649c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -34,9 +34,7 @@ Rosa::Application.routes.draw do end resources :users - - match 'crontabs', :to => 'crontabs#show' - + match 'build_lists/status_build', :to => "build_lists#status_build" match 'build_lists/post_build', :to => "build_lists#post_build" match 'build_lists/pre_build', :to => "build_lists#pre_build" diff --git a/db/migrate/20110428132112_add_cron_tab_to_products.rb b/db/migrate/20110428132112_add_cron_tab_to_products.rb new file mode 100644 index 000000000..4d9894990 --- /dev/null +++ b/db/migrate/20110428132112_add_cron_tab_to_products.rb @@ -0,0 +1,9 @@ +class AddCronTabToProducts < ActiveRecord::Migration + def self.up + add_column :products, :cron_tab, :text + end + + def self.down + remove_column :products, :cron_tab + end +end diff --git a/db/migrate/20110428140753_add_use_cron_to_products.rb b/db/migrate/20110428140753_add_use_cron_to_products.rb new file mode 100644 index 000000000..db07c69fe --- /dev/null +++ b/db/migrate/20110428140753_add_use_cron_to_products.rb @@ -0,0 +1,9 @@ +class AddUseCronToProducts < ActiveRecord::Migration + def self.up + add_column :products, :use_cron, :boolean, :default => false + end + + def self.down + remove_column :products, :use_cron + end +end diff --git a/db/schema.rb b/db/schema.rb index 1c40c3399..727a3cb43 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110414145300) do +ActiveRecord::Schema.define(:version => 20110428140753) do create_table "arches", :force => true do |t| t.string "name", :null => false @@ -99,6 +99,8 @@ ActiveRecord::Schema.define(:version => 20110414145300) do t.datetime "tar_updated_at" t.boolean "is_template", :default => false t.boolean "system_wide", :default => false + t.text "cron_tab" + t.boolean "use_cron", :default => false end create_table "projects", :force => true do |t|