[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02220] patch for mhc2ol.in



野口です。

以前こちらでアドバイスをいただき、mhc でスケジュールの登録/削除を行
うと自動的に Outlook へ同期するように、以下の hook をしかけています。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
(add-hook 'mhc-draft-finish-hook
	    (lambda ()
	        (shell-command "/usr/bin/ruby /usr/bin/mhc2ol -N -H &")))
(add-hook 'mhc-delete-file-hook
	    (lambda ()
	        (shell-command "/usr/bin/ruby /usr/bin/mhc2ol -N -H &")))
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

現行の mhc2ol を実行すると、すでに過去3ヶ月分の完了したスケジュール
(Outlook 側の操作で、アラーム解除済み)が上書きされて、「過去のアラーム」
がどばっと出てきてしまうという問題があります。

そこで、mhc2ol でに以下の変更を加えてみました。

"-A" オプションを新設しました。
"-A"をつけると
   mhc2ol で Export する際に「過去分のスケジュール」については「アラーム設
   定(X-SC-Alarm: )」を無効にして Export する。
という動作になります。(オプションを指定しなければ、従来通りの動作)

以上、ご検討いただければ幸いです。
-- 
NOGUCHI Yusuke <nogunogu@xxxxxxxxxxxxxxxxx>



*** mhc2ol.in.org	Mon May  2 07:55:08 2005
--- mhc2ol.in	Mon Oct  2 17:46:20 2006
***************
*** 65,70 ****
--- 65,78 ----
        [@stime, @etime]
      end
  
+     def get_sdatetime
+       Time .local(@sdate. y, @sdate. m, @sdate .d, @stime .hh, @stime .mm)
+     end
+ 
+     def get_edatetime
+       Time .local(@edate. y, @edate. m, @edate .d, @etime .hh, @etime .mm)
+     end
+ 
      def handle_recurrence(ol_appoint)
      end
  
***************
*** 183,189 ****
  
  def usage
    print '
! usage: mhc2ol [-a | -i | -d | -N] [-H] [-n] [-s] [-m] [-r dir] [-c category] [YYYYMMDD-yyyymmdd]
  
    mhc2ol -- Add/Copy mhc articles to Outlook.
  
--- 191,197 ----
  
  def usage
    print '
! usage: mhc2ol [-a | -i | -d | -N] [-A] [-H] [-n] [-s] [-m] [-r dir] [-c category] [YYYYMMDD-yyyymmdd]
  
    mhc2ol -- Add/Copy mhc articles to Outlook.
  
***************
*** 205,210 ****
--- 213,219 ----
               ~/Mail/schedule
      -c     : Copy only the mhc articles of which the category
               matches the specified regexp.
+     -A     : Disable reminder if the mhc article already has been passed.
  
      YYYYMMDD-yyyymmdd : set a start and end date of scanning mhc.
                          if omitted, scan from 3 months ago to
***************
*** 341,346 ****
--- 350,356 ----
    @@flag_export_part = 'all' # 'all' || 'body_only'
    @@flag_noharm = false
    @@flag_timestamp = false
+   @@flag_disable_passed_sch = false
    @@mhc_category_name = 'MHC-sch'
    @@additional_category = false
  
***************
*** 475,482 ****
  
        # a reminder is valid for a future schedule.
        if sch .alarm() != nil then
! 	appoint .ReminderSet = true
! 	appoint .ReminderMinutesBeforeStart = sch .alarm() / 60
        else
  	appoint .ReminderSet = false
        end
--- 485,496 ----
  
        # a reminder is valid for a future schedule.
        if sch .alarm() != nil then
! 	if period .get_sdatetime >= Time .now && $flag_disable_passed_sch
! 	  appoint .ReminderSet = true
! 	  appoint .ReminderMinutesBeforeStart = sch .alarm() / 60
! 	else
! 	  appoint .ReminderSet = false
! 	end
        else
  	appoint .ReminderSet = false
        end
***************
*** 752,757 ****
--- 766,775 ----
      @@flag_additional_category = flag
    end
  
+   def Exporter.set_flag_disable_passed_sch(flag)
+     @@set_flag_disable_passed_sch = flag
+   end
+ 
    def Exporter.to_ol_date(date)
      format("%4d/%02d/%02d", date .y(), date .m(), date .d()) if date
    end
***************
*** 775,780 ****
--- 793,799 ----
  $flag_separation = false
  $flag_discreet = false
  $flag_additional_category = false
+ $flag_disable_passed_sch = false
  
  while ARGV .length > 0
    case ARGV[0]
***************
*** 804,809 ****
--- 823,830 ----
      $flag_separation = true
    when '-m'
      $flag_additional_category = true
+   when '-A'
+     $flag_disable_passed_sch = true
    else
      usage()
    end
***************
*** 850,855 ****
--- 871,877 ----
  Exporter .set_flag_noharm($flag_noharm)
  Exporter .set_flag_timestamp($flag_timestamp)
  Exporter .set_flag_additional_category($flag_additional_category)
+ Exporter .set_flag_disable_passed_sch($flag_disable_passed_sch)
  exporter = Exporter .new(mdb, outlook)
  exporter .set_category_regexp($flag_category_regexp)
  exporter .delete_ol_schedules()