package cn.jcenterhome.web.action.admin;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.FileHelper;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.util.Serializer;
import cn.jcenterhome.web.action.BaseAction;
public class AdAction extends BaseAction {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
if (!Common.checkPerm(request, response, "managead")) {
return cpMessage(request, mapping, "cp_no_authority_management_operation");
}
try {
if (submitCheck(request, "adsubmit")) {
int adId = Common.intval(request.getParameter("adid"));
String title = Common.getStr(request.getParameter("title"), 50, true, true, false, 0, 0,
request, response);
if (Common.empty(title)) {
title = "AD" + Common.sgmdate(request, "MdHms", 0);
}
int system = Common.intval(request.getParameter("system"));
StringBuffer html = new StringBuffer();
Map<String, Object> adCodes = new HashMap<String, Object>();
String adCodeType = request.getParameter("adcode[type]");
if ("html".equals(adCodeType)) {
String adcodeHtml = request.getParameter("adcode[html]");
adCodes.put("html", adcodeHtml);
html.append(Common.stripSlashes(adcodeHtml));
} else if ("flash".equals(adCodeType)) {
adCodes.put("flashheight", Common.intval(request.getParameter("adcode[flashheight]")));
adCodes.put("flashwidth", Common.intval(request.getParameter("adcode[flashwidth]")));
adCodes.put("flashurl", request.getParameter("adcode[flashurl]"));
String width = Common.empty(adCodes.get("flashwidth")) ? "" : "width=\""
+ adCodes.get("flashwidth") + "\"";
String height = Common.empty(adCodes.get("flashheight")) ? "" : "height=\""
+ adCodes.get("flashheight") + "\"";
String flashUrl = Common.stripSlashes((String) adCodes.get("flashurl"));
html
.append("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" adcodebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0\" "
+ width + " " + height + ">\n");
html.append("<param name=\"movie\" value=\"" + flashUrl + "\" />\n");
html.append("<param name=\"quality\" value=\"high\" />\n");
html
.append("<embed src=\""
+ flashUrl
+ "\" quality=\"high\" pluginspage=\"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" "
+ width + " " + height + "></embed>\n");
html.append("</object>\n");
} else if ("image".equals(adCodeType)) {
adCodes.put("imageheight", Common.intval(request.getParameter("adcode[imageheight]")));
adCodes.put("imagewidth", Common.intval(request.getParameter("adcode[imagewidth]")));
adCodes.put("imagesrc", request.getParameter("adcode[imagesrc]"));
adCodes.put("imageurl", request.getParameter("adcode[imageurl]"));
adCodes.put("imagealt", Common.getStr(request.getParameter("adcode[imagealt]"), 200,
true, true, false, 0, 0, request, response));
String width = Common.empty(adCodes.get("imagewidth")) ? "" : "width=\""
+ adCodes.get("imagewidth") + "\"";
String height = Common.empty(adCodes.get("imageheight")) ? "" : "height=\""
+ adCodes.get("imageheight") + "\"";
html.append("<a href=\"" + adCodes.get("imageurl") + "\" target=\"_blank\"><img src=\""
+ Common.stripSlashes((String) adCodes.get("imagesrc")) + "\" " + width + " "
+ height + " border=\"0\" alt=\"" + adCodes.get("imagealt") + "\"></a>");
} else if ("text".equals(adCodeType)) {
adCodes.put("textcontent", Common.getStr(request.getParameter("adcode[textcontent]"), 0,
true, true, false, 0, 0, request, response));
adCodes.put("texturl", request.getParameter("adcode[texturl]"));
adCodes.put("textsize", Common.intval(request.getParameter("adcode[textsize]")));
String size = Common.empty(adCodes.get("textsize")) ? "" : "style=\"font-size:"
+ adCodes.get("textsize") + "px;\"";
html.append("<span style=\"padding:0.8em\"><a href=\""
+ Common.stripSlashes((String) adCodes.get("texturl")) + "\" target=\"_blank\" "
+ size + ">" + adCodes.get("textcontent") + "</a></span>");
}
if (adCodes.isEmpty()) {
return cpMessage(request, mapping, "cp_please_check_whether_the_option_complete_required");
} else {
adCodes.put("type", adCodeType);
}
Map<String, Object> setData = new HashMap<String, Object>();
setData.put("title", title);
setData.put("pagetype", request.getParameter("pagetype"));
setData.put("adcode", Common.addSlashes(Serializer.serialize(Common.sStripSlashes(adCodes))));
setData.put("system", system);
setData.put("available", system == 0 ? 1 : Common.intval(request.getParameter("available")));
if (adId == 0) {
adId = dataBaseService.insertTable("ad", setData, true, false);
} else {
Map<String, Object> whereData = new HashMap<String, Object>();
whereData.put("adid", adId);
dataBaseService.updateTable("ad", setData, whereData);
}
String tpl = JavaCenterHome.jchRoot + "data/adtpl/" + adId + ".htm";
FileHelper.writeFile(tpl, html.toString(), request);
cacheService.ad_cache();
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=ad");
} else if (submitCheck(request, "delsubmit")) {
String[] adIds = request.getParameterValues("adids[]");
if (!Common.empty(adIds) && deleteAds(request, adIds)) {
cacheService.ad_cache();
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=ad");
} else {
return cpMessage(request, mapping, "cp_please_choose_to_remove_advertisements",
"admincp.jsp?ac=ad");
}
}
} catch (Exception e1) {
return showMessage(request, response, e1.getMessage());
}
String op = request.getParameter("op");
if (Common.empty(op)) {
String sql = null;
String pageType = request.getParameter("pagetype");
if (Common.empty(pageType)) {
sql = "";
} else {
sql = " WHERE pagetype='" + pageType + "'";
}
List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("ad") + sql + " ORDER BY adid DESC");
if (query.size() > 0) {
Map<String, List<Map<String, Object>>> listValue = new HashMap<String, List<Map<String, Object>>>();
for (Map<String, Object> ad : query) {
int available = (Integer) ad.get("available");
String system = String.valueOf(ad.get("system"));
ad.put("available", available == 0 ? "-" : "��Ч");
ad.put("adcode", Serializer.unserialize((String) ad.get("adcode"), false));
List<Map<String, Object>> temps = listValue.get(system);
if (temps == null) {
temps = new ArrayList<Map<String, Object>>();
listValue.put(system, temps);
}
temps.add(ad);
}
request.setAttribute("listvalue", listValue);
}
Map<String, String> pageTypes = new HashMap<String, String>();
pageTypes.put("header", "ҳͷ");
pageTypes.put("rightside", "����ҳ��");
pageTypes.put("footer", "ҳ��");
pageTypes.put("couplet", "����");
pageTypes.put("contenttop", "ҳ���������Ϸ�");
pageTypes.put("contentbottom", "ҳ���������·�");
pageTypes.put("feedbox", "��̬�ö�λ");
request.setAttribute("pageTypes", pageTypes);
request.setAttribute("actives_view", " class=\"active\"");
} else if ("add".equals(op) || "edit".equals(op)) {
int adId = Common.intval(request.getParameter("adid"));
Map<String, Object> adValue = null;
if (adId > 0) {
String sql = "SELECT * FROM " + JavaCenterHome.getTableName("ad") + " WHERE adid='" + adId
+ "'";
List<Map<String, Object>> values = dataBaseService.executeQuery(sql);
adValue = values.isEmpty() ? null : values.get(0);
}
Map<String, String> adCode = null;
if (Common.empty(adValue)) {
adValue = new HashMap<String, Object>();
adValue.put("adid", 0);
adValue.put("system", 1);
adValue.put("pagetype", "leftside");
adValue.put("available", 1);
adCode = new HashMap<String, String>();
adCode.put("type", "html");
} else {
adCode = Serializer.unserialize((String) adValue.get("adcode"), false);
}
adValue.put("adcode", adCode);
request.setAttribute("system_" + adValue.get("system"), " checked");
request.setAttribute("pagetype_" + adValue.get("pagetype"), " selected");
request.setAttribute("available_" + adValue.get("available"), " checked");
request.setAttribute("adcode_" + adCode.get("type"), " selected");
request.setAttribute("advalue", adValue);
} else if ("tpl".equals(op)) {
int adId = Common.intval(request.getParameter("adid"));
String adCode = (String) Common.sHtmlSpecialChars("${jch:showAdById(" + adId + ")}");
request.setAttribute("adcode", adCode);
} else if ("js".equals(op)) {
int adId = Common.intval(request.getParameter("adid"));
String adCode = (String) Common.sHtmlSpecialChars("<script type=\"text/javascript\" src=\""
+ Common.getSiteUrl(request) + "js.jsp?adid=" + adId + "\"></script>");
request.setAttribute("adcode", adCode);
}
return mapping.findForward("ad");
}
private boolean deleteAds(HttpServletRequest request, String[] adIds) {
String tableName = JavaCenterHome.getTableName("ad");
List<String> newIds = dataBaseService.executeQuery("SELECT adid FROM " + tableName
+ " WHERE adid IN (" + Common.sImplode(adIds) + ")", 1);
if (newIds.isEmpty()) {
return false;
}
String tplDir = JavaCenterHome.jchRoot + "data/adtpl/";
for (String newId : newIds) {
new File(tplDir + newId + ".htm").delete();
}
dataBaseService.executeUpdate("DELETE FROM " + tableName + " WHERE adid IN ("
+ Common.sImplode(newIds) + ")");
return true;
}
}