2017-05-15 24 views
0

これは、定期的にユーザマクロをコンフルエンスに書き込む人にとって、これは単純な問題になるはずです。Confluenceユーザマクロ

私はちょうどその年の週をページに表示するだけです。私はいつものメタデータを持つユーザマクロを作成し、含まれているだけで、今のところ、現在の日付を表示するには、次

## @noparams 
<div>$content.currentDate</div> 

合流のバージョンは5.9.8であり、私がしようとすると任意の方法を見つけるために、documentationを検索しました'currentDate'プロパティについては、ContentEntityObject($ content)にもcurrentDateフィールドが存在することは記述されていません。私は '$ content.currentDate.get(3)'を使用しようとしています。これはJavaを信じています。これは今年の週を返しますが、Confluenceはブロック全体をプレーンテキストとしてレンダリングします。

答えて

0

Javaオブジェクトにアクセスすると、速度が微妙になることがあります。理論的には

あなたはアクセスSimpleDateFormatは、あなたがこのような何かをするだろうことができれば...

@noparams 
#set($dow = new SimpleDateFormat("EEEE").format($content.currentDate())) 
<div>$dow</div> 

しかし残念ながら、SimpleDateFormatは簡単に速度からはアクセスできません。クライアント側のレンダリングが許容される場合

、それははるかに簡単です - 単にロール独自のJavaScript:

@noparams 
<div class="dow"></div> 
<script> 
    (function() { 
     var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; 
     Date.prototype.getDayName = function() { 
      return days[ this.getDay() ]; 
     }; 
    })(); 

    AJS.toInit(function ($) { 
    $('.dow').text((new Date()).getDayName()); 
    }); 
</script> 
+0

Confluenceには、速度ツール(DateToolなど)が含まれていますか? –

+0

非常に便利な答えです。マクロ環境内では私がmoment.jsにアクセスできないように思われることは残念です。 私はあなたの答えを[ここ](http://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php)と組み合わせて、必要。しかし、いくつかの問題がありました。 1. [ここ](https://confluence.atlassian.com/confkb/how-to-use-javascript-in-confluence-313458839.html)に記載されているようにHTTPを有効にする必要がありました。 ) 2.私は、テキストの書き込みがページの次のテキストをすべて上書きするように見えたので、ページの下にマクロを置く必要がありました。 – sebpinski

+0

と呼ばれました。 * **曜日**。 – dvdsmpsn

0

ビル@dvdsmpsnは私のマクロを提供しているものには、現在、次のようになります。

## @noparams 

<div id='weeknumber'></div> 

<script> 
function getWeekNumber(d) { 
    d.setHours(0,0,0,0); 
    d.setDate(d.getDate() + 4 - (d.getDay()||7)); 
    var yearStart = new Date(d.getFullYear(),0,1); 
    var weekNo = Math.ceil((((d - yearStart)/86400000) + 1)/7); 
    return weekNo; 
} 

AJS.toInit(function ($) { 
    $('#weeknumber').text(getWeekNumber(new Date())); 
    }); 
</script> 

いくつかの迷惑があります:

  1. モーメントはすでにコンフルエントにロードされていますが、私はアクセスできないようですマクロ環境からのもの
  2. Javascriptを使用できるようにするには、HTMLマクロ環境を有効にする必要がありました。
  3. マクロは、コンフルエンスページのベースで使用する必要がありました。その理由は、jQueryメソッドの実行後に、読み取り専用形式で表示されたときにエディタで書き込まれたすべてのテキストを上書きするように見えたからです。
関連する問題