package org.zhios.website.admin.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.zhios.website.admin.model.ConfFileOpt;
import org.zhios.website.admin.model.PageEditor;
import org.zhios.website.admin.model.Strings;
import org.zhios.website.admin.model.SysConfig;
import org.zhios.website.admin.model.UserManager;


/**
 * Servlet implementation class PageEditorCtl
 */
@WebServlet("/PageEditorCtl")
public class PageEditorSL extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public PageEditorSL() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");

		//check user.
		if(!UserManager.checkUser(request.getSession(false))){
			response.sendRedirect("error?id=err104");
			return;
		}
		
		PageEditor pe=new PageEditor();
		
		String pagepath=request.getParameter("pagepath");
		String filepath=SysConfig.RootPath+"/"+pagepath;
		
		String eventname=request.getParameter("eventname");
		if(eventname.equals("read")){
			pe.ReadPage(filepath);
			request.setAttribute("pagetitle", pe.HtmlTitle);
			request.setAttribute("pagecontent", pe.HtmlBody);
			
		}
		else if(eventname.equals("write")){
			String title=request.getParameter("title");
			String content=request.getParameter("content");
			pe.WritePage(filepath,title,content);
			pe.UpdatePackageRecord(pagepath,content);
			request.setAttribute("pagetitle", title);
			request.setAttribute("pagecontent", content);
		}
		
		SetConfigParams(request);
		request.getRequestDispatcher("pageeditor.jsp").forward(request,response);
	}
	
	private void SetConfigParams(HttpServletRequest request){
		request.setAttribute("title", Strings.PETitle);
		request.setAttribute("insertComponent", Strings.PEinsertComponent);
		request.setAttribute("addComponent", Strings.PEaddComponent);
		request.setAttribute("deleteComponent", Strings.PEdeleteComponent);
		request.setAttribute("deleteComponentConfirm", Strings.PEdeleteComponentConfirm);
		request.setAttribute("setAttribute", Strings.PEsetAttribute);
		request.setAttribute("savePage", Strings.PEsavePage);
		request.setAttribute("savePageConfirm", Strings.PEsavePageConfirm);
		
		ConfFileOpt plconfig=new ConfFileOpt(SysConfig.ConfigPath+SysConfig.Language+"/pagelet.xml");
		String pllist[][]=plconfig.getNodesIdName("pagelet");
		String pllistname="plstylelist";
		String pllistradio="";
		int lpllist=pllist.length;
		if(lpllist>0){
			pllistradio+="<table><tr><td style='width:50%'><input type='radio' name='"+pllistname+"' value='"+pllist[0][0]+"' checked>"+pllist[0][1]+"</td>";
			int i;
			for(i=1;i<lpllist;i++){
				if(i%2==1) pllistradio+="<td><input type='radio' name='"+pllistname+"' value='"+pllist[i][0]+"'>"+pllist[i][1]+"</td></tr>";
				else pllistradio+="<tr><td><input type='radio' name='"+pllistname+"' value='"+pllist[i][0]+"'>"+pllist[i][1]+"</td>";
			}
			if(i%2==1) pllistradio+="<td></td></tr></table>";
			else pllistradio+="</table>";
		}
		request.setAttribute("pageletListName", pllistname);
		request.setAttribute("pageletListRadio", pllistradio);
	}
}
