package tk.djcrazy.MyCC98.helper; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import com.google.inject.Inject; import tk.djcrazy.libCC98.CC98ClientImpl; import tk.djcrazy.libCC98.CachedCC98Service; import android.util.Log; public class HtmlGenHelper { @Inject private CachedCC98Service service; public static final String ITEM_OPEN = "<div class=\"post\"><div class=\"post-content-wrapper\">"; public static final String ITEM_CLOSE = "</div>"; public final String PAGE_OPEN = "<!DOCTYPE html><html>" // min-width-320px // min-width-480px + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" + "<link rel=\"stylesheet\" href=\"file:///android_asset/custom.css\" />" + "<link rel=\"stylesheet\" href=\"file:///android_asset/bootstrap.css\" />" + "<script type=\"text/javascript\" src=\"file:///android_asset/mootools.core.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/tools.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/clientubb.js\"></script>" + "<meta name=\"viewport\" content=\"width=device-width, user-scalable=no\" />" + "</head><body>" + "<div class=\"bg-wrapper\">"; public final String PAGE_PROXY_OPEN = "<!DOCTYPE html><html>" // min-width-320px + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" + "<link rel=\"stylesheet\" href=\"file:///android_asset/custom.css\" />" + "<link rel=\"stylesheet\" href=\"file:///android_asset/bootstrap.css\" />" + "<script type=\"text/javascript\" src=\"file:///android_asset/mootools.core.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/tools.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/clientubb_proxy.js\"></script>" + "<meta name=\"viewport\" content=\"width=device-width, user-scalable=no\" />" + "</head><body>" + "<div class=\"bg-wrapper\">"; public final String PAGE_RVPN_OPEN = "<!DOCTYPE html><html>" // min-width-320px + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" + "<link rel=\"stylesheet\" href=\"file:///android_asset/custom.css\" />" + "<link rel=\"stylesheet\" href=\"file:///android_asset/bootstrap.css\" />" + "<script language=\"JavaScript\" src=\"file:///android_asset/svpn_websvc_functions.js\" charset=\"utf-8\" sf_script=\"1\"></script>" + "<script type=\"text/vbscript\" src=\"file:///android_asset/svpn_websvc_functions.vbs\" charset=\"utf-8\" sf_script=\"1\"></script><script sf_script=\"1\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/mootools.core.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/tools.js\"></script>" + "<script type=\"text/javascript\" src=\"file:///android_asset/clientubb_rvpn.js\"></script>" + "<meta name=\"viewport\" content=\"width=device-width, user-scalable=no\" />" + "</head><body>" + "<div class=\"bg-wrapper\">"; public final String PAGE_CLOSE = "</div> </body></html>"; private final String TAG = "HtmlGenHelper"; public static void addPostInfo(StringBuilder out, String readTopic, String senderAvatarUrl, String sender, String gender, int floorNum, String sendTime, int index) { out.append("<div class=\"post-info\">"); addTopic(out, readTopic); addSenderAvatar(out, senderAvatarUrl, index); addSenderName(out, sender); addFloorNum(out, floorNum); addGender(out, gender); addSendTime(out, sendTime); out.append("</div>"); } public static void postInfo(StringBuilder out, String readTopic, String senderAvatarUrl, String sender, String gender, int floorNum, String sendTime, int index) { addPostInfo(out, readTopic, senderAvatarUrl, sender, gender, floorNum, sendTime, index); } private static void addFloorNum(StringBuilder out, int floorNum) { out.append("<div class=\"floor-num\">").append(floorNum) .append(" 楼</div>"); } private static void addGender(StringBuilder out, String gender) { out.append("<img class=\"img-gender\" src=\"file:///android_asset/pic/") .append(gender).append(".gif\"/>"); } public static void addSenderAvatar(StringBuilder out, String senderAvatarUrl, int index) { out.append("<img class=\"img-avatar\" src=\"").append(senderAvatarUrl) .append("\" height=64/>"); } public static void addTopic(StringBuilder out, String readTopic) { out.append("<div class=\"topic\" ><big><strong>").append(readTopic) .append("</strong></big></div><br />"); } public static void addSenderName(StringBuilder out, String sender) { out.append("<div class=\"name\">").append(sender) .append("</div><br />"); } public static void addSendTime(StringBuilder out, String sendTime) { out.append("<div class=\"time\"><small>").append(sendTime) .append("</small></div><br />"); } public String parseInnerLink(String content, String jsInterface) { final String regString = "(\\[url\\]|http://www\\.cc98\\.org|\\[url\\]http://www\\.cc98\\.org)(/|)dispbbs\\.asp\\?boardID=\\d+?&ID=\\d+?(&star=\\d+|)(\\[/url\\]|).*?(?=(<br>|[;;#,.!?,。!?]|$))"; Pattern pattern = Pattern.compile(regString, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(content); StringBuffer stringBuffer = new StringBuffer(); String tmp = null, pageLink = null; while (matcher.find() && !content.contains("10.10.98.98")) { tmp = matcher.group(); int beg = tmp.indexOf("star"); int end = tmp.indexOf("&page"); if (end == -1) { end = tmp.indexOf("[/"); end = end == -1 ? tmp.length() : end; } int pageNum = 1; String ttmpString = ""; if (beg == -1) { pageNum = 1; } else { try { ttmpString = tmp.substring(beg + 5, end); } catch (Exception e) { // TODO: handle exception } try { pageNum = Integer.parseInt(ttmpString); } catch (Exception e) { pageNum = 1; } } pageLink = tmp.replaceAll( "(\\&star=\\d+.*)|(\\[url\\])|(\\[/url\\])", ""); if (!pageLink.startsWith("http")) { if (pageLink.startsWith("/")) { pageLink = service.getDomain() + pageLink.substring(1); } else { pageLink = service.getDomain() + pageLink; } } matcher.appendReplacement( stringBuffer, "[noubb]<a style=\"color:blue;\" href=\"javascript:" + jsInterface + ".open('" + pageLink + "'," + pageNum + ");\">" + tmp.replaceAll("(\\[url\\])|(\\[/url\\])", "") + "</a>[/noubb]"); } matcher.appendTail(stringBuffer); return stringBuffer.toString(); } public static void jsBtn(StringBuilder out, String text, String funcName, String... args) { out.append("<a class=\"btn\" onclick=\"" + funcName + "(" + StringUtils.join(args, ',') + ");\">" + text + "</a>"); } public static void postContent(StringBuilder out, String postFace, String content, int index) { out.append("<img class=\"post-face\" src=\"file:///android_asset/pic/") .append(postFace).append("\" /><br />") .append("<div class=\"post-content\">") .append("<span id=\"ubbcode").append(index).append("\">") .append(content).append("</span><script>searchubb('ubbcode") .append(index).append("',1,'tablebody2');</script></div>") .append("</div>"); } public static void btnsBegin(StringBuilder out) { out.append("<div class=\"btn-group\">"); } public static void btnsEnd(StringBuilder out) { out.append("</div>"); } }