Allgemeine Aktionen:
Anmelden
Wiki
▼
:
Dokumentenindex
»
Space:
Main
▼
:
Dokumentenverzeichnis
»
Seite:
RecentChanges
Suche
Aktionen:
Exportieren
▼
:
Als PDF exportieren
Als RTF exportieren
Als HTML exportieren
Weitere Aktionen
▼
:
Druckvorschau
Zeige den Quellcode
Willkommen in den metamagix Wikis!
»
Dashboard
»
Letzte Änderungen
Wiki-Quellcode von
Letzte Änderungen
Zuletzt geändert von
Administrator
am 2009/09/09 02:00
Inhalt
·
Kommentare
(0)
·
Anmerkungen
(0)
·
Anhänge
(2)
·
Historie
·
Information
Zeilennummern verstecken
1: {{velocity}} 2: ## 3: ## Recent changes. 4: ## 5: ## Optional parameters : 6: ## 7: ## Parameters which can be set in velocity before including this page or can be passed as HTTP parameters. 8: ## Note that HTTP parameters supercede velocity set variables. 9: ## 10: ## - rcShowMinor (String set to "true" or "false"): show minor edits. 11: ## - rcShowDiff (String set to "true" or "false"): show diff in items. 12: ## - rcShowRss (String set to "true" or "false"): show RSS at the bottom of the list. 13: ## - rcChangesNb (String set to a numerical value): number of recent changes to display. 14: ## - rcSpace (List of string[s]): restrict recent changes retrieval to pages within the given space. 15: ## - rcTag (List of string[s]): restrict recent changes retrieval to pages with the given tag. 16: ## - rcAuthor (List of string[s]): restrict recent changes retrieval to pages with the given author. 17: ## 18: ## Parameters which can be set before including this page only. 19: ## 20: ## - rcDocumentNames (Collection): The list of recentlyChanged documents, to reuse a previous search query. 21: ## 22: $xwiki.jsx.use("Main.RecentChanges")## 23: $xwiki.ssx.use("Main.RecentChanges")## 24: #set($action = "$!request.getParameter('action')") 25: ## 26: ## Start execution timer 27: ## 28: #set($execStart = $util.getDate()) 29: ## 30: ## Go to diff URL service. 31: ## 32: #if($action == "goToDiffURL") 33: #set($page = "$!request.getParameter('page')") 34: #set($author = "$!request.getParameter('author')") 35: #set($date = "$!request.getParameter('date')") 36: #set($period = $xwiki.criteriaService.getPeriodFactory().createDayPeriod($date)) 37: #set($criterion = $xwiki.criteriaService.getRevisionCriteriaFactory().createRevisionCriteria($author, $period)) 38: #if("$!request.getParameter('rcShowMinor')" == "true") 39: #set($discard = $criterion.setIncludeMinorVersions(true)) 40: #end 41: #set($diffDoc = $xwiki.getDocument($page)) 42: #set($revisions = $diffDoc.getRevisions($criterion)) 43: #set($rev1 = $listtool.get($revisions, 0)) 44: #set($revMax = $revisions.size() - 1) 45: #set($rev2 = $listtool.get($revisions, $revMax)) 46: #if($rev2 != "1.1") 47: #set($rev2 = $xwiki.getDocument($diffDoc, $rev2).getPreviousVersion()) 48: #end 49: $response.sendRedirect($diffDoc.getURL("view", "viewer=changes&rev1=${rev1}&rev2=${rev2}")) 50: #end 51: ## We have to use the HTML macro to avoid prints of multiple   on macro calls. 52: {{html}} 53: ## Manage minor edits. 54: #setVariableFromRequest($rcShowMinor "rcShowMinor" false) 55: ## Manage show diff in items. 56: #setVariableFromRequest($rcShowDiff "rcShowDiff" true) 57: ## Manage show RSS links. 58: #setVariableFromRequest($rcShowRss "rcShowRss" true) 59: ## Manage number of changes to display. 60: #setVariableFromRequest($rcChangesNb "rcChangesNb" 30) 61: ## Manage tag criterion 62: #setVariableFromRequest($rcTag "rcTag" []) 63: ## Manage space criterion 64: #setVariableFromRequest($rcSpace "rcSpace" []) 65: ## Manage author criterion 66: #setVariableFromRequest($rcAuthor "rcAuthor" []) 67: {{/html}} 68: ## 69: ## Create a string containing one or more ? given the number of values in the passed list. 70: ## 71: #macro(createQueryParameters $values $parameters) 72: #foreach($value in $values) 73: #if($parameters == "") 74: #set($parameters = "?") 75: #else 76: #set($parameters = "${parameters}, ?") 77: #end 78: #end 79: #end 80: ## 81: ## Retrieve recently changed documents. 82: ## 83: #set($criteria = $util.getHashMap()) 84: #if("$!rcDocumentNames" == "") 85: #if(!$xwiki.hasMinorEdit() || $rcShowMinor) 86: #set ($hqlQuery = "where 1=1 order by doc.date desc") 87: #else 88: #set ($hqlQuery = "where doc.version like '%.1'#if(!$isAdvancedUser) and doc.author != 'superadmin'#end order by doc.date desc") 89: #end 90: ## Create space criterion. 91: #if($rcSpace.size() > 0) 92: #set($spaceParameters = "") 93: #createQueryParameters($rcSpace $spaceParameters) 94: #set($discard = $criteria.put("doc.space in (${spaceParameters})", $rcSpace)) 95: #end 96: ## Create tag criterion. 97: #if("$!xwiki.getPlugin('tag')" != "" && $rcTag.size() > 0) 98: #set($docsWithTag = $util.getArrayList()) 99: #foreach($item in $rcTag) 100: #set($discard = $docsWithTag.addAll($xwiki.tag.getDocumentsWithTag($item))) 101: #end 102: #set($docsWithTagParameters = "") 103: #createQueryParameters($docsWithTag $docsWithTagParameters) 104: #set($discard = $criteria.put("doc.fullName in (${docsWithTagParameters})", $docsWithTag)) 105: #end 106: #if($rcAuthor.size() > 0) 107: #set($authorParameters = "") 108: #createQueryParameters($rcAuthor $authorParameters) 109: #set($discard = $criteria.put("doc.author in (${authorParameters})", $rcAuthor)) 110: #end 111: ## Exclude blacklisted spaces if displaying changes for a whole wiki 112: #if($rcSpace.size() == 0) 113: #set($blacklistedSpacesParameters = "") 114: #createQueryParameters($blacklistedSpaces $blacklistedSpacesParameters) 115: #set($discard = $criteria.put("doc.space not in (${blacklistedSpacesParameters})", $blacklistedSpaces)) 116: #end 117: #if($criteria.size() > 0) 118: ## If any, loop over criterias to add them to the query, then perform the query. 119: #set($values = $util.getArrayList()) 120: #foreach($criterion in $criteria.keySet()) 121: #if($criteria.get($criterion).size() > 0) 122: #set($hqlQuery = $hqlQuery.replaceAll("where", "where ${criterion} and")) 123: #set($discard = $values.addAll(0, $criteria.get($criterion))) 124: #end 125: #end 126: #set($rcDocumentNames = $xwiki.searchDocuments($hqlQuery, $rcChangesNb, 0, $values)) 127: #else 128: ## No query criterion, perform the query as is. 129: #set($rcDocumentNames = $xwiki.searchDocuments($hqlQuery, $rcChangesNb, 0)) 130: #end 131: #end 132: ## 133: ## Prepare comments handling 134: #set($commentsOrder = false) 135: #if($xwiki.getSpacePreferenceAsInt('commentsorder', 1) == 0) 136: #set($commentsOrder = true) 137: #end 138: ## 139: ## Comment handling macro. 140: ## Retreive page's last comment if any and 141: ## overwrite variables if this comment is the last modification on the page. 142: ## 143: #macro(handleComment $rcDoc $rcType $rcDt $commentsOrder) 144: ## Retrieve comments from last to first. 145: #set($rcComments = $rcDoc.getComments($commentsOrder)) 146: #if($rcComments.size() > 0) 147: ## Retrieve last comment. 148: #set($lastComment = $listtool.get($rcComments, 0)) 149: #set($lastCommentDate = $lastComment.getProperty("date").getValue()) 150: ## If the last modification on the page is the comment, overwrite values. 151: ## We don't test compareTo() == 0 since the comment date and the save date may vary a little bit. 152: #if($lastCommentDate.compareTo($rcDt.toDate()) > -1 && $lastCommentDate.compareTo($rcDt.toDate()) <= 1) 153: #set($rcType = "comment") 154: #end 155: #end 156: #end 157: ## 158: ## Attachments handling macro. 159: ## Retrieve page's attachments and put those which upload matches the modification entry (author and timeframe) 160: ## in the $rcAttachments List. 161: ## 162: #macro(handleAttachments $rcDoc $rcAuthor $rcDt) 163: #set($attachments = $rcDoc.getAttachmentList()) 164: #foreach($attachment in $attachments) 165: #set($attachmentDt = $xwiki.jodatime.getDateTime($attachment.getDate().getTime())) 166: #if($rcAuthor == $attachment.getAuthor() && $rcDt.getYear() == $attachmentDt.getYear() && $rcDt.getDayOfYear() == $attachmentDt.getDayOfYear()) 167: #set($discard = $rcAttachments.add($attachment)) 168: #end 169: #end 170: #end 171: ## 172: ## 173: ## 174: #macro(displayRcAuthor $author) 175: #useravatar($author) 176: <br/><span class="recentChangesAuthor"> 177: #if($author == "XWikiGuest") 178: Guest 179: #else 180: #set($userName = $xwiki.getUserName($author)) 181: #if($userName == "") 182: ## userName can be empty when the page has been saved without specifying the author. 183: ## We're printing a non-breaking space to ensure xhtml validity (ie: avoid empty paragraph). 184: 185: #else 186: $userName 187: #end 188: #end 189: </span> 190: #end 191: #macro(displayRcVersion $version) 192: #if($version == "1.1") 193: <span class="rcVersion">(<span class="newVersion">$msg.get("xe.recentchanges.entry.new")</span>)</span> 194: #end 195: #end 196: 197: ## 198: ## Display the recent changes list. 199: ## 200: #set($previousDt = $xwiki.jodatime.getDateTime(0)) 201: #set($discard = $previousDate.setTime(0)) 202: #set($previousAuthor = "") 203: ## Get this very doc, useful when it is included from another one. 204: #set($recentChangesDoc = $xwiki.getDocument("Main.RecentChanges")) 205: {{html clean="false"}} 206: <table class="recentChanges" summary="$msg.get('xe.recentchanges.summary')"> 207: <tr class="recentChangesHeader"><th scope="col">$msg.get("xe.recentchanges.column.authoranddate")</th><th scope="col">$msg.get("xe.recentchanges.column.changes")</th></tr> 208: #foreach ($rcDocName in $rcDocumentNames) 209: #set($row = "") 210: #set($rcAttachments = $util.arrayList) 211: ## Verify user access level on the document 212: #if ($xwiki.hasAccessLevel("view", $context.user, "${context.database}:${rcDocName}")) 213: #set($rcDoc = $xwiki.getDocument($rcDocName)) 214: #set($rcType = "page") 215: #set($rcAuthor = $rcDoc.getAuthor()) ## TODO : check comments 216: #set($rcDt = $xwiki.jodatime.getDateTime($rcDoc.getDate().getTime())) 217: ## The handleComment macro overwrites rcType variable if the last modification is a comment. 218: #handleComment($rcDoc $rcType $rcDt $commentsOrder) 219: ## The handleAttachments macro put a list of attachments uploaded during the day by the author in $rcAttachments. 220: #handleAttachments($rcDoc $rcAuthor $rcDt) 221: #if($rcAuthor == $previousAuthor && $rcDt.getYear() == $previousDt.getYear() && $rcDt.getDayOfYear() == $previousDt.getDayOfYear()) 222: ## Same day and author, continue in the same row. 223: #else 224: ## Different day or author, end previous row and start a new one. 225: #if($velocityCount > 1)</ul></td></tr>#end ## close previous row if needed 226: <tr><td class="recentChangesLeft">#displayRcAuthor($rcAuthor)<br/> 227: <span class="recentChangesDate">$xwiki.formatDate($rcDt.toDate(), "MMMM d")</span></td> 228: <td class="recentChangesRight"><ul class="xlist"> ## open next cell 229: #end 230: ## Compute a GUID for this modification with page name, modification date and author. 231: #set($modGUID = "${rcDoc.fullName}_${xwiki.formatDate($rcDt.toDate(), 'yyyyMMdd')}_${rcAuthor}") 232: ## Build the URL used to retreive the diff viewer URL 233: #set($goToDiffURL = $recentChangesDoc.getURL("view", "xpage=plain&action=goToDiffURL&page=${rcDoc.getFullName()}&author=${rcAuthor}&date=${xwiki.formatDate($rcDt.toDate(), 'yyyyMMdd')}&rcShowMinor=${rcShowMinor}")) 234: <li class="xitem xunderline xhighlight ${rcType}"> 235: <div class="xitemcontainer"> 236: #if($rcType == "comment") 237: <div class="modifiedPage"><a href="$rcDoc.getURL()" title="$msg.get("xe.recentchanges.entry.comment.tooltip", [$xwiki.formatDate($rcDt.toDate(), "HH:mm")]) ">$xwiki.getXMLEncoded($rcDoc.getDisplayTitle())</a></div> 238: #if($rcShowDiff) 239: <div class="xshowonhover modifiedPageActions"><a class="ajax" href="$rcDoc.getURL("vire", "viewer=comments")" onclick="toggleClass(document.getElementById('$modGUID'), 'hidden'); toggleClass(document.getElementById('${modGUID}_comShow'), 'hidden'); toggleClass(document.getElementById('${modGUID}_comHide'), 'hidden'); return false;"><span id="${modGUID}_comShow">[+] $msg.get("xe.recentchanges.entry.comment.show")</span><span id="${modGUID}_comHide" class="hidden">[-] $msg.get("xe.recentchanges.entry.comment.hide")</span> $msg.get("xe.recentchanges.entry.comment")</a></div> 240: <div class="commentContainer hidden" id="$modGUID"> 241: <div class="commentQuote lQuo"> </div> 242: <div class="commentQuote rQuo"> </div> 243: <div class="comment"> 244: {{/html}} 245: $lastComment.get("comment") 246: {{html clean="false"}} 247: </div> 248: ## Display discussion link, this link point to the comments anchor. 249: <div class="commentAdd"><img src="$xwiki.getSkinFile("icons/silk/comment.gif")" alt="Reply icon" /> <a href="${rcDoc.getURL("view")}#Comments">$msg.get("xe.recentchanges.entry.comment.seediscussion")</a></div> 250: </div> 251: #end 252: #else 253: <div class="modifiedPage"><a href="$rcDoc.getURL()" title="$msg.get("xe.recentchanges.entry.page.tooltip", [$rcDoc.getVersion(), $xwiki.formatDate($rcDt.toDate())])">$xwiki.getXMLEncoded($rcDoc.getDisplayTitle())</a> #displayRcVersion($rcDoc.getVersion())</div> 254: #if($rcShowDiff) 255: <div class="xshowonhover modifiedPageActions"><a href="$goToDiffURL" title="$msg.get('xe.recentchanges.entry.page.seemodifications.title', [$rcDoc.fullName])">$msg.get("xe.recentchanges.entry.page.seemodifications")</a></div> 256: ## If the author has uploaded attachments during the day in this page, display them. 257: #if($rcAttachments.size() > 0) 258: <div class="attachmentContainer" id="$modGUID"> 259: <ul> 260: #foreach($rcAttachment in $rcAttachments) 261: <li class="attachment"><a href="$rcDoc.getAttachmentURL($rcAttachment.filename)">$rcAttachment.filename</a> #displayRcVersion($rcAttachment.getVersion())</li> 262: #end 263: </ul> 264: </div> 265: #end 266: #end 267: #end 268: <div class="xspacer"> </div> 269: </div> 270: </li> 271: #end 272: #set($previousAuthor = $rcAuthor) 273: #set($previousDt = $rcDt) 274: #end 275: ## Close last row if any. 276: #if($rcDocumentNames.size() > 1)</ul></td></tr>#end 277: </table> 278: {{/html}} 279: ## 280: ## Rebuild URL query string 281: ## Workaround until we fix $request.getQueryString() 282: ## 283: #set($queryString = "") 284: #set($paramMap = $request.getParameterMap()) 285: #foreach($key in $paramMap.keySet()) 286: #foreach($value in $paramMap.get($key)) 287: #set($queryString = "${queryString}&${key}=${value}") 288: #end 289: #end 290: ## 291: ## Provide links to display minor edits and RSS feed. 292: ## 293: #if($xwiki.hasMinorEdit()) 294: 295: {{html}} 296: <p class="recentChangesMoreActions"> 297: #if($rcShowMinor) 298: <a href="$xwiki.getURL($tdoc.getFullName(), "view", $queryString.replaceAll('rcShowMinor=true', ''))"><img src="$xwiki.getSkinFile("icons/silk/zoom_out.gif")" alt="Hide minor icon"/>$msg.get("xe.recentchanges.hideminor")</a> 299: #else 300: <a href="$xwiki.getURL($tdoc.getFullName(), "view", "${queryString}&rcShowMinor=true")"><img src="$xwiki.getSkinFile("icons/silk/zoom_in.gif")" alt="Show minor icon"/>$msg.get("xe.recentchanges.showminor")</a> 301: #end 302: #if($rcShowRss) 303: #set($rssURL = "") 304: #set($parameters = 'xpage=plain&outputSyntax=plain') 305: #if($rcTag.size() > 0) 306: #set($parameters = "${parameters}&tag=$listtool.get($rcTag, 0)") 307: #end 308: #if($rcSpace.size() > 0) 309: #set($parameters = "${parameters}&space=$listtool.get($rcSpace, 0)") 310: #end 311: #set($rssURL = $xwiki.getURL('Main.WebRss', 'view', $parameters)) 312: <a href="${rssURL}"><img src="$xwiki.getSkinFile("icons/silk/feed.gif")" alt="RSS icon"/>$msg.get("xe.recentchanges.rssfeed")</a> 313: #end 314: </p> 315: {{/html}} 316: #end 317: {{/velocity}}