Changeset 5721

Show
Ignore:
Timestamp:
03/24/08 10:13:21 (1 year ago)
Author:
uta
Message:

2008/03/24 sync

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • components/todo_list/trunk/todo_list/_install/component_info.rb

    r5698 r5721  
    11class TodoList::ComponentInfo < RubricksComponentInfo 
    22  def initialize 
    3     @display_name   = '[_TodoList_Title]' 
     3    @display_name   = '[_TodoList_Info_DisplayName]' 
    44    @version        = '0.3.8' 
    5     @description    = '[_TodoList_Component_Description]' 
     5    @description    = '[_TodoList_Info_Description]' 
    66    @author         = 'Rubricks.org' 
    77    @license        = 'MIT' 
    88    @blocks         = [ 
    99      { 
    10         :title          => '[_Todo_Common_TodoReminder]', 
    11         :controller     => '/todo_list/todo', 
    12         :action         => 'reminder_block', 
     10        :title          => '[_TodoList_Info_BlockTitleList]', 
     11        :controller     => '/todo_list/block', 
     12        :action         => 'index', 
    1313        :function       => 'access', 
    14         :description    => '[_Todo_Block_Description]' 
     14        :description    => '[_TodoList_Info_BlockDescList]' 
    1515      } 
    1616    ] 
     
    1919      { 
    2020        :extend_page    => 'main', 
    21         :title          => '[_TodoList_Menu]', 
    22         :controller     => '/todo_list/todo', 
     21        :title          => '[_TodoList_Info_MenuTitleIndex]', 
     22        :controller     => '/todo_list/index', 
    2323        :function       => 'access', 
    24         :description    => 'Main Menu', 
     24        :description    => '[_TodoList_Info_MenuDescIndex]', 
     25      }, 
     26      { 
     27        :extend_page    => 'main', 
     28        :title          => '[_TodoList_Info_MenuTitleList]', 
     29        :controller     => '/todo_list/list', 
     30        :function       => 'access', 
     31        :description    => '[_TodoList_Info_MenuDescList]', 
    2532      }, 
    2633      { 
    2734        :extend_page    => 'admin', 
    28         :title          => '[_Todo_Admin_Title]', 
     35        :title          => '[_TodoList_Info_MenuTitleAdmin]', 
    2936        :controller     => '/todo_list/admin', 
    3037        :function       => 'admin', 
    31         :description    => 'Admin Menu', 
     38        :description    => '[_TodoList_Info_MenuDescAdmin]', 
    3239      } 
    3340    ] 
     
    3542      { 
    3643        :record_type    => 'read', 
    37         :examples       => '[_Todo_TrailRead]' 
     44        :examples       => '[_TodoList_Info_TrailRead]' 
    3845      }, 
    3946      { 
    4047        :record_type    => 'update', 
    41         :examples       => '[_Todo_TrailUpdate]' 
     48        :examples       => '[_TodoList_Info_TrailUpdate]' 
    4249      }, 
    4350    ] 
  • components/todo_list/trunk/todo_list/_install/db/001_todo_list_schema_001.rb

    r4145 r5721  
    55    #################################################################################################################### 
    66    create_table :todo_list_todos, :force => true do |t| 
    7       t.column :title,                                  :string,    :limit => 90,   :default => '',     :null => false 
    8       t.column :content,                                :text 
    9       t.column :category,                               :string,    :limit => 90 
    10       t.column :created_on,                             :datetime,                                      :null => false 
    11       t.column :updated_on,                             :datetime,                                      :null => false 
    12       t.column :start_on,                               :datetime 
    13       t.column :close_on,                               :datetime 
    14       t.column :closed_on,                              :datetime 
    15       t.column :this_order,                             :integer,   :limit => 1,    :default => 2,      :null => false 
     7      t.column :closed_flag,                            :integer,   :limit => 1,    :default => 0,      :null => false 
     8      t.column :delete_flag,                            :integer,   :limit => 1,    :default => 0,      :null => false 
     9      t.column :reminder_flag,                          :integer,   :limit => 1,    :default => 0,      :null => false 
     10      t.column :sync_calendar_flag,                     :integer,   :limit => 1,    :default => 0,      :null => false 
    1611      t.column :order_in_box,                           :integer,   :limit => 255,  :default => 1,      :null => false 
    1712      t.column :progress,                               :integer,   :limit => 2,    :default => 0,      :null => false 
    18       t.column :closed_flag,                            :integer,   :limit => 1,    :default => 0,      :null => false 
    19       t.column :delete_flag,                            :integer,   :limit => 1,    :default => 0,      :null => false 
    2013      t.column :rubricks_user_id_owner,                 :integer,                   :default => 0,      :null => false 
    2114      t.column :rubricks_user_id_from,                  :integer,                   :default => 0,      :null => false 
    2215      t.column :rubricks_user_id_to,                    :integer 
    23       t.column :todo_id,                                :integer,   :limit => 10 
    24       t.column :reminder_flag,                          :integer,   :limit => 1,    :default => 0,      :null => false 
    2516      t.column :reminder_delay,                         :integer,   :limit => 1,    :default => 0,      :null => false 
    2617      t.column :reminder_every,                         :integer,   :limit => 1,    :default => 0,      :null => false 
     18      t.column :this_order,                             :integer,   :limit => 1,    :default => 2,      :null => false 
     19      t.column :todo_id,                                :integer,   :limit => 10 
    2720      t.column :todo_list_category_box_id,              :integer,                                       :null => false 
    28       t.column :sync_calendar_flag,                     :integer,   :limit => 1,    :default => 0,      :null => false 
     21      t.column :category,                               :string,    :limit => 90 
     22      t.column :title,                                  :string,    :limit => 90,   :default => '',     :null => false 
     23      t.column :content,                                :text 
     24      t.column :close_on,                               :datetime 
     25      t.column :closed_on,                              :datetime 
     26      t.column :created_on,                             :datetime,                                      :null => false 
     27      t.column :start_on,                               :datetime 
     28      t.column :updated_on,                             :datetime,                                      :null => false 
    2929    end 
    30      
     30 
    3131    create_table :todo_list_category_boxes, :force => true do |t| 
     32      t.column :box_no,                                 :integer,                   :default => 1,      :null => false 
     33      t.column :rubricks_user_id,                       :integer,                                       :null => false 
    3234      t.column :title,                                  :string,    :limit => 90,   :default => '',     :null => false 
    33       t.column :box_no,                                 :integer,   :limit => 1,    :default => 1,      :null => false 
    34       t.column :rubricks_user_id,                       :integer,                                       :null => false 
    3535    end 
    3636     
    3737    create_table :todo_list_configs, :force => true do |t| 
    38       t.column :site_reminder_flag,                     :integer,   :limit => 1,    :default => 0,      :null => false 
    39       t.column :site_remind_hour,                       :integer,   :limit => 24,   :default => 0,      :null => false 
    40       t.column :site_remind_min,                        :integer,   :limit => 60,   :default => 0,      :null => false 
     38      t.column :site_reminder_flag,                     :integer,                   :default => 0,      :null => false 
     39      t.column :site_remind_hour,                       :integer,                   :default => 0,      :null => false 
     40      t.column :site_remind_min,                        :integer,                   :default => 0,      :null => false 
    4141    end 
    4242 
  • components/todo_list/trunk/todo_list/_install/stylesheets/todo.css

    r5698 r5721  
    1 /*-------------------------*/ 
    2 /* style of list           */ 
    3 /*-------------------------*/ 
    4 .todo_label_dateCompleted { 
    5   background-repeat:            no-repeat; 
    6   padding-left:                 20px; 
    7 
    8 .todo_label_dateWarning { 
    9   background-repeat:            no-repeat; 
    10   padding:                      1px 0px 1px 20px; 
    11 
    12 .todo_list_priority_icon { 
    13   background-repeat:            no-repeat; 
    14   background-position:          right; 
    15   width:                        5px; 
    16   padding:                      0; 
    17   margin:                       0; 
    18 
    19 .todo_list_colb { 
    20   padding:                      2px; 
    21   border-collapse:              collapse; 
    22   margin:                       0; 
    23 
    24 .todo_list_colb_text{ 
    25   padding:                      0; 
    26   margin:                       0; 
    27   border:                       none; 
    28   border-collapse:              collapse; 
    29   text-align:                   left; 
    30 
    31 .todo_list_colh{ 
    32   padding:                      2px; 
    33   border-collapse:              collapse; 
    34   margin:                       0; 
    35 
    36 .todo_list_colh_text{ 
    37   padding:                      0; 
    38   margin:                       0; 
    39   border:                       none; 
    40   border-collapse:              collapse; 
    41   text-align:                   center; 
    42 
    43 .todo_list_coln1_right{ 
    44   background-repeat:            no-repeat; 
    45   border:                       none; 
    46   padding:                      2px; 
    47   border-collapse:              collapse; 
    48   margin:                       0; 
    49 
    50 .todo_list_rowb { 
    51   padding:                      0; 
    52   border-collapse:              collapse; 
    53   margin:                       auto; 
    54   width:                        98%; 
    55 
    56 .todo_list_rowb:hover { 
    57   padding:                      0; 
    58   border-collapse:              collapse; 
    59   margin:                       auto; 
    60   width:                        98%; 
    61   background-color:             #ffffcc; 
    62   filter:                       alpha(opacity=90); /*IE*/ 
    63 
    64 .todo_list_tbody { 
    65   filter:                       alpha(opacity=90); /*IE*/ 
    66 
    67 .todo_list_tbody_hover { 
    68   background-color:             #ffffcc; 
    69   filter:                       alpha(opacity=90); /*IE*/ 
    70 
    71 .todo_list_rowb_print { 
    72   padding:                      0; 
    73   border-collapse:              collapse; 
    74   margin:                       auto; 
    75   width:                        98%; 
    76 
    77 .todo_list_rowh { 
    78   padding:                      0; 
    79   border-collapse:              collapse; 
    80   margin:                       auto; 
    81   position:                     relative; 
    82   width:                        98%; 
     1/*--[Settings for Common]-------------*/ 
     2.todo_validate_msg { 
     3  height:                       18px; 
     4  line-height:                  18px; 
     5  margin-top:                   2px; 
    836} 
    847 
    85 /*-------------------------*/ 
    86 /* Common                  */ 
    87 /*-------------------------*/ 
    88 .todo_input_style { 
    89   margin:                       10px; 
     8/*--[Settings for Tyle Style]---------*/ 
     9div.todo_area { 
     10  margin:                       10px 0; 
    9011} 
     12td.todo_category_box { 
     13  padding:                      0; 
     14  text-align:                   center; 
     15  vertical-align:               top; 
     16  width:                        30%; 
     17} 
     18div.todo_category_box { 
     19  float:                        left; 
     20  min-height:                   300px; 
     21  width:                        100%; 
     22} 
     23div.todo_tile { 
     24  border-style:                 solid; 
     25  border-width:                 1px; 
     26  margin:                       3px auto; 
     27  padding:                      3px; 
     28  text-align:                   left; 
     29  width:                        95%; 
     30} 
     31table.todo_tile { 
     32  table-layout:                 fixed; 
     33  width:                        100%; 
     34} 
     35table.todo_tile tr td { 
     36  border:                       none; 
     37  padding:                      0; 
     38} 
     39.todo_tile_buttons { 
     40  height:                       21px; 
     41  line-height:                  21px; 
     42  width:                        75px; 
     43} 
     44img.todo_tile_dummy { 
     45  float:                        left; 
     46  height:                       300px; 
     47  width:                        1px; 
     48} 
     49div.todo_tile_priority_1 { 
     50  border-right:                 5px solid #66cc00; 
     51} 
     52div.todo_tile_priority_2 { 
     53  border-right:                 5px solid #ffcc00; 
     54} 
     55div.todo_tile_priority_3 { 
     56  border-right:                 5px solid #ff3333; 
     57} 
     58 
     59/*--[Settings for Progress Bar]-------*/ 
    9160.todo_progress { 
    9261  font-size:                    1px; 
    9362  height:                       10px; 
    9463  padding:                      0; 
    95   width:                        60px; 
    9664} 
    9765.todo_progress_done { 
     
    10472  background-color:             #bbbbff; 
    10573} 
    106 .todo_tile_icon_delete { 
    107   border:                       none; 
    108   padding:                      0; 
    109   margin:                       0; 
    110   cursor:                       pointer; 
    111 } 
    112 .todo_tile_icon_edit { 
    113   border:                       none; 
    114   padding:                      0; 
    115   margin:                       0; 
    116   cursor:                       pointer; 
    117 } 
    118 .todo_tile_icon_not_completed { 
    119   border:                       none; 
    120   padding:                      0; 
    121   margin:                       0; 
    122   cursor:                       pointer; 
    123 } 
    124 .todo_tile_icon_reopen { 
    125   border:                       none; 
    126   padding:                      0; 
    127   margin:                       0; 
    128   cursor:                       pointer; 
    129 } 
  • components/todo_list/trunk/todo_list/admin/_main_edit_content.rhtml

    r5698 r5721  
    11<% validate_page do %> 
    2   <% render_detail('00', hl('[_Todo_Admin_Frame_Title]')) do %> 
     2  <% render_detail('00', hl('[_TodoList_Common_TodoConfig]')) do %> 
    33    <% validate_form('update_button') do %> 
    44      <% form_main_tag(:url=>{:controller => '/todo_list/admin', :action => 'update'}, :html => {:id => 'todo_edit_form'}) do %> 
    55        <% render_float_button('float_button_area_admin_edit') do %> 
    66          <div class="float_button_right_inactive swap"> 
    7             <span id="todo_admin_edit_cancel_button" class="buttons icon_cancel" onclick="rubricks.todo_list.change_read_mode();"><%= hl('[_Common_Cancel]') %></span> 
     7            <span id="todo_admin_edit_cancel_button" class="buttons icon_cancel" onclick="rubricks.todo_list.admin_change_read_mode();"><%= hl('[_Common_Cancel]') %></span> 
    88          </div> 
    99          <div class="float_button_right_inactive swap"> 
     
    1313        <table class="rubricks_general_table"> 
    1414          <tr class="rubricks_general_table_even"> 
    15             <td style="width:30%;"><%= hl('[_Todo_Common_Reminder]')%></td> 
     15            <td style="width:30%;"><%= hl('[_TodoList_Common_Reminder]')%></td> 
    1616            <td style="width:70%;"> 
    17               <input type="radio" id="todo_config_site_reminder_flag_use"     name="todo_config[site_reminder_flag]" class="check" value="1" onclick="rubricks.todo_list.toggle_admin_calendar_flag();" <%= (@todo_config.site_reminder_flag == 1) ? 'checked="checked"' : '' %> /> 
     17              <input type="radio" id="todo_config_site_reminder_flag_use"     name="todo_config[site_reminder_flag]" class="check" value="true"  onclick="rubricks.todo_list.admin_toggle_reminder_flag();" <%= (@tlc.site_reminder_flag) ? 'checked="checked"' : '' %> /> 
    1818              <label for="todo_config_site_reminder_flag_use"><%= hl('[_Common_Use]') %></label> 
    19               <input type="radio" id="todo_config_site_reminder_flag_not_use" name="todo_config[site_reminder_flag]" class="check" value="0" onclick="rubricks.todo_list.toggle_admin_calendar_flag();" <%= (@todo_config.site_reminder_flag == 1) ? '' : 'checked="checked"' %> /> 
     19              <input type="radio" id="todo_config_site_reminder_flag_not_use" name="todo_config[site_reminder_flag]" class="check" value="false" onclick="rubricks.todo_list.admin_toggle_reminder_flag();" <%= (@tlc.site_reminder_flag) ? '' : 'checked="checked"' %> /> 
    2020              <label for="todo_config_site_reminder_flag_not_use"><%= hl('[_Common_NotUse]') %></label> 
    2121            </td> 
    2222          </tr> 
    2323          <tr id="todo_edit_area_time" class="rubricks_general_table_even"> 
    24             <td><%= hl('[_Todo_Admin_RemindTime]')%></td> 
    25             <td> 
    26               <%= select_number :name => 'todo_config[site_remind_hour]', :range => 0..23, :step => 1,  :selected => @todo_config.site_remind_hour, :disabled => 1 %> 
    27               <%= hl('[_Common_Hour]')%> 
    28               <%= select_number :name => 'todo_config[site_remind_min]',  :range => 0..59, :step => 30, :selected => @todo_config.site_remind_min,  :disabled => 1 %> 
    29               <%= hl('[_Common_Minute]')%> 
    30             </td> 
     24            <td><%= hl('[_TodoList_Admin_RemindTime]')%></td> 
     25            <td><%= render_site_remind_time_select(@tlc) %></td> 
    3126          </tr> 
    3227        </table> 
  • components/todo_list/trunk/todo_list/admin/_main_read_content.rhtml

    r5698 r5721  
    1 <% render_detail('00', hl('[_Todo_Admin_Frame_Title]')) do %> 
     1<% render_detail('00', hl('[_TodoList_Common_TodoConfig]')) do %> 
    22  <% render_float_button('float_button_area_read') do %> 
    33    <div id="todo_admin_edit_mode_form" class="float_button_right_inactive swap"> 
    4       <span id="todo_admin_edit_mode_button" class="buttons icon_edit" onclick="rubricks.todo_list.change_edit_mode();"><%= hl('[_Common_Edit]') %></span> 
     4      <span id="todo_admin_edit_mode_button" class="buttons icon_edit" onclick="rubricks.todo_list.admin_change_edit_mode();"><%= hl('[_Common_Edit]') %></span> 
    55    </div> 
    66  <% end %> 
    77  <table class="rubricks_general_table"> 
    88    <tr class="rubricks_general_table_even"> 
    9       <td style="width:30%;"><%= hl('[_Todo_Common_Reminder]')%></td> 
    10       <td style="width:70%;"> 
    11         <%= (@todo_config.site_reminder_flag != 0) ? hl('[_Common_Use]') : hl('[_Common_NotUse]') %> 
    12       </td> 
     9      <td style="width:30%;"><%= hl('[_TodoList_Common_Reminder]')%></td> 
     10      <td style="width:70%;"><%= (@tlc.site_reminder_flag) ? hl('[_Common_Use]') : hl('[_Common_NotUse]') %></td> 
    1311    </tr> 
    14     <tr class="rubricks_general_table_even" <%= (@todo_config.site_reminder_flag != 0) ? '' : 'style="display:none;"' %>> 
    15       <td><%= hl('[_Todo_Admin_RemindTime]')%></td> 
    16       <td> 
    17         <%= h(@todo_config.site_remind_hour) %> 
    18         <%= hl('[_Common_Hour]')%> 
    19         <%= h(@todo_config.site_remind_min) %> 
    20         <%= hl('[_Common_Minute]')%> 
    21       </td> 
     12    <tr class="rubricks_general_table_even" <%= (@tlc.site_reminder_flag) ? '' : 'style="display:none;"' %>> 
     13      <td><%= hl('[_TodoList_Admin_RemindTime]')%></td> 
     14      <td><%= sprintf('%02d', @tlc.site_remind_hour) %>:<%= sprintf('%02d', @tlc.site_remind_min) %></td> 
    2215    </tr> 
    2316  </table> 
  • components/todo_list/trunk/todo_list/admin/main.rhtml

    r5698 r5721  
    1717<script type="text/javascript"> 
    1818  rubricks.common.FormEditor.readMode('todo_edit_area'); 
    19   Object.extend(rubricks.todo_list, { 
    20     change_edit_mode: function() { 
    21       rubricks.common.Validator.refresh(); 
    22       rubricks.common.FormEditor.editMode('todo_edit_area'); 
    23     }, 
    24     change_read_mode: function() { 
    25       rubricks.common.FormEditor.readMode('todo_edit_area', 'todo_edit_form'); 
    26       this.toggle_admin_calendar_flag(); 
    27     }, 
    28     toggle_admin_calendar_flag: function() { 
    29       var sync_calendar_time_open_flag = ($('todo_config_site_reminder_flag_use').checked == true); 
    30       if(sync_calendar_time_open_flag){ 
    31         $('todo_edit_area_time').style.display = ''; 
    32       } else { 
    33         $('todo_edit_area_time').style.display = 'none'; 
    34       } 
    35     } 
    36   }); 
    37   rubricks.todo_list.toggle_admin_calendar_flag(); 
     19  rubricks.todo_list.admin_toggle_reminder_flag(); 
    3820</script> 
    3921<%= flash_for_feedback_msg(:todo_common) %> 
  • components/todo_list/trunk/todo_list/admin_controller.rb

    r5698 r5721  
    22  define_page 
    33  uses_component_template_root 
    4   helper 'todo_list/todo' 
    54 
    65  def main 
    7     @todo_config = TodoList::TodoListConfig.instance 
    8     if @todo_config.site_reminder_flag==1 
    9       rubricks_logger(:action_type => :detail, :data => { 
    10         RubricksLib.hl('[_Todo_TrailAdminUpdate_col1]') => (@todo_config.site_reminder_flag==1 ? RubricksLib.hl('[_Common_Use]') : RubricksLib.hl('[_Common_NotUse]')), 
    11         RubricksLib.hl('[_Todo_TrailAdminUpdate_col2]') => @todo_config.site_remind_hour, 
    12         RubricksLib.hl('[_Todo_TrailAdminUpdate_col3]') => @todo_config.site_remind_min 
    13       }) 
    14     else 
    15       rubricks_logger(:action_type => :detail, :data => { 
    16         RubricksLib.hl('[_Todo_TrailAdminUpdate_col1]') => (@todo_config.site_reminder_flag==1 ? RubricksLib.hl('[_Common_Use]') : RubricksLib.hl('[_Common_NotUse]')) 
    17       }) 
    18     end 
     6    @tlc = TodoList::TodoListConfig.instance 
     7    rubricks_logger(:action_type => :detail, :data => @tlc) 
    198  end 
    209 
    2110  def update 
    22     @todo_config = TodoList::TodoListConfig.instance 
    23     if @todo_config.update_attributes(params[:todo_config]) 
    24       flash[:todo_common] = RubricksLib.hl('[_Todo_Admin_Updated]') 
    25       if @todo_config.site_reminder_flag==1 
    26         rubricks_logger(:action_type => :update, :data => { 
    27           RubricksLib.hl('[_Todo_TrailAdminUpdate_col1]') => (@todo_config.site_reminder_flag==1 ? RubricksLib.hl('[_Common_Use]') : RubricksLib.hl('[_Common_NotUse]')), 
    28           RubricksLib.hl('[_Todo_TrailAdminUpdate_col2]') => @todo_config.site_remind_hour, 
    29           RubricksLib.hl('[_Todo_TrailAdminUpdate_col3]') => @todo_config.site_remind_min 
     11    begin 
     12      ActiveRecord::Base.transaction do 
     13        @tlc = TodoList::TodoListConfig.instance 
     14        @tlc.update_attributes({ 
     15          :site_reminder_flag   => params[:todo_config][:site_reminder_flag], 
     16          :site_remind_hour     => params[:todo_config][:site_remind_hour], 
     17          :site_remind_min      => params[:todo_config][:site_remind_min], 
    3018        }) 
    31       else 
    32         rubricks_logger(:action_type => :update, :data => { 
    33           RubricksLib.hl('[_Todo_TrailAdminUpdate_col1]') => (@todo_config.site_reminder_flag==1 ? RubricksLib.hl('[_Common_Use]') : RubricksLib.hl('[_Common_NotUse]')) 
    34         }) 
     19        TodoList::TodoListLib.save_cron 
    3520      end 
    36     else 
    37       flash[:todo_common] = RubricksLib.hl('[_Todo_Admin_NotUpdated]') 
     21    rescue Exception => ex 
     22      logger.error(ex.message) 
     23      logger.error(ex.backtrace.join("\n  ")) 
     24      flash[:todo_update_error] = '[_TodoList_Admin_ErrorUpdate]' 
    3825    end 
    39     save_cron 
     26    flash[:todo_update_message] = '[_TodoList_Admin_MessageUpdate]' 
     27    rubricks_logger(:action_type => :update, :data => @tlc) 
    4028    redirect_to :action => 'main' 
    4129  end 
    42  
    43   private 
    44   def save_cron 
    45     c = RubricksCron.count("name = 'todo_remind_mail'") 
    46     if c == 0 
    47       new_cron = RubricksCron.new 
    48       new_cron.name = 'todo_remind_mail' 
    49       new_cron.hour = TodoList::TodoListConfig.instance.site_remind_hour 
    50       new_cron.min = TodoList::TodoListConfig.instance.site_remind_min 
    51       new_cron.args = '[]' 
    52       new_cron.command_class_name = 'TodoList::RemindMailCron' 
    53       new_cron.loop = 1 
    54       new_cron.save! 
    55     else 
    56       current_cron = RubricksCron.find_by_name('todo_remind_mail') 
    57       current_cron.hour = TodoList::TodoListConfig.instance.site_remind_hour 
    58       current_cron.min = TodoList::TodoListConfig.instance.site_remind_min 
    59       current_cron.save! 
    60     end 
    61   end 
    6230end 
  • components/todo_list/trunk/todo_list/component_plugins/reminder/init.rb

    r4142 r5721  
    1 c = RubricksCron.count("name = 'todo_remind_mail'") 
    2  
    3 if c == 0 
    4   new_cron = RubricksCron.new 
    5   new_cron.name = 'todo_remind_mail' 
    6   new_cron.hour = TodoList::TodoListConfig.instance.site_remind_hour 
    7   new_cron.min = TodoList::TodoListConfig.instance.site_remind_min 
    8   new_cron.args = '[]' 
    9   new_cron.command_class_name = 'TodoList::RemindMailCron' 
    10   new_cron.loop = 1 
    11   new_cron.save 
    12 else 
    13   current_cron = RubricksCron.find_by_name('todo_remind_mail') 
    14   current_cron.hour = TodoList::TodoListConfig.instance.site_remind_hour 
    15   current_cron.min = TodoList::TodoListConfig.instance.site_remind_min 
    16   current_cron.save 
    17 end 
     1TodoList::TodoListLib.save_cron 
  • components/todo_list/trunk/todo_list/languages/chinese.rb

    r5705 r5721  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('chinese')['_TodoList_Title']                        = 'ToDo' 
    4     lang('chinese')['_TodoList_Component_Description']        = 'ToDo管理的工å 
    5 ·' 
    6  
    7     lang('chinese')['_TodoList_Menu']                         = 'ToDo列衚' 
    8     lang('chinese')['_TodoList_Frame_Title']                  = 'ToDo' 
    9  
    10     lang('chinese')['_Todo_TrailRead']                        = '查看ToDo' 
    11     lang('chinese')['_Todo_TrailUpdate']                      = 'ToDo的新建・修改・删陀' 
    12  
    13     lang('chinese')['_Todo_TrailUpdate_Note_CatChange']       = '曎换分类' 
    14     lang('chinese')['_Todo_TrailUpdate_Note_CatNameChange']   = '修改分类名称' 
    15     lang('chinese')['_Todo_TrailUpdate_Note_TodoClose']       = '任务完成' 
    16     lang('chinese')['_Todo_TrailList_Note_TileView']          = 'ToDo的列衚星瀺区域' 
    17  
    18     lang('chinese')['_Todo_TrailAdminUpdate_col1']             = '是吊可以䜿甚ToDo提醒' 
    19     lang('chinese')['_Todo_TrailAdminUpdate_col2']             = 'ToDo提醒发信时' 
    20     lang('chinese')['_Todo_TrailAdminUpdate_col3']             = 'ToDo提醒发信分' 
    21  
    22     lang('chinese')['_Todo_Admin_Title']                      = 'ToDo讟眮' 
    23     lang('chinese')['_Todo_Admin_Frame_Title']                = 'ToDo讟眮' 
    24     lang('chinese')['_Todo_Admin_Updated']                    = 'ToDo讟眮修改完毕。' 
    25     lang('chinese')['_Todo_Admin_NotUpdated']                 = 'ToDo讟眮修改倱莥。' 
    26     lang('chinese')['_Todo_Common_Reminder']                  = 'ToDo提醒' 
    27     lang('chinese')['_Todo_Common_TodoReminder']              = 'ToDo提醒' 
    28     lang('chinese')['_Todo_Admin_RemindTime']                 = '提醒邮件发送时闎' 
    29     lang('chinese')['_Todo_Common_Todo']                      = 'ToDo'     
    30  
    31     lang('chinese')['_Todo_Block_Description']                = '星瀺圚提醒期闎的ToDo任务的版块。' 
    32  
    33     lang('chinese')['_Todo_Com_tabMenu1']                     = '未完成' 
    34     lang('chinese')['_Todo_Com_tabMenu2']                     = '完成' 
    35     lang('chinese')['_Todo_Com_tabMenu3']                     = 'å 
    36 šéƒš' 
    37  
    38     lang('chinese')['_Todo_Com_CategoryBoxName']              = '分类名称' 
    39     lang('chinese')['_Todo_Com_labelViewStyle']               = 'ToDo的星瀺方匏' 
    40     lang('chinese')['_Todo_Com_optionViewStyle1']             = '列衚' 
    41     lang('chinese')['_Todo_Com_optionViewStyle2']             = '平铺' 
    42  
    43     lang('chinese')['_Todo_Com_btn_done']                     = '完成' 
    44     lang('chinese')['_Todo_Com_btn_view']                     = '诊细' 
    45     lang('chinese')['_Todo_Com_btn_edit']                     = '猖蟑' 
    46     lang('chinese')['_Todo_Com_btn_delete']                   = '删陀' 
    47     lang('chinese')['_Todo_Com_btn_reopen']                   = '改䞺未完成' 
    48  
    49 #    lang('chinese')['_Todo_Com_this_order_0']                 = '未指定' 
    50     lang('chinese')['_Todo_Com_this_order_1']                 = '䜎' 
    51     lang('chinese')['_Todo_Com_this_order_2']                 = '普通' 
    52     lang('chinese')['_Todo_Com_this_order_3']                 = '高' 
    53  
    54     lang('chinese')['_Todo_Main_msg_delete_confirm']          = '确实芁删陀吗' 
    55     lang('chinese')['_Todo_Main_msg_done_confirm']            = '确实芁把状态改䞺完成进床100%吗' 
    56     lang('chinese')['_Todo_Main_MsgReopenConfirm']            = '确实芁把状态改䞺未完成吗' 
    57  
    58     lang('chinese')['_Todo_Main_Created']                     = 'ToDo创建完毕。' 
    59     lang('chinese')['_Todo_Main_Updated']                     = 'ToDo修改完毕。' 
    60     lang('chinese')['_Todo_Main_Completed']                   = 'ToDo状态改䞺完成。' 
    61     lang('chinese')['_Todo_Main_Deleted']                     = 'ToDo删陀完毕。' 
    62  
    63     lang('chinese')['_Todo_Main_SearchNotFound']              = '没有笊合条件的ToDo。' 
    64     lang('chinese')['_Todo_Main_msg_cannot_complete']         = '倄于可以保存的状态后、请按䞋完成按钮。' 
    65  
    66     lang('chinese')['_Todo_Main_msg_dateTermConfirm1']        = '期闎匀始日期䞍胜圚期闎结束日期之后。' 
    67     lang('chinese')['_Todo_Main_msg_dateTermConfirm2']        = '期闎结束日期䞍胜圚期闎匀始日期之前。' 
    68  
    69  
    70     lang('chinese')['_Todo_ListView_title']                   = '标题' 
    71     lang('chinese')['_Todo_ListView_content']                 = '冠
    72 å®¹' 
    73     lang('chinese')['_Todo_ListView_this_order']              = '䌘å 
    74 ˆçº§åˆ«' 
    75     lang('chinese')['_Todo_ListView_progress']                = '进床' 
    76     lang('chinese')['_Todo_ListView_created_on']              = '创建日' 
    77     lang('chinese')['_Todo_ListView_start_on']                = '预定匀始日' 
    78     lang('chinese')['_Todo_ListView_close_on']                = '预定完成日' 
    79     lang('chinese')['_Todo_ListView_closed_on']               = '完成日' 
    80     lang('chinese')['_Todo_ListView_dot']                     = '・' 
    81     lang('chinese')['_Todo_ListView_semi']                    = '' 
    82  
    83     lang('chinese')['_Todo_Reminder_NotFound']                = '提醒䞍存圚。' 
    84     lang('chinese')['_Todo_Reminder_Off']                     = '根据管理耠
    85 çš„讟眮䞍胜䜿甚ToDo的提醒功胜。' 
    86     lang('chinese')['_Todo_Reminder_BeforeDay']               = '䞺%d倩之后' 
    87     lang('chinese')['_Todo_Reminder_JustToday']               = '今倩截止' 
    88     lang('chinese')['_Todo_Reminder_AfterDay']                = '已过%d倩' 
    89     lang('chinese')['_Todo_Reminder_ToHome']                  = 'ToDo' 
    90     lang('chinese')['_Todo_Reminder_Detail']                  = 'ToDo诊细' 
    91     lang('chinese')['_Todo_Admin_RunDruby']                   = '※劂需䜿甚请启劚backgrounDrb' 
    92  
    93     lang('chinese')['_Todo_EditDlg_label_title']              = 'ToDo猖蟑画面' 
    94     lang('chinese')['_Todo_EditDlg_label_title_new']          = '新建ToDo' 
    95     lang('chinese')['_Todo_EditDlg_label_title_update']       = 'ToDo猖蟑' 
    96     lang('chinese')['_Todo_EditDlg_msg_on_serverError']       = '䞍胜修改ToDo。确讀蟓å 
    97 ¥å† 
    98 å®¹åŽïŒŒé‡æ–°æ‰§è¡Œè¯¥æ“äœœã€‚' 
    99     lang('chinese')['_Todo_EditDlg_msg_required']             = '(*å¿ 
    100 é¡»)' 
    101     lang('chinese')['_Todo_EditDlg_msg_dateFmtRule']          = '蟓å 
    102 ¥æ ŒåŒïŒš(幎4䜍/月/日)' 
    103     lang('chinese')['_Todo_EditDlg_label_save']               = '保存' 
    104     lang('chinese')['_Todo_EditDlg_label_save_option']        = '保存的同时将ToDo改䞺完成' 
    105     lang('chinese')['_Todo_EditDlg_label_cancel']             = '取消' 
    106     lang('chinese')['_Todo_EditDlg_msg_dateConfirm']          = '请蟓å 
    107 ¥æ ŒåŒäžºyyyy/MM/dd的日期。' 
    108     lang('chinese')['_Todo_EditDlg_msg_dateTermConfirm1']     = '预定匀始日䞍胜圚预定完成日之后。' 
    109     lang('chinese')['_Todo_EditDlg_msg_dateTermConfirm2']     = '预定完成日䞍胜圚预定匀始日之前。' 
    110     lang('chinese')['_Todo_EditDlg_msg_progressConfirm']      = '请选择进床。' 
    111     lang('chinese')['_Todo_EditDlg_msg_dateInvalid']          = '该日期䞍存圚。' 
    112  
    113     lang('chinese')['_Todo_EditDlg_title']                    = '标题' 
    114     lang('chinese')['_Todo_EditDlg_content']                  = '冠
    115 å®¹' 
    116     lang('chinese')['_Todo_EditDlg_this_order']               = '䌘å 
    117 ˆçº§åˆ«' 
    118     lang('chinese')['_Todo_EditDlg_progress']                 = '进床' 
    119     lang('chinese')['_Todo_EditDlg_created_on']               = '创建日' 
    120     lang('chinese')['_Todo_EditDlg_start_on']                 = '预定匀始日' 
    121     lang('chinese')['_Todo_EditDlg_close_on']                 = '预定完成日' 
    122     lang('chinese')['_Todo_EditDlg_closed_on']                = '完成日' 
    123     lang('chinese')['_Todo_EditDlg_rubricks_user_id_from']    = '创建耠
    124 
    125  
    126     lang('chinese')['_Todo_EditDlg_CalendarSync']             = '和日历联劚' 
    127     lang('chinese')['_Todo_EditDlg_CalendarRegisterTime']     = '创建时闎 ' 
    128     lang('chinese')['_Todo_EditDlg_CalendarHour']             = '时' 
    129     lang('chinese')['_Todo_EditDlg_CalendarMin']              = '分' 
    130     lang('chinese')['_Todo_EditDlg_SendReminder']             = '发送提醒' 
    131     lang('chinese')['_Todo_EditDlg_FromCompleteDate']         = '预定完成日期的' 
    132     lang('chinese')['_Todo_EditDlg_Today']                    = '圓倩' 
    133     lang('chinese')['_Todo_EditDlg_ToCompleteDate']           = '匀始' 
    134     lang('chinese')['_Todo_EditDlg_Everyday']                 = '每倩' 
    135     lang('chinese')['_Todo_EditDlg_AtOnce']                   = 'ä» 
    136 1次' 
    137     lang('chinese')['_Todo_EditDlg_Notify']                   = '提醒' 
    138  
    139     lang('chinese')['_Todo_TileView_label_priority3']         = '正圚倄理的任务' 
    140     lang('chinese')['_Todo_TileView_label_priority2']         = '等埠
    141 å€„理的任务' 
    142     lang('chinese')['_Todo_TileView_label_priority1']         = '未打算倄理的任务' 
    143     lang('chinese')['_Todo_TileView_label_closeOn']           = '截止日' 
    144     lang('chinese')['_Todo_TileView_cssTitle_category_box']   = '可以猖蟑分类名称' 
    145  
    146     lang('chinese')['_filter_target1']                        = '标题' 
    147     lang('chinese')['_filter_target2']                        = '冠
    148 å®¹' 
    149     lang('chinese')['_filter_target3']                        = '䌘å 
    150 ˆçº§åˆ«' 
    151     lang('chinese')['_filter_target4']                        = '预定匀始日' 
    152     lang('chinese')['_filter_target5']                        = '预定完成日' 
    153  
    154     lang('chinese')['_filter1_kind']                          = '前面匹é 
    155 ' 
    156  
    157     lang('chinese')['_filter3_order1']                        = '䜎' 
    158     lang('chinese')['_filter3_order2']                        = '普通' 
    159     lang('chinese')['_filter3_order3']                        = '高' 
    160  
    161     lang('chinese')['_filter_target_label']                   = '检玢对象' 
    162     lang('chinese')['_filter1_kind_label']                    = '检玢方法・å 
    163 ³é”®å­—' 
    164     lang('chinese')['_filter3_order_label']                   = '䌘å 
    165 ˆçº§åˆ«ïŒš' 
    166     lang('chinese')['_filter4_term_label']                    = '期闎' 
    167  
    168     lang('chinese')['_filter4_text0_label_jp']                = '' 
    169     lang('chinese')['_filter4_text1_label_jp']                = '匀始' 
    170     lang('chinese')['_filter4_text2_label_jp']                = '结束' 
     3    lang('chinese').merge!({ 
     4      '_TodoList_Admin_ErrorUpdate'                             => 'ToDo讟眮修改倱莥。', 
     5      '_TodoList_Admin_MessageUpdate'                           => 'ToDo讟眮修改完毕。', 
     6      '_TodoList_Admin_RemindTime'                              => '提醒邮件发送时闎', 
     7      '_TodoList_Common_CloseOn'                                => '预定完成日', 
     8      '_TodoList_Common_DeadlineAfter'                          => '已过%d倩', 
     9      '_TodoList_Common_DeadlineBefore'                         => '䞺%d倩之后', 
     10      '_TodoList_Common_DeadlineJust'                           => '今倩截止', 
     11      '_TodoList_Common_ErrorCreate'                            => 'ToDo创建倱莥。', 
     12      '_TodoList_Common_ErrorDelete'                            => 'ToDo删陀倱莥。', 
     13      '_TodoList_Common_ErrorTodoNotSelected'                   => 'ToDo没有选择。', 
     14      '_TodoList_Common_ErrorUpdate'                            => 'ToDo猖蟑倱莥。', 
     15      '_TodoList_Common_InputWindowTitle'                       => 'ToDo猖蟑画面', 
     16      '_TodoList_Common_MessageCreate'                          => 'ToDo创建完毕。', 
     17      '_TodoList_Common_MessageDelete'                          => 'ToDo删陀完毕。', 
     18      '_TodoList_Common_MessageFinishConfirm'                   => '确实芁把状态改䞺完成进床100%吗', 
     19      '_TodoList_Common_MessageRevertConfirm'                   => '确实芁把状态改䞺未完成进床90%吗', 
     20      '_TodoList_Common_MessageUpdate'                          => 'ToDo修改完毕。', 
     21      '_TodoList_Common_Progress'                               => '进床', 
     22      '_TodoList_Common_Reminder'                               => 'ToDo提醒', 
     23      '_TodoList_Common_RemindOptionsDelimiter'                 => '匀始', 
     24      '_TodoList_Common_RemindOptionAtOnce'                     => 'ä» 
     251次', 
     26      '_TodoList_Common_RemindOptionEveryday'                   => '每倩', 
     27      '_TodoList_Common_SendReminder'                           => '发送提醒', 
     28      '_TodoList_Common_SendReminderAtOnce'                     => '圚%s发送提醒', 
     29      '_TodoList_Common_SendReminderEveryday'                   => '%s匀始每倩发送提醒', 
     30      '_TodoList_Common_StartOn'                                => '预定匀始日', 
     31      '_TodoList_Common_ThisOrder'                              => '䌘å 
     32ˆçº§åˆ«', 
     33      '_TodoList_Common_Todo'                                   => 'ToDo', 
     34      '_TodoList_Common_TodoConfig'                             => 'ToDo讟眮', 
     35      '_TodoList_Common_TodoDetail'                             => 'ToDo诊细', 
     36      '_TodoList_Common_TodoList'                               => 'ToDo列衚', 
     37      '_TodoList_Filter_TargetOptionAll'                        => 'å 
     38šéƒš', 
     39      '_TodoList_Filter_TargetOptionCompleted'                  => '完成', 
     40      '_TodoList_Filter_TargetOptionUncompleted'                => '未完成', 
     41      '_TodoList_Index_LabelPriority1'                          => '未打算倄理的任务', 
     42      '_TodoList_Index_LabelPriority2'                          => '等埠
     43倄理的任务', 
     44      '_TodoList_Index_LabelPriority3'                          => '正圚倄理的任务', 
     45      '_TodoList_Info_BlockDescList'                            => 'Todo版块', 
     46      '_TodoList_Info_BlockTitleList'                           => 'Todo版块', 
     47      '_TodoList_Info_Description'                              => 'ToDo管理的工å 
     48·', 
     49      '_TodoList_Info_DisplayName'                              => 'ToDo', 
     50      '_TodoList_Info_MenuDescAdmin'                            => 'ToDo讟眮', 
     51      '_TodoList_Info_MenuDescIndex'                            => 'Todo', 
     52      '_TodoList_Info_MenuDescList'                             => 'ToDo列衚', 
     53      '_TodoList_Info_MenuTitleAdmin'                           => 'ToDo讟眮', 
     54      '_TodoList_Info_MenuTitleIndex'                           => 'ToDo', 
     55      '_TodoList_Info_MenuTitleList'                            => 'ToDo列衚', 
     56      '_TodoList_Info_TrailRead'                                => '查看ToDo', 
     57      '_TodoList_Info_TrailUpdate'                              => 'ToDo的新建・修改・删陀', 
     58    }) 
    17159  end 
    17260end 
  • components/todo_list/trunk/todo_list/languages/english.rb

    r5698 r5721  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('english')['_TodoList_Title']                        = 'ToDo' 
    4     lang('english')['_TodoList_Component_Description']        = 'The component for todo-management.' 
    5      
    6     lang('english')['_TodoList_Menu']                         = 'ToDo' 
    7     lang('english')['_TodoList_Frame_Title']                  = 'ToDo' 
    8  
    9     lang('english')['_Todo_TrailRead']                        = 'Read a todo' 
    10     lang('english')['_Todo_TrailUpdate']                      = 'Post/Edit/Delete a todo' 
    11  
    12     lang('english')['_Todo_TrailUpdate_Note_CatChange']       = 'Moving Category' 
    13     lang('english')['_Todo_TrailUpdate_Note_CatNameChange']   = 'Changing Category Name' 
    14     lang('english')['_Todo_TrailUpdate_Note_TodoClose']       = 'Completing ToDo' 
    15     lang('english')['_Todo_TrailList_Note_TileView']          = 'ToDo View Area' 
    16  
    17     lang('english')['_Todo_TrailAdminUpdate_col1']           = 'Using Reminder' 
    18     lang('english')['_Todo_TrailAdminUpdate_col2']           = 'Reminding Hour' 
    19     lang('english')['_Todo_TrailAdminUpdate_col3']           = 'Reminding Minute' 
    20  
    21     lang('english')['_Todo_Admin_Title']                      = 'Todo Config' 
    22     lang('english')['_Todo_Admin_Frame_Title']                = 'Todo Setting' 
    23     lang('english')['_Todo_Admin_Updated']                    = 'Updated' 
    24     lang('english')['_Todo_Admin_NotUpdated']                 = 'Fail to update' 
    25     lang('english')['_Todo_Common_Reminder']                  = 'Reminder' 
    26     lang('english')['_Todo_Common_TodoReminder']              = 'Todo Reminder' 
    27     lang('english')['_Todo_Admin_RemindTime']                 = 'Remind Time' 
    28     lang('english')['_Todo_Common_Todo']                      = 'ToDo' 
    29  
    30     lang('english')['_Todo_Block_Description']                = 'This block displays todo tasks on remind span' 
    31  
    32     lang('english')['_Todo_Com_tabMenu1']                     = 'In progress' 
    33     lang('english')['_Todo_Com_tabMenu2']                     = 'Completed' 
    34     lang('english')['_Todo_Com_tabMenu3']                     = 'All' 
    35  
    36     lang('english')['_Todo_Com_CategoryBoxName']              = 'Category Box Name' 
    37     lang('english')['_Todo_Com_labelViewStyle']               = 'View Style' 
    38     lang('english')['_Todo_Com_optionViewStyle1']             = 'By List' 
    39     lang('english')['_Todo_Com_optionViewStyle2']             = 'By Tile' 
    40  
    41     lang('english')['_Todo_Com_btn_done']                     = 'Mark Complete' 
    42     lang('english')['_Todo_Com_btn_view']                     = 'View Detail' 
    43     lang('english')['_Todo_Com_btn_edit']                     = 'Edit' 
    44     lang('english')['_Todo_Com_btn_delete']                   = 'Delete' 
    45     lang('english')['_Todo_Com_btn_reopen']                   = 'Reopen' 
    46  
    47     lang('english')['_Todo_Com_this_order_0']                 = 'none' 
    48     lang('english')['_Todo_Com_this_order_1']                 = 'Low' 
    49     lang('english')['_Todo_Com_this_order_2']                 = 'Normal' 
    50     lang('english')['_Todo_Com_this_order_3']                 = 'High' 
    51    
    52     lang('english')['_Todo_Main_msg_delete_confirm']          = 'Do you delete it?' 
    53     lang('english')['_Todo_Main_msg_done_confirm']            = 'Do you mark Completed?' 
    54     lang('english')['_Todo_Main_MsgReopenConfirm']            = 'Do you reopen it?' 
    55  
    56     lang('english')['_Todo_Main_Created']                     = 'Created' 
    57     lang('english')['_Todo_Main_Updated']                     = 'Updated' 
    58     lang('english')['_Todo_Main_Completed']                   = 'Completed' 
    59     lang('english')['_Todo_Main_Deleted']                     = 'Deleted' 
    60  
    61     lang('english')['_Todo_Main_SearchNotFound']              = 'No result' 
    62     lang('english')['_Todo_Main_msg_cannot_complete']         = 'Plz push button after recordable.' 
    63  
    64     lang('english')['_Todo_Main_msg_dateTermConfirm1']       = 'invalid term' 
    65     lang('english')['_Todo_Main_msg_dateTermConfirm2']       = 'invalid term' 
    66  
    67  
    68     lang('english')['_Todo_ListView_title']                   = 'Title' 
    69     lang('english')['_Todo_ListView_content']                 = 'Detail' 
    70     lang('english')['_Todo_ListView_this_order']              = 'Priority' 
    71     lang('english')['_Todo_ListView_progress']                = 'Progress' 
    72     lang('english')['_Todo_ListView_created_on']              = 'Registered Date' 
    73     lang('english')['_Todo_ListView_start_on']                = 'Start date' 
    74     lang('english')['_Todo_ListView_close_on']                = 'Due date' 
    75     lang('english')['_Todo_ListView_closed_on']               = 'Date completed' 
    76     lang('english')['_Todo_ListView_dot']                     = '&' 
    77     lang('english')['_Todo_ListView_semi']                    = ':' 
    78  
    79     lang('english')['_Todo_Reminder_NotFound']                = 'No Remind' 
    80     lang('english')['_Todo_Reminder_Off']                     = 'Administrator set reminder disable. So you can\'t use reminder.' 
    81     lang('english')['_Todo_Reminder_BeforeDay']               = 'after %ddays' 
    82     lang('english')['_Todo_Reminder_JustToday']               = 'Today' 
    83     lang('english')['_Todo_Reminder_AfterDay']                = 'exceeds %ddays' 
    84     lang('english')['_Todo_Reminder_ToHome']                  = 'Todo List' 
    85     lang('english')['_Todo_Reminder_Detail']                  = 'Todo Detail' 
    86     lang('english')['_Todo_Admin_RunDruby']                   = 'Run backgroundRb' 
    87  
    88     lang('english')['_Todo_EditDlg_label_title']              = 'Todo Form' 
    89     lang('english')['_Todo_EditDlg_label_title_new']          = 'New ToDo' 
    90     lang('english')['_Todo_EditDlg_label_title_update']       = 'ToDo Update' 
    91     lang('english')['_Todo_EditDlg_msg_on_serverError']       = 'This request is failure. Please confirm your input data.' 
    92     lang('english')['_Todo_EditDlg_msg_required']             = '(*required)' 
    93     lang('english')['_Todo_EditDlg_msg_dateFmtRule']          = 'e.g. 2005/1/3' 
    94     lang('english')['_Todo_EditDlg_label_save']               = 'save' 
    95     lang('english')['_Todo_EditDlg_label_save_option']        = 'with complete' 
    96     lang('english')['_Todo_EditDlg_label_cancel']             = 'cancel' 
    97     lang('english')['_Todo_EditDlg_msg_dateConfirm']          = 'choose from the calender' 
    98     lang('english')['_Todo_EditDlg_msg_dateTermConfirm1']     = 'invalid term' 
    99     lang('english')['_Todo_EditDlg_msg_dateTermConfirm2']     = 'invalid term' 
    100     lang('english')['_Todo_EditDlg_msg_progressConfirm']      = 'choose from the list' 
    101     lang('english')['_Todo_EditDlg_msg_dateInvalid']          = 'invalid date' 
    102  
    103     lang('english')['_Todo_EditDlg_title']                    = 'ToDo' 
    104     lang('english')['_Todo_EditDlg_content']                  = 'Detail' 
    105     lang('english')['_Todo_EditDlg_this_order']               = 'Priority' 
    106     lang('english')['_Todo_EditDlg_progress']                 = 'Progress' 
    107     lang('english')['_Todo_EditDlg_created_on']               = 'Registered Date' 
    108     lang('english')['_Todo_EditDlg_start_on']                 = 'Start date' 
    109     lang('english')['_Todo_EditDlg_close_on']                 = 'Due date' 
    110     lang('english')['_Todo_EditDlg_closed_on']                = 'Date completed' 
    111     lang('english')['_Todo_EditDlg_rubricks_user_id_from']    = 'Registrant' 
    112  
    113     lang('english')['_Todo_EditDlg_CalendarSync']             = 'Sync with calendar' 
    114     lang('english')['_Todo_EditDlg_CalendarRegisterTime']     = 'time' 
    115     lang('english')['_Todo_EditDlg_CalendarHour']             = 'hour' 
    116     lang('english')['_Todo_EditDlg_CalendarMin']              = 'min' 
    117     lang('english')['_Todo_EditDlg_SendReminder']             = 'Send Reminder' 
    118     lang('english')['_Todo_EditDlg_FromCompleteDate']         = '' 
    119     lang('english')['_Todo_EditDlg_Today']                    = 'On the day' 
    120     lang('english')['_Todo_EditDlg_ToCompleteDate']           = '' 
    121     lang('english')['_Todo_EditDlg_Everyday']                 = 'Everyday' 
    122     lang('english')['_Todo_EditDlg_AtOnce']                   = 'At Once' 
    123     lang('english')['_Todo_EditDlg_Notify']                   = '' 
    124  
    125     lang('english')['_Todo_TileView_label_priority3']         = 'Active Task' 
    126     lang('english')['_Todo_TileView_label_priority2']         = 'Waiting Task' 
    127     lang('english')['_Todo_TileView_label_priority1']         = 'Pending Task' 
    128     lang('english')['_Todo_TileView_label_closeOn']           = '' 
    129     lang('english')['_Todo_TileView_cssTitle_category_box']   = 'Edit Category Box Title' 
    130  
    131     lang('english')['_filter_target1']                        = 'title' 
    132     lang('english')['_filter_target2']                        = 'content' 
    133     lang('english')['_filter_target3']                        = 'priority' 
    134     lang('english')['_filter_target4']                        = 'day of start' 
    135     lang('english')['_filter_target5']                        = 'day of close' 
    136  
    137     lang('english')['_filter1_kind']                          = 'like %' 
    138  
    139     lang('english')['_filter3_order1']                        = 'law' 
    140     lang('english')['_filter3_order2']                        = 'normal' 
    141     lang('english')['_filter3_order3']                        = 'hight' 
    142  
    143     lang('english')['_filter_target_label']                    = 'filter target:' 
    144     lang('english')['_filter1_kind_label']                    = 'keyword:' 
    145     lang('english')['_filter3_order_label']                   = 'order:' 
    146     lang('english')['_filter4_term_label']                    = 'term:' 
    147  
    148     lang('english')['_filter4_text0_label_jp']                = 'From:' 
    149     lang('english')['_filter4_text1_label_jp']                = '  To:' 
    150     lang('english')['_filter4_text2_label_jp']                = '' 
     3    lang('english').merge!({ 
     4      '_TodoList_Admin_ErrorUpdate'                             => 'Failed to update todo configs.', 
     5      '_TodoList_Admin_MessageUpdate'                           => 'todo configs are updated.', 
     6      '_TodoList_Admin_RemindTime'                              => 'Remind Time', 
     7      '_TodoList_Common_CloseOn'                                => 'Closing date', 
     8      '_TodoList_Common_DeadlineAfter'                          => '%d day(s) after', 
     9      '_TodoList_Common_DeadlineBefore'                         => '%d day(s) before', 
     10      '_TodoList_Common_DeadlineJust'                           => 'Today', 
     11      '_TodoList_Common_ErrorCreate'                            => 'Failed to create the task.', 
     12      '_TodoList_Common_ErrorDelete'                            => 'Failed to delete the task.', 
     13      '_TodoList_Common_ErrorTodoNotSelected'                   => 'Any task is not selected.', 
     14      '_TodoList_Common_ErrorUpdate'                            => 'Failed to update the task.', 
     15      '_TodoList_Common_InputWindowTitle'                       => 'ToDo Input Window', 
     16      '_TodoList_Common_MessageCreate'                          => 'The task is created.', 
     17      '_TodoList_Common_MessageDelete'                          => 'The task is deleted.', 
     18      '_TodoList_Common_MessageFinishConfirm'                   => 'Are you sure to finish this task?', 
     19      '_TodoList_Common_MessageRevertConfirm'                   => 'Are you sure to revert this task?', 
     20      '_TodoList_Common_MessageUpdate'                          => 'The task is updated.', 
     21      '_TodoList_Common_Progress'                               => 'Progress', 
     22      '_TodoList_Common_Reminder'                               => 'Reminder', 
     23      '_TodoList_Common_RemindOptionsDelimiter'                 => ' / ', 
     24      '_TodoList_Common_RemindOptionAtOnce'                     => 'At Once', 
     25      '_TodoList_Common_RemindOptionEveryday'                   => 'Everyday', 
     26      '_TodoList_Common_SendReminderAtOnce'                     => 'Send remind mail at %s', 
     27      '_TodoList_Common_SendReminderEveryday'                   => 'Send remind mail everyday from %s', 
     28      '_TodoList_Common_SendReminder'                           => 'Send Reminder', 
     29      '_TodoList_Common_StartOn'                                => 'Starting date', 
     30      '_TodoList_Common_ThisOrder'                              => 'Priority', 
     31      '_TodoList_Common_Todo'                                   => 'Task', 
     32      '_TodoList_Common_TodoConfig'                             => 'ToDo Config', 
     33      '_TodoList_Common_TodoDetail'                             => 'ToDo Detail', 
     34      '_TodoList_Common_TodoList'                               => 'ToDo List', 
     35      '_TodoList_Filter_TargetOptionAll'                        => 'All', 
     36      '_TodoList_Filter_TargetOptionCompleted'                  => 'Completed', 
     37      '_TodoList_Filter_TargetOptionUncompleted'                => 'Uncompleted', 
     38      '_TodoList_Index_LabelPriority1'                          => 'Pending Task', 
     39      '_TodoList_Index_LabelPriority2'                          => 'Waiting Task', 
     40      '_TodoList_Index_LabelPriority3'                          => 'Active Task', 
     41      '_TodoList_Info_BlockDescList'                            => 'Todo Block', 
     42      '_TodoList_Info_BlockTitleList'                           => 'Todo Block', 
     43      '_TodoList_Info_Description'                              => 'The component for todo management.', 
     44      '_TodoList_Info_DisplayName'                              => 'ToDo', 
     45      '_TodoList_Info_MenuDescAdmin'                            => 'ToDo Config', 
     46      '_TodoList_Info_MenuDescIndex'                            => 'Todo', 
     47      '_TodoList_Info_MenuDescList'                             => 'Todo List', 
     48      '_TodoList_Info_MenuTitleAdmin'                           => 'ToDo Config', 
     49      '_TodoList_Info_MenuTitleIndex'                           => 'ToDo', 
     50      '_TodoList_Info_MenuTitleList'                            => 'ToDo List', 
     51      '_TodoList_Info_TrailRead'                                => 'Read todo data.', 
     52      '_TodoList_Info_TrailUpdate'                              => 'Post/Edit/Delete todo data.', 
     53    }) 
    15154  end 
    15255end 
  • components/todo_list/trunk/todo_list/languages/japanese.rb

    r5698 r5721  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('japanese')['_TodoList_Title']                        = 'ToDo' 
    4     lang('japanese')['_TodoList_Component_Description']        = 'ToDo管理ツヌル' 
    5  
    6     lang('japanese')['_TodoList_Menu']                         = 'ToDo䞀芧' 
    7     lang('japanese')['_TodoList_Frame_Title']                  = 'ToDo' 
    8  
    9     lang('japanese')['_Todo_TrailRead']                        = 'ToDoの閲芧' 
    10     lang('japanese')['_Todo_TrailUpdate']                      = 'ToDoの登録・倉曎・削陀' 
    11  
    12     lang('japanese')['_Todo_TrailUpdate_Note_CatChange']       = 'カテゎリ移動' 
    13     lang('japanese')['_Todo_TrailUpdate_Note_CatNameChange']   = 'カテゎリ名倉曎' 
    14     lang('japanese')['_Todo_TrailUpdate_Note_TodoClose']       = 'タスク完了' 
    15     lang('japanese')['_Todo_TrailList_Note_TileView']          = 'ToDoの䞀芧衚瀺領域' 
    16  
    17     lang('japanese')['_Todo_TrailAdminUpdate_col1']             = 'ToDoリマむンダの䜿甚可吊' 
    18     lang('japanese')['_Todo_TrailAdminUpdate_col2']             = 'ToDoリマむンダメヌル送信時' 
    19     lang('japanese')['_Todo_TrailAdminUpdate_col3']             = 'ToDoリマむンダメヌル送信分' 
    20  
    21     lang('japanese')['_Todo_Admin_Title']                      = 'ToDo蚭定' 
    22     lang('japanese')['_Todo_Admin_Frame_Title']                = 'ToDo蚭定' 
    23     lang('japanese')['_Todo_Admin_Updated']                    = 'Todo蚭定を曎新したした。' 
    24     lang('japanese')['_Todo_Admin_NotUpdated']                 = 'Todo蚭定の曎新に倱敗したした。' 
    25     lang('japanese')['_Todo_Common_Reminder']                  = 'ToDoリマむンダ' 
    26     lang('japanese')['_Todo_Common_TodoReminder']              = 'ToDoリマむンダ' 
    27     lang('japanese')['_Todo_Admin_RemindTime']                 = 'リマむンドメヌル送信時刻' 
    28     lang('japanese')['_Todo_Common_Todo']                      = 'ToDo' 
    29  
    30     lang('japanese')['_Todo_Block_Description']                = 'リマむンド期間䞭のToDoタスクを衚瀺するブロックです。' 
    31      
    32     lang('japanese')['_Todo_Com_tabMenu1']                     = '未完了衚瀺' 
    33     lang('japanese')['_Todo_Com_tabMenu2']                     = '完了衚瀺' 
    34     lang('japanese')['_Todo_Com_tabMenu3']                     = 'å 
    35 šä»¶è¡šç€º' 
    36  
    37     lang('japanese')['_Todo_Com_CategoryBoxName']              = 'カテゎリボックス名' 
    38     lang('japanese')['_Todo_Com_labelViewStyle']               = 'ToDoの衚瀺方法' 
    39     lang('japanese')['_Todo_Com_optionViewStyle1']             = '䞀芧衚瀺' 
    40     lang('japanese')['_Todo_Com_optionViewStyle2']             = 'タむル衚瀺' 
    41  
    42     lang('japanese')['_Todo_Com_btn_done']                     = '完了' 
    43     lang('japanese')['_Todo_Com_btn_view']                     = '詳现' 
    44     lang('japanese')['_Todo_Com_btn_edit']                     = '線集' 
    45     lang('japanese')['_Todo_Com_btn_delete']                   = '削陀' 
    46     lang('japanese')['_Todo_Com_btn_reopen']                   = '未完了に戻す' 
    47  
    48 #    lang('japanese')['_Todo_Com_this_order_0']                 = '未指定' 
    49     lang('japanese')['_Todo_Com_this_order_1']                 = '䜎い' 
    50     lang('japanese')['_Todo_Com_this_order_2']                 = '普通' 
    51     lang('japanese')['_Todo_Com_this_order_3']                 = '高い' 
    52  
    53     lang('japanese')['_Todo_Main_msg_delete_confirm']          = '削陀しおよろしいですか' 
    54     lang('japanese')['_Todo_Main_msg_done_confirm']            = 'タスクを完了(進捗率100%)にしたす。よろしいですか' 
    55     lang('japanese')['_Todo_Main_MsgReopenConfirm']            = 'タスクを未完了に戻したす。よろしいですか' 
    56  
    57     lang('japanese')['_Todo_Main_Created']                     = 'ToDoを䜜成したした。' 
    58     lang('japanese')['_Todo_Main_Updated']                     = 'ToDoを曎新したした。' 
    59     lang('japanese')['_Todo_Main_Completed']                   = 'ToDoを完了にしたした。' 
    60     lang('japanese')['_Todo_Main_Deleted']                     = 'ToDoを削陀したした。' 
    61  
    62     lang('japanese')['_Todo_Main_SearchNotFound']              = '怜玢結果がありたせん。' 
    63     lang('japanese')['_Todo_Main_msg_cannot_complete']         = '保存できる状æ 
    64 ‹ã«ã—た埌、完了ボタンを抌しおください。' 
    65  
    66     lang('japanese')['_Todo_Main_msg_dateTermConfirm1']        = '期間終了日より埌の期間開始日は指定できたせん。' 
    67     lang('japanese')['_Todo_Main_msg_dateTermConfirm2']        = '期間開始日より前の期間終了日は指定できたせん。' 
    68  
    69  
    70     lang('japanese')['_Todo_ListView_title']                   = 'タむトル' 
    71     lang('japanese')['_Todo_ListView_content']                 = '冠
    72 å®¹' 
    73     lang('japanese')['_Todo_ListView_this_order']              = '優å 
    74 ˆåºŠ' 
    75     lang('japanese')['_Todo_ListView_progress']                = '進捗率' 
    76     lang('japanese')['_Todo_ListView_created_on']              = '登録日' 
    77     lang('japanese')['_Todo_ListView_start_on']                = '開始予定日' 
    78     lang('japanese')['_Todo_ListView_close_on']                = '完了予定日' 
    79     lang('japanese')['_Todo_ListView_closed_on']               = '完了日' 
    80     lang('japanese')['_Todo_ListView_dot']                     = '・' 
    81     lang('japanese')['_Todo_ListView_semi']                    = '' 
    82  
    83     lang('japanese')['_Todo_Reminder_NotFound']                = 'リマむンドはありたせん。' 
    84     lang('japanese')['_Todo_Reminder_Off']                     = '管理耠
    85 ã®èš­å®šã«ã‚ˆã‚Šã€ToDoのリマむンド機胜の利甚が出来なくなっおいたす。' 
    86     lang('japanese')['_Todo_Reminder_BeforeDay']               = '%d日前' 
    87     lang('japanese')['_Todo_Reminder_JustToday']               = '本日〆切' 
    88     lang('japanese')['_Todo_Reminder_AfterDay']                = '%d日趠
    89 éŽ' 
    90     lang('japanese')['_Todo_Reminder_ToHome']                  = 'ToDo' 
    91     lang('japanese')['_Todo_Reminder_Detail']                  = 'ToDo詳现' 
    92     lang('japanese')['_Todo_Admin_RunDruby']                   = '※利甚するにはbackgrounDrbを起動しおください' 
    93  
    94     lang('japanese')['_Todo_EditDlg_label_title']              = 'ToDo線集画面' 
    95     lang('japanese')['_Todo_EditDlg_label_title_new']          = '新芏ToDo䜜成' 
    96     lang('japanese')['_Todo_EditDlg_label_title_update']       = 'ToDo線集' 
    97     lang('japanese')['_Todo_EditDlg_msg_on_serverError']       = 'ToDoを曎新できたせんでした。å 
    98 ¥åЛ冠
    99 å®¹ã‚’確認の䞊、再実行しおください。' 
    100     lang('japanese')['_Todo_EditDlg_msg_required']             = '(*å¿ 
    101 é ˆ)' 
    102     lang('japanese')['_Todo_EditDlg_msg_dateFmtRule']          = 'å 
    103 ¥åŠ›åœ¢åŒïŒš(幎4桁/月/日)' 
    104     lang('japanese')['_Todo_EditDlg_label_save']               = '保存' 
    105     lang('japanese')['_Todo_EditDlg_label_save_option']        = '保存ず同時にToDoを完了にする' 
    106     lang('japanese')['_Todo_EditDlg_label_cancel']             = 'キャンセル' 
    107     lang('japanese')['_Todo_EditDlg_msg_dateConfirm']          = 'yyyy/MM/dd圢匏でå 
    108 ¥åŠ›ã—ãŠãã ã•ã„ã€‚' 
    109     lang('japanese')['_Todo_EditDlg_msg_dateTermConfirm1']     = '完了予定日より埌の開始予定日は指定できたせん。' 
    110     lang('japanese')['_Todo_EditDlg_msg_dateTermConfirm2']     = '開始予定日より前の完了予定日は指定できたせん。' 
    111     lang('japanese')['_Todo_EditDlg_msg_progressConfirm']      = '進捗率を遞択しおください。' 
    112     lang('japanese')['_Todo_EditDlg_msg_dateInvalid']          = '存圚しない日付です。' 
    113  
    114     lang('japanese')['_Todo_EditDlg_title']                    = 'タむトル' 
    115     lang('japanese')['_Todo_EditDlg_content']                  = '冠
    116 å®¹' 
    117     lang('japanese')['_Todo_EditDlg_this_order']               = '優å 
    118 ˆåºŠ' 
    119     lang('japanese')['_Todo_EditDlg_progress']                 = '進捗率' 
    120     lang('japanese')['_Todo_EditDlg_created_on']               = '登録日' 
    121     lang('japanese')['_Todo_EditDlg_start_on']                 = '開始予定日' 
    122     lang('japanese')['_Todo_EditDlg_close_on']                 = '完了予定日' 
    123     lang('japanese')['_Todo_EditDlg_closed_on']                = '完了日' 
    124     lang('japanese')['_Todo_EditDlg_rubricks_user_id_from']    = '登録耠
    125 
    126  
    127     lang('japanese')['_Todo_EditDlg_CalendarSync']             = 'カレンダヌ連携' 
    128     lang('japanese')['_Todo_EditDlg_CalendarRegisterTime']     = '登録時刻 ' 
    129     lang('japanese')['_Todo_EditDlg_CalendarHour']             = '時' 
    130     lang('japanese')['_Todo_EditDlg_CalendarMin']              = '分' 
    131     lang('japanese')['_Todo_EditDlg_SendReminder']             = 'リマむンダを送る' 
    132     lang('japanese')['_Todo_EditDlg_FromCompleteDate']         = '完了予定日の' 
    133     lang('japanese')['_Todo_EditDlg_Today']                    = '圓日' 
    134     lang('japanese')['_Todo_EditDlg_ToCompleteDate']           = 'から' 
    135     lang('japanese')['_Todo_EditDlg_Everyday']                 = '毎日' 
    136     lang('japanese')['_Todo_EditDlg_AtOnce']                   = '1回のみ' 
    137     lang('japanese')['_Todo_EditDlg_Notify']                   = '通知する' 
    138  
    139     lang('japanese')['_Todo_TileView_label_priority3']         = '察応䞭タスク' 
    140     lang('japanese')['_Todo_TileView_label_priority2']         = '察応埠
    141 ã¡ã‚¿ã‚¹ã‚¯' 
    142     lang('japanese')['_Todo_TileView_label_priority1']         = 'ペンディングタスク' 
    143     lang('japanese')['_Todo_TileView_label_closeOn']           = '〆' 
    144     lang('japanese')['_Todo_TileView_cssTitle_category_box']   = 'カテゎリ名を線集できたす' 
    145  
    146     lang('japanese')['_filter_target1']                        = 'タむトル' 
    147     lang('japanese')['_filter_target2']                        = '冠
    148 å®¹' 
    149     lang('japanese')['_filter_target3']                        = '優å 
    150 ˆåºŠ' 
    151     lang('japanese')['_filter_target4']                        = '開始予定日' 
    152     lang('japanese')['_filter_target5']                        = '完了予定日' 
    153  
    154     lang('japanese')['_filter1_kind']                          = '前方䞀臎' 
    155  
    156     lang('japanese')['_filter3_order1']                        = '䜎い' 
    157     lang('japanese')['_filter3_order2']                        = '普通' 
    158     lang('japanese')['_filter3_order3']                        = '高い' 
    159  
    160     lang('japanese')['_filter_target_label']                   = 'フィルタ察象' 
    161     lang('japanese')['_filter1_kind_label']                    = '怜玢方法・キヌワヌド' 
    162     lang('japanese')['_filter3_order_label']                   = '優å 
    163 ˆåºŠïŒš' 
    164     lang('japanese')['_filter4_term_label']                    = '期間' 
    165  
    166     lang('japanese')['_filter4_text0_label_jp']                = '' 
    167     lang('japanese')['_filter4_text1_label_jp']                = 'から' 
    168     lang('japanese')['_filter4_text2_label_jp']                = 'たで' 
     3    lang('japanese').merge!({ 
     4      '_TodoList_Admin_ErrorUpdate'                             => 'Todo蚭定の曎新に倱敗したした。', 
     5      '_TodoList_Admin_MessageUpdate'                           => 'Todo蚭定を曎新したした。', 
     6      '_TodoList_Admin_RemindTime'                              => 'リマむンドメヌル送信時刻', 
     7      '_TodoList_Common_CloseOn'                                => '完了予定日', 
     8      '_TodoList_Common_DeadlineAfter'                          => '締切%d日趠
     9過', 
     10      '_TodoList_Common_DeadlineBefore'                         => '締切%d日前', 
     11      '_TodoList_Common_DeadlineJust'                           => '本日締切', 
     12      '_TodoList_Common_ErrorCreate'                            => 'ToDoの新芏䜜成に倱敗したした。', 
     13      '_TodoList_Common_ErrorDelete'                            => 'ToDoの削陀に倱敗したした。', 
     14      '_TodoList_Common_ErrorTodoNotSelected'                   => 'ToDoが遞択されおいたせん。', 
     15      '_TodoList_Common_ErrorUpdate'                            => 'ToDoの曎新に倱敗したした。', 
     16      '_TodoList_Common_InputWindowTitle'                       => 'ToDoå 
     17¥åŠ›ç”»é¢', 
     18      '_TodoList_Common_MessageCreate'                          => 'ToDoを新芏䜜成したした。', 
     19      '_TodoList_Common_MessageDelete'                          => 'ToDoを削陀したした。', 
     20      '_TodoList_Common_MessageFinishConfirm'                   => 'タスクを完了(進捗率100%)にしたす。よろしいですか', 
     21      '_TodoList_Common_MessageRevertConfirm'                   => 'タスクを未完了(進捗率90%)にしたす。よろしいですか', 
     22      '_TodoList_Common_MessageUpdate'                          => 'ToDoを曎新したした。', 
     23      '_TodoList_Common_Progress'                               => '進捗率', 
     24      '_TodoList_Common_Reminder'                               => 'ToDoリマむンダ', 
     25      '_TodoList_Common_RemindOptionsDelimiter'                 => ' から ', 
     26      '_TodoList_Common_RemindOptionAtOnce'                     => '1回のみ', 
     27      '_TodoList_Common_RemindOptionEveryday'                   => '毎日', 
     28      '_TodoList_Common_SendReminder'                           => 'リマむンダを送る', 
     29      '_TodoList_Common_SendReminderAtOnce'                     => '%sにリマむンダを送る', 
     30      '_TodoList_Common_SendReminderEveryday'                   => '%sから毎日リマむンダを送る', 
     31      '_TodoList_Common_StartOn'                                => '開始予定日', 
     32      '_TodoList_Common_ThisOrder'                              => '優å 
     33ˆåºŠ', 
     34      '_TodoList_Common_Todo'                                   => 'ToDo', 
     35      '_TodoList_Common_TodoConfig'                             => 'ToDo蚭定', 
     36      '_TodoList_Common_TodoDetail'                             => 'ToDo詳现', 
     37      '_TodoList_Common_TodoList'                               => 'ToDo䞀芧', 
     38      '_TodoList_Filter_TargetOptionAll'                        => 'å 
     39šãŠ', 
     40      '_TodoList_Filter_TargetOptionCompleted'                  => '完了のみ', 
     41      '_TodoList_Filter_TargetOptionUncompleted'                => '未完了のみ', 
     42      '_TodoList_Index_LabelPriority1'                          => 'ペンディングタスク', 
     43      '_TodoList_Index_LabelPriority2'                          => '察応埠
     44ちタスク', 
     45      '_TodoList_Index_LabelPriority3'                          => '察応䞭タスク', 
     46      '_TodoList_Info_BlockDescList'                            => 'Todoブロック', 
     47      '_TodoList_Info_BlockTitleList'                           => 'Todoブロック', 
     48      '_TodoList_Info_Description'                              => 'ToDoの管理を行うコンポヌネントです。', 
     49      '_TodoList_Info_DisplayName'                              => 'ToDo', 
     50      '_TodoList_Info_MenuDescAdmin'                            => 'ToDo蚭定', 
     51      '_TodoList_Info_MenuDescIndex'                            => 'Todo', 
     52      '_TodoList_Info_MenuDescList'                             => 'Todo䞀芧', 
     53      '_TodoList_Info_MenuTitleAdmin'                           => 'ToDo蚭定', 
     54      '_TodoList_Info_MenuTitleIndex'                           => 'ToDo', 
     55      '_TodoList_Info_MenuTitleList'                            => 'ToDo䞀芧', 
     56      '_TodoList_Info_TrailRead'                                => 'ToDoの閲芧', 
     57      '_TodoList_Info_TrailUpdate'                              => 'ToDoの登録・曎新・削陀', 
     58    }) 
    16959  end 
    17060end 
  • components/todo_list/trunk/todo_list/preload/_preload.rhtml

    r5710 r5721  
    11<%= stylesheet_link_tag '/stylesheets/components/todo_list/todo' %> 
    2 <script type="text/javascript"> 
    3 rubricks.todo_list = { 
    4   g_event : null, 
    5   editdialog : null, 
    6   search_window : null, 
    7   todo_stopBubble : function(event){ 
    8     if(event && !UserAgent.isIE()){ 
    9       event.stopPropagation(); 
    10     } 
    11     if(event && UserAgent.isIE()){ 
    12       window.event.cancelBubble = true; 
    13     } 
    14   }, 
    15   _todo_list_reload : function(_area, _target_data, _viewmode, _filter_target, _filter1_kind, _filter1_text, _filter3_order, _filter4_text1, _filter4_text2){ 
    16     new Ajax.Updater( 
    17       _area, 
    18       this.url_todo_view_maindata, 
    19       { 
    20         asynchronous: true, 
    21         evalScripts:  true, 
    22         onLoaded:     function (request) {rubricks.common.rubricks_wait_message_close();}, 
    23         onLoading:    function (request) {rubricks.common.rubricks_wait_message_open();}, 
    24         parameters:   { 
    25                           "todo_p[targetdata]":     _target_data, 
    26                           "todo_p[viewmode]":       _viewmode, 
    27                           "todo_p[filter_target]":  _filter_target, 
    28                           "todo_p[filter1_kind]":   _filter1_kind, 
    29                           "todo_p[filter1_text]":   _filter1_text, 
    30                           "todo_p[filter3_order]":  _filter3_order, 
    31                           "todo_p[filter4_text1]":  _filter4_text1, 
    32                           "todo_p[filter4_text2]":  _filter4_text2 
    33                       }, 
    34         onSuccess:    rubricks.todo_list._todo_list_reload_successed() 
    35       } 
    36     ); 
    37   }, 
    38   _todo_list_reload_successed : function(){ 
    39   }, 
    40   _todo_list_reload_failed : function(){ 
    41   }, 
    42   todo_list_reload : function(){ 
    43     _target_data = document.getElementById("todo_targetdata_hiddenid").value; 
    44     _viewmode = document.getElementById("todo_viewmode").value; 
    45     if(_target_data == "incomplete"){ 
    46       _area = document.getElementById("tabBox_panel0"); 
    47     } 
    48     if(_target_data == "complete"){ 
    49       _area = document.getElementById("tabBox_panel1"); 
    50     } 
    51     if(_target_data == "all"){ 
    52       _area = document.getElementById("tabBox_panel2"); 
    53     } 
    54     _filter_target  = $("todo_filter_target").value; 
    55     _filter1_kind   = $("todo_filter1_kind" ).value; 
    56     _filter1_text   = $("todo_filter1_text" ).value; 
    57     _filter3_order  = $("todo_filter3_order").value; 
    58     _filter4_text1  = $("todo_filter4_text1").value; 
    59     _filter4_text2  = $("todo_filter4_text2").value; 
    60  
    61     rubricks.todo_list._todo_list_reload(_area, _target_data, _viewmode, _filter_target, _filter1_kind, _filter1_text, _filter3_order, _filter4_text1, _filter4_text2); 
    62   }, 
    63   todo_displayEditDialog_loading : function(mode, id, event){ 
    64     // get "dialog html". 
    65     if(mode == "u"){ 
    66       // $('todo_dialog_divid_title').innerHTML = this.str_title_update; 
    67       document.getElementById("todo_p_id_up").value = id; 
    68       document.getElementById("todo_getdialog_formid_update").onsubmit(); 
    69     }else{ 
    70       // $('todo_dialog_divid_title').innerHTML = this.str_title_new; 
    71       document.getElementById("todo_p_id_new").value = id; 
    72       document.getElementById("todo_getdialog_formid_insert").onsubmit(); 
    73     } 
    74   }, 
    75   todo_displayEditDialog_successed : function(){ 
    76     // display dialog as window 
    77     rubricks.todo_list.editdialog.open(); 
    78     rubricks.todo_list.editdialog.center(); 
    79   }, 
    80   todo_execSubmitOnDialog_executing : function(flag){ 
    81     if(flag){ 
    82       rubricks.common.rubricks_confirm_window_open(this.msg_done_confirm, function() {rubricks.todo_list._todo_execSubmitOnDialog_save_and_complete();}, function() {$('todo_editdlg_sbumit').disabled=false;}); 
    83     }else{ 
    84       rubricks.todo_list._todo_execSubmitOnDialog_save(); 
    85     } 
    86   }, 
    87   todo_execSubmitOnDialog_successed : function(){ 
    88     // reload "todo list" 
    89  
    90     //todo_view_maindata(document.getElementById('todo_targetdata_hiddenid').value); 
    91     rubricks.todo_list.todo_list_reload(); 
    92     rubricks.common.rubricks_feedback_msg.add(this.msg_main_updated); 
    93  
    94     // close dialog window 
    95     rubricks.todo_list.editdialog.close(); 
    96   }, 
    97   todo_execCancelOnDialog : function(){ 
    98     // close dialog window 
    99     rubricks.todo_list.editdialog.close(); 
    100   }, 
    101   _todo_execSubmitOnDialog_save : function(){ 
    102     document.getElementById("todo_editdialog_formid").onsubmit(); 
    103   }, 
    104   _todo_execSubmitOnDialog_save_and_complete : function(){ 
    105     document.getElementById("todo_editdialog_formid").onsubmit(); 
    106   }, 
    107   todo_deleteAction : function(mode, id, event){ 
    108     document.getElementById("todo_p_id_del").value = id 
    109     document.getElementById("todo_delete_formid").onsubmit(); 
    110   }, 
    111   todo_deleteAction_successed : function(){ 
    112     idname = "todo" + document.getElementById('todo_p_id_del').value; 
    113     rubricks.todo_list.todo_list_reload(); 
    114     rubricks.common.rubricks_feedback_msg.add(this.msg_main_deleted); 
    115   }, 
    116   todo_closeAction : function(mode, id, event){ 
    117     document.getElementById("todo_p_id_close").value = id 
    118     document.getElementById("todo_close_formid").onsubmit(); 
    119   }, 
    120   todo_reopenAction : function(reopenTodoId){ 
    121     new Ajax.Request( 
    122       this.url_reopen, 
    123       { 
    124         asynchronous:true, 
    125         evalScripts:true, 
    126         parameters:'id=' + reopenTodoId, 
    127         onLoading:function(request){ 
    128           rubricks.common.rubricks_wait_message_open(); 
    129         }, 
    130         onSuccess:function(){ 
    131           rubricks.todo_list.todo_list_reload(); 
    132           rubricks.common.rubricks_feedback_msg.add(rubricks.todo_list.msg_main_updated); 
    133         }, 
    134         onComplete:function(request){ 
    135           rubricks.common.rubricks_wait_message_close(); 
    136         } 
    137       } 
    138     ) 
    139   }, 
    140   todo_closeAction_successed : function(){ 
    141     rubricks.todo_list.todo_list_reload(); 
    142     rubricks.common.rubricks_feedback_msg.add(this.msg_main_completed); 
    143   }, 
    144   todo_dummy : function(event){ 
    145     return true; 
    146   }, 
    147   todo_list_toggle : function(id, event){ 
    148     if(!UserAgent.isIE()){ 
    149       event.stopPropagation(); 
    150     } 
    151     if(UserAgent.isIE()){ 
    152       window.event.cancelBubble = true; 
    153     } 
    154     obj = document.getElementById("todo" + id + "_h"); 
    155     reg = new RegExp("^todo_list_colb_text icon_plus"); 
    156     if(reg.test(obj.className)){ 
    157       obj.className = "todo_list_colb_text icon_minus"; 
    158     }else{ 
    159       obj.className = "todo_list_colb_text icon_plus"; 
    160     } 
    161     //new Effect.toggle(document.getElementById("todo_detail" + id)); 
    162     new Element.toggle("todo_detail" + id); 
    163   }, 
    164   open_search_window : function(){ 
    165     rubricks.todo_list.search_window.open() 
    166     rubricks.todo_list.search_window.center() 
    167   }, 
    168   turnFlag : function(index){ 
    169     if(index == 20){ 
    170       $('todo_p_editdlg_sbumit_option').checked = true; 
    171     }else{ 
    172       $('todo_p_editdlg_sbumit_option').checked = false; 
    173     } 
    174   }, 
    175   trunFilter : function(){ 
    176     var btn = $('todo_list_filter_btn'); 
    177     var reg = new RegExp("^switcher_switch switcher_state_close"); 
    178     if(reg.test(btn.className)){ 
    179       btn.className = "switcher_switch switcher_state_open"; 
    180       new Element.toggle("todo_list_filter_body"); 
    181     }else{ 
    182       btn.className = "switcher_switch switcher_state_close"; 
    183       new Element.toggle("todo_list_filter_body"); 
    184     } 
    185   }, 
    186   turnFilterMode : function(index){ 
    187     $('todo_filter1_h').style.display = "none"; 
    188     $('todo_filter3_h').style.display = "none"; 
    189     $('todo_filter4_h').style.display = "none"; 
    190     $('todo_filter1').style.display = "none"; 
    191     $('todo_filter3').style.display = "none"; 
    192     $('todo_filter4').style.display = "none"; 
    193     $('todo_filter4_text1').value         = ""; 
    194     $('todo_filter4_text2').value         = ""; 
    195     rubricks.common.Validator.refresh_by_id('todo_filter4_text1'); 
    196     rubricks.common.Validator.refresh_by_id('todo_filter4_text2'); 
    197  
    198     if(index == 0){ 
    199       $('todo_filter1_h').style.display = "block"; 
    200       $('todo_filter1').style.display = "block"; 
    201     }else if(index == 1){ 
    202       $('todo_filter1_h').style.display = "block"; 
    203       $('todo_filter1').style.display = "block"; 
    204     }else if(index == 2){ 
    205       $('todo_filter3_h').style.display = "block"; 
    206       $('todo_filter3').style.display = "block"; 
    207     }else if(index == 3){ 
    208       $('todo_filter4_h').style.display = "block"; 
    209       $('todo_filter4').style.display = "block"; 
    210     }else if(index == 4){ 
    211       $('todo_filter4_h').style.display = "block"; 
    212       $('todo_filter4').style.display = "block"; 
    213     } 
    214  
    215   }, 
    216   search_clear : function(){ 
    217     $('todo_filter_target').selectedIndex = 0; 
    218     $('todo_filter1_kind').selectedIndex  = 0; 
    219     $('todo_filter1_text').value          = ""; 
    220     $('todo_filter3_order').selectedIndex = 0; 
    221     $('todo_filter4_text1').value         = ""; 
    222     $('todo_filter4_text2').value         = ""; 
    223     rubricks.common.Validator.refresh_by_id('todo_filter4_text1'); 
    224     rubricks.common.Validator.refresh_by_id('todo_filter4_text2'); 
    225  
    226     $('todo_filter1_h').style.display       = "block"; 
    227     $('todo_filter1').style.display       = "block"; 
    228     $('todo_filter3_h').style.display       = "none"; 
    229     $('todo_filter3').style.display       = "none"; 
    230     $('todo_filter4_h').style.display       = "none"; 
    231     $('todo_filter4').style.display       = "none"; 
    232     rubricks.todo_list.todo_list_reload(); 
    233   }, 
    234   search_submit : function(){ 
    235     rubricks.todo_list.todo_list_reload(); 
    236   }, 
    237   toggle_calendar_flag : function(){ 
    238     sync_calendar_time_open_flag = !sync_calendar_time_open_flag 
    239     if(sync_calendar_time_open_flag){ 
    240       $('close_on_hour').disabled = true 
    241       $('close_on_min').disabled = true 
    242     }else { 
    243       $('close_on_hour').disabled = false 
    244       $('close_on_min').disabled = false 
    245     } 
    246   }, 
    247   toggle_remind_flag : function(){ 
    248     rubricks.todo_list.sync_remind_open_flag = !rubricks.todo_list.sync_remind_open_flag; 
    249     if(rubricks.todo_list.sync_remind_open_flag){ 
    250       $('todo_reminder_delay').disabled = true; 
    251       $('todo_reminder_every').disabled = true; 
    252       $('reminder_detail_div').style.display = 'none'; 
    253     }else { 
    254       $('todo_reminder_delay').disabled = false; 
    255       $('todo_reminder_every').disabled = false; 
    256       $('reminder_detail_div').style.display = ''; 
    257     } 
    258   }, 
    259   validateDateFiled1 : function(element){ 
    260     if(!rubricks.todo_list.validDate(element.value)){ 
    261       return this.msg_date_invalid; 
    262     } 
    263  
    264     var start_on = String($("todo_start_on").value).stripMB(); 
    265     var close_on = String($("todo_close_on").value).stripMB(); 
    266  
    267     if(!rubricks.todo_list.validTerm(start_on, close_on)){ 
    268       return this.msg_date_term_confirm_1; 
    269     } 
    270  
    271     return true; 
    272   }, 
    273   validateDateFiled2 : function(element){ 
    274     if(!rubricks.todo_list.validDate(element.value)){ 
    275       return this.msg_date_invalid; 
    276     } 
    277  
    278     var start_on = String($("todo_start_on").value).stripMB(); 
    279     var close_on = String($("todo_close_on").value).stripMB(); 
    280  
    281     if(!rubricks.todo_list.validTerm(start_on, close_on)){ 
    282       return this.msg_date_term_confirm_2; 
    283     } 
    284  
    285     return true; 
    286   }, 
    287   validTerm : function(start_on, close_on){ 
    288     if(start_on == "" || close_on == ""){ 
    289       return true; 
    290     } 
    291  
    292     if(!rubricks.todo_list.validDate(start_on)){ 
    293       return true; 
    294     } 
    295     if(!rubricks.todo_list.validDate(close_on)){ 
    296       return true; 
    297     } 
    298  
    299     var arrayValue = start_on.split("/"); 
    300     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    301       return true; 
    302     } 
    303     var start_on_dt = new Date(arrayValue[0],arrayValue[1],arrayValue[2]); 
    304  
    305  
    306     var arrayValue = close_on.split("/"); 
    307     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    308       return true; 
    309     } 
    310     var close_on_dt = new Date(arrayValue[0],arrayValue[1],arrayValue[2]); 
    311  
    312     if(start_on_dt.getFullYear() > close_on_dt.getFullYear()){ 
    313       return false; 
    314     } 
    315     if(start_on_dt.getFullYear() == close_on_dt.getFullYear()){ 
    316       if(start_on_dt.getMonth() > close_on_dt.getMonth()){ 
    317         return false; 
    318       }else if(start_on_dt.getMonth() == close_on_dt.getMonth()){ 
    319         if(start_on_dt.getDate() > close_on_dt.getDate()){ 
    320           return false; 
    321         } 
    322       } 
    323     } 
    324  
    325     return true; 
    326   }, 
    327   validDate : function(value){ 
    328     if(value.match(/(^[0-9]+[/][0-9]+[/][0-9]+$)|(^$)/) == null){ 
    329       return false; 
    330     }else if(value.match(/(^$)/)){ 
    331       return true; 
    332     } 
    333     var arrayValue = value.split("/"); 
    334     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    335       return false; 
    336     } 
    337  
    338     var daylist = new Array(31,28,31,30,31,30,31,31,30,31,30,31); 
    339     var maxday = 0; 
    340     if(arrayValue[1] == 2 && (arrayValue[0]%4==0 && (arrayValue[0]%100!=0 || arrayValue[0]%400==0)) ){ 
    341       maxday = 29; 
    342     }else{ 
    343       maxday = daylist[arrayValue[1] -1]; 
    344     } 
    345     if(arrayValue[0] < 1000 || 9999 < arrayValue[0]){ 
    346       return false; 
    347     } 
    348     if(arrayValue[1] < 1 || 12 < arrayValue[1]){ 
    349       return false; 
    350     } 
    351     if(arrayValue[2] < 1 || maxday < arrayValue[2]){ 
    352       return false; 
    353     } 
    354  
    355     return true; 
    356   }, 
    357  
    358   main_filter_validateDateFiled1 : function(element){ 
    359     if(!rubricks.todo_list.block.validDate(element.value)){ 
    360       return this.msg_date_confirm; 
    361     } 
    362     var start_on = String($("todo_filter4_text1").value).stripMB(); 
    363     var close_on = String($("todo_filter4_text2").value).stripMB(); 
    364  
    365     if(!rubricks.todo_list.block.validTerm(start_on, close_on)){ 
    366       return this.msg_date_term_confirm_1; 
    367     } 
    368     return true; 
    369   }, 
    370   main_filter_validateDateFiled2 : function(element){ 
    371     if(!rubricks.todo_list.block.validDate(element.value)){ 
    372       return this.msg_date_confirm; 
    373     } 
    374  
    375     var start_on = String($("todo_filter4_text1").value).stripMB(); 
    376     var close_on = String($("todo_filter4_text2").value).stripMB(); 
    377  
    378     if(!rubricks.todo_list.block.validTerm(start_on, close_on)){ 
    379       return this.msg_date_term_confirm_2; 
    380     } 
    381  
    382     return true; 
    383   }, 
    384  
    385  
    386   refresh_edit_date_picker : function(){ 
    387     this.edit_start_date_picker.changeTarget('todo_start_on'); 
    388     this.edit_start_date_picker.addTrigger('todo_start_on_call_btnid'); 
    389     this.edit_close_date_picker.changeTarget('todo_close_on'); 
    390     this.edit_close_date_picker.addTrigger('todo_close_on_call_btnid'); 
    391   }, 
    392   build_in_place_editor : function(num){ 
    393     var result_editor = new Ajax.InPlaceEditor( 
    394       'category_box_' + num, 
    395       this.url_update_category_box, 
    396       { 
    397         okButton : false, 
    398         cancelLink : false, 
    399         submitOnBlur : true, 
    400         onComplete : function(transport, element){ 
    401           $('edit_' + num).style.display=''; 
    402         }, 
    403         callback : function(form) { 
    404           return Form.serialize(form) + '&category_box_no=' + num; 
    405         }, 
    406         onFailure : function(transport){ 
    407           if(transport.status == 500){ 
    408             rubricks.common.rubricks_message_window_open(rubricks.todo_list.msg_validate_char_range); 
    409           } else if(transport.status == 401){ 
    410             rubricks.common.rubricks_confirm_window_open(rubricks.todo_list.msg_session_timeout, function() {document.location = rubricks.todo_list.url_login;}, null); 
    411           } else { 
    412             rubricks.common.rubricks_message_window_open(rubricks.todo_list.msg_network_error, 'error'); 
    413           } 
    414         } 
    415       } 
    416     ); 
    417     Object.extend(result_editor, { 
    418       getText: function() { 
    419         return new String(this.element.innerHTML).unescapeHTML(); 
    420       } 
    421     }); 
    422     result_editor.dispose(); 
    423     return result_editor; 
    424   }, 
    425   printClass : { 
    426     print: function() { 
    427       if(!Element.hasClassName('print_button', 'disabled')) { 
    428  
    429         /* #todo 
    430          * these parameters are not used yet perhaps */ 
    431         $('param1').value = $('todo_targetdata_hiddenid').value; 
    432         $('param2').value = $('todo_viewmode').value; 
    433         $('param3').value = $('todo_filter_target').value; 
    434         $('param4').value = $('todo_filter1_kind').value; 
    435         $('param5').value = $('todo_filter1_text').value; 
    436         $('param6').value = $('todo_filter3_order').value; 
    437         $('param7').value = $('todo_filter4_text1').value; 
    438         $('param8').value = $('todo_filter4_text2').value; 
    439  
    440         /* this parameter is still used */ 
    441         $('param9').value = $('todo_current_page').value; 
    442  
    443         rubricks.common.fire_submit('operationbar_button_print'); 
    444         rubricks.common.rubricks_wait_message_close(); 
    445       } 
    446     }, 
    447     print_target_clear: function() { 
    448       $('samplet_print_id').value = ''; 
    449       if(!Element.hasClassName('print_button', 'disabled')) { 
    450         Element.addClassName('print_button', 'disabled'); 
    451       } 
    452     }, 
    453     print_target_set: function(id) { 
    454       $('samplet_print_id').value = id; 
    455       Element.removeClassName('print_button', 'disabled'); 
    456     } 
    457   }, 
    458   select_tab_box : function(container, old_container) { 
    459     if (old_container) { 
    460       old_container.innerHTML = ''; 
    461     } 
    462  
    463     if(container.id == "tabBox_panel0"){ 
    464       _viewmode = 2; 
    465       _target_data = "incomplete"; 
    466     } 
    467     if(container.id == "tabBox_panel1"){ 
    468       _viewmode = 1; 
    469       _target_data = "complete"; 
    470     } 
    471     if(container.id == "tabBox_panel2"){ 
    472       _viewmode = 1; 
    473       _target_data = "all"; 
    474     } 
    475     document.getElementById("todo_targetdata_hiddenid").value = _target_data; 
    476     document.getElementById("todo_viewmode").value            = _viewmode; 
    477     _filter_target  = $("todo_filter_target").value; 
    478     _filter1_kind   = $("todo_filter1_kind" ).value; 
    479     _filter1_text   = $("todo_filter1_text" ).value; 
    480     _filter3_order  = $("todo_filter3_order").value; 
    481     _filter4_text1  = $("todo_filter4_text1").value; 
    482     _filter4_text2  = $("todo_filter4_text2").value; 
    483     rubricks.todo_list._todo_list_reload(container, _target_data, _viewmode, _filter_target, _filter1_kind, _filter1_text, _filter3_order, _filter4_text1, _filter4_text2); 
    484   }, 
    485   reload_tile_tab : function(){ 
    486     document.getElementById("todo_targetdata_hiddenid").value = 'incomplete'; 
    487     document.getElementById("todo_viewmode").value            = 2; 
    488     _filter_target  = $("todo_filter_target").value; 
    489     _filter1_kind   = $("todo_filter1_kind" ).value; 
    490     _filter1_text   = $("todo_filter1_text" ).value; 
    491     _filter3_order  = $("todo_filter3_order").value; 
    492     _filter4_text1  = $("todo_filter4_text1").value; 
    493     _filter4_text2  = $("todo_filter4_text2").value; 
    494     rubricks.todo_list._todo_list_reload($('tabBox_panel0'), 'incomplete', 2, _filter_target, _filter1_kind, _filter1_text, _filter3_order, _filter4_text1, _filter4_text2); 
    495   } 
    496 
    497  
    498 rubricks.todo_list.block = { 
    499   todo_edit_window : null, 
    500   update_area_id   : null, 
    501   todo_edit_window_open : function(todo_id, area_id){ 
    502     update_area_id = area_id; 
    503     rubricks.todo_list.block.display_form_by_ajax(todo_id); 
    504   }, 
    505   display_form_by_ajax : function(todo_id){ 
    506     var params = { 
    507       'todo_p[dmlmode]': 'u', 
    508       'todo_p[id]' : todo_id 
    509     }; 
    510     new Ajax.Updater( 
    511       'todo_edit_window_frame', 
    512       rubricks.todo_list.url_todo_editdialog2, 
    513       { 
    514         asynchronous:true, 
    515         evalScripts:true, 
    516         parameters:params, 
    517         onComplete:function(request){ 
    518           rubricks.common.rubricks_wait_message_close(); 
    519         }, 
    520         onLoading:function(request){ 
    521           rubricks.common.rubricks_wait_message_open(); 
    522         } 
    523       } 
    524     ); 
    525   }, 
    526   todo_execSubmitOnDialog_executing : function(){ 
    527     rubricks.todo_list.block.update_form_by_ajax() 
    528      
    529   }, 
    530   todo_execCancelOnDialog : function() { 
    531     rubricks.todo_list.block.todo_edit_window.close() 
    532   }, 
    533   update_form_by_ajax : function(){ 
    534     var params = 
    535       Form.serialize('todo_editdialog2_formid') + '&' + 
    536       $H({ 
    537         'todo_p[dmlmode]': 'u' 
    538       }).toQueryString(); 
    539  
    540     new Ajax.Request( 
    541       rubricks.todo_list.url_todo_edit, 
    542       { 
    543         asynchronous:false, 
    544         evalScripts:true, 
    545         parameters:params, 
    546         onComplete:function(request){ 
    547           rubricks.common.rubricks_wait_message_close() 
    548           rubricks.todo_list.block.todo_edit_window.close() 
    549           rubricks.todo_list.block.update_block_by_ajax() 
    550         }, 
    551         onLoading:function(request){ 
    552           rubricks.common.rubricks_wait_message_open() 
    553         } 
    554       } 
    555     ); 
    556   }, 
    557   todo_execSubmitOnDialog_completed : function(){ 
    558     if(!($('todo_editdlg_sbumit')) || !($('todo_editdlg_sbumit').disabled)){ 
    559       rubricks.todo_list.block.complete_by_ajax($('todo_id').value) 
    560        
    561     } else { 
    562       alert(rubricks.todo_list.msg_cannot_complete); 
    563     } 
    564   }, 
    565   complete_by_ajax : function(todo_id){ 
    566     var params = 
    567       { 
    568         'todo_p[dmlmode]': 'c', 
    569         'todo_p[id]': todo_id 
    570       }; 
    571  
    572       new Ajax.Request( 
    573       rubricks.todo_list.url_todo_close, 
    574       { 
    575         asynchronous:true, 
    576         evalScripts:true, 
    577         parameters:params, 
    578         onComplete:function(request){ 
    579           rubricks.common.rubricks_wait_message_close() 
    580           rubricks.todo_list.block.todo_edit_window.close() 
    581           rubricks.todo_list.block.update_block_by_ajax() 
    582         }, 
    583         onLoading:function(request){ 
    584           rubricks.common.rubricks_wait_message_open() 
    585         } 
    586       } 
    587     ); 
    588   }, 
    589   update_block_by_ajax : function(){ 
    590     if(update_area_id == 'todo_block_reminder'){ 
    591         new Ajax.Updater( 
    592           update_area_id, 
    593           rubricks.todo_list.url_reminder_block_list, 
    594           { 
    595             asynchronous:true, 
    596             evalScripts:true 
    597           } 
    598         ); 
    599     }else if(update_area_id == 'todo_block_inprogress'){ 
    600         new Ajax.Updater( 
    601           update_area_id, 
    602           rubricks.todo_list.inprogress_block_list, 
    603           { 
    604             asynchronous:true, 
    605             evalScripts:true 
    606           } 
    607         ); 
    608     } 
    609   }, 
    610   turnFlag : function(index){ 
    611     if(index == 20){ 
    612       $('todo_p_editdlg_sbumit_option').checked = true; 
    613     }else{ 
    614       $('todo_p_editdlg_sbumit_option').checked = false; 
    615     } 
    616   }, 
    617  
    618  
    619   validateDateFiled1 : function(element){ 
    620     if(!rubricks.todo_list.block.validDate(element.value)){ 
    621       return rubricks.todo_list.msg_date_confirm; 
    622     } 
    623  
    624     var start_on = String($("todo_start_on").value).stripMB(); 
    625     var close_on = String($("todo_close_on").value).stripMB(); 
    626  
    627     if(!rubricks.todo_list.block.validTerm(start_on, close_on)){ 
    628       return rubricks.todo_list.msg_date_term_confirm_1; 
    629     } 
    630  
    631     return true; 
    632   }, 
    633   validateDateFiled2 : function(element){ 
    634     if(!rubricks.todo_list.block.validDate(element.value)){ 
    635       return rubricks.todo_list.msg_date_confirm; 
    636     } 
    637  
    638     var start_on = String($("todo_start_on").value).stripMB(); 
    639     var close_on = String($("todo_close_on").value).stripMB(); 
    640  
    641     if(!rubricks.todo_list.block.validTerm(start_on, close_on)){ 
    642       return rubricks.todo_list.msg_date_term_confirm_2; 
    643     } 
    644  
    645     return true; 
    646   }, 
    647   validTerm : function(start_on, close_on){ 
    648     if(start_on == "" || close_on == ""){ 
    649       return true; 
    650     } 
    651  
    652     if(!rubricks.todo_list.block.validDate(start_on)){ 
    653       return true; 
    654     } 
    655     if(!rubricks.todo_list.block.validDate(close_on)){ 
    656       return true; 
    657     } 
    658  
    659     var arrayValue = start_on.split("/"); 
    660     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    661       return true; 
    662     } 
    663     var start_on_dt = new Date(arrayValue[0],arrayValue[1],arrayValue[2]); 
    664  
    665  
    666     var arrayValue = close_on.split("/"); 
    667     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    668       return true; 
    669     } 
    670     var close_on_dt = new Date(arrayValue[0],arrayValue[1],arrayValue[2]); 
    671  
    672     if(start_on_dt.getFullYear() > close_on_dt.getFullYear()){ 
    673       return false; 
    674     } 
    675     if(start_on_dt.getFullYear() == close_on_dt.getFullYear()){ 
    676       if(start_on_dt.getMonth() > close_on_dt.getMonth()){ 
    677         return false; 
    678       }else if(start_on_dt.getMonth() == close_on_dt.getMonth()){ 
    679         if(start_on_dt.getDate() > close_on_dt.getDate()){ 
    680           return false; 
    681         } 
    682       } 
    683     } 
    684  
    685     return true; 
    686   }, 
    687   validDate : function(value){ 
    688     if(value.match(/(^[0-9]+[/][0-9]+[/][0-9]+$)|(^$)/) == null){ 
    689       return false; 
    690     }else if(value.match(/(^$)/)){ 
    691       return true; 
    692     } 
    693     var arrayValue = value.split("/"); 
    694     if(arrayValue.length != 3 || new Date(arrayValue[0],arrayValue[1],arrayValue[2]) == NaN){ 
    695       return false; 
    696     } 
    697  
    698     var daylist = new Array(31,28,31,30,31,30,31,31,30,31,30,31); 
    699     var maxday = 0; 
    700     if(arrayValue[1] == 2 && (arrayValue[0]%4==0 && (arrayValue[0]%100!=0 || arrayValue[0]%400==0)) ){ 
    701       maxday = 29; 
    702     }else{ 
    703       maxday = daylist[arrayValue[1] -1]; 
    704     } 
    705     if(arrayValue[0] < 1000 || 9999 < arrayValue[0]){ 
    706       return false; 
    707     } 
    708     if(arrayValue[1] < 1 || 12 < arrayValue[1]){ 
    709       return false; 
    710     } 
    711     if(arrayValue[2] < 1 || maxday < arrayValue[2]){ 
    712       return false; 
    713     } 
    714  
    715     return true; 
    716   }, 
    717   toggle_calendar_flag : function(){ 
    718     sync_calendar_time_open_flag = !sync_calendar_time_open_flag 
    719     if(sync_calendar_time_open_flag){ 
    720       $('close_on_hour').disabled = true 
    721       $('close_on_min').disabled = true 
    722     }else { 
    723       $('close_on_hour').disabled = false 
    724       $('close_on_min').disabled = false 
    725     } 
    726   }, 
    727   toggle_remind_flag : function(){ 
    728     sync_remind_open_flag = !sync_remind_open_flag 
    729     if(sync_remind_open_flag){ 
    730       $('todo_reminder_delay').disabled = true 
    731       $('todo_reminder_every').disabled = true 
    732       $('reminder_detail_block_div').style.display = 'none'; 
    733     }else { 
    734       $('todo_reminder_delay').disabled = false 
    735       $('todo_reminder_every').disabled = false 
    736       $('reminder_detail_block_div').style.display = ''; 
    737     } 
    738   } 
    739 
    740 </script> 
     2<%= javascript_include_tag '/javascripts/components/todo_list/todo' %> 
    7413<script type="text/javascript"> 
    7424  Object.extend(rubricks.todo_list, { 
    743     msg_cannot_complete:        "<%= hl('[_Todo_Main_msg_cannot_complete]') %>", 
    744     msg_date_confirm:           "<%= hl('[_Todo_EditDlg_msg_dateConfirm]') %>", 
    745     msg_date_invalid:           "<%= hl('[_Todo_EditDlg_msg_dateInvalid]') %>", 
    746     msg_date_term_confirm_1:    "<%= hl('[_Todo_EditDlg_msg_dateTermConfirm1]') %>", 
    747     msg_date_term_confirm_2:    "<%= hl('[_Todo_EditDlg_msg_dateTermConfirm2]') %>", 
    748     msg_done_confirm:           "<%= hl('[_Todo_Main_msg_done_confirm]') %>", 
    749     msg_main_completed:         "<%= hl('[_Todo_Main_Completed]') %>", 
    750     msg_main_deleted:           "<%= hl('[_Todo_Main_Deleted]') %>", 
    751     msg_main_updated:           "<%= hl('[_Todo_Main_Updated]') %>", 
    752     msg_network_error:          "<%= hl('[_Common_NetworkError]') %>", 
    753     msg_session_timeout:        "<%= hl('[_Common_SessionTimeout]') %>", 
    754     msg_validate_char_range:    "<%= hl('[_Common_Validate_CharRange]', 1, 15) %>", 
    755     str_title_new:              "<%= hl('[_Todo_EditDlg_label_title_new]') %>", 
    756     str_title_update:           "<%= hl('[_Todo_EditDlg_label_title_update]') %>", 
    757     url_inprogress_block_list:  "<%= url_for(:controller => "/todo_list/todo", :action => 'inprogress_block_list', :only_path => true) %>", 
    758     url_login:                  "<%= RubricksConfig.get('user_guest_available') ? url_for(:controller => '/system/login', :action => 'index', :main => '_login_inline') : url_for(:controller => '/system/login', :action => 'login_page') %>", 
    759     url_reminder_block_list:    "<%= url_for(:controller => "/todo_list/todo", :action => 'reminder_block_list', :only_path => true) %>", 
    760     url_reopen:                 "<%= url_for(:controller => '/todo_list/todo', :action => 'reopen', :only_path => true) %>", 
    761     url_todo_close:             "<%= url_for(:controller => "/todo_list/todo", :action => 'todo_close', :only_path => true) %>", 
    762     url_todo_edit:              "<%= url_for(:controller => "/todo_list/todo", :action => 'todo_edit', :only_path => true) %>", 
    763     url_todo_editdialog2:       "<%= url_for(:controller => "/todo_list/todo", :action => 'todo_editdialog2', :only_path => true) %>", 
    764     url_todo_view_maindata:     "<%= url_for(:controller => "/todo_list/todo", :action => "todo_view_maindata" ) %>", 
    765     url_update_category_box:    "<%= url_for(:controller => '/todo_list/todo', :action => 'update_category_box', :only_path => true) %>", 
    766     main_filter_validate_form_begin : function() { 
    767       <%= validate_form_begin 'todo_list_filter_submit', false %> 
    768     }, 
    769     main_filter_validate_todo_filter4_text1 : function() { 
    770       <% regexp_str = "[0-9]+[/][0-9]+[/][0-9]+" %> 
    771       <%= validate "todo_filter4_text1", [{:length => '0..10'}, {:regexp => {:value => "/(#{regexp_str})|(^$)/", :msg => hl("[_Todo_EditDlg_msg_dateConfirm]") }}, {:custom => {:function => "rubricks.todo_list.main_filter_validateDateFiled1", :msg => "aaa"}}], 'todo_list_filter_btn', false %> 
    772     }, 
    773     main_filter_validate_todo_filter4_text2 : function() { 
    774       <% regexp_str = "[0-9]+[/][0-9]+[/][0-9]+" %> 
    775       <%= validate "todo_filter4_text2", [{:length => '0..10'}, {:regexp => {:value => "/(^#{regexp_str}$)|(^$)/", :msg => hl("[_Todo_EditDlg_msg_dateConfirm]") }}, {:custom => {:function => "rubricks.todo_list.main_filter_validateDateFiled2", :msg => "aaa"}}], 'todo_list_filter_btn', false %> 
    776     }, 
    777     validate_editdlg_form_begin : function() { 
    778       <%= validate_form_begin 'todo_editdlg_sbumit', false %> 
    779     }, 
    780     validate_todo_title : function() { 
    781       <%= validate 'todo_title', [{:required => true}, {:length => '1..30'}], 'todo_editdlg_sbumit', false %> 
    782     }, 
    783     validate_todo_content : function() { 
    784       <%= validate 'todo_content', [{:length => '0..1500'}], 'todo_editdlg_sbumit', false %> 
    785     }, 
    786     validate_todo_start_on : function() { 
    787       <% regexp_str = "[0-9]+[/][0-9]+[/][0-9]+" %> 
    788       <%= validate "todo_start_on", [{:length => '0..10'}, {:regexp => {:value => "/(#{regexp_str})|(^$)/", :msg => hl("[_Todo_EditDlg_msg_dateConfirm]") }}, {:custom => {:function => "rubricks.todo_list.validateDateFiled1", :msg => "aaa"}}], 'todo_editdlg_sbumit', false %> 
    789     }, 
    790     validate_todo_close_on : function() { 
    791       <% regexp_str = "[0-9]+[/][0-9]+[/][0-9]+" %> 
    792       <%= validate "todo_close_on", [{:length => '0..10'}, {:regexp => {:value => "/(^#{regexp_str}$)|(^$)/", :msg => hl("[_Todo_EditDlg_msg_dateConfirm]") }}, {:custom => {:function => "rubricks.todo_list.validateDateFiled2", :msg => "aaa"}}], 'todo_editdlg_sbumit', false %> 
    793     } 
     5    int_progress_index_max: <%= TodoList::TodoListTodo::PROGRESS_RANGE.length.to_i - 1 %>, 
     6    msg_delete_confirm:     '<%= jl('[_Common_Delete_Confirm]') %>', 
     7    msg_finish_confirm:     '<%= jl('[_TodoList_Common_MessageFinishConfirm]') %>', 
     8    msg_todo_not_selected:  '<%= jl('[_TodoList_Common_ErrorTodoNotSelected]') %>', 
     9    url_common_input:       '<%= url_for(:controller => '/todo_list/common', :action => 'input') %>', 
     10    url_index_delete:       '<%= url_for(:controller => '/todo_list/index',  :action => 'delete') %>', 
     11    url_index_finish:       '<%= url_for(:controller => '/todo_list/index',  :action => 'finish') %>', 
     12    url_list_delete:        '<%= url_for(:controller => '/todo_list/list',   :action => 'delete') %>', 
     13    url_list_show:          '<%= url_for(:controller => '/todo_list/list',   :action => 'show') %>' 
    79414  }); 
    79515</script> 
     16<% render_window('todo_input_window', 'rubricks.todo_list.todo_input_window', '[_TodoList_Common_InputWindowTitle]', {:width => 640, :height => 510, :onCloseButton => 'function() {rubricks.todo_list.common_input_window_close();}', :appendToBody => true}) do %> 
     17  <div id="todo_input_window_contents"></div> 
     18<% end %> 
  • components/todo_list/trunk/todo_list/remind_mail_cron.rb

    r4140 r5721  
    33    def execute(arg) 
    44      if TodoList::TodoListConfig.instance.site_reminder_flag 
    5         remind_tasks = TodoList::TodoListTodo.find_remind_tasks 
    6         remind_tasks.each do |remind_task| 
     5        TodoList::TodoListTodo.find_remind_tasks.each do |remind_task| 
    76          begin 
    87            RubricksLib.load_lang 
     
    1110          rescue => ex 
    1211            RAILS_DEFAULT_LOGGER.error ex.message 
    13             RAILS_DEFAULT_LOGGER.error ex.backtrace 
     12            RAILS_DEFAULT_LOGGER.error ex.backtrace.join("\n  ") 
    1413          end 
    1514        end 
  • components/todo_list/trunk/todo_list/todo_list_category_box.rb

    r4687 r5721  
    11class TodoList::TodoListCategoryBox < ActiveRecord::Base 
    2   acts_as_record_trails         :trails_fields => {:title => '[_Common_Title]'}, :default_methods => [:title], :auto_logger => {:update => true} 
     2  acts_as_record_trails     :trails_fields => {:title => '[_Common_Title]'}, :default_methods => [:title] 
     3  has_many                  :todo_list_todos 
     4  belongs_to                :rubricks_user 
     5  validates_length_of       :title, :in => 1..15 
     6  validates_numericality_of :box_no, :only_integer => true 
     7  validates_inclusion_of    :box_no, :in=>1..3 
    38 
    4   has_many :todo_list_todos 
    5   belongs_to :rubricks_user 
     9  unless defined? BOX_NUMBERS 
     10    BOX_NUMBERS = [3, 2, 1] 
     11  end 
    612 
    7   validates_length_of :title, :in => 1..15 
    8   validates_numericality_of :box_no, :only_integer => true 
    9   validates_inclusion_of :box_no, :in=>1..3 
     13  class << self 
     14    def find_or_create_boxes(ru_id) 
     15      tlcb_list = self.find(:all, :conditions => ['rubricks_user_id = ?', ru_id], :order => 'box_no desc') 
     16      if tlcb_list.blank? 
     17        tlcb_list = [] 
     18        BOX_NUMBERS.each do |no| 
     19          tlcb_list << self.create(:title => RubricksLib.hl("[_TodoList_Index_LabelPriority#{no}]"), :box_no => no, :rubricks_user_id => ru_id) 
     20        end 
     21      end 
     22      return tlcb_list 
     23    end 
     24  end 
     25 
     26  def current_todos 
     27    TodoList::TodoListTodo.find(:all, :conditions => ['todo_list_category_box_id = ? and closed_on is null', self.id], :order => 'order_in_box asc') 
     28  end 
    1029end 
  • components/todo_list/trunk/todo_list/todo_list_config.rb

    r4687 r5721  
    11class TodoList::TodoListConfig < ActiveRecord::Base 
    2   acts_as_record_trails     :trails_fields => {:site_reminder_flag => '[_Todo_TrailAdminUpdate_col1]', :site_remind_hour => '[_Todo_TrailAdminUpdate_col2]', :site_remind_min => '[_Todo_TrailAdminUpdate_col3]'}, :default_methods => [:site_reminder_flag, :site_remind_hour, :site_remind_min], :auto_logger => {:read => false, :update => false} 
    3  
    4   validates_numericality_of :site_reminder_flag, :only_integer => true 
    5   validates_inclusion_of    :site_reminder_flag, :in=>0..1 
     2  acts_as_record_trails     :trails_fields => {:trail_site_reminder_flag => '[_TodoList_Common_Reminder]', :trail_site_remind_time => '[_TodoList_Admin_RemindTime]'}, :default_methods => [:trail_site_reminder_flag, :trail_site_remind_time] 
     3  validates_bool_of         :site_reminder_flag 
    64  validates_numericality_of :site_remind_hour,   :only_integer => true 
    75  validates_inclusion_of    :site_remind_hour,   :in=>0..23 
     
    119  class << self 
    1210    def instance 
    13       unless TodoList::TodoListConfig.exists?(1) 
    14         new_instance = TodoList::TodoListConfig.new 
    15         new_instance.site_reminder_flag = 0 
    16         new_instance.site_remind_hour = 0 
    17         new_instance.site_remind_min = 0 
    18         new_instance.save 
    19       end 
    20       self.find(1) 
     11      self.find(1) rescue self.create!({:site_reminder_flag => false, :site_remind_hour => 0, :site_remind_min => 0}) 
     12    end 
     13  end 
     14 
     15  def trail_site_remind_time 
     16    if self.site_reminder_flag 
     17      return %Q|#{sprintf('%02d', self.site_remind_hour)}:#{sprintf('%02d', self.site_remind_min)}| 
     18    else 
     19      return '' 
     20    end 
     21  end 
     22 
     23  def trail_site_reminder_flag 
     24    if self.site_reminder_flag 
     25      return RubricksLib.hl('[_Common_Use]') 
     26    else 
     27      return RubricksLib.hl('[_Common_NotUse]') 
    2128    end 
    2229  end 
  • components/todo_list/trunk/todo_list/todo_list_mailer.rb

    r4875 r5721  
    33    RubricksLib.load_lang 
    44    self.template_root = "#{RAILS_ROOT}/components" 
    5     sub_str_header  = RubricksLib.hl('[_Todo_Common_Reminder]') 
     5    sub_str_header  = RubricksLib.hl('[_TodoList_Common_Reminder]') 
    66    from_str = "#{RubricksConfig.get('mail_from_name')} <#{RubricksConfig.get('mail_from_address')}>" 
    77    file_name = "remind_mail_#{RubricksLib.current_lang}" 
    8     distance = build_distance(remind_mail_task) 
    9  
    10     #@headers['MIME-Version'] = "1.0" 
    11     #@headers['Content-Transfer-Encoding'] = "7bit" 
     8    distance = TodoList::TodoListLib.deadline_message(remind_mail_task.distance_for_close_on) 
    129 
    1310    recipient = remind_mail_task.todo_list_category_box.rubricks_user.email_by_admin 
     
    2017    body(:todo => remind_mail_task) 
    2118  end 
    22  
    23   private 
    24   def build_distance(todo_task) 
    25     if todo_task.distance_for_close_on > 0 
    26       sprintf(RubricksLib.hl('[_Todo_Reminder_BeforeDay]'), todo_task.distance_for_close_on) 
    27     elsif todo_task.distance_for_close_on == 0 
    28       RubricksLib.hl('[_Todo_Reminder_JustToday]') 
    29     else 
    30       sprintf(RubricksLib.hl('[_Todo_Reminder_AfterDay]'), todo_task.distance_for_close_on.abs) 
    31     end 
    32   end 
    3319end 
  • components/todo_list/trunk/todo_list/todo_list_todo.rb

    r4687 r5721  
    11class TodoList::TodoListTodo < ActiveRecord::Base 
    2   acts_as_record_trails         :trails_fields => {:title => '[_Common_Title]'}, :default_methods => [:title], :auto_logger => {:update => true} 
     2  unless defined? DEADLINE_CAUTION 
     3    DEADLINE_CAUTION    = 5 
     4    ORDER_MAX           = 65535 
     5    PROGRESS_RANGE      = [0,10,20,30,40,50,60,70,80,90,100] 
     6  end 
    37 
    4   belongs_to :todo_list_category_box 
    5  
    6   # you can't do bulk updating. 
    7   attr_protected :id, :category, :created_on, :updated_on, :closed_on, :closed_flag, :delete_flag, :rubricks_user_id_owner, :rubricks_user_id_from, :rubricks_user_id_to, :todo_id 
    8  
    9   validates_numericality_of :id, :only_integer => true, :allow_nil => true 
     8  acts_as_record_trails     :trails_fields => {:title => '[_Common_Title]'}, :default_methods => [:title] 
     9  belongs_to                :todo_list_category_box 
     10  validates_bool_of         :reminder_flag 
     11  validates_bool_of         :sync_calendar_flag 
     12  validates_numericality_of :order_in_box, :only_integer => true 
     13  validates_inclusion_of    :order_in_box, :in=>0..ORDER_MAX 
     14  validates_numericality_of :progress, :only_integer => true 
     15  validates_inclusion_of    :progress, :in => PROGRESS_RANGE 
     16  validates_numericality_of :reminder_delay, :only_integer => true 
     17  validates_inclusion_of    :reminder_delay, :in => 0..5 
     18  validates_numericality_of :reminder_every, :only_integer => true 
     19  validates_inclusion_of    :reminder_every, :in => 0..1 
     20  validates_numericality_of :this_order, :only_integer => true 
     21  validates_inclusion_of    :this_order, :in => 1..3 
     22  validates_numericality_of :todo_list_category_box_id, :only_integer => true 
    1023  validates_length_of       :title, :in => 1..30 
    1124  validates_length_of       :content, :in => 0..1500, :allow_nil => true 
    12   validates_length_of       :category, :in => 1..30, :allow_nil => true 
     25  validates_date_of         :created_on, :allow_nil => true 
     26  validates_date_of         :updated_on, :allow_nil => true 
    1327  validates_date_of         :start_on, :allow_nil => true 
    1428  validates_date_of         :close_on, :allow_nil => true 
    1529  validates_date_of         :closed_on, :allow_nil => true 
    16   validates_numericality_of :this_order, :only_integer => true 
    17   validates_inclusion_of    :this_order, :in=>1..3 
    18   validates_numericality_of :progress, :only_integer => true 
    19   validates_inclusion_of    :progress, :in=>[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100] 
    20   validates_numericality_of :closed_flag, :only_integer => true 
    21   validates_inclusion_of    :closed_flag, :in=>0..1 
    22   validates_numericality_of :delete_flag, :only_integer => true 
    23   validates_inclusion_of    :delete_flag, :in=>0..1 
    24   validates_numericality_of :rubricks_user_id_owner, :only_integer => true 
    25   validates_numericality_of :rubricks_user_id_from, :only_integer => true 
    26   validates_numericality_of :rubricks_user_id_to, :only_integer => true, :allow_nil => true 
    27   validates_numericality_of :todo_id, :only_integer => true, :allow_nil => true 
    28   validates_numericality_of :reminder_flag, :only_integer => true 
    29   validates_inclusion_of    :reminder_flag, :in=>0..1 
    30   validates_numericality_of :reminder_every, :only_integer => true 
    31   validates_inclusion_of    :reminder_every, :in=>0..1 
    32   validates_numericality_of :reminder_delay, :only_integer => true 
    33   validates_inclusion_of    :reminder_delay, :in=>0..5 
    34   validates_numericality_of :sync_calendar_flag, :only_integer => true 
    35   validates_inclusion_of    :sync_calendar_flag, :in=>0..1 
    36  
    37   def validate 
    38     errors.add("created_on", "has invalid date") unless created_on?() 
    39     errors.add("updated_on", "has invalid date") unless updated_on?() 
    40     errors.add("start_on", "has invalid date") unless start_on?() 
    41     errors.add("close_on", "has invalid date") unless close_on?() 
    42     errors.add("closed_on", "has invalid date") unless closed_on?() 
    43     return errors.empty? 
    44   end 
    4530 
    4631  class << self 
    47     def find_remind_tasks(always_every = false) 
    48       return [] unless TodoList::TodoListConfig.instance.site_reminder_flag? 
    49       reminder_flag_tasks = TodoList::TodoListTodo.find( 
    50         :all, 
    51         :conditions => [ 
    52           'closed_flag = false and delete_flag = false and ' + 
    53           'reminder_flag = true and close_on is not null' 
    54         ], 
    55         :include => [{:todo_list_category_box => :rubricks_user}], 
    56         :order => 'close_on' 
    57       ) 
    58       reminder_tasks = reminder_flag_tasks.delete_if do |t| 
    59         !(t.in_remind_stage? && (always_every || t.reminder_every? || t.remind_start_day?)) 
     32    def create_or_update_todo(input_data) 
     33      if input_data[:id].blank? 
     34        tlt = self.new({:order_in_box => ORDER_MAX}) 
     35      else 
     36        tlt = self.find(input_data[:id]) 
    6037      end 
    61       return reminder_tasks 
     38      tlt.update_todo(input_data) 
     39      return tlt 
    6240    end 
    6341 
    64     def find_remind_tasks_by_user(always_every, user_id) 
    65       return [] unless TodoList::TodoListConfig.instance.site_reminder_flag? 
     42    def filter_merge_conditions(filter_conditions_hash) 
     43      filter_conditions, query, conditions = {}, [], [] 
     44      query         << 'todo_list_category_box_id in (?)' 
     45      conditions    << TodoList::TodoListCategoryBox.find_or_create_boxes(RubricksLib.current_user.id).map{|tlcb| tlcb.id} 
     46      case filter_conditions_hash[:target] 
     47      when 'all' 
     48      when 'completed' 
     49        query       << 'closed_on is not null' 
     50      else 
     51        query       << 'closed_on is null' 
     52      end 
     53      unless filter_conditions_hash[:word].blank? 
     54        fixed_word   = '%' + filter_conditions_hash[:word] + '%' 
     55        query       << '(title like ? or content like ?)' 
     56        conditions  << fixed_word 
     57        conditions  << fixed_word 
     58      end 
     59      date_range = RubricksLib.dates_to_range(filter_conditions_hash[:start_on], filter_conditions_hash[:close_on]) 
     60      if date_range.first == date_range.last 
     61        unless date_range.first == RubricksLib::DATE_DUMMY 
     62          query         << '((start_on <= ? and close_on >= ?) or (start_on <= ? and close_on is null) or (start_on is null and close_on >= ?))' 
     63          conditions    << date_range.first 
     64          conditions    << date_range.first 
     65          conditions    << date_range.first 
     66          conditions    << date_range.first 
     67        end 
     68      else 
     69        if date_range.first == RubricksLib::DATE_DUMMY 
     70          query         << '(start_on <= ? or close_on <= ?)' 
     71          conditions    << date_range.first 
     72          conditions    << date_range.last 
     73        elsif date_range.last == RubricksLib::DATE_DUMMY 
     74          query         << '(start_on >= ? or close_on >= ?)' 
     75          conditions    << date_range.first 
     76          conditions    << date_range.last 
     77        else 
     78          query         << '((start_on <= ? and close_on >= ?) or (start_on <= ? and close_on >= ?) or (start_on <= ? and close_on is null) or (start_on is null and close_on >= ?) or (start_on >= ? and start_on <= ?) or (close_on >= ? and close_on <= ?))' 
     79          conditions    << date_range.first 
     80          conditions    << date_range.first 
     81          conditions    << date_range.last 
     82          conditions    << date_range.last 
     83          conditions    << date_range.last 
     84          conditions    << date_range.first 
     85          conditions    << date_range.first 
     86          conditions    << date_range.last 
     87          conditions    << date_range.first 
     88          conditions    << date_range.last 
     89        end 
     90      end 
     91      conditions.unshift(query.join(' and ')) 
     92      filter_conditions[:conditions]    = conditions 
     93      filter_conditions[:page]          = filter_conditions_hash[:page] 
     94      filter_conditions[:search]        = !filter_conditions_hash[:word].blank? 
     95      return filter_conditions 
     96    end 
    6697 
    67       conditions = "" 
    68       reminder_flag_tasks = TodoList::TodoListTodo.find( 
    69         :all, 
    70         :conditions => [ 
    71           'rubricks_user_id_owner=? and closed_flag = false and delete_flag = false and ' + 
    72           'reminder_flag = true and close_on is not null', user_id 
    73         ], 
    74         :include => [{:todo_list_category_box => :rubricks_user}], 
    75         :order => 'close_on' 
    76       ) 
    77       reminder_tasks = reminder_flag_tasks.delete_if do |t| 
    78         !(t.in_remind_stage? && (always_every || t.reminder_every? || t.remind_start_day?)) 
     98    def filter_merge_hash(filter_conditions_hash, input_data, page) 
     99      if input_data.is_a?(Hash) 
     100        input_data = input_data.symbolize_keys 
     101        filter_conditions_hash[:word]       = input_data[:word]     unless input_data[:word].nil? 
     102        filter_conditions_hash[:target]     = input_data[:target]   unless input_data[:target].nil? 
     103        filter_conditions_hash[:start_on]   = input_data[:start_on] unless input_data[:start_on].nil? 
     104        filter_conditions_hash[:close_on]   = input_data[:close_on] unless input_data[:close_on].nil? 
    79105      end 
    80       return reminder_tasks 
     106      filter_conditions_hash[:page] = page if page != 0 
     107      return filter_conditions_hash 
    81108    end 
    82   end 
    83109 
    84   def created_on? 
    85     todo_date?(created_on) 
    86   end 
     110    def finish_todo(id) 
     111      tlt = self.find(id) 
     112      tlt.update_todo({:progress => PROGRESS_RANGE.last}) 
     113    end 
    87114 
    88   def updated_on? 
    89     todo_date?(updated_on) 
    90   end 
     115    def find_remind_tasks 
     116      if TodoList::TodoListConfig.instance.site_reminder_flag.blank? 
     117        return [] 
     118      else 
     119        reminder_flag_tasks = self.find(:all, :conditions => ['reminder_flag = true and closed_on is not null'], :include => {:todo_list_category_box => :rubricks_user}, :order => 'close_on') 
     120        reminder_tasks = reminder_flag_tasks.delete_if{|task| task.remind_unwanted?} 
     121        return reminder_tasks 
     122      end 
     123    end 
    91124 
    92   def start_on? 
    93     todo_date?(start_on) 
    94   end 
    95  
    96   def close_on? 
    97     todo_date?(close_on) 
    98   end 
    99  
    100   def closed_on? 
    101     todo_date?(closed_on) 
    102   end 
    103  
    104   def in_remind_stage? 
    105     return (Time.now >= Time.at(self.close_on - self.reminder_delay.day)) 
    106   end 
    107  
    108   def remind_start_day? 
    109     today = Time.now 
    110     start_day = Time.at(self.close_on - self.reminder_delay.day) 
    111     return( 
    112       today.year  == start_day.year && 
    113       today.month == start_day.month && 
    114       today.day   == start_day.day 
    115     ) 
     125    def refresh_order(*args) 
     126      options = args.flex :box_no, :tlt_id_list 
     127      unless options[:tlt_id_list].nil? 
     128        tlcb = TodoList::TodoListCategoryBox.find(options[:box_no]) 
     129        self.find(:all, :conditions => ['todo_list_todos.id in (?)', options[:tlt_id_list]], :include => :todo_list_category_box).each do |tlt| 
     130          tlt.ignore_auto_logger = true 
     131          tlt.update_attributes!(:todo_list_category_box_id => options[:box_no], :order_in_box => options[:tlt_id_list].index(tlt.id.to_s)) 
     132        end 
     133      end 
     134    end 
    116135  end 
    117136 
    118137  def distance_for_close_on 
    119138    if self.close_on.nil? 
    120       nil 
     139      return nil 
    121140    else 
    122       close_on_date_time = DateTime.new( 
    123         self.close_on.year, self.close_on.month, self.close_on.day 
    124       ) 
    125       current_date_time = DateTime.new( 
    126         DateTime.now.year, DateTime.now.month, DateTime.now.day 
    127       ) 
    128       (close_on_date_time - current_date_time).to_i 
     141      close_on_date_time    = DateTime.new(self.close_on.year, self.close_on.month, self.close_on.day) 
     142      current_date_time     = DateTime.new(DateTime.now.year, DateTime.now.month, DateTime.now.day) 
     143      return (close_on_date_time - current_date_time).to_i 
    129144    end 
    130145  end 
    131146 
    132   :protected 
    133   def todo_date?(obj) 
    134     if obj.nil? 
    135       return true 
    136     elsif obj.instance_of?(Date) or obj.instance_of?(Time) or obj.instance_of?(DateTime) 
    137       if obj.year < 0 or 9999 < obj.year 
     147  def remind_unwanted? 
     148    if(Time.now >= Time.at(self.close_on - self.reminder_delay.day)) 
     149      if(self.reminder_every > 0 || Time.at(self.close_on - self.reminder_delay.day).to_date === Date.today) 
    138150        return false 
    139151      end 
    140       return true 
    141     else 
    142       return false; 
     152    end 
     153    return true 
     154  end 
     155 
     156  def update_todo(input_data) 
     157    self.title      = input_data[:title]      unless input_data[:title].blank? 
     158    self.content    = input_data[:content]    unless input_data[:content].nil? 
     159    self.start_on   = input_data[:start_on]   unless input_data[:start_on].nil? 
     160    self.close_on   = input_data[:close_on]   unless input_data[:close_on].nil? 
     161    self.closed_on  = Date.today              if self.progress != PROGRESS_RANGE.last && input_data[:progress].to_i == PROGRESS_RANGE.last 
     162    self.closed_on  = nil                     if input_data[:progress] && input_data[:progress].to_i != PROGRESS_RANGE.last 
     163    self.this_order = input_data[:this_order] unless input_data[:close_on].blank? 
     164    self.progress   = input_data[:progress]   unless input_data[:progress].blank? 
     165    set_category 
     166    set_reminder(input_data) 
     167    self.save! 
     168    return self 
     169  end 
     170 
     171  def validate 
     172    raise_if_invalid_user 
     173  end 
     174 
     175  private 
     176  def raise_if_invalid_user 
     177    raise RubricksError::Common::ValidateException unless self.todo_list_category_box.rubricks_user_id == RubricksLib.current_user.id 
     178  end 
     179 
     180  def set_category 
     181    self.todo_list_category_box_id ||= TodoList::TodoListCategoryBox.find_or_create_boxes(RubricksLib.current_user.id)[1].id 
     182  end 
     183 
     184  def set_reminder(input_data) 
     185    self.reminder_flag = (input_data[:reminder_flag] == 'on') ? true : false 
     186    self.reminder_flag = false unless self.closed_on.blank? 
     187    if self.reminder_flag 
     188      self.reminder_delay = input_data[:reminder_delay] 
     189      self.reminder_every = input_data[:reminder_every] 
    143190    end 
    144191  end 
    145  
    146   def strcount(str) 
    147     return nil if str == nil 
    148     n = 0 
    149     str.scan(/./) do |c| 
    150       n = n + 1 
    151     end 
    152     return n 
    153   end 
    154192end