fixed: 路由重写

This commit is contained in:
冼子明 2025-03-30 14:47:32 +08:00
parent 1f47feb8ba
commit 002ce9d0af
51 changed files with 326 additions and 254 deletions

View File

@ -1,14 +1,18 @@
package vip.fuck.sm.plugins.cms.config; package vip.fuck.sm.plugins.cms.config;
import cn.hutool.extra.template.engine.enjoy.EnjoyEngine;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.DbKit; import com.jfinal.plugin.activerecord.DbKit;
import com.jfinal.plugin.activerecord.solon.annotation.Db; import com.jfinal.plugin.activerecord.solon.annotation.Db;
import com.jfinal.template.ext.spring.JFinalView;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import org.noear.solon.Solon; import org.noear.solon.Solon;
import org.noear.solon.annotation.Bean; import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration; import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject; import org.noear.solon.annotation.Inject;
import org.noear.solon.view.enjoy.EnjoyRender;
import vip.fuck.sm.plugins.cms.entity._MappingKit; import vip.fuck.sm.plugins.cms.entity._MappingKit;
import vip.fuck.sm.plugins.cms.util.JFinal;
import javax.sql.DataSource; import javax.sql.DataSource;
@ -29,7 +33,13 @@ public class Configxv {
//启用开发或调试模式可以打印sql //启用开发或调试模式可以打印sql
if (Solon.cfg().isDebugMode() || Solon.cfg().isFilesMode()) { if (Solon.cfg().isDebugMode() || Solon.cfg().isFilesMode()) {
arp.setDevMode(true); arp.setDevMode(true);
arp.setShowSql(true);
} }
} }
@Bean
public void putbase(@Inject EnjoyRender enjoyRender){
enjoyRender.putVariable("base", JFinal.getContextPath());
}
} }

View File

