├── .gitignore ├── LICENSE ├── README.md ├── pom.xml └── src └── main ├── java └── com │ └── ldl │ └── origami │ ├── common │ └── SystemInterceptor.java │ ├── controller │ ├── entity │ │ ├── AdminController.java │ │ └── UserController.java │ ├── index │ │ └── IndexController.java │ ├── system │ │ ├── LoginController.java │ │ └── RegisterController.java │ └── tutorial │ │ └── TutorialController.java │ ├── dao │ ├── LevelMapper.java │ ├── NewsMapper.java │ ├── TutorialMapper.java │ └── UserMapper.java │ ├── domain │ ├── Level.java │ ├── LevelExample.java │ ├── News.java │ ├── NewsExample.java │ ├── Tutorial.java │ ├── TutorialExample.java │ ├── User.java │ └── UserExample.java │ ├── origamiService │ ├── AdminService.java │ ├── IndexService.java │ ├── LoginService.java │ ├── RegisterService.java │ ├── TutorialService.java │ ├── UserService.java │ └── WebSocketService.java │ ├── util │ ├── Constants.java │ └── ScaleImageUtils.java │ └── websocket │ ├── SystemWebSocketHandler.java │ ├── WebSocketConfig.java │ └── WebSocketHandshakeInterceptor.java ├── resources ├── com │ └── ldl │ │ └── origami │ │ └── mapper │ │ ├── LevelMapper.xml │ │ ├── NewsMapper.xml │ │ ├── TutorialMapper.xml │ │ └── UserMapper.xml ├── generatorConfig.xml ├── log4j.xml ├── root-context.xml ├── servlet-context.xml └── sqlMapConfig.xml └── webapp ├── WEB-INF ├── images │ └── ok.png ├── views │ ├── addTutorialSuccess.jsp │ ├── adminIndex.jsp │ ├── adminLogin.jsp │ ├── adminViewTheContents.jsp │ ├── error.jsp │ ├── index.jsp │ ├── login.jsp │ ├── news │ │ ├── newsContent.jsp │ │ └── viewNews.jsp │ ├── register.jsp │ ├── tutorial │ │ └── addTutorial.jsp │ └── viewTheContents.jsp └── web.xml ├── bootstrap ├── bootstrap.min.css ├── bootstrap.min.js └── user_defined.css ├── fonts ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf └── glyphicons-halflings-regular.woff ├── jcrop ├── css │ ├── Jcrop.gif │ ├── demos.css │ └── jquery.Jcrop.css └── js │ ├── jquery.Jcrop.js │ ├── jquery.Jcrop.min.js │ ├── jquery.color.js │ └── jquery.min.js ├── ueditor ├── dialogs │ ├── background │ │ ├── background.css │ │ ├── background.html │ │ ├── background.js │ │ └── images │ │ │ ├── bg.png │ │ │ └── success.png │ ├── image │ │ ├── image.css │ │ ├── image.html │ │ ├── image.js │ │ └── images │ │ │ ├── alignicon.jpg │ │ │ ├── bg.png │ │ │ ├── icons.gif │ │ │ ├── icons.png │ │ │ ├── image.png │ │ │ ├── progress.png │ │ │ ├── success.gif │ │ │ └── success.png │ ├── internal.js │ ├── link │ │ └── link.html │ ├── preview │ │ └── preview.html │ ├── scrawl │ │ ├── images │ │ │ ├── addimg.png │ │ │ ├── brush.png │ │ │ ├── delimg.png │ │ │ ├── delimgH.png │ │ │ ├── empty.png │ │ │ ├── emptyH.png │ │ │ ├── eraser.png │ │ │ ├── redo.png │ │ │ ├── redoH.png │ │ │ ├── scale.png │ │ │ ├── scaleH.png │ │ │ ├── size.png │ │ │ ├── undo.png │ │ │ └── undoH.png │ │ ├── scrawl.css │ │ ├── scrawl.html │ │ └── scrawl.js │ ├── searchreplace │ │ ├── searchreplace.html │ │ └── searchreplace.js │ └── wordimage │ │ ├── fClipboard_ueditor.swf │ │ ├── imageUploader.swf │ │ ├── tangram.js │ │ ├── wordimage.html │ │ └── wordimage.js ├── jsp │ ├── config.json │ └── controller.jsp ├── lang │ └── zh-cn │ │ ├── images │ │ ├── copy.png │ │ ├── localimage.png │ │ ├── music.png │ │ └── upload.png │ │ └── zh-cn.js ├── themes │ ├── default │ │ ├── css │ │ │ ├── ueditor.css │ │ │ └── ueditor.min.css │ │ ├── dialogbase.css │ │ └── images │ │ │ ├── anchor.gif │ │ │ ├── arrow.png │ │ │ ├── arrow_down.png │ │ │ ├── arrow_up.png │ │ │ ├── button-bg.gif │ │ │ ├── cancelbutton.gif │ │ │ ├── charts.png │ │ │ ├── cursor_h.gif │ │ │ ├── cursor_h.png │ │ │ ├── cursor_v.gif │ │ │ ├── cursor_v.png │ │ │ ├── dialog-title-bg.png │ │ │ ├── filescan.png │ │ │ ├── highlighted.gif │ │ │ ├── icons-all.gif │ │ │ ├── icons.gif │ │ │ ├── icons.png │ │ │ ├── loaderror.png │ │ │ ├── loading.gif │ │ │ ├── lock.gif │ │ │ ├── neweditor-tab-bg.png │ │ │ ├── pagebreak.gif │ │ │ ├── scale.png │ │ │ ├── sortable.png │ │ │ ├── spacer.gif │ │ │ ├── sparator_v.png │ │ │ ├── table-cell-align.png │ │ │ ├── tangram-colorpicker.png │ │ │ ├── toolbar_bg.png │ │ │ ├── unhighlighted.gif │ │ │ ├── upload.png │ │ │ ├── videologo.gif │ │ │ ├── word.gif │ │ │ └── wordpaste.png │ └── iframe.css ├── third-party │ ├── SyntaxHighlighter │ │ ├── shCore.js │ │ └── shCoreDefault.css │ ├── codemirror │ │ ├── codemirror.css │ │ └── codemirror.js │ ├── highcharts │ │ ├── adapters │ │ │ ├── mootools-adapter.js │ │ │ ├── mootools-adapter.src.js │ │ │ ├── prototype-adapter.js │ │ │ ├── prototype-adapter.src.js │ │ │ ├── standalone-framework.js │ │ │ └── standalone-framework.src.js │ │ ├── highcharts-more.js │ │ ├── highcharts-more.src.js │ │ ├── highcharts.js │ │ ├── highcharts.src.js │ │ ├── modules │ │ │ ├── annotations.js │ │ │ ├── annotations.src.js │ │ │ ├── canvas-tools.js │ │ │ ├── canvas-tools.src.js │ │ │ ├── data.js │ │ │ ├── data.src.js │ │ │ ├── drilldown.js │ │ │ ├── drilldown.src.js │ │ │ ├── exporting.js │ │ │ ├── exporting.src.js │ │ │ ├── funnel.js │ │ │ ├── funnel.src.js │ │ │ ├── heatmap.js │ │ │ ├── heatmap.src.js │ │ │ ├── map.js │ │ │ ├── map.src.js │ │ │ ├── no-data-to-display.js │ │ │ └── no-data-to-display.src.js │ │ └── themes │ │ │ ├── dark-blue.js │ │ │ ├── dark-green.js │ │ │ ├── gray.js │ │ │ ├── grid.js │ │ │ └── skies.js │ ├── jquery-1.10.2.js │ ├── jquery-1.10.2.min.js │ ├── jquery-1.10.2.min.map │ ├── video-js │ │ ├── font │ │ │ ├── vjs.eot │ │ │ ├── vjs.svg │ │ │ ├── vjs.ttf │ │ │ └── vjs.woff │ │ ├── video-js.css │ │ ├── video-js.min.css │ │ ├── video-js.swf │ │ ├── video.dev.js │ │ └── video.js │ ├── webuploader │ │ ├── Uploader.swf │ │ ├── webuploader.css │ │ ├── webuploader.custom.js │ │ ├── webuploader.custom.min.js │ │ ├── webuploader.flashonly.js │ │ ├── webuploader.flashonly.min.js │ │ ├── webuploader.html5only.js │ │ ├── webuploader.html5only.min.js │ │ ├── webuploader.js │ │ ├── webuploader.min.js │ │ ├── webuploader.withoutimage.js │ │ └── webuploader.withoutimage.min.js │ └── zeroclipboard │ │ ├── ZeroClipboard.js │ │ ├── ZeroClipboard.min.js │ │ └── ZeroClipboard.swf ├── ueditor.all.js └── ueditor.config.js ├── uploadify ├── bootstrap.min.css ├── bootstrap.min.js ├── jquery.min.js ├── jquery.uploadify.js ├── jquery.uploadify.min.js ├── uploadify-cancel.png ├── uploadify.css └── uploadify.swf └── websocket └── sockjs-0.3.min.js /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.ipr 3 | *.iws 4 | .idea/ 5 | target/ 6 | build/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #Origami 2 | 暂停更新,项目转私有 3 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/common/SystemInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.common; 2 | 3 | import com.ldl.origami.util.Constants; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | import javax.servlet.http.HttpServletResponse; 10 | import javax.servlet.http.HttpSession; 11 | 12 | /** 13 | * @ClassName: SystemInterceptor 14 | * @Description: 验证登录状态 15 | * @author LDL 16 | * @date 2014年4月18日 下午4:16:15 17 | * 18 | */ 19 | public class SystemInterceptor extends HandlerInterceptorAdapter { 20 | 21 | private static final Logger logger = LoggerFactory.getLogger(SystemInterceptor.class); 22 | @Override 23 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 24 | throws Exception { 25 | String urlString = request.getRequestURL().toString(); 26 | logger.debug("当前的URL为: " + urlString); 27 | HttpSession session = request.getSession(false); 28 | if(session!=null){ 29 | 30 | if(session.getAttribute(Constants.SESSION_USERNAME)!=null){ 31 | return true; 32 | }else{ 33 | request.getRequestDispatcher("/login").forward(request, response); 34 | return false; 35 | } 36 | }else{ 37 | request.getRequestDispatcher("/login").forward(request, response); 38 | return false; 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/controller/entity/AdminController.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.controller.entity; 2 | 3 | import com.ldl.origami.domain.News; 4 | import com.ldl.origami.domain.Tutorial; 5 | import com.ldl.origami.origamiService.AdminService; 6 | import com.ldl.origami.util.Constants; 7 | import com.ldl.origami.websocket.SystemWebSocketHandler; 8 | import org.joda.time.DateTime; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.context.annotation.Bean; 13 | import org.springframework.stereotype.Controller; 14 | import org.springframework.web.bind.annotation.RequestMapping; 15 | import org.springframework.web.bind.annotation.ResponseBody; 16 | import org.springframework.web.servlet.ModelAndView; 17 | import org.springframework.web.socket.TextMessage; 18 | 19 | import javax.servlet.http.HttpServletRequest; 20 | import javax.servlet.http.HttpSession; 21 | import java.util.List; 22 | 23 | /** 24 | * 功能描述: 25 | * 作者: LDL 26 | * 创建时间: 2014/7/31 15:17 27 | */ 28 | @Controller 29 | public class AdminController { 30 | 31 | static Logger logger = LoggerFactory.getLogger(AdminController.class); 32 | 33 | @Autowired(required = false) 34 | private AdminService adminService; 35 | 36 | @Bean 37 | public SystemWebSocketHandler systemWebSocketHandler() { 38 | return new SystemWebSocketHandler(); 39 | } 40 | 41 | @RequestMapping("/adminLoginIndex") 42 | public String adminLoginIndex(){ 43 | return "adminLogin"; 44 | } 45 | 46 | /** 47 | * 验证登录 48 | * 49 | * @param request 50 | * @return 51 | */ 52 | @RequestMapping("/checkAdminLogin") 53 | @ResponseBody 54 | public String checkLogin(HttpServletRequest request) { 55 | String result = ""; 56 | String name = request.getParameter("userName"); 57 | String passwd = request.getParameter("passwd"); 58 | result = adminService.checkLogin(name, passwd); 59 | if (result.equals("succ")) { 60 | HttpSession session = request.getSession(); 61 | session.setAttribute(Constants.SESSION_ADMIN, name); 62 | } 63 | return result; 64 | } 65 | /** 66 | * 管理员主页 67 | * 68 | * @param request 69 | * @return 70 | */ 71 | @RequestMapping("/adminIndex") 72 | public ModelAndView adminIndex(HttpServletRequest request) { 73 | List unauditedTutorials = adminService.getAllUnauditedTutorials(); 74 | ModelAndView modelAndView = new ModelAndView(); 75 | modelAndView.addObject("unauditedTutorials", unauditedTutorials); 76 | modelAndView.setViewName("adminIndex"); 77 | return modelAndView; 78 | } 79 | 80 | 81 | /** 82 | * 查看教程内容 83 | * @param request 84 | * @return 85 | */ 86 | @RequestMapping("/adminViewTheContents") 87 | 88 | public ModelAndView adminViewTheContents(HttpServletRequest request) { 89 | 90 | int id = Integer.parseInt(request.getParameter("id")); 91 | Tutorial tutorial = adminService.getTutorialById(id); 92 | ModelAndView modelAndView = new ModelAndView(); 93 | modelAndView.addObject("tutorial", tutorial); 94 | modelAndView.setViewName("adminViewTheContents"); 95 | return modelAndView; 96 | } 97 | 98 | /** 99 | * 审核教程 100 | * @param request 101 | * @return 102 | */ 103 | @RequestMapping("/auditing") 104 | @ResponseBody 105 | public String auditing(HttpServletRequest request){ 106 | String result = "fail"; 107 | int id = Integer.parseInt(request.getParameter("id")); 108 | String reason = request.getParameter("reason"); 109 | String title = request.getParameter("title"); 110 | String username = request.getParameter("username"); 111 | News news = new News(); 112 | DateTime dateTime = DateTime.now(); 113 | news.setNewsTime(dateTime.toDate()); 114 | news.setState(0); 115 | news.setUsername(username); 116 | if(reason.equals("")){ 117 | //审核通过 118 | result = adminService.auditingById(id,"Y"); 119 | news.setNewsTitle("审核通过"); 120 | news.setNewsContent(String.format(Constants.AUDIT_MESSAGE, username, title, reason)); 121 | adminService.addNewsWithUnAudit(news); 122 | }else{ 123 | //审核未通过 124 | news.setNewsTitle("审核未通过"); 125 | news.setNewsContent(String.format(Constants.UN_AUDIT_MESSAGE,username,title,reason)); 126 | result = adminService.addNewsWithUnAudit(news); 127 | result = adminService.auditingById(id, "D"); 128 | } 129 | //SystemServerEndPoint serverEndPoint = new SystemServerEndPoint(); 130 | int unReadNewsCount = adminService.getUnReadNews(username); 131 | systemWebSocketHandler().sendMessageToUser(username, new TextMessage(unReadNewsCount + "")); 132 | return result; 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/controller/entity/UserController.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.controller.entity; 2 | 3 | import com.ldl.origami.domain.News; 4 | import com.ldl.origami.origamiService.UserService; 5 | import com.ldl.origami.util.Constants; 6 | import com.ldl.origami.websocket.SystemWebSocketHandler; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.context.annotation.Bean; 9 | import org.springframework.stereotype.Controller; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestParam; 12 | import org.springframework.web.servlet.ModelAndView; 13 | import org.springframework.web.socket.TextMessage; 14 | 15 | import javax.servlet.http.HttpServletRequest; 16 | import java.util.List; 17 | 18 | /** 19 | * 功能描述:涉及到用户相关操作的Controller 20 | * 作者: LDL 21 | * 创建时间: 2014/8/20 15:07 22 | */ 23 | @Controller 24 | public class UserController { 25 | 26 | 27 | @Autowired 28 | private UserService userService; 29 | 30 | @Bean 31 | public SystemWebSocketHandler systemWebSocketHandler() { 32 | return new SystemWebSocketHandler(); 33 | } 34 | 35 | @RequestMapping("/viewNews") 36 | public ModelAndView viewNews(HttpServletRequest request){ 37 | String userName = (String) request.getSession().getAttribute(Constants.SESSION_USERNAME); 38 | List newses = userService.getNewsByUserName(userName); 39 | ModelAndView modelAndView = new ModelAndView(); 40 | modelAndView.addObject("newses",newses); 41 | modelAndView.setViewName("/news/viewNews"); 42 | return modelAndView; 43 | } 44 | 45 | /** 46 | * 显示消息内容 47 | * @return 48 | */ 49 | @RequestMapping("/newsContent") 50 | public ModelAndView newsContent(@RequestParam("newsID") int newsId,HttpServletRequest request){ 51 | String userName = (String) request.getSession().getAttribute(Constants.SESSION_USERNAME); 52 | userService.updateNewsById(newsId); 53 | News news = userService.getNewsById(newsId); 54 | ModelAndView modelAndView = new ModelAndView(); 55 | modelAndView.addObject("news",news); 56 | modelAndView.setViewName("/news/newsContent"); 57 | 58 | List newses = userService.getNewsByUserName(userName); 59 | systemWebSocketHandler().sendMessageToUser(userName, new TextMessage(newses.size() + "")); 60 | return modelAndView; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/controller/index/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.controller.index; 2 | 3 | import com.ldl.origami.domain.Tutorial; 4 | import com.ldl.origami.domain.User; 5 | import com.ldl.origami.origamiService.IndexService; 6 | import com.ldl.origami.util.Constants; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Controller; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.servlet.ModelAndView; 13 | 14 | import javax.servlet.http.HttpServletRequest; 15 | import javax.servlet.http.HttpSession; 16 | import java.util.HashMap; 17 | import java.util.List; 18 | import java.util.Map; 19 | 20 | /** 21 | * 功能描述: 22 | * 作者: LDL 23 | * 创建时间: 2014/7/16 21:08 24 | */ 25 | @Controller 26 | public class IndexController { 27 | 28 | static Logger logger = LoggerFactory.getLogger(IndexController.class); 29 | @Autowired(required = false) 30 | private IndexService indexService; 31 | 32 | @RequestMapping("/index") 33 | public ModelAndView index(HttpServletRequest request) { 34 | 35 | HttpSession session = request.getSession(); 36 | String username = (String) session.getAttribute(Constants.SESSION_USERNAME); 37 | List tutorials = indexService.getAllTutorialsWithThroughTheAudit(); 38 | Map tutorialsMap = new HashMap(); 39 | for(int i = 0;i tutorialHashMap = (HashMap) session.getAttribute(Constants.SESSION_TUTORIALS); 69 | Tutorial tutorial = tutorialHashMap.get(id); 70 | ModelAndView modelAndView = new ModelAndView(); 71 | modelAndView.addObject("tutorial", tutorial); 72 | modelAndView.setViewName("viewTheContents"); 73 | return modelAndView; 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/controller/system/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.controller.system; 2 | 3 | import com.ldl.origami.origamiService.LoginService; 4 | import com.ldl.origami.util.Constants; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.ResponseBody; 11 | 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpSession; 14 | 15 | /** 16 | * 功能描述: 17 | * 作者: LDL 18 | * 创建时间: 2014/7/15 14:47 19 | */ 20 | @Controller 21 | public class LoginController { 22 | 23 | static Logger logger = LoggerFactory.getLogger(LoginController.class); 24 | 25 | @Autowired(required = false) 26 | private LoginService loginService; 27 | 28 | @RequestMapping(value = "/login") 29 | public String login(){ 30 | return "login"; 31 | } 32 | 33 | /** 34 | * 验证登录 35 | * @param request 36 | * @return 37 | */ 38 | @RequestMapping("/checkLogin") 39 | @ResponseBody 40 | public String checkLogin(HttpServletRequest request){ 41 | String result = ""; 42 | String name = request.getParameter("userName"); 43 | String passwd = request.getParameter("passwd"); 44 | logger.debug("name:"+name); 45 | logger.debug("passwd:"+passwd); 46 | result = loginService.checkLogin(name,passwd); 47 | if(result.equals("succ")){ 48 | HttpSession session = request.getSession(); 49 | session.setAttribute(Constants.SESSION_USERNAME,name); 50 | } 51 | return result; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/dao/LevelMapper.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.dao; 2 | 3 | import com.ldl.origami.domain.Level; 4 | import com.ldl.origami.domain.LevelExample; 5 | import java.util.List; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | public interface LevelMapper { 9 | int countByExample(LevelExample example); 10 | 11 | int deleteByExample(LevelExample example); 12 | 13 | int deleteByPrimaryKey(Integer levelId); 14 | 15 | int insert(Level record); 16 | 17 | int insertSelective(Level record); 18 | 19 | List selectByExample(LevelExample example); 20 | 21 | Level selectByPrimaryKey(Integer levelId); 22 | 23 | int updateByExampleSelective(@Param("record") Level record, @Param("example") LevelExample example); 24 | 25 | int updateByExample(@Param("record") Level record, @Param("example") LevelExample example); 26 | 27 | int updateByPrimaryKeySelective(Level record); 28 | 29 | int updateByPrimaryKey(Level record); 30 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/dao/NewsMapper.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.dao; 2 | 3 | import com.ldl.origami.domain.News; 4 | import com.ldl.origami.domain.NewsExample; 5 | import java.util.List; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | public interface NewsMapper { 9 | int countByExample(NewsExample example); 10 | 11 | int deleteByExample(NewsExample example); 12 | 13 | int deleteByPrimaryKey(Integer newsId); 14 | 15 | int insert(News record); 16 | 17 | int insertSelective(News record); 18 | 19 | List selectByExample(NewsExample example); 20 | 21 | News selectByPrimaryKey(Integer newsId); 22 | 23 | int updateByExampleSelective(@Param("record") News record, @Param("example") NewsExample example); 24 | 25 | int updateByExample(@Param("record") News record, @Param("example") NewsExample example); 26 | 27 | int updateByPrimaryKeySelective(News record); 28 | 29 | int updateByPrimaryKey(News record); 30 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/dao/TutorialMapper.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.dao; 2 | 3 | import com.ldl.origami.domain.Tutorial; 4 | import com.ldl.origami.domain.TutorialExample; 5 | import java.util.List; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | public interface TutorialMapper { 9 | int countByExample(TutorialExample example); 10 | 11 | int deleteByExample(TutorialExample example); 12 | 13 | int deleteByPrimaryKey(Integer id); 14 | 15 | int insert(Tutorial record); 16 | 17 | int insertSelective(Tutorial record); 18 | 19 | List selectByExampleWithBLOBs(TutorialExample example); 20 | 21 | List selectByExample(TutorialExample example); 22 | 23 | Tutorial selectByPrimaryKey(Integer id); 24 | 25 | int updateByExampleSelective(@Param("record") Tutorial record, @Param("example") TutorialExample example); 26 | 27 | int updateByExampleWithBLOBs(@Param("record") Tutorial record, @Param("example") TutorialExample example); 28 | 29 | int updateByExample(@Param("record") Tutorial record, @Param("example") TutorialExample example); 30 | 31 | int updateByPrimaryKeySelective(Tutorial record); 32 | 33 | int updateByPrimaryKeyWithBLOBs(Tutorial record); 34 | 35 | int updateByPrimaryKey(Tutorial record); 36 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/dao/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.dao; 2 | 3 | import com.ldl.origami.domain.User; 4 | import com.ldl.origami.domain.UserExample; 5 | import java.util.List; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | public interface UserMapper { 9 | int countByExample(UserExample example); 10 | 11 | int deleteByExample(UserExample example); 12 | 13 | int deleteByPrimaryKey(Integer userId); 14 | 15 | int insert(User record); 16 | 17 | int insertSelective(User record); 18 | 19 | List selectByExample(UserExample example); 20 | 21 | User selectByPrimaryKey(Integer userId); 22 | 23 | int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example); 24 | 25 | int updateByExample(@Param("record") User record, @Param("example") UserExample example); 26 | 27 | int updateByPrimaryKeySelective(User record); 28 | 29 | int updateByPrimaryKey(User record); 30 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/domain/Level.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.domain; 2 | 3 | public class Level { 4 | private Integer levelId; 5 | 6 | private String levelName; 7 | 8 | public Integer getLevelId() { 9 | return levelId; 10 | } 11 | 12 | public void setLevelId(Integer levelId) { 13 | this.levelId = levelId; 14 | } 15 | 16 | public String getLevelName() { 17 | return levelName; 18 | } 19 | 20 | public void setLevelName(String levelName) { 21 | this.levelName = levelName == null ? null : levelName.trim(); 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/domain/News.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.domain; 2 | 3 | import java.util.Date; 4 | 5 | public class News { 6 | private Integer newsId; 7 | 8 | private String newsContent; 9 | 10 | private String username; 11 | 12 | private Date newsTime; 13 | 14 | private Integer state; 15 | 16 | private String newsTitle; 17 | 18 | public Integer getNewsId() { 19 | return newsId; 20 | } 21 | 22 | public void setNewsId(Integer newsId) { 23 | this.newsId = newsId; 24 | } 25 | 26 | public String getNewsContent() { 27 | return newsContent; 28 | } 29 | 30 | public void setNewsContent(String newsContent) { 31 | this.newsContent = newsContent == null ? null : newsContent.trim(); 32 | } 33 | 34 | public String getUsername() { 35 | return username; 36 | } 37 | 38 | public void setUsername(String username) { 39 | this.username = username == null ? null : username.trim(); 40 | } 41 | 42 | public Date getNewsTime() { 43 | return newsTime; 44 | } 45 | 46 | public void setNewsTime(Date newsTime) { 47 | this.newsTime = newsTime; 48 | } 49 | 50 | public Integer getState() { 51 | return state; 52 | } 53 | 54 | public void setState(Integer state) { 55 | this.state = state; 56 | } 57 | 58 | public String getNewsTitle() { 59 | return newsTitle; 60 | } 61 | 62 | public void setNewsTitle(String newsTitle) { 63 | this.newsTitle = newsTitle == null ? null : newsTitle.trim(); 64 | } 65 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/domain/Tutorial.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.domain; 2 | 3 | import java.util.Date; 4 | 5 | public class Tutorial { 6 | private Integer id; 7 | 8 | private String title; 9 | 10 | private String introduce; 11 | 12 | private String titleImgPath; 13 | 14 | private String auditing; 15 | 16 | private String userName; 17 | 18 | private Date createTime; 19 | 20 | private Date auditTime; 21 | 22 | private String content; 23 | 24 | public Integer getId() { 25 | return id; 26 | } 27 | 28 | public void setId(Integer id) { 29 | this.id = id; 30 | } 31 | 32 | public String getTitle() { 33 | return title; 34 | } 35 | 36 | public void setTitle(String title) { 37 | this.title = title == null ? null : title.trim(); 38 | } 39 | 40 | public String getIntroduce() { 41 | return introduce; 42 | } 43 | 44 | public void setIntroduce(String introduce) { 45 | this.introduce = introduce == null ? null : introduce.trim(); 46 | } 47 | 48 | public String getTitleImgPath() { 49 | return titleImgPath; 50 | } 51 | 52 | public void setTitleImgPath(String titleImgPath) { 53 | this.titleImgPath = titleImgPath == null ? null : titleImgPath.trim(); 54 | } 55 | 56 | public String getAuditing() { 57 | return auditing; 58 | } 59 | 60 | public void setAuditing(String auditing) { 61 | this.auditing = auditing == null ? null : auditing.trim(); 62 | } 63 | 64 | public String getUserName() { 65 | return userName; 66 | } 67 | 68 | public void setUserName(String userName) { 69 | this.userName = userName == null ? null : userName.trim(); 70 | } 71 | 72 | public Date getCreateTime() { 73 | return createTime; 74 | } 75 | 76 | public void setCreateTime(Date createTime) { 77 | this.createTime = createTime; 78 | } 79 | 80 | public Date getAuditTime() { 81 | return auditTime; 82 | } 83 | 84 | public void setAuditTime(Date auditTime) { 85 | this.auditTime = auditTime; 86 | } 87 | 88 | public String getContent() { 89 | return content; 90 | } 91 | 92 | public void setContent(String content) { 93 | this.content = content == null ? null : content.trim(); 94 | } 95 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/domain/User.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.domain; 2 | 3 | public class User { 4 | private Integer userId; 5 | 6 | private String userName; 7 | 8 | private String userPasswd; 9 | 10 | private String userMail; 11 | 12 | private String headimage; 13 | 14 | private Integer integral; 15 | 16 | private String level; 17 | 18 | public Integer getUserId() { 19 | return userId; 20 | } 21 | 22 | public void setUserId(Integer userId) { 23 | this.userId = userId; 24 | } 25 | 26 | public String getUserName() { 27 | return userName; 28 | } 29 | 30 | public void setUserName(String userName) { 31 | this.userName = userName == null ? null : userName.trim(); 32 | } 33 | 34 | public String getUserPasswd() { 35 | return userPasswd; 36 | } 37 | 38 | public void setUserPasswd(String userPasswd) { 39 | this.userPasswd = userPasswd == null ? null : userPasswd.trim(); 40 | } 41 | 42 | public String getUserMail() { 43 | return userMail; 44 | } 45 | 46 | public void setUserMail(String userMail) { 47 | this.userMail = userMail == null ? null : userMail.trim(); 48 | } 49 | 50 | public String getHeadimage() { 51 | return headimage; 52 | } 53 | 54 | public void setHeadimage(String headimage) { 55 | this.headimage = headimage == null ? null : headimage.trim(); 56 | } 57 | 58 | public Integer getIntegral() { 59 | return integral; 60 | } 61 | 62 | public void setIntegral(Integer integral) { 63 | this.integral = integral; 64 | } 65 | 66 | public String getLevel() { 67 | return level; 68 | } 69 | 70 | public void setLevel(String level) { 71 | this.level = level == null ? null : level.trim(); 72 | } 73 | } -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/AdminService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.NewsMapper; 4 | import com.ldl.origami.dao.TutorialMapper; 5 | import com.ldl.origami.dao.UserMapper; 6 | import com.ldl.origami.domain.*; 7 | import org.joda.time.DateTime; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * 功能描述: 18 | * 作者: LDL 19 | * 创建时间: 2014/7/15 15:09 20 | */ 21 | @Service 22 | public class AdminService { 23 | 24 | static Logger logger = LoggerFactory.getLogger(AdminService.class); 25 | 26 | @Autowired(required = false) 27 | private UserMapper userMapper; 28 | 29 | @Autowired(required = false) 30 | private TutorialMapper tutorialMapper; 31 | 32 | @Autowired(required = false) 33 | private NewsMapper newsMapper; 34 | 35 | 36 | /** 37 | * 验证登录 38 | * @param username 39 | * @param passwd 40 | * @return 41 | */ 42 | public String checkLogin(String username,String passwd){ 43 | String result = ""; 44 | if(!username.equals("entity")){ 45 | return "error"; 46 | } 47 | UserExample example = new UserExample(); 48 | example.createCriteria().andUserNameEqualTo(username).andUserPasswdEqualTo(passwd); 49 | try{ 50 | List users = userMapper.selectByExample(example); 51 | if (users != null) { 52 | if(users.size()>0){ 53 | result = "succ"; 54 | }else{ 55 | result = "fail"; 56 | } 57 | }else{ 58 | result = "error"; 59 | } 60 | }catch (Exception e){ 61 | logger.debug(e.getMessage()); 62 | result = "error"; 63 | } 64 | 65 | return result; 66 | } 67 | 68 | /** 69 | * 查询所有未审核的教程 70 | * @return 71 | */ 72 | public List getAllUnauditedTutorials(){ 73 | 74 | List unauditedTutorials = new ArrayList<>(); 75 | TutorialExample example = new TutorialExample(); 76 | example.createCriteria().andAuditingEqualTo("N"); 77 | example.setOrderByClause("CREATE_TIME DESC"); 78 | try{ 79 | unauditedTutorials = tutorialMapper.selectByExample(example); 80 | }catch (Exception e){ 81 | logger.debug(e.getMessage()); 82 | } 83 | 84 | return unauditedTutorials; 85 | 86 | } 87 | 88 | /** 89 | * 根据id查询教程 90 | * @param id 91 | * @return 92 | */ 93 | public Tutorial getTutorialById(int id){ 94 | 95 | TutorialExample example = new TutorialExample(); 96 | Tutorial tutorial = new Tutorial(); 97 | example.createCriteria().andIdEqualTo(id); 98 | try{ 99 | tutorial = tutorialMapper.selectByExampleWithBLOBs(example).get(0); 100 | }catch (Exception e){ 101 | logger.debug(e.getMessage()); 102 | } 103 | 104 | return tutorial; 105 | 106 | } 107 | /** 108 | * 根据id审核教程 109 | * @param id 110 | * @return 111 | */ 112 | public String auditingById(int id,String type){ 113 | 114 | String result = "success"; 115 | TutorialExample example = new TutorialExample(); 116 | Tutorial tutorial = new Tutorial(); 117 | tutorial.setAuditing(type); 118 | DateTime dateTime = DateTime.now(); 119 | tutorial.setAuditTime(dateTime.toDate()); 120 | example.createCriteria().andIdEqualTo(id); 121 | try{ 122 | tutorialMapper.updateByExampleSelective(tutorial,example); 123 | }catch (Exception e){ 124 | result="fail"; 125 | logger.debug(e.getMessage()); 126 | } 127 | 128 | return result; 129 | 130 | } 131 | 132 | /** 133 | * 添加消息 134 | * @param news 135 | * @return 136 | */ 137 | public String addNewsWithUnAudit(News news){ 138 | String result="success"; 139 | 140 | try{ 141 | newsMapper.insert(news); 142 | }catch (Exception e){ 143 | result = "fail"; 144 | logger.debug(e.getMessage()); 145 | } 146 | return result; 147 | } 148 | 149 | /** 150 | * 返回用户的未读消息 151 | * @param userName 152 | * @return 153 | */ 154 | public int getUnReadNews(String userName){ 155 | NewsExample example = new NewsExample(); 156 | example.createCriteria().andUsernameEqualTo(userName).andStateEqualTo(0); 157 | example.or().andUsernameEqualTo("ALL").andStateEqualTo(0); 158 | List news = newsMapper.selectByExample(example); 159 | return news.size(); 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/IndexService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.TutorialMapper; 4 | import com.ldl.origami.dao.UserMapper; 5 | import com.ldl.origami.domain.Tutorial; 6 | import com.ldl.origami.domain.TutorialExample; 7 | import com.ldl.origami.domain.User; 8 | import com.ldl.origami.domain.UserExample; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * 功能描述: 16 | * 作者: LDL 17 | * 创建时间: 2014/7/21 21:43 18 | */ 19 | @Service 20 | public class IndexService { 21 | 22 | @Autowired(required = false) 23 | private TutorialMapper tutorialMapper; 24 | 25 | @Autowired(required = false) 26 | private UserMapper userMapper; 27 | 28 | /** 29 | * 获取通过审核的所有教程 30 | * @return 31 | */ 32 | public List getAllTutorialsWithThroughTheAudit(){ 33 | 34 | TutorialExample example = new TutorialExample(); 35 | example.createCriteria().andAuditingEqualTo("Y"); 36 | example.setOrderByClause("CREATE_TIME DESC"); 37 | List tutorials = tutorialMapper.selectByExampleWithBLOBs(example); 38 | return tutorials; 39 | 40 | } 41 | 42 | 43 | public User getUserByName(String userName){ 44 | UserExample example = new UserExample(); 45 | example.createCriteria().andUserNameEqualTo(userName); 46 | User user = userMapper.selectByExample(example).get(0); 47 | return user; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/LoginService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.UserMapper; 4 | import com.ldl.origami.domain.User; 5 | import com.ldl.origami.domain.UserExample; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * 功能描述: 15 | * 作者: LDL 16 | * 创建时间: 2014/7/15 15:09 17 | */ 18 | @Service 19 | public class LoginService { 20 | 21 | static Logger logger = LoggerFactory.getLogger(LoginService.class); 22 | 23 | @Autowired(required = false) 24 | private UserMapper userMapper; 25 | 26 | /** 27 | * 验证登录 28 | * @param username 29 | * @param passwd 30 | * @return 31 | */ 32 | public String checkLogin(String username,String passwd){ 33 | String result = ""; 34 | UserExample example = new UserExample(); 35 | example.createCriteria().andUserNameEqualTo(username).andUserPasswdEqualTo(passwd); 36 | try{ 37 | List users = userMapper.selectByExample(example); 38 | if (users != null) { 39 | if(users.size()>0){ 40 | result = "succ"; 41 | }else{ 42 | result = "fail"; 43 | } 44 | }else{ 45 | result = "error"; 46 | } 47 | }catch (Exception e){ 48 | logger.debug(e.getMessage()); 49 | result = "error"; 50 | } 51 | 52 | return result; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/RegisterService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.UserMapper; 4 | import com.ldl.origami.domain.User; 5 | import com.ldl.origami.domain.UserExample; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * 功能描述: 15 | * 作者: LDL 16 | * 创建时间: 2014/7/13 12:49 17 | */ 18 | @Service 19 | public class RegisterService { 20 | static Logger logger = LoggerFactory.getLogger(RegisterService.class); 21 | @Autowired(required = false) 22 | private UserMapper userMapper; 23 | 24 | /** 25 | * 保存用户信息 26 | * @param user 27 | * @return 28 | */ 29 | public String saveUser(User user){ 30 | String result = ""; 31 | try { 32 | userMapper.insert(user); 33 | result = "succ"; 34 | }catch (Exception e){ 35 | logger.debug(e.getMessage()); 36 | result = "fail"; 37 | } 38 | return result; 39 | } 40 | 41 | /** 42 | * 检测用户名是否存在 43 | * @param userName 44 | * @return 45 | */ 46 | public String checkUserName(String userName){ 47 | String result = ""; 48 | UserExample example = new UserExample(); 49 | example.createCriteria().andUserNameEqualTo(userName); 50 | try{ 51 | List users = userMapper.selectByExample(example); 52 | if(users != null){ 53 | if (users.size() > 0) { 54 | result = "no"; 55 | } else { 56 | result = "yes"; 57 | } 58 | }else{ 59 | result = "error"; 60 | } 61 | 62 | }catch (Exception e){ 63 | logger.debug(e.getMessage()); 64 | result = "error"; 65 | } 66 | 67 | return result; 68 | } 69 | 70 | /** 71 | * 检测邮箱是否存在 72 | * @param email 73 | * @return 74 | */ 75 | public String checkEmail(String email) { 76 | String result = ""; 77 | UserExample example = new UserExample(); 78 | example.createCriteria().andUserMailEqualTo(email); 79 | try { 80 | List users = userMapper.selectByExample(example); 81 | if(users != null){ 82 | if (users.size() > 0) { 83 | result = "no"; 84 | } else { 85 | result = "yes"; 86 | } 87 | }else { 88 | result = "error"; 89 | } 90 | 91 | } catch (Exception e) { 92 | logger.debug(e.getMessage()); 93 | result = "error"; 94 | } 95 | 96 | return result; 97 | } 98 | 99 | 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/TutorialService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.TutorialMapper; 4 | import com.ldl.origami.domain.Tutorial; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * 功能描述: 11 | * 作者: LDL 12 | * 创建时间: 2014/7/19 20:50 13 | */ 14 | @Service 15 | public class TutorialService { 16 | 17 | static org.slf4j.Logger logger = LoggerFactory.getLogger(TutorialService.class); 18 | @Autowired(required = false) 19 | private TutorialMapper tutorialMapper; 20 | 21 | 22 | 23 | public String saveTutorial(Tutorial tutorial){ 24 | String result = ""; 25 | try{ 26 | tutorialMapper.insert(tutorial); 27 | }catch (Exception e){ 28 | result = "保存教程失败"; 29 | logger.error("保存教程失败:"+e); 30 | } 31 | return result; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/UserService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.NewsMapper; 4 | import com.ldl.origami.domain.News; 5 | import com.ldl.origami.domain.NewsExample; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 功能描述: 13 | * 作者: LDL 14 | * 创建时间: 2014/8/20 15:19 15 | */ 16 | @Service 17 | public class UserService { 18 | 19 | @Autowired(required = false) 20 | private NewsMapper newsMapper; 21 | 22 | /** 23 | * 根据用户名查询未读消息 24 | * @param userName 25 | * @return 26 | */ 27 | public List getNewsByUserName(String userName){ 28 | NewsExample example = new NewsExample(); 29 | example.createCriteria().andUsernameEqualTo(userName).andStateEqualTo(0); 30 | example.or().andUsernameEqualTo("ALL").andStateEqualTo(0); 31 | List newses = newsMapper.selectByExample(example); 32 | return newses; 33 | } 34 | 35 | 36 | /** 37 | * 根据消息ID查询消息 38 | * @param newsId 39 | * @return 40 | */ 41 | public News getNewsById(int newsId){ 42 | News news = newsMapper.selectByPrimaryKey(newsId); 43 | return news; 44 | } 45 | 46 | 47 | /** 48 | * 根据newsId更新消息状态 49 | * @param newsId 50 | */ 51 | public void updateNewsById(int newsId){ 52 | News news = new News(); 53 | news.setNewsId(newsId); 54 | news.setState(1); 55 | newsMapper.updateByPrimaryKeySelective(news); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/origamiService/WebSocketService.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.origamiService; 2 | 3 | import com.ldl.origami.dao.NewsMapper; 4 | import com.ldl.origami.domain.News; 5 | import com.ldl.origami.domain.NewsExample; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 功能描述: 13 | * 作者: LDL 14 | * 创建时间: 2014/8/14 10:11 15 | */ 16 | @Service 17 | public class WebSocketService { 18 | 19 | @Autowired(required = false) 20 | private NewsMapper newsMapper; 21 | 22 | 23 | /** 24 | * 返回用户的未读消息 25 | * 26 | * @param userName 27 | * @return 28 | */ 29 | public int getUnReadNews(String userName) { 30 | NewsExample example = new NewsExample(); 31 | example.createCriteria().andUsernameEqualTo(userName).andStateEqualTo(0); 32 | example.or().andUsernameEqualTo("ALL").andStateEqualTo(0); 33 | List news = newsMapper.selectByExample(example); 34 | return news.size(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/util/Constants.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.util; 2 | 3 | /** 4 | * 功能描述: 5 | * 作者: LDL 6 | * 创建时间: 2014/7/15 22:04 7 | */ 8 | public class Constants { 9 | 10 | public static final String SESSION_USERNAME = "username"; 11 | public static final String SESSION_TUTORIALS = "tutorials"; 12 | public static final String SESSION_ADMIN = "entity"; 13 | public static final String UN_AUDIT_MESSAGE = "尊敬的%s,您提交的教程%s,因%s不能通过审核,请您按要求修改。"; 14 | public static final String AUDIT_MESSAGE = "尊敬的%s,您提交的教程%s,已通过审核。"; 15 | public static final String SESSION_USER = "user"; 16 | public static final String WEBSOCKET_USERNAME = "websocket_username"; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/websocket/SystemWebSocketHandler.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.websocket; 2 | 3 | import com.ldl.origami.origamiService.WebSocketService; 4 | import com.ldl.origami.util.Constants; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.web.socket.*; 9 | 10 | import java.io.IOException; 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * 功能描述: 15 | * 作者: LDL 16 | * 创建时间: 2014/8/18 10:41 17 | */ 18 | public class SystemWebSocketHandler implements WebSocketHandler { 19 | 20 | private static final Logger logger; 21 | 22 | private static final ArrayList users; 23 | 24 | static { 25 | users = new ArrayList<>(); 26 | logger = LoggerFactory.getLogger(SystemWebSocketHandler.class); 27 | } 28 | 29 | @Autowired 30 | private WebSocketService webSocketService; 31 | 32 | @Override 33 | public void afterConnectionEstablished(WebSocketSession session) throws Exception { 34 | logger.debug("connect to the websocket success......"); 35 | users.add(session); 36 | String userName = (String) session.getAttributes().get(Constants.WEBSOCKET_USERNAME); 37 | if(userName!= null){ 38 | //查询未读消息 39 | int count = webSocketService.getUnReadNews((String) session.getAttributes().get(Constants.WEBSOCKET_USERNAME)); 40 | 41 | session.sendMessage(new TextMessage(count + "")); 42 | } 43 | } 44 | 45 | @Override 46 | public void handleMessage(WebSocketSession session, WebSocketMessage message) throws Exception { 47 | 48 | } 49 | 50 | @Override 51 | public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { 52 | if(session.isOpen()){ 53 | session.close(); 54 | } 55 | logger.debug("websocket connection closed......"); 56 | users.remove(session); 57 | } 58 | 59 | @Override 60 | public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { 61 | logger.debug("websocket connection closed......"); 62 | users.remove(session); 63 | } 64 | 65 | @Override 66 | public boolean supportsPartialMessages() { 67 | return false; 68 | } 69 | 70 | /** 71 | * 给所有在线用户发送消息 72 | * 73 | * @param message 74 | */ 75 | public void sendMessageToUsers(TextMessage message) { 76 | for (WebSocketSession user : users) { 77 | try { 78 | if (user.isOpen()) { 79 | user.sendMessage(message); 80 | } 81 | } catch (IOException e) { 82 | e.printStackTrace(); 83 | } 84 | } 85 | } 86 | 87 | /** 88 | * 给某个用户发送消息 89 | * 90 | * @param userName 91 | * @param message 92 | */ 93 | public void sendMessageToUser(String userName, TextMessage message) { 94 | for (WebSocketSession user : users) { 95 | if (user.getAttributes().get(Constants.WEBSOCKET_USERNAME).equals(userName)) { 96 | try { 97 | if (user.isOpen()) { 98 | user.sendMessage(message); 99 | } 100 | } catch (IOException e) { 101 | e.printStackTrace(); 102 | } 103 | break; 104 | } 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/websocket/WebSocketConfig.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.websocket; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.EnableWebMvc; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 7 | import org.springframework.web.socket.WebSocketHandler; 8 | import org.springframework.web.socket.config.annotation.EnableWebSocket; 9 | import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 10 | import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 11 | 12 | /** 13 | * 功能描述: 14 | * 作者: LDL 15 | * 创建时间: 2014/8/18 10:31 16 | */ 17 | @Configuration 18 | @EnableWebMvc 19 | @EnableWebSocket 20 | public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer { 21 | @Override 22 | public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 23 | registry.addHandler(systemWebSocketHandler(),"/webSocketServer").addInterceptors(new WebSocketHandshakeInterceptor()); 24 | 25 | registry.addHandler(systemWebSocketHandler(), "/sockjs/webSocketServer").addInterceptors(new WebSocketHandshakeInterceptor()) 26 | .withSockJS(); 27 | } 28 | 29 | @Bean 30 | public WebSocketHandler systemWebSocketHandler(){ 31 | return new SystemWebSocketHandler(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/ldl/origami/websocket/WebSocketHandshakeInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.ldl.origami.websocket; 2 | 3 | import com.ldl.origami.util.Constants; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.http.server.ServerHttpRequest; 7 | import org.springframework.http.server.ServerHttpResponse; 8 | import org.springframework.http.server.ServletServerHttpRequest; 9 | import org.springframework.web.socket.WebSocketHandler; 10 | import org.springframework.web.socket.server.HandshakeInterceptor; 11 | 12 | import javax.servlet.http.HttpSession; 13 | import java.util.Map; 14 | 15 | /** 16 | * 功能描述: 17 | * 作者: LDL 18 | * 创建时间: 2014/8/18 15:40 19 | */ 20 | public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { 21 | 22 | private static Logger logger = LoggerFactory.getLogger(HandshakeInterceptor.class); 23 | @Override 24 | public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception { 26 | if (request instanceof ServletServerHttpRequest) { 27 | ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; 28 | HttpSession session = servletRequest.getServletRequest().getSession(false); 29 | if (session != null) { 30 | //使用userName区分WebSocketHandler,以便定向发送消息 31 | String userName = (String) session.getAttribute(Constants.SESSION_USERNAME); 32 | attributes.put(Constants.WEBSOCKET_USERNAME,userName); 33 | } 34 | } 35 | return true; 36 | } 37 | 38 | @Override 39 | public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/resources/generatorConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | 33 | 34 | 35 | 36 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 50 | 51 |
52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /src/main/resources/root-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 69 | 70 | 72 | 73 | UTF-8 74 | 75 | 76 | 2048000 77 | 78 | 79 | 4096 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | classpath*:com/ldl/origami/mapper/*.xml 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /src/main/resources/servlet-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/main/resources/sqlMapConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/images/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/WEB-INF/images/ok.png -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/addTutorialSuccess.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2014/7/20 5 | Time: 17:40 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 12 | 13 | 14 | 添加成功,等待审核,返回首页继续添加 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/adminIndex.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 3 | <%-- 4 | Created by IntelliJ IDEA. 5 | User: Administrator 6 | Date: 2014/7/31 7 | Time: 21:04 8 | To change this template use File | Settings | File Templates. 9 | --%> 10 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 11 | 12 | 13 | 14 | 15 | 16 | 47 | 48 |
49 | 50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 72 | 73 | 74 | 75 |
图标标题作者时间审核原因
${tutorial.title}${tutorial.userName}
76 | 77 | 78 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/adminLogin.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2014/7/15 5 | Time: 10:13 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 管理员登录 12 | 13 | 14 | 60 | 61 | 62 |
63 |
64 |
65 | 66 |
67 | 68 | 69 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/adminViewTheContents.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2 | <%-- 3 | Created by IntelliJ IDEA. 4 | User: Administrator 5 | Date: 2014/7/21 6 | Time: 22:09 7 | To change this template use File | Settings | File Templates. 8 | --%> 9 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 10 | 11 | 12 | 13 | 14 | 15 |

${tutorial.title}

16 | 17 |
${tutorial.userName}
18 |
19 |
${tutorial.introduce}
20 |
${tutorial.content}
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/error.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2014/7/21 5 | Time: 21:35 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 12 | 13 | 14 | ${errormsg} 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/login.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2014/7/15 5 | Time: 10:13 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 登录 12 | 13 | 14 | 61 | 62 | 63 |
64 |
65 |
66 | 注册 67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/news/newsContent.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | User: LDL 3 | Date: 2014/8/20 4 | Time: 15:38 5 | --%> 6 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 7 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 消息内容 12 | 13 | 14 | ${news.newsContent} 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/news/viewNews.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | User: LDL 3 | Date: 2014/8/20 4 | Time: 15:38 5 | --%> 6 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 7 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 | 10 | 11 | 我的消息 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
${news.newsTitle}
22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/views/viewTheContents.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Administrator 4 | Date: 2014/7/21 5 | Time: 22:09 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 9 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 10 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 11 | 12 | 13 | 14 | 15 | 16 |

${tutorial.title}

17 |

提交者:${tutorial.userName}   提交时间:

19 |
${tutorial.content}
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | contextConfigLocation 9 | classpath*:root-context.xml 10 | 11 | 12 | 13 | 14 | org.springframework.web.context.ContextLoaderListener 15 | 16 | 17 | 18 | encodingFilter 19 | 20 | org.springframework.web.filter.CharacterEncodingFilter 21 | 22 | true 23 | 24 | encoding 25 | UTF-8 26 | 27 | 28 | forceEncoding 29 | true 30 | 31 | 32 | 33 | encodingFilter 34 | /* 35 | 36 | 37 | 38 | appServlet 39 | org.springframework.web.servlet.DispatcherServlet 40 | 41 | contextConfigLocation 42 | classpath*:servlet-context.xml 43 | 44 | 1 45 | true 46 | 47 | 48 | 49 | appServlet 50 | / 51 | 52 | 53 | 54 | DruidStatView 55 | com.alibaba.druid.support.http.StatViewServlet 56 | 57 | 58 | DruidStatView 59 | /druid/* 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/user_defined.css: -------------------------------------------------------------------------------- 1 | /*鼠标悬停与内容显示*/ 2 | .navbar .nav > li .dropdown-menu { 3 | margin: 0; 4 | } 5 | 6 | .navbar .nav > li:hover .dropdown-menu { 7 | display: block; 8 | } 9 | 10 | /*修改内容显示*/ 11 | .media > .pull-left { 12 | margin-right: 5px; 13 | } 14 | 15 | .media-heading { 16 | margin: 0 5px 3px; 17 | } 18 | 19 | .container { 20 | padding-right: 60px; 21 | padding-left: 80px; 22 | margin-right: auto; 23 | margin-left: auto; 24 | } 25 | 26 | .row { 27 | margin-right: -100px; 28 | margin-left: 10px; 29 | } 30 | 31 | .col-xs-4 { 32 | position: relative; 33 | min-height: 1px; 34 | padding-right: 15px; 35 | padding-left: 80px; 36 | } 37 | /*导航栏底色*/ 38 | .navbar-default { 39 | background-color: #66C8B1; 40 | } -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/webapp/jcrop/css/Jcrop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/jcrop/css/Jcrop.gif -------------------------------------------------------------------------------- /src/main/webapp/jcrop/css/demos.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | margin: 0; 4 | padding: 0; 5 | background: #eee; 6 | font-family: Calibri, sans-serif; 7 | } 8 | 9 | .article h1 10 | { 11 | color: #333; 12 | font-size: 2.2em; 13 | margin-top: .2em; 14 | } 15 | 16 | .jcropper-holder { border: 1px black solid; } 17 | 18 | #outer { text-align: center; } 19 | 20 | .jcExample 21 | { 22 | text-align: left; 23 | background: white; 24 | width: 700px; 25 | font-size: 80%; 26 | margin: 1.5em auto 2em auto; 27 | border: 1px #999 solid; 28 | padding: 1em 2em 2em; 29 | } 30 | 31 | .jcExample .article { width: 565px; } 32 | 33 | form { margin: 1.5em 0; } 34 | form.coords label { margin-right: 1em; font-weight: bold; color: #900; } 35 | form.coords input { width: 3em; } 36 | 37 | -------------------------------------------------------------------------------- /src/main/webapp/jcrop/css/jquery.Jcrop.css: -------------------------------------------------------------------------------- 1 | /* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */ 2 | .jcrop-holder { text-align: left; } 3 | 4 | .jcrop-vline, .jcrop-hline 5 | { 6 | font-size: 0px; 7 | position: absolute; 8 | background: white url('Jcrop.gif') top left repeat; 9 | } 10 | .jcrop-vline { height: 100%; width: 1px !important; } 11 | .jcrop-hline { width: 100%; height: 1px !important; } 12 | .jcrop-vline.right { right: 0px; } 13 | .jcrop-hline.bottom { bottom: 0px; } 14 | .jcrop-handle { 15 | font-size: 1px; 16 | width: 7px !important; 17 | height: 7px !important; 18 | border: 1px #eee solid; 19 | background-color: #333; 20 | } 21 | 22 | .jcrop-tracker { width: 100%; height: 100%; } 23 | 24 | .custom .jcrop-vline, 25 | .custom .jcrop-hline 26 | { 27 | background: yellow; 28 | } 29 | .custom .jcrop-handle 30 | { 31 | border-color: black; 32 | background-color: #C7BB00; 33 | -moz-border-radius: 3px; 34 | -webkit-border-radius: 3px; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/webapp/jcrop/js/jquery.color.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Color Animations 3 | * Copyright 2007 John Resig 4 | * Released under the MIT and GPL licenses. 5 | */ 6 | 7 | (function(jQuery){ 8 | 9 | // We override the animation for all of these color styles 10 | jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){ 11 | jQuery.fx.step[attr] = function(fx){ 12 | if ( fx.state == 0 ) { 13 | fx.start = getColor( fx.elem, attr ); 14 | fx.end = getRGB( fx.end ); 15 | } 16 | 17 | fx.elem.style[attr] = "rgb(" + [ 18 | Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), 19 | Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), 20 | Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0) 21 | ].join(",") + ")"; 22 | } 23 | }); 24 | 25 | // Color Conversion functions from highlightFade 26 | // By Blair Mitchelmore 27 | // http://jquery.offput.ca/highlightFade/ 28 | 29 | // Parse strings looking for color tuples [255,255,255] 30 | function getRGB(color) { 31 | var result; 32 | 33 | // Check if we're already dealing with an array of colors 34 | if ( color && color.constructor == Array && color.length == 3 ) 35 | return color; 36 | 37 | // Look for rgb(num,num,num) 38 | if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) 39 | return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])]; 40 | 41 | // Look for rgb(num%,num%,num%) 42 | if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) 43 | return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55]; 44 | 45 | // Look for #a0b1c2 46 | if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) 47 | return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)]; 48 | 49 | // Look for #fff 50 | if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) 51 | return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)]; 52 | 53 | // Otherwise, we're most likely dealing with a named color 54 | return colors[jQuery.trim(color).toLowerCase()]; 55 | } 56 | 57 | function getColor(elem, attr) { 58 | var color; 59 | 60 | do { 61 | color = jQuery.curCSS(elem, attr); 62 | 63 | // Keep going until we find an element that has color, or we hit the body 64 | if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") ) 65 | break; 66 | 67 | attr = "backgroundColor"; 68 | } while ( elem = elem.parentNode ); 69 | 70 | return getRGB(color); 71 | }; 72 | 73 | // Some named colors to work with 74 | // From Interface by Stefan Petre 75 | // http://interface.eyecon.ro/ 76 | 77 | var colors = { 78 | aqua:[0,255,255], 79 | azure:[240,255,255], 80 | beige:[245,245,220], 81 | black:[0,0,0], 82 | blue:[0,0,255], 83 | brown:[165,42,42], 84 | cyan:[0,255,255], 85 | darkblue:[0,0,139], 86 | darkcyan:[0,139,139], 87 | darkgrey:[169,169,169], 88 | darkgreen:[0,100,0], 89 | darkkhaki:[189,183,107], 90 | darkmagenta:[139,0,139], 91 | darkolivegreen:[85,107,47], 92 | darkorange:[255,140,0], 93 | darkorchid:[153,50,204], 94 | darkred:[139,0,0], 95 | darksalmon:[233,150,122], 96 | darkviolet:[148,0,211], 97 | fuchsia:[255,0,255], 98 | gold:[255,215,0], 99 | green:[0,128,0], 100 | indigo:[75,0,130], 101 | khaki:[240,230,140], 102 | lightblue:[173,216,230], 103 | lightcyan:[224,255,255], 104 | lightgreen:[144,238,144], 105 | lightgrey:[211,211,211], 106 | lightpink:[255,182,193], 107 | lightyellow:[255,255,224], 108 | lime:[0,255,0], 109 | magenta:[255,0,255], 110 | maroon:[128,0,0], 111 | navy:[0,0,128], 112 | olive:[128,128,0], 113 | orange:[255,165,0], 114 | pink:[255,192,203], 115 | purple:[128,0,128], 116 | violet:[128,0,128], 117 | red:[255,0,0], 118 | silver:[192,192,192], 119 | white:[255,255,255], 120 | yellow:[255,255,0] 121 | }; 122 | 123 | })(jQuery); 124 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/background/background.css: -------------------------------------------------------------------------------- 1 | .wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative} 2 | .tabbody{height:225px;} 3 | .tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;} 4 | .tabbody .focus { display: block;} 5 | 6 | body{font-size: 12px;color: #888;overflow: hidden;} 7 | input,label{vertical-align:middle} 8 | .clear{clear: both;} 9 | .pl{padding-left: 18px;padding-left: 23px\9;} 10 | 11 | #imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;} 12 | #imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;} 13 | #imageList img {cursor: pointer;border: 2px solid white;} 14 | 15 | .bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;} 16 | .content div{margin: 10px 0 10px 5px;} 17 | .content .iptradio{margin: 0px 5px 5px 0px;} 18 | .txt{width:280px;} 19 | 20 | .wrapcolor{height: 19px;} 21 | div.color{float: left;margin: 0;} 22 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;} 23 | div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;} 24 | #custom input{height: 15px;min-height: 15px;width:20px;} 25 | #repeatType{width:100px;} 26 | 27 | 28 | /* 图片管理样式 */ 29 | #imgManager { 30 | width: 100%; 31 | height: 225px; 32 | } 33 | #imgManager #imageList{ 34 | width: 100%; 35 | overflow-x: hidden; 36 | overflow-y: auto; 37 | } 38 | #imgManager ul { 39 | display: block; 40 | list-style: none; 41 | margin: 0; 42 | padding: 0; 43 | } 44 | #imgManager li { 45 | float: left; 46 | display: block; 47 | list-style: none; 48 | padding: 0; 49 | width: 113px; 50 | height: 113px; 51 | margin: 9px 0 0 19px; 52 | background-color: #eee; 53 | overflow: hidden; 54 | cursor: pointer; 55 | position: relative; 56 | } 57 | #imgManager li.clearFloat { 58 | float: none; 59 | clear: both; 60 | display: block; 61 | width:0; 62 | height:0; 63 | margin: 0; 64 | padding: 0; 65 | } 66 | #imgManager li img { 67 | cursor: pointer; 68 | } 69 | #imgManager li .icon { 70 | cursor: pointer; 71 | width: 113px; 72 | height: 113px; 73 | position: absolute; 74 | top: 0; 75 | left: 0; 76 | z-index: 2; 77 | border: 0; 78 | background-repeat: no-repeat; 79 | } 80 | #imgManager li .icon:hover { 81 | width: 107px; 82 | height: 107px; 83 | border: 3px solid #1094fa; 84 | } 85 | #imgManager li.selected .icon { 86 | background-image: url(images/success.png); 87 | background-position: 75px 75px; 88 | } 89 | #imgManager li.selected .icon:hover { 90 | width: 107px; 91 | height: 107px; 92 | border: 3px solid #1094fa; 93 | background-position: 72px 72px; 94 | } -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/background/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 |
14 |
15 |
16 |
17 | 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 | : 26 |
27 |
28 |
29 |
30 |
31 | 32 |
33 |
34 | : 41 |
42 |
43 | :x:px  y:px 44 |
45 |
46 |
47 | 48 |
49 |
50 |
51 |
52 |
53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/background/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/background/images/bg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/background/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/background/images/success.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/alignicon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/alignicon.jpg -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/bg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/icons.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/icons.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/image.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/progress.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/success.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/image/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/image/images/success.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/internal.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var parent = window.parent; 3 | //dialog对象 4 | dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )]; 5 | //当前打开dialog的编辑器实例 6 | editor = dialog.editor; 7 | 8 | UE = parent.UE; 9 | 10 | domUtils = UE.dom.domUtils; 11 | 12 | utils = UE.utils; 13 | 14 | browser = UE.browser; 15 | 16 | ajax = UE.ajax; 17 | 18 | $G = function ( id ) { 19 | return document.getElementById( id ) 20 | }; 21 | //focus元素 22 | $focus = function ( node ) { 23 | setTimeout( function () { 24 | if ( browser.ie ) { 25 | var r = node.createTextRange(); 26 | r.collapse( false ); 27 | r.select(); 28 | } else { 29 | node.focus() 30 | } 31 | }, 0 ) 32 | }; 33 | utils.loadFile(document,{ 34 | href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(), 35 | tag:"link", 36 | type:"text/css", 37 | rel:"stylesheet" 38 | }); 39 | lang = editor.getLang(dialog.className.split( "-" )[2]); 40 | if(lang){ 41 | domUtils.on(window,'load',function () { 42 | 43 | var langImgPath = editor.options.langPath + editor.options.lang + "/images/"; 44 | //针对静态资源 45 | for ( var i in lang["static"] ) { 46 | var dom = $G( i ); 47 | if(!dom) continue; 48 | var tagName = dom.tagName, 49 | content = lang["static"][i]; 50 | if(content.src){ 51 | //clone 52 | content = utils.extend({},content,false); 53 | content.src = langImgPath + content.src; 54 | } 55 | if(content.style){ 56 | content = utils.extend({},content,false); 57 | content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath) 58 | } 59 | switch ( tagName.toLowerCase() ) { 60 | case "var": 61 | dom.parentNode.replaceChild( document.createTextNode( content ), dom ); 62 | break; 63 | case "select": 64 | var ops = dom.options; 65 | for ( var j = 0, oj; oj = ops[j]; ) { 66 | oj.innerHTML = content.options[j++]; 67 | } 68 | for ( var p in content ) { 69 | p != "options" && dom.setAttribute( p, content[p] ); 70 | } 71 | break; 72 | default : 73 | domUtils.setAttributes( dom, content); 74 | } 75 | } 76 | } ); 77 | } 78 | 79 | 80 | })(); 81 | 82 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/link/link.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 |
30 | 31 | 32 |
38 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/preview/preview.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 |
29 | 30 | 40 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/addimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/addimg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/brush.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/delimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/delimg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/delimgH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/delimgH.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/empty.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/emptyH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/emptyH.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/eraser.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/redo.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/redoH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/redoH.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/scale.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/scaleH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/scaleH.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/size.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/undo.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/images/undoH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/scrawl/images/undoH.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/scrawl.css: -------------------------------------------------------------------------------- 1 | /*common 2 | */ 3 | body{margin: 0;} 4 | table{width:100%;} 5 | table td{padding:2px 4px;vertical-align: middle;} 6 | a{text-decoration: none;} 7 | em{font-style: normal;} 8 | .border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} 9 | /*module 10 | */ 11 | .main{margin: 8px;overflow: hidden;} 12 | 13 | .hot{float:left;height:335px;} 14 | .drawBoard{position: relative; cursor: crosshair;} 15 | .brushBorad{position: absolute;left:0;top:0;z-index: 998;} 16 | .picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} 17 | .operateBar{margin-top:10px;font-size:12px;text-align: center;} 18 | .operateBar span{margin-left: 10px;} 19 | 20 | .drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} 21 | .colorBar{margin-top:10px;font-size: 12px;text-align: center;} 22 | .colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} 23 | .sectionBar{margin-top:15px;font-size: 12px;text-align: center;} 24 | .sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} 25 | .size1{background: url('images/size.png') 1px center no-repeat ;} 26 | .size2{background: url('images/size.png') -10px center no-repeat;} 27 | .size3{background: url('images/size.png') -22px center no-repeat;} 28 | .size4{background: url('images/size.png') -35px center no-repeat;} 29 | 30 | .addImgH{position: relative;} 31 | .addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} 32 | .addImgH_form input{width: 100%;} 33 | /*scrawl遮罩层 34 | */ 35 | .maskLayerNull{display: none;} 36 | .maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; 37 | background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} 38 | /*btn state 39 | */ 40 | .previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} 41 | .previousStepH .text{color:#888;cursor:pointer;} 42 | .previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} 43 | .previousStep .text{color:#ccc;cursor:default;} 44 | 45 | .nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} 46 | .nextStepH .text{color:#888;cursor:pointer;} 47 | .nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} 48 | .nextStep .text{color:#ccc;cursor:default;} 49 | 50 | .clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} 51 | .clearBoardH .text{color:#888;cursor:pointer;} 52 | .clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} 53 | .clearBoard .text{color:#ccc;cursor:default;} 54 | 55 | .scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} 56 | .scaleBoardH .text{color:#888;cursor:pointer;} 57 | .scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} 58 | .scaleBoard .text{color:#ccc;cursor:default;} 59 | 60 | .removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} 61 | .removeImgH .text{color:#888;cursor:pointer;} 62 | .removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} 63 | .removeImg .text{color:#ccc;cursor:default;} 64 | 65 | .addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} 66 | .addImgH .text{color:#888;cursor:pointer;} 67 | /*icon 68 | */ 69 | .brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} 70 | .eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/scrawl/scrawl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |
14 | 15 |
16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 |
39 | 40 | 1 41 | 3 42 | 5 43 | 7 44 |
45 |
46 | 47 | 1 48 | 3 49 | 5 50 | 7 51 |
52 |
53 |
54 | 55 | 56 |
57 | 59 |
60 | 61 |
62 |
63 |
64 | 65 | 66 | 67 | 68 |
69 |
70 |
71 |
72 | 73 | 74 | 94 | 95 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/searchreplace/searchreplace.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 16 | 17 | 18 |
19 | 23 |
24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | 45 | 46 | 47 | 50 | 51 | 52 | 55 | 56 |
:
37 | 38 |
42 | 43 | 44 |
48 |   49 |
53 | 54 |
57 |
58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 77 | 78 | 79 | 85 | 86 | 87 | 90 | 91 | 92 | 95 | 96 |
:
:
75 | 76 |
80 | 81 | 82 | 83 | 84 |
88 |   89 |
93 | 94 |
97 |
98 |
99 |
100 | 101 | 102 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/searchreplace/searchreplace.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created with JetBrains PhpStorm. 3 | * User: xuheng 4 | * Date: 12-9-26 5 | * Time: 下午12:29 6 | * To change this template use File | Settings | File Templates. 7 | */ 8 | 9 | //清空上次查选的痕迹 10 | editor.firstForSR = 0; 11 | editor.currentRangeForSR = null; 12 | //给tab注册切换事件 13 | /** 14 | * tab点击处理事件 15 | * @param tabHeads 16 | * @param tabBodys 17 | * @param obj 18 | */ 19 | function clickHandler( tabHeads,tabBodys,obj ) { 20 | //head样式更改 21 | for ( var k = 0, len = tabHeads.length; k < len; k++ ) { 22 | tabHeads[k].className = ""; 23 | } 24 | obj.className = "focus"; 25 | //body显隐 26 | var tabSrc = obj.getAttribute( "tabSrc" ); 27 | for ( var j = 0, length = tabBodys.length; j < length; j++ ) { 28 | var body = tabBodys[j], 29 | id = body.getAttribute( "id" ); 30 | if ( id != tabSrc ) { 31 | body.style.zIndex = 1; 32 | } else { 33 | body.style.zIndex = 200; 34 | } 35 | } 36 | 37 | } 38 | 39 | /** 40 | * TAB切换 41 | * @param tabParentId tab的父节点ID或者对象本身 42 | */ 43 | function switchTab( tabParentId ) { 44 | var tabElements = $G( tabParentId ).children, 45 | tabHeads = tabElements[0].children, 46 | tabBodys = tabElements[1].children; 47 | 48 | for ( var i = 0, length = tabHeads.length; i < length; i++ ) { 49 | var head = tabHeads[i]; 50 | if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); 51 | head.onclick = function () { 52 | clickHandler(tabHeads,tabBodys,this); 53 | } 54 | } 55 | } 56 | $G('searchtab').onmousedown = function(){ 57 | $G('search-msg').innerHTML = ''; 58 | $G('replace-msg').innerHTML = '' 59 | } 60 | //是否区分大小写 61 | function getMatchCase(id) { 62 | return $G(id).checked ? true : false; 63 | } 64 | //查找 65 | $G("nextFindBtn").onclick = function (txt, dir, mcase) { 66 | var findtxt = $G("findtxt").value, obj; 67 | if (!findtxt) { 68 | return false; 69 | } 70 | obj = { 71 | searchStr:findtxt, 72 | dir:1, 73 | casesensitive:getMatchCase("matchCase") 74 | }; 75 | if (!frCommond(obj)) { 76 | var bk = editor.selection.getRange().createBookmark(); 77 | $G('search-msg').innerHTML = lang.getEnd; 78 | editor.selection.getRange().moveToBookmark(bk).select(); 79 | 80 | 81 | } 82 | }; 83 | $G("nextReplaceBtn").onclick = function (txt, dir, mcase) { 84 | var findtxt = $G("findtxt1").value, obj; 85 | if (!findtxt) { 86 | return false; 87 | } 88 | obj = { 89 | searchStr:findtxt, 90 | dir:1, 91 | casesensitive:getMatchCase("matchCase1") 92 | }; 93 | frCommond(obj); 94 | }; 95 | $G("preFindBtn").onclick = function (txt, dir, mcase) { 96 | var findtxt = $G("findtxt").value, obj; 97 | if (!findtxt) { 98 | return false; 99 | } 100 | obj = { 101 | searchStr:findtxt, 102 | dir:-1, 103 | casesensitive:getMatchCase("matchCase") 104 | }; 105 | if (!frCommond(obj)) { 106 | $G('search-msg').innerHTML = lang.getStart; 107 | } 108 | }; 109 | $G("preReplaceBtn").onclick = function (txt, dir, mcase) { 110 | var findtxt = $G("findtxt1").value, obj; 111 | if (!findtxt) { 112 | return false; 113 | } 114 | obj = { 115 | searchStr:findtxt, 116 | dir:-1, 117 | casesensitive:getMatchCase("matchCase1") 118 | }; 119 | frCommond(obj); 120 | }; 121 | //替换 122 | $G("repalceBtn").onclick = function () { 123 | var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, 124 | replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); 125 | if (!findtxt) { 126 | return false; 127 | } 128 | if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { 129 | return false; 130 | } 131 | obj = { 132 | searchStr:findtxt, 133 | dir:1, 134 | casesensitive:getMatchCase("matchCase1"), 135 | replaceStr:replacetxt 136 | }; 137 | frCommond(obj); 138 | }; 139 | //全部替换 140 | $G("repalceAllBtn").onclick = function () { 141 | var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, 142 | replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); 143 | if (!findtxt) { 144 | return false; 145 | } 146 | if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { 147 | return false; 148 | } 149 | obj = { 150 | searchStr:findtxt, 151 | casesensitive:getMatchCase("matchCase1"), 152 | replaceStr:replacetxt, 153 | all:true 154 | }; 155 | var num = frCommond(obj); 156 | if (num) { 157 | $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); 158 | } 159 | }; 160 | //执行 161 | var frCommond = function (obj) { 162 | return editor.execCommand("searchreplace", obj); 163 | }; 164 | switchTab("searchtab"); -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/wordimage/fClipboard_ueditor.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/wordimage/fClipboard_ueditor.swf -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/wordimage/imageUploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/dialogs/wordimage/imageUploader.swf -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/wordimage/wordimage.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 16 | 17 | 18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 |
28 | : 29 |
30 |
31 |
32 | 33 | 34 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/dialogs/wordimage/wordimage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by JetBrains PhpStorm. 3 | * User: taoqili 4 | * Date: 12-1-30 5 | * Time: 下午12:50 6 | * To change this template use File | Settings | File Templates. 7 | */ 8 | 9 | 10 | 11 | var wordImage = {}; 12 | //(function(){ 13 | var g = baidu.g, 14 | flashObj,flashContainer; 15 | 16 | wordImage.init = function(opt, callbacks) { 17 | showLocalPath("localPath"); 18 | //createCopyButton("clipboard","localPath"); 19 | createFlashUploader(opt, callbacks); 20 | addUploadListener(); 21 | addOkListener(); 22 | }; 23 | 24 | function hideFlash(){ 25 | flashObj = null; 26 | flashContainer.innerHTML = ""; 27 | } 28 | function addOkListener() { 29 | dialog.onok = function() { 30 | if (!imageUrls.length) return; 31 | var urlPrefix = editor.getOpt('imageUrlPrefix'), 32 | images = domUtils.getElementsByTagName(editor.document,"img"); 33 | editor.fireEvent('saveScene'); 34 | for (var i = 0,img; img = images[i++];) { 35 | var src = img.getAttribute("word_img"); 36 | if (!src) continue; 37 | for (var j = 0,url; url = imageUrls[j++];) { 38 | if (src.indexOf(url.original.replace(" ","")) != -1) { 39 | img.src = urlPrefix + url.url; 40 | img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 41 | img.setAttribute("title",url.title); 42 | domUtils.removeAttributes(img, ["word_img","style","width","height"]); 43 | editor.fireEvent("selectionchange"); 44 | break; 45 | } 46 | } 47 | } 48 | editor.fireEvent('saveScene'); 49 | hideFlash(); 50 | }; 51 | dialog.oncancel = function(){ 52 | hideFlash(); 53 | } 54 | } 55 | 56 | /** 57 | * 绑定开始上传事件 58 | */ 59 | function addUploadListener() { 60 | g("upload").onclick = function () { 61 | flashObj.upload(); 62 | this.style.display = "none"; 63 | }; 64 | } 65 | 66 | function showLocalPath(id) { 67 | //单张编辑 68 | var img = editor.selection.getRange().getClosedNode(); 69 | var images = editor.execCommand('wordimage'); 70 | if(images.length==1 || img && img.tagName == 'IMG'){ 71 | g(id).value = images[0]; 72 | return; 73 | } 74 | var path = images[0]; 75 | var leftSlashIndex = path.lastIndexOf("/")||0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种 76 | rightSlashIndex = path.lastIndexOf("\\")||0, 77 | separater = leftSlashIndex > rightSlashIndex ? "/":"\\" ; 78 | 79 | path = path.substring(0, path.lastIndexOf(separater)+1); 80 | g(id).value = path; 81 | } 82 | 83 | function createFlashUploader(opt, callbacks) { 84 | //由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容 85 | var i18n = utils.extend({},lang.flashI18n); 86 | //处理图片资源地址的编码,补全等问题 87 | for(var i in i18n){ 88 | if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){ 89 | i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]); 90 | } 91 | } 92 | opt = utils.extend(opt,i18n,false); 93 | var option = { 94 | createOptions:{ 95 | id:'flash', 96 | url:opt.flashUrl, 97 | width:opt.width, 98 | height:opt.height, 99 | errorMessage:lang.flashError, 100 | wmode:browser.safari ? 'transparent' : 'window', 101 | ver:'10.0.0', 102 | vars:opt, 103 | container:opt.container 104 | } 105 | }; 106 | 107 | option = extendProperty(callbacks, option); 108 | flashObj = new baidu.flash.imageUploader(option); 109 | flashContainer = $G(opt.container); 110 | } 111 | 112 | function extendProperty(fromObj, toObj) { 113 | for (var i in fromObj) { 114 | if (!toObj[i]) { 115 | toObj[i] = fromObj[i]; 116 | } 117 | } 118 | return toObj; 119 | } 120 | 121 | //})(); 122 | 123 | function getPasteData(id) { 124 | baidu.g("msg").innerHTML = lang.copySuccess + "
"; 125 | setTimeout(function() { 126 | baidu.g("msg").innerHTML = ""; 127 | }, 5000); 128 | return baidu.g(id).value; 129 | } 130 | 131 | function createCopyButton(id, dataFrom) { 132 | baidu.swf.create({ 133 | id:"copyFlash", 134 | url:"fClipboard_ueditor.swf", 135 | width:"58", 136 | height:"25", 137 | errorMessage:"", 138 | bgColor:"#CBCBCB", 139 | wmode:"transparent", 140 | ver:"10.0.0", 141 | vars:{ 142 | tid:dataFrom 143 | } 144 | }, id 145 | ); 146 | 147 | var clipboard = baidu.swf.getMovie("copyFlash"); 148 | var clipinterval = setInterval(function() { 149 | if (clipboard && clipboard.flashInit) { 150 | clearInterval(clipinterval); 151 | clipboard.setHandCursor(true); 152 | clipboard.setContentFuncName("getPasteData"); 153 | //clipboard.setMEFuncName("mouseEventHandler"); 154 | } 155 | }, 500); 156 | } 157 | createCopyButton("clipboard", "localPath"); -------------------------------------------------------------------------------- /src/main/webapp/ueditor/jsp/config.json: -------------------------------------------------------------------------------- 1 | /* 前后端通信相关的配置,注释只允许使用多行方式 */ 2 | { 3 | /* 上传图片配置项 */ 4 | "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ 5 | "imageFieldName": "upfile", /* 提交的图片表单名称 */ 6 | "imageMaxSize": 2048000, /* 上传大小限制,单位B */ 7 | "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ 8 | "imageCompressEnable": true, /* 是否压缩图片,默认是true */ 9 | "imageCompressBorder": 400, /* 图片压缩最长边限制 */ 10 | "imageInsertAlign": "none", /* 插入的图片浮动方式 */ 11 | "imageUrlPrefix": "", /* 图片访问路径前缀 */ 12 | "imagePathFormat": "upload/image/{yyyy}-{mm}-{dd}-{time}{rand:6}" /* 上传保存路径,可以自定义保存路径和文件名格式 */ 13 | /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ 14 | /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ 15 | /* {time} 会替换成时间戳 */ 16 | /* {yyyy} 会替换成四位年份 */ 17 | /* {yy} 会替换成两位年份 */ 18 | /* {mm} 会替换成两位月份 */ 19 | /* {dd} 会替换成两位日期 */ 20 | /* {hh} 会替换成两位小时 */ 21 | /* {ii} 会替换成两位分钟 */ 22 | /* {ss} 会替换成两位秒 */ 23 | /* 非法字符 \ : * ? " < > | */ 24 | /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ 25 | 26 | /* 涂鸦图片上传配置项 */ 27 | /*"scrawlActionName": "uploadscrawl", *//* 执行上传涂鸦的action名称 *//* 28 | "scrawlFieldName": "upfile", *//* 提交的图片表单名称 *//* 29 | "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", *//* 上传保存路径,可以自定义保存路径和文件名格式 *//* 30 | "scrawlMaxSize": 2048000, *//* 上传大小限制,单位B *//* 31 | "scrawlUrlPrefix": "", *//* 图片访问路径前缀 *//* 32 | "scrawlInsertAlign": "none",*/ 33 | 34 | /* 截图工具上传 */ 35 | /* "snapscreenActionName": "uploadimage", *//* 执行上传截图的action名称 *//* 36 | "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", *//* 上传保存路径,可以自定义保存路径和文件名格式 *//* 37 | "snapscreenUrlPrefix": "", *//* 图片访问路径前缀 *//* 38 | "snapscreenInsertAlign": "none", *//* 插入的图片浮动方式 */ 39 | 40 | /* 抓取远程图片配置 */ 41 | /*"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], 42 | "catcherActionName": "catchimage", *//* 执行抓取远程图片的action名称 *//* 43 | "catcherFieldName": "source", *//* 提交的图片列表表单名称 *//* 44 | "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", *//* 上传保存路径,可以自定义保存路径和文件名格式 *//* 45 | "catcherUrlPrefix": "", *//* 图片访问路径前缀 *//* 46 | "catcherMaxSize": 2048000, *//* 上传大小限制,单位B *//* 47 | "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], *//* 抓取图片格式显示 */ 48 | 49 | /* 上传视频配置 */ 50 | /*"videoActionName": "uploadvideo", *//* 执行上传视频的action名称 *//* 51 | "videoFieldName": "upfile", *//* 提交的视频表单名称 *//* 52 | "videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", *//* 上传保存路径,可以自定义保存路径和文件名格式 *//* 53 | "videoUrlPrefix": "", *//* 视频访问路径前缀 *//* 54 | "videoMaxSize": 102400000, *//* 上传大小限制,单位B,默认100MB *//* 55 | "videoAllowFiles": [ 56 | ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", 57 | ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], *//* 上传视频格式显示 */ 58 | 59 | /* 上传文件配置 */ 60 | /*"fileActionName": "uploadfile", *//* controller里,执行上传视频的action名称 *//* 61 | "fileFieldName": "upfile", *//* 提交的文件表单名称 *//* 62 | "filePathFormat": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", *//* 上传保存路径,可以自定义保存路径和文件名格式 *//* 63 | "fileUrlPrefix": "", *//* 文件访问路径前缀 *//* 64 | "fileMaxSize": 51200000, *//* 上传大小限制,单位B,默认50MB *//* 65 | "fileAllowFiles": [ 66 | ".png", ".jpg", ".jpeg", ".gif", ".bmp", 67 | ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", 68 | ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", 69 | ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", 70 | ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" 71 | ], *//* 上传文件格式显示 *//* 72 | 73 | *//* 列出指定目录下的图片 *//* 74 | "imageManagerActionName": "listimage", *//* 执行图片管理的action名称 *//* 75 | "imageManagerListPath": "/ueditor/jsp/upload/image/", *//* 指定要列出图片的目录 *//* 76 | "imageManagerListSize": 20, *//* 每次列出文件数量 *//* 77 | "imageManagerUrlPrefix": "", *//* 图片访问路径前缀 *//* 78 | "imageManagerInsertAlign": "none", *//* 插入的图片浮动方式 *//* 79 | "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], *//* 列出的文件类型 *//* 80 | 81 | *//* 列出指定目录下的文件 *//* 82 | "fileManagerActionName": "listfile", *//* 执行文件管理的action名称 *//* 83 | "fileManagerListPath": "/ueditor/jsp/upload/file/", *//* 指定要列出文件的目录 *//* 84 | "fileManagerUrlPrefix": "", *//* 文件访问路径前缀 *//* 85 | "fileManagerListSize": 20, *//* 每次列出文件数量 *//* 86 | "fileManagerAllowFiles": [ 87 | ".png", ".jpg", ".jpeg", ".gif", ".bmp", 88 | ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", 89 | ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", 90 | ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", 91 | ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" 92 | ] *//* 列出的文件类型 */ 93 | 94 | } -------------------------------------------------------------------------------- /src/main/webapp/ueditor/jsp/controller.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | import="com.baidu.ueditor.ActionEnter" 3 | pageEncoding="UTF-8"%> 4 | <%@ page trimDirectiveWhitespaces="true" %> 5 | <% 6 | 7 | request.setCharacterEncoding( "utf-8" ); 8 | response.setHeader("Content-Type" , "text/html"); 9 | 10 | String rootPath = application.getRealPath( "/" ); 11 | out.write( new ActionEnter( request, rootPath ).exec() ); 12 | 13 | %> -------------------------------------------------------------------------------- /src/main/webapp/ueditor/lang/zh-cn/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/lang/zh-cn/images/copy.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/lang/zh-cn/images/localimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/lang/zh-cn/images/localimage.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/lang/zh-cn/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/lang/zh-cn/images/music.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/lang/zh-cn/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/lang/zh-cn/images/upload.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/dialogbase.css: -------------------------------------------------------------------------------- 1 | /*弹出对话框页面样式组件 2 | */ 3 | 4 | /*reset 5 | */ 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, font, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td { 15 | margin: 0; 16 | padding: 0; 17 | outline: 0; 18 | font-size: 100%; 19 | } 20 | 21 | body { 22 | line-height: 1; 23 | } 24 | 25 | ol, ul { 26 | list-style: none; 27 | } 28 | 29 | blockquote, q { 30 | quotes: none; 31 | } 32 | 33 | ins { 34 | text-decoration: none; 35 | } 36 | 37 | del { 38 | text-decoration: line-through; 39 | } 40 | 41 | table { 42 | border-collapse: collapse; 43 | border-spacing: 0; 44 | } 45 | 46 | /*module 47 | */ 48 | body { 49 | background-color: #fff; 50 | font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; 51 | color: #646464; 52 | } 53 | 54 | /*tab*/ 55 | .tabhead { 56 | position: relative; 57 | z-index: 10; 58 | } 59 | 60 | .tabhead span { 61 | display: inline-block; 62 | padding: 0 5px; 63 | height: 30px; 64 | border: 1px solid #ccc; 65 | background: url("images/dialog-title-bg.png") repeat-x; 66 | text-align: center; 67 | line-height: 30px; 68 | cursor: pointer; 69 | *margin-right: 5px; 70 | } 71 | 72 | .tabhead span.focus { 73 | height: 31px; 74 | border-bottom: none; 75 | background: #fff; 76 | } 77 | 78 | .tabbody { 79 | position: relative; 80 | top: -1px; 81 | margin: 0 auto; 82 | border: 1px solid #ccc; 83 | } 84 | 85 | /*button*/ 86 | a.button { 87 | display: block; 88 | text-align: center; 89 | line-height: 24px; 90 | text-decoration: none; 91 | height: 24px; 92 | width: 95px; 93 | border: 0; 94 | color: #838383; 95 | background: url(../../themes/default/images/icons-all.gif) no-repeat; 96 | } 97 | 98 | a.button:hover { 99 | background-position: 0 -30px; 100 | } -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/anchor.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/arrow.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/arrow_down.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/arrow_up.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/button-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/button-bg.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/cancelbutton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/cancelbutton.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/charts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/charts.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/cursor_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/cursor_h.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/cursor_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/cursor_h.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/cursor_v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/cursor_v.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/cursor_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/cursor_v.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/dialog-title-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/dialog-title-bg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/filescan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/filescan.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/highlighted.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/highlighted.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/icons-all.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/icons-all.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/icons.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/icons.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/loaderror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/loaderror.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/loading.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/lock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/lock.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/neweditor-tab-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/neweditor-tab-bg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/pagebreak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/pagebreak.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/scale.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/sortable.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/spacer.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/sparator_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/sparator_v.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/table-cell-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/table-cell-align.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/tangram-colorpicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/tangram-colorpicker.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/toolbar_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/toolbar_bg.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/unhighlighted.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/unhighlighted.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/upload.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/videologo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/videologo.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/word.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/word.gif -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/default/images/wordpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/themes/default/images/wordpaste.png -------------------------------------------------------------------------------- /src/main/webapp/ueditor/themes/iframe.css: -------------------------------------------------------------------------------- 1 | /*可以在这里添加你自己的css*/ 2 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/codemirror/codemirror.css: -------------------------------------------------------------------------------- 1 | .CodeMirror { 2 | line-height: 1em; 3 | font-family: monospace; 4 | } 5 | 6 | .CodeMirror-scroll { 7 | overflow: auto; 8 | height: 300px; 9 | /* This is needed to prevent an IE[67] bug where the scrolled content 10 | is visible outside of the scrolling box. */ 11 | position: relative; 12 | } 13 | 14 | .CodeMirror-gutter { 15 | position: absolute; left: 0; top: 0; 16 | z-index: 10; 17 | background-color: #f7f7f7; 18 | border-right: 1px solid #eee; 19 | min-width: 2em; 20 | height: 100%; 21 | } 22 | .CodeMirror-gutter-text { 23 | color: #aaa; 24 | text-align: right; 25 | padding: .4em .2em .4em .4em; 26 | white-space: pre !important; 27 | } 28 | .CodeMirror-lines { 29 | padding: .4em; 30 | } 31 | 32 | .CodeMirror pre { 33 | -moz-border-radius: 0; 34 | -webkit-border-radius: 0; 35 | -o-border-radius: 0; 36 | border-radius: 0; 37 | border-width: 0; margin: 0; padding: 0; background: transparent; 38 | font-family: inherit; 39 | font-size: inherit; 40 | padding: 0; margin: 0; 41 | white-space: pre; 42 | word-wrap: normal; 43 | } 44 | 45 | .CodeMirror-wrap pre { 46 | word-wrap: break-word; 47 | white-space: pre-wrap; 48 | } 49 | .CodeMirror-wrap .CodeMirror-scroll { 50 | overflow-x: hidden; 51 | } 52 | 53 | .CodeMirror textarea { 54 | outline: none !important; 55 | } 56 | 57 | .CodeMirror pre.CodeMirror-cursor { 58 | z-index: 10; 59 | position: absolute; 60 | visibility: hidden; 61 | border-left: 1px solid black; 62 | } 63 | .CodeMirror-focused pre.CodeMirror-cursor { 64 | visibility: visible; 65 | } 66 | 67 | span.CodeMirror-selected { background: #d9d9d9; } 68 | .CodeMirror-focused span.CodeMirror-selected { background: #d2dcf8; } 69 | 70 | .CodeMirror-searching {background: #ffa;} 71 | 72 | /* Default theme */ 73 | 74 | .cm-s-default span.cm-keyword {color: #708;} 75 | .cm-s-default span.cm-atom {color: #219;} 76 | .cm-s-default span.cm-number {color: #164;} 77 | .cm-s-default span.cm-def {color: #00f;} 78 | .cm-s-default span.cm-variable {color: black;} 79 | .cm-s-default span.cm-variable-2 {color: #05a;} 80 | .cm-s-default span.cm-variable-3 {color: #085;} 81 | .cm-s-default span.cm-property {color: black;} 82 | .cm-s-default span.cm-operator {color: black;} 83 | .cm-s-default span.cm-comment {color: #a50;} 84 | .cm-s-default span.cm-string {color: #a11;} 85 | .cm-s-default span.cm-string-2 {color: #f50;} 86 | .cm-s-default span.cm-meta {color: #555;} 87 | .cm-s-default span.cm-error {color: #f00;} 88 | .cm-s-default span.cm-qualifier {color: #555;} 89 | .cm-s-default span.cm-builtin {color: #30a;} 90 | .cm-s-default span.cm-bracket {color: #cc7;} 91 | .cm-s-default span.cm-tag {color: #170;} 92 | .cm-s-default span.cm-attribute {color: #00c;} 93 | .cm-s-default span.cm-header {color: #a0a;} 94 | .cm-s-default span.cm-quote {color: #090;} 95 | .cm-s-default span.cm-hr {color: #999;} 96 | .cm-s-default span.cm-link {color: #00c;} 97 | 98 | span.cm-header, span.cm-strong {font-weight: bold;} 99 | span.cm-em {font-style: italic;} 100 | span.cm-emstrong {font-style: italic; font-weight: bold;} 101 | span.cm-link {text-decoration: underline;} 102 | 103 | div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} 104 | div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} 105 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/adapters/mootools-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | MooTools adapter 4 | 5 | (c) 2010-2013 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(){var e=window,h=document,f=e.MooTools.version.substring(0,3),i=f==="1.2"||f==="1.1",j=i||f==="1.3",g=e.$extend||function(){return Object.append.apply(Object,arguments)};e.HighchartsAdapter={init:function(a){var b=Fx.prototype,c=b.start,d=Fx.Morph.prototype,e=d.compute;b.start=function(b,d){var e=this.element;if(b.d)this.paths=a.init(e,e.d,this.toD);c.apply(this,arguments);return this};d.compute=function(b,c,d){var f=this.paths;if(f)this.element.attr("d",a.step(f[0],f[1],d,this.toD));else return e.apply(this, 10 | arguments)}},adapterRun:function(a,b){if(b==="width"||b==="height")return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=h.getElementsByTagName("head")[0],d=h.createElement("script");d.type="text/javascript";d.src=a;d.onload=b;c.appendChild(d)},animate:function(a,b,c){var d=a.attr,f=c&&c.complete;if(d&&!a.setStyle)a.getStyle=a.attr,a.setStyle=function(){var a=arguments;this.attr.call(this,a[0],a[1][0])},a.$family=function(){return!0};e.HighchartsAdapter.stop(a);c=new Fx.Morph(d?a:$(a), 11 | g({transition:Fx.Transitions.Quad.easeInOut},c));if(d)c.element=a;if(b.d)c.toD=b.d;f&&c.addEvent("complete",f);c.start(b);a.fx=c},each:function(a,b){return i?$each(a,b):Array.each(a,b)},map:function(a,b){return a.map(b)},grep:function(a,b){return a.filter(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){a=a.getPosition();return{left:a.x,top:a.y}},extendWithEvents:function(a){a.addEvent||(a.nodeName?$(a):g(a,new Events))},addEvent:function(a,b,c){typeof b==="string"&&(b=== 12 | "unload"&&(b="beforeunload"),e.HighchartsAdapter.extendWithEvents(a),a.addEvent(b,c))},removeEvent:function(a,b,c){typeof a!=="string"&&a.addEvent&&(b?(b==="unload"&&(b="beforeunload"),c?a.removeEvent(b,c):a.removeEvents&&a.removeEvents(b)):a.removeEvents())},fireEvent:function(a,b,c,d){b={type:b,target:a};b=j?new Event(b):new DOMEvent(b);b=g(b,c);if(!b.target&&b.event)b.target=b.event.target;b.preventDefault=function(){d=null};a.fireEvent&&a.fireEvent(b.type,b);d&&d(b)},washMouseEvent:function(a){if(a.page)a.pageX= 13 | a.page.x,a.pageY=a.page.y;return a},stop:function(a){a.fx&&a.fx.cancel()}}})(); 14 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/adapters/prototype-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Prototype adapter 4 | 5 | @author Michael Nelson, Torstein Hønsi. 6 | 7 | Feel free to use and modify this script. 8 | Highcharts license: www.highcharts.com/license. 9 | */ 10 | var HighchartsAdapter=function(){var f=typeof Effect!=="undefined";return{init:function(a){if(f)Effect.HighchartsTransition=Class.create(Effect.Base,{initialize:function(b,c,d,g){var e;this.element=b;this.key=c;e=b.attr?b.attr(c):$(b).getStyle(c);if(c==="d")this.paths=a.init(b,b.d,d),this.toD=d,e=0,d=1;this.start(Object.extend(g||{},{from:e,to:d,attribute:c}))},setup:function(){HighchartsAdapter._extend(this.element);if(!this.element._highchart_animation)this.element._highchart_animation={};this.element._highchart_animation[this.key]= 11 | this},update:function(b){var c=this.paths,d=this.element;c&&(b=a.step(c[0],c[1],b,this.toD));d.attr?d.element&&d.attr(this.options.attribute,b):(c={},c[this.options.attribute]=b,$(d).setStyle(c))},finish:function(){this.element&&this.element._highchart_animation&&delete this.element._highchart_animation[this.key]}})},adapterRun:function(a,b){return parseInt($(a).getStyle(b),10)},getScript:function(a,b){var c=$$("head")[0];c&&c.appendChild((new Element("script",{type:"text/javascript",src:a})).observe("load", 12 | b))},addNS:function(a){var b=/^(?:click|mouse(?:down|up|over|move|out))$/;return/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/.test(a)||b.test(a)?a:"h:"+a},addEvent:function(a,b,c){a.addEventListener||a.attachEvent?Event.observe($(a),HighchartsAdapter.addNS(b),c):(HighchartsAdapter._extend(a),a._highcharts_observe(b,c))},animate:function(a,b,c){var d,c=c||{};c.delay=0;c.duration=(c.duration||500)/1E3;c.afterFinish=c.complete;if(f)for(d in b)new Effect.HighchartsTransition($(a), 13 | d,b[d],c);else{if(a.attr)for(d in b)a.attr(d,b[d]);c.complete&&c.complete()}a.attr||$(a).setStyle(b)},stop:function(a){var b;if(a._highcharts_extended&&a._highchart_animation)for(b in a._highchart_animation)a._highchart_animation[b].cancel()},each:function(a,b){$A(a).each(b)},inArray:function(a,b,c){return b?b.indexOf(a,c):-1},offset:function(a){return $(a).cumulativeOffset()},fireEvent:function(a,b,c,d){a.fire?a.fire(HighchartsAdapter.addNS(b),c):a._highcharts_extended&&(c=c||{},a._highcharts_fire(b, 14 | c));c&&c.defaultPrevented&&(d=null);d&&d(c)},removeEvent:function(a,b,c){$(a).stopObserving&&(b&&(b=HighchartsAdapter.addNS(b)),$(a).stopObserving(b,c));window===a?Event.stopObserving(a,b,c):(HighchartsAdapter._extend(a),a._highcharts_stop_observing(b,c))},washMouseEvent:function(a){return a},grep:function(a,b){return a.findAll(b)},map:function(a,b){return a.map(b)},_extend:function(a){a._highcharts_extended||Object.extend(a,{_highchart_events:{},_highchart_animation:null,_highcharts_extended:!0, 15 | _highcharts_observe:function(b,a){this._highchart_events[b]=[this._highchart_events[b],a].compact().flatten()},_highcharts_stop_observing:function(b,a){b?a?this._highchart_events[b]=[this._highchart_events[b]].compact().flatten().without(a):delete this._highchart_events[b]:this._highchart_events={}},_highcharts_fire:function(a,c){var d=this;(this._highchart_events[a]||[]).each(function(a){if(!c.stopped)c.preventDefault=function(){c.defaultPrevented=!0},c.target=d,a.bind(this)(c)===!1&&c.preventDefault()}.bind(this))}})}}}(); 16 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/adapters/standalone-framework.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | 4 | Standalone Highcharts Framework 5 | 6 | License: MIT License 7 | */ 8 | var HighchartsAdapter=function(){function o(c){function a(a,b,d){a.removeEventListener(b,d,!1)}function d(a,b,d){d=a.HCProxiedMethods[d.toString()];a.detachEvent("on"+b,d)}function b(b,c){var f=b.HCEvents,i,g,k,j;if(b.removeEventListener)i=a;else if(b.attachEvent)i=d;else return;c?(g={},g[c]=!0):g=f;for(j in g)if(f[j])for(k=f[j].length;k--;)i(b,j,f[j][k])}c.HCExtended||Highcharts.extend(c,{HCExtended:!0,HCEvents:{},bind:function(b,a){var d=this,c=this.HCEvents,g;if(d.addEventListener)d.addEventListener(b, 9 | a,!1);else if(d.attachEvent){g=function(b){a.call(d,b)};if(!d.HCProxiedMethods)d.HCProxiedMethods={};d.HCProxiedMethods[a.toString()]=g;d.attachEvent("on"+b,g)}c[b]===r&&(c[b]=[]);c[b].push(a)},unbind:function(c,h){var f,i;c?(f=this.HCEvents[c]||[],h?(i=HighchartsAdapter.inArray(h,f),i>-1&&(f.splice(i,1),this.HCEvents[c]=f),this.removeEventListener?a(this,c,h):this.attachEvent&&d(this,c,h)):(b(this,c),this.HCEvents[c]=[])):(b(this),this.HCEvents={})},trigger:function(b,a){var d=this.HCEvents[b]|| 10 | [],c=d.length,g,k,j;k=function(){a.defaultPrevented=!0};for(g=0;g=b.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();a=this.options.curAnim[this.prop]= 14 | !0;for(e in b.curAnim)b.curAnim[e]!==!0&&(a=!1);a&&b.complete&&b.complete.call(this.elem);b=!1}else e=c-this.startTime,this.state=e/b.duration,this.pos=b.easing(e,0,1,b.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update(),b=!0;return b}};this.animate=function(a,d,b){var e,h="",f,i,g;a.stopAnimation=!1;if(typeof b!=="object"||b===null)e=arguments,b={duration:e[2],easing:e[3],complete:e[4]};if(typeof b.duration!=="number")b.duration=400;b.easing=Math[b.easing]||Math.easeInOutSine; 15 | b.curAnim=Highcharts.extend({},d);for(g in d)i=new n(a,b,g),f=null,g==="d"?(i.paths=c.init(a,a.d,d.d),i.toD=d.d,e=0,f=1):a.attr?e=a.attr(g):(e=parseFloat(HighchartsAdapter._getStyle(a,g))||0,g!=="opacity"&&(h="px")),f||(f=parseFloat(d[g])),i.custom(e,f,h)}},_getStyle:function(c,a){return window.getComputedStyle(c).getPropertyValue(a)},getScript:function(c,a){var d=l.getElementsByTagName("head")[0],b=l.createElement("script");b.type="text/javascript";b.src=c;b.onload=a;d.appendChild(b)},inArray:function(c, 16 | a){return a.indexOf?a.indexOf(c):p.indexOf.call(a,c)},adapterRun:function(c,a){return parseInt(HighchartsAdapter._getStyle(c,a),10)},grep:function(c,a){return p.filter.call(c,a)},map:function(c,a){for(var d=[],b=0,e=c.length;b-1?b[g]=h.translate(b[g]):u(g,["height","y"])>-1&&(b[g]=v.translate(b[g]));b.width&&(b.width-=h.toPixels(0)-h.left);b.x&&(b.x+=h.minPixelPadding);if(a.shape.type==="path"){g=b.d;o=e;for(var r=j,s=g.length,k=0;k-1&&d.splice(c,1);z(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,d){t(this.options,a);this.linkObjects();this.render(d)}, 6 | linkObjects:function(){var a=this.chart,d=this.linkedObject,c=d&&(d.id||d.options.id),b=this.options.linkedTo;if(n(b)){if(!n(d)||b!==c)this.linkedObject=a.get(b)}else this.linkedObject=null}};t(s.prototype,{annotations:{add:function(a,d){var c=this.allItems,b=this.chart,f,e;Object.prototype.toString.call(a)==="[object Array]"||(a=[a]);for(e=a.length;e--;)f=new B(b,a[e]),c.push(f),f.render(d)},redraw:function(){z(this.allItems,function(a){a.redraw()})}}});s.prototype.callbacks.push(function(a){var d= 7 | a.options.annotations,c;c=a.renderer.g("annotations");c.attr({zIndex:7});c.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=c;Object.prototype.toString.call(d)==="[object Array]"&&d.length>0&&a.annotations.add(a.options.annotations);i.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(Highcharts,HighchartsAdapter); 8 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/data.js: -------------------------------------------------------------------------------- 1 | /* 2 | Data plugin for Highcharts 3 | 4 | (c) 2012-2013 Torstein Hønsi 5 | Last revision 2013-06-07 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(h){var k=h.each,m=function(b,a){this.init(b,a)};h.extend(m.prototype,{init:function(b,a){this.options=b;this.chartOptions=a;this.columns=b.columns||this.rowsToColumns(b.rows)||[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var b=this.chartOptions,a=b&&b.chart&&b.chart.type,c=[];k(b&&b.series||[],function(b){c.push((h.seriesTypes[b.type||a||"line"].prototype.pointArrayMap||[0]).length)});this.valueCount= 10 | {global:(h.seriesTypes[a||"line"].prototype.pointArrayMap||[0]).length,individual:c}},dataFound:function(){this.parseTypes();this.findHeaderRow();this.parsed();this.complete()},parseCSV:function(){var b=this,a=this.options,c=a.csv,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g=0;c&&(c=c.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),k(c,function(c,h){var n=b.trim(c),p=n.indexOf("#")===0;h>=f&&h<=i&&!p&&n!==""&& 11 | (n=c.split(a.itemDelimiter||","),k(n,function(b,a){a>=j&&a<=e&&(d[a-j]||(d[a-j]=[]),d[a-j][g]=b)}),g+=1)}),this.dataFound())},parseTable:function(){var b=this.options,a=b.table,c=this.columns,d=b.startRow||0,f=b.endRow||Number.MAX_VALUE,i=b.startColumn||0,j=b.endColumn||Number.MAX_VALUE,e;a&&(typeof a==="string"&&(a=document.getElementById(a)),k(a.getElementsByTagName("tr"),function(a,b){e=0;b>=d&&b<=f&&k(a.childNodes,function(a){if((a.tagName==="TD"||a.tagName==="TH")&&e>=i&&e<=j)c[e]||(c[e]=[]), 12 | c[e][b-d]=a.innerHTML,e+=1})}),this.dataFound())},parseGoogleSpreadsheet:function(){var b=this,a=this.options,c=a.googleSpreadsheetKey,d=this.columns,f=a.startRow||0,i=a.endRow||Number.MAX_VALUE,j=a.startColumn||0,e=a.endColumn||Number.MAX_VALUE,g,h;c&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+c+"/"+(a.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(a){var a=a.feed.entry,c,k=a.length,m=0,o=0,l;for(l=0;l=j&&l<=e)d[l-j]=[],d[l-j].length=Math.min(o,i-f);for(l=0;l=j&&h<=e&&g>=f&&g<=i)d[h-j][g-f]=c.content.$t;b.dataFound()})},findHeaderRow:function(){k(this.columns,function(){});this.headerRow=0},trim:function(b){return typeof b==="string"?b.replace(/^\s+|\s+$/g,""):b},parseTypes:function(){for(var b=this.columns,a=b.length,c,d,f,i;a--;)for(c=b[a].length;c--;)d=b[a][c],f=parseFloat(d),i=this.trim(d), 14 | i==f?(b[a][c]=f,f>31536E6?b[a].isDatetime=!0:b[a].isNumeric=!0):(d=this.parseDate(d),a===0&&typeof d==="number"&&!isNaN(d)?(b[a][c]=d,b[a].isDatetime=!0):b[a][c]=i===""?null:i)},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(b){return Date.UTC(+b[1],b[2]-1,+b[3])}}},parseDate:function(b){var a=this.options.parseDate,c,d,f;a&&(c=a(b));if(typeof b==="string")for(d in this.dateFormats)a=this.dateFormats[d],(f=b.match(a.regex))&&(c=a.parser(f));return c},rowsToColumns:function(b){var a, 15 | c,d,f,i;if(b){i=[];c=b.length;for(a=0;a1&&(a=b.shift(),this.headerRow===0&&a.shift(),a.isDatetime?c="datetime":a.isNumeric||(c="category"));for(e=0;e1&&j[g].push(b[e+1][g]!==void 0?b[e+1][g]:null),f>2&&j[g].push(b[e+2][g]!==void 0?b[e+2][g]:null),f>3&&j[g].push(b[e+3][g]!==void 0?b[e+3][g]:null),f>4&&j[g].push(b[e+4][g]!==void 0?b[e+4][g]:null);i[k]={name:b[e].name,data:j};e+=f}d.complete({xAxis:{type:c},series:i})}}});h.Data=m;h.data=function(b,a){return new m(b,a)};h.wrap(h.Chart.prototype, 17 | "init",function(b,a,c){var d=this;a&&a.data?h.data(h.extend(a.data,{complete:function(f){a.series&&k(a.series,function(b,c){a.series[c]=h.merge(b,f.series[c])});a=h.merge(f,a);b.call(d,a,c)}}),a):b.call(d,a,c)})})(Highcharts); 18 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/drilldown.js: -------------------------------------------------------------------------------- 1 | (function(e){function q(b,a,c){return"rgba("+[Math.round(b[0]+(a[0]-b[0])*c),Math.round(b[1]+(a[1]-b[1])*c),Math.round(b[2]+(a[2]-b[2])*c),b[3]+(a[3]-b[3])*c].join(",")+")"}var m=function(){},j=e.getOptions(),g=e.each,n=e.extend,o=e.wrap,h=e.Chart,i=e.seriesTypes,k=i.pie,l=i.column,r=HighchartsAdapter.fireEvent;n(j.lang,{drillUpText:"◁ Back to {series.name}"});j.drilldown={activeAxisLabelStyle:{cursor:"pointer",color:"#039",fontWeight:"bold",textDecoration:"underline"},activeDataLabelStyle:{cursor:"pointer", 2 | color:"#039",fontWeight:"bold",textDecoration:"underline"},animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}}};e.SVGRenderer.prototype.Element.prototype.fadeIn=function(){this.attr({opacity:0.1,visibility:"visible"}).animate({opacity:1},{duration:250})};h.prototype.drilldownLevels=[];h.prototype.addSeriesAsDrilldown=function(b,a){var c=b.series,d=c.xAxis,f=c.yAxis,e;e=b.color||c.color;var g,a=n({color:e},a);g=HighchartsAdapter.inArray(this,c.points);this.drilldownLevels.push({seriesOptions:c.userOptions, 3 | shapeArgs:b.shapeArgs,bBox:b.graphic.getBBox(),color:e,newSeries:a,pointOptions:c.options.data[g],pointIndex:g,oldExtremes:{xMin:d&&d.userMin,xMax:d&&d.userMax,yMin:f&&f.userMin,yMax:f&&f.userMax}});e=this.addSeries(a,!1);if(d)d.oldPos=d.pos,d.userMin=d.userMax=null,f.userMin=f.userMax=null;if(c.type===e.type)e.animate=e.animateDrilldown||m,e.options.animation=!0;c.remove(!1);this.redraw();this.showDrillUpButton()};h.prototype.getDrilldownBackText=function(){return this.options.lang.drillUpText.replace("{series.name}", 4 | this.drilldownLevels[this.drilldownLevels.length-1].seriesOptions.name)};h.prototype.showDrillUpButton=function(){var b=this,a=this.getDrilldownBackText(),c=b.options.drilldown.drillUpButton;this.drillUpButton?this.drillUpButton.attr({text:a}).align():this.drillUpButton=this.renderer.button(a,null,null,function(){b.drillUp()}).attr(n({align:c.position.align,zIndex:9},c.theme)).add().align(c.position,!1,c.relativeTo||"plotBox")};h.prototype.drillUp=function(){var b=this.drilldownLevels.pop(),a=this.series[0], 5 | c=b.oldExtremes,d=this.addSeries(b.seriesOptions,!1);r(this,"drillup",{seriesOptions:b.seriesOptions});if(d.type===a.type)d.drilldownLevel=b,d.animate=d.animateDrillupTo||m,d.options.animation=!0,a.animateDrillupFrom&&a.animateDrillupFrom(b);a.remove(!1);d.xAxis&&(d.xAxis.setExtremes(c.xMin,c.xMax,!1),d.yAxis.setExtremes(c.yMin,c.yMax,!1));this.redraw();this.drilldownLevels.length===0?this.drillUpButton=this.drillUpButton.destroy():this.drillUpButton.attr({text:this.getDrilldownBackText()}).align()}; 6 | k.prototype.animateDrilldown=function(b){var a=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],c=this.chart.options.drilldown.animation,d=a.shapeArgs,f=d.start,s=(d.end-f)/this.points.length,h=e.Color(a.color).rgba;b||g(this.points,function(a,b){var g=e.Color(a.color).rgba;a.graphic.attr(e.merge(d,{start:f+b*s,end:f+(b+1)*s})).animate(a.shapeArgs,e.merge(c,{step:function(a,d){d.prop==="start"&&this.attr({fill:q(h,g,d.pos)})}}))})};k.prototype.animateDrillupTo=l.prototype.animateDrillupTo= 7 | function(b){if(!b){var a=this,c=a.drilldownLevel;g(this.points,function(a){a.graphic.hide();a.dataLabel&&a.dataLabel.hide();a.connector&&a.connector.hide()});setTimeout(function(){g(a.points,function(a,b){var e=b===c.pointIndex?"show":"fadeIn";a.graphic[e]();if(a.dataLabel)a.dataLabel[e]();if(a.connector)a.connector[e]()})},Math.max(this.chart.options.drilldown.animation.duration-50,0));this.animate=m}};l.prototype.animateDrilldown=function(b){var a=this.chart.drilldownLevels[this.chart.drilldownLevels.length- 8 | 1].shapeArgs,c=this.chart.options.drilldown.animation;b||(a.x+=this.xAxis.oldPos-this.xAxis.pos,g(this.points,function(b){b.graphic.attr(a).animate(b.shapeArgs,c)}))};l.prototype.animateDrillupFrom=k.prototype.animateDrillupFrom=function(b){var a=this.chart.options.drilldown.animation,c=this.group;delete this.group;g(this.points,function(d){var f=d.graphic,g=e.Color(d.color).rgba;delete d.graphic;f.animate(b.shapeArgs,e.merge(a,{step:function(a,c){c.prop==="start"&&this.attr({fill:q(g,e.Color(b.color).rgba, 9 | c.pos)})},complete:function(){f.destroy();c&&(c=c.destroy())}}))})};e.Point.prototype.doDrilldown=function(){for(var b=this.series.chart,a=b.options.drilldown,c=a.series.length,d;c--&&!d;)a.series[c].id===this.drilldown&&(d=a.series[c]);r(b,"drilldown",{point:this,seriesOptions:d});d&&b.addSeriesAsDrilldown(this,d)};o(e.Point.prototype,"init",function(b,a,c,d){var f=b.call(this,a,c,d),b=a.chart,a=(a=a.xAxis&&a.xAxis.ticks[d])&&a.label;if(f.drilldown){if(e.addEvent(f,"click",function(){f.doDrilldown()}), 10 | a){if(!a._basicStyle)a._basicStyle=a.element.getAttribute("style");a.addClass("highcharts-drilldown-axis-label").css(b.options.drilldown.activeAxisLabelStyle).on("click",function(){f.doDrilldown&&f.doDrilldown()})}}else a&&a._basicStyle&&a.element.setAttribute("style",a._basicStyle);return f});o(e.Series.prototype,"drawDataLabels",function(b){var a=this.chart.options.drilldown.activeDataLabelStyle;b.call(this);g(this.points,function(b){if(b.drilldown&&b.dataLabel)b.dataLabel.attr({"class":"highcharts-drilldown-data-label"}).css(a).on("click", 11 | function(){b.doDrilldown()})})});l.prototype.supportsDrilldown=!0;k.prototype.supportsDrilldown=!0;var p,j=function(b){b.call(this);g(this.points,function(a){a.drilldown&&a.graphic&&a.graphic.attr({"class":"highcharts-drilldown-point"}).css({cursor:"pointer"})})};for(p in i)i[p].prototype.supportsDrilldown&&o(i[p].prototype,"drawTracker",j)})(Highcharts); 12 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/funnel.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Highcharts funnel module, Beta 4 | 5 | (c) 2010-2012 Torstein Hønsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(d){var u=d.getOptions().plotOptions,p=d.seriesTypes,D=d.merge,z=function(){},A=d.each;u.funnel=D(u.pie,{center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});p.funnel=d.extendClass(p.pie,{type:"funnel",animate:z,translate:function(){var a=function(k,a){return/%$/.test(k)?a*parseInt(k,10)/100:parseInt(k,10)},g=0,e=this.chart,f=e.plotWidth, 10 | e=e.plotHeight,h=0,c=this.options,C=c.center,b=a(C[0],f),d=a(C[0],e),p=a(c.width,f),i,q,j=a(c.height,e),r=a(c.neckWidth,f),s=a(c.neckHeight,e),v=j-s,a=this.data,w,x,u=c.dataLabels.position==="left"?1:0,y,m,B,n,l,t,o;this.getWidthAt=q=function(k){return k>j-s||j===s?r:r+(p-r)*((j-s-k)/(j-s))};this.getX=function(k,a){return b+(a?-1:1)*(q(k)/2+c.dataLabels.distance)};this.center=[b,d,j];this.centerX=b;A(a,function(a){g+=a.y});A(a,function(a){o=null;x=g?a.y/g:0;m=d-j/2+h*j;l=m+x*j;i=q(m);y=b-i/2;B=y+ 11 | i;i=q(l);n=b-i/2;t=n+i;m>v?(y=n=b-r/2,B=t=b+r/2):l>v&&(o=l,i=q(v),n=b-i/2,t=n+i,l=v);w=["M",y,m,"L",B,m,t,l];o&&w.push(t,o,n,o);w.push(n,l,"Z");a.shapeType="path";a.shapeArgs={d:w};a.percentage=x*100;a.plotX=b;a.plotY=(m+(o||l))/2;a.tooltipPos=[b,a.plotY];a.slice=z;a.half=u;h+=x});this.setTooltipPoints()},drawPoints:function(){var a=this,g=a.options,e=a.chart.renderer;A(a.data,function(f){var h=f.graphic,c=f.shapeArgs;h?h.animate(c):f.graphic=e.path(c).attr({fill:f.color,stroke:g.borderColor,"stroke-width":g.borderWidth}).add(a.group)})}, 12 | sortByAngle:z,drawDataLabels:function(){var a=this.data,g=this.options.dataLabels.distance,e,f,h,c=a.length,d,b;for(this.center[2]-=2*g;c--;)h=a[c],f=(e=h.half)?1:-1,b=h.plotY,d=this.getX(b,e),h.labelPos=[0,b,d+(g-5)*f,b,d+g*f,b,e?"right":"left",0];p.pie.prototype.drawDataLabels.call(this)}})})(Highcharts); 13 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/heatmap.js: -------------------------------------------------------------------------------- 1 | (function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:"z",useMapGeometry:!1,pointArrayMap:["y","z"],translate:function(){var c=this,b=c.options,i=Number.MAX_VALUE,j=Number.MIN_VALUE;c.generatePoints();l(c.data,function(a){var e=a.x,f=a.y,d=a.z,g=(b.colsize||1)/2,h=(b.rowsize||1)/2;a.path=["M",e-g,f-h,"L",e+g,f-h,"L",e+g,f+h,"L",e-g,f+h,"Z"];a.shapeType="path";a.shapeArgs={d:c.translatePath(a.path)};typeof d==="number"&&(d>j?j=d:d dataMax) { 39 | dataMax = value; 40 | } else if (value < dataMin) { 41 | dataMin = value; 42 | } 43 | } 44 | }); 45 | 46 | series.translateColors(dataMin, dataMax); 47 | }, 48 | 49 | getBox: function () {} 50 | 51 | }); 52 | 53 | }(Highcharts)); 54 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/no-data-to-display.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v3.0.6 (2013-10-04) 3 | Plugin for displaying a message when there is no data visible in chart. 4 | 5 | (c) 2010-2013 Highsoft AS 6 | Author: Øystein Moseng 7 | 8 | License: www.highcharts.com/license 9 | */ 10 | (function(c){function f(){return!!this.points.length}function g(){this.hasData()?this.hideNoData():this.showNoData()}var d=c.seriesTypes,e=c.Chart.prototype,h=c.getOptions(),i=c.extend;i(h.lang,{noData:"No data to display"});h.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"},attr:{},style:{fontWeight:"bold",fontSize:"12px",color:"#60606a"}};d.pie.prototype.hasData=f;if(d.gauge)d.gauge.prototype.hasData=f;if(d.waterfall)d.waterfall.prototype.hasData=f;c.Series.prototype.hasData=function(){return this.dataMax!== 11 | void 0&&this.dataMin!==void 0};e.showNoData=function(a){var b=this.options,a=a||b.lang.noData,b=b.noData;if(!this.noDataLabel)this.noDataLabel=this.renderer.label(a,0,0,null,null,null,null,null,"no-data").attr(b.attr).css(b.style).add(),this.noDataLabel.align(i(this.noDataLabel.getBBox(),b.position),!1,"plotBox")};e.hideNoData=function(){if(this.noDataLabel)this.noDataLabel=this.noDataLabel.destroy()};e.hasData=function(){for(var a=this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0; 12 | return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts); 13 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/modules/no-data-to-display.src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Highcharts JS v3.0.6 (2013-10-04) 3 | * Plugin for displaying a message when there is no data visible in chart. 4 | * 5 | * (c) 2010-2013 Highsoft AS 6 | * Author: Øystein Moseng 7 | * 8 | * License: www.highcharts.com/license 9 | */ 10 | 11 | (function (H) { // docs 12 | 13 | var seriesTypes = H.seriesTypes, 14 | chartPrototype = H.Chart.prototype, 15 | defaultOptions = H.getOptions(), 16 | extend = H.extend; 17 | 18 | // Add language option 19 | extend(defaultOptions.lang, { 20 | noData: 'No data to display' 21 | }); 22 | 23 | // Add default display options for message 24 | defaultOptions.noData = { 25 | position: { 26 | x: 0, 27 | y: 0, 28 | align: 'center', 29 | verticalAlign: 'middle' 30 | }, 31 | attr: { 32 | }, 33 | style: { 34 | fontWeight: 'bold', 35 | fontSize: '12px', 36 | color: '#60606a' 37 | } 38 | }; 39 | 40 | /** 41 | * Define hasData functions for series. These return true if there are data points on this series within the plot area 42 | */ 43 | function hasDataPie() { 44 | return !!this.points.length; /* != 0 */ 45 | } 46 | 47 | seriesTypes.pie.prototype.hasData = hasDataPie; 48 | 49 | if (seriesTypes.gauge) { 50 | seriesTypes.gauge.prototype.hasData = hasDataPie; 51 | } 52 | 53 | if (seriesTypes.waterfall) { 54 | seriesTypes.waterfall.prototype.hasData = hasDataPie; 55 | } 56 | 57 | H.Series.prototype.hasData = function () { 58 | return this.dataMax !== undefined && this.dataMin !== undefined; 59 | }; 60 | 61 | /** 62 | * Display a no-data message. 63 | * 64 | * @param {String} str An optional message to show in place of the default one 65 | */ 66 | chartPrototype.showNoData = function (str) { 67 | var chart = this, 68 | options = chart.options, 69 | text = str || options.lang.noData, 70 | noDataOptions = options.noData; 71 | 72 | if (!chart.noDataLabel) { 73 | chart.noDataLabel = chart.renderer.label(text, 0, 0, null, null, null, null, null, 'no-data') 74 | .attr(noDataOptions.attr) 75 | .css(noDataOptions.style) 76 | .add(); 77 | chart.noDataLabel.align(extend(chart.noDataLabel.getBBox(), noDataOptions.position), false, 'plotBox'); 78 | } 79 | }; 80 | 81 | /** 82 | * Hide no-data message 83 | */ 84 | chartPrototype.hideNoData = function () { 85 | var chart = this; 86 | if (chart.noDataLabel) { 87 | chart.noDataLabel = chart.noDataLabel.destroy(); 88 | } 89 | }; 90 | 91 | /** 92 | * Returns true if there are data points within the plot area now 93 | */ 94 | chartPrototype.hasData = function () { 95 | var chart = this, 96 | series = chart.series, 97 | i = series.length; 98 | 99 | while (i--) { 100 | if (series[i].hasData() && !series[i].options.isInternal) { 101 | return true; 102 | } 103 | } 104 | 105 | return false; 106 | }; 107 | 108 | /** 109 | * Show no-data message if there is no data in sight. Otherwise, hide it. 110 | */ 111 | function handleNoData() { 112 | var chart = this; 113 | if (chart.hasData()) { 114 | chart.hideNoData(); 115 | } else { 116 | chart.showNoData(); 117 | } 118 | } 119 | 120 | /** 121 | * Add event listener to handle automatic display of no-data message 122 | */ 123 | chartPrototype.callbacks.push(function (chart) { 124 | H.addEvent(chart, 'load', handleNoData); 125 | H.addEvent(chart, 'redraw', handleNoData); 126 | }); 127 | 128 | }(Highcharts)); 129 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/themes/dark-blue.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dark blue theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 12 | stops: [ 13 | [0, 'rgb(48, 48, 96)'], 14 | [1, 'rgb(0, 0, 0)'] 15 | ] 16 | }, 17 | borderColor: '#000000', 18 | borderWidth: 2, 19 | className: 'dark-container', 20 | plotBackgroundColor: 'rgba(255, 255, 255, .1)', 21 | plotBorderColor: '#CCCCCC', 22 | plotBorderWidth: 1 23 | }, 24 | title: { 25 | style: { 26 | color: '#C0C0C0', 27 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 28 | } 29 | }, 30 | subtitle: { 31 | style: { 32 | color: '#666666', 33 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 34 | } 35 | }, 36 | xAxis: { 37 | gridLineColor: '#333333', 38 | gridLineWidth: 1, 39 | labels: { 40 | style: { 41 | color: '#A0A0A0' 42 | } 43 | }, 44 | lineColor: '#A0A0A0', 45 | tickColor: '#A0A0A0', 46 | title: { 47 | style: { 48 | color: '#CCC', 49 | fontWeight: 'bold', 50 | fontSize: '12px', 51 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 52 | 53 | } 54 | } 55 | }, 56 | yAxis: { 57 | gridLineColor: '#333333', 58 | labels: { 59 | style: { 60 | color: '#A0A0A0' 61 | } 62 | }, 63 | lineColor: '#A0A0A0', 64 | minorTickInterval: null, 65 | tickColor: '#A0A0A0', 66 | tickWidth: 1, 67 | title: { 68 | style: { 69 | color: '#CCC', 70 | fontWeight: 'bold', 71 | fontSize: '12px', 72 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 73 | } 74 | } 75 | }, 76 | tooltip: { 77 | backgroundColor: 'rgba(0, 0, 0, 0.75)', 78 | style: { 79 | color: '#F0F0F0' 80 | } 81 | }, 82 | toolbar: { 83 | itemStyle: { 84 | color: 'silver' 85 | } 86 | }, 87 | plotOptions: { 88 | line: { 89 | dataLabels: { 90 | color: '#CCC' 91 | }, 92 | marker: { 93 | lineColor: '#333' 94 | } 95 | }, 96 | spline: { 97 | marker: { 98 | lineColor: '#333' 99 | } 100 | }, 101 | scatter: { 102 | marker: { 103 | lineColor: '#333' 104 | } 105 | }, 106 | candlestick: { 107 | lineColor: 'white' 108 | } 109 | }, 110 | legend: { 111 | itemStyle: { 112 | font: '9pt Trebuchet MS, Verdana, sans-serif', 113 | color: '#A0A0A0' 114 | }, 115 | itemHoverStyle: { 116 | color: '#FFF' 117 | }, 118 | itemHiddenStyle: { 119 | color: '#444' 120 | } 121 | }, 122 | credits: { 123 | style: { 124 | color: '#666' 125 | } 126 | }, 127 | labels: { 128 | style: { 129 | color: '#CCC' 130 | } 131 | }, 132 | 133 | navigation: { 134 | buttonOptions: { 135 | symbolStroke: '#DDDDDD', 136 | hoverSymbolStroke: '#FFFFFF', 137 | theme: { 138 | fill: { 139 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 140 | stops: [ 141 | [0.4, '#606060'], 142 | [0.6, '#333333'] 143 | ] 144 | }, 145 | stroke: '#000000' 146 | } 147 | } 148 | }, 149 | 150 | // scroll charts 151 | rangeSelector: { 152 | buttonTheme: { 153 | fill: { 154 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 155 | stops: [ 156 | [0.4, '#888'], 157 | [0.6, '#555'] 158 | ] 159 | }, 160 | stroke: '#000000', 161 | style: { 162 | color: '#CCC', 163 | fontWeight: 'bold' 164 | }, 165 | states: { 166 | hover: { 167 | fill: { 168 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 169 | stops: [ 170 | [0.4, '#BBB'], 171 | [0.6, '#888'] 172 | ] 173 | }, 174 | stroke: '#000000', 175 | style: { 176 | color: 'white' 177 | } 178 | }, 179 | select: { 180 | fill: { 181 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 182 | stops: [ 183 | [0.1, '#000'], 184 | [0.3, '#333'] 185 | ] 186 | }, 187 | stroke: '#000000', 188 | style: { 189 | color: 'yellow' 190 | } 191 | } 192 | } 193 | }, 194 | inputStyle: { 195 | backgroundColor: '#333', 196 | color: 'silver' 197 | }, 198 | labelStyle: { 199 | color: 'silver' 200 | } 201 | }, 202 | 203 | navigator: { 204 | handles: { 205 | backgroundColor: '#666', 206 | borderColor: '#AAA' 207 | }, 208 | outlineColor: '#CCC', 209 | maskFill: 'rgba(16, 16, 16, 0.5)', 210 | series: { 211 | color: '#7798BF', 212 | lineColor: '#A6C7ED' 213 | } 214 | }, 215 | 216 | scrollbar: { 217 | barBackgroundColor: { 218 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 219 | stops: [ 220 | [0.4, '#888'], 221 | [0.6, '#555'] 222 | ] 223 | }, 224 | barBorderColor: '#CCC', 225 | buttonArrowColor: '#CCC', 226 | buttonBackgroundColor: { 227 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 228 | stops: [ 229 | [0.4, '#888'], 230 | [0.6, '#555'] 231 | ] 232 | }, 233 | buttonBorderColor: '#CCC', 234 | rifleColor: '#FFF', 235 | trackBackgroundColor: { 236 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 237 | stops: [ 238 | [0, '#000'], 239 | [1, '#333'] 240 | ] 241 | }, 242 | trackBorderColor: '#666' 243 | }, 244 | 245 | // special colors for some of the 246 | legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', 247 | legendBackgroundColorSolid: 'rgb(35, 35, 70)', 248 | dataLabelsColor: '#444', 249 | textColor: '#C0C0C0', 250 | maskColor: 'rgba(255,255,255,0.3)' 251 | }; 252 | 253 | // Apply the theme 254 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 255 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/themes/dark-green.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Dark blue theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#55BF3B", "#DF5353", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: [0, 0, 250, 500], 12 | stops: [ 13 | [0, 'rgb(48, 96, 48)'], 14 | [1, 'rgb(0, 0, 0)'] 15 | ] 16 | }, 17 | borderColor: '#000000', 18 | borderWidth: 2, 19 | className: 'dark-container', 20 | plotBackgroundColor: 'rgba(255, 255, 255, .1)', 21 | plotBorderColor: '#CCCCCC', 22 | plotBorderWidth: 1 23 | }, 24 | title: { 25 | style: { 26 | color: '#C0C0C0', 27 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 28 | } 29 | }, 30 | subtitle: { 31 | style: { 32 | color: '#666666', 33 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 34 | } 35 | }, 36 | xAxis: { 37 | gridLineColor: '#333333', 38 | gridLineWidth: 1, 39 | labels: { 40 | style: { 41 | color: '#A0A0A0' 42 | } 43 | }, 44 | lineColor: '#A0A0A0', 45 | tickColor: '#A0A0A0', 46 | title: { 47 | style: { 48 | color: '#CCC', 49 | fontWeight: 'bold', 50 | fontSize: '12px', 51 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 52 | 53 | } 54 | } 55 | }, 56 | yAxis: { 57 | gridLineColor: '#333333', 58 | labels: { 59 | style: { 60 | color: '#A0A0A0' 61 | } 62 | }, 63 | lineColor: '#A0A0A0', 64 | minorTickInterval: null, 65 | tickColor: '#A0A0A0', 66 | tickWidth: 1, 67 | title: { 68 | style: { 69 | color: '#CCC', 70 | fontWeight: 'bold', 71 | fontSize: '12px', 72 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 73 | } 74 | } 75 | }, 76 | tooltip: { 77 | backgroundColor: 'rgba(0, 0, 0, 0.75)', 78 | style: { 79 | color: '#F0F0F0' 80 | } 81 | }, 82 | toolbar: { 83 | itemStyle: { 84 | color: 'silver' 85 | } 86 | }, 87 | plotOptions: { 88 | line: { 89 | dataLabels: { 90 | color: '#CCC' 91 | }, 92 | marker: { 93 | lineColor: '#333' 94 | } 95 | }, 96 | spline: { 97 | marker: { 98 | lineColor: '#333' 99 | } 100 | }, 101 | scatter: { 102 | marker: { 103 | lineColor: '#333' 104 | } 105 | }, 106 | candlestick: { 107 | lineColor: 'white' 108 | } 109 | }, 110 | legend: { 111 | itemStyle: { 112 | font: '9pt Trebuchet MS, Verdana, sans-serif', 113 | color: '#A0A0A0' 114 | }, 115 | itemHoverStyle: { 116 | color: '#FFF' 117 | }, 118 | itemHiddenStyle: { 119 | color: '#444' 120 | } 121 | }, 122 | credits: { 123 | style: { 124 | color: '#666' 125 | } 126 | }, 127 | labels: { 128 | style: { 129 | color: '#CCC' 130 | } 131 | }, 132 | 133 | 134 | navigation: { 135 | buttonOptions: { 136 | symbolStroke: '#DDDDDD', 137 | hoverSymbolStroke: '#FFFFFF', 138 | theme: { 139 | fill: { 140 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 141 | stops: [ 142 | [0.4, '#606060'], 143 | [0.6, '#333333'] 144 | ] 145 | }, 146 | stroke: '#000000' 147 | } 148 | } 149 | }, 150 | 151 | // scroll charts 152 | rangeSelector: { 153 | buttonTheme: { 154 | fill: { 155 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 156 | stops: [ 157 | [0.4, '#888'], 158 | [0.6, '#555'] 159 | ] 160 | }, 161 | stroke: '#000000', 162 | style: { 163 | color: '#CCC', 164 | fontWeight: 'bold' 165 | }, 166 | states: { 167 | hover: { 168 | fill: { 169 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 170 | stops: [ 171 | [0.4, '#BBB'], 172 | [0.6, '#888'] 173 | ] 174 | }, 175 | stroke: '#000000', 176 | style: { 177 | color: 'white' 178 | } 179 | }, 180 | select: { 181 | fill: { 182 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 183 | stops: [ 184 | [0.1, '#000'], 185 | [0.3, '#333'] 186 | ] 187 | }, 188 | stroke: '#000000', 189 | style: { 190 | color: 'yellow' 191 | } 192 | } 193 | } 194 | }, 195 | inputStyle: { 196 | backgroundColor: '#333', 197 | color: 'silver' 198 | }, 199 | labelStyle: { 200 | color: 'silver' 201 | } 202 | }, 203 | 204 | navigator: { 205 | handles: { 206 | backgroundColor: '#666', 207 | borderColor: '#AAA' 208 | }, 209 | outlineColor: '#CCC', 210 | maskFill: 'rgba(16, 16, 16, 0.5)', 211 | series: { 212 | color: '#7798BF', 213 | lineColor: '#A6C7ED' 214 | } 215 | }, 216 | 217 | scrollbar: { 218 | barBackgroundColor: { 219 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 220 | stops: [ 221 | [0.4, '#888'], 222 | [0.6, '#555'] 223 | ] 224 | }, 225 | barBorderColor: '#CCC', 226 | buttonArrowColor: '#CCC', 227 | buttonBackgroundColor: { 228 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 229 | stops: [ 230 | [0.4, '#888'], 231 | [0.6, '#555'] 232 | ] 233 | }, 234 | buttonBorderColor: '#CCC', 235 | rifleColor: '#FFF', 236 | trackBackgroundColor: { 237 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 238 | stops: [ 239 | [0, '#000'], 240 | [1, '#333'] 241 | ] 242 | }, 243 | trackBorderColor: '#666' 244 | }, 245 | 246 | // special colors for some of the 247 | legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', 248 | legendBackgroundColorSolid: 'rgb(35, 35, 70)', 249 | dataLabelsColor: '#444', 250 | textColor: '#C0C0C0', 251 | maskColor: 'rgba(255,255,255,0.3)' 252 | }; 253 | 254 | // Apply the theme 255 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 256 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/themes/gray.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gray theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#DDDF0D", "#7798BF", "#55BF3B", "#DF5353", "#aaeeee", "#ff0066", "#eeaaee", 8 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 9 | chart: { 10 | backgroundColor: { 11 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 12 | stops: [ 13 | [0, 'rgb(96, 96, 96)'], 14 | [1, 'rgb(16, 16, 16)'] 15 | ] 16 | }, 17 | borderWidth: 0, 18 | borderRadius: 15, 19 | plotBackgroundColor: null, 20 | plotShadow: false, 21 | plotBorderWidth: 0 22 | }, 23 | title: { 24 | style: { 25 | color: '#FFF', 26 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 27 | } 28 | }, 29 | subtitle: { 30 | style: { 31 | color: '#DDD', 32 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 33 | } 34 | }, 35 | xAxis: { 36 | gridLineWidth: 0, 37 | lineColor: '#999', 38 | tickColor: '#999', 39 | labels: { 40 | style: { 41 | color: '#999', 42 | fontWeight: 'bold' 43 | } 44 | }, 45 | title: { 46 | style: { 47 | color: '#AAA', 48 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 49 | } 50 | } 51 | }, 52 | yAxis: { 53 | alternateGridColor: null, 54 | minorTickInterval: null, 55 | gridLineColor: 'rgba(255, 255, 255, .1)', 56 | minorGridLineColor: 'rgba(255,255,255,0.07)', 57 | lineWidth: 0, 58 | tickWidth: 0, 59 | labels: { 60 | style: { 61 | color: '#999', 62 | fontWeight: 'bold' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#AAA', 68 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 69 | } 70 | } 71 | }, 72 | legend: { 73 | itemStyle: { 74 | color: '#CCC' 75 | }, 76 | itemHoverStyle: { 77 | color: '#FFF' 78 | }, 79 | itemHiddenStyle: { 80 | color: '#333' 81 | } 82 | }, 83 | labels: { 84 | style: { 85 | color: '#CCC' 86 | } 87 | }, 88 | tooltip: { 89 | backgroundColor: { 90 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 91 | stops: [ 92 | [0, 'rgba(96, 96, 96, .8)'], 93 | [1, 'rgba(16, 16, 16, .8)'] 94 | ] 95 | }, 96 | borderWidth: 0, 97 | style: { 98 | color: '#FFF' 99 | } 100 | }, 101 | 102 | 103 | plotOptions: { 104 | series: { 105 | shadow: true 106 | }, 107 | line: { 108 | dataLabels: { 109 | color: '#CCC' 110 | }, 111 | marker: { 112 | lineColor: '#333' 113 | } 114 | }, 115 | spline: { 116 | marker: { 117 | lineColor: '#333' 118 | } 119 | }, 120 | scatter: { 121 | marker: { 122 | lineColor: '#333' 123 | } 124 | }, 125 | candlestick: { 126 | lineColor: 'white' 127 | } 128 | }, 129 | 130 | toolbar: { 131 | itemStyle: { 132 | color: '#CCC' 133 | } 134 | }, 135 | 136 | navigation: { 137 | buttonOptions: { 138 | symbolStroke: '#DDDDDD', 139 | hoverSymbolStroke: '#FFFFFF', 140 | theme: { 141 | fill: { 142 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 143 | stops: [ 144 | [0.4, '#606060'], 145 | [0.6, '#333333'] 146 | ] 147 | }, 148 | stroke: '#000000' 149 | } 150 | } 151 | }, 152 | 153 | // scroll charts 154 | rangeSelector: { 155 | buttonTheme: { 156 | fill: { 157 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 158 | stops: [ 159 | [0.4, '#888'], 160 | [0.6, '#555'] 161 | ] 162 | }, 163 | stroke: '#000000', 164 | style: { 165 | color: '#CCC', 166 | fontWeight: 'bold' 167 | }, 168 | states: { 169 | hover: { 170 | fill: { 171 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 172 | stops: [ 173 | [0.4, '#BBB'], 174 | [0.6, '#888'] 175 | ] 176 | }, 177 | stroke: '#000000', 178 | style: { 179 | color: 'white' 180 | } 181 | }, 182 | select: { 183 | fill: { 184 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 185 | stops: [ 186 | [0.1, '#000'], 187 | [0.3, '#333'] 188 | ] 189 | }, 190 | stroke: '#000000', 191 | style: { 192 | color: 'yellow' 193 | } 194 | } 195 | } 196 | }, 197 | inputStyle: { 198 | backgroundColor: '#333', 199 | color: 'silver' 200 | }, 201 | labelStyle: { 202 | color: 'silver' 203 | } 204 | }, 205 | 206 | navigator: { 207 | handles: { 208 | backgroundColor: '#666', 209 | borderColor: '#AAA' 210 | }, 211 | outlineColor: '#CCC', 212 | maskFill: 'rgba(16, 16, 16, 0.5)', 213 | series: { 214 | color: '#7798BF', 215 | lineColor: '#A6C7ED' 216 | } 217 | }, 218 | 219 | scrollbar: { 220 | barBackgroundColor: { 221 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 222 | stops: [ 223 | [0.4, '#888'], 224 | [0.6, '#555'] 225 | ] 226 | }, 227 | barBorderColor: '#CCC', 228 | buttonArrowColor: '#CCC', 229 | buttonBackgroundColor: { 230 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 231 | stops: [ 232 | [0.4, '#888'], 233 | [0.6, '#555'] 234 | ] 235 | }, 236 | buttonBorderColor: '#CCC', 237 | rifleColor: '#FFF', 238 | trackBackgroundColor: { 239 | linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, 240 | stops: [ 241 | [0, '#000'], 242 | [1, '#333'] 243 | ] 244 | }, 245 | trackBorderColor: '#666' 246 | }, 247 | 248 | // special colors for some of the demo examples 249 | legendBackgroundColor: 'rgba(48, 48, 48, 0.8)', 250 | legendBackgroundColorSolid: 'rgb(70, 70, 70)', 251 | dataLabelsColor: '#444', 252 | textColor: '#E0E0E0', 253 | maskColor: 'rgba(255,255,255,0.3)' 254 | }; 255 | 256 | // Apply the theme 257 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 258 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/themes/grid.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'], 8 | chart: { 9 | backgroundColor: { 10 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 11 | stops: [ 12 | [0, 'rgb(255, 255, 255)'], 13 | [1, 'rgb(240, 240, 255)'] 14 | ] 15 | }, 16 | borderWidth: 2, 17 | plotBackgroundColor: 'rgba(255, 255, 255, .9)', 18 | plotShadow: true, 19 | plotBorderWidth: 1 20 | }, 21 | title: { 22 | style: { 23 | color: '#000', 24 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 25 | } 26 | }, 27 | subtitle: { 28 | style: { 29 | color: '#666666', 30 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 31 | } 32 | }, 33 | xAxis: { 34 | gridLineWidth: 1, 35 | lineColor: '#000', 36 | tickColor: '#000', 37 | labels: { 38 | style: { 39 | color: '#000', 40 | font: '11px Trebuchet MS, Verdana, sans-serif' 41 | } 42 | }, 43 | title: { 44 | style: { 45 | color: '#333', 46 | fontWeight: 'bold', 47 | fontSize: '12px', 48 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 49 | 50 | } 51 | } 52 | }, 53 | yAxis: { 54 | minorTickInterval: 'auto', 55 | lineColor: '#000', 56 | lineWidth: 1, 57 | tickWidth: 1, 58 | tickColor: '#000', 59 | labels: { 60 | style: { 61 | color: '#000', 62 | font: '11px Trebuchet MS, Verdana, sans-serif' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#333', 68 | fontWeight: 'bold', 69 | fontSize: '12px', 70 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 71 | } 72 | } 73 | }, 74 | legend: { 75 | itemStyle: { 76 | font: '9pt Trebuchet MS, Verdana, sans-serif', 77 | color: 'black' 78 | 79 | }, 80 | itemHoverStyle: { 81 | color: '#039' 82 | }, 83 | itemHiddenStyle: { 84 | color: 'gray' 85 | } 86 | }, 87 | labels: { 88 | style: { 89 | color: '#99b' 90 | } 91 | }, 92 | 93 | navigation: { 94 | buttonOptions: { 95 | theme: { 96 | stroke: '#CCCCCC' 97 | } 98 | } 99 | } 100 | }; 101 | 102 | // Apply the theme 103 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 104 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/highcharts/themes/skies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Skies theme for Highcharts JS 3 | * @author Torstein Hønsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"], 8 | chart: { 9 | className: 'skies', 10 | borderWidth: 0, 11 | plotShadow: true, 12 | plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg', 13 | plotBackgroundColor: { 14 | linearGradient: [0, 0, 250, 500], 15 | stops: [ 16 | [0, 'rgba(255, 255, 255, 1)'], 17 | [1, 'rgba(255, 255, 255, 0)'] 18 | ] 19 | }, 20 | plotBorderWidth: 1 21 | }, 22 | title: { 23 | style: { 24 | color: '#3E576F', 25 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 26 | } 27 | }, 28 | subtitle: { 29 | style: { 30 | color: '#6D869F', 31 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 32 | } 33 | }, 34 | xAxis: { 35 | gridLineWidth: 0, 36 | lineColor: '#C0D0E0', 37 | tickColor: '#C0D0E0', 38 | labels: { 39 | style: { 40 | color: '#666', 41 | fontWeight: 'bold' 42 | } 43 | }, 44 | title: { 45 | style: { 46 | color: '#666', 47 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 48 | } 49 | } 50 | }, 51 | yAxis: { 52 | alternateGridColor: 'rgba(255, 255, 255, .5)', 53 | lineColor: '#C0D0E0', 54 | tickColor: '#C0D0E0', 55 | tickWidth: 1, 56 | labels: { 57 | style: { 58 | color: '#666', 59 | fontWeight: 'bold' 60 | } 61 | }, 62 | title: { 63 | style: { 64 | color: '#666', 65 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 66 | } 67 | } 68 | }, 69 | legend: { 70 | itemStyle: { 71 | font: '9pt Trebuchet MS, Verdana, sans-serif', 72 | color: '#3E576F' 73 | }, 74 | itemHoverStyle: { 75 | color: 'black' 76 | }, 77 | itemHiddenStyle: { 78 | color: 'silver' 79 | } 80 | }, 81 | labels: { 82 | style: { 83 | color: '#3E576F' 84 | } 85 | } 86 | }; 87 | 88 | // Apply the theme 89 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 90 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/video-js/font/vjs.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/video-js/font/vjs.eot -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/video-js/font/vjs.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/video-js/font/vjs.ttf -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/video-js/font/vjs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/video-js/font/vjs.woff -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/video-js/video-js.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/video-js/video-js.swf -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/webuploader/Uploader.swf -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/ueditor/third-party/zeroclipboard/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/ueditor/third-party/zeroclipboard/ZeroClipboard.swf -------------------------------------------------------------------------------- /src/main/webapp/uploadify/uploadify-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/uploadify/uploadify-cancel.png -------------------------------------------------------------------------------- /src/main/webapp/uploadify/uploadify.css: -------------------------------------------------------------------------------- 1 | /* 2 | Uploadify 3 | Copyright (c) 2012 Reactive Apps, Ronnie Garcia 4 | Released under the MIT License 5 | */ 6 | 7 | .uploadify { 8 | position: relative; 9 | margin-bottom: 1em; 10 | } 11 | .uploadify-button { 12 | background-color: #505050; 13 | background-image: linear-gradient(bottom, #505050 0%, #707070 100%); 14 | background-image: -o-linear-gradient(bottom, #505050 0%, #707070 100%); 15 | background-image: -moz-linear-gradient(bottom, #505050 0%, #707070 100%); 16 | background-image: -webkit-linear-gradient(bottom, #505050 0%, #707070 100%); 17 | background-image: -ms-linear-gradient(bottom, #505050 0%, #707070 100%); 18 | background-image: -webkit-gradient( 19 | linear, 20 | left bottom, 21 | left top, 22 | color-stop(0, #505050), 23 | color-stop(1, #707070) 24 | ); 25 | background-position: center top; 26 | background-repeat: no-repeat; 27 | -webkit-border-radius: 30px; 28 | -moz-border-radius: 30px; 29 | border-radius: 30px; 30 | border: 2px solid #808080; 31 | color: #FFF; 32 | font: bold 12px Arial, Helvetica, sans-serif; 33 | text-align: center; 34 | text-shadow: 0 -1px 0 rgba(0,0,0,0.25); 35 | width: 100%; 36 | } 37 | .uploadify:hover .uploadify-button { 38 | background-color: #606060; 39 | background-image: linear-gradient(top, #606060 0%, #808080 100%); 40 | background-image: -o-linear-gradient(top, #606060 0%, #808080 100%); 41 | background-image: -moz-linear-gradient(top, #606060 0%, #808080 100%); 42 | background-image: -webkit-linear-gradient(top, #606060 0%, #808080 100%); 43 | background-image: -ms-linear-gradient(top, #606060 0%, #808080 100%); 44 | background-image: -webkit-gradient( 45 | linear, 46 | left bottom, 47 | left top, 48 | color-stop(0, #606060), 49 | color-stop(1, #808080) 50 | ); 51 | background-position: center bottom; 52 | } 53 | .uploadify-button.disabled { 54 | background-color: #D0D0D0; 55 | color: #808080; 56 | } 57 | .uploadify-queue { 58 | margin-bottom: 1em; 59 | } 60 | .uploadify-queue-item { 61 | background-color: #F5F5F5; 62 | -webkit-border-radius: 3px; 63 | -moz-border-radius: 3px; 64 | border-radius: 3px; 65 | font: 11px Verdana, Geneva, sans-serif; 66 | margin-top: 5px; 67 | max-width: 350px; 68 | padding: 10px; 69 | } 70 | .uploadify-error { 71 | background-color: #FDE5DD !important; 72 | } 73 | .uploadify-queue-item .cancel a { 74 | background: url('../img/uploadify-cancel.png') 0 0 no-repeat; 75 | float: right; 76 | height: 16px; 77 | text-indent: -9999px; 78 | width: 16px; 79 | } 80 | .uploadify-queue-item.completed { 81 | background-color: #E5E5E5; 82 | } 83 | .uploadify-progress { 84 | background-color: #E5E5E5; 85 | margin-top: 10px; 86 | width: 100%; 87 | } 88 | .uploadify-progress-bar { 89 | background-color: #0099FF; 90 | height: 3px; 91 | width: 1px; 92 | } -------------------------------------------------------------------------------- /src/main/webapp/uploadify/uploadify.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wsldl123292/Origami/05401f5344ee316bbdc86032d25568d7a498778d/src/main/webapp/uploadify/uploadify.swf --------------------------------------------------------------------------------