每年的汇合用户宏

问题描述 投票:0回答:2

我希望这对于经常编写用户宏以进行汇合的人来说应该只是一个简单的问题。

我只想在页面上显示一年中的一周。我已经使用通常的元数据创建了用户宏,并包含以下内容以显示当前的当前日期:

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

汇合的版本是5.9.8并且我搜索了documentation以尝试找到'currentDate'属性的任何方法,但是没有记录currentDate字段甚至存在于ContentEntityObject($ content)上。我曾尝试使用'$ content.currentDate.get(3)',因为我相信Java会返回一年中的一周,但Confluence只会将整个块呈现为纯文本。

java macros confluence
2个回答
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
投票

基于@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. 必须启用HTML宏环境才能允许使用Javascript。
  3. 宏必须在汇合页面的基础上使用,因为它的使用似乎覆盖了以只读格式查看时在编辑器中编写的所有后续文本(在运行jQuery方法之后)
© www.soinside.com 2019 - 2024. All rights reserved.