fixed: 运行cms页面出不来

This commit is contained in:
冼子明 2025-03-29 02:47:22 +08:00
parent 102f5ddc2e
commit 03d9312f54
2888 changed files with 346 additions and 547224 deletions

View File

@ -28,7 +28,10 @@
<groupId>org.noear</groupId>
<artifactId>solon-lib</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-view-enjoy</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-logging-logback</artifactId>
@ -157,6 +160,10 @@
<artifactId>httpmime</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -1,18 +1,23 @@
package vip.fuck.sm.plugins.cms;
import com.jfinal.kit.PropKit;
import org.noear.solon.annotation.Controller;
import org.noear.solon.core.AppContext;
import org.noear.solon.core.Plugin;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import org.noear.solon.core.Props;
import org.noear.solon.web.staticfiles.StaticConfig;
import org.noear.solon.web.staticfiles.StaticMappings;
import org.noear.solon.web.staticfiles.repository.ClassPathStaticRepository;
import org.noear.solon.web.staticfiles.repository.FileStaticRepository;
public class CmsPlugin implements Plugin {
@Override
public void start(AppContext context) throws Throwable {
System.out.println("cms.test.plugins");
context.beanBuilderAdd(RouteMapping.class, (clz, bw, anno) -> {
if (context.app() != null) {
context.app().router().add(bw);
}
});
context.cfg().loadAdd("app-cms-config.yml");
context.beanScan(CmsPlugin.class);
StaticMappings.add(CommonAttribute.CMS_ADMIN_STAITC_REQ_PATH,
new ClassPathStaticRepository(CommonAttribute.CMS_ADMIN_STAITC_CLASSPATH));
}
}

View File

@ -23,7 +23,7 @@ public final class CommonAttribute {
public static final String GET="get";
/** 后台页面 */
public static final String ADMIN_PATH="/admin/view/";
public static final String ADMIN_PATH="/cms/admin/view/";
/** 后台错误页面 */
public static final String ADMIN_ERROR_VIEW = ADMIN_PATH+"error/500.html";
@ -47,7 +47,7 @@ public final class CommonAttribute {
public static final String JOB_PROPERTIES = "job.properties";
/** 页面后缀 */
public static final String VIEW_EXTENSION = ".html";
public static final String VIEW_EXTENSION = ".shtm";
/** 参数分隔符 */
public static final String URL_PARA_SEPARATOR = "-";
@ -60,7 +60,9 @@ public final class CommonAttribute {
/** JSON时间格式 */
public static final String JSON_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String CMS_ADMIN_STAITC_REQ_PATH = "/cms/admin/static/";
public static final String CMS_ADMIN_STAITC_CLASSPATH = "/templates/cms/admin/static/";
/**
* 不可实例化
*/

View File

@ -0,0 +1,32 @@
package vip.fuck.sm.plugins.cms.config;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.solon.annotation.Db;
import com.zaxxer.hikari.HikariDataSource;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject;
import vip.fuck.sm.plugins.cms.entity._MappingKit;
import javax.sql.DataSource;
@Configuration
public class Configxv {
@Bean(value = "cmsDb")
public DataSource ca(@Inject("${cms.jdbc}")
HikariDataSource dataSource) {
return dataSource;
}
@Bean
public void cx(@Db("cmsDb") ActiveRecordPlugin arp){
_MappingKit.mapping(arp);
//启用开发或调试模式可以打印sql
if (Solon.cfg().isDebugMode() || Solon.cfg().isFilesMode()) {
arp.setDevMode(true);
}
}
}

View File

@ -0,0 +1,6 @@
package vip.fuck.sm.plugins.cms.config;
import org.noear.solon.core.route.RouterDefault;
public class MyRouter extends RouterDefault {
}

View File

@ -9,13 +9,16 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Get;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.core.handle.ModelAndView;
import vip.fuck.sm.plugins.cms.CommonAttribute;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Admin;
import vip.fuck.sm.plugins.cms.entity.AdminRole;
import vip.fuck.sm.plugins.cms.entity.Role;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -27,20 +30,20 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/admin")
@Controller
@Mapping("/admin/admin")
public class AdminController extends BaseController {
/**
* 列表
*/
@Get
@Mapping()
public void index(){
setListQuery();
String name = getPara("name");
String username = getPara("username");
Integer pageNumber = getParaToInt("pageNumber");
if(pageNumber==null){
pageNumber = 1;
}
Integer pageNumber = getParaToInt("pageNumber",1);
setAttr("page", new Admin().dao().findPage(name,username,pageNumber,PAGE_SIZE));
setAttr("name", name);
setAttr("username", username);

View File

@ -12,10 +12,7 @@ import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Cookie;
import org.noear.solon.core.handle.SessionState;
import org.noear.solon.core.handle.UploadedFile;
import org.noear.solon.core.handle.*;
import org.noear.solon.core.util.KeyValues;
import org.noear.solon.core.util.MultiMap;
import org.smartboot.http.server.HttpRequest;
@ -152,7 +149,6 @@ public class BaseController {
}
protected void renderJson(Object o) {
// todo 是否返回json
try {
Context.current().render(o);
} catch (Throwable e) {
@ -212,13 +208,27 @@ public class BaseController {
* @return 页面
*/
// @NotAction
public String getView(String view){
return CommonAttribute.ADMIN_PATH+view+CommonAttribute.VIEW_EXTENSION;
public ModelAndView getView(String view){
return new ModelAndView(CommonAttribute.ADMIN_PATH+view+CommonAttribute.VIEW_EXTENSION);
}
public void render(String path){
//todo render page path
public void render(String view){
try {
Context.current().renderAndReturn(getView(view));
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
public void render(ModelAndView view){
try {
Context current = Context.current();
current.render(view);
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
protected void setCookie(String name, String value ,int maxAge,String path){
Context.current().cookieSet(name,
value,

View File

@ -2,8 +2,10 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.CacheUtils;
import java.util.HashMap;
@ -15,7 +17,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/cache")
@Controller
@Mapping("/admin/cache")
public class CacheController extends BaseController {
/**

View File

@ -11,12 +11,14 @@ import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.entity.Model;
import vip.fuck.sm.plugins.cms.entity.ModelField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.PinYinUtils;
import java.util.*;
@ -28,8 +30,8 @@ import java.util.*;
*
*
*/
@RouteMapping(url = "/admin/category")
@Controller
@Mapping("/admin/category")
public class CategoryController extends BaseController {
/**

View File

@ -7,9 +7,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Company;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.HashMap;
@ -20,7 +22,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/company")
@Controller
@Mapping("/admin/company")
public class CompanyController extends BaseController {
/**

View File

@ -6,12 +6,14 @@ import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.entity.ModelField;
import vip.fuck.sm.plugins.cms.entity.Tag;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.PinYinUtils;
import java.util.*;
@ -23,7 +25,8 @@ import java.util.*;
*
*
*/
@RouteMapping(url = "/admin/content")
@Controller
@Mapping("/admin/content")
public class ContentController extends BaseController {
/**

View File

@ -2,8 +2,10 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.BackupUtils;
import java.util.Collections;
@ -15,7 +17,8 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/database")
@Controller
@Mapping("/admin/database")
public class DatabaseController extends BaseController {
/**

View File

@ -2,9 +2,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Div;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.TableUtils;
import java.util.Date;
@ -17,7 +19,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/div")
@Controller
@Mapping("/admin/div")
public class DivController extends BaseController {
/**

View File

@ -6,10 +6,12 @@ import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Div;
import vip.fuck.sm.plugins.cms.entity.DivField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.DbUtils;
import java.util.Date;
@ -23,7 +25,8 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/div_data")
@Controller
@Mapping("/admin/div_data")
public class DivDataController extends BaseController {
/**

View File

@ -1,8 +1,10 @@
package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.CommonAttribute;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
/**
* Controller - 错误
@ -10,7 +12,8 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/admin/error")
@Controller
@Mapping("/admin/error")
public class ErrorController extends BaseController {
/**

View File

@ -11,10 +11,12 @@ import com.jfinal.kit.PathKit;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.core.handle.UploadedFile;
import vip.fuck.sm.plugins.cms.CommonAttribute;
import vip.fuck.sm.plugins.cms.Config;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.ImageUtils;
import vip.fuck.sm.plugins.cms.util.SystemUtils;
@ -30,7 +32,8 @@ import java.util.UUID;
*
*
*/
@RouteMapping(url = "/admin/file")
@Controller
@Mapping("/admin/file")
public class FileController extends BaseController {
/**

View File

@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.FriendLink;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -18,7 +20,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/friend_link")
@Controller
@Mapping("/admin/friend_link")
public class FriendLinkController extends BaseController {
/**

View File

@ -3,9 +3,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.BooleanUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Guestbook;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -17,7 +19,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/guestbook")
@Controller
@Mapping("/admin/guestbook")
public class GuestbookController extends BaseController {
/**

View File

@ -8,11 +8,13 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang.time.DateUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Config;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.CacheUtils;
import vip.fuck.sm.plugins.cms.util.HtmlUtils;
import vip.fuck.sm.plugins.cms.util.SystemUtils;
@ -25,7 +27,8 @@ import java.util.*;
*
*
*/
@RouteMapping(url = "/admin/html")
@Controller
@Mapping("/admin/html")
public class HtmlController extends BaseController {
/**

View File

@ -13,9 +13,11 @@ import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.entity.Admin;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
@ -25,14 +27,15 @@ import java.util.Date;
*
*
*/
@RouteMapping(url = "/admin/index")
@Mapping("/admin/index")
@Controller
public class IndexController extends BaseController {
/**
* 首页
*/
@Mapping()
public void index() {
//站点
Integer siteId = getParaToInt("siteId");

View File

@ -7,9 +7,13 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.codec.digest.DigestUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Get;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.annotation.Param;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Admin;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.HashMap;
@ -19,12 +23,15 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/login")
@Controller
@Mapping("/admin/login")
public class LoginController extends BaseController {
/**
* 登录
*/
@Get
@Mapping()
public void index() {
String username = getPara("username");
String password = getPara("password");
@ -36,6 +43,7 @@ public class LoginController extends BaseController {
/**
* 登录
*/
@Mapping("login")
public void login(){
String username = getPara("username");
String password = getPara("password");

View File

@ -1,9 +1,11 @@
package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.entity.Admin;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
/**
* Controller - 管理员退出
@ -11,7 +13,8 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/admin/logout")
@Controller
@Mapping("/admin/logout")
public class LogoutController extends BaseController{
/**

View File

@ -2,9 +2,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Menu;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
@ -17,7 +19,8 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/menu")
@Controller
@Mapping("/admin/menu")
public class MenuController extends BaseController{
/**

View File

@ -7,10 +7,12 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Model;
import vip.fuck.sm.plugins.cms.entity.ModelField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -22,8 +24,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/model")
@Mapping("/admin/model")
@Controller
public class ModelController extends BaseController {
/**

View File

@ -7,9 +7,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Nav;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
@ -23,8 +25,8 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/nav")
@Mapping("/admin/nav")
@Controller
public class NavController extends BaseController {
/**

View File

@ -3,9 +3,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Admin;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -17,7 +19,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/profile")
@Controller
@Mapping("/admin/profile")
public class ProfileController extends BaseController {

View File

@ -3,12 +3,14 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import com.alibaba.fastjson.JSONArray;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Menu;
import vip.fuck.sm.plugins.cms.entity.Role;
import vip.fuck.sm.plugins.cms.entity.RoleSite;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -20,7 +22,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/role")
@Controller
@Mapping("/admin/role")
public class RoleController extends BaseController {
/**

View File

@ -7,10 +7,12 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Config;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Setup;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.CacheUtils;
import vip.fuck.sm.plugins.cms.util.SystemUtils;
@ -25,8 +27,8 @@ import java.util.Set;
*
*
*/
@RouteMapping(url = "/admin/setup")
@Mapping("/admin/setup")
@Controller
public class SetupController extends BaseController {
/**

View File

@ -3,11 +3,13 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Company;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.entity.Web;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.PinYinUtils;
import vip.fuck.sm.plugins.cms.util.TemplateUtils;
@ -21,7 +23,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/site")
@Controller
@Mapping("/admin/site")
public class SiteController extends BaseController {
/**

View File

@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Slide;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -18,7 +20,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/slide")
@Controller
@Mapping("/admin/slide")
public class SlideController extends BaseController {
/**

View File

@ -2,9 +2,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.apache.commons.lang.ArrayUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Tag;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -16,7 +18,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/tag")
@Controller
@Mapping("/admin/tag")
public class TagController extends BaseController {
/**

View File

@ -9,8 +9,10 @@ import com.jfinal.kit.PathKit;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.CommonAttribute;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.TemplateUtils;
import java.io.File;
@ -22,8 +24,8 @@ import java.io.IOException;
*
*
*/
@RouteMapping(url = "/admin/template")
@Mapping("/admin/template")
@Controller
public class TemplateController extends BaseController {
/**

View File

@ -7,9 +7,11 @@ package vip.fuck.sm.plugins.cms.controller.admin;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Web;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.HashMap;
@ -20,7 +22,8 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/admin/web")
@Controller
@Mapping("/admin/web")
public class WebController extends BaseController {
/**

View File

@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.collections.CollectionUtils;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.WechatMenu;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.WeixinUtils;
import java.util.*;
@ -16,7 +18,8 @@ import java.util.*;
*
*
*/
@RouteMapping(url = "/admin/wechat_menu")
@Controller
@Mapping("/admin/wechat_menu")
public class WechatMenuController extends BaseController {
/**

View File

@ -5,11 +5,12 @@ import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
import vip.fuck.sm.plugins.cms.entity.Div;
import vip.fuck.sm.plugins.cms.entity.DivField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.FieldUtils;
import java.util.Date;
@ -23,7 +24,7 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/div/div_field")
@Mapping("/admin/div/div_field")
public class DivFieldController extends BaseController {
/**

View File

@ -6,11 +6,12 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
import vip.fuck.sm.plugins.cms.entity.Model;
import vip.fuck.sm.plugins.cms.entity.ModelField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -23,7 +24,7 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/admin/model/model_field")
@Mapping("/admin/model/model_field")
public class ModelFieldController extends BaseController {
/**

View File

@ -1,10 +1,11 @@
package vip.fuck.sm.plugins.cms.controller.common;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
@RouteMapping(url = "/common/captcha")
@Mapping("/common/captcha")
public class CaptchaController extends BaseController {
public void image(){

View File

@ -2,12 +2,13 @@ package vip.fuck.sm.plugins.cms.controller.common;
import com.jfinal.kit.PathKit;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.controller.admin.BaseController;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.io.File;
@RouteMapping(url = "/common/down")
@Mapping("/common/down")
public class DownController extends BaseController {
public void file(){

View File

@ -1,7 +1,8 @@
package vip.fuck.sm.plugins.cms.controller.front;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import org.noear.solon.annotation.Mapping;
/**
* Controller - Ajax
@ -9,7 +10,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/ajax")
@Mapping("/ajax")
public class AjaxController extends BaseController {

View File

@ -1,9 +1,10 @@
package vip.fuck.sm.plugins.cms.controller.front;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Model;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
/**
* Controller - 栏目
@ -11,7 +12,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/category")
@Mapping("/category")
public class CategoryController extends BaseController {
/**

View File

@ -6,9 +6,10 @@
package vip.fuck.sm.plugins.cms.controller.front;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
/**
* Controller - 内容
@ -16,7 +17,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/content")
@Mapping("/content")
public class ContentController extends BaseController {
/**

View File

@ -4,10 +4,11 @@ package vip.fuck.sm.plugins.cms.controller.front;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Config;
import vip.fuck.sm.plugins.cms.entity.Div;
import vip.fuck.sm.plugins.cms.entity.DivField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import vip.fuck.sm.plugins.cms.util.DbUtils;
import vip.fuck.sm.plugins.cms.util.HtmlUtils;
import vip.fuck.sm.plugins.cms.util.SystemUtils;
@ -15,7 +16,7 @@ import vip.fuck.sm.plugins.cms.util.SystemUtils;
import java.util.*;
import java.util.stream.Collectors;
@RouteMapping(url = "/api/dev/data")
@Mapping("/api/dev/data")
public class DevOpenController extends BaseController{
public void listByDivId(){

View File

@ -3,10 +3,11 @@ package vip.fuck.sm.plugins.cms.controller.front;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Div;
import vip.fuck.sm.plugins.cms.entity.DivField;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -18,7 +19,7 @@ import java.util.List;
*
*
*/
@RouteMapping(url = "/div")
@Mapping("/div")
public class DivController extends BaseController {

View File

@ -2,10 +2,11 @@ package vip.fuck.sm.plugins.cms.controller.front;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.entity.Guestbook;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.Date;
import java.util.HashMap;
@ -16,7 +17,7 @@ import java.util.HashMap;
*
*
*/
@RouteMapping(url = "/guestbook")
@Mapping("/guestbook")
public class GuestbookController extends BaseController {

View File

@ -1,7 +1,8 @@
package vip.fuck.sm.plugins.cms.controller.front;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import org.noear.solon.annotation.Mapping;
/**
* Controller - 首页
@ -9,14 +10,14 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/")
@Mapping("/")
public class IndexController extends BaseController {
/**
* 首页
*/
public void index() {
render("/templates/"+getCurrentTemplate()+"/index.html");
render("/templates/"+getCurrentTemplate()+"/index.shtm");
}
}

View File

@ -1,7 +1,8 @@
package vip.fuck.sm.plugins.cms.controller.front;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import org.noear.solon.annotation.Mapping;
/**
* Controller - 页面
@ -9,7 +10,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/page")
@Mapping("/page")
public class PageController extends BaseController {

View File

@ -1,7 +1,8 @@
package vip.fuck.sm.plugins.cms.controller.front;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import org.noear.solon.annotation.Mapping;
/**
* Controller - 搜索
@ -9,7 +10,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/search")
@Mapping("/search")
public class SearchController extends BaseController {

View File

@ -1,8 +1,9 @@
package vip.fuck.sm.plugins.cms.controller.front;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.entity.Tag;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
/**
* Controller - 标签
@ -10,7 +11,7 @@ import vip.fuck.sm.plugins.cms.routes.RouteMapping;
*
*
*/
@RouteMapping(url = "/tag")
@Mapping("/tag")
public class TagController extends BaseController {
/**

View File

@ -3,10 +3,11 @@ package vip.fuck.sm.plugins.cms.controller.xcx;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.controller.front.BaseController;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.ArrayList;
import java.util.HashMap;
@ -18,7 +19,7 @@ import java.util.Map;
*
*
*/
@RouteMapping(url = "/xcx/category")
@Mapping("/xcx/category")
public class CategoryController extends BaseController {
/**

View File

@ -3,10 +3,11 @@ package vip.fuck.sm.plugins.cms.controller.xcx;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.controller.front.BaseController;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.HashMap;
import java.util.Map;
@ -17,7 +18,7 @@ import java.util.Map;
*
*
*/
@RouteMapping(url = "/xcx/content")
@Mapping("/xcx/content")
public class ContentController extends BaseController {
/**

View File

@ -3,11 +3,12 @@ package vip.fuck.sm.plugins.cms.controller.xcx;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.noear.solon.annotation.Mapping;
import vip.fuck.sm.plugins.cms.Feedback;
import vip.fuck.sm.plugins.cms.controller.front.BaseController;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.entity.Slide;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
import java.util.ArrayList;
import java.util.HashMap;
@ -19,7 +20,7 @@ import java.util.Map;
*
*
*/
@RouteMapping(url = "/xcx")
@Mapping("/xcx")
public class IndexController extends BaseController {
/**

View File

@ -9,6 +9,10 @@ import com.jfinal.plugin.activerecord.Model;
@SuppressWarnings({"serial", "unchecked"})
public abstract class BaseAdmin<M extends BaseAdmin<M>> extends Model<M> implements IBean {
{
use("cmsDb");
}
public M setId(Integer id) {
set("id", id);
return (M)this;

View File

@ -1,10 +0,0 @@
package vip.fuck.sm.plugins.cms.routes;
import java.lang.annotation.*;
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
public @interface RouteMapping {
String url();
}

View File

@ -1,24 +0,0 @@
package vip.fuck.sm.plugins.cms.solon;
import org.noear.solon.core.BeanBuilder;
import org.noear.solon.core.BeanWrap;
import org.noear.solon.data.datasource.DsUtils;
import vip.fuck.sm.plugins.cms.routes.RouteMapping;
public class DbBeanBuilderImpl implements BeanBuilder<RouteMapping> {
public DbBeanBuilderImpl() {
}
public void doBuild(Class<?> clz, BeanWrap bw, RouteMapping anno) throws Throwable {
if (!clz.isInterface()) {
DsUtils.observeDs(bw.context(), anno.url(), (dsWrap) -> {
// this.create0(clz, dsWrap);
});
}
}
// private void create0(Class<?> clz, BeanWrap dsBw) {
// Object raw = MybatisAdapterManager.get(dsBw).getMapper(clz);
// dsBw.context().wrapAndPut(clz, raw);
// }
}

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="category_children_list")
@Component("view:category_children_list")
public class CategoryChildrenListDirective extends BaseDirective {
/** "栏目ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -19,7 +20,7 @@ import vip.fuck.sm.plugins.cms.entity.Site;
*
*
*/
@TemplateVariable(name="category")
@Component("view:category")
public class CategoryDirective extends BaseDirective {
/** "ID"参数名称 */

View File

@ -8,6 +8,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -20,7 +21,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="category_parent_list")
@Component("view:category_parent_list")
public class CategoryParentListDirective extends BaseDirective {
/** "文章分类ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Category;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="category_root_list")
@Component("view:category_root_list")
public class CategoryRootListDirective extends BaseDirective {
/** 变量名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Content;
@ -18,7 +19,7 @@ import vip.fuck.sm.plugins.cms.entity.Content;
*
*
*/
@TemplateVariable(name="content")
@Component("view:content")
public class ContentDirective extends BaseDirective {
/** "ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="content_list")
@Component("view:content_list")
public class ContentListDirective extends BaseDirective {
/** "栏目ID"参数名称 */

View File

@ -10,6 +10,7 @@ import com.jfinal.plugin.activerecord.Page;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Content;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -20,7 +21,7 @@ import vip.fuck.sm.plugins.cms.entity.Site;
*
*
*/
@TemplateVariable(name="content_page")
@Component("view:content_page")
public class ContentPageDirective extends BaseDirective {
/** "栏目ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.FriendLink;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="friend_link_list")
@Component("view:friend_link_list")
public class FriendLinkListDirective extends BaseDirective {
/** "分组ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Menu;
@ -20,7 +21,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="menu_root_list")
@Component("view:menu_root_list")
public class MenuRootListDirective extends BaseDirective {
/** 变量名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Nav;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="nav_children_list")
@Component("view:nav_children_list")
public class NavChildrenListDirective extends BaseDirective {
/** "导航ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Nav;
@ -18,7 +19,7 @@ import vip.fuck.sm.plugins.cms.entity.Nav;
*
*
*/
@TemplateVariable(name="nav")
@Component("view:nav")
public class NavDirective extends BaseDirective {
/** "ID"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Nav;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="nav_parent_list")
@Component("view:nav_parent_list")
public class NavParentListDirective extends BaseDirective {
/** "导航ID"参数名称 */

View File

@ -8,6 +8,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Nav;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -20,7 +21,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="nav_root_list")
@Component("view:nav_root_list")
public class NavRootListDirective extends BaseDirective {
/** 变量名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import java.util.ArrayList;
@ -20,7 +21,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="page")
@Component("view:page")
public class PageDirective extends BaseDirective {
/** "模式"参数名称 */

View File

@ -8,6 +8,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Site;
@ -19,7 +20,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="site_list")
@Component("view:site_list")
public class SiteListDirective extends BaseDirective {
/** 变量名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.entity.Slide;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="slide_list")
@Component("view:slide_list")
public class SlideListDirective extends BaseDirective {
/** "分组ID"参数名称 */

View File

@ -6,6 +6,7 @@ import com.jfinal.plugin.activerecord.Record;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import java.util.List;
@ -15,7 +16,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="sql_list")
@Component("view:sql_list")
public class SqlListDirective extends BaseDirective {
/** "SQL"参数名称 */

View File

@ -12,6 +12,7 @@ import com.jfinal.plugin.activerecord.Record;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
/**
@ -20,7 +21,7 @@ import vip.fuck.sm.plugins.cms.TemplateVariable;
*
*
*/
@TemplateVariable(name="sql_page")
@Component("view:sql_page")
public class SqlPageDirective extends BaseDirective {
/** "页码"参数名称 */

View File

@ -9,6 +9,7 @@ package vip.fuck.sm.plugins.cms.template.directive;
import com.jfinal.template.Env;
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.Scope;
import org.noear.solon.annotation.Component;
import vip.fuck.sm.plugins.cms.TemplateVariable;
import vip.fuck.sm.plugins.cms.entity.Site;
import vip.fuck.sm.plugins.cms.entity.Tag;
@ -21,7 +22,7 @@ import java.util.List;
*
*
*/
@TemplateVariable(name="tag_list")
@Component("view:tag_list")
public class TagListDirective extends BaseDirective {
/** 变量名称 */

View File

@ -249,10 +249,10 @@ public class HtmlUtils {
model.put(Web.CURRENT_WEB, new Web().dao().findBySiteId(site.getId()));
model.put(Company.CURRENT_COMPANY, new Company().dao().findBySiteId(site.getId()));
if(StringUtils.isNotBlank(site.getPcTemplate())){
generateCount += generate("templates/"+site.getPcTemplate()+"/index.html", PathKit.getWebRootPath()+"/index.html", model);
generateCount += generate("templates/"+site.getPcTemplate()+"/index.shtm", PathKit.getWebRootPath()+"/index.shtm", model);
}
if(StringUtils.isNotBlank(site.getMobileTemplate())){
generateCount += generate("templates/"+site.getMobileTemplate()+"/index.html", PathKit.getWebRootPath()+"/mobile/"+"/index.html", model);
generateCount += generate("templates/"+site.getMobileTemplate()+"/index.shtm", PathKit.getWebRootPath()+"/mobile/"+"/index.shtm", model);
}
return generateCount;
}
@ -338,7 +338,7 @@ public class HtmlUtils {
* @return 删除数量
*/
public static int deleteIndex() {
return delete("index.html");
return delete("index.shtm");
}
/**

View File

@ -1,2 +1,2 @@
solon.plugin: vip.fuck.sm.plugins.cms.CmsPlugin
solon.plugin.priority: 999
solon.plugin.priority: 0

View File

@ -0,0 +1,7 @@
cms:
jdbc:
schema: jfinal_project_center
jdbcUrl: jdbc:mysql://jfinal_project_center:3306/jfinal_project_center?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 123456

View File

@ -1,12 +0,0 @@
server.port: 8080
solon.app:
name: 'demo-app'
group: 'demo'
solon.logging:
appender:
console:
level: INFO
file:
level: INFO

View File

@ -1,27 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>页面不存在 (404)</title>
<style type="text/css">
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
div.dialog {
width: 80%;
padding: 1em 4em;
margin: 4em auto 0 auto;
border: 1px solid #ccc;
border-right-color: #999;
border-bottom-color: #999;
}
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
</style>
</head>
<body>
<div class="dialog">
<h1>页面不存在</h1>
<p>抱歉!您访问的页面出现不存在,请稍后重试或联系管理员。</p>
</div>
</body>
</html>

View File

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>系统错误 (500)</title>
<style type="text/css">
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
div.dialog {
width: 80%;
padding: 1em 4em;
margin: 4em auto 0 auto;
border: 1px solid #ccc;
border-right-color: #999;
border-bottom-color: #999;
}
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
</style>
</head>
<body>
<div class="dialog">
<h1>系统错误</h1>
<p>抱歉!您的操作出现异常,请稍后重试或联系管理员。</p>
<p><a href="javascript:;" onclick="history.back(); return false;">返回上一页</a></p>
</div>
</body>
</html>

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!--ehcache 页面缓存过滤器 -->
<filter>
<filter-name>PageCacheFilter</filter-name>
<filter-class>com.cms.filter.PageCacheFilter</filter-class>
<init-param>
<param-name>cacheName</param-name>
<param-value>PageCacheFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PageCacheFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 权限 -->
<filter>
<filter-name>permissionFilter</filter-name>
<filter-class>com.cms.filter.PermissionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>permissionFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<!-- JFinal -->
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.cms.config.CmsConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 首页 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- session -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>

View File

@ -1,190 +0,0 @@
/* tab 1*/
.double {
line-height: 58px;
}
.title .glyphicon{
padding: 3px;
font-size: 13px;
border-radius: 8px;
color: #fff;
}
.data span.arrowup {
color: #d88918;
}
.data span.arrowdown {
color: #6bb10a;
}
.item-blue .glyphicon{
background-color: #39a9ea;
}
.item-green {
line-height: 58px;
}
.item-green .glyphicon{
background-color: #6bb10a;
line-height: 12px;
}
.item-orange .glyphicon{
background-color:#d88918;
}
.item-red .glyphicon{
background-color: #f14f4f;
}
.chart .chart-box {
margin: 10px;
}
/* 数据表格label */
.content-wrapper .data-type {
/*width: 90%;*/
margin: 10px 5px;
border:1px solid #d4d4d4;
border-radius: 2px;
}
.data-type .title,
.data-type .data {
padding: 3px 12px;
border-top: 1px solid #d4d4d4;
overflow: hidden;
height: 42px;
}
.data-type .title {
line-height: 34px;
border-right: 1px solid #d4d4d4;
}
.data-type .data:last-child{
border-right: 0;
}
.data-type .title{
text-align: center;
background: #ececec;
}
.data-type .data .line{
vertical-align: middle;
overflow: hidden;
padding-bottom: 10px;
padding-top: 10px;
}
/* label行高度 */
.data-type .data > label {
line-height:36px;
}
.data-type .data > .form-group {
line-height:36px;
}
.data-type .data.text {
line-height:36px;
}
/* label行分隔符 */
.data-type .data.border-right {
border-right: 1px solid #d4d4d4;
}
/* 表格双倍高度 */
.data-type .title.rowHeight2x,
.data-type .data.rowHeight2x {
height:84px;
}
.data-type .title.rowHeight2x ,
.data-type .data.rowHeight2x.text {
line-height:78px;
}
/*.data-type .data.rowHeight2x > label {
line-height:78px;
}*/
.data-type .title.editer,
.data-type .data.editer {
height:420px;
}
.data-type .title.editer {
line-height:400px;
}
/*清除parding*/
.padding-clear {
padding-right: 0px;
padding-left: 0px;
}
/* 文件上传 */
/*a upload */
.a-upload {
padding: 4px 10px;
height: 35px;
line-height: 25px;
position: relative;
cursor: pointer;
color: #888;
background: #fafafa;
border: 1px solid #ddd;
border-radius: 4px;
overflow: hidden;
display: inline-block;
*display: inline;
*zoom: 1
}
.a-upload input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
filter: alpha(opacity=0);
cursor: pointer
}
.a-upload:hover {
color: #444;
background: #eee;
border-color: #ccc;
text-decoration: none
}
/**/
#listTable td{
vertical-align: middle;
}
.pic dl {
float: left;
position: relative;
}
.pic dl dd {
position: absolute;
right: 5px;
top: 5px;
cursor: pointer;
background: #666;
color: #fff;
padding: 2px;
}
.pic img {
max-height: 100px;
margin: 5px 0;
margin-right: 5px;
}
/*header*/
.dropdown-menu > li > a {
margin: 0;
padding: 7px 20px;
}
.dropdown-menu {
margin-top: 0px;
}
/* tag */
.labelS {
padding: 5px 10px;
margin-right: 10px;
margin-bottom: 5px;
border: 1px solid;
border-radius: 5px;
float: left;
cursor: pointer;
background-color: rgba(0, 0, 0, 0);
border-color:#6495ED;
}
.labelCheck{
border-color: rgb(100, 149, 237);
background-color: rgba(100, 149, 237, 0.19);
}

View File

@ -1,175 +0,0 @@
@charset "UTF-8";
.flex{ display: -webkit-box; display: -moz-box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; }
#app .layout{ border:1px solid #d7dde4; background:#f5f7f9; position:relative; border-radius:4px; overflow:hidden}
#app .layout-logo{ width:100px; height:30px; background:#5b6270; border-radius:3px; float:left; position:relative; top:15px; left:20px}
#app .layout-copy{ text-align:center; padding:10px 0 20px; color:#9ea7b4}
#app .layout-ceiling{ background:#464c5b; padding:10px 0; overflow:hidden}
#app .layout-ceiling-main{ float:right; margin-right:15px; }
#app .layout-ceiling-main a{ color:#9ba7b5}
#app .layout-breadcrumb{ padding:10px 15px 0}
#app .layout-content{ min-height:200px; margin:15px; overflow:hidden; background:#fff; border-radius:4px; margin-right: 0; }
#app .layout-content-main{ padding-left:10px; position: relative; width: 98.5%; }
#app .layout-copy{ text-align:center; padding:10px 0 20px; color:#9ea7b4}
#app .layout-menu-left{ background:#464c5b}
#app .layout-header{ height:40px; padding-left:15px; background:#fff; box-shadow:0 1px 1px rgba(0,0,0,.1)}
#app .layout-logo-left{ width:90%; height:30px; background:#5b6270; border-radius:3px; margin:15px auto}
#app .m-frame{ position: absolute; background-color: #fff; }
#app .m-tag-item{ display: inline-block}
#app .layout-header{ padding-left:15px; margin-bottom: 5px; }
#table-list{ padding: 25px 25px 0 25px; }
#table-list .mp-search-wrapper{ float: right; margin-left: 12px; }
#table-list .mp-header-wrapper{ overflow: hidden; }
#table-list .mp-header-wrapper h1{ padding-left:15px; float: left; font-size: 18px; line-height: 24px; padding-bottom: 20px; font-weight: 400; color: #464c5b; }
.mp-form{ padding: 20px 20px 20px 0; }
.mp-form .ivu-tree li{ margin: 0; }
.mp-form .ivu-color-picker .ivu-select-dropdown{ left: -38px !important; }
.mp-form .mp-upload{ display: inline-block; }
.mp-form .demo-upload-list{ display: inline-block; width: 60px; height: 60px; text-align: center; line-height: 60px; border: 1px solid transparent; border-radius: 4px; overflow: hidden; background: #fff; position: relative; box-shadow: 0 1px 1px rgba(0,0,0,.2); margin-right: 4px; }
.mp-form .demo-upload-list img{ width: 100%; height: 100%; }
.mp-form .demo-upload-list-cover{ display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; background: rgba(0,0,0,.6); }
.mp-form .demo-upload-list:hover .demo-upload-list-cover{ display: block; }
.mp-form .demo-upload-list-cover i{ color: #fff; font-size: 20px; cursor: pointer; margin: 0 2px; }
[v-cloak]{ display: none}
.mp-form .mp-upload-btn{ width:58px; height:58px; line-height:58px; }
.mp-form .add-submit-item .ivu-btn{ position: fixed; left: 0; bottom: 0; border-radius: 0; }
.frameMove-enter-active{ animation-name: slideInLeft; animation-duration: 0.4s !important; }
.frameMove-leave-active{ animation-name: slideOutRight; animation-duration: 0.4s !important; }
.vertical-center-modal{ display: flex; align-items: center; justify-content: center; }
.vertical-center-modal .ivu-modal{ top: 0; }
.vertical-center-modal .ivu-modal-header{ z-index: 9; position: relative; }
.vertical-center-modal .ivu-modal-close{ z-index: 10; }
.layout-header{ height:40px; background:#fff; box-shadow:0 1px 1px rgba(0,0,0,.1); }
.wechat-reply-wrapper .fl{ float: left; }
.wechat-reply-wrapper .fr{ float: right; }
.wechat-reply-wrapper .clearfix:after{ content:"."; display:block; height:0; visibility:hidden; clear:both; }
.wechat-reply-wrapper .ibox-title{ padding:15px; font-size: 16px; border-bottom: 1px solid #e7eaec; }
.wechat-reply-wrapper .ibox-title p{ border-left: 2px solid #2494f2; text-indent: 8px; }
.wechat-reply-wrapper .ibox-content{ padding: 15px; }
.wechat-reply-wrapper .ibox-content .view-wrapper{ position: relative; width: 317px; background-image:url(../img/mobile_head.png); background-repeat: no-repeat; background-position: left top; background-color: #f5f5f5; }
.wechat-reply-wrapper .ibox-content .view-wrapper .mobile-header{ position: absolute; left: 0; top: 36px; width: 100%; text-align: center; color: #fff; font-size: 16px; }
.wechat-reply-wrapper .ibox-content .view-wrapper .view-body{ margin-top: 65px; background-color: #f5f5f5; height: 500px; }
.wechat-reply-wrapper .view-wrapper .view-body .time-wrapper{ margin-bottom: 10px; text-align: center; }
.wechat-reply-wrapper .view-wrapper .view-body .time-wrapper .time{ display: inline-block; color: #f5f5f5; display: inline-block; color: #f5f5f5; background: rgba(0,0,0,.3); padding: 3px 8px; border-radius: 3px; font-size: 12px; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item{ display: none; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item.show{ display: none; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .avatar{ width: 40px; height: 40px; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .avatar img{ max-width: 100%; height: auto; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .box-content{ position: relative; max-width: 60%; min-height: 40px; margin-left: 15px; padding: 10px; border: 1px solid #ccc; word-break: break-all; word-wrap: break-word; line-height: 1.5; border-radius: 5px; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .box-content .picbox{ max-width: 100%; }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .box-content:before{ content: ''; position: absolute; left: -13px; top: 11px; display: block; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 10px solid #ccc; -webkit-transform: rotate(90deg); transform: rotate(90deg); }
.wechat-reply-wrapper .view-wrapper .view-body .view-item .box-content:after{ content: ''; content: ''; position: absolute; left: -12px; top: 11px; display: block; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 10px solid #f5f5f5; -webkit-transform: rotate(90deg); transform: rotate(90deg); }
.wechat-reply-wrapper .submit{text-align: center;}
/* 图文 */
.view-wrapper .view-body .view-item.news-box{ width: 100%; background-color: #fff; border-radius: 5px; }
.view-wrapper .view-body .view-item .vn-content{ padding:0;}
.view-wrapper .view-body .view-item .vn-content .vn-title{ line-height: 1.5; font-size: 16px; }
.view-wrapper .view-body .view-item .vn-content .vn-time{ padding: 5px 0; font-size: 12px; color: #999; }
.view-wrapper .view-body .view-item .vn-content .vn-picture{ width: 100%; height: 150px; background-size: cover; background-position: center center; border-radius: 5px 5px 0 0;}
.view-wrapper .view-body .view-item .vn-content .vn-picture-info{ line-height: 22px; color: #7b7b7b; padding: 0; display: block; overflow: hidden; word-break: break-all; text-overflow: ellipsis; font-size: 12px; white-space: nowrap; }
.view-wrapper .view-body .view-item .vn-more{ display: block; padding: 10px 0 0; border-top: 1px solid #dddddd; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.view-wrapper .view-body .view-item .vn-content .con-item-box{ position: relative; }
.view-wrapper .view-body .view-item .vn-content .con-item-box .first-title{ width: 100%; height: 44px; line-height: 44px; font-size: 14px; position: absolute; left: 0; bottom: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; /*background: rgba(0,0,0,.8);*/ color: #fff; text-indent: 1em; }
.view-wrapper .view-body .view-item .vn-content .con-item-list{ margin-top: 10px; margin:6px 10px 0 10px; border-top: 1px solid #FBFBFB; }
.view-wrapper .view-body .view-item .vn-content .con-item-list .list-tit-info{ width: 70%; line-height: 1.5; word-wrap:break-word; }
.view-wrapper .view-body .view-item .vn-content .con-item-list .list-pic{ width: 20%; min-height: 50px; background-size: cover; background-position: center center; }
/* 音乐 */
.view-wrapper .view-body .view-item.music-box .box-content{ position: relative; width: 100%; background: #080; color: #fff; border-color: #080; }
.view-wrapper .view-body .view-item.music-box .box-content p{ width: 75%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.view-wrapper .view-body .view-item.music-box .box-content .music-icon{ position: absolute; right: 11px; top: 50%; width: 30px; height: 30px; background: #0a0; text-align: center; line-height: 30px; margin-top: -15px; font-size: 16px; }
.view-wrapper .view-body .view-item.music-box .box-content:after{ display: none; }
.view-wrapper .view-body .view-item.music-box .box-content:before{ border-top: 10px solid #080; }
/* 视频 */
.view-wrapper .view-body .view-item.video-box{ width: 100%; background-color: #fff; border: 1px solid #ccc; border-radius: 5px; }
.view-wrapper .view-body .view-item.video-box .vn-title{ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
/* 右侧控制器 */
.wechat-reply-wrapper .ibox-content .control-wrapper{ position: relative; width: 535px; height: 565px; padding: 0; margin-left: 20px; border: 1px solid #e2e2e2; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-title{ position: absolute; left: 71px; top: -12px; width: auto; padding: 0 10px; font-size: 20px; background-color: #fff; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body{ margin-top: 40px; padding: 0 10px; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .form-group label{ font-weight: normal; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .form-group .tips:after{ content: '*'; color: red; position: absolute; margin-left: 4px; font-weight: bold; line-height: 1.8em; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .form-group .group-item{ position: relative; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .form-group .group-item .file-btn{ position: absolute; right: 15px; top: 0; display: block; width: 66px; border-radius: 6px; cursor: pointer; padding: .5rem; background-color: #18a689; color: #fff; text-align: center; height: 100%; line-height: 23px; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .form-group .group-item textarea{ resize: none; width: 100%; height: 100px; padding: 10px; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .tips-info{ padding-left: 100px; font-size: 12px; color: #737373; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .control-main .control-item{ display: none; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body .control-main .control-item.show{ display: block; }
/* 微信菜单定制 */
.wechat-menu{ position: relative; }
.wechat-menu ul{ padding: 0; }
.wechat-menu .menu-footer{ position: absolute; left:0; bottom: -10px; width: 100%; padding-left: 43px; background: url("../img/mobile_foot.png") no-repeat 0 0; border-top: 1px solid #e7e7eb; }
.wechat-menu .menu-footer span{display: block;}
.wechat-menu .menu-footer .icon-add{ background: url(../img/index.png) 0 0 no-repeat; width: 14px; height: 14px; vertical-align: middle; display: inline-block; margin-top: -2px; border-bottom: none!important; }
.wechat-menu .menu-footer li{ position: relative; -webkit-flex: 1; -moz-flex:1; -ms-flex: 1; flex: 1; height: 50px; line-height: 50px; text-align: center; cursor: pointer; list-style: none; border: 1px solid transparent; border-right: 1px solid #e7e7eb; }
.wechat-menu .menu-footer .icon-sub{ background: url(../img/index.png) 0 -48px no-repeat; width: 7px; height: 7px; vertical-align: middle; display: inline-block; margin-right: 2px; margin-top: -2px; }
.wechat-menu .menu-footer .sub-menu{ position: absolute; border-radius: 3px; border: 1px solid #d0d0d0; display: block; bottom: 60px; width: 100%; background-color: #fafafa; }
.wechat-menu .menu-footer .sub-menu:after{ content: ''; position: absolute; width: 10px; height: 10px; background: #fafafa;-webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); bottom: -5px; border-bottom: 1px solid #d0d0d0; border-right: 1px solid #d0d0d0; left: 50%; margin-left: -5px; }
.wechat-menu .menu-footer .sub-menu li{border-right: 0; border-bottom: 1px solid #d0d0d0;}
.wechat-menu .menu-footer .sub-menu li:last-child{border-bottom: 0;}
.wechat-menu .menu-footer .active{border:1px solid #44b549;}
.wechat-menu .menu-footer .sub-menu li.active{border:1px solid #44b549 !important;}
/* 右侧 */
.wechat-menu .menu-control .popover-title{ padding: 8px 14px; margin: 0; font-size: 14px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; font-weight: 400; }
.wechat-menu .menu-control .popover-title a{ color: #06C; font-size: 12px; }
.wechat-menu .menu-control .tips-txt{line-height: 40px; padding: 0 20px;}
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body.menu-content{ padding: 0 20px; margin-top: 0; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body.menu-content .radio{ display: inline-block !important; width: 45%; }
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body.menu-content .menu-control-box {padding: 0 20px;}
.wechat-reply-wrapper .ibox-content .control-wrapper .control-body.menu-content .menu-control-box .radio{ display: block!important; width: 100%; }
.menu-control-box .item{ display: none; }
.menu-control-box .show{ display: block; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More