├── Dockerfile ├── README.md ├── docker-compose.yml ├── pom.xml ├── pom_docker.xml └── src ├── main ├── java │ └── com │ │ └── rekoe │ │ ├── MainModule.java │ │ ├── MvcSetup.java │ │ ├── cms │ │ ├── captcha │ │ │ ├── captcha_bg_0.jpg │ │ │ ├── captcha_bg_1.jpg │ │ │ ├── captcha_bg_10.jpg │ │ │ ├── captcha_bg_11.jpg │ │ │ ├── captcha_bg_12.jpg │ │ │ ├── captcha_bg_13.jpg │ │ │ ├── captcha_bg_14.jpg │ │ │ ├── captcha_bg_15.jpg │ │ │ ├── captcha_bg_16.jpg │ │ │ ├── captcha_bg_17.jpg │ │ │ ├── captcha_bg_18.jpg │ │ │ ├── captcha_bg_19.jpg │ │ │ ├── captcha_bg_2.jpg │ │ │ ├── captcha_bg_20.jpg │ │ │ ├── captcha_bg_21.jpg │ │ │ ├── captcha_bg_22.jpg │ │ │ ├── captcha_bg_23.jpg │ │ │ ├── captcha_bg_24.jpg │ │ │ ├── captcha_bg_25.jpg │ │ │ ├── captcha_bg_26.jpg │ │ │ ├── captcha_bg_27.jpg │ │ │ ├── captcha_bg_28.jpg │ │ │ ├── captcha_bg_29.jpg │ │ │ ├── captcha_bg_3.jpg │ │ │ ├── captcha_bg_30.jpg │ │ │ ├── captcha_bg_31.jpg │ │ │ ├── captcha_bg_32.jpg │ │ │ ├── captcha_bg_33.jpg │ │ │ ├── captcha_bg_34.jpg │ │ │ ├── captcha_bg_35.jpg │ │ │ ├── captcha_bg_36.jpg │ │ │ ├── captcha_bg_37.jpg │ │ │ ├── captcha_bg_38.jpg │ │ │ ├── captcha_bg_39.jpg │ │ │ ├── captcha_bg_4.jpg │ │ │ ├── captcha_bg_40.jpg │ │ │ ├── captcha_bg_41.jpg │ │ │ ├── captcha_bg_42.jpg │ │ │ ├── captcha_bg_43.jpg │ │ │ ├── captcha_bg_44.jpg │ │ │ ├── captcha_bg_45.jpg │ │ │ ├── captcha_bg_46.jpg │ │ │ ├── captcha_bg_47.jpg │ │ │ ├── captcha_bg_48.jpg │ │ │ ├── captcha_bg_49.jpg │ │ │ ├── captcha_bg_5.jpg │ │ │ ├── captcha_bg_50.jpg │ │ │ ├── captcha_bg_51.jpg │ │ │ ├── captcha_bg_52.jpg │ │ │ ├── captcha_bg_53.jpg │ │ │ ├── captcha_bg_54.jpg │ │ │ ├── captcha_bg_55.jpg │ │ │ ├── captcha_bg_56.jpg │ │ │ ├── captcha_bg_57.jpg │ │ │ ├── captcha_bg_58.jpg │ │ │ ├── captcha_bg_59.jpg │ │ │ ├── captcha_bg_6.jpg │ │ │ ├── captcha_bg_60.jpg │ │ │ ├── captcha_bg_61.bmp │ │ │ ├── captcha_bg_7.jpg │ │ │ ├── captcha_bg_8.jpg │ │ │ └── captcha_bg_9.jpg │ │ ├── image │ │ │ └── FileReaderRandomBackgroundGenerator.java │ │ ├── quartz │ │ │ └── NutQuartzJobFactory.java │ │ └── socialauth │ │ │ ├── AbstractOAuthProvider.java │ │ │ ├── qq │ │ │ └── QQAuthProvider.java │ │ │ └── qqweibo │ │ │ └── QQWeiboAuthProvider.java │ │ ├── common │ │ ├── Message.java │ │ └── page │ │ │ ├── Paginable.java │ │ │ ├── Pagination.java │ │ │ └── SimplePage.java │ │ ├── crawler │ │ └── core │ │ │ ├── CrawlerController.java │ │ │ ├── cache │ │ │ ├── DefaultHostCache.java │ │ │ └── HostCache.java │ │ │ ├── constants │ │ │ ├── Config.java │ │ │ ├── Constant.java │ │ │ ├── Constants.java │ │ │ ├── CrawlerConfig.java │ │ │ ├── GatherConstant.java │ │ │ ├── ICrawlerConfig.java │ │ │ └── PropertiesCrawlerConfig.java │ │ │ ├── data │ │ │ ├── ContentBean.java │ │ │ ├── CrawlScope.java │ │ │ ├── SimpleBloomFilter.java │ │ │ ├── Task.java │ │ │ ├── queue │ │ │ │ ├── BlockingQueue.java │ │ │ │ ├── BloomTaskQueue.java │ │ │ │ ├── ContentQueue.java │ │ │ │ ├── Queue.java │ │ │ │ ├── SimpleQueue.java │ │ │ │ ├── SimpleTaskQueue.java │ │ │ │ ├── SimpleUrlQueue.java │ │ │ │ ├── TaskQueue.java │ │ │ │ └── UrlQueue.java │ │ │ └── uri │ │ │ │ ├── CrawlLinkURI.java │ │ │ │ ├── CrawlResURI.java │ │ │ │ └── CrawlURI.java │ │ │ ├── filter │ │ │ ├── AbstractFilter.java │ │ │ ├── BriefAreaFilter.java │ │ │ ├── CommentAreaFilter.java │ │ │ ├── CommentFilter.java │ │ │ ├── CommentIndexFilter.java │ │ │ ├── CommentLinkFilter.java │ │ │ ├── ContentAreaFilter.java │ │ │ ├── EmptyFilter.java │ │ │ ├── FieldFilter.java │ │ │ ├── Filter.java │ │ │ ├── LinkAreaFilter.java │ │ │ ├── PaginationAreaFilter.java │ │ │ └── factory │ │ │ │ ├── DefaultFilterFactory.java │ │ │ │ ├── FilterBean.java │ │ │ │ └── FilterFactory.java │ │ │ ├── frontier │ │ │ ├── DefaultFrontier.java │ │ │ └── Frontier.java │ │ │ ├── processor │ │ │ ├── AbstractProcessor.java │ │ │ ├── Processor.java │ │ │ ├── ProcessorChain.java │ │ │ ├── ProcessorChainList.java │ │ │ ├── extractor │ │ │ │ ├── Extractor.java │ │ │ │ ├── ExtractorCommentProcessor.java │ │ │ │ ├── ExtractorContentResourceProcessor.java │ │ │ │ ├── ExtractorFieldProcessor.java │ │ │ │ ├── ExtractorHTMLProcessor.java │ │ │ │ ├── ExtractorJSProcessor.java │ │ │ │ ├── ExtractorPaginationProcessor.java │ │ │ │ └── ExtractorURIProcessor.java │ │ │ ├── fetch │ │ │ │ ├── FetchDNSProcessor.java │ │ │ │ └── FetchHTTPProcessor.java │ │ │ ├── post │ │ │ │ └── PostProcessor.java │ │ │ ├── prepare │ │ │ │ └── PrepareProcessor.java │ │ │ └── writer │ │ │ │ └── WriterProcessor.java │ │ │ ├── thread │ │ │ ├── ProcessorCallableThread.java │ │ │ ├── ProcessorManager.java │ │ │ ├── ProcessorRunnableThread.java │ │ │ └── ThreadPoolService.java │ │ │ └── util │ │ │ ├── CharsetHandler.java │ │ │ ├── CollectionUtils.java │ │ │ ├── DefaultURIHelper.java │ │ │ ├── File │ │ │ ├── DefaultFileHelper.java │ │ │ └── FileHelper.java │ │ │ ├── PropertiesUtil.java │ │ │ ├── URIHelper.java │ │ │ └── parser │ │ │ ├── HtmlParser.java │ │ │ ├── HtmlParserImpl.java │ │ │ ├── HtmlParserWrapper.java │ │ │ ├── HtmlParserWrapperImpl.java │ │ │ └── tag │ │ │ └── EmbedTag.java │ │ ├── domain │ │ ├── AcquisitionTemp.java │ │ ├── Article.java │ │ ├── ArticleCategory.java │ │ ├── CmsAcquisition.java │ │ ├── CrawlerRule.java │ │ ├── Permission.java │ │ ├── PermissionCategory.java │ │ ├── Role.java │ │ ├── Setting.java │ │ └── User.java │ │ ├── exception │ │ ├── CreateUserSaltException.java │ │ └── IncorrectCaptchaException.java │ │ ├── filter │ │ ├── AuthenticationFilter.java │ │ ├── CaptchaFormAuthenticationFilter.java │ │ ├── ShiroActionFilter.java │ │ ├── ShiroAnnotationsAuthorizingMethodInterceptor.java │ │ └── ShiroMethodInterceptor.java │ │ ├── module │ │ ├── ArticleModule.java │ │ ├── CaptchaModule.java │ │ ├── IndexModule.java │ │ ├── LoginModule.java │ │ ├── OauthLoginAct.java │ │ ├── PhotoModul.java │ │ ├── ShiroTestModule.java │ │ └── admin │ │ │ ├── AcquisitionAct.java │ │ │ ├── AdminKindeditor.java │ │ │ ├── AdminLoginAct.java │ │ │ ├── AdminRoleAct.java │ │ │ ├── AdminUserAct.java │ │ │ ├── ArticleAct.java │ │ │ ├── ArticleCategoryAct.java │ │ │ ├── CommonAct.java │ │ │ ├── CrawlerAct.java │ │ │ ├── FileAct.java │ │ │ ├── PermissionAct.java │ │ │ ├── PermissionCategoryAct.java │ │ │ ├── SalesAct.java │ │ │ ├── SettingAct.java │ │ │ └── StatisticsAct.java │ │ ├── mvc │ │ ├── ProcessTimeProcessor.java │ │ ├── mvc-chains.js │ │ └── view │ │ │ ├── AbstractCaptchaEngine.java │ │ │ ├── GMailEngine.java │ │ │ ├── JPEGView.java │ │ │ ├── JPEGViewMaker.java │ │ │ ├── JspSupportServlet.java │ │ │ └── captcha.js │ │ ├── service │ │ ├── AcquisitionService.java │ │ ├── AcquisitionTempService.java │ │ ├── ArticleCategoryService.java │ │ ├── ArticleService.java │ │ ├── BaseService.java │ │ ├── CrawlerRuleService.java │ │ ├── FileService.java │ │ ├── PermissionCategoryService.java │ │ ├── PermissionService.java │ │ ├── QuartzService.java │ │ ├── RoleService.java │ │ ├── SettingService.java │ │ └── UserService.java │ │ ├── shiro │ │ ├── authc │ │ │ └── pam │ │ │ │ └── AnySuccessfulStrategy.java │ │ ├── freemarker │ │ │ ├── AuthenticatedTag.java │ │ │ ├── GuestTag.java │ │ │ ├── HasAnyPermissionTag.java │ │ │ ├── HasAnyRolesTag.java │ │ │ ├── HasPermissionTag.java │ │ │ ├── HasRoleTag.java │ │ │ ├── LacksPermissionTag.java │ │ │ ├── LacksRoleTag.java │ │ │ ├── NotAuthenticatedTag.java │ │ │ ├── PermissionTag.java │ │ │ ├── PrincipalTag.java │ │ │ ├── RoleTag.java │ │ │ ├── SecureTag.java │ │ │ ├── ShiroTags.java │ │ │ └── UserTag.java │ │ └── realm │ │ │ ├── AbstractNutAuthoRealm.java │ │ │ ├── CaptchaUsernamePasswordToken.java │ │ │ ├── NutAuthoDaoRealm.java │ │ │ ├── NutDaoRealm.java │ │ │ ├── OAuthToken.java │ │ │ └── UsernamePasswordRealm.java │ │ ├── snakerflow │ │ └── SnakerFacets.java │ │ ├── socialauth │ │ ├── Constants.java │ │ ├── OAuthConfig.java │ │ └── SocialAuthConfig.java │ │ ├── utils │ │ ├── CommonUtils.java │ │ ├── DateTypeEditor.java │ │ ├── DirectiveUtils.java │ │ ├── HtmlParserImpl.java │ │ ├── MyUtils.java │ │ ├── ParamBean.java │ │ ├── ParseHtmlTool.java │ │ ├── SqlUtils.java │ │ ├── StrUtils.java │ │ └── SystemContext.java │ │ └── web │ │ └── freemarker │ │ ├── ArticleCategoryParentListDirective.java │ │ ├── ArticleCategoryRootListDirective.java │ │ ├── ArticleCategoryTreeDirective.java │ │ ├── ArticleListDirective.java │ │ ├── FreemarkerDirective.java │ │ ├── FreemarkerDirectiveFactory.java │ │ ├── HtmlCutDirective.java │ │ ├── PaginationDirective.java │ │ ├── PermissionDirective.java │ │ ├── PermissionShiroFreemarker.java │ │ ├── ProcessTimeDirective.java │ │ ├── TimeFormatDirective.java │ │ └── freemarker.properties ├── resources │ ├── flows │ │ ├── borrow.snaker │ │ └── leave.snaker │ ├── gathe_core.properties │ ├── init_system_h2.sql │ ├── ioc │ │ ├── dao.js │ │ ├── freemarker_tags.js │ │ └── upload.js │ ├── jdbc.properties │ ├── log4j.properties │ ├── msg │ │ └── zh_CN │ │ │ └── MessageResources.properties │ ├── oauth_consumer.properties │ ├── quartz.properties │ └── shiro.ini └── webapp │ ├── META-INF │ └── MANIFEST.MF │ ├── WEB-INF │ ├── .gitignore │ ├── ftl │ │ ├── pony │ │ │ ├── index.ftl │ │ │ └── ui │ │ │ │ ├── button.ftl │ │ │ │ ├── checkbox.ftl │ │ │ │ ├── checkboxlist-item.ftl │ │ │ │ ├── checkboxlist.ftl │ │ │ │ ├── common-attributes.ftl │ │ │ │ ├── control-close.ftl │ │ │ │ ├── control.ftl │ │ │ │ ├── crawler_form.ftl │ │ │ │ ├── editor.ftl │ │ │ │ ├── file.ftl │ │ │ │ ├── form-column.ftl │ │ │ │ ├── form.ftl │ │ │ │ ├── hidden.ftl │ │ │ │ ├── index.ftl │ │ │ │ ├── list.ftl │ │ │ │ ├── pagination.ftl │ │ │ │ ├── password.ftl │ │ │ │ ├── radio-item.ftl │ │ │ │ ├── radio.ftl │ │ │ │ ├── scripting-events.ftl │ │ │ │ ├── select.ftl │ │ │ │ ├── self_define_widget.ftl │ │ │ │ ├── shiro-author.ftl │ │ │ │ ├── span.ftl │ │ │ │ ├── table-batchoperate.ftl │ │ │ │ ├── table-column.ftl │ │ │ │ ├── table.ftl │ │ │ │ ├── table2.ftl │ │ │ │ ├── td.ftl │ │ │ │ ├── text.ftl │ │ │ │ ├── textarea.ftl │ │ │ │ ├── th.ftl │ │ │ │ ├── tr.ftl │ │ │ │ └── tree.ftl │ │ └── spring.ftl │ ├── template │ │ ├── admin │ │ │ ├── article │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── article_acquisition │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ ├── list.ftl │ │ │ │ ├── progress.ftl │ │ │ │ └── progress_data.ftl │ │ │ ├── article_category │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── common │ │ │ │ ├── error.ftl │ │ │ │ ├── head.ftl │ │ │ │ ├── index.ftl │ │ │ │ └── main.ftl │ │ │ ├── crawler │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── member │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── permission │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── permission_category │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── profile │ │ │ │ └── edit.ftl │ │ │ ├── role │ │ │ │ ├── add.ftl │ │ │ │ ├── edit.ftl │ │ │ │ └── list.ftl │ │ │ ├── sales │ │ │ │ ├── map.ftl │ │ │ │ └── view.ftl │ │ │ ├── setting │ │ │ │ ├── edit.ftl │ │ │ │ └── mail.ftl │ │ │ └── statistics │ │ │ │ ├── setting.ftl │ │ │ │ └── view.ftl │ │ ├── front │ │ │ ├── account │ │ │ │ └── create_user.ftl │ │ │ ├── article │ │ │ │ ├── content.ftl │ │ │ │ ├── list.ftl │ │ │ │ └── search.ftl │ │ │ ├── include │ │ │ │ ├── footer.ftl │ │ │ │ ├── header.ftl │ │ │ │ ├── pagination.ftl │ │ │ │ └── statistics.ftl │ │ │ └── index.ftl │ │ └── login │ │ │ └── login.ftl │ └── web.xml │ ├── index.jsp │ ├── login.jsp │ └── resources │ ├── admin │ ├── css │ │ ├── common.css │ │ ├── error.css │ │ ├── login.css │ │ └── main.css │ ├── datePicker │ │ ├── My97DatePicker.htm │ │ ├── WdatePicker.js │ │ ├── calendar.js │ │ ├── config.js │ │ ├── lang │ │ │ ├── en_US.js │ │ │ ├── zh_CN.js │ │ │ └── zh_TW.js │ │ └── skin │ │ │ ├── WdatePicker.css │ │ │ ├── datePicker.gif │ │ │ └── default │ │ │ ├── datepicker.css │ │ │ └── img.gif │ ├── fusionCharts │ │ ├── Charts │ │ │ └── FCF_Line.swf │ │ └── FusionCharts.js │ ├── images │ │ ├── common.gif │ │ ├── dialog_overlay.png │ │ ├── error.gif │ │ ├── file_icon.gif │ │ ├── folder_icon.gif │ │ ├── header_logo.gif │ │ ├── input.gif │ │ ├── list.gif │ │ ├── loading_bar.gif │ │ ├── loading_icon.gif │ │ ├── login.png │ │ ├── login_logo.gif │ │ ├── main.gif │ │ └── vote_bar.gif │ ├── js │ │ ├── common.js │ │ ├── input.js │ │ ├── jquery.event.drag.js │ │ ├── jquery.lSelect.js │ │ ├── jquery.min.js │ │ ├── jquery.tools.js │ │ ├── jquery.validate.js │ │ └── list.js │ └── kindeditor │ │ ├── kindeditor-min.js │ │ ├── lang │ │ ├── ar.js │ │ ├── en.js │ │ ├── zh_CN.js │ │ └── zh_TW.js │ │ ├── plugins │ │ ├── anchor │ │ │ └── anchor.js │ │ ├── clearhtml │ │ │ └── clearhtml.js │ │ ├── code │ │ │ ├── code.js │ │ │ ├── prettify.css │ │ │ └── prettify.js │ │ ├── emoticons │ │ │ ├── emoticons.js │ │ │ └── images │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 100.gif │ │ │ │ ├── 101.gif │ │ │ │ ├── 102.gif │ │ │ │ ├── 103.gif │ │ │ │ ├── 104.gif │ │ │ │ ├── 105.gif │ │ │ │ ├── 106.gif │ │ │ │ ├── 107.gif │ │ │ │ ├── 108.gif │ │ │ │ ├── 109.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 110.gif │ │ │ │ ├── 111.gif │ │ │ │ ├── 112.gif │ │ │ │ ├── 113.gif │ │ │ │ ├── 114.gif │ │ │ │ ├── 115.gif │ │ │ │ ├── 116.gif │ │ │ │ ├── 117.gif │ │ │ │ ├── 118.gif │ │ │ │ ├── 119.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 120.gif │ │ │ │ ├── 121.gif │ │ │ │ ├── 122.gif │ │ │ │ ├── 123.gif │ │ │ │ ├── 124.gif │ │ │ │ ├── 125.gif │ │ │ │ ├── 126.gif │ │ │ │ ├── 127.gif │ │ │ │ ├── 128.gif │ │ │ │ ├── 129.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 130.gif │ │ │ │ ├── 131.gif │ │ │ │ ├── 132.gif │ │ │ │ ├── 133.gif │ │ │ │ ├── 134.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 72.gif │ │ │ │ ├── 73.gif │ │ │ │ ├── 74.gif │ │ │ │ ├── 75.gif │ │ │ │ ├── 76.gif │ │ │ │ ├── 77.gif │ │ │ │ ├── 78.gif │ │ │ │ ├── 79.gif │ │ │ │ ├── 8.gif │ │ │ │ ├── 80.gif │ │ │ │ ├── 81.gif │ │ │ │ ├── 82.gif │ │ │ │ ├── 83.gif │ │ │ │ ├── 84.gif │ │ │ │ ├── 85.gif │ │ │ │ ├── 86.gif │ │ │ │ ├── 87.gif │ │ │ │ ├── 88.gif │ │ │ │ ├── 89.gif │ │ │ │ ├── 9.gif │ │ │ │ ├── 90.gif │ │ │ │ ├── 91.gif │ │ │ │ ├── 92.gif │ │ │ │ ├── 93.gif │ │ │ │ ├── 94.gif │ │ │ │ ├── 95.gif │ │ │ │ ├── 96.gif │ │ │ │ ├── 97.gif │ │ │ │ ├── 98.gif │ │ │ │ ├── 99.gif │ │ │ │ └── static.gif │ │ ├── filemanager │ │ │ ├── filemanager.js │ │ │ └── images │ │ │ │ ├── file-16.gif │ │ │ │ ├── file-64.gif │ │ │ │ ├── folder-16.gif │ │ │ │ ├── folder-64.gif │ │ │ │ └── go-up.gif │ │ ├── flash │ │ │ └── flash.js │ │ ├── image │ │ │ ├── image.js │ │ │ └── images │ │ │ │ ├── align_left.gif │ │ │ │ ├── align_right.gif │ │ │ │ ├── align_top.gif │ │ │ │ └── refresh.gif │ │ ├── insertfile │ │ │ └── insertfile.js │ │ ├── lineheight │ │ │ └── lineheight.js │ │ ├── link │ │ │ └── link.js │ │ ├── map │ │ │ ├── map.html │ │ │ └── map.js │ │ ├── media │ │ │ └── media.js │ │ ├── pagebreak │ │ │ └── pagebreak.js │ │ ├── plainpaste │ │ │ └── plainpaste.js │ │ ├── preview │ │ │ └── preview.js │ │ ├── quickformat │ │ │ └── quickformat.js │ │ ├── table │ │ │ └── table.js │ │ ├── template │ │ │ ├── html │ │ │ │ ├── 1.html │ │ │ │ ├── 2.html │ │ │ │ └── 3.html │ │ │ └── template.js │ │ └── wordpaste │ │ │ └── wordpaste.js │ │ └── themes │ │ ├── common │ │ ├── anchor.gif │ │ ├── blank.gif │ │ ├── flash.gif │ │ ├── loading.gif │ │ ├── media.gif │ │ └── rm.gif │ │ ├── default │ │ ├── bg.gif │ │ ├── default.css │ │ └── default.png │ │ └── simple │ │ └── simple.css │ └── front │ ├── css │ ├── article.css │ ├── common.css │ ├── selectarea.css │ └── style.css │ └── images │ ├── article.gif │ ├── bj_login.jpg │ ├── cart.gif │ ├── common.gif │ ├── dialog_overlay.png │ ├── enter.gif │ ├── error.jpg │ ├── facebook.jpg │ ├── facebook_header.png │ ├── github_logo.gif │ ├── index.gif │ ├── liencebox.png │ ├── loading_bar.gif │ ├── loading_icon.gif │ ├── login.gif │ ├── member.gif │ ├── message.gif │ ├── order.gif │ ├── password.gif │ ├── product.gif │ ├── qq_login.gif │ ├── register.gif │ ├── review.gif │ ├── spr.png │ ├── sprite.png │ ├── status.jpg │ ├── tabbg.jpg │ ├── tabbg.png │ └── title_y.jpg └── test └── resources ├── gathe_core.properties ├── ioc ├── dao.js └── upload.js ├── jdbc.properties └── log4j.properties /docker-compose.yml: -------------------------------------------------------------------------------- 1 | 2 | 3 | db: 4 | image: mariadb 5 | environment: 6 | MYSQL_ROOT_PASSWORD: root 7 | MYSQL_DATABASE: platform 8 | volumes: 9 | - /var/lib/mysql 10 | web: 11 | image: wendal/rk_cms 12 | links: 13 | - db 14 | ports: 15 | - "8080:8080" 16 | volumes: 17 | - "/dev/urandom:/dev/random" -------------------------------------------------------------------------------- /src/main/java/com/rekoe/MainModule.java: -------------------------------------------------------------------------------- 1 | package com.rekoe; 2 | 3 | import org.nutz.mvc.annotation.ChainBy; 4 | import org.nutz.mvc.annotation.Encoding; 5 | import org.nutz.mvc.annotation.Fail; 6 | import org.nutz.mvc.annotation.IocBy; 7 | import org.nutz.mvc.annotation.Localization; 8 | import org.nutz.mvc.annotation.Modules; 9 | import org.nutz.mvc.annotation.SetupBy; 10 | import org.nutz.mvc.annotation.Views; 11 | import org.nutz.mvc.impl.NutActionChainMaker; 12 | import org.nutz.mvc.ioc.provider.ComboIocProvider; 13 | import org.nutz.plugins.view.freemarker.FreemarkerViewMaker; 14 | 15 | @Modules(scanPackage = true) 16 | @IocBy(type = ComboIocProvider.class, args = { "*json", "com/rekoe/mvc/view/", "ioc/", "*anno", "com.rekoe", "*org.nutz.plugins.view.freemarker.FreemarkerIocLoader" }) 17 | @SetupBy(MvcSetup.class) 18 | @Fail(">>:/admin/common/unauthorized.rk") 19 | @Localization("msg") 20 | @Encoding(input = "UTF-8", output = "UTF-8") 21 | @ChainBy(type = NutActionChainMaker.class, args = { "com/rekoe/mvc/mvc-chains.js" }) 22 | @Views({ FreemarkerViewMaker.class }) 23 | public class MainModule { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_0.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_1.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_10.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_11.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_12.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_13.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_14.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_15.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_16.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_17.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_18.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_19.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_2.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_20.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_21.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_22.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_23.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_24.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_25.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_26.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_27.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_28.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_29.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_3.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_30.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_31.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_32.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_33.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_34.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_35.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_36.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_37.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_38.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_39.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_4.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_40.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_41.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_42.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_43.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_43.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_44.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_44.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_45.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_46.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_47.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_48.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_49.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_5.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_50.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_51.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_52.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_53.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_53.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_54.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_55.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_56.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_56.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_57.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_58.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_58.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_59.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_6.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_60.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_60.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_61.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_61.bmp -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_7.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_8.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/cms/captcha/captcha_bg_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/java/com/rekoe/cms/captcha/captcha_bg_9.jpg -------------------------------------------------------------------------------- /src/main/java/com/rekoe/common/Message.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.common; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.nutz.mvc.Mvcs; 6 | /** 7 | * @author 科技㊣²º¹³ 8 | * 2014年2月3日 下午4:48:45 9 | * http://www.rekoe.com 10 | * QQ:5382211 11 | */ 12 | public class Message { 13 | 14 | private Type type; 15 | private String content; 16 | 17 | public enum Type { 18 | success, warn, error; 19 | } 20 | 21 | public Message() { 22 | } 23 | 24 | public Message(Message.Type type, String content,HttpServletRequest req) { 25 | this.type = type; 26 | this.content = Mvcs.getMessage(req, content); 27 | } 28 | 29 | public static Message success(String content,HttpServletRequest req) { 30 | return new Message(Message.Type.success, content,req); 31 | } 32 | 33 | public static Message warn(String content,HttpServletRequest req) { 34 | return new Message(Message.Type.warn, content, req); 35 | } 36 | 37 | public static Message error(String content,HttpServletRequest req) { 38 | return new Message(Message.Type.error, content, req); 39 | } 40 | 41 | public Message.Type getType() { 42 | return this.type; 43 | } 44 | 45 | public void setType(Message.Type type) { 46 | this.type = type; 47 | } 48 | 49 | public String getContent() { 50 | return this.content; 51 | } 52 | 53 | public void setContent(String content) { 54 | this.content = content; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/common/page/Paginable.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.common.page; 2 | /** 3 | * @author 科技㊣²º¹³ 4 | * 2014年2月3日 下午4:48:45 5 | * http://www.rekoe.com 6 | * QQ:5382211 7 | */ 8 | public interface Paginable { 9 | 10 | /** 11 | * 总记录数 12 | * 13 | * @return 14 | */ 15 | public int getTotalCount(); 16 | 17 | /** 18 | * 总页数 19 | * 20 | * @return 21 | */ 22 | public int getTotalPage(); 23 | 24 | /** 25 | * 每页记录数 26 | * 27 | * @return 28 | */ 29 | public int getPageSize(); 30 | 31 | /** 32 | * 当前页号 33 | * 34 | * @return 35 | */ 36 | public int getPageNo(); 37 | 38 | /** 39 | * 是否第一页 40 | * 41 | * @return 42 | */ 43 | public boolean isFirstPage(); 44 | 45 | /** 46 | * 是否最后一页 47 | * 48 | * @return 49 | */ 50 | public boolean isLastPage(); 51 | 52 | /** 53 | * 返回下页的页号 54 | */ 55 | public int getNextPage(); 56 | 57 | /** 58 | * 返回上页的页号 59 | */ 60 | public int getPrePage(); 61 | 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/cache/DefaultHostCache.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.cache; 2 | 3 | import com.rekoe.crawler.core.data.uri.CrawlURI; 4 | 5 | /** 6 | * HttpHost对象缓存接口实现类 7 | */ 8 | public class DefaultHostCache implements HostCache { 9 | 10 | @Override 11 | public String getHttpHostUrl(CrawlURI crawlURI) { 12 | //String hostName = crawlURI.getHost(); 13 | //int port = crawlURI.getPort(); 14 | //if (StringUtils.isBlank(hostName)) { 15 | //hostName = crawlURI.getParentURI().getHost(); 16 | //port = crawlURI.getParentURI().getPort(); 17 | //} 18 | return crawlURI.getUrl(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/cache/HostCache.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.cache; 2 | 3 | import com.rekoe.crawler.core.data.uri.CrawlURI; 4 | 5 | /** 6 | * HttpHost对象缓存接口 7 | */ 8 | public interface HostCache { 9 | 10 | String getHttpHostUrl(CrawlURI crawlURI); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/constants/ICrawlerConfig.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.constants; 2 | 3 | import java.io.IOException; 4 | 5 | /** 6 | * 爬虫参数配置加载接口 7 | * @author javacoo 8 | * @since 2012-02-29 9 | */ 10 | public interface ICrawlerConfig { 11 | /** 12 | * 加载配置信息 13 | */ 14 | void loadCrawlerConfig(String path) throws IOException; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/data/queue/BlockingQueue.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.data.queue; 2 | 3 | import java.util.concurrent.LinkedBlockingQueue; 4 | /** 5 | * 队列 6 | * 采用jdk的LinkedBlockingQueue实现 7 | */ 8 | public class BlockingQueue implements Queue{ 9 | private LinkedBlockingQueue queue = new LinkedBlockingQueue(); 10 | /** 11 | * 入队列 12 | * @param t 13 | */ 14 | public void enQueue(T t){ 15 | try { 16 | queue.put(t); 17 | } catch (InterruptedException e) { 18 | // TODO Auto-generated catch block 19 | e.printStackTrace(); 20 | } 21 | } 22 | /** 23 | * 出队列 24 | * @return t 25 | */ 26 | public T deQueue(){ 27 | return queue.poll(); 28 | } 29 | /** 30 | * 判断队列是否为空 31 | * @return 32 | */ 33 | public boolean isEmpty(){ 34 | return queue.isEmpty(); 35 | } 36 | /** 37 | * 判断队列是否含有t 38 | * @param t 39 | * @return 40 | */ 41 | public boolean contains(T t){ 42 | return queue.contains(t); 43 | } 44 | /** 45 | * 取得队列大小 46 | * @return 47 | */ 48 | public int getSize(){ 49 | return queue.size(); 50 | } 51 | 52 | /** 53 | * 清空队列 54 | */ 55 | public void clear(){ 56 | queue.clear(); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/data/queue/Queue.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.data.queue; 2 | /** 3 | * 队列 4 | */ 5 | public interface Queue { 6 | /** 7 | * 入队列 8 | * @param t 9 | */ 10 | public void enQueue(T t); 11 | /** 12 | * 出队列 13 | * @return t 14 | */ 15 | public T deQueue(); 16 | /** 17 | * 判断队列是否为空 18 | * @return 19 | */ 20 | public boolean isEmpty(); 21 | /** 22 | * 判断队列是否含有t 23 | * @param t 24 | * @return 25 | */ 26 | public boolean contains(T t); 27 | /** 28 | * 取得队列大小 29 | * @return 30 | */ 31 | public int getSize(); 32 | /** 33 | * 清空队列 34 | */ 35 | public void clear(); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/data/queue/SimpleQueue.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.data.queue; 2 | 3 | import java.util.LinkedList; 4 | /** 5 | * 队列 6 | * 先进后出、 7 | */ 8 | public class SimpleQueue implements Queue{ 9 | private LinkedList queue = new LinkedList(); 10 | /** 11 | * 入队列 12 | * @param t 13 | */ 14 | public void enQueue(T t){ 15 | queue.addFirst(t); 16 | } 17 | /** 18 | * 出队列 19 | * @return t 20 | */ 21 | public T deQueue(){ 22 | return queue.removeFirst(); 23 | } 24 | /** 25 | * 判断队列是否为空 26 | * @return 27 | */ 28 | public boolean isEmpty(){ 29 | return queue.isEmpty(); 30 | } 31 | /** 32 | * 判断队列是否含有t 33 | * @param t 34 | * @return 35 | */ 36 | public boolean contains(T t){ 37 | return queue.contains(t); 38 | } 39 | /** 40 | * 取得队列大小 41 | * @return 42 | */ 43 | public int getSize(){ 44 | return queue.size(); 45 | } 46 | /** 47 | * 清空队列 48 | */ 49 | public void clear(){ 50 | queue.clear(); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/data/queue/TaskQueue.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.data.queue; 2 | /** 3 | * 任务队列接口 4 | */ 5 | public interface TaskQueue { 6 | /** 7 | * 获得任务对象 队列 8 | * @return 9 | */ 10 | Queue getUnExecTask(); 11 | /** 12 | * 未执行的任务对象 出队列 13 | * @return 14 | */ 15 | T unExecTaskDeQueue(); 16 | /** 17 | * 保证每个任务对象 只被执行一次 18 | * @param t 19 | */ 20 | void addUnExecTask(T t); 21 | /** 22 | * 判断是否为空 23 | * @return 24 | */ 25 | boolean isEmpty(); 26 | /** 27 | * 未执行任务对象数量 28 | * @return 29 | */ 30 | int getUnExecTaskNum(); 31 | /** 32 | * 添加到执行过的任务对象队列中 33 | * @param t 34 | */ 35 | void addExecTask(T t); 36 | /** 37 | * 删除执行过的任务对象 38 | * @param t 39 | */ 40 | void removeExecTask(T t); 41 | /** 42 | * 已执行任务对象数量 43 | * @return 44 | */ 45 | int getExecTaskNum(); 46 | /** 47 | * 清空任务队列 48 | */ 49 | void clear(); 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/data/uri/CrawlURI.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.data.uri; 2 | /** 3 | * 爬虫URI对象接口 4 | */ 5 | public interface CrawlURI { 6 | /**取得父URI对象*/ 7 | CrawlURI getParentURI(); 8 | /**取得当前URL*/ 9 | String getUrl(); 10 | /**取得主机名*/ 11 | String getHost(); 12 | /**取得端口*/ 13 | int getPort(); 14 | /**取得路径类型*/ 15 | String getPathType(); 16 | /**取得RawPath*/ 17 | String getRawPath(); 18 | /**取得名称*/ 19 | String getName(); 20 | /**取得描述*/ 21 | String getDesc(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/BriefAreaFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-摘要区域过滤 7 | */ 8 | public class BriefAreaFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public BriefAreaFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_BRIEF_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/CommentAreaFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-评论内容列表区域过滤 7 | */ 8 | public class CommentAreaFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public CommentAreaFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_COMMENT_LIST_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/CommentFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-评论内容区域过滤 7 | */ 8 | public class CommentFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public CommentFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_COMMENT_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/CommentIndexFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-评论列表入口连接区域过滤 7 | */ 8 | public class CommentIndexFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public CommentIndexFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_COMMENT_INDEX_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/CommentLinkFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-评论链接区域过滤 7 | */ 8 | public class CommentLinkFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public CommentLinkFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_COMMENT_LINK_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/ContentAreaFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | 6 | /** 7 | * 过滤器接口实现类-内容区域过滤 8 | */ 9 | public class ContentAreaFilter extends AbstractFilter{ 10 | /** 11 | *
  • 约定采集参数格式如下
  • 12 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 13 | *
  • 2,标签名称形式,如:div,p,span
  • 14 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 15 | * @param fethAreaTagStr 要采集的区域标签字符串 16 | * @param deleteAreaTagStr 要过滤的区域标签字符串 17 | */ 18 | public ContentAreaFilter(String fethAreaTagStr, String deleteAreaTagStr){ 19 | super(fethAreaTagStr,deleteAreaTagStr); 20 | this.filterName = Constants.FILTER_NAME_CONTENT_AREA; 21 | } 22 | /** 23 | * 构建标签属性Map 24 | */ 25 | public void buildFilterMap(){ 26 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 27 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/EmptyFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-空过滤器 7 | */ 8 | public class EmptyFilter extends AbstractFilter{ 9 | /** 10 | * 空过滤器 11 | *
  • 约定采集参数格式如下
  • 12 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 13 | *
  • 2,标签名称形式,如:div,p,span
  • 14 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 15 | * @param fethAreaTagStr 要采集的区域标签字符串 16 | * @param deleteAreaTagStr 要过滤的区域标签字符串 17 | */ 18 | public EmptyFilter(String fethAreaTagStr, String deleteAreaTagStr){ 19 | super(fethAreaTagStr,deleteAreaTagStr); 20 | this.filterName = Constants.FILTER_NAME_EMPTY; 21 | } 22 | /** 23 | * 构建标签属性Map 24 | */ 25 | public void buildFilterMap(){ 26 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 27 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/FieldFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import java.util.Map; 4 | 5 | import com.rekoe.crawler.core.constants.Constants; 6 | 7 | 8 | /** 9 | * 过滤器接口实现类-字段过滤 10 | *
  • 采集指定参数的内容到指定字段
  • 11 | * @author javacoo 12 | * @since 2011-12-03 13 | * @LastModify 2012-05-12 14 | */ 15 | public class FieldFilter extends AbstractFilter>{ 16 | /** 17 | *
  • 约定采集参数格式如下
  • 18 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 19 | *
  • 2,标签名称形式,如:div,p,span
  • 20 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 21 | * @param fieldName 采集到的内容将保存到该字段 22 | * @param fethAreaTagStr 要采集的区域标签字符串 23 | * @param filterAreaTagStr 要过滤的区域标签字符串 24 | */ 25 | public FieldFilter(String fieldName,String fethAreaTagStr, String filterAreaTagStr){ 26 | super(fieldName,fethAreaTagStr,filterAreaTagStr); 27 | this.filterName = Constants.FILTER_NAME_FIELD; 28 | } 29 | 30 | /** 31 | * 构建标签属性Map 32 | */ 33 | public void buildFilterMap(){ 34 | this.fetchAreaTagMap.put(this.fieldName, parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr)); 35 | this.deleteAreaTagMap.put(this.fieldName, parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/Filter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import java.util.Map; 4 | /** 5 | * 过滤器接口 6 | */ 7 | public interface Filter { 8 | /** 9 | * 取得当前过滤器名称 10 | * @return 过滤器名称 11 | */ 12 | String getFilterName(); 13 | /** 14 | * 取得当前过滤器内容 15 | * @return 过滤器内容 16 | */ 17 | Map getFilter(); 18 | /** 19 | * 取得待提取区域标签属性Map 20 | * @return 待提取区域标签属性Map 21 | */ 22 | Map getFetchAreaTagMap(); 23 | /** 24 | * 取得待提取区域中要删除的标签属性Map 25 | * @return 待提取区域中要删除的标签属性Map 26 | */ 27 | Map getDeleteAreaTagMap(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/LinkAreaFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-连接区域过滤 7 | */ 8 | public class LinkAreaFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public LinkAreaFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_LINK_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/PaginationAreaFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter; 2 | 3 | import com.rekoe.crawler.core.constants.Constants; 4 | 5 | /** 6 | * 过滤器接口实现类-内容分页链接区域过滤 7 | */ 8 | public class PaginationAreaFilter extends AbstractFilter{ 9 | /** 10 | *
  • 约定采集参数格式如下
  • 11 | *
  • 1,标签属性/值形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN
  • 12 | *
  • 2,标签名称形式,如:div,p,span
  • 13 | *
  • 3,混合形式,如:class=articleList|tips,id=fxwb|fxMSN|fxMSN,div,p,span
  • 14 | * @param fethAreaTagStr 要采集的区域标签字符串 15 | * @param deleteAreaTagStr 要过滤的区域标签字符串 16 | */ 17 | public PaginationAreaFilter(String fethAreaTagStr, String deleteAreaTagStr){ 18 | super(fethAreaTagStr,deleteAreaTagStr); 19 | this.filterName = Constants.FILTER_NAME_PAGINATION_AREA; 20 | } 21 | /** 22 | * 构建标签属性Map 23 | */ 24 | public void buildFilterMap(){ 25 | this.fetchAreaTagMap = parserAreaTagStrToBuildFilterMap(this.fethAreaTagStr); 26 | this.deleteAreaTagMap = parserAreaTagStrToBuildFilterMap(this.deleteAreaTagStr); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/filter/factory/FilterFactory.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.filter.factory; 2 | 3 | import java.util.List; 4 | 5 | import com.rekoe.crawler.core.filter.Filter; 6 | 7 | /** 8 | * 过滤器工厂 9 | */ 10 | public interface FilterFactory { 11 | /** 12 | * 注册过滤器 13 | * @param filterList 过滤器集合 14 | */ 15 | void register(List> filterList); 16 | /** 17 | * 注册多个过滤器 18 | *

    方法说明:

    19 | *
  • 20 | * @auther DuanYong 21 | * @since 2013-3-23 下午11:05:13 22 | * @param filterList 23 | * @return void 24 | */ 25 | void registerMulteity(List> filterList); 26 | /** 27 | * 根据过滤器名称查找已注册过滤器,如果未找到则返回一个空的过滤器 28 | * @param filterName 过滤器名称 29 | * @return 过滤器 30 | */ 31 | Filter getFilterByName(String filterName); 32 | /** 33 | * 根据过滤器名称查找已注册过滤器集合,如果未找到则返回一个空的过滤器 34 | * @param filterName 过滤器名称 35 | * @return 过滤器 36 | */ 37 | List> getFilterListByName(String filterName); 38 | /** 39 | * 清理缓存 40 | */ 41 | void clear(); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/frontier/Frontier.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.frontier; 2 | 3 | import com.rekoe.crawler.core.CrawlerController; 4 | import com.rekoe.crawler.core.data.Task; 5 | 6 | 7 | 8 | /** 9 | * 边界控制器 接口 10 | * 主要是加载爬行种子链接并根据加载的种子链接初始化任务队列,以备线程控制器(ProcessorThreadPool)开启的任务执行线程(ProcessorThread)使用 11 | */ 12 | public interface Frontier { 13 | /** 14 | * 初始化 15 | *
  • 加载爬行种子链接
  • 16 | *
  • 初始化任务队列
  • 17 | * @param c 控制器对象 18 | */ 19 | void initialize(CrawlerController c); 20 | /** 21 | * 取得下一个任务 22 | * @return 下一个任务 23 | */ 24 | Task next(); 25 | /** 26 | * 是否为空 27 | * @return 28 | */ 29 | boolean isEmpty(); 30 | /** 31 | * 完成任务 32 | * @param task 任务 33 | */ 34 | void finished(Task task); 35 | /** 36 | * 取得任务总数 37 | * @return 任务总数 38 | */ 39 | int getTaskSize(); 40 | /** 41 | * 取得未执行任务总数 42 | * @return 未执行任务总数 43 | */ 44 | int getUnExecTaskNum(); 45 | /** 46 | * 取得已执行任务总数 47 | * @return 已执行任务总数 48 | */ 49 | int getExecTaskNum(); 50 | /** 51 | * 销毁对象 52 | */ 53 | void destory(); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/AbstractProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor; 2 | 3 | import org.apache.commons.logging.Log; 4 | import org.apache.commons.logging.LogFactory; 5 | 6 | import com.rekoe.crawler.core.data.Task; 7 | 8 | 9 | /** 10 | * 任务处理器接口抽象实现类 11 | */ 12 | public abstract class AbstractProcessor implements Processor{ 13 | 14 | protected static Log log = LogFactory.getLog(AbstractProcessor.class); 15 | /**默认下一个处理器*/ 16 | private Processor defaultNextProcessor = null; 17 | 18 | public void process(Task task) { 19 | task.setNextProcessor(getDefaultNextProcessor()); 20 | innerProcess(task); 21 | } 22 | /** 23 | * 具体处理任务细节由子类实现 24 | */ 25 | protected abstract void innerProcess(Task task); 26 | 27 | public Processor getDefaultNextProcessor() { 28 | return defaultNextProcessor; 29 | } 30 | 31 | public void setDefaultNextProcessor(Processor defaultNextProcessor) { 32 | this.defaultNextProcessor = defaultNextProcessor; 33 | } 34 | 35 | 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/Processor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor; 2 | 3 | import com.rekoe.crawler.core.data.Task; 4 | 5 | 6 | /** 7 | * 任务处理器接口 8 | */ 9 | public interface Processor { 10 | /** 11 | * 处理任务 12 | * @param task 任务 13 | */ 14 | void process(Task task); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/ProcessorChain.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor; 2 | 3 | /** 4 | * 任务处理器链 5 | */ 6 | public class ProcessorChain { 7 | /** 下一个处理器链 */ 8 | private ProcessorChain nextProcessorChain; 9 | /** 第一个处理器 */ 10 | private Processor firstProcessor; 11 | 12 | public ProcessorChain(Processor firstProcessor) { 13 | super(); 14 | this.firstProcessor = firstProcessor; 15 | } 16 | 17 | public ProcessorChain getNextProcessorChain() { 18 | return nextProcessorChain; 19 | } 20 | 21 | public void setNextProcessorChain(ProcessorChain nextProcessorChain) { 22 | this.nextProcessorChain = nextProcessorChain; 23 | } 24 | 25 | public Processor getFirstProcessor() { 26 | return firstProcessor; 27 | } 28 | 29 | public void setFirstProcessor(Processor firstProcessor) { 30 | this.firstProcessor = firstProcessor; 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/extractor/Extractor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.extractor; 2 | 3 | import java.util.Iterator; 4 | import java.util.Map; 5 | 6 | import org.apache.commons.lang3.StringUtils; 7 | 8 | import com.rekoe.crawler.core.data.Task; 9 | import com.rekoe.crawler.core.processor.AbstractProcessor; 10 | 11 | /** 12 | * 任务处理器接口-抽取内容抽象实现类 13 | *
  • 抽取链 : 当提取完成时 , 抽取感兴趣的 HTML 和 JavaScript , 通常那里有新的要抓抽取的 URL
  • 14 | */ 15 | public abstract class Extractor extends AbstractProcessor { 16 | public Extractor() { 17 | super(); 18 | } 19 | protected void innerProcess(Task task) { 20 | extract(task); 21 | } 22 | /** 23 | * 抽取内容有具体子类实现 24 | * @param task 任务 25 | */ 26 | protected abstract void extract(Task task); 27 | 28 | /** 29 | * 替换指定关键字 30 | * @param task 任务 31 | * @param html 原始内容 32 | * @return 替换后的内容 33 | */ 34 | protected String replaceWords(Task task, String html) { 35 | if(StringUtils.isNotBlank(html) && null != task.getController().getCrawlScope().getReplaceWordsMap()){ 36 | Map replaceMap = task.getController().getCrawlScope().getReplaceWordsMap(); 37 | for(Iterator it = replaceMap.keySet().iterator();it.hasNext();){ 38 | String key = it.next(); 39 | html = html.replaceAll(key, replaceMap.get(key)); 40 | } 41 | } 42 | return html; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/extractor/ExtractorFieldProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.extractor; 2 | 3 | import java.util.Map; 4 | 5 | import org.apache.commons.lang3.StringUtils; 6 | import org.nutz.json.Json; 7 | import org.nutz.log.Logs; 8 | 9 | import com.rekoe.crawler.core.data.Task; 10 | 11 | /** 12 | * 任务处理器接口-抽取FIELD内容实现类 13 | *
  • 抽取链 : 提取内容到指定字段
  • 14 | */ 15 | public class ExtractorFieldProcessor extends Extractor{ 16 | 17 | private static final org.nutz.log.Log log = Logs.get(); 18 | public ExtractorFieldProcessor() { 19 | super(); 20 | } 21 | 22 | @Override 23 | protected void extract(Task task) { 24 | processorHTML(task); 25 | } 26 | 27 | private void processorHTML(Task task){ 28 | log.info("=========提取内容到指定字段========="); 29 | String extendStr = task.getController().getCrawlScope().getExtendField(); 30 | if(StringUtils.isNotBlank(extendStr)){ 31 | Map extendMap = Json.fromJsonAsMap(String.class, extendStr); 32 | task.getContentBean().getFieldValueMap().putAll(extendMap); 33 | } 34 | task.getContentBean().getFieldValueMap().putAll(task.getController().getHtmlParserWrapper().getFieldValues(task.getContentBean().getOrginHtml())); 35 | 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/extractor/ExtractorJSProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.extractor; 2 | 3 | import com.rekoe.crawler.core.data.Task; 4 | 5 | 6 | /** 7 | * 任务处理器接口-抽取js内容实现类 8 | */ 9 | public class ExtractorJSProcessor extends Extractor{ 10 | 11 | public ExtractorJSProcessor() { 12 | super(); 13 | } 14 | @Override 15 | protected void extract(Task task) { 16 | 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/extractor/ExtractorURIProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.extractor; 2 | 3 | import com.rekoe.crawler.core.data.Task; 4 | 5 | 6 | 7 | /** 8 | * 任务处理器接口-抽取URL内容实现类 9 | */ 10 | public class ExtractorURIProcessor extends Extractor { 11 | static final String ABS_HTTP_URI_PATTERN = "^https?://[^\\s<>]*$"; 12 | 13 | public ExtractorURIProcessor() { 14 | super(); 15 | } 16 | @Override 17 | protected void extract(Task task) { 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/fetch/FetchDNSProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.fetch; 2 | 3 | import org.nutz.log.Logs; 4 | 5 | import com.rekoe.crawler.core.data.Task; 6 | import com.rekoe.crawler.core.processor.AbstractProcessor; 7 | 8 | /** 9 | * 任务处理器接口-提取DNS实现类
  • 提取链:主要是下载网页,进行 DNS 转换,填写请求和响应表单
  • 10 | */ 11 | public class FetchDNSProcessor extends AbstractProcessor { 12 | private static final org.nutz.log.Log log = Logs.get(); 13 | 14 | public FetchDNSProcessor() { 15 | super(); 16 | } 17 | 18 | @Override 19 | protected void innerProcess(Task task) { 20 | fetchHTML(task); 21 | } 22 | 23 | /** 24 | * 根据任务URL地址,取得HTML 25 | * 26 | * @param task 27 | * 任务 28 | */ 29 | private void fetchHTML(Task task) { 30 | log.info("=========下载网页,提取原始html========="); 31 | String html = task.getController().getHandler().handleResponse(task.getController().getHostCache().getHttpHostUrl(task.getCrawlURI())); 32 | task.getContentBean().setOrginHtml(html); 33 | log.info("=========HTML内容========="); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/fetch/FetchHTTPProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.fetch; 2 | 3 | import com.rekoe.crawler.core.data.Task; 4 | import com.rekoe.crawler.core.processor.AbstractProcessor; 5 | 6 | /** 7 | * 任务处理器接口-提取HTTP实现类 8 | */ 9 | public class FetchHTTPProcessor extends AbstractProcessor{ 10 | 11 | public FetchHTTPProcessor() { 12 | super(); 13 | } 14 | 15 | @Override 16 | protected void innerProcess(Task task) { 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/post/PostProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.post; 2 | 3 | import com.rekoe.crawler.core.data.Task; 4 | import com.rekoe.crawler.core.processor.AbstractProcessor; 5 | 6 | /** 7 | * 任务处理器接口-提交链实现类 8 | *
  • 做和此 任务相关操作的最后处理
  • 9 | */ 10 | public class PostProcessor extends AbstractProcessor{ 11 | 12 | public PostProcessor() { 13 | super(); 14 | } 15 | 16 | @Override 17 | protected void innerProcess(Task task) { 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/processor/writer/WriterProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.processor.writer; 2 | 3 | import org.nutz.log.Logs; 4 | 5 | import com.rekoe.crawler.core.data.Task; 6 | import com.rekoe.crawler.core.processor.AbstractProcessor; 7 | 8 | /** 9 | * 任务处理器接口-写链实现类 10 | *
  • 写链:存储抓取结果,可以在这一步直接做全文索引
  • 11 | */ 12 | public class WriterProcessor extends AbstractProcessor{ 13 | 14 | private static final org.nutz.log.Log log = Logs.get(); 15 | public WriterProcessor() { 16 | super(); 17 | } 18 | 19 | @Override 20 | protected void innerProcess(Task task) { 21 | log.info("=========存储抓取结果========="); 22 | //过滤指定区域内容 23 | String html = task.getController().getHtmlParserWrapper().filterTargetContentHtml(task.getContentBean().getContent()); 24 | task.getContentBean().setContent(html); 25 | task.getController().addArticle(task); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/CharsetHandler.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util; 2 | 3 | import org.nutz.http.Http; 4 | 5 | public class CharsetHandler { 6 | private String charset; 7 | 8 | public CharsetHandler(String charset) { 9 | this.charset = charset; 10 | } 11 | 12 | public String handleResponse(String url) { 13 | return Http.get(url).getContent(charset); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/File/DefaultFileHelper.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util.File; 2 | 3 | import java.io.File; 4 | import java.io.InputStream; 5 | 6 | import org.nutz.lang.Files; 7 | 8 | /** 9 | * 文件操作工具类接口实现类 10 | */ 11 | public class DefaultFileHelper implements FileHelper { 12 | /** 13 | * 保存文件 14 | */ 15 | public void saveFile(InputStream in, String savePath) { 16 | mkdir(savePath); 17 | File file = new File(savePath); 18 | Files.write(file, in); 19 | } 20 | 21 | private void mkdir(String savePath) { 22 | Files.makeDir(new File(savePath)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/File/FileHelper.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util.File; 2 | 3 | import java.io.InputStream; 4 | 5 | /** 6 | * 文件操作工具类接口 7 | */ 8 | public interface FileHelper { 9 | /** 10 | * 保存文件 11 | * @param in InputStream 12 | * @param savePath 文件全路径 13 | */ 14 | void saveFile(InputStream in,String savePath); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/PropertiesUtil.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util; 2 | 3 | import java.io.File; 4 | import java.io.FileInputStream; 5 | import java.io.IOException; 6 | import java.util.Properties; 7 | 8 | import org.nutz.log.Logs; 9 | 10 | public class PropertiesUtil { 11 | private static final org.nutz.log.Log log = Logs.get(); 12 | /** 13 | * 将文件读取成Properties 14 | * @param filePath 15 | * @return 16 | */ 17 | public static Properties getProFromFilePath(String filePath) { 18 | File file = new File(filePath); 19 | Properties prop = new Properties(); 20 | FileInputStream istream = null; 21 | try { 22 | istream = new FileInputStream(file.getAbsolutePath()); 23 | prop.load(istream); 24 | } catch (IOException e) { 25 | log.error("初始化爬虫配置文件失败: [文件名:" + file.getName() + " ]", e); 26 | return null; 27 | } finally { 28 | try { 29 | if (istream != null) 30 | istream.close(); 31 | } catch (Exception ex) { 32 | ex.printStackTrace(); 33 | } 34 | } 35 | return prop; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/URIHelper.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util; 2 | 3 | import com.rekoe.crawler.core.data.uri.CrawlLinkURI; 4 | import com.rekoe.crawler.core.data.uri.CrawlResURI; 5 | import com.rekoe.crawler.core.data.uri.CrawlURI; 6 | 7 | /** 8 | * URI帮助类接口 9 | */ 10 | public interface URIHelper { 11 | /** 12 | * 组装 CrawlURI对象 13 | * 14 | * @param crawlURI 15 | * 父URI对象 16 | * @param urlStr 17 | * url 18 | * @param title 19 | * 标题 20 | * @param type 21 | * 类型 22 | * @return CrawlURI 23 | */ 24 | CrawlLinkURI populateCrawlURI(CrawlURI crawlURI, String urlStr, String title); 25 | 26 | /** 27 | * 组装 ResURI对象 28 | * 29 | * @param crawlURI 30 | * 父URI对象 31 | * @param originUrl 32 | * 源URL 33 | * @param newUrl 34 | * 新URL 35 | * @param resType 36 | * 资源类型 37 | * @return ResURI 38 | */ 39 | CrawlResURI populateResURI(CrawlURI crawlURI, String originUrl, String newUrl, String resType); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/crawler/core/util/parser/tag/EmbedTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.crawler.core.util.parser.tag; 2 | 3 | import org.htmlparser.tags.CompositeTag; 4 | /** 5 | * 自定义标签 6 | *
  • 抽取链 : 当提取完成时 , 抽取感兴趣的 HTML 或者 JavaScript等
  • 7 | */ 8 | public class EmbedTag extends CompositeTag { 9 | private static final long serialVersionUID = 1L; 10 | private static final String[] mIds = new String[] {"embed"}; 11 | private static final String SRC = "src"; 12 | private static final String TYPE = "type"; 13 | public String[] getIds() { 14 | return mIds; 15 | } 16 | 17 | public String[] getEnders() { 18 | return mIds; 19 | } 20 | 21 | public String getSrc(){ 22 | return this.getAttribute(SRC); 23 | } 24 | public void setSrc(String value){ 25 | this.setAttribute(SRC, value); 26 | } 27 | public String getType(){ 28 | return this.getAttribute(TYPE); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/domain/AcquisitionTemp.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.domain; 2 | 3 | import org.nutz.dao.entity.annotation.ColDefine; 4 | import org.nutz.dao.entity.annotation.ColType; 5 | import org.nutz.dao.entity.annotation.Column; 6 | import org.nutz.dao.entity.annotation.Id; 7 | import org.nutz.dao.entity.annotation.Table; 8 | 9 | @Table("acquisition_temp") 10 | public class AcquisitionTemp { 11 | 12 | @Id 13 | private int id; 14 | @Column(hump = true) 15 | @ColDefine(width = 1024) 16 | private String contentUrl; 17 | @Column 18 | @ColDefine(width = 100) 19 | private String title; 20 | @Column 21 | @ColDefine(type = ColType.INT, width = 3) 22 | private int percent; 23 | 24 | public int getId() { 25 | return id; 26 | } 27 | 28 | public void setId(int id) { 29 | this.id = id; 30 | } 31 | 32 | public String getContentUrl() { 33 | return contentUrl; 34 | } 35 | 36 | public void setContentUrl(String contentUrl) { 37 | this.contentUrl = contentUrl; 38 | } 39 | 40 | public String getTitle() { 41 | return title; 42 | } 43 | 44 | public void setTitle(String title) { 45 | this.title = title; 46 | } 47 | 48 | public int getPercent() { 49 | return percent; 50 | } 51 | 52 | public void setPercent(int percent) { 53 | this.percent = percent; 54 | } 55 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/exception/CreateUserSaltException.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.exception; 2 | 3 | import org.apache.shiro.authc.AuthenticationException; 4 | /** 5 | * @author 科技㊣²º¹³ 6 | * 2014年2月3日 下午4:48:45 7 | * http://www.rekoe.com 8 | * QQ:5382211 9 | */ 10 | public class CreateUserSaltException extends AuthenticationException { 11 | 12 | private static final long serialVersionUID = 3315875923669742156L; 13 | 14 | public CreateUserSaltException() { 15 | super(); 16 | } 17 | 18 | public CreateUserSaltException(String message, Throwable cause) { 19 | super(message, cause); 20 | } 21 | 22 | public CreateUserSaltException(String message) { 23 | super(message); 24 | } 25 | 26 | public CreateUserSaltException(Throwable cause) { 27 | super(cause); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/exception/IncorrectCaptchaException.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.exception; 2 | 3 | import org.apache.shiro.authc.AuthenticationException; 4 | /** 5 | * @author 科技㊣²º¹³ 6 | * 2014年2月3日 下午4:48:45 7 | * http://www.rekoe.com 8 | * QQ:5382211 9 | */ 10 | public class IncorrectCaptchaException extends AuthenticationException { 11 | 12 | private static final long serialVersionUID = 3315875923669742156L; 13 | 14 | public IncorrectCaptchaException() { 15 | super(); 16 | } 17 | 18 | public IncorrectCaptchaException(String message, Throwable cause) { 19 | super(message, cause); 20 | } 21 | 22 | public IncorrectCaptchaException(String message) { 23 | super(message); 24 | } 25 | 26 | public IncorrectCaptchaException(Throwable cause) { 27 | super(cause); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/filter/AuthenticationFilter.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.filter; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.apache.shiro.authc.AuthenticationToken; 6 | import org.apache.shiro.authc.UsernamePasswordToken; 7 | import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; 8 | import org.nutz.mvc.ActionContext; 9 | import org.nutz.mvc.ActionFilter; 10 | import org.nutz.mvc.View; 11 | /** 12 | * @author 科技㊣²º¹³ 13 | * 2014年2月3日 下午4:48:45 14 | * http://www.rekoe.com 15 | * QQ:5382211 16 | */ 17 | public class AuthenticationFilter extends FormAuthenticationFilter implements ActionFilter { 18 | 19 | protected AuthenticationToken createToken(HttpServletRequest request) { 20 | String username = getUsername(request); 21 | String password = getPassword(request); 22 | boolean rememberMe = isRememberMe(request); 23 | String host = getHost(request); 24 | return new UsernamePasswordToken(username, password, rememberMe, host); 25 | } 26 | 27 | @Override 28 | public View match(ActionContext actionContext) { 29 | HttpServletRequest request = actionContext.getRequest(); 30 | AuthenticationToken authenticationToken = createToken(request); 31 | request.setAttribute("loginToken", authenticationToken); 32 | return null; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/filter/ShiroAnnotationsAuthorizingMethodInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.filter; 2 | 3 | import org.apache.shiro.aop.MethodInvocation; 4 | import org.apache.shiro.authz.AuthorizationException; 5 | import org.apache.shiro.authz.aop.AnnotationsAuthorizingMethodInterceptor; 6 | 7 | /** 8 | * 这个类的目的仅仅是暴露AnnotationsAuthorizingMethodInterceptor的assertAuthorized方法 9 | * @author wendal 10 | * 11 | */ 12 | class ShiroAnnotationsAuthorizingMethodInterceptor extends AnnotationsAuthorizingMethodInterceptor { 13 | 14 | public static final ShiroAnnotationsAuthorizingMethodInterceptor DEFAULT_AUTH = new ShiroAnnotationsAuthorizingMethodInterceptor(); 15 | 16 | public void assertAuthorized(MethodInvocation methodInvocation) throws AuthorizationException { 17 | super.assertAuthorized(methodInvocation); 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/filter/ShiroMethodInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.filter; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import org.apache.shiro.aop.MethodInvocation; 6 | import org.apache.shiro.authz.AuthorizationException; 7 | import org.nutz.aop.InterceptorChain; 8 | import org.nutz.aop.MethodInterceptor; 9 | import org.nutz.lang.Lang; 10 | 11 | /** 12 | * 将Shiro注解,映射为NutAop的拦截器 13 | * @author wendal 14 | * 15 | */ 16 | public class ShiroMethodInterceptor implements MethodInterceptor { 17 | 18 | public void filter(final InterceptorChain chain) throws Throwable { 19 | 20 | try { 21 | ShiroAnnotationsAuthorizingMethodInterceptor.DEFAULT_AUTH.assertAuthorized(new MethodInvocation() { 22 | 23 | //这个方法不会被执行的. 24 | public Object proceed() throws Throwable { 25 | throw Lang.noImplement(); 26 | } 27 | 28 | public Object getThis() { 29 | return chain.getCallingObj(); 30 | } 31 | 32 | public Method getMethod() { 33 | return chain.getCallingMethod(); 34 | } 35 | 36 | public Object[] getArguments() { 37 | return chain.getArgs(); 38 | } 39 | }); 40 | } catch (AuthorizationException e) { 41 | // TODO 该如何处理呢? 交给用户自定义? 42 | throw Lang.wrapThrow(e); 43 | } 44 | chain.doChain(); //继续下一个拦截器 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/module/CaptchaModule.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.module; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.nutz.ioc.loader.annotation.Inject; 6 | import org.nutz.ioc.loader.annotation.IocBean; 7 | import org.nutz.mvc.annotation.At; 8 | import org.nutz.mvc.annotation.Filters; 9 | import org.nutz.mvc.annotation.Ok; 10 | 11 | import com.octo.captcha.service.image.ImageCaptchaService; 12 | 13 | /** 14 | * @author 科技㊣²º¹³ 15 | * 2014年2月6日 下午8:58:00 16 | * http://www.rekoe.com 17 | * QQ:5382211 18 | */ 19 | @IocBean 20 | public class CaptchaModule { 21 | 22 | @Inject 23 | private ImageCaptchaService imageCaptchaService; 24 | 25 | @At 26 | @Ok("raw") 27 | @Filters 28 | public Object captcha(HttpServletRequest request) { 29 | String captchaId = request.getSession(true).getId(); 30 | return imageCaptchaService.getChallengeForID(captchaId, request.getLocale()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/module/IndexModule.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.module; 2 | 3 | import java.util.List; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | 7 | import org.nutz.ioc.loader.annotation.Inject; 8 | import org.nutz.ioc.loader.annotation.IocBean; 9 | import org.nutz.mvc.annotation.At; 10 | import org.nutz.mvc.annotation.Ok; 11 | 12 | import com.rekoe.domain.Article; 13 | import com.rekoe.service.ArticleService; 14 | import com.rekoe.service.SettingService; 15 | 16 | /** 17 | * @author 科技㊣²º¹³ 18 | * 2014年2月6日 下午8:58:00 19 | * http://www.rekoe.com 20 | * QQ:5382211 21 | */ 22 | @IocBean 23 | public class IndexModule { 24 | 25 | @Inject 26 | private SettingService settingService; 27 | @Inject 28 | private ArticleService articleService; 29 | 30 | @At 31 | @Ok("fm:template.front.index") 32 | public List
    index(HttpServletRequest req) { 33 | req.setAttribute("setting", settingService.getSetting()); 34 | return articleService.getIndexNewList(10,"createDate"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/module/ShiroTestModule.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.module; 2 | 3 | import org.apache.shiro.authz.annotation.RequiresAuthentication; 4 | import org.apache.shiro.authz.annotation.RequiresPermissions; 5 | import org.nutz.ioc.loader.annotation.IocBean; 6 | import org.nutz.mvc.annotation.At; 7 | import org.nutz.mvc.annotation.Filters; 8 | import org.nutz.mvc.annotation.Ok; 9 | 10 | @IocBean 11 | @Filters 12 | public class ShiroTestModule { 13 | 14 | /** 15 | * 验证流程: 16 | * 1. 访问 /shiro/test 会跳转到登陆页面 17 | * 2. 登陆后再访问/shiro/test, 跳转到首页 18 | * 3. 创建用户wendal, 普通用户,无admin:admin权限 19 | * 4. 用wendal账号登陆,访问 /shiro/test2 , 跳转到登陆页面 20 | * 5. 用admin账号登陆,访问 /shiro/test2, 显示"yes, you can" 21 | */ 22 | 23 | 24 | @RequiresAuthentication 25 | @At("/shiro/test") 26 | @Ok(">>:/") 27 | public void test() { 28 | } 29 | 30 | @At("/user/login") 31 | @Ok("->:/admin/index") 32 | public void index(){} 33 | 34 | @At("/shiro/test2") 35 | @RequiresPermissions("admin:admin") 36 | @Ok("raw") 37 | public String test2(){ 38 | return "yes, you can"; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/module/admin/StatisticsAct.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.module.admin; 2 | 3 | import org.apache.shiro.authz.annotation.RequiresAuthentication; 4 | import org.apache.shiro.authz.annotation.RequiresPermissions; 5 | import org.nutz.ioc.loader.annotation.IocBean; 6 | import org.nutz.lang.Lang; 7 | import org.nutz.mvc.annotation.At; 8 | import org.nutz.mvc.annotation.Ok; 9 | import org.nutz.mvc.annotation.Param; 10 | 11 | /** 12 | * @author 科技㊣²º¹³ 13 | * 2014年2月3日 下午4:48:45 14 | * http://www.rekoe.com 15 | * QQ:5382211 16 | */ 17 | @IocBean 18 | @At("/admin/statistics") 19 | @RequiresAuthentication 20 | public class StatisticsAct { 21 | 22 | @At 23 | @Ok("fm:template.admin.statistics.view") 24 | public void view() { 25 | 26 | } 27 | 28 | @At 29 | @Ok("fm:template.admin.statistics.setting") 30 | @RequiresPermissions("admin:statistics") 31 | public boolean setting(@Param("isEnabled") Boolean isEnabled) { 32 | return Lang.isEmpty(isEnabled) ? false : isEnabled; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/mvc/ProcessTimeProcessor.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.mvc; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.nutz.log.Log; 6 | import org.nutz.log.Logs; 7 | import org.nutz.mvc.ActionContext; 8 | import org.nutz.mvc.impl.processor.AbstractProcessor; 9 | 10 | /** 11 | * 执行时间过滤器 12 | */ 13 | public class ProcessTimeProcessor extends AbstractProcessor { 14 | private final static Log log = Logs.get() ; 15 | /** 16 | * 请求执行开始时间 17 | */ 18 | public static final String START_TIME = "_start_time"; 19 | 20 | @Override 21 | public void process(ActionContext ac) throws Throwable { 22 | long time = System.currentTimeMillis(); 23 | HttpServletRequest request = ac.getRequest(); 24 | request.setAttribute(START_TIME, time); 25 | doNext(ac); 26 | time = System.currentTimeMillis() - time; 27 | log.debugf("process in {%s} ms: {%s}", time, request.getRequestURI()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/mvc/mvc-chains.js: -------------------------------------------------------------------------------- 1 | var chain={ 2 | "default" : { 3 | "ps" : [ 4 | "org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor", 5 | "org.nutz.mvc.impl.processor.EncodingProcessor", 6 | "org.nutz.mvc.impl.processor.ModuleProcessor", 7 | "org.nutz.integration.shiro.NutShiroProcessor", 8 | "org.nutz.mvc.impl.processor.ActionFiltersProcessor", 9 | "org.nutz.mvc.impl.processor.AdaptorProcessor", 10 | "org.nutz.mvc.impl.processor.MethodInvokeProcessor", 11 | "com.rekoe.mvc.ProcessTimeProcessor", 12 | "org.nutz.mvc.impl.processor.ViewProcessor" 13 | ], 14 | "error" : 'org.nutz.mvc.impl.processor.FailProcessor' 15 | } 16 | }; -------------------------------------------------------------------------------- /src/main/java/com/rekoe/mvc/view/JPEGViewMaker.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.mvc.view; 2 | 3 | import org.nutz.ioc.Ioc; 4 | import org.nutz.mvc.View; 5 | import org.nutz.mvc.ViewMaker; 6 | 7 | public class JPEGViewMaker implements ViewMaker { 8 | 9 | @Override 10 | public View make(Ioc ioc, String type, String value) { 11 | if ("captcha".equalsIgnoreCase(type)) { 12 | return ioc.get(JPEGView.class); 13 | } 14 | return null; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/mvc/view/JspSupportServlet.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.mvc.view; 2 | 3 | import javax.servlet.ServletConfig; 4 | import javax.servlet.ServletException; 5 | import javax.servlet.http.HttpServlet; 6 | 7 | /** 8 | */ 9 | public class JspSupportServlet extends HttpServlet { 10 | 11 | private static final long serialVersionUID = 8302309812391541933L; 12 | public static JspSupportServlet jspSupportServlet; 13 | public void init(ServletConfig servletConfig) throws ServletException { 14 | super.init(servletConfig); 15 | jspSupportServlet = this; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/mvc/view/captcha.js: -------------------------------------------------------------------------------- 1 | var ioc = { 2 | fastHashMapCaptchaStore : { 3 | type : "com.octo.captcha.service.captchastore.FastHashMapCaptchaStore" 4 | }, 5 | mailEngine : { 6 | type : "com.rekoe.mvc.view.GMailEngine", 7 | args : [ "com/rekoe/cms/captcha" ] 8 | }, 9 | imageCaptchaService : { 10 | type : "com.octo.captcha.service.image.DefaultManageableImageCaptchaService", 11 | args : [ { 12 | refer : "fastHashMapCaptchaStore" 13 | }, { 14 | refer : "mailEngine" 15 | }, 180, 100000, 75000 ] 16 | } 17 | }; -------------------------------------------------------------------------------- /src/main/java/com/rekoe/service/SettingService.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.service; 2 | 3 | import org.nutz.dao.Dao; 4 | import org.nutz.ioc.loader.annotation.IocBean; 5 | 6 | import com.rekoe.domain.Setting; 7 | /** 8 | * @author 科技㊣²º¹³ 9 | * 2014年2月3日 下午4:48:45 10 | * http://www.rekoe.com 11 | * QQ:5382211 12 | */ 13 | @IocBean(args = { "refer:dao" }) 14 | public class SettingService extends BaseService { 15 | 16 | public SettingService(Dao dao) { 17 | super(dao); 18 | } 19 | 20 | public void update(Setting setting) { 21 | dao().update(setting); 22 | } 23 | 24 | public Setting getSetting() { 25 | return dao().fetch(getEntityClass(), 1); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/HasAnyPermissionTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | public class HasAnyPermissionTag extends PermissionTag { 6 | private static final String ROLE_NAMES_DELIMETER = ","; 7 | 8 | @Override 9 | protected boolean isPermitted(String p) { 10 | if (getSubject() == null || StringUtils.isBlank(p)) { 11 | return false; 12 | } 13 | if (!(getSubject().getPrincipal() instanceof com.rekoe.domain.User)) { 14 | return false; 15 | } 16 | String[] permissionStrs = StringUtils.split(p, ROLE_NAMES_DELIMETER); 17 | boolean[] haveAnyPermission = getSubject().isPermitted(permissionStrs); 18 | for (boolean isRight : haveAnyPermission) { 19 | if (isRight) { 20 | return true; 21 | } 22 | } 23 | return false; 24 | } 25 | 26 | @Override 27 | protected boolean showTagBody(String p) { 28 | return isPermitted(p); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/HasPermissionTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | 4 | /** 5 | *

    Equivalent to {@link org.apache.shiro.web.tags.HasPermissionTag}

    6 | * 7 | * @since 0.1 8 | */ 9 | public class HasPermissionTag extends PermissionTag { 10 | protected boolean showTagBody(String p) { 11 | return isPermitted(p); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/HasRoleTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | 4 | /** 5 | *

    Equivalent to {@link org.apache.shiro.web.tags.HasRoleTag}

    6 | */ 7 | public class HasRoleTag extends RoleTag { 8 | protected boolean showTagBody(String roleName) { 9 | return getSubject() != null && getSubject().hasRole(roleName); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/LacksPermissionTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | 4 | /** 5 | *

    Equivalent to {@link org.apache.shiro.web.tags.LacksPermissionTag}

    6 | */ 7 | public class LacksPermissionTag extends PermissionTag { 8 | protected boolean showTagBody(String p) { 9 | return !isPermitted(p); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/LacksRoleTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | 4 | /** 5 | *

    Equivalent to {@link org.apache.shiro.web.tags.LacksRoleTag}

    6 | */ 7 | public class LacksRoleTag extends RoleTag { 8 | protected boolean showTagBody(String roleName) { 9 | boolean hasRole = getSubject() != null && getSubject().hasRole(roleName); 10 | return !hasRole; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/NotAuthenticatedTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | import java.io.IOException; 4 | import java.util.Map; 5 | 6 | import org.nutz.log.Log; 7 | import org.nutz.log.Logs; 8 | 9 | import freemarker.core.Environment; 10 | import freemarker.template.TemplateDirectiveBody; 11 | import freemarker.template.TemplateException; 12 | 13 | 14 | /** 15 | * Freemarker tag that renders the tag body only if the current user has not executed a successful authentication 16 | * attempt during their current session. 17 | * 18 | *

    The logically opposite tag of this one is the {@link org.apache.shiro.web.tags.AuthenticatedTag}. 19 | * 20 | *

    Equivalent to {@link org.apache.shiro.web.tags.NotAuthenticatedTag}

    21 | */ 22 | public class NotAuthenticatedTag extends SecureTag { 23 | private static final Log log = Logs.get(); 24 | 25 | @SuppressWarnings("rawtypes") 26 | @Override 27 | public void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException { 28 | if (getSubject() == null || !getSubject().isAuthenticated()) { 29 | log.debug("Subject does not exist or is not authenticated. Tag body will be evaluated."); 30 | renderBody(env, body); 31 | } else { 32 | log.debug("Subject exists and is authenticated. Tag body will not be evaluated."); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/RoleTag.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | import java.io.IOException; 4 | import java.util.Map; 5 | 6 | import freemarker.core.Environment; 7 | import freemarker.template.TemplateDirectiveBody; 8 | import freemarker.template.TemplateException; 9 | 10 | /** 11 | *

    Equivalent to {@link org.apache.shiro.web.tags.RoleTag}

    12 | */ 13 | public abstract class RoleTag extends SecureTag { 14 | @SuppressWarnings("rawtypes") 15 | String getName(Map params) { 16 | return getParam(params, "name"); 17 | } 18 | 19 | @SuppressWarnings("rawtypes") 20 | @Override 21 | public void render(Environment env, Map params, TemplateDirectiveBody body) throws IOException, TemplateException { 22 | boolean show = showTagBody(getName(params)); 23 | if (show) { 24 | renderBody(env, body); 25 | } 26 | } 27 | 28 | protected abstract boolean showTagBody(String roleName); 29 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/freemarker/ShiroTags.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.freemarker; 2 | 3 | import freemarker.template.SimpleHash; 4 | 5 | /** 6 | * Shortcut for injecting the tags into Freemarker 7 | * 8 | *

    Usage: cfg.setSharedVeriable("shiro", new ShiroTags());

    9 | */ 10 | public class ShiroTags extends SimpleHash { 11 | /** 12 | * 13 | */ 14 | private static final long serialVersionUID = -6249359256658075586L; 15 | 16 | public ShiroTags() { 17 | put("authenticated", new AuthenticatedTag()); 18 | put("guest", new GuestTag()); 19 | put("hasAnyRoles", new HasAnyRolesTag()); 20 | put("hasPermission", new HasPermissionTag()); 21 | put("hasAnyPermission", new HasAnyPermissionTag()); 22 | put("hasRole", new HasRoleTag()); 23 | put("lacksPermission", new LacksPermissionTag()); 24 | put("lacksRole", new LacksRoleTag()); 25 | put("notAuthenticated", new NotAuthenticatedTag()); 26 | put("principal", new PrincipalTag()); 27 | put("user", new UserTag()); 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/shiro/realm/CaptchaUsernamePasswordToken.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.shiro.realm; 2 | 3 | import org.apache.shiro.authc.UsernamePasswordToken; 4 | /** 5 | * @author 科技㊣²º¹³ 6 | * 2014年2月3日 下午4:48:45 7 | * http://www.rekoe.com 8 | * QQ:5382211 9 | */ 10 | public class CaptchaUsernamePasswordToken extends UsernamePasswordToken { 11 | 12 | private static final long serialVersionUID = 4676958151524148623L; 13 | private String captcha; 14 | 15 | public String getCaptcha() { 16 | return captcha; 17 | } 18 | 19 | public void setCaptcha(String captcha) { 20 | this.captcha = captcha; 21 | } 22 | 23 | public CaptchaUsernamePasswordToken(String username, String password, boolean rememberMe, String host, String captcha) { 24 | super(username, password, rememberMe, host); 25 | this.captcha = captcha; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/snakerflow/SnakerFacets.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.snakerflow; 2 | 3 | import javax.sql.DataSource; 4 | 5 | import org.nutz.ioc.loader.annotation.IocBean; 6 | import org.snaker.engine.SnakerEngine; 7 | import org.snaker.engine.cfg.Configuration; 8 | 9 | /** 10 | * 获取SnakerEngine的门面类 11 | * @author yuqs 12 | * @since 2.0 13 | */ 14 | @IocBean(args="dataSource") 15 | public class SnakerFacets { 16 | 17 | private SnakerEngine engine; 18 | 19 | public SnakerFacets(DataSource dataSource) { 20 | Configuration cnf = new Configuration(); 21 | cnf.initAccessDBObject(dataSource); 22 | engine = cnf.buildSnakerEngine(); 23 | } 24 | 25 | public SnakerEngine getEngine() { 26 | return engine; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/socialauth/Constants.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.socialauth; 2 | 3 | public interface Constants { 4 | /** 5 | * UTF-8 6 | */ 7 | public static final String ENCODING = "UTF-8"; 8 | /** 9 | * HMAC-SHA1 10 | */ 11 | public static final String HMACSHA1_SIGNATURE = "HMAC-SHA1"; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/utils/MyUtils.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.utils; 2 | 3 | import javax.servlet.ServletContext; 4 | 5 | /** 6 | * 用于上传ioc : myUpload.js 7 | */ 8 | public class MyUtils { 9 | private ServletContext sc; 10 | public String getPath(String path) { 11 | return sc.getRealPath(path); 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/utils/ParseHtmlTool.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.utils; 2 | 3 | import java.util.List; 4 | 5 | public interface ParseHtmlTool { 6 | /** 7 | * 取得连接集合 8 | * 9 | * @param orginHtml 10 | * 原始HTML 11 | * @return 连接集合 12 | */ 13 | List getUrlList(String orginHtml); 14 | 15 | /** 16 | * 取得标题集合 17 | * 18 | * @param orginHtml 19 | * 原始HTML 20 | * @return 标题集合 21 | */ 22 | List getTitleList(String orginHtml); 23 | 24 | /** 25 | * 取得指定区域的HTML内容 26 | * 27 | * @return 指定区域的HTML内容 28 | */ 29 | String getHtml(String orginHtml); 30 | } -------------------------------------------------------------------------------- /src/main/java/com/rekoe/utils/SqlUtils.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.utils; 2 | 3 | import java.math.BigDecimal; 4 | 5 | public class SqlUtils { 6 | 7 | public final static String JDBC_URL = "jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=utf-8"; 8 | 9 | public static void main(String[] args) { 10 | //100*5.11 应该 = 511 11 | System.out.println(100*5.11); 12 | BigDecimal bg = new BigDecimal(100*5.11); 13 | int f1 = bg.setScale(4, BigDecimal.ROUND_HALF_UP).intValue(); 14 | System.out.println(f1); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/web/freemarker/ArticleCategoryRootListDirective.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.web.freemarker; 2 | 3 | import java.io.IOException; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | import com.rekoe.service.ArticleCategoryService; 8 | import com.rekoe.utils.DirectiveUtils; 9 | 10 | import freemarker.core.Environment; 11 | import freemarker.template.TemplateDirectiveBody; 12 | import freemarker.template.TemplateDirectiveModel; 13 | import freemarker.template.TemplateException; 14 | import freemarker.template.TemplateModel; 15 | 16 | public class ArticleCategoryRootListDirective implements TemplateDirectiveModel { 17 | 18 | private ArticleCategoryService articleCategoryService; 19 | 20 | public ArticleCategoryRootListDirective(ArticleCategoryService articleCategoryService) { 21 | this.articleCategoryService = articleCategoryService; 22 | } 23 | 24 | @SuppressWarnings({ "rawtypes", "unchecked" }) 25 | public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { 26 | Map localHashMap = new HashMap(); 27 | int count = DirectiveUtils.getInt("count", params); 28 | localHashMap.put("articleCategories", articleCategoryService.findRoots(count)); 29 | DirectiveUtils.setVariables(localHashMap, env, body); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/web/freemarker/ArticleCategoryTreeDirective.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.web.freemarker; 2 | 3 | import java.io.IOException; 4 | import java.util.Map; 5 | 6 | import com.rekoe.service.ArticleCategoryService; 7 | import com.rekoe.utils.DirectiveUtils; 8 | 9 | import freemarker.core.Environment; 10 | import freemarker.template.TemplateDirectiveBody; 11 | import freemarker.template.TemplateDirectiveModel; 12 | import freemarker.template.TemplateException; 13 | import freemarker.template.TemplateModel; 14 | 15 | public class ArticleCategoryTreeDirective implements TemplateDirectiveModel { 16 | 17 | private ArticleCategoryService articleCategoryService; 18 | 19 | public ArticleCategoryTreeDirective(ArticleCategoryService articleCategoryService) { 20 | this.articleCategoryService = articleCategoryService; 21 | } 22 | 23 | @SuppressWarnings({ "rawtypes", "unchecked" }) 24 | public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { 25 | String categoryid = DirectiveUtils.getString("categoryid", params); 26 | StringBuffer sb = articleCategoryService.loadSelect(categoryid); 27 | env.getOut().append(sb); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/web/freemarker/FreemarkerDirective.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.web.freemarker; 2 | 3 | import freemarker.template.TemplateDirectiveModel; 4 | 5 | /** 6 | * @author 科技㊣²º¹³ 7 | * 2014年1月1日 下午5:42:54 8 | * http://www.rekoe.com 9 | * QQ:5382211 10 | */ 11 | public class FreemarkerDirective { 12 | private String name; 13 | private TemplateDirectiveModel templateDirectiveModel; 14 | public FreemarkerDirective(String name, TemplateDirectiveModel templateDirectiveModel) { 15 | super(); 16 | this.name = name; 17 | this.templateDirectiveModel = templateDirectiveModel; 18 | } 19 | public String getName() { 20 | return name; 21 | } 22 | public TemplateDirectiveModel getTemplateDirectiveModel() { 23 | return templateDirectiveModel; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/web/freemarker/FreemarkerDirectiveFactory.java: -------------------------------------------------------------------------------- 1 | package com.rekoe.web.freemarker; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class FreemarkerDirectiveFactory { 7 | private List list = new ArrayList(); 8 | private String freemarker; 9 | private FreemarkerDirective[] objs; 10 | 11 | public FreemarkerDirectiveFactory(FreemarkerDirective... objs) { 12 | this.objs = objs; 13 | } 14 | 15 | public List getList() { 16 | return list; 17 | } 18 | 19 | public String getFreemarker() { 20 | return freemarker; 21 | } 22 | 23 | public void init() { 24 | for (FreemarkerDirective freemarkerDirective : objs) { 25 | list.add(freemarkerDirective); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/rekoe/web/freemarker/freemarker.properties: -------------------------------------------------------------------------------- 1 | tag_syntax=auto_detect 2 | template_update_delay=-1 3 | defaultEncoding=UTF-8 4 | url_escaping_charset=UTF-8 5 | locale=zh_CN 6 | boolean_format=true,false 7 | datetime_format=yyyy-MM-dd HH:mm:ss 8 | date_format=yyyy-MM-dd 9 | time_format=HH:mm:ss 10 | number_format=0.###### 11 | whitespace_stripping=true 12 | auto_import=/ftl/pony/index.ftl as p,/ftl/spring.ftl as s -------------------------------------------------------------------------------- /src/main/resources/ioc/upload.js: -------------------------------------------------------------------------------- 1 | var uploadIoc = { 2 | utils : { 3 | type : 'com.rekoe.utils.MyUtils', 4 | fields : { 5 | sc : {app:'$servlet'} // 将 ServletContext 对象注入 MyUtils 6 | } 7 | }, 8 | tmpFilePool : { 9 | type : 'org.nutz.filepool.NutFilePool', // 临时文件最大个数为 1000 个 10 | args : [ {java:'$utils.getPath("/tmp")'}, 1000 ] 11 | }, 12 | uploadPicFileContext : { 13 | type : 'org.nutz.mvc.upload.UploadingContext', 14 | singleton : false, 15 | args : [ { refer : 'tmpFilePool' } ], 16 | fields : { 17 | // 是否忽略空文件, 默认为 false 18 | ignoreNull : true, 19 | // 单个文件最大尺寸(大约的值,单位为字节,即 1048576 为 1M) 20 | maxFileSize : 5048576, // 正则表达式匹配可以支持的文件名 21 | nameFilter : '^(.+[.])(doc|docx|ppt|pptx|pdf|jpg|gif|png)$' 22 | } 23 | }, 24 | upload : { 25 | type : 'org.nutz.mvc.upload.UploadAdaptor', 26 | singleton : false, 27 | args : [ { refer : 'uploadPicFileContext' } ] 28 | } 29 | }; -------------------------------------------------------------------------------- /src/main/resources/jdbc.properties: -------------------------------------------------------------------------------- 1 | db.url=jdbc:mysql://127.0.0.1:3306/platform?useUnicode=true&characterEncoding=utf-8 2 | db.username=root 3 | db.password=root 4 | db.maxActive=50 5 | topic.image.dir=E:/Tools/Workspaces/.metadata/.me_tcat7/me-webapps/Rk_Cms -------------------------------------------------------------------------------- /src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=ERROR,A1,file 2 | log4j.logger.velocity_log=INFO 3 | log4j.category.org.nutz=ERROR,A1,file 4 | log4j.category.org.nutz.dao=ERROR 5 | log4j.category.org.nutz.ioc=INFO 6 | log4j.category.org.nutz.mvc=INFO 7 | log4j.category.org.apache.shiro=INFO 8 | log4j.category.org.brickred.socialauth=INFO 9 | log4j.category.org.apache.commons=INFO 10 | log4j.category.org.nutz.resource=INFO 11 | log4j.category.org.quartz=INFO 12 | log4j.category.freemarker.cache=INFO 13 | log4j.additivity.org.nutz = false 14 | 15 | log4j.appender.A1=org.apache.log4j.ConsoleAppender 16 | log4j.appender.A1.layout=org.apache.log4j.PatternLayout 17 | log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%p][%c] - %m%n 18 | 19 | log4j.appender.file=org.apache.log4j.RollingFileAppender 20 | log4j.appender.file.File=nutz.log 21 | log4j.appender.file.MaxFileSize=20MB 22 | log4j.appender.file.MaxBackupIndex=1 23 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 24 | log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%p][%c] - %m%n -------------------------------------------------------------------------------- /src/main/resources/oauth_consumer.properties: -------------------------------------------------------------------------------- 1 | socialauth.qq = com.rekoe.cms.socialauth.qq.QQAuthProvider 2 | qq.consumer_key = 100286209 3 | qq.consumer_secret = 929fdc03d9cfd53e7b8ffdba036e0137 4 | #facebook 5 | #graph.facebook.com.consumer_key = 152190004803645 6 | #graph.facebook.com.consumer_secret = 64c94bd02180b0ade85889b44b2ba7c4 7 | graph.facebook.com.consumer_key =658892470844925 8 | graph.facebook.com.consumer_secret =bfdbbf8d21f6b87c5d16216b3b77d772 9 | #github 10 | api.github.com.consumer_key=a5b676fdf89681719d29 11 | api.github.com.consumer_secret=f19662223910f3ff90efe129c3d2017a1a5cdfb1 12 | 13 | socialauth.qqweibo = com.rekoe.cms.socialauth.qq.QQAuthProvider 14 | qqweibo.consumer_key = 1101073619 15 | qqweibo.consumer_secret = NFvJlRAK1KaYMBoF -------------------------------------------------------------------------------- /src/main/resources/quartz.properties: -------------------------------------------------------------------------------- 1 | # Default Properties file for use by StdSchedulerFactory 2 | # to create a Quartz Scheduler Instance, if a different 3 | # properties file is not explicitly specified. 4 | # 5 | # 跳过版本检查 # 6 | org.quartz.scheduler.skipUpdateCheck=true 7 | org.quartz.scheduler.instanceName = DefaultQuartzScheduler 8 | org.quartz.scheduler.rmi.export = false 9 | org.quartz.scheduler.rmi.proxy = false 10 | org.quartz.scheduler.wrapJobExecutionInUserTransaction = false 11 | # 用NutIoc接管Quartz的JobFactory,实现用户需要的注入功能 # 12 | org.quartz.scheduler.jobFactory.class=com.rekoe.cms.quartz.NutQuartzJobFactory 13 | 14 | 15 | org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool 16 | org.quartz.threadPool.threadCount = 10 17 | org.quartz.threadPool.threadPriority = 5 18 | org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true 19 | 20 | org.quartz.jobStore.misfireThreshold = 60000 21 | # 使用内存JobStore # 22 | org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore -------------------------------------------------------------------------------- /src/main/resources/shiro.ini: -------------------------------------------------------------------------------- 1 | [main] 2 | sessionIdCookie=org.apache.shiro.web.servlet.SimpleCookie 3 | sessionIdCookie.name=rk 4 | #sessionIdCookie.domain=rekoe.com 5 | #sessionIdCookie.path= 6 | sessionIdCookie.maxAge=1800 7 | sessionIdCookie.httpOnly=true 8 | sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher 9 | sha256Matcher.storedCredentialsHexEncoded = false 10 | sha256Matcher.hashIterations = 1024 11 | sha256Matcher.hashSalted = true 12 | nutzAuthoRealm = com.rekoe.shiro.realm.NutAuthoDaoRealm 13 | shiroDbRealm = com.rekoe.shiro.realm.NutDaoRealm 14 | shiroDbRealm.credentialsMatcher = $sha256Matcher 15 | cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager 16 | securityManager.realms = $shiroDbRealm,$nutzAuthoRealm 17 | authcStrategy = com.rekoe.shiro.authc.pam.AnySuccessfulStrategy 18 | securityManager.authenticator.authenticationStrategy = $authcStrategy 19 | securityManager.cacheManager = $cacheManager -------------------------------------------------------------------------------- /src/main/webapp/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/.gitignore: -------------------------------------------------------------------------------- 1 | /classes 2 | /lib 3 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/index.ftl: -------------------------------------------------------------------------------- 1 | <#ftl strip_whitespace=true> 2 | <#include "ui/index.ftl"/> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/checkbox.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro checkbox 5 | value="" cvalue="" labelFor="" readonly="" checked="" 6 | label="" noHeight="false" required="false" colspan="" help="" helpPosition="3" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 9 | > 10 | 11 | value="${value}"<#rt/> 12 | id="${id+'-'+name}"<#rt/> 13 | <#if readonly!=""> readonly="${readonly}"<#rt/> 14 | <#if checked!=""> checked="${checked}"<#elseif cvalue!="" && cvalue==value> checked="checked"<#rt/> 15 | <#include "common-attributes.ftl"/><#rt/> 16 | <#include "scripting-events.ftl"/><#rt/> 17 | /><#if labelFor!=""> 18 | 19 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/checkboxlist-item.ftl: -------------------------------------------------------------------------------- 1 | <#if hasNext> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/common-attributes.ftl: -------------------------------------------------------------------------------- 1 | <#if name!=""> name="${name}"<#rt/> 2 | <#if class!=""> class="${class}"<#rt/> 3 | <#if style!=""> style="${style}"<#rt/> 4 | <#if title!=""> title="${title}"<#rt/> 5 | <#if size!=""> size="${size}"<#rt/> 6 | <#if disabled!=""> disabled="${disabled}"<#rt/> 7 | <#if accesskey!=""> accesskey="${accesskey}"<#rt/> 8 | <#if tabindex!=""> tabindex="${tabindex}"<#rt/> 9 | <#if vld?? && vld!=""> vld="${vld}"<#rt/> 10 | <#if equalTo?? && equalTo!=""> equalTo="${equalTo}"<#rt/> 11 | <#if maxlength?? && maxlength!=""> maxlength="${maxlength}"<#rt/> 12 | <#if minlength?? && minlength!=""> minlength="${minlength}"<#rt/> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/control-close.ftl: -------------------------------------------------------------------------------- 1 | <#if help!='' && helpPosition=='2'> 2 | <@s.mt code=help text=help/><#rt/> 3 | <#elseif help!='' && helpPosition=='3'> 4 |
    <@s.mt code=help text=help/>
    <#rt/> 5 | 6 | <#if label!=''><#if colspan==''> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/control.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | label:有label代表需要创建td和tr。 3 | colspan:有colspan代表不需要创建tr。 4 | labelWidth:需要form传递。 5 | --> 6 | <#if label!=""> 7 | <#if required!="false">*<@s.mt code=label text=label/><#if hasColon="true">${colon}<#rt/> 8 | colspan="${colspan?number*2-1}" width="${width?number-labelWidth?number}%"><#rt/> 9 | 10 | <#if help!="" && helpPosition=='1'>
    <@s.mt code=help text=help/>
    -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/crawler_form.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 |
    3 | --> 4 | <#macro crawler_form 5 | action="" method="post" target="" enctype="" acceptCharset="" 6 | theme="jeesys" width="100%" tableClass="pn-ftable" labelWidth="20" required="false" colspan="1" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | onsubmit="" 9 | > 10 | 11 | method="${method}"<#rt/> 12 | action="${action}"<#rt/> 13 | <#if id!=""> id="${id}"<#rt/> 14 | <#if target!=""> target="${target}"<#rt/> 15 | <#if enctype!=""> enctype="${enctype}"<#rt/> 16 | <#if onsubmit!=""> onsubmit="${onsubmit}"<#rt/> 17 | <#if acceptCharset!=""> accept-charset="${acceptCharset}"<#rt/> 18 | <#include "common-attributes.ftl"/><#rt/> 19 | > 20 | <#assign labelWidth=labelWidth/> 21 | <#nested/><#rt/> 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/file.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro file 5 | accept="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 9 | > 10 | <#include "control.ftl"/><#rt/> 11 | 12 | <#if id!=""> id="${id}"<#rt/> 13 | <#if accept!=""> accept="${accept}"<#rt/> 14 | <#if value!=""> value="${value}"<#rt/> 15 | <#include "common-attributes.ftl"/><#rt/> 16 | <#include "scripting-events.ftl"/><#rt/> 17 | /> 18 | <#include "control-close.ftl"/><#rt/> 19 | 20 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/form-column.ftl: -------------------------------------------------------------------------------- 1 | <#macro fcolumn code="" title=""> 2 | 3 | <#if code!=""><@s.mt code=code text=code/><#else>${title}<#rt/> 4 | 5 | <#nested/><#rt/> 6 | <#rt/> 7 | <#rt/> 8 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/form.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 |
    3 | --> 4 | <#macro form 5 | action="" method="post" target="" enctype="" acceptCharset="" 6 | theme="jeesys" width="100%" tableClass="pn-ftable" labelWidth="20" required="false" colspan="1" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | onsubmit="" 9 | > 10 | 11 | method="${method}"<#rt/> 12 | action="${action}"<#rt/> 13 | <#if id!=""> id="${id}"<#rt/> 14 | <#if target!=""> target="${target}"<#rt/> 15 | <#if enctype!=""> enctype="${enctype}"<#rt/> 16 | <#if onsubmit!=""> onsubmit="${onsubmit}"<#rt/> 17 | <#if acceptCharset!=""> accept-charset="${acceptCharset}"<#rt/> 18 | <#include "common-attributes.ftl"/><#rt/> 19 | > 20 | <#assign i=-1/> 21 | <#if theme!="simple"> 22 | <#assign labelWidth=labelWidth/> 23 | 24 | 25 | 26 | <#nested/><#rt/> 27 | <#if theme=="jeesys"> 28 |
    29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/hidden.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro hidden 5 | id="" name="" value="" 6 | > 7 | 8 | <#if id!=""> id="${id}"<#rt/> 9 | <#if name!=""> name="${name}"<#rt/> 10 | <#if value?string!=""> value="${value}"<#rt/> 11 | /> 12 | 13 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/index.ftl: -------------------------------------------------------------------------------- 1 | <#include "pagination.ftl"/> 2 | 3 | <#include "text.ftl"/> 4 | <#include "select.ftl"/> 5 | <#include "radio.ftl"/> 6 | <#include "checkbox.ftl"/> 7 | <#include "checkboxlist.ftl"/> 8 | <#include "textarea.ftl"/> 9 | <#include "hidden.ftl"/> 10 | <#include "file.ftl"/> 11 | <#include "tree.ftl"/> 12 | <#include "table.ftl"/> 13 | <#include "table-column.ftl"/> 14 | <#include "button.ftl"/> 15 | <#include "password.ftl"/> 16 | <#include "editor.ftl"/> 17 | <#include "form.ftl"/> 18 | <#include "td.ftl"/> 19 | <#include "tr.ftl"/> 20 | <#include "span.ftl"/> 21 | <#include "th.ftl"/> 22 | <#include "shiro-author.ftl"/> 23 | <#include "list.ftl"/> 24 | <#include "form-column.ftl"/> 25 | <#include "crawler_form.ftl"/> 26 | 27 | <#include "self_define_widget.ftl"/> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/password.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro password 5 | maxlength="" readonly="" value="" autocomplete="off" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | vld="" equalTo="" maxlength="" minlength="" 9 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 10 | > 11 | <#include "control.ftl"/><#rt/> 12 | 13 | <#if id!=""> id="${id}"<#rt/> 14 | <#if maxlength!=""> maxlength="${maxlength}"<#rt/> 15 | <#if readonly!=""> readonly="${readonly}"<#rt/> 16 | <#if value!=""> value="${value}"<#rt/> 17 | <#include "common-attributes.ftl"/><#rt/> 18 | <#include "scripting-events.ftl"/><#rt/> 19 | /> 20 | <#include "control-close.ftl"/><#rt/> 21 | 22 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/radio-item.ftl: -------------------------------------------------------------------------------- 1 | <#if hasNext> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/radio.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro radio 5 | list listKey="" listValue="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 9 | > 10 | <#include "control.ftl"/><#rt/> 11 | <#if list?is_sequence> 12 | <#if listKey!="" && listValue!=""> 13 | <#list list as item> 14 | <#local rkey=item[listKey]> 15 | <#local rvalue=item[listValue]> 16 | <#local index=item_index> 17 | <#local hasNext=item_has_next> 18 | <#include "radio-item.ftl"><#t/> 19 | 20 | <#else> 21 | <#list list as item> 22 | <#local rkey=item> 23 | <#local rvalue=item> 24 | <#local index=item_index> 25 | <#local hasNext=item_has_next> 26 | <#include "radio-item.ftl"><#t/> 27 | 28 | 29 | <#else> 30 | <#list list?keys as key> 31 | <#local rkey=key/> 32 | <#local rvalue=list[key]/> 33 | <#local index=key_index> 34 | <#local hasNext=key_has_next> 35 | <#include "radio-item.ftl"><#t/> 36 | 37 | 38 | <#include "control-close.ftl"/> 39 | 40 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/scripting-events.ftl: -------------------------------------------------------------------------------- 1 | <#if onclick!=""> onclick="${onclick}"<#rt/> 2 | <#if ondblclick!=""> ondblclick="${ondblclick}"<#rt/> 3 | <#if onmousedown!=""> onmousedown="${onmousedown}"<#rt/> 4 | <#if onmouseup!=""> onmouseup="${onmouseup}"<#rt/> 5 | <#if onmouseover!=""> onmouseover="${onmouseover}"<#rt/> 6 | <#if onmousemove!=""> onmousemove="${onmousemove}"<#rt/> 7 | <#if onmouseout!=""> onmouseout="${onmouseout}"<#rt/> 8 | <#if onfocus!=""> onfocus="${onfocus}"<#rt/> 9 | <#if onblur!=""> onblur="${onblur}"<#rt/> 10 | <#if onkeypress!=""> onkeypress="${onkeypress}"<#rt/> 11 | <#if onkeydown!=""> onkeydown="${onkeydown}"<#rt/> 12 | <#if onkeyup!=""> onkeyup="${onkeyup}"<#rt/> 13 | <#if onselect!=""> onselect="${onselect}"<#rt/> 14 | <#if onchange!=""> onchange="${onchange}"<#rt/> -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/shiro-author.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro shiroAuthor 5 | maxlength="" readonly="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | vld="" equalTo="" maxlength="" minlength="" max="" min="" rname="" rvalue="" 9 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 10 | > 11 | <#include "control.ftl"/><#rt/> 12 | <#if readonly!=""> 13 | <@shiro.principal property="name"/> 14 | <#else> 15 | 16 | <#if id!=""> id="${id}"<#rt/> 17 | <#if maxlength!=""> maxlength="${maxlength}"<#rt/> 18 | <#if max?string!=""> max="${max}"<#rt/> 19 | <#if min?string!=""> min="${min}"<#rt/> 20 | <#if rname!=""> rname="${rname}"<#rt/> 21 | <#if rvalue!=""> rvalue="${rvalue}"<#rt/> 22 | value="<@shiro.principal property="name"/>"<#rt/> 23 | <#include "common-attributes.ftl"/><#rt/> 24 | <#include "scripting-events.ftl"/><#rt/> 25 | /><#rt/> 26 | <#include "control-close.ftl"/><#rt/> 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/span.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro span 5 | maxlength="" readonly="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | vld="" equalTo="" maxlength="" minlength="" max="" min="" rname="" rvalue="" 9 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 10 | > 11 | <#include "control.ftl"/><#rt/> 12 | <#rt/> 13 | <#if value?? && value?string!=""> ${value?html}<#rt/> 14 | <#include "common-attributes.ftl"/><#rt/> 15 | <#include "scripting-events.ftl"/><#rt/> 16 | <#rt/> 17 | <#include "control-close.ftl"/><#rt/> 18 | 19 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/table-batchoperate.ftl: -------------------------------------------------------------------------------- 1 | <#if (batchOperate?size > 0)> 2 |
    3 | <#list batchOperate as operate> 4 | <@p.operateRight operate=operate['action'] checkRight=checkRight> 5 | <#if (operate.confirm)??> 6 | 7 | <#else> 8 | 9 | 10 | 11 | 12 | <#if wholeOptName!=""> 13 |   14 | 15 |
    16 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/table-column.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 表格列标签:展示数据列。 3 | title:标题(列头)。直接显示字符串。默认""。 4 | code:标题(列头)。显示国际化信息。默认""。 5 | width:列宽。默认""。 6 | align:对齐方式。 7 | class:css样式class 8 | style:css样式style 9 | --> 10 | <#macro column title="" code="" width="" align="" class="" style="" rowspan="" iconClass="" addSpan=true selectAll=false> 11 | <#if title="" && code="">title and code all not assign!<#return> 12 | <#if i==-1> 13 | width="${width}"<#if class!=""> class="${class}"<#if style!=""> style="${style}"><#if addSpan><#if selectAll><#if code!=""><@s.mt code=code text=code/><#else>${title}<#if addSpan><#rt/> 14 | <#else> 15 | align="${align}"<#if rowspan!=""> rowspan="${rowspan}"<#if class!=""> class="${class}"<#if style!=""> style="${style}" <#if title!=""> title="${title}" ><#if iconClass !=""><#nested/><#if iconClass !=""><#rt/> 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/table.ftl: -------------------------------------------------------------------------------- 1 | <#macro table value class="list"> 2 | 3 | <#if value?is_sequence><#local pageList=value/><#else><#local pageList=value.list/> 4 | <#list pageList as row> 5 | <#if row_index==0> 6 | <#assign i=-1/> 7 | <#nested row,i,true/> 8 | 9 | <#assign i=row_index has_next=row_has_next/> 10 | <#if row_index==0><#else><#nested row,row_index,row_has_next/> 11 | <#if !row_has_next> 12 | 13 | <#else> 14 | 15 | 16 | 17 |
    18 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/td.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 构建一个没有内容的label,或者没有label的行。 3 | 用于自定义内容和无label的行。 4 | 5 | --> 6 | <#macro td id="" 7 | label="" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 8 | > 9 | <#if label!=""> 10 | id="${id}" width="${labelWidth}%" "><#if required!="false">*<@s.mt code=label text=label/><#if hasColon="true">${colon}<#rt/> 11 | colspan="${colspan?number*2-1}" width="${width?number-labelWidth?number}%" class="pn-fcontent"><#rt/> 12 | <#else> 13 | id="${id}" colspan="<#if colspan=="">2<#else>${colspan?number*2}" class="pn-fbutton"><#rt/> 14 | 15 | <#if help!="" && helpPosition=='1'>
    <@s.mt code=help text=help/>
    16 | <#nested/> 17 | <#if help!='' && helpPosition=='2'> 18 | <@s.mt code=help text=help/><#rt/> 19 | <#elseif help!='' && helpPosition=='3'> 20 |
    <@s.mt code=help text=help/>
    <#rt/> 21 | 22 | <#rt/> 23 | 24 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/text.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro text 5 | maxlength="" readonly="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | vld="" equalTo="" maxlength="" minlength="" max="" min="" rname="" rvalue="" 9 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 10 | > 11 | <#include "control.ftl"/><#rt/> 12 | <#if readonly!=""> 13 | ${value?html} 14 | <#else> 15 | 16 | <#if id!=""> id="${id}"<#rt/> 17 | <#if maxlength!=""> maxlength="${maxlength}"<#rt/> 18 | <#if max?string!=""> max="${max}"<#rt/> 19 | <#if min?string!=""> min="${min}"<#rt/> 20 | <#if rname!=""> rname="${rname}"<#rt/> 21 | <#if rvalue!=""> rvalue="${rvalue}"<#rt/> 22 | <#if value?? && value?string!=""> value="${value?html}"<#rt/> 23 | <#include "common-attributes.ftl"/><#rt/> 24 | <#include "scripting-events.ftl"/><#rt/> 25 | /><#rt/> 26 | <#include "control-close.ftl"/><#rt/> 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/textarea.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro textarea 5 | wrap="" readonly="" cols="" rows="" value="" 6 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 7 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 8 | vld="" equalTo="" maxlength="" minlength="" 9 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 10 | > 11 | <#include "control.ftl"/><#rt/> 12 | 13 | <#if id!=""> id="${id}"<#rt/> 14 | <#if wrap!=""> wrap="${wrap}"<#rt/> 15 | <#if readonly!=""> readonly="${readonly}"<#rt/> 16 | <#if cols!=""> cols="${cols}"<#rt/> 17 | <#if rows!=""> rows="${rows}"<#rt/> 18 | <#include "common-attributes.ftl"/><#rt/> 19 | <#include "scripting-events.ftl"/><#rt/> 20 | ><#if value!="">${value!?html} 21 | <#include "control-close.ftl"/><#rt/> 22 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/th.ftl: -------------------------------------------------------------------------------- 1 | <#macro th id="" 2 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 3 | > 4 | <#if label!=""> 5 | id="${id}" width="${labelWidth}%" class="pn-flabel<#if noHeight=='false'> pn-flabel-h"><#if required!="false">*<@s.mt code=label text=label/><#if hasColon="true">${colon}<#rt/> 6 | <#else> 7 | <#rt/> 8 | 9 | 10 | <#rt/> 11 | 12 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/tr.ftl: -------------------------------------------------------------------------------- 1 | <#-- 2 | 3 | --> 4 | <#macro tr> 5 | <#rt/> 6 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/pony/ui/tree.ftl: -------------------------------------------------------------------------------- 1 | <#macro tree value="" multiple="" headerKey="" headerValue="" listKey="" listValue="" listDeep="" headerButtom="false" 2 | label="" noHeight="false" required="false" colspan="" width="100" help="" helpPosition="2" colon=":" hasColon="true" 3 | id="" name="" class="" style="" size="" title="" disabled="" tabindex="" accesskey="" 4 | vld="" category = false 5 | onclick="" ondblclick="" onmousedown="" onmouseup="" onmouseover="" onmousemove="" onmouseout="" onfocus="" onblur="" onkeypress="" onkeydown="" onkeyup="" onselect="" onchange="" 6 | > 7 | <#include "control.ftl"/><#rt/> 8 | 9 | <#if name!=""> name="${name}" <#if id!=""> name="${id}"<#rt/> 10 | ><#rt/> 11 | <#if category> 12 | 13 | 14 | <@article_category_tree categoryid = value/> 15 | 16 | <#include "control-close.ftl"/><#rt/> 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/ftl/spring.ftl: -------------------------------------------------------------------------------- 1 | <#ftl strip_whitespace=true> 2 | <#macro m code>${mvcs[(code)]} 3 | <#macro ma code, text>${mvcs[(code)]?replace('{0}', text )} 4 | <#macro mt code, text>${mvcs[(code)]} -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/article_acquisition/progress_data.ftl: -------------------------------------------------------------------------------- 1 | <#assign top> 2 |
    3 |
    4 | 5 |
    6 |
    7 |
    8 |

    9 |
    10 |

    11 | 12 | 13 | <#if list?size gt 0> 14 | ${top} 15 | <#else> 16 | <@s.m "rule.noAcquisitionRunning"/> 17 | 18 | <#if list?size gt 0> 19 | <#list list as temp> 20 | <@s.m "rule.d"/>${temp.id}<@s.m "rule.t"/> 21 | ${temp.contentUrl} 22 | <#if temp.title??>【${temp.title!}】 23 | <@s.m "rule.success"/> 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/common/error.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.error.title" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 8 | 9 | 10 |
    11 |
    12 |
    13 |
    <@s.m "admin.error.message" />
    14 |
    ${obj.content}
    15 |
    <@s.m "admin.error.back" />
    16 |
    17 |
    18 |
    19 | 20 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/common/head.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/permission_category/add.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.permissionCategory.add" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 18 | 19 | 20 |
    21 | <@s.m "admin.path.index" /> » <@s.m "admin.permissionCategory.add" /> 22 |
    23 | <@p.form id="inputForm" action="save.rk" method="post" tableClass="input"> 24 | <@p.text label="permissionCategory.name" id="name" name="name" required="true" class="requireField" maxlength="40"/><@p.tr/> 25 | <@p.th /> 26 | <@p.td colspan="" hasColon="false"> 27 | <@p.submit code="admin.common.submit" id="submit"/>   <@p.button code="admin.common.back" id="backButton" class="button"/> 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/permission_category/edit.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.permissionCategory.edit" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 17 | 18 | 19 |
    20 | <@s.m "admin.path.index" /> » <@s.m "admin.permissionCategory.edit" /> 21 |
    22 | <@p.form id="inputForm" action="update.rk" method="post" tableClass="input"> 23 | <@p.hidden name="id" value="${obj.id}" /> 24 | <@p.text label="permissionCategory.name" id="name" name="name" value="${obj.name}" required="true" class="requireField" maxlength="40"/><@p.tr/> 25 | <@p.th /> 26 | <@p.td colspan="" hasColon="false"> 27 | <@p.submit code="admin.common.submit" id="submit"/>   <@p.button code="admin.common.back" id="backButton" class="button"/> 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/role/list.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.role.list" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 8 | 9 |
    10 | <@s.m "admin.path.index" /> » <@s.m "admin.role.list" /> (<@s.ma "admin.page.total" "${obj.totalCount}"/>) 11 |
    12 | <@p.list id="listForm" action="list.rk" method="get"> 13 | <@p.table value=obj.list;role,i,has_next><#rt/> 14 | <@p.column code=" " align="left" class="check" selectAll=true addSpan=false><#t/> 15 | <@p.column code="ID" align="left">${i+1}<#t/> 16 | <@p.column code="admin.role.name" align="left">${role.name}<#t/> 17 | <@p.column code="admin.role.description" align="left">${role.description}<#t/> 18 | <@p.column code="admin.common.handle" align="left"> 19 | [<@s.m "admin.common.edit" />]<#t/> 20 | <#t/> 21 | 22 | <@p.page value=obj/> 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/sales/map.ftl: -------------------------------------------------------------------------------- 1 | <#list obj?keys as key> 2 | " value="${obj[key]}" /> 3 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/setting/mail.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.setting.mailTestTitle" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 8 | 9 | <@s.m "admin.setting.mailTestTitle" /> 10 |

    <@s.ma "admin.setting.mailTestContent", "${setting.siteName}" />

    11 | 12 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/statistics/setting.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.statistics.setting" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 8 | 9 |
    10 | <@s.m "admin.path.index" /> » <@s.m "admin.statistics.setting" /> 11 |
    12 |
    13 | 14 | 15 | 18 | 21 | 22 | 23 | 26 | 30 | 31 |
    16 | <@s.m "admin.statistics.isEnabled" />: 17 | 19 | checked="checked" /> 20 |
    24 |   25 | 27 | " /> 28 | " /> 29 |
    32 |
    33 | 34 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/admin/statistics/view.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <@s.m "admin.statistics.view" /> - Powered By Rekoe Cms 6 | <#include "/template/admin/common/head.ftl" /> 7 | 17 | 22 | 23 | 24 |
    25 | <@s.m "admin.path.index" /> » <@s.m "admin.statistics.view" /> 26 |
    27 | 28 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/front/include/footer.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/front/include/header.ftl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | 12 |
    13 |
    14 |
    15 | 18 |
    19 |
    20 |
    21 | 27 |
    28 |
    29 |
    -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/template/front/include/statistics.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/WEB-INF/template/front/include/statistics.ftl -------------------------------------------------------------------------------- /src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | -------------------------------------------------------------------------------- /src/main/webapp/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <% response.sendRedirect("admin/index.rk");%> -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/css/error.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | 4 | /* ---------- Error ---------- */ 5 | 6 | div.wrap { 7 | float: left; 8 | position: relative; 9 | left: 50%; 10 | } 11 | 12 | div.error { 13 | float: left; 14 | margin-top: 120px; 15 | position: relative; 16 | right: 50%; 17 | border: 2px solid #f2f2f2; 18 | background: url(../images/error.gif) 0px bottom repeat-x; 19 | } 20 | 21 | div.error dl { 22 | padding: 10px 60px; 23 | border: 1px solid #d7d7d7; 24 | } 25 | 26 | div.error dt { 27 | line-height: 30px; 28 | color: #fe6200; 29 | font-size: 14px; 30 | font-family: "Microsoft YaHei"; 31 | } 32 | 33 | div.error dd { 34 | line-height: 24px; 35 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/config.js: -------------------------------------------------------------------------------- 1 | var langList = 2 | [ 3 | {name: "en_US", charset: "UTF-8"}, 4 | {name: "zh_CN", charset: "UTF-8"}, 5 | {name: "zh_TW", charset: "UTF-8"} 6 | ]; 7 | 8 | var skinList = 9 | [ 10 | {name: "default", charset: "UTF-8"} 11 | ]; -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/lang/en_US.js: -------------------------------------------------------------------------------- 1 | var $lang={ 2 | errAlertMsg: "Invalid date or the date out of range,redo or not?", 3 | aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 4 | aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], 5 | aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 6 | aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"], 7 | clearStr: "Clear", 8 | todayStr: "Today", 9 | okStr: "OK", 10 | updateStr: "OK", 11 | timeStr: "Time", 12 | quickStr: "Quick Selection", 13 | err_1: 'MinDate Cannot be bigger than MaxDate!' 14 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/lang/zh_CN.js: -------------------------------------------------------------------------------- 1 | var $lang={ 2 | errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?", 3 | aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], 4 | aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], 5 | aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], 6 | aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"], 7 | clearStr: "\u6E05\u7A7A", 8 | todayStr: "\u4ECA\u5929", 9 | okStr: "\u786E\u5B9A", 10 | updateStr: "\u786E\u5B9A", 11 | timeStr: "\u65F6\u95F4", 12 | quickStr: "\u5FEB\u901F\u9009\u62E9", 13 | err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!' 14 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/lang/zh_TW.js: -------------------------------------------------------------------------------- 1 | var $lang={ 2 | errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?", 3 | aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], 4 | aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], 5 | aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], 6 | aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"], 7 | clearStr: "\u6E05\u7A7A", 8 | todayStr: "\u4ECA\u5929", 9 | okStr: "\u78BA\u5B9A", 10 | updateStr: "\u78BA\u5B9A", 11 | timeStr: "\u6642\u9593", 12 | quickStr: "\u5FEB\u901F\u9078\u64C7", 13 | err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!' 14 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/skin/WdatePicker.css: -------------------------------------------------------------------------------- 1 | .Wdate { 2 | border: #999 1px solid; 3 | height: 20px; 4 | background: #fff url(datePicker.gif) no-repeat right; 5 | } 6 | 7 | .WdateFmtErr { 8 | font-weight: bold; 9 | color: red; 10 | } -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/skin/datePicker.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/datePicker/skin/datePicker.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/datePicker/skin/default/img.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/datePicker/skin/default/img.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/fusionCharts/Charts/FCF_Line.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/fusionCharts/Charts/FCF_Line.swf -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/common.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/common.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/dialog_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/dialog_overlay.png -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/error.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/file_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/file_icon.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/folder_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/folder_icon.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/header_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/header_logo.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/input.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/input.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/list.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/list.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/loading_bar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/loading_bar.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/loading_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/loading_icon.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/login.png -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/login_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/login_logo.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/main.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/main.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/images/vote_bar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/images/vote_bar.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/js/jquery.event.drag.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/js/jquery.event.drag.js -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/clearhtml/clearhtml.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('clearhtml', function(K) { 11 | var self = this, name = 'clearhtml'; 12 | self.clickToolbar(name, function() { 13 | self.focus(); 14 | var html = self.html(); 15 | html = html.replace(/(]*>)([\s\S]*?)(<\/script>)/ig, ''); 16 | html = html.replace(/(]*>)([\s\S]*?)(<\/style>)/ig, ''); 17 | html = K.formatHtml(html, { 18 | a : ['href', 'target'], 19 | embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], 20 | img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], 21 | table : ['border'], 22 | 'td,th' : ['rowspan', 'colspan'], 23 | 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] 24 | }); 25 | self.html(html); 26 | self.cmd.selection(true); 27 | self.addBookmark(); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/code/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} 2 | 3 | pre.prettyprint { 4 | border: 0; 5 | border-left: 3px solid rgb(204, 204, 204); 6 | margin-left: 2em; 7 | padding: 0.5em; 8 | font-size: 110%; 9 | display: block; 10 | font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; 11 | margin: 1em 0px; 12 | white-space: pre; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/0.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/1.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/10.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/100.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/101.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/101.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/102.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/103.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/103.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/104.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/104.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/105.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/105.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/106.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/106.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/107.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/107.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/108.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/108.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/109.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/109.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/11.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/110.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/110.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/111.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/111.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/112.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/112.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/113.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/113.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/114.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/115.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/115.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/116.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/116.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/117.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/117.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/118.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/118.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/119.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/12.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/120.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/121.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/121.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/122.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/122.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/123.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/123.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/124.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/124.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/125.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/125.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/126.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/126.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/127.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/127.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/128.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/128.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/129.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/129.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/13.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/130.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/130.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/131.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/131.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/132.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/132.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/133.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/133.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/134.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/134.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/14.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/15.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/16.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/17.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/18.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/19.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/2.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/20.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/21.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/22.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/23.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/24.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/25.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/26.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/27.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/28.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/29.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/3.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/30.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/31.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/32.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/33.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/34.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/35.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/36.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/37.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/38.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/39.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/4.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/40.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/41.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/42.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/43.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/44.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/45.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/46.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/47.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/48.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/49.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/5.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/50.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/51.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/52.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/53.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/54.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/55.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/56.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/57.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/58.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/59.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/6.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/60.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/61.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/62.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/63.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/64.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/65.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/66.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/67.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/68.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/69.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/7.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/70.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/71.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/72.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/73.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/74.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/75.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/76.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/77.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/78.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/79.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/8.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/80.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/81.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/82.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/83.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/84.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/85.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/86.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/87.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/88.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/89.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/9.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/90.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/91.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/92.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/93.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/94.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/95.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/96.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/97.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/98.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/99.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/static.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/emoticons/images/static.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/file-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/file-16.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/file-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/file-64.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/folder-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/folder-16.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/folder-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/folder-64.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/go-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/filemanager/images/go-up.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_left.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_right.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/image/images/align_top.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/image/images/refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/plugins/image/images/refresh.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/lineheight/lineheight.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('lineheight', function(K) { 11 | var self = this, name = 'lineheight', lang = self.lang(name + '.'); 12 | self.clickToolbar(name, function() { 13 | var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); 14 | if (commonNode) { 15 | curVal = commonNode.css('line-height'); 16 | } 17 | var menu = self.createMenu({ 18 | name : name, 19 | width : 150 20 | }); 21 | K.each(lang.lineHeight, function(i, row) { 22 | K.each(row, function(key, val) { 23 | menu.addItem({ 24 | title : val, 25 | checked : curVal === key, 26 | click : function() { 27 | self.cmd.toggle('', { 28 | span : '.line-height=' + key 29 | }); 30 | self.updateState(); 31 | self.addBookmark(); 32 | self.hideMenu(); 33 | } 34 | }); 35 | }); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/pagebreak/pagebreak.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('pagebreak', function(K) { 11 | var self = this, name = 'pagebreak'; 12 | self.clickToolbar(name, function() { 13 | var cmd = self.cmd, range = cmd.range; 14 | self.focus(); 15 | range.enlarge(true); 16 | cmd.split(true); 17 | var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '

    '; 18 | self.insertHtml('
    ' + tail); 19 | if (tail !== '') { 20 | var p = K('#__kindeditor_tail_tag__', self.edit.doc); 21 | range.selectNodeContents(p[0]); 22 | p.removeAttr('id'); 23 | cmd.select(); 24 | } 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/preview/preview.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('preview', function(K) { 11 | var self = this, name = 'preview', undefined; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '
    ' + 15 | '' + 16 | '
    ', 17 | dialog = self.createDialog({ 18 | name : name, 19 | width : 750, 20 | title : self.lang(name), 21 | body : html 22 | }), 23 | iframe = K('iframe', dialog.div), 24 | doc = K.iframeDoc(iframe); 25 | doc.open(); 26 | doc.write(self.fullHtml()); 27 | doc.close(); 28 | K(doc.body).css('background-color', '#FFF'); 29 | iframe[0].contentWindow.focus(); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/template/html/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

    8 | 在此处输入标题 9 |

    10 |

    11 | 在此处输入内容 12 |

    13 | 14 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/template/html/2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

    8 | 标题 9 |

    10 | 11 | 12 | 13 | 16 | 19 | 20 | 21 | 24 | 27 | 28 | 29 | 32 | 35 | 36 | 37 |
    14 |

    标题1

    15 |
    17 |

    标题1

    18 |
    22 | 内容1 23 | 25 | 内容2 26 |
    30 | 内容3 31 | 33 | 内容4 34 |
    38 |

    39 | 表格说明 40 |

    41 | 42 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/plugins/template/html/3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

    8 | 在此处输入内容 9 |

    10 |
      11 |
    1. 12 | 描述1 13 |
    2. 14 |
    3. 15 | 描述2 16 |
    4. 17 |
    5. 18 | 描述3 19 |
    6. 20 |
    21 |

    22 | 在此处输入内容 23 |

    24 |
      25 |
    • 26 | 描述1 27 |
    • 28 |
    • 29 | 描述2 30 |
    • 31 |
    • 32 | 描述3 33 |
    • 34 |
    35 | 36 | -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/anchor.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/blank.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/flash.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/loading.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/media.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/media.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/common/rm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/common/rm.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/default/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/default/bg.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/admin/kindeditor/themes/default/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/admin/kindeditor/themes/default/default.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/article.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/article.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/bj_login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/bj_login.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/cart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/cart.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/common.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/common.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/dialog_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/dialog_overlay.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/enter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/enter.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/error.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/facebook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/facebook.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/facebook_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/facebook_header.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/github_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/github_logo.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/index.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/index.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/liencebox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/liencebox.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/loading_bar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/loading_bar.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/loading_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/loading_icon.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/login.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/login.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/member.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/member.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/message.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/message.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/order.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/order.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/password.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/password.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/product.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/product.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/qq_login.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/qq_login.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/register.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/register.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/review.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/review.gif -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/spr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/spr.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/sprite.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/status.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/status.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/tabbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/tabbg.jpg -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/tabbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/tabbg.png -------------------------------------------------------------------------------- /src/main/webapp/resources/front/images/title_y.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rekoe/Rk_Cms/999854b156e4d7c8627095066e8f80f053645528/src/main/webapp/resources/front/images/title_y.jpg -------------------------------------------------------------------------------- /src/test/resources/ioc/dao.js: -------------------------------------------------------------------------------- 1 | var ioc = { 2 | dbconf: { 3 | type : "org.nutz.ioc.impl.PropertiesProxy", 4 | fields: { 5 | paths : "jdbc.properties" 6 | } 7 | }, 8 | dataSource : { 9 | type : "com.alibaba.druid.pool.DruidDataSource", 10 | events : { 11 | depose : 'close' 12 | }, 13 | fields : { 14 | // 请修改下面的数据库连接信息 15 | url : {java:"$dbconf.get('db.url', 'jdbc:mysql://127.0.0.1:3306/platform?useUnicode=true&characterEncoding=utf-8')"}, 16 | username : {java:"$dbconf.get('db.username', 'root')"}, 17 | password : {java:"$dbconf.get('db.password', 'root')"}, 18 | maxActive : {java:"$dbconf.getInt('db.maxActive', 20)"}, 19 | validationQuery : "SELECT 'x'", 20 | testWhileIdle : true, 21 | testOnBorrow : false, 22 | testOnReturn : false 23 | } 24 | }, 25 | 26 | dao : { 27 | type : 'org.nutz.dao.impl.NutDao', 28 | args : [ { 29 | refer : 'dataSource' 30 | } ] 31 | } 32 | }; -------------------------------------------------------------------------------- /src/test/resources/ioc/upload.js: -------------------------------------------------------------------------------- 1 | var uploadIoc = { 2 | utils : { 3 | type : 'com.rekoe.utils.MyUtils', 4 | fields : { 5 | sc : {app:'$servlet'} // 将 ServletContext 对象注入 MyUtils 6 | } 7 | }, 8 | tmpFilePool : { 9 | type : 'org.nutz.filepool.NutFilePool', // 临时文件最大个数为 1000 个 10 | args : [ {java:'$utils.getPath("/tmp")'}, 1000 ] 11 | }, 12 | uploadPicFileContext : { 13 | type : 'org.nutz.mvc.upload.UploadingContext', 14 | singleton : false, 15 | args : [ { refer : 'tmpFilePool' } ], 16 | fields : { 17 | // 是否忽略空文件, 默认为 false 18 | ignoreNull : true, 19 | // 单个文件最大尺寸(大约的值,单位为字节,即 1048576 为 1M) 20 | maxFileSize : 5048576, // 正则表达式匹配可以支持的文件名 21 | nameFilter : '^(.+[.])(doc|docx|ppt|pptx|pdf|jpg|gif)$' 22 | } 23 | }, 24 | upload : { 25 | type : 'org.nutz.mvc.upload.UploadAdaptor', 26 | singleton : false, 27 | args : [ { refer : 'uploadPicFileContext' } ] 28 | } 29 | }; -------------------------------------------------------------------------------- /src/test/resources/jdbc.properties: -------------------------------------------------------------------------------- 1 | db.url=jdbc:mysql://127.0.0.1:3306/rk_cms?useUnicode=true&characterEncoding=utf-8 2 | db.username=root 3 | db.password=root 4 | db.maxActive=50 5 | -------------------------------------------------------------------------------- /src/test/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=debug,A1,file 2 | log4j.logger.velocity_log=INFO 3 | log4j.category.org.nutz=DEBUG,A1,file 4 | log4j.category.org.nutz.dao=DEBUG 5 | log4j.category.org.nutz.ioc=INFO 6 | log4j.category.org.nutz.mvc=INFO 7 | log4j.category.org.apache.shiro=INFO 8 | log4j.category.org.brickred.socialauth=INFO 9 | log4j.category.org.apache.commons=INFO 10 | log4j.category.org.nutz.resource=INFO 11 | log4j.category.org.quartz=INFO 12 | log4j.category.freemarker.cache=INFO 13 | log4j.additivity.org.nutz = false 14 | 15 | log4j.appender.A1=org.apache.log4j.ConsoleAppender 16 | log4j.appender.A1.layout=org.apache.log4j.PatternLayout 17 | log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%p][%c] - %m%n 18 | 19 | log4j.appender.file=org.apache.log4j.RollingFileAppender 20 | log4j.appender.file.File=nutz.log 21 | log4j.appender.file.MaxFileSize=20MB 22 | log4j.appender.file.MaxBackupIndex=1 23 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 24 | log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%p][%c] - %m%n --------------------------------------------------------------------------------