2
1
0

Confluence にはステータスマクロがありますが、
挿入した日付が古くなったら自動的に非表示にすることはできるでしょうか。

例えば、新しいコンテンツを指すために
「new」のようなステータスを付けていますが、
一週間たった場合そのステータスは表示されないようにしたいです。

そのような動作は可能でしょうか。

    Commentコメントを追加...

    1 回答

    1.  
      3
      2
      1

      標準で自動的にステータスを非表示にすることはできないと思いますので、
      ステータスマクロを組み込むようなユーザマクロを作成すれば実現は可能かと思いました。

      ## @param Year:title=年|type=int|required=true
      ## @param Month:title=月|type=int|required=true
      ## @param Day:title=日|type=int|required=true
      ## @param Text:title=テキスト|type=string|required=true
      ## @param Duration:title=期間(日)|type=int|default=7
      ## @param Color:title=色|type=enum|enumValues=Grey,Red,Yellow,Green|default=Grey
      ## @param IsVisible:title=日付の表示|type=boolean|default=true
      
      #set ($intConv = 1)
      #set ($durationDate = $intConv.parseInt($paramDuration))
      #set ($calendarClass = $content.class.forName('java.util.Calendar'))
      #set ($getInstanceMethod = $calendarClass.getDeclaredMethod('getInstance', null))
      #set ($nowCalendar = $getInstanceMethod.invoke(null, null))
      #set ($calendar = $getInstanceMethod.invoke(null, null))
      #set ($month = $intConv.parseInt($paramMonth) - 1)
      $calendar.set($intConv.parseInt($paramYear), $month, $intConv.parseInt($paramDay))
      
      #set ($nowDate = $nowCalendar.getTime())
      #set ($date = $calendar.getTime())
      #set ($diffDays = ($nowDate.getTime() - $date.getTime()) / (1000 * 60 * 60 * 24))
      
      #if ($diffDays < $durationDate)
        <ac:structured-macro ac:name="status" ac:schema-version="1">
          <ac:parameter ac:name="colour">$paramColor</ac:parameter>
          <ac:parameter ac:name="title">$paramText</ac:parameter>
        </ac:structured-macro>
        <br/>
      #end
      
      #if ($paramIsVisible == 'true')
        <time datetime="${paramYear}-${paramMonth}-${paramDay}" />
      #end
        Commentコメントを追加...