⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 themeeditoraction.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.roller.presentation.website.actions;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.roller.RollerException;import org.roller.model.UserManager;import org.roller.pojos.PageData;import org.roller.pojos.UserData;import org.roller.pojos.WebsiteData;import org.roller.presentation.RollerContext;import org.roller.presentation.RollerRequest;import org.roller.presentation.pagecache.PageCacheFilter;import org.roller.presentation.velocity.PreviewResourceLoader;import org.roller.presentation.website.ThemeCache;import org.roller.presentation.website.formbeans.ThemeEditorForm;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.roller.config.RollerRuntimeConfig;//////////////////////////////////////////////////////////////////////////////** * Actions for theme chooser page. *  * @author llavandowska *  * @struts.action name="themeEditorForm" path="/editor/themeEditor" *    scope="session" parameter="method" *  * @struts.action-forward name="editTheme.page" path="/website/theme-editor.jsp" */public class ThemeEditorAction extends DispatchAction{	private static final String SESSION_TEMPLATE = "weblog.template";    private static final String LAST_THEME = "weblog.prev.theme";    private static Log mLogger =         LogFactory.getFactory().getInstance(ThemeEditorAction.class);    private ThemeCache themeCache = ThemeCache.getInstance();		/**     * Take user to edit theme page.     *      * @param mapping Struts action mapping.     * @param form Theme editor form bean.     * @param request Servlet request.     * @param response Servlet response.     * @return Forward to edit-website page.     * @throws IOException     * @throws ServletException	 */	//-----------------------------------------------------------------------	public ActionForward edit(		ActionMapping       mapping,		ActionForm          form,		HttpServletRequest  request,		HttpServletResponse response)		throws IOException, ServletException	{		ActionErrors errors = new ActionErrors();		ActionForward forward = mapping.findForward("editTheme.page");		try		{			RollerRequest rreq = RollerRequest.getRollerRequest(request);			if ( rreq.isUserAuthorizedToEdit() )			{				loadThemes( rreq, errors, true);				ThemeEditorForm teForm = (ThemeEditorForm)form;								teForm.setThemeName(null); // start fresh                                if (mLogger.isDebugEnabled())                {                    mLogger.debug("loaded themes, form="+teForm);                }                  //				// if a custom template has been previewed already,//				// it'll be in memory.//				String template = //                   (String)request.getSession().getAttribute(SESSION_TEMPLATE);//                //                if (mLogger.isDebugEnabled())//                {//                    mLogger.debug("got template="+template);//                }//                //				if (StringUtils.isNotEmpty(template))//				{//					// load the template in memory//					teForm.setThemeTemplate( template );//                    //                    if (mLogger.isDebugEnabled())//                    {//                        mLogger.debug("set template");//                    }//				}//				// otherwise the "custom" template will need be loaded//				// from the current page.//				else//				{                				// clear any previously set themes                clearThemePages(rreq, 					(String)request.getSession(true).getAttribute(LAST_THEME));                                 			     // load the current default page                PageData page = getDefaultPage( rreq );					teForm.setThemeTemplate( page.getTemplate() );														//}							}			else			{				forward = mapping.findForward("access-denied");			}		}		catch (Exception e)		{            mLogger.error("ERROR in action",e);			throw new ServletException(e); 		}		return forward;	}	//-----------------------------------------------------------------------	/**	 * Load the template/theme to be previewed.  The template must be stashed	 * in PreviewResourceLoader so that PreviewServlet can find it.     *      * @param mapping Struts action mapping.     * @param form Theme editor form bean.     * @param request Servlet request.     * @param response Servlet response.     * @return Forward to edit-website page.     * @throws IOException     * @throws ServletException	 */	public ActionForward preview(		ActionMapping       mapping,		ActionForm          form,		HttpServletRequest  request,		HttpServletResponse response)		throws IOException, ServletException	{		ActionErrors errors = new ActionErrors();		ActionForward forward = mapping.findForward("editTheme.page");		try		{			RollerRequest rreq = RollerRequest.getRollerRequest(request);			if ( rreq.isUserAuthorizedToEdit() )			{                HttpSession session = request.getSession();				ThemeEditorForm teForm = (ThemeEditorForm)form;				                String theme = teForm.getThemeName();                ServletContext ctx = rreq.getServletContext();                RollerContext rollerContext =                    RollerContext.getRollerContext( ctx );                                                      boolean showCustom = false;				if ( !"Custom".equals( theme ) )				{                    // if it isn't a custom template, load it from file					String sb = this.readTheme(rollerContext, theme);					teForm.setThemeTemplate( sb );					// clear any previously set themes					clearThemePages(rreq, 						(String) session.getAttribute(LAST_THEME)); 						                                       setThemePages(rreq, theme);					session.setAttribute(LAST_THEME, theme);				}                else                {                	showCustom = true;                    clearThemePages(rreq,                         (String) session.getAttribute(LAST_THEME));                                            session.removeAttribute(LAST_THEME);					//session.removeAttribute(SESSION_TEMPLATE);                    				   //UserData ud = rreq.getUser();				   //PreviewResourceLoader.clearAllTemplates( ud.getUserName());                }				loadThemes( rreq, errors, showCustom);				// put the template where PreviewServlet				// will be able to find it				PageData page = getDefaultPage( rreq );							PreviewResourceLoader.setTemplate(page.getId(), 					teForm.getThemeTemplate(), rreq.getUser().getUserName() );								// save the template in session for later editing				session.setAttribute(SESSION_TEMPLATE,					teForm.getThemeTemplate() );			}			else			{				forward = mapping.findForward("access-denied");			}		}		catch (Exception e)		{            mLogger.error("ERROR in action",e);			throw new ServletException(e);		}		return forward;	}		//-----------------------------------------------------------------------	/**	 * Save the selected Theme or edited template as the Weblog pages template.     *      * @param mapping Struts action mapping.     * @param form Theme editor form bean.     * @param request Servlet request.     * @param response Servlet response.     * @return Forward to edit-website page.     * @throws IOException     * @throws ServletException	 */	public ActionForward save(		ActionMapping       mapping,		ActionForm          form,		HttpServletRequest  request,		HttpServletResponse response)		throws IOException, ServletException	{		ActionErrors errors = new ActionErrors();		ActionForward forward = mapping.findForward("editTheme.page");		try		{			RollerRequest rreq = RollerRequest.getRollerRequest(request);			if ( rreq.isUserAuthorizedToEdit() )			{				loadThemes( rreq, errors, true);				ThemeEditorForm teForm = (ThemeEditorForm)form;                String theme = teForm.getThemeName();                ServletContext ctx = rreq.getServletContext();                RollerContext rollerContext =                                 RollerContext.getRollerContext( ctx );                					// load the template either from the Form				// or from the disk (if its a stock Theme).				String template = "";				if ( "Custom".equals( theme ) )				{					// use the edited template					template = teForm.getThemeTemplate();				}				else				{					// Figure path to new user theme					String sb = this.readTheme(rollerContext, theme);					template = sb;				}                // we'll need the User                UserData ud = rreq.getUser();                // clear the places holding onto the template                PreviewResourceLoader.clearAllTemplates(ud.getUserName());                request.getSession().removeAttribute(SESSION_TEMPLATE);				// store the template in the page				UserManager mgr = rreq.getRoller().getUserManager();				PageData page = getDefaultPage( rreq );				page.setTemplate( template );				mgr.storePage( page);                                saveThemePages( rreq, theme);                                // put them into the PreviewResourceLoader also                setThemePages(rreq, theme);				// clear the page cache				PageCacheFilter.removeFromCache( request, ud );				teForm.setThemeName("Custom");			}			else			{				forward = mapping.findForward("access-denied");			}		}		catch (Exception e)		{            mLogger.error("ERROR in action",e);			throw new ServletException(e);		}		return forward;	}		/**     * Cancel choosing of theme.     * 	 * @param mapping Struts action mapping.	 * @param form Theme editor form bean.	 * @param request Servlet request.	 * @param response Servlet response.	 * @return Forward to edit-website page.	 * @throws IOException	 * @throws ServletException	 */	public ActionForward cancel(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -