001 /* 002 Licensed to the Apache Software Foundation (ASF) under one 003 or more contributor license agreements. See the NOTICE file 004 distributed with this work for additional information 005 regarding copyright ownership. The ASF licenses this file 006 to you under the Apache License, Version 2.0 (the 007 "License"); you may not use this file except in compliance 008 with the License. You may obtain a copy of the License at 009 010 http://www.apache.org/licenses/LICENSE-2.0 011 012 Unless required by applicable law or agreed to in writing, 013 software distributed under the License is distributed on an 014 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 KIND, either express or implied. See the License for the 016 specific language governing permissions and limitations 017 under the License. 018 */ 019 package org.apache.wiki.tags; 020 021 import java.io.IOException; 022 import java.text.MessageFormat; 023 import java.util.ResourceBundle; 024 025 import javax.servlet.jsp.JspWriter; 026 027 import org.apache.wiki.WikiContext; 028 import org.apache.wiki.WikiEngine; 029 import org.apache.wiki.i18n.InternationalizationManager; 030 import org.apache.wiki.preferences.Preferences; 031 import org.apache.wiki.rss.RSSGenerator; 032 033 /** 034 * Writes an image link to a JSPWiki RSS file. If RSS generation has 035 * been turned off in jspwiki.properties, returns an empty string. 036 * 037 * @since 2.0 038 */ 039 public class RSSImageLinkTag 040 extends WikiTagBase 041 { 042 private static final long serialVersionUID = 0L; 043 044 protected String m_title; 045 private String m_mode; 046 private String m_pageName; 047 048 /** 049 * {@inheritDoc} 050 */ 051 @Override 052 public void initTag() 053 { 054 super.initTag(); 055 m_title = null; 056 m_mode = RSSGenerator.MODE_FULL; 057 m_pageName = null; 058 } 059 060 /** 061 * Sets the title for the link. If not defined, no title is shown. 062 * 063 * @param title A string for the title. 064 */ 065 public void setTitle( String title ) 066 { 067 m_title = title; 068 } 069 070 public void setMode( String mode ) 071 { 072 m_mode = mode; 073 } 074 075 076 /** 077 * Returns the title. 078 * 079 * @return The title. 080 */ 081 public String getTitle() 082 { 083 return m_title; 084 } 085 086 /** 087 * {@inheritDoc} 088 */ 089 @Override 090 public final int doWikiStartTag() 091 throws IOException 092 { 093 WikiEngine engine = m_wikiContext.getEngine(); 094 JspWriter out = pageContext.getOut(); 095 ResourceBundle rb = Preferences.getBundle( m_wikiContext, InternationalizationManager.CORE_BUNDLE ); 096 097 if( engine.getRSSGenerator() != null && engine.getRSSGenerator().isEnabled() ) 098 { 099 if( RSSGenerator.MODE_FULL.equals(m_mode) ) 100 { 101 String rssURL = engine.getGlobalRSSURL(); 102 103 if( rssURL != null ) 104 { 105 out.print("<a class=\"feed\" href=\""+rssURL+"\"> </a>"); 106 } 107 } 108 else 109 { 110 String page = m_pageName != null ? m_pageName : m_wikiContext.getPage().getName(); 111 112 String params = "page="+page+"&mode="+m_mode; 113 out.print( "<a href='"+m_wikiContext.getURL( WikiContext.NONE, "rss.jsp", params )); 114 out.print( "' class='feed'" ); 115 out.print( " title='"+MessageFormat.format( rb.getString( "rss.title" ), page )+"'>" ); 116 out.print( " </a> "); 117 } 118 } 119 120 return SKIP_BODY; 121 } 122 }