I'm investigating to find out if it is possible to create a date counter for Confluence for when a page has been created and modified (see example below). We are on a tight budget so we can't fork out money to pay for such feature. I was wondering if it possible to achieve this with User Macro?
PageCounter.jpg
Obviously the Archiving Plugin would be more robust, but here's a user macro that would fulfill your requirements:
## @param LimitDays:title=# of days until outdated|required=true|type=int|default=30|desc=This is the number of days until the info box will show as a warning box #set ( $limitDays = 30) #set ( $daysSinceCreated = ($action.dateFormatter.calendar.timeInMillis - $content.creationDate.time ) / (1000*60*60*24) ) #set ( $daysSinceLastModified = ($action.dateFormatter.calendar.timeInMillis - $content.lastModificationDate.time ) / (1000*60*60*24) ) #set ( $limitDays = $generalUtil.convertToInteger($paramLimitDays).intValue() ) #if ( $generalUtil.isInLastDays($content.lastModificationDate, $limitDays) ) #set ( $macroType = "info" ) #else #set ( $macroType = "warning") #end #if ( $daysSinceCreated >= 21 ) #set ( $sinceCreatedString = ($daysSinceCreated / 7) + " weeks" ) #else #set ( $sinceCreatedString = $daysSinceCreated + " days" ) #end #if ( $daysSinceLastModified >= 21 ) #set ( $sinceLastModifiedString = ($daysSinceLastModified / 7) + " weeks" ) #else #set ( $sinceLastModifiedString = $daysSinceLastModified + " days" ) #end <ac:structured-macro ac:name="$macroType"> <ac:rich-text-body> <p> <span>This page was created </span><b>$sinceCreatedString</b><span> ago. </span> </p> <p> <span>This page hasn&#39;t been updated for </span><b>$sinceLastModifiedString</b><span>. </span> </p> </ac:rich-text-body> </ac:structured-macro>
Right now the default # of days is 30, but you can change that in lines 1 and 2 if you wish (you need to change both to the same value).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This is absolutely spot on. I am really grateful of the time you have spent putting this together for me. I still have such a long way to go before I master velocity. Where did you learn all this from?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Basically a ton of trial and error and looking at the work that others have done, specifically the other prolific user macro writers:
Andrew Frayling
Matthew Horn
Steve Goldberg
Davin Studer
Sandro Herrmann
(apologies if I missed someone)
Beyond this, take a look at these pages:
https://confluence.atlassian.com/doc/user-macro-template-syntax-223906130.html
Take a look at the Javadoc for the objects accessible in Velocity (and some that aren't, since it's possible to import some extra classes), including Page/ContentEntityObject.
Also, it's good to look at the documentation for version 1.6 of Velocity (the one that's included in most versions of Confluence):
http://velocity.apache.org/engine/1.6/user-guide.html
For some extra ideas, I have a bunch of user macros in my Bitbucket repository:
https://bitbucket.org/stephendeutsch/confluence-user-macros
They're getting a bit old, but you should be able to get at least a few ideas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I don't know about your budget, but the Archiving Plugin has this feature.
46dfb7cd-76f7-4117-b269-2f23361fc426.png
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for the suggestion. I did demo this a while ago and it seems really good. I would definatly look at this in the future.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
i try to create a table macro in which two current report values can be displayed together.
"Metadata report" and "View of contributors" - see attachmend.
Unfortunately, I do not succeed. I also have to admit that my programming experience is not very good.
The table should have 4 columns.
Page, process owner (metadata "prozessver"), date of last modify, counter "Last change before 30 days".
Can someone help me or give a tip on this?
I have tried this code, without success : (
## @param daysSinceLastModified:title=# of days until outdated|required=true|type=int|default=30|desc=This is the number of days until the page was modified
#set ( $daysSinceLastModified = ($action.dateFormatter.calendar.timeInMillis - $content.lastModificationDate.time ) / (1000*60*60*24) )
#set ( $descendantPages = $pageManager.getDescendents($content) )
#set( $prozessverantwortlicher = $metadataService.getMetadataValue(prozessver ) $!value
<table>
<tr>
<th>Page</th>
<th>Geändert von</th>
<th>Änderungsdatum</th>
<th>Geändert seit < 7d?</th>
</tr>
#foreach ( $page in $descendantPages )
<tr>
<td><a href="${req.contextPath}$page.urlPath"> $page.title </a></td>
<td> $prozessverantwortlicher </td>
<td> $action.dateFormatter.format($page.lastModificationDate) </td>
<td> $daysSinceLastModified </td>
</tr>
#end
</table>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I would say give it 21 days which is 3 weeks. Thanks for your time helping me with this
I have been trying to find a solution for a while now but everything I try doesn't seem to work.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Seems possible. What should the limit be for when a # of days is displayed as # of weeks? Above it shows 9 days ago, which is more than 1 week. Would the cutoff be at 2 weeks or something?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.