@ -31,7 +31,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/admin") @Mapping("/cms/admin/admin")
public class AdminController extends BaseController { public class AdminController extends BaseController {
/** /**

View File

@ -232,6 +232,18 @@ public class BaseController {
return null; return null;
} }
protected String fixedSubfix(String view){
if(view!=null){
view = view
.replaceAll("\\.html\\.shtm$",CommonAttribute.VIEW_EXTENSION)
.replaceAll("\\.html$",CommonAttribute.VIEW_EXTENSION);
if(!view.endsWith(CommonAttribute.VIEW_EXTENSION)){
view+=CommonAttribute.VIEW_EXTENSION;
}
}
return view;
}
/** /**
* 获取页面 * 获取页面
* *
@ -239,12 +251,13 @@ public class BaseController {
*/ */
// @NotAction // @NotAction
public ModelAndView getView(String view){ public ModelAndView getView(String view){
view = fixedSubfix(view);
Site currSite = getCurrentSite(); Site currSite = getCurrentSite();
if (ObjectUtil.isEmpty(currSite)) { if (ObjectUtil.isEmpty(currSite)) {
Site currentSite = new Site().dao().findById(1); Site currentSite = new Site().dao().findById(1);
getSession().sessionSet(Site.ADMIN_SESSION_SITE, currentSite); getSession().sessionSet(Site.ADMIN_SESSION_SITE, currentSite);
} }
return new ModelAndView(CommonAttribute.ADMIN_PATH+view+CommonAttribute.VIEW_EXTENSION); return new ModelAndView(CommonAttribute.ADMIN_PATH+view);
} }
public void render(String view){ public void render(String view){

View File

@ -21,7 +21,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/cache") @Mapping("/cms/admin/cache")
public class CacheController extends BaseController { public class CacheController extends BaseController {
@Inject @Inject

View File

@ -31,7 +31,7 @@ import java.util.*;
* *
*/ */
@Controller @Controller
@Mapping("/admin/category") @Mapping("/cms/admin/category")
public class CategoryController extends BaseController { public class CategoryController extends BaseController {
/** /**

View File

@ -23,7 +23,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/company") @Mapping("/cms/admin/company")
public class CompanyController extends BaseController { public class CompanyController extends BaseController {
/** /**

View File

@ -26,7 +26,7 @@ import java.util.*;
* *
*/ */
@Controller @Controller
@Mapping("/admin/content") @Mapping("/cms/admin/content")
public class ContentController extends BaseController { public class ContentController extends BaseController {
/** /**

View File

@ -18,7 +18,7 @@ import java.util.List;
* *
*/ */
@Controller @Controller
@Mapping("/admin/database") @Mapping("/cms/admin/database")
public class DatabaseController extends BaseController { public class DatabaseController extends BaseController {
/** /**

View File

@ -20,7 +20,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/div") @Mapping("/cms/admin/div")
public class DivController extends BaseController { public class DivController extends BaseController {
/** /**

View File

@ -26,7 +26,7 @@ import java.util.List;
* *
*/ */
@Controller @Controller
@Mapping("/admin/div_data") @Mapping("/cms/admin/div_data")
public class DivDataController extends BaseController { public class DivDataController extends BaseController {
/** /**

View File

@ -13,7 +13,7 @@ import vip.fuck.sm.plugins.cms.CommonAttribute;
* *
*/ */
@Controller @Controller
@Mapping("/admin/error") @Mapping("/cms/admin/error")
public class ErrorController extends BaseController { public class ErrorController extends BaseController {
/** /**

View File

@ -33,7 +33,7 @@ import java.util.UUID;
* *
*/ */
@Controller @Controller
@Mapping("/admin/file") @Mapping("/cms/admin/file")
public class FileController extends BaseController { public class FileController extends BaseController {
/** /**

View File

@ -21,7 +21,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/friend_link") @Mapping("/cms/admin/friend_link")
public class FriendLinkController extends BaseController { public class FriendLinkController extends BaseController {
/** /**

View File

@ -20,7 +20,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/guestbook") @Mapping("/cms/admin/guestbook")
public class GuestbookController extends BaseController { public class GuestbookController extends BaseController {
/** /**

View File

@ -28,7 +28,7 @@ import java.util.*;
* *
*/ */
@Controller @Controller
@Mapping("/admin/html") @Mapping("/cms/admin/html")
public class HtmlController extends BaseController { public class HtmlController extends BaseController {
/** /**

View File

@ -6,10 +6,12 @@
package vip.fuck.sm.plugins.cms.controller.admin; package vip.fuck.sm.plugins.cms.controller.admin;
import cn.hutool.core.util.ObjectUtil;
import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.Record;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang.time.DateUtils;
@ -27,7 +29,7 @@ import java.util.Date;
* *
* *
*/ */
@Mapping("/admin/index") @Mapping("/cms/admin/index")
@Controller @Controller
public class IndexController extends BaseController { public class IndexController extends BaseController {
@ -41,8 +43,8 @@ public class IndexController extends BaseController {
Integer siteId = getParaToInt("siteId"); Integer siteId = getParaToInt("siteId");
if(siteId == null){ if(siteId == null){
Admin currentAdmin = getCurrentAdmin(); Admin currentAdmin = getCurrentAdmin();
if(BooleanUtils.isFalse(currentAdmin.getRole().getIsSystem()) if(ObjectUtil.isEmpty(currentAdmin) || ObjectUtil.isEmpty(currentAdmin.getRole()) || BooleanUtils.isFalse(currentAdmin.getRole().getIsSystem())
&& CollectionUtils.isEmpty(currentAdmin.getRole().getSiteIds())){ || CollectionUtils.isEmpty(currentAdmin.getRole().getSiteIds())){
renderHtml("<script>alert('用户没有授权站点');history.back();</script>"); renderHtml("<script>alert('用户没有授权站点');history.back();</script>");
return; return;
} }

View File

@ -37,7 +37,7 @@ import java.util.Set;
* *
*/ */
@Controller @Controller
@Mapping("/admin/login") @Mapping("/cms/admin/login")
public class LoginController extends BaseController { public class LoginController extends BaseController {
/** /**

View File

@ -14,7 +14,7 @@ import vip.fuck.sm.plugins.cms.entity.Site;
* *
*/ */
@Controller @Controller
@Mapping("/admin/logout") @Mapping("/cms/admin/logout")
public class LogoutController extends BaseController{ public class LogoutController extends BaseController{
/** /**

View File

@ -20,7 +20,7 @@ import java.util.List;
* *
*/ */
@Controller @Controller
@Mapping("/admin/menu") @Mapping("/cms/admin/menu")
public class MenuController extends BaseController{ public class MenuController extends BaseController{
/** /**

View File

@ -24,7 +24,7 @@ import java.util.HashMap;
* *
* *
*/ */
@Mapping("/admin/model") @Mapping("/cms/admin/model")
@Controller @Controller
public class ModelController extends BaseController { public class ModelController extends BaseController {

View File

@ -25,7 +25,7 @@ import java.util.List;
* *
* *
*/ */
@Mapping("/admin/nav") @Mapping("/cms/admin/nav")
@Controller @Controller
public class NavController extends BaseController { public class NavController extends BaseController {

View File

@ -20,7 +20,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/profile") @Mapping("/cms/admin/profile")
public class ProfileController extends BaseController { public class ProfileController extends BaseController {

View File

@ -23,7 +23,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/role") @Mapping("/cms/admin/role")
public class RoleController extends BaseController { public class RoleController extends BaseController {
/** /**

View File

@ -28,7 +28,7 @@ import java.util.Set;
* *
* *
*/ */
@Mapping("/admin/setup") @Mapping("/cms/admin/setup")
@Controller @Controller
public class SetupController extends BaseController { public class SetupController extends BaseController {

View File

@ -24,7 +24,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/site") @Mapping("/cms/admin/site")
public class SiteController extends BaseController { public class SiteController extends BaseController {
/** /**

View File

@ -21,7 +21,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/slide") @Mapping("/cms/admin/slide")
public class SlideController extends BaseController { public class SlideController extends BaseController {
/** /**

View File

@ -19,7 +19,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/tag") @Mapping("/cms/admin/tag")
public class TagController extends BaseController { public class TagController extends BaseController {
/** /**

View File

@ -24,7 +24,7 @@ import java.io.IOException;
* *
* *
*/ */
@Mapping("/admin/template") @Mapping("/cms/admin/template")
@Controller @Controller
public class TemplateController extends BaseController { public class TemplateController extends BaseController {

View File

@ -23,7 +23,7 @@ import java.util.HashMap;
* *
*/ */
@Controller @Controller
@Mapping("/admin/web") @Mapping("/cms/admin/web")
public class WebController extends BaseController { public class WebController extends BaseController {
/** /**

View File

@ -19,7 +19,7 @@ import java.util.*;
* *
*/ */
@Controller @Controller
@Mapping("/admin/wechat_menu") @Mapping("/cms/admin/wechat_menu")
public class WechatMenuController extends BaseController { public class WechatMenuController extends BaseController {
/** /**

View File

@ -26,7 +26,7 @@ import java.util.List;
* *
*/ */
@Controller @Controller
@Mapping("/admin/div/div_field") @Mapping("/cms/admin/div/div_field")
public class DivFieldController extends BaseController { public class DivFieldController extends BaseController {
/** /**

View File

@ -25,7 +25,7 @@ import java.util.List;
* *
* *
*/ */
@Mapping("/admin/model/model_field") @Mapping("/cms/admin/model/model_field")
@Controller @Controller
public class ModelFieldController extends BaseController { public class ModelFieldController extends BaseController {

View File

@ -5,7 +5,7 @@ import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.controller.admin.BaseController; import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
@Controller @Controller
@Mapping("/common/captcha") @Mapping("/cms/common/captcha")
public class CaptchaController extends BaseController { public class CaptchaController extends BaseController {
@Mapping("image") @Mapping("image")

View File

@ -10,7 +10,7 @@ import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
import java.io.File; import java.io.File;
@Controller @Controller
@Mapping("/common/down") @Mapping("/cms/common/down")
public class DownController extends BaseController { public class DownController extends BaseController {
@Mapping("file") @Mapping("file")

View File

@ -42,6 +42,7 @@ public class BaseController extends vip.fuck.sm.plugins.cms.controller.admin.Ba
} }
public ModelAndView getView(String view){ public ModelAndView getView(String view){
view = fixedSubfix(view);
Site currSite = getCurrentSite(); Site currSite = getCurrentSite();
if (ObjectUtil.isEmpty(currSite)) { if (ObjectUtil.isEmpty(currSite)) {
Site currentSite = new Site().dao().findById(1); Site currentSite = new Site().dao().findById(1);
@ -55,12 +56,12 @@ public class BaseController extends vip.fuck.sm.plugins.cms.controller.admin.Ba
if(ObjectUtil.isEmpty(mobileTemplate)){ if(ObjectUtil.isEmpty(mobileTemplate)){
currSite.setMobileTemplate(""); currSite.setMobileTemplate("");
} }
ModelAndView modelAndView = new ModelAndView(CommonAttribute.FRONT_PATH + view + CommonAttribute.VIEW_EXTENSION); ModelAndView modelAndView = new ModelAndView(CommonAttribute.FRONT_PATH + view );
modelAndView.put("base", JFinal.getContextPath()); modelAndView.put("base", JFinal.getContextPath());
modelAndView.put("currentSite",currSite); modelAndView.put("currentSite",currSite);
modelAndView.put("currentCategory", JSONUtil.createObj());
modelAndView.put(Web.CURRENT_WEB, new Web().dao().findBySiteId(currSite.getId())); modelAndView.put(Web.CURRENT_WEB, new Web().dao().findBySiteId(currSite.getId()));
modelAndView.put(Company.CURRENT_COMPANY, new Company().dao().findBySiteId(currSite.getId())); modelAndView.put(Company.CURRENT_COMPANY, new Company().dao().findBySiteId(currSite.getId()));
// System.out.println("goto_page:"+modelAndView.view());
return modelAndView; return modelAndView;
} }

View File

@ -3,6 +3,7 @@ package vip.fuck.sm.plugins.cms.controller.front;
import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping; import org.noear.solon.annotation.Mapping;
import org.noear.solon.core.handle.ModelAndView;
import vip.fuck.sm.plugins.cms.entity.Category; import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Model; import vip.fuck.sm.plugins.cms.entity.Model;
@ -32,9 +33,9 @@ public class CategoryController extends BaseController {
setAttr("pageNumber", pageNumber); setAttr("pageNumber", pageNumber);
Model model = category.getModel(); Model model = category.getModel();
if(model.getType() == Model.Type.PAGE.ordinal()){ if(model.getType() == Model.Type.PAGE.ordinal()){
render("/templates/"+getCurrentTemplate()+"/"+category.getDetailTemplate()); render(getView("/templates/"+getCurrentTemplate()+"/"+category.getDetailTemplate()));
}else{ }else{
render("/templates/"+getCurrentTemplate()+"/"+category.getListTemplate()); render(getView("/templates/"+getCurrentTemplate()+"/"+category.getListTemplate()));
} }
} }
} }

View File

@ -32,7 +32,7 @@ public class ContentController extends BaseController {
setAttr("currentContent", content); setAttr("currentContent", content);
Category category = content.getCategory(); Category category = content.getCategory();
setAttr("currentCategory", category); setAttr("currentCategory", category);
render("/templates/"+getCurrentTemplate()+"/"+category.getDetailTemplate()); render( getView("/templates/"+getCurrentTemplate()+"/"+category.getDetailTemplate()));
} }
/** /**

View File

@ -22,10 +22,6 @@ import java.util.HashMap;
@Mapping("/cms/guestbook") @Mapping("/cms/guestbook")
public class GuestbookController extends BaseController { public class GuestbookController extends BaseController {
@Mapping()
public void index() {
render(getView("/templates/"+getCurrentTemplate()+"/guestbook"));
}
/** /**

View File

@ -14,7 +14,7 @@ import org.noear.solon.core.handle.ModelAndView;
* *
*/ */
@Controller @Controller
@Mapping("/cms/") @Mapping("/cms")
public class IndexController extends BaseController { public class IndexController extends BaseController {
/** /**
@ -25,9 +25,9 @@ public class IndexController extends BaseController {
render(getView("/templates/"+getCurrentTemplate()+"/index")); render(getView("/templates/"+getCurrentTemplate()+"/index"));
} }
@Mapping("/{pn}") @Mapping("/")
public void about(@Path("pn") String pn) { public void index2() {
render(getView("/templates/"+getCurrentTemplate()+"/"+pn)); this.index();
} }

View File

@ -19,7 +19,7 @@ import java.util.Map;
* *
* *
*/ */
@Mapping("/xcx/category") @Mapping("/cms/xcx/category")
public class CategoryController extends BaseController { public class CategoryController extends BaseController {
/** /**

View File

@ -18,7 +18,7 @@ import java.util.Map;
* *
* *
*/ */
@Mapping("/xcx/content") @Mapping("/cms/xcx/content")
public class ContentController extends BaseController { public class ContentController extends BaseController {
/** /**

View File

@ -20,7 +20,7 @@ import java.util.Map;
* *
* *
*/ */
@Mapping("/xcx") @Mapping("/cms/xcx")
public class IndexController extends BaseController { public class IndexController extends BaseController {
/** /**

View File

@ -2,37 +2,50 @@ package vip.fuck.sm.plugins.cms.handler;
import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Filter;
import org.noear.solon.core.handle.FilterChain;
import org.noear.solon.core.route.PathRule;
import org.smartboot.http.server.HttpRequest; import org.smartboot.http.server.HttpRequest;
import org.smartboot.http.server.HttpResponse;
import vip.fuck.sm.plugins.cms.UrlRewriteWrappedRequest;
import vip.fuck.sm.plugins.cms.entity.Company; import vip.fuck.sm.plugins.cms.entity.Company;
import vip.fuck.sm.plugins.cms.entity.Site; import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.entity.Web; import vip.fuck.sm.plugins.cms.entity.Web;
import vip.fuck.sm.plugins.cms.util.SiteUtils; import vip.fuck.sm.plugins.cms.util.SiteUtils;
import java.util.ArrayList; import static vip.fuck.sm.plugins.cms.handler.UrlHandler.MAIN_APP_PASS;
import java.util.HashMap; import static vip.fuck.sm.plugins.cms.handler.UrlHandler.NORM_PASS;
import java.util.List;
/** /**
* 站点控制器 * 站点控制器
*/ */
@Component
public class SiteHandler public class SiteHandler
// extends Handler implements Filter
{ {
/** 不包含 */ /** 不包含 */
private List<String> urlExcludes = new ArrayList<String>(){{ static PathRule SITE_URLS = new PathRule().include(
add("/category"); "/cms/category",
add("/content"); "/cms/content",
add("/div"); "/cms/div",
add("/guestbook"); "/cms/guestbook",
add("/search"); "/cms/search"
}}; );
public void handle(String target, HttpRequest request, HttpResponse response, boolean[] isHandled) { static PathRule excl_paths = new PathRule().include("/cms/admin**");
if(target.startsWith("/admin/")){
// next.handle(target, request, response, isHandled); @Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
String pathNew = ctx.pathNew();
HttpRequest request = (HttpRequest) ctx.request();
String target = pathNew.replaceAll("/+","/");
if(!MAIN_APP_PASS.test(target)){
chain.doFilter(ctx);
return;
}
if(excl_paths.test(pathNew) || NORM_PASS.test(target)){
chain.doFilter(ctx);
return; return;
} }
String domain = SiteUtils.getDomain(request); String domain = SiteUtils.getDomain(request);
@ -42,38 +55,38 @@ public class SiteHandler
if(urls.length<1){ if(urls.length<1){
//默认站点 //默认站点
Site site = new Site().dao().findDefault(); Site site = new Site().dao().findDefault();
wrappedRequest(site, target, request, response, isHandled); wrappedRequest(site,ctx,chain, target);
return; return;
} }
//无域名带URL目录 //无域名带URL目录
String cat = urls[1]; String cat = urls[2];
if(!urlExcludes.contains("/"+cat)){ if(!SITE_URLS.test("/cms/"+cat)){
Site site = new Site().dao().findFirst("select * from cms_site where type=? and cat = ?",Site.Type.CAT.ordinal(),cat); Site site = new Site().dao().findFirst("select * from cms_site where type=? and cat = ?",Site.Type.CAT.ordinal(),cat);
if(site != null){ if(site != null){
target = target.substring(("/"+cat).length()); target = target.substring(("/cms/"+cat).length());
wrappedRequest(site, target, request, response, isHandled); wrappedRequest(site,ctx,chain, target);
return; return;
} }
} }
}else{ }else{
//有域名 //有域名
Site site = new Site().dao().findFirst("select * from cms_site where type=? and domain=?",Site.Type.DOMAIN.ordinal(),domain); Site site = new Site().dao().findFirst("select * from cms_site where type=? and domain=?",Site.Type.DOMAIN.ordinal(),domain);
wrappedRequest(site, target, request, response, isHandled); wrappedRequest(site,ctx,chain, target);
return; return;
} }
//默认站点 //默认站点
Site site = new Site().dao().findDefault(); Site site = new Site().dao().findDefault();
wrappedRequest(site, target, request, response, isHandled); wrappedRequest(site, ctx,chain, target);
return; return;
} }
//包装request //包装request
public void wrappedRequest(Site site,String target, HttpRequest request, HttpResponse response, boolean[] isHandled){ public void wrappedRequest(Site site,Context ctx,FilterChain chain, String target) throws Throwable {
// request.setAttribute(Site.CURRENT_SITE, site); ctx.attrSet(Site.CURRENT_SITE, site);
// request.setAttribute(Web.CURRENT_WEB, new Web().dao().findBySiteId(site.getId())); ctx.attrSet(Web.CURRENT_WEB, new Web().dao().findBySiteId(site.getId()));
// request.setAttribute(Company.CURRENT_COMPANY, new Company().dao().findBySiteId(site.getId())); ctx.attrSet(Company.CURRENT_COMPANY, new Company().dao().findBySiteId(site.getId()));
HashMap overridenParameters = new HashMap(); chain.doFilter(ctx);
// UrlRewriteWrappedRequest urlRewriteWrappedRequest = new UrlRewriteWrappedRequest(request,overridenParameters);
// next.handle(target, urlRewriteWrappedRequest, response, isHandled);
} }
} }

View File

@ -3,90 +3,126 @@ package vip.fuck.sm.plugins.cms.handler;
//import com.jfinal.handler.Handler; //import com.jfinal.handler.Handler;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.smartboot.http.server.HttpRequest; import org.noear.solon.annotation.Component;
import org.smartboot.http.server.HttpResponse; import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Filter;
import org.noear.solon.core.handle.FilterChain;
import org.noear.solon.core.route.PathRule;
import vip.fuck.sm.plugins.cms.Config; import vip.fuck.sm.plugins.cms.Config;
import vip.fuck.sm.plugins.cms.UrlRewriteWrappedRequest; import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Site; import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.entity.Tag;
import vip.fuck.sm.plugins.cms.util.SystemUtils; import vip.fuck.sm.plugins.cms.util.SystemUtils;
import java.util.HashMap;
/** /**
* UrlHandler. * UrlHandler.
*/ */
public class UrlHandler @Component()
// extends Handler public class UrlHandler implements Filter {
{
static PathRule MAIN_APP_PASS = new PathRule().include(
"/cms*",
"/cms",
"/cms/**"
);
static PathRule NORM_PASS = new PathRule().include(
"/index/404",
"/index/403",
"/index/500",
"/static**",
"/cms/static**",
"/cms/templates/*/static**",
"/**.ico");
static PathRule PASS_URLS = new PathRule()
.include(
"/cms/admin/**",
"/cms/category/**",
"/cms/content/**",
"/cms/div/**",
"/cms/guestbook/**",
"/cms/search/**",
"/cms/ajax/**",
"/cms/page/**"
);
static PathRule TAG_URLS = new PathRule()
.include("/cms/tag/**" );
static PathRule CATE_URLS = new PathRule()
.include("/cms/*","/cms/*/**" );
@Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
String target = ctx.pathNew();
target = target.replaceAll("/$","");
if(!MAIN_APP_PASS.test(target)){
chain.doFilter(ctx);
return;
}
if(PASS_URLS.test(target) || NORM_PASS.test(target)){
chain.doFilter(ctx);
return ;
}
Site currentSite = ctx.attr(Site.CURRENT_SITE);
if(currentSite == null){
currentSite = new Site().findDefault();
ctx.attrSet(Site.CURRENT_SITE,currentSite);
}
Config config = SystemUtils.getConfig();
if(config.getSiteModel()==Config.SiteModel.REWRITE.ordinal()){
target = target
.replace(".html","")
.replace(".shtm","")
;
}else if(config.getSiteModel()==Config.SiteModel.HTML.ordinal()){
if(target.endsWith(".html") || target.endsWith(".shtm") ){
chain.doFilter(ctx);
return;
}
}
String newTarget = "";
//tag start
if(TAG_URLS.test(target)){
String tagCat = target.split("/")[3];
Tag tag = new Tag().dao().findByCat(tagCat);
if(tag!=null){
ctx.paramMap().put("id",tag.getId()+"");
ctx.forward("/cms/tag");
}
return;
}
if(CATE_URLS.test(target)){
//URL目录: /product /product/{id}
String[] urls = target.split("/");
int urlsLength = urls.length;
if(urlsLength==3){
String categoryCat = urls[2];
Category category = new Category().dao().findByCat(categoryCat,currentSite.getId());
if(category!=null){
newTarget = "/cms/category";
ctx.paramMap().put("id",category.getId()+"");
}
}else if(urlsLength==4){
String categoryCat = urls[2];
String contentId = urls[3];
Category category = new Category().dao().findByCat(categoryCat,currentSite.getId());
if(category!=null){
newTarget = "/cms/content";
ctx.paramMap().put("id",contentId+"");
}
}
}
if(StringUtils.isNotBlank(newTarget)){
target = newTarget;
}
ctx.forward(target);
}
// public void handle(String target, HttpRequest request, HttpResponse response, boolean[] isHandled) {
// if ("/".equals(target)
// || target.startsWith("/admin/")
// || target.startsWith("/category/")
// || target.startsWith("/content/")
// || target.startsWith("/div/")
// || target.startsWith("/guestbook/")
// || target.startsWith("/search/")
// || target.startsWith("/ajax/")
// || target.startsWith("/page/")
// ) {
// next.handle(target, request, response, isHandled);
// return;
// }
// Site currentSite = (Site) request.getAttribute(Site.CURRENT_SITE);
// HashMap overridenParameters = new HashMap();
// //模式
// Config config = SystemUtils.getConfig();
// if(config.getSiteModel()== Config.SiteModel.REWRITE.ordinal()){
// target = target.replace(".html","");
// }else if(config.getSiteModel()==Config.SiteModel.HTML.ordinal()){
// if(target.endsWith(".html")){
// next.handle(target, request, response, isHandled);
// return;
// }
// }
// //tag start
// if(target.startsWith("/tag/")){
// String tagCat = target.split("/")[2];
// Tag tag = new Tag().dao().findByCat(tagCat);
// String newTarget = "";
// if(tag!=null){
// newTarget = "/tag";
// overridenParameters.put("id", new String[]{tag.getId()+""});
// }
// if(StringUtils.isNotBlank(newTarget)){
// target = newTarget;
// }
// UrlRewriteWrappedRequest urlRewriteWrappedRequest = new UrlRewriteWrappedRequest(request,overridenParameters);
// next.handle(target, urlRewriteWrappedRequest, response, isHandled);
// return;
// }
// //tag end
// //URL目录: /product /product/{id}
// String[] urls = target.split("/");
// request.setAttribute("target", "/"+urls[1]);
// int urlsLength = urls.length;
// String newTarget = "";
// if(urlsLength==2){
// String categoryCat = urls[1];
// Category category = new Category().dao().findByCat(categoryCat,currentSite.getId());
// if(category!=null){
// newTarget = "/category";
// overridenParameters.put("id", new String[]{category.getId()+""});
// }
// }else if(urlsLength==3){
// String categoryCat = urls[1];
// String contentId = urls[2];
// Category category = new Category().dao().findByCat(categoryCat,currentSite.getId());
// if(category!=null){
// newTarget = "/content";
// overridenParameters.put("id", new String[]{contentId+""});
// }
// }
// if(StringUtils.isNotBlank(newTarget)){
// target = newTarget;
// }
// UrlRewriteWrappedRequest urlRewriteWrappedRequest = new UrlRewriteWrappedRequest(request,overridenParameters);
// next.handle(target, urlRewriteWrappedRequest, response, isHandled);
// }
} }

View File

@ -14,92 +14,92 @@ var base = "#(base)";
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
<!-- 页面meta /--> <!-- 页面meta /-->
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/font-awesome/css/font-awesome.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/ionicons/css/ionicons.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/ionicons/css/ionicons.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/iCheck/square/blue.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/iCheck/square/blue.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/morris/morris.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/morris/morris.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/jvectormap/jquery-jvectormap-1.2.2.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/datepicker/datepicker3.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/datepicker/datepicker3.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/daterangepicker/daterangepicker.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/daterangepicker/daterangepicker.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/datatables/dataTables.bootstrap.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/datatables/dataTables.bootstrap.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/treeTable/jquery.treetable.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/treeTable/jquery.treetable.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/treeTable/jquery.treetable.theme.default.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/treeTable/jquery.treetable.theme.default.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/select2/select2.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/select2/select2.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/colorpicker/bootstrap-colorpicker.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/colorpicker/bootstrap-colorpicker.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/adminLTE/css/AdminLTE.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/adminLTE/css/skins/_all-skins.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/adminLTE/css/skins/_all-skins.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/css/style.css"> <link rel="stylesheet" href="#(base)/admin/static/css/style.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/ionslider/ion.rangeSlider.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/ionslider/ion.rangeSlider.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/ionslider/ion.rangeSlider.skinNice.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/ionslider/ion.rangeSlider.skinNice.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap-slider/slider.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap-slider/slider.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/webuploader/webuploader.css" > <link rel="stylesheet" href="#(base)/admin/static/plugins/webuploader/webuploader.css" >
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/viewer/viewer.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/viewer/viewer.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/ztree/zTreeStyle.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/ztree/zTreeStyle.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/codeMirror/codemirror.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/codeMirror/codemirror.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/switchery/switchery.min.css"/> <link rel="stylesheet" href="#(base)/admin/static/plugins/switchery/switchery.min.css"/>
<script src="#(base)/cms/admin/static/plugins/jQuery/jquery-2.2.3.min.js"></script> <script src="#(base)/admin/static/plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/jQueryUI/jquery-ui.min.js"></script> <script src="#(base)/admin/static/plugins/jQueryUI/jquery-ui.min.js"></script>
<script> <script>
$.widget.bridge('uibutton', $.ui.button); $.widget.bridge('uibutton', $.ui.button);
</script> </script>
<script src="#(base)/cms/admin/static/plugins/bootstrap/js/bootstrap.min.js"></script> <script src="#(base)/admin/static/plugins/bootstrap/js/bootstrap.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/raphael/raphael-min.js"></script> <script src="#(base)/admin/static/plugins/raphael/raphael-min.js"></script>
<script src="#(base)/cms/admin/static/plugins/morris/morris.min.js"></script> <script src="#(base)/admin/static/plugins/morris/morris.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/sparkline/jquery.sparkline.min.js"></script> <script src="#(base)/admin/static/plugins/sparkline/jquery.sparkline.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script> <script src="#(base)/admin/static/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script> <script src="#(base)/admin/static/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
<script src="#(base)/cms/admin/static/plugins/knob/jquery.knob.js"></script> <script src="#(base)/admin/static/plugins/knob/jquery.knob.js"></script>
<script src="#(base)/cms/admin/static/plugins/daterangepicker/moment.min.js"></script> <script src="#(base)/admin/static/plugins/daterangepicker/moment.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/daterangepicker/daterangepicker.js"></script> <script src="#(base)/admin/static/plugins/daterangepicker/daterangepicker.js"></script>
<script src="#(base)/cms/admin/static/plugins/daterangepicker/daterangepicker.zh-CN.js"></script> <script src="#(base)/admin/static/plugins/daterangepicker/daterangepicker.zh-CN.js"></script>
<script src="#(base)/cms/admin/static/plugins/datepicker/bootstrap-datepicker.js"></script> <script src="#(base)/admin/static/plugins/datepicker/bootstrap-datepicker.js"></script>
<script src="#(base)/cms/admin/static/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script> <script src="#(base)/admin/static/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/slimScroll/jquery.slimscroll.min.js"></script> <script src="#(base)/admin/static/plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/fastclick/fastclick.js"></script> <script src="#(base)/admin/static/plugins/fastclick/fastclick.js"></script>
<script src="#(base)/cms/admin/static/plugins/iCheck/icheck.min.js"></script> <script src="#(base)/admin/static/plugins/iCheck/icheck.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/adminLTE/js/app.min.js"></script> <script src="#(base)/admin/static/plugins/adminLTE/js/app.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/treeTable/jquery.treetable.js"></script> <script src="#(base)/admin/static/plugins/treeTable/jquery.treetable.js"></script>
<script src="#(base)/cms/admin/static/plugins/select2/select2.full.min.js"></script> <script src="#(base)/admin/static/plugins/select2/select2.full.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/colorpicker/bootstrap-colorpicker.min.js"></script> <script src="#(base)/admin/static/plugins/colorpicker/bootstrap-colorpicker.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-markdown/js/markdown.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-markdown/js/markdown.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-markdown/js/to-markdown.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-markdown/js/to-markdown.js"></script>
<script src="#(base)/cms/admin/static/plugins/ckeditor/ckeditor.js"></script> <script src="#(base)/admin/static/plugins/ckeditor/ckeditor.js"></script>
<script src="#(base)/cms/admin/static/plugins/input-mask/jquery.inputmask.js"></script> <script src="#(base)/admin/static/plugins/input-mask/jquery.inputmask.js"></script>
<script src="#(base)/cms/admin/static/plugins/input-mask/jquery.inputmask.date.extensions.js"></script> <script src="#(base)/admin/static/plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
<script src="#(base)/cms/admin/static/plugins/input-mask/jquery.inputmask.extensions.js"></script> <script src="#(base)/admin/static/plugins/input-mask/jquery.inputmask.extensions.js"></script>
<script src="#(base)/cms/admin/static/plugins/datatables/jquery.dataTables.min.js"></script> <script src="#(base)/admin/static/plugins/datatables/jquery.dataTables.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/datatables/dataTables.bootstrap.min.js"></script> <script src="#(base)/admin/static/plugins/datatables/dataTables.bootstrap.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/chartjs/Chart.min.js"></script> <script src="#(base)/admin/static/plugins/chartjs/Chart.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/flot/jquery.flot.min.js"></script> <script src="#(base)/admin/static/plugins/flot/jquery.flot.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/flot/jquery.flot.resize.min.js"></script> <script src="#(base)/admin/static/plugins/flot/jquery.flot.resize.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/flot/jquery.flot.pie.min.js"></script> <script src="#(base)/admin/static/plugins/flot/jquery.flot.pie.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/flot/jquery.flot.categories.min.js"></script> <script src="#(base)/admin/static/plugins/flot/jquery.flot.categories.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/ionslider/ion.rangeSlider.min.js"></script> <script src="#(base)/admin/static/plugins/ionslider/ion.rangeSlider.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-slider/bootstrap-slider.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-slider/bootstrap-slider.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap-datetimepicker/locales/bootstrap-datetimepicker.zh-CN.js"></script> <script src="#(base)/admin/static/plugins/bootstrap-datetimepicker/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="#(base)/cms/admin/static/plugins/validate/jquery.validate.js"></script> <script src="#(base)/admin/static/plugins/validate/jquery.validate.js"></script>
<script src="#(base)/cms/admin/static/plugins/webuploader/webuploader.js"></script> <script src="#(base)/admin/static/plugins/webuploader/webuploader.js"></script>
<script src="#(base)/cms/admin/static/plugins/ueditor/ueditor.js"></script> <script src="#(base)/admin/static/plugins/ueditor/ueditor.js"></script>
<script src="#(base)/cms/admin/static/plugins/echarts/echarts.js"></script> <script src="#(base)/admin/static/plugins/echarts/echarts.js"></script>
<script src="#(base)/cms/admin/static/plugins/sweetalert/sweetalert.min.js"></script> <script src="#(base)/admin/static/plugins/sweetalert/sweetalert.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/viewer/viewer.min.js"></script> <script src="#(base)/admin/static/plugins/viewer/viewer.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/ztree/jquery.ztree.core.js"></script> <script src="#(base)/admin/static/plugins/ztree/jquery.ztree.core.js"></script>
<script src="#(base)/cms/admin/static/plugins/codeMirror/codemirror.js"></script> <script src="#(base)/admin/static/plugins/codeMirror/codemirror.js"></script>
<script src="#(base)/cms/admin/static/plugins/codeMirror/xml.js"></script> <script src="#(base)/admin/static/plugins/codeMirror/xml.js"></script>
<script src="#(base)/cms/admin/static/plugins/switchery/switchery.min.js"></script> <script src="#(base)/admin/static/plugins/switchery/switchery.min.js"></script>
<script src="#(base)/cms/admin/static/js/common.js"></script> <script src="#(base)/admin/static/js/common.js"></script>
<script src="#(base)/cms/admin/static/js/list.js"></script> <script src="#(base)/admin/static/js/list.js"></script>
<script src="#(base)/cms/admin/static/js/admin.js"></script> <script src="#(base)/admin/static/js/admin.js"></script>
<script src="#(base)/cms/admin/static/js/core.js"></script> <script src="#(base)/admin/static/js/core.js"></script>
<style> <style>
html>body>div.swal-overlay.swal-overlay--show-modal{ html>body>div.swal-overlay.swal-overlay--show-modal{
display: none !important; display: none !important;

View File

@ -10,11 +10,11 @@
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/font-awesome/css/font-awesome.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/ionicons/css/ionicons.min.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/ionicons/css/ionicons.min.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/adminLTE/css/AdminLTE.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet" href="#(base)/cms/admin/static/plugins/iCheck/square/blue.css"> <link rel="stylesheet" href="#(base)/admin/static/plugins/iCheck/square/blue.css">
<script>if(window.top !== window.self){ window.top.location = window.location;}</script> <script>if(window.top !== window.self){ window.top.location = window.location;}</script>
<script>if(window.top.location.href.indexOf("#(base)/admin/login")==-1){ window.top.location.href="#(base)/admin/login";}</script> <script>if(window.top.location.href.indexOf("#(base)/admin/login")==-1){ window.top.location.href="#(base)/admin/login";}</script>
</head> </head>
@ -47,9 +47,9 @@
<!-- /.login-box-body --> <!-- /.login-box-body -->
</div> </div>
<!-- /.login-box --> <!-- /.login-box -->
<script src="#(base)/cms/admin/static/plugins/jQuery/jquery-2.2.3.min.js"></script> <script src="#(base)/admin/static/plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/bootstrap/js/bootstrap.min.js"></script> <script src="#(base)/admin/static/plugins/bootstrap/js/bootstrap.min.js"></script>
<script src="#(base)/cms/admin/static/plugins/sweetalert/sweetalert.min.js"></script> <script src="#(base)/admin/static/plugins/sweetalert/sweetalert.min.js"></script>
<script> <script>
$(function() { $(function() {

View File

@ -4,7 +4,7 @@
<!-- 公共页面 --> <!-- 公共页面 -->
#include("/cms/admin/view/include/common.shtm") #include("/cms/admin/view/include/common.shtm")
<!-- 公共页面 /--> <!-- 公共页面 /-->
<link rel="stylesheet" type="text/css" href="#(base)/cms/admin/static/css/wechat.css" /> <link rel="stylesheet" type="text/css" href="#(base)/admin/static/css/wechat.css" />
</head> </head>
<body class="hold-transition skin-purple sidebar-mini"> <body class="hold-transition skin-purple sidebar-mini">
<div class="wrapper"> <div class="wrapper">