1

子ページのテーブルを作成するカスタム ユーザー マクロを作成しました。このテーブルには、最終更新日、バージョン、更新者などの情報も入力されます。

ページをエクスポートするとテーブルにデータが入力されますが、スペースをエクスポートするとテーブルは空になります。

コードは以下です

## Macro title: Page Data
## Macro has a body: N
## Body processing: n/a
## Output: HTML
##
## Developed by: Brian Mitchell
## Date created: 06/27/2013
## @noparams

#set ($PageTitle = $content.displayTitle)
#set ($PageVersion = $content.version)
#set ($PageDate = $action.dateFormatter.formatGivenString("dd MMM yyyy",    $content.lastModificationDate))
#set ($PageAuthor = $content.lastModifierName)
#set ($pageListArray = [])
#set ($currentPage = $action.page)
#set ($spaceHome = $space.getHomePage())

#macro ( process $rp )
 #set ($pagelist = $rp.getSortedChildren() )  ## returns List<Page>
   #foreach( $child in $pagelist )
     #set($p = $pageListArray.add( $child ) )
       #if( $child.hasChildren() )
          #process ( $child )
    #end
 #end
#end

    #process ($currentPage)


    <h1> Confluence Page Versions </h1>
    <table class="confluenceTable">
    <tbody>
   <tr>
    <th class="confluenceTh">Page Title</th>
    <th class="confluenceTh">Page Version</th>
     <th class="confluenceTh">Date</th>
     <th class="confluenceTh">Changed By</th>
    </tr>

    <tr>
    <td>$PageTitle</td>
     <td><a href=http://confluence.mango.local/pages/viewpreviousversions.action?pageId=$content.getIdAsString()>$PageVersion</a></td>
      <td>$PageDate</td>
     <td>$PageAuthor</td>
     </tr>


      #foreach( $child in $pageListArray)   ## child is of type Page
        <tr>
      <td class="confluenceTd">$child.getTitle()</td>
        <td class="confluenceTd"><a href=http://confluence.mango.local/pages/viewpreviousversions.action?pageId=$child.getIdAsString()>$child.getVersion()</a> </td>
        <td class="confluenceTd">$action.dateFormatter.formatGivenString("dd MMM yyyy", $child.getLastModificationDate())</td>
          <td class="confluenceTd">$child.getLastModifierName()</td>
  </tr>
            #end

         </tbody>
        </table>

ただし、コードを編集してスペースの内容全体を配列に入れると、エクスポート時にテーブルにデータが入力されます


#process ($currentPage)
#process ($spaceHome)に置き換えます。

問題はスペースのエクスポートにあると思います 次のコマンドが機能していません
#set ($currentPage = $action.page)

代わりに何を使用できるかについて誰かアイデアがありますか?

4

1 に答える 1

0

$actionVelocity 変数は、実行中の現在のアクションを参照します。スペースのエクスポートを実行している状況$actionでは、ページのエクスポート アクションではなく、スペースのエクスポート アクションを参照します。スペースのエクスポート アクションにはpage、アクション オブジェクトから使用できる変数がないため、$action.page何も返されません。

しかし、あなたは幸運です: スペースのエクスポート機能は、エクスポートされている現在のページのコンテキストを渡します。あなたはすでにそれを使用しています! $contentは、エクスポートされる ContentEntityObject を参照します。これは、実際には から取得しようとしていたものと同じです$action.page

例を修正するには、#processマクロの呼び出しを使用するように調整するだけ$contentです。Confluence 5.5 でスペース全体をエクスポートする場合、次のように動作します。

## Macro title: Page Data
## Macro has a body: N
## Body processing: n/a
## Output: HTML
##
## Developed by: Brian Mitchell
## Date created: 06/27/2013
## @noparams

#set ($PageTitle = $content.displayTitle)
#set ($PageVersion = $content.version)
#set ($PageDate = $action.dateFormatter.formatGivenString("dd MMM yyyy",    $content.lastModificationDate))
#set ($PageAuthor = $content.lastModifierName)
#set ($pageListArray = [])
## #set ($currentPage = $action.page)
#set ($spaceHome = $space.getHomePage())

#macro ( process $rp )
 #set ($pagelist = $rp.getSortedChildren() )  ## returns List<Page>
   #foreach( $child in $pagelist )
     #set($p = $pageListArray.add( $child ) )
       #if( $child.hasChildren() )
          #process ( $child )
    #end
 #end
#end

    #process ($content)


    <h1> Confluence Page Versions </h1>
    <table class="confluenceTable">
    <tbody>
   <tr>
    <th class="confluenceTh">Page Title</th>
    <th class="confluenceTh">Page Version</th>
     <th class="confluenceTh">Date</th>
     <th class="confluenceTh">Changed By</th>
    </tr>

    <tr>
    <td>$PageTitle</td>
     <td><a href=http://confluence.mango.local/pages/viewpreviousversions.action?pageId=$content.getIdAsString()>$PageVersion</a></td>
      <td>$PageDate</td>
     <td>$PageAuthor</td>
     </tr>


      #foreach( $child in $pageListArray)   ## child is of type Page
        <tr>
      <td class="confluenceTd">$child.getTitle()</td>
        <td class="confluenceTd"><a href=http://confluence.mango.local/pages/viewpreviousversions.action?pageId=$child.getIdAsString()>$child.getVersion()</a> </td>
        <td class="confluenceTd">$action.dateFormatter.formatGivenString("dd MMM yyyy", $child.getLastModificationDate())</td>
          <td class="confluenceTd">$child.getLastModifierName()</td>
  </tr>
            #end

         </tbody>
        </table>
于 2014-05-01T15:20:07.577 に答える