HI,
I have written the below user macro script to display the pages which have crossed the given number of days from the last modified date. The macro works on few pages. But on few pages the table does not load/the script doesnt work. Could you help to check if something is to be corrected.
## @Param pageReviewDays:title=Page Review Days|type=int|required=true
<html>
<body>
<h2>Outdated Pages</h2>
<table border=1 id="t1"></table>
</body>
</html>
<script>
window.alert("Setting Parameter");
#set ($limit = $parampageReviewDays)
var element = document.getElementById("t1")
window.alert("Getting descendents $limit");
#foreach ( $descendent in $content.getDescendents() )
var lmdate = "$descendent.getLastModificationDate()";
var lm = lmdate.split(" ")[0];
var lmsplit = lm.split("-");
var lmjoin = lmsplit.join("/");
var limt = "$limit";
var today = new Date();
var date = (today.getFullYear()+'/'+(today.getMonth()+1)+'/'+today.getDate()).toString();
//window.alert(lmjoin);
var days = daysdifference(lmjoin, date);
element. innerHTML = element. innerHTML + "<tr><td><a href="+ contextPath +"$descendent.getUrlPath()> $descendent.title </a></td><td>"+days+"</td></tr>";
#end
//window.alert("loaded!")
function daysdifference (firstDate, secondDate){
let startDay = new Date(firstDate);
let endDay = new Date(secondDate);
// Determine the time difference between two dates
let millisBetween = startDay.getTime() - endDay.getTime();
return Math.round(millisBetween / (1000 * 3600 * 24));
}
</script>
Hello @Anusha Wilson ,
Can you provide the error or issues you get on those pages the macro does not work?
What you need to pay attention to is use of "window.alert()" as the page loading is asynchronous and it can conflict with the AJS modules being loaded on page. You need to check if the page is fully loaded.
The JS code should be inside the "AJS.toInit()" method according to the documentation (https://developer.atlassian.com/server/confluence/including-javascript-and-css-resources/#web-resource-configuration) .
AJS.toInit(function () {
// ... your initialisation code here
});
Also, some pages have last modification date as NULL, so you need to check for this too.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.