You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2024/07/07 20:33:03 UTC

(jspwiki) 01/04: Update CalendarTag.java

This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit 196767ef5c865fce2e7e63e682a620fc44203ed4
Author: udittmer <34...@users.noreply.github.com>
AuthorDate: Mon Jun 24 10:04:00 2024 +0200

    Update CalendarTag.java
---
 .../java/org/apache/wiki/tags/CalendarTag.java     | 33 ++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
index 51cda55db..49b5011ae 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/CalendarTag.java
@@ -57,10 +57,12 @@ public class CalendarTag extends WikiTagBase {
 
     private static final long serialVersionUID = 0L;
     private static final Logger LOG = LogManager.getLogger( CalendarTag.class );
+    private static final int NUM_PAGES_TO_CHECK = 5;
     
     private SimpleDateFormat m_pageFormat;
     private SimpleDateFormat m_urlFormat;
     private SimpleDateFormat m_monthUrlFormat;
+    private boolean m_addIndex;
     private SimpleDateFormat m_dateFormat = new SimpleDateFormat( "ddMMyy" );
 
     /**
@@ -127,6 +129,19 @@ public class CalendarTag extends WikiTagBase {
         m_monthUrlFormat = new SimpleDateFormat( format );
     }
 
+    /**
+     *  Sets whether or not the pageFormat contains a page index at the end.
+	 *  This is the case for the WeblogPlugin.
+     *
+     *  @param addindex Whether a page index should be appended to the pageFormat
+     *
+     *  @see org.apache.wiki.plugin.WeblogPlugin
+     */
+    public void setAddindex( final boolean addIndex )
+    {
+        m_addIndex = addIndex;
+    }
+
     private String format( final String txt ) {
         final Page p = m_wikiContext.getPage();
         if( p != null ) {
@@ -145,8 +160,22 @@ public class CalendarTag extends WikiTagBase {
 
         if( m_pageFormat != null ) {
             final String pagename = m_pageFormat.format( day.getTime() );
-            
-            if( engine.getManager( PageManager.class ).wikiPageExists( pagename ) ) {
+
+			var somePageExistsOnThisDay = false;
+			if (m_addIndex) {
+				// Look at up to 5 pages for whether the page exists. This avoids an issue 
+				// with the WeblogPlugin when the first blog post(s) of a day gets deleted.
+				for (int pageIdx = 1; pageIdx <= NUM_PAGES_TO_CHECK; pageIdx++) {
+					if( engine.getManager( PageManager.class ).wikiPageExists( pagename+pageIdx ) ) {
+						somePageExistsOnThisDay = true;
+						break;
+					}
+				}
+			} else {
+				somePageExistsOnThisDay = engine.getManager( PageManager.class ).wikiPageExists( pagename );
+			}
+
+            if( somePageExistsOnThisDay ) {
                 if( m_urlFormat != null ) {
                     final String url = m_urlFormat.format( day.getTime() );
                     result = "<td class=\"link\"><a href=\""+url+"\">"+day.get( Calendar.DATE )+"</a></td>";