├── .gitignore ├── LICENSE.txt ├── README.md ├── config └── artefact-order.config ├── database ├── README ├── drivers │ └── mysql-connector-java-5.1.25-bin.jar ├── environments │ └── development.properties.sample ├── pom.xml └── scripts │ └── bootstrap.sql ├── dependencies └── pom.xml ├── doc └── Onboard插件编程指南.docx ├── frontend ├── kernel │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── frontend │ │ │ ├── ApiProxyServlet.java │ │ │ ├── Application.java │ │ │ ├── WebConfig.java │ │ │ ├── configuration │ │ │ ├── AccountConfigure.java │ │ │ └── ThymleafConfiguration.java │ │ │ ├── constraints │ │ │ ├── EmailExists.java │ │ │ ├── Password.java │ │ │ ├── Username.java │ │ │ └── UsernameExists.java │ │ │ ├── controller │ │ │ ├── api │ │ │ │ ├── AttachmentApi.java │ │ │ │ ├── CurrentUserAPIController.java │ │ │ │ ├── MobileProxyController.java │ │ │ │ └── ProxyController.java │ │ │ └── page │ │ │ │ ├── HomeController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── account │ │ │ │ ├── AccountController.java │ │ │ │ ├── ConfirmationController.java │ │ │ │ ├── ForgetPasswordController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── ResetPasswordController.java │ │ │ │ ├── SignupController.java │ │ │ │ └── form │ │ │ │ │ ├── ForgetPasswordForm.java │ │ │ │ │ ├── InvitationRegistrationForm.java │ │ │ │ │ ├── RegistrationForm.java │ │ │ │ │ ├── ResetPasswordForm.java │ │ │ │ │ ├── SigninForm.java │ │ │ │ │ ├── ThirdPartRegistrationForm.java │ │ │ │ │ └── UserUpdateForm.java │ │ │ │ └── invitation │ │ │ │ └── InvitationViewController.java │ │ │ ├── exception │ │ │ ├── BadRequestException.java │ │ │ ├── InternalException.java │ │ │ ├── NoLoginException.java │ │ │ ├── NoPermissionException.java │ │ │ ├── OnboardErrorController.java │ │ │ ├── ResourceNotFoundException.java │ │ │ └── handler │ │ │ │ └── GlobalControllerExceptionHandler.java │ │ │ ├── interceptors │ │ │ ├── LoginRequired.java │ │ │ └── RememberMeInterceptor.java │ │ │ ├── internal │ │ │ └── WebConfigurationImpl.java │ │ │ ├── model │ │ │ ├── Activity.java │ │ │ ├── Attachment.java │ │ │ ├── Comment.java │ │ │ ├── Company.java │ │ │ ├── Project.java │ │ │ ├── ResponseMap.java │ │ │ ├── ThreadVariables.java │ │ │ ├── User.java │ │ │ └── dto │ │ │ │ ├── AttachmentDTO.java │ │ │ │ ├── CodeAnylizeOverViewDTO.java │ │ │ │ ├── CompanyDTO.java │ │ │ │ ├── ProjectDTO.java │ │ │ │ ├── TagDTO.java │ │ │ │ └── UserDTO.java │ │ │ ├── redis │ │ │ ├── KeyUtils.java │ │ │ ├── Repository.java │ │ │ └── TokenType.java │ │ │ ├── service │ │ │ ├── account │ │ │ │ ├── AccountService.java │ │ │ │ └── impl │ │ │ │ │ └── AccountServiceImpl.java │ │ │ ├── net │ │ │ │ ├── NetService.java │ │ │ │ └── impl │ │ │ │ │ └── NetServiceImpl.java │ │ │ ├── thirdpart │ │ │ │ ├── ThirdpartService.java │ │ │ │ └── impl │ │ │ │ │ └── ThirdpartServiceImpl.java │ │ │ ├── util │ │ │ │ ├── AvatarUtils.java │ │ │ │ └── WebConfiguration.java │ │ │ └── web │ │ │ │ ├── GlobalService.java │ │ │ │ ├── RequestFilter.java │ │ │ │ ├── SessionService.java │ │ │ │ └── impl │ │ │ │ ├── GlobalServiceImpl.java │ │ │ │ └── SessionServiceImpl.java │ │ │ ├── validator │ │ │ ├── EmailExistsValidator.java │ │ │ ├── PasswordValidator.java │ │ │ ├── UsernameExistsValidator.java │ │ │ └── UsernameValidator.java │ │ │ └── websocket │ │ │ ├── RedisMessageReceiver.java │ │ │ ├── WebsocketConfiguration.java │ │ │ └── WebsocketHandler.java │ │ └── resources │ │ ├── application.examples │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── static │ │ ├── img │ │ │ ├── 403.png │ │ │ ├── 404.png │ │ │ ├── 500.png │ │ │ ├── attachment-icon │ │ │ │ ├── 208x128-md-solid.png │ │ │ │ ├── ai.png │ │ │ │ ├── css.png │ │ │ │ ├── default.png │ │ │ │ ├── excel.png │ │ │ │ ├── file_extension_gif.png │ │ │ │ ├── file_extension_js.png │ │ │ │ ├── file_extension_others.png │ │ │ │ ├── file_extension_rar.png │ │ │ │ ├── file_extension_txt.png │ │ │ │ ├── flash.png │ │ │ │ ├── html.png │ │ │ │ ├── image.png │ │ │ │ ├── md-208x128.png │ │ │ │ ├── md-66x40-solid.png │ │ │ │ ├── md-66x40.png │ │ │ │ ├── paperclip.png │ │ │ │ ├── pdf.png │ │ │ │ ├── photoshop.png │ │ │ │ ├── ppt.png │ │ │ │ ├── processbar.gif │ │ │ │ ├── script.png │ │ │ │ ├── txt.png │ │ │ │ ├── word.png │ │ │ │ └── zip.png │ │ │ ├── avatar │ │ │ │ └── a0.jpg │ │ │ ├── center-panel-nav-shadow.png │ │ │ ├── favicon.png │ │ │ ├── feature │ │ │ │ ├── commits.jpg │ │ │ │ ├── process.jpg │ │ │ │ ├── recover.jpg │ │ │ │ ├── remind.jpg │ │ │ │ ├── repository.jpg │ │ │ │ └── search.jpg │ │ │ ├── index │ │ │ │ ├── header_bg.jpg │ │ │ │ ├── onboard-mobile.png │ │ │ │ └── onboard-web.png │ │ │ ├── login-bg │ │ │ │ ├── boarding.jpg │ │ │ │ ├── city.jpg │ │ │ │ ├── jellyfish.jpg │ │ │ │ ├── sail.jpg │ │ │ │ └── tic-tac-toe.jpg │ │ │ ├── login-logo.png │ │ │ ├── ob-checkbox.png │ │ │ ├── ob-input-checkbox.png │ │ │ ├── onboard-logo.png │ │ │ └── sidebar-shadow.png │ │ ├── js │ │ │ ├── clean.js │ │ │ ├── common-init.js │ │ │ ├── modules │ │ │ │ ├── common.js │ │ │ │ ├── feedback.js │ │ │ │ └── onboard.js │ │ │ ├── ng-modules │ │ │ │ ├── README.md │ │ │ │ ├── account │ │ │ │ │ ├── forget-password-ctrl.js │ │ │ │ │ └── index.js │ │ │ │ ├── attachmentList-ctrl.js │ │ │ │ ├── bugs │ │ │ │ │ ├── bugs-ctrl.js │ │ │ │ │ ├── bugs-stats-ctrl.js │ │ │ │ │ └── index.js │ │ │ │ ├── company │ │ │ │ │ ├── activities-ctrl.js │ │ │ │ │ ├── collection-ctrl.js │ │ │ │ │ ├── company-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── me-ctrl.js │ │ │ │ │ ├── notifications-ctrl.js │ │ │ │ │ ├── project-edit-ctrl.js │ │ │ │ │ ├── projects-ctrl.js │ │ │ │ │ ├── retrospect-ctrl.js │ │ │ │ │ ├── search-ctrl.js │ │ │ │ │ ├── status-ctrl.js │ │ │ │ │ └── users-ctrl.js │ │ │ │ ├── cqa │ │ │ │ │ ├── cqa-ctrl.js │ │ │ │ │ ├── cqa-jobs-ctrl.js │ │ │ │ │ ├── cqa-new-job-ctrl.js │ │ │ │ │ └── index.js │ │ │ │ ├── data │ │ │ │ │ ├── activity-stats-service.js │ │ │ │ │ ├── base-service.js │ │ │ │ │ ├── bug-data-service.js │ │ │ │ │ ├── bug-service.js │ │ │ │ │ ├── bug-websocket-service.js │ │ │ │ │ ├── ci-service.js │ │ │ │ │ ├── ciBuild-websocket-service.js │ │ │ │ │ ├── ciProject-websocket-service.js │ │ │ │ │ ├── collections-service.js │ │ │ │ │ ├── comment-service.js │ │ │ │ │ ├── comment-websocket-service.js │ │ │ │ │ ├── commit-stats-service.js │ │ │ │ │ ├── company-service.js │ │ │ │ │ ├── cqa-service.js │ │ │ │ │ ├── data-proxy-factory.js │ │ │ │ │ ├── discussion-data-service.js │ │ │ │ │ ├── discussion-service.js │ │ │ │ │ ├── discussion-websocket-service.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── iteration-data-service.js │ │ │ │ │ ├── iteration-service.js │ │ │ │ │ ├── iteration-websocket-service.js │ │ │ │ │ ├── keyword-service.js │ │ │ │ │ ├── project-service.js │ │ │ │ │ ├── status-service.js │ │ │ │ │ ├── step-data-service.js │ │ │ │ │ ├── step-service.js │ │ │ │ │ ├── story-data-service.js │ │ │ │ │ ├── story-service.js │ │ │ │ │ ├── story-websocket-service.js │ │ │ │ │ ├── todo-data-service.js │ │ │ │ │ ├── todo-service.js │ │ │ │ │ ├── todo-stats-service.js │ │ │ │ │ ├── todo-util-service.js │ │ │ │ │ ├── todo-websocket-service.js │ │ │ │ │ ├── todolist-data-service.js │ │ │ │ │ ├── todolist-service.js │ │ │ │ │ ├── todolist-websocket-service.js │ │ │ │ │ ├── topic-data-service.js │ │ │ │ │ ├── uploads-service.js │ │ │ │ │ ├── uploads-websocket-service.js │ │ │ │ │ ├── url-service.js │ │ │ │ │ ├── user-data-service.js │ │ │ │ │ ├── user-service.js │ │ │ │ │ └── web-socket-service.js │ │ │ │ ├── discussions │ │ │ │ │ ├── discussion-edit-ctrl.js │ │ │ │ │ ├── discussion-show-ctrl.js │ │ │ │ │ ├── discussions-ctrl.js │ │ │ │ │ └── index.js │ │ │ │ ├── iteration │ │ │ │ │ ├── active-iteration-ctrl.js │ │ │ │ │ ├── active-iteration-statistics-ctrl.js │ │ │ │ │ ├── active-iteration-todos-ctrl.js │ │ │ │ │ ├── completed-iteration-ctrl.js │ │ │ │ │ ├── completed-iterations-ctrl.js │ │ │ │ │ ├── completing-iteration-ctrl.js │ │ │ │ │ ├── created-ierations-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── iteration-codeStats-ctrl.js │ │ │ │ │ ├── iteration-edit-ctrl.js │ │ │ │ │ ├── iteration-overallStats-ctrl.js │ │ │ │ │ ├── iteration-todoStats-ctrl.js │ │ │ │ │ ├── iterations-ctrl.js │ │ │ │ │ └── link-iteration-ctrl.js │ │ │ │ ├── onboard │ │ │ │ │ ├── account-ctrl.js │ │ │ │ │ ├── companies-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── onboard-ctrl.js │ │ │ │ ├── plugin │ │ │ │ │ ├── plugin.js │ │ │ │ │ └── plugin.md │ │ │ │ ├── project │ │ │ │ │ ├── index.js │ │ │ │ │ └── project-ctrl.js │ │ │ │ ├── statistics │ │ │ │ │ ├── Loc-chart-ctrl.js │ │ │ │ │ ├── activity-punch-card-factory.js │ │ │ │ │ ├── bar-factory.js │ │ │ │ │ ├── chart-loc-ctrl.js │ │ │ │ │ ├── column-range-factory.js │ │ │ │ │ ├── commits-chart-ctrl.js │ │ │ │ │ ├── commits-loc-trend-factory.js │ │ │ │ │ ├── commits-punch-card-ctrl.js │ │ │ │ │ ├── commits-punch-card-factory.js │ │ │ │ │ ├── commits-punchCard-ctrl.js │ │ │ │ │ ├── commits-trend-factory.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── pie-chart-factory.js │ │ │ │ │ ├── punch-card-factory.js │ │ │ │ │ ├── settings-factory.js │ │ │ │ │ ├── stacked-bar-factory.js │ │ │ │ │ ├── statistics-code-ctrl.js │ │ │ │ │ ├── statistics-ctrl.js │ │ │ │ │ ├── statistics-group-ctrl.js │ │ │ │ │ ├── statistics-overall-ctrl.js │ │ │ │ │ ├── statistics-todo-ctrl.js │ │ │ │ │ ├── trend-factory.js │ │ │ │ │ ├── user-menu-ctrl.js │ │ │ │ │ └── workModel-service.js │ │ │ │ ├── story │ │ │ │ │ ├── archived-stories-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── step-ctrl.js │ │ │ │ │ ├── stories-ctrl.js │ │ │ │ │ └── story-ctrl.js │ │ │ │ ├── tab │ │ │ │ │ ├── activity-tab-ctrl.js │ │ │ │ │ ├── comment-image-modal-ctrl.js │ │ │ │ │ ├── comment-tab-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── story-tab-ctrl.js │ │ │ │ │ ├── tab-service.js │ │ │ │ │ ├── tab-set-ctrl.js │ │ │ │ │ └── todo-tab-ctrl.js │ │ │ │ ├── todo │ │ │ │ │ ├── acrive-todolists-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── link-todo-ctrl.js │ │ │ │ │ ├── new-todo-ctrl.js │ │ │ │ │ ├── open-todolists-ctrl.js │ │ │ │ │ ├── todo-ctrl.js │ │ │ │ │ ├── todo-item-ctrl.js │ │ │ │ │ ├── todolist-copy-ctrl.js │ │ │ │ │ ├── todolist-ctrl.js │ │ │ │ │ └── todolists-ctrl.js │ │ │ │ ├── upload │ │ │ │ │ ├── attachment-ctrl.js │ │ │ │ │ ├── fileDropZone-ctrl.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── tag-and-attachments-ctrl.js │ │ │ │ │ ├── upload-detail.js │ │ │ │ │ └── uploads-ctrl.js │ │ │ │ ├── util │ │ │ │ │ ├── activity-list-directive.js │ │ │ │ │ ├── burndown-chart-service.js │ │ │ │ │ ├── comment-directive.js │ │ │ │ │ ├── commit-code.js │ │ │ │ │ ├── date-service.js │ │ │ │ │ ├── drawer-directive.js │ │ │ │ │ ├── drawer-service.js │ │ │ │ │ ├── dropdown-form-directive.js │ │ │ │ │ ├── emoji-service.js │ │ │ │ │ ├── file-size-filter.js │ │ │ │ │ ├── ias-pager-factory.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── new-comment-directive.js │ │ │ │ │ ├── open-drawer-directive.js │ │ │ │ │ ├── preview-directive.js │ │ │ │ │ ├── redirect-directive.js │ │ │ │ │ ├── resize-directive.js │ │ │ │ │ ├── richtexteditor-service.js │ │ │ │ │ ├── spinner-directive.js │ │ │ │ │ ├── theme-service.js │ │ │ │ │ ├── tooltip-directive.js │ │ │ │ │ ├── util-service.js │ │ │ │ │ └── wordCloud-service.js │ │ │ │ └── websocket │ │ │ │ │ ├── index.js │ │ │ │ │ └── websocket-service.js │ │ │ └── ng-service │ │ │ │ └── commit-stats-service.js │ │ ├── less │ │ │ ├── README.md │ │ │ ├── modules │ │ │ │ ├── account.less │ │ │ │ ├── attachmentlist.less │ │ │ │ ├── awesome-bootstrap-checkbox.less │ │ │ │ ├── filedropzone.less │ │ │ │ ├── iterations.less │ │ │ │ ├── project.less │ │ │ │ └── user.less │ │ │ ├── onboard │ │ │ │ ├── account │ │ │ │ │ ├── index.less │ │ │ │ │ ├── password.less │ │ │ │ │ ├── profile.less │ │ │ │ │ └── sshkey.less │ │ │ │ ├── common │ │ │ │ │ ├── activity-list.less │ │ │ │ │ ├── activity.less │ │ │ │ │ ├── attachmentdetail.less │ │ │ │ │ ├── comment.less │ │ │ │ │ ├── commit-list.less │ │ │ │ │ ├── diff.less │ │ │ │ │ ├── global.less │ │ │ │ │ ├── index.less │ │ │ │ │ ├── link-todolist.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── ob-panel.less │ │ │ │ │ ├── tab.less │ │ │ │ │ ├── tag-and-attachments.less │ │ │ │ │ ├── user-dropdown.less │ │ │ │ │ └── variables.less │ │ │ │ ├── companies.less │ │ │ │ ├── company │ │ │ │ │ ├── activities.less │ │ │ │ │ ├── calendar.less │ │ │ │ │ ├── collection.less │ │ │ │ │ ├── common │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ ├── todo.less │ │ │ │ │ │ └── userMenu.less │ │ │ │ │ ├── index.less │ │ │ │ │ ├── invite.less │ │ │ │ │ ├── me.less │ │ │ │ │ ├── project-edit.less │ │ │ │ │ ├── project │ │ │ │ │ │ ├── bugs │ │ │ │ │ │ │ └── bugs.less │ │ │ │ │ │ ├── ci │ │ │ │ │ │ │ ├── buildDetail.less │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── testReport.less │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ ├── center-panel.less │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── sidebar.less │ │ │ │ │ │ ├── cqa │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ ├── jobs.less │ │ │ │ │ │ │ └── new-job.less │ │ │ │ │ │ ├── discussion │ │ │ │ │ │ │ └── index.less │ │ │ │ │ │ ├── documents │ │ │ │ │ │ │ └── documents.less │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ ├── iteration │ │ │ │ │ │ │ ├── completing.less │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── iteration-edit.less │ │ │ │ │ │ ├── repository │ │ │ │ │ │ │ ├── branches.less │ │ │ │ │ │ │ ├── commits.less │ │ │ │ │ │ │ ├── files.less │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ ├── prepare.less │ │ │ │ │ │ │ └── pullrequest.less │ │ │ │ │ │ ├── statistics.less │ │ │ │ │ │ ├── story │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ ├── story-renderer.less │ │ │ │ │ │ │ └── story.less │ │ │ │ │ │ ├── todo │ │ │ │ │ │ │ └── index.less │ │ │ │ │ │ ├── uploads │ │ │ │ │ │ │ └── index.less │ │ │ │ │ │ └── version │ │ │ │ │ │ │ └── index.less │ │ │ │ │ ├── projects.less │ │ │ │ │ ├── retrospect.less │ │ │ │ │ ├── search.less │ │ │ │ │ ├── status.less │ │ │ │ │ └── users.less │ │ │ │ ├── drawer │ │ │ │ │ ├── index.less │ │ │ │ │ ├── story-detail.less │ │ │ │ │ ├── todo-detail.less │ │ │ │ │ └── uploaddetail.less │ │ │ │ ├── header.less │ │ │ │ ├── login.less │ │ │ │ ├── onboard.less │ │ │ │ └── spinner.less │ │ │ └── plugin │ │ │ │ └── plugin.md │ │ └── lib │ │ │ ├── angular-strap │ │ │ ├── angular-strap.js │ │ │ ├── angular-strap.min.js │ │ │ ├── angular-strap.min.js.map │ │ │ ├── angular-strap.tpl.js │ │ │ ├── angular-strap.tpl.min.js │ │ │ └── modules │ │ │ │ ├── affix.js │ │ │ │ ├── affix.min.js │ │ │ │ ├── affix.min.js.map │ │ │ │ ├── alert.js │ │ │ │ ├── alert.min.js │ │ │ │ ├── alert.min.js.map │ │ │ │ ├── alert.tpl.js │ │ │ │ ├── alert.tpl.min.js │ │ │ │ ├── aside.js │ │ │ │ ├── aside.min.js │ │ │ │ ├── aside.min.js.map │ │ │ │ ├── aside.tpl.js │ │ │ │ ├── aside.tpl.min.js │ │ │ │ ├── button.js │ │ │ │ ├── button.min.js │ │ │ │ ├── button.min.js.map │ │ │ │ ├── collapse.js │ │ │ │ ├── collapse.min.js │ │ │ │ ├── collapse.min.js.map │ │ │ │ ├── date-formatter.js │ │ │ │ ├── date-formatter.min.js │ │ │ │ ├── date-formatter.min.js.map │ │ │ │ ├── date-parser.js │ │ │ │ ├── date-parser.min.js │ │ │ │ ├── date-parser.min.js.map │ │ │ │ ├── datepicker.js │ │ │ │ ├── datepicker.min.js │ │ │ │ ├── datepicker.min.js.map │ │ │ │ ├── datepicker.tpl.js │ │ │ │ ├── datepicker.tpl.min.js │ │ │ │ ├── debounce.js │ │ │ │ ├── debounce.min.js │ │ │ │ ├── debounce.min.js.map │ │ │ │ ├── dimensions.js │ │ │ │ ├── dimensions.min.js │ │ │ │ ├── dimensions.min.js.map │ │ │ │ ├── dropdown.js │ │ │ │ ├── dropdown.min.js │ │ │ │ ├── dropdown.min.js.map │ │ │ │ ├── dropdown.tpl.js │ │ │ │ ├── dropdown.tpl.min.js │ │ │ │ ├── modal.js │ │ │ │ ├── modal.min.js │ │ │ │ ├── modal.min.js.map │ │ │ │ ├── modal.tpl.js │ │ │ │ ├── modal.tpl.min.js │ │ │ │ ├── navbar.js │ │ │ │ ├── navbar.min.js │ │ │ │ ├── navbar.min.js.map │ │ │ │ ├── parse-options.js │ │ │ │ ├── parse-options.min.js │ │ │ │ ├── parse-options.min.js.map │ │ │ │ ├── popover.js │ │ │ │ ├── popover.min.js │ │ │ │ ├── popover.min.js.map │ │ │ │ ├── popover.tpl.js │ │ │ │ ├── popover.tpl.min.js │ │ │ │ ├── raf.js │ │ │ │ ├── raf.min.js │ │ │ │ ├── raf.min.js.map │ │ │ │ ├── scrollspy.js │ │ │ │ ├── scrollspy.min.js │ │ │ │ ├── scrollspy.min.js.map │ │ │ │ ├── select.js │ │ │ │ ├── select.min.js │ │ │ │ ├── select.min.js.map │ │ │ │ ├── select.tpl.js │ │ │ │ ├── select.tpl.min.js │ │ │ │ ├── tab.js │ │ │ │ ├── tab.min.js │ │ │ │ ├── tab.min.js.map │ │ │ │ ├── tab.tpl.js │ │ │ │ ├── tab.tpl.min.js │ │ │ │ ├── timepicker.js │ │ │ │ ├── timepicker.min.js │ │ │ │ ├── timepicker.min.js.map │ │ │ │ ├── timepicker.tpl.js │ │ │ │ ├── timepicker.tpl.min.js │ │ │ │ ├── tooltip.js │ │ │ │ ├── tooltip.min.js │ │ │ │ ├── tooltip.min.js.map │ │ │ │ ├── tooltip.tpl.js │ │ │ │ ├── tooltip.tpl.min.js │ │ │ │ ├── typeahead.js │ │ │ │ ├── typeahead.min.js │ │ │ │ ├── typeahead.min.js.map │ │ │ │ ├── typeahead.tpl.js │ │ │ │ └── typeahead.tpl.min.js │ │ │ ├── angular │ │ │ ├── LICENSE │ │ │ ├── angular-animate.js │ │ │ ├── angular-animate.min.js │ │ │ ├── angular-animate.min.js.map │ │ │ ├── angular-bootstrap-switch.js │ │ │ ├── angular-bootstrap-switch.min.js │ │ │ ├── angular-brick.css │ │ │ ├── angular-brick.js │ │ │ ├── angular-confirm-field.min.js │ │ │ ├── angular-datepicker.css │ │ │ ├── angular-datepicker.js │ │ │ ├── angular-datepicker.min.js │ │ │ ├── angular-file-upload-shim.min.js │ │ │ ├── angular-file-upload.min.js │ │ │ ├── angular-highlightjs.js │ │ │ ├── angular-highlightjs.min.js │ │ │ ├── angular-infinite-scroll.js │ │ │ ├── angular-memberselector.css │ │ │ ├── angular-memberselector.js │ │ │ ├── angular-moment.js │ │ │ ├── angular-moment.min.js │ │ │ ├── angular-moment.min.js.map.txt │ │ │ ├── angular-resource.js │ │ │ ├── angular-resource.min.js │ │ │ ├── angular-resource.min.js.map │ │ │ ├── angular-route.js │ │ │ ├── angular-route.min.js │ │ │ ├── angular-route.min.js.map │ │ │ ├── angular-sanitize.js │ │ │ ├── angular-sanitize.min.js │ │ │ ├── angular-sanitize.min.js.map │ │ │ ├── angular-stories-tree.css │ │ │ ├── angular-stories-tree.js │ │ │ ├── angular-treeview.css │ │ │ ├── angular-treeview.js │ │ │ ├── angular-ui-calendar.js │ │ │ ├── angular-ui-router.min.js │ │ │ ├── angular-ui-sortable.js │ │ │ ├── angular-ui-tree.js │ │ │ ├── angular-ui-tree.min.css │ │ │ ├── angular.js │ │ │ ├── angular.min.js │ │ │ ├── angular.min.js.map │ │ │ ├── checklist-model.js │ │ │ ├── errors.json │ │ │ ├── ng-infinite-scroll.min.js │ │ │ ├── ui-bootstrap-tpls-0.12.0.min.js │ │ │ ├── version.json │ │ │ └── version.txt │ │ │ ├── at │ │ │ ├── jquery.atwho.css │ │ │ ├── jquery.atwho.js │ │ │ ├── jquery.atwho.min.css │ │ │ ├── jquery.atwho.min.js │ │ │ ├── jquery.caret.js │ │ │ ├── jquery.caret.min.js │ │ │ ├── twemoji-awesome-modified.css │ │ │ └── twemoji-awesome.css │ │ │ ├── bootstrap │ │ │ ├── bootstrap-colorselector │ │ │ │ ├── css │ │ │ │ │ └── bootstrap-colorselector.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-colorselector.js │ │ │ ├── bootstrap-datetimepicker │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-datetimepicker.css │ │ │ │ │ └── bootstrap-datetimepicker.min.css │ │ │ │ └── js │ │ │ │ │ ├── bootstrap-datetimepicker.js │ │ │ │ │ ├── bootstrap-datetimepicker.min.js │ │ │ │ │ └── locales │ │ │ │ │ └── bootstrap-datetimepicker.zh-CN.js │ │ │ ├── bootstrap-drawer │ │ │ │ ├── css │ │ │ │ │ └── bootstrap-drawer.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-drawer.js │ │ │ ├── bootstrap-filestyle.min.js │ │ │ ├── bootstrap-imgSelector │ │ │ │ ├── css │ │ │ │ │ └── bootstrap-imgSelector.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-imgSelector.js │ │ │ ├── bootstrap-markdown │ │ │ │ ├── bootstrap-markdown.js │ │ │ │ ├── bootstrap-markdown.less │ │ │ │ ├── bootstrap-markdown.min.css │ │ │ │ ├── bootstrap-markdown.zh.js │ │ │ │ ├── jquery.hotkeys.js │ │ │ │ ├── markdown-js.js │ │ │ │ ├── markdown-js.min.js │ │ │ │ ├── marked.js │ │ │ │ ├── md-editor-by-harttle.js │ │ │ │ └── to-markdown.js │ │ │ ├── bootstrap-memberselector │ │ │ │ ├── css │ │ │ │ │ └── bootstrap-memberselector.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-memberselector.js │ │ │ ├── bootstrap-popover-x │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-popover-x.css │ │ │ │ │ └── bootstrap-popover-x.min.css │ │ │ │ └── js │ │ │ │ │ └── bootstrap-popover-x.js │ │ │ ├── bootstrap-switch │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-switch.css │ │ │ │ │ └── bootstrap-switch.min.css │ │ │ │ └── js │ │ │ │ │ ├── bootstrap-switch.js │ │ │ │ │ └── bootstrap-switch.min.js │ │ │ ├── bootstrap3-typeahead.min.js │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── npm.js │ │ │ └── ui-bootstrap-tpls-0.11.2.js │ │ │ ├── d3-cloud │ │ │ └── d3-layout-cloud.js │ │ │ ├── d3 │ │ │ └── d3.min.js │ │ │ ├── echarts │ │ │ └── dist │ │ │ │ ├── chart │ │ │ │ ├── bar.js │ │ │ │ ├── chord.js │ │ │ │ ├── eventRiver.js │ │ │ │ ├── force.js │ │ │ │ ├── funnel.js │ │ │ │ ├── gauge.js │ │ │ │ ├── heatmap.js │ │ │ │ ├── k.js │ │ │ │ ├── line.js │ │ │ │ ├── map.js │ │ │ │ ├── pie.js │ │ │ │ ├── radar.js │ │ │ │ ├── scatter.js │ │ │ │ ├── tree.js │ │ │ │ ├── treemap.js │ │ │ │ ├── venn.js │ │ │ │ └── wordCloud.js │ │ │ │ ├── echarts-all.js │ │ │ │ └── echarts.js │ │ │ ├── fontawesome │ │ │ ├── css │ │ │ │ ├── font-awesome.css │ │ │ │ └── font-awesome.min.css │ │ │ └── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── fullcalendar │ │ │ ├── fullcalendar.css │ │ │ ├── fullcalendar.js │ │ │ ├── fullcalendar.min.css │ │ │ ├── fullcalendar.min.js │ │ │ ├── fullcalendar.print.css │ │ │ ├── gcal.js │ │ │ └── lang │ │ │ │ └── zh-cn.js │ │ │ ├── glyphicons-pro │ │ │ ├── glyphicons │ │ │ │ ├── css │ │ │ │ │ ├── glyphicons.css │ │ │ │ │ └── style.css │ │ │ │ ├── images │ │ │ │ │ ├── glyphicons-white.png │ │ │ │ │ ├── glyphicons-white.svg │ │ │ │ │ ├── glyphicons.png │ │ │ │ │ └── glyphicons.svg │ │ │ │ ├── index.html │ │ │ │ ├── less │ │ │ │ │ ├── glyphicons.less │ │ │ │ │ ├── reset.less │ │ │ │ │ ├── site.less │ │ │ │ │ └── style.less │ │ │ │ └── scripts │ │ │ │ │ ├── modernizr.js │ │ │ │ │ └── modernizr_license.txt │ │ │ ├── glyphicons_filetypes │ │ │ │ ├── css │ │ │ │ │ ├── filetypes.css │ │ │ │ │ └── style.css │ │ │ │ ├── images │ │ │ │ │ ├── glyphicons_filetypes-white.png │ │ │ │ │ ├── glyphicons_filetypes-white.svg │ │ │ │ │ ├── glyphicons_filetypes.png │ │ │ │ │ └── glyphicons_filetypes.svg │ │ │ │ ├── index.html │ │ │ │ ├── less │ │ │ │ │ ├── filetypes.less │ │ │ │ │ ├── reset.less │ │ │ │ │ ├── site.less │ │ │ │ │ └── style.less │ │ │ │ └── scripts │ │ │ │ │ ├── modernizr.js │ │ │ │ │ └── modernizr_license.txt │ │ │ ├── glyphicons_halflings │ │ │ │ ├── css │ │ │ │ │ ├── halflings.css │ │ │ │ │ └── style.css │ │ │ │ ├── images │ │ │ │ │ ├── glyphicons_halflings-white.png │ │ │ │ │ ├── glyphicons_halflings-white.svg │ │ │ │ │ ├── glyphicons_halflings.png │ │ │ │ │ └── glyphicons_halflings.svg │ │ │ │ ├── index.html │ │ │ │ ├── less │ │ │ │ │ ├── halflings.less │ │ │ │ │ ├── reset.less │ │ │ │ │ ├── site.less │ │ │ │ │ └── style.less │ │ │ │ └── scripts │ │ │ │ │ ├── modernizr.js │ │ │ │ │ └── modernizr_license.txt │ │ │ ├── glyphicons_handbook.pdf │ │ │ └── glyphicons_social │ │ │ │ ├── css │ │ │ │ ├── social.css │ │ │ │ └── style.css │ │ │ │ ├── images │ │ │ │ ├── glyphicons_social-white.png │ │ │ │ ├── glyphicons_social-white.svg │ │ │ │ ├── glyphicons_social.png │ │ │ │ └── glyphicons_social.svg │ │ │ │ ├── index.html │ │ │ │ ├── less │ │ │ │ ├── reset.less │ │ │ │ ├── site.less │ │ │ │ ├── social.less │ │ │ │ └── style.less │ │ │ │ └── scripts │ │ │ │ ├── modernizr.js │ │ │ │ └── modernizr_license.txt │ │ │ ├── highcharts │ │ │ ├── highcharts-more.js │ │ │ ├── highcharts.js │ │ │ └── modules │ │ │ │ ├── exporting.js │ │ │ │ └── no-data-to-display.js │ │ │ ├── highlight │ │ │ ├── default.min.css │ │ │ └── highlight.min.js │ │ │ ├── homepage │ │ │ ├── css │ │ │ │ ├── animate-custom.css │ │ │ │ ├── features.css │ │ │ │ ├── help.css │ │ │ │ ├── icomoon.css │ │ │ │ ├── main.css │ │ │ │ └── styles.css │ │ │ └── fonts │ │ │ │ ├── glyphicons │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ │ ├── icomoon │ │ │ │ ├── icomoon-.eot │ │ │ │ ├── icomoon.eot │ │ │ │ ├── icomoon.svg │ │ │ │ ├── icomoon.ttf │ │ │ │ └── icomoon.woff │ │ │ │ └── onboard-logo │ │ │ │ ├── onboard-logo.eot │ │ │ │ ├── onboard-logo.svg │ │ │ │ ├── onboard-logo.ttf │ │ │ │ └── onboard-logo.woff │ │ │ ├── icheck │ │ │ ├── icheck.min.js │ │ │ └── skins │ │ │ │ ├── all.css │ │ │ │ ├── flat │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── flat.css │ │ │ │ ├── flat.png │ │ │ │ ├── flat@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ │ │ ├── futurico │ │ │ │ ├── futurico.css │ │ │ │ ├── futurico.png │ │ │ │ └── futurico@2x.png │ │ │ │ ├── line │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── line.css │ │ │ │ ├── line.png │ │ │ │ ├── line@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ └── yellow.css │ │ │ │ ├── minimal │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── minimal.css │ │ │ │ ├── minimal.png │ │ │ │ ├── minimal@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ │ │ ├── polaris │ │ │ │ ├── polaris.css │ │ │ │ ├── polaris.png │ │ │ │ └── polaris@2x.png │ │ │ │ └── square │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── aero.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue.css │ │ │ │ ├── blue.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green.css │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey.css │ │ │ │ ├── grey.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange.css │ │ │ │ ├── orange.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink.css │ │ │ │ ├── pink.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.css │ │ │ │ ├── purple.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── red.css │ │ │ │ ├── red.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── square.css │ │ │ │ ├── square.png │ │ │ │ ├── square@2x.png │ │ │ │ ├── yellow.css │ │ │ │ ├── yellow.png │ │ │ │ └── yellow@2x.png │ │ │ ├── jquery-ui │ │ │ ├── images │ │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ ├── index.html │ │ │ ├── jquery-ui.css │ │ │ ├── jquery-ui.js │ │ │ ├── jquery-ui.min.css │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery-ui.structure.css │ │ │ ├── jquery-ui.structure.min.css │ │ │ ├── jquery-ui.theme.css │ │ │ └── jquery-ui.theme.min.css │ │ │ ├── jquery │ │ │ ├── jquery-ias.min.js │ │ │ ├── jquery.easing.js │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ │ │ ├── less.js │ │ │ ├── .bower.json │ │ │ └── less-1.7.4.min.js │ │ │ ├── moment │ │ │ ├── locale │ │ │ │ └── zh-cn.js │ │ │ ├── locales.js │ │ │ ├── locales.min.js │ │ │ ├── moment-with-locales.js │ │ │ ├── moment-with-locales.min.js │ │ │ └── moment.min.js │ │ │ ├── pdfobj │ │ │ └── pdfobject.js │ │ │ ├── smoothscroll.js │ │ │ ├── summernote │ │ │ ├── summernote-bs2.css │ │ │ ├── summernote-bs3.css │ │ │ ├── summernote-zh-CN.js │ │ │ ├── summernote.css │ │ │ ├── summernote.js │ │ │ └── summernote.min.js │ │ │ ├── underscore │ │ │ └── underscore-min.js │ │ │ ├── xcharts │ │ │ ├── xcharts.css │ │ │ └── xcharts.js │ │ │ └── zeroclipboard │ │ │ ├── ZeroClipboard.Core.js │ │ │ ├── ZeroClipboard.Core.min.js │ │ │ ├── ZeroClipboard.Core.min.map │ │ │ ├── ZeroClipboard.js │ │ │ ├── ZeroClipboard.min.js │ │ │ ├── ZeroClipboard.min.map │ │ │ └── ZeroClipboard.swf │ │ └── templates │ │ ├── account │ │ ├── ForgetPassword.html │ │ ├── ResetPassword.html │ │ ├── ResetResult.html │ │ ├── Signin.html │ │ ├── Signup.html │ │ ├── SignupBindEmail.html │ │ ├── TrialSignup.html │ │ └── ss │ │ │ ├── studentEmailInput.html │ │ │ ├── teacherNotSignedUp.html │ │ │ └── teacherSignUp.html │ │ ├── company │ │ ├── Activities.html │ │ ├── Collection.html │ │ ├── Header.html │ │ ├── Index.html │ │ ├── Notifications.html │ │ ├── ProjectEdit.html │ │ ├── Projects.html │ │ ├── Retrospect.html │ │ ├── Search.html │ │ ├── SingleUser.html │ │ ├── Status.html │ │ ├── Users.html │ │ └── me │ │ │ ├── Me.html │ │ │ ├── MeActivities.html │ │ │ ├── MeAttachments.html │ │ │ ├── MeCompletedBugs.html │ │ │ ├── MeCompletedSteps.html │ │ │ ├── MeCompletedTodos.html │ │ │ ├── MeUncompletedBugs.html │ │ │ ├── MeUncompletedSteps.html │ │ │ ├── MeUncompletedTodos.html │ │ │ └── MeWorkTime.html │ │ ├── error │ │ ├── 403.html │ │ ├── 404.html │ │ ├── 500.html │ │ ├── InvitationTokenInvalid.html │ │ ├── ResetPasswordTokenExpires.html │ │ └── TokenExpires.html │ │ ├── fragments │ │ ├── AuthedCompanyHeader.html │ │ ├── AuthedHeader.html │ │ ├── CommonHTMLHead.html │ │ ├── Footer.html │ │ ├── HTMLHead.html │ │ └── Header.html │ │ ├── home │ │ ├── Features.html │ │ ├── HelpCenter.html │ │ └── Index.html │ │ ├── invitation │ │ ├── InvitationRegistration.html │ │ └── Invite.html │ │ ├── onboard │ │ ├── Header.html │ │ ├── Onboard.html │ │ └── account │ │ │ ├── Account.html │ │ │ ├── Password.html │ │ │ └── Profile.html │ │ ├── plugin │ │ ├── DrawerSample.html │ │ ├── TabSample.html │ │ └── plugin.md │ │ ├── project │ │ ├── Discussions.html │ │ ├── Project.html │ │ ├── bugs │ │ │ ├── Bugs.html │ │ │ ├── BugsFinished.html │ │ │ ├── BugsOpened.html │ │ │ ├── BugsStats.html │ │ │ ├── NewBug.html │ │ │ └── ViewBug.html │ │ ├── common │ │ │ ├── Boardables.html │ │ │ ├── CommentImageModal.html │ │ │ ├── NewCommentDirective.html │ │ │ ├── OnboardCommentDirective.html │ │ │ ├── Preview.html │ │ │ ├── Todos.html │ │ │ └── TodosMini.html │ │ ├── discussion │ │ │ ├── DiscussionDetail.html │ │ │ ├── Discussions.html │ │ │ └── NewDiscussion.html │ │ ├── iteration │ │ │ ├── ActiveIteration.html │ │ │ ├── ActiveIterationStatistics.html │ │ │ ├── ActiveIterationTodos.html │ │ │ ├── CompletedIteration.html │ │ │ ├── CompletedIterations.html │ │ │ ├── CompletingIteration.html │ │ │ ├── Copy of Iterations.html │ │ │ ├── CreatedIterations.html │ │ │ ├── IterationEdit.html │ │ │ ├── IterationTodoStats.html │ │ │ ├── Iterations.html │ │ │ └── LinkIteration.html │ │ ├── statistics │ │ │ ├── Statistics.html │ │ │ ├── StatisticsGroup.html │ │ │ ├── StatisticsTodo.html │ │ │ ├── UserMenu.html │ │ │ └── UserMenuWithAllUsers.html │ │ ├── story │ │ │ ├── StepDetail.html │ │ │ ├── Stories.html │ │ │ ├── StoryDetail.html │ │ │ └── StoryRenderer.html │ │ ├── todo │ │ │ ├── LinkTodo.html │ │ │ ├── NewTodo.html │ │ │ ├── TodoDetail.html │ │ │ ├── TodoDetailFileds.html │ │ │ ├── TodolistCopyModal.html │ │ │ ├── TodolistDetail.html │ │ │ ├── TodolistModal.html │ │ │ └── Todolists.html │ │ ├── upload │ │ │ ├── AttachmentDetail.html │ │ │ ├── AttachmentList.html │ │ │ ├── FileDropZone.html │ │ │ ├── TagAndAttachments.html │ │ │ ├── UploadDetail.html │ │ │ └── Uploads.html │ │ └── version │ │ │ └── Versions.html │ │ ├── tab │ │ ├── Activity.html │ │ ├── Bug.html │ │ ├── Comment.html │ │ ├── Duration.html │ │ ├── Story.html │ │ ├── TabSet.html │ │ └── Task.html │ │ └── trial │ │ ├── Apply.html │ │ └── ApplyResult.html └── pom.xml ├── generator ├── Readme.txt └── org.elevenframework.codegenerator-0.3.4.jar ├── kernel ├── com.onboard.domain.dto │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── dto │ │ ├── ActivityDTO.java │ │ ├── AttachmentDTO.java │ │ ├── BugDTO.java │ │ ├── CollectionDTO.java │ │ ├── CommentDTO.java │ │ ├── CompanyApplicationDTO.java │ │ ├── CompanyDTO.java │ │ ├── DTO.java │ │ ├── DepartmentDTO.java │ │ ├── DiscussionDTO.java │ │ ├── HelpTipDTO.java │ │ ├── IndexDocumentDTO.java │ │ ├── IterationDTO.java │ │ ├── ProjectDTO.java │ │ ├── SearchResultDTO.java │ │ ├── StepDTO.java │ │ ├── StoryDTO.java │ │ ├── TagDTO.java │ │ ├── TodoDTO.java │ │ ├── TodolistDTO.java │ │ ├── TopicDTO.java │ │ ├── UploadDTO.java │ │ └── UserDTO.java ├── com.onboard.domain.index.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── index │ │ │ │ └── impl │ │ │ │ ├── IndexAspectImpl.java │ │ │ │ ├── IndexServices.java │ │ │ │ ├── IndexableServicesImpl.java │ │ │ │ └── SearchServiceImpl.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ ├── service.index.osgi.xml │ │ │ └── service.index.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── index │ │ └── impl │ │ └── test │ │ ├── IndexAspectImplTest.java │ │ ├── IndexSampleHelper.java │ │ └── IndexServiceTest.java ├── com.onboard.domain.index │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── index │ │ ├── IndexAspect.java │ │ ├── SearchService.java │ │ ├── custom │ │ ├── IndexService.java │ │ ├── IndexableService.java │ │ └── IndexableServices.java │ │ └── model │ │ ├── IndexDocument.java │ │ ├── IndexDocumentBuilder.java │ │ ├── IndexDocumentImpl.java │ │ ├── Page.java │ │ ├── SearchQuery.java │ │ ├── SearchQueryBuilder.java │ │ └── SearchResult.java ├── com.onboard.domain.mapper.model │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── domain │ │ └── mapper │ │ └── model │ │ ├── ActivityExample.java │ │ ├── ActivityObject.java │ │ ├── AttachTodoExample.java │ │ ├── AttachTodoObject.java │ │ ├── AttachmentExample.java │ │ ├── AttachmentObject.java │ │ ├── BugExample.java │ │ ├── BugObject.java │ │ ├── CollectionExample.java │ │ ├── CollectionObject.java │ │ ├── CommentExample.java │ │ ├── CommentObject.java │ │ ├── CompanyApplicationExample.java │ │ ├── CompanyApplicationObject.java │ │ ├── CompanyExample.java │ │ ├── CompanyObject.java │ │ ├── CompanyPrivilegeExample.java │ │ ├── CompanyPrivilegeObject.java │ │ ├── DepartmentExample.java │ │ ├── DepartmentObject.java │ │ ├── DiscussionExample.java │ │ ├── DiscussionObject.java │ │ ├── HelpTipExample.java │ │ ├── HelpTipObject.java │ │ ├── InvitationExample.java │ │ ├── InvitationObject.java │ │ ├── InvitationProjectsExample.java │ │ ├── InvitationProjectsObject.java │ │ ├── IterationAttachExample.java │ │ ├── IterationAttachObject.java │ │ ├── IterationExample.java │ │ ├── IterationObject.java │ │ ├── KeywordExample.java │ │ ├── KeywordObject.java │ │ ├── NotificationExample.java │ │ ├── NotificationObject.java │ │ ├── ProjectExample.java │ │ ├── ProjectObject.java │ │ ├── ProjectPrivilegeExample.java │ │ ├── ProjectPrivilegeObject.java │ │ ├── ProjectTodoIdExample.java │ │ ├── ProjectTodoIdObject.java │ │ ├── ProjectTodoStatusExample.java │ │ ├── ProjectTodoStatusObject.java │ │ ├── StepExample.java │ │ ├── StepObject.java │ │ ├── StoryExample.java │ │ ├── StoryObject.java │ │ ├── SubscriberExample.java │ │ ├── SubscriberObject.java │ │ ├── TagAttachExample.java │ │ ├── TagAttachObject.java │ │ ├── TagExample.java │ │ ├── TagObject.java │ │ ├── TodoExample.java │ │ ├── TodoObject.java │ │ ├── TodolistExample.java │ │ ├── TodolistObject.java │ │ ├── TopicExample.java │ │ ├── TopicObject.java │ │ ├── TrashExample.java │ │ ├── TrashObject.java │ │ ├── UploadExample.java │ │ ├── UploadObject.java │ │ ├── UserCompanyExample.java │ │ ├── UserCompanyObject.java │ │ ├── UserExample.java │ │ ├── UserObject.java │ │ ├── UserProjectExample.java │ │ ├── UserProjectObject.java │ │ └── common │ │ ├── BaseCriteria.java │ │ ├── BaseExample.java │ │ ├── BaseItem.java │ │ └── Criterion.java ├── com.onboard.domain.mapper │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── domain │ │ │ └── mapper │ │ │ ├── ActivityMapper.java │ │ │ ├── AttachTodoMapper.java │ │ │ ├── AttachmentMapper.java │ │ │ ├── BugMapper.java │ │ │ ├── CollectionMapper.java │ │ │ ├── CommentMapper.java │ │ │ ├── CompanyApplicationMapper.java │ │ │ ├── CompanyMapper.java │ │ │ ├── CompanyPrivilegeMapper.java │ │ │ ├── DepartmentMapper.java │ │ │ ├── DiscussionMapper.java │ │ │ ├── HelpTipMapper.java │ │ │ ├── InvitationMapper.java │ │ │ ├── InvitationProjectsMapper.java │ │ │ ├── IterationAttachMapper.java │ │ │ ├── IterationMapper.java │ │ │ ├── KeywordMapper.java │ │ │ ├── NotificationMapper.java │ │ │ ├── ProjectMapper.java │ │ │ ├── ProjectPrivilegeMapper.java │ │ │ ├── ProjectTodoIdMapper.java │ │ │ ├── ProjectTodoStatusMapper.java │ │ │ ├── StepMapper.java │ │ │ ├── StoryMapper.java │ │ │ ├── SubscriberMapper.java │ │ │ ├── TagAttachMapper.java │ │ │ ├── TagMapper.java │ │ │ ├── TodoMapper.java │ │ │ ├── TodolistMapper.java │ │ │ ├── TopicMapper.java │ │ │ ├── TrashMapper.java │ │ │ ├── UploadMapper.java │ │ │ ├── UserCompanyMapper.java │ │ │ ├── UserMapper.java │ │ │ ├── UserProjectMapper.java │ │ │ └── base │ │ │ └── BaseMapper.java │ │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ ├── domain.mapper.aop.xml │ │ │ ├── domain.mapper.osgi.xml │ │ │ └── domain.mapper.xml │ │ └── com │ │ └── onboard │ │ └── domain │ │ └── mapper │ │ ├── ActivityMapper.xml │ │ ├── AttachTodoMapper.xml │ │ ├── AttachmentMapper.xml │ │ ├── BugMapper.xml │ │ ├── CollectionMapper.xml │ │ ├── CommentMapper.xml │ │ ├── CompanyApplicationMapper.xml │ │ ├── CompanyMapper.xml │ │ ├── CompanyPrivilegeMapper.xml │ │ ├── DepartmentMapper.xml │ │ ├── DiscussionMapper.xml │ │ ├── DocumentHistoryMapper.xml │ │ ├── DocumentMapper.xml │ │ ├── HelpTipMapper.xml │ │ ├── InvitationMapper.xml │ │ ├── InvitationProjectsMapper.xml │ │ ├── IterationAttachMapper.xml │ │ ├── IterationMapper.xml │ │ ├── KeywordMapper.xml │ │ ├── NotificationMapper.xml │ │ ├── ProjectMapper.xml │ │ ├── ProjectPrivilegeMapper.xml │ │ ├── ProjectTodoIdMapper.xml │ │ ├── ProjectTodoStatusMapper.xml │ │ ├── StepMapper.xml │ │ ├── StoryMapper.xml │ │ ├── SubscriberMapper.xml │ │ ├── TagAttachMapper.xml │ │ ├── TagMapper.xml │ │ ├── TodoMapper.xml │ │ ├── TodolistMapper.xml │ │ ├── TopicMapper.xml │ │ ├── TrashMapper.xml │ │ ├── UploadMapper.xml │ │ ├── UserCompanyMapper.xml │ │ ├── UserMapper.xml │ │ └── UserProjectMapper.xml ├── com.onboard.domain.model │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── domain │ │ └── model │ │ ├── Activity.java │ │ ├── AttachTodo.java │ │ ├── Attachment.java │ │ ├── Bug.java │ │ ├── Collection.java │ │ ├── Comment.java │ │ ├── Company.java │ │ ├── CompanyApplication.java │ │ ├── CompanyLogType.java │ │ ├── CompanyPrivilege.java │ │ ├── Department.java │ │ ├── Discussion.java │ │ ├── HelpTip.java │ │ ├── Invitation.java │ │ ├── InvitationProjects.java │ │ ├── Iteration.java │ │ ├── IterationAttach.java │ │ ├── IterationItemStatus.java │ │ ├── Keyword.java │ │ ├── Notification.java │ │ ├── Project.java │ │ ├── ProjectPrivilege.java │ │ ├── ProjectTodoId.java │ │ ├── ProjectTodoStatus.java │ │ ├── Step.java │ │ ├── Story.java │ │ ├── Subscriber.java │ │ ├── Tag.java │ │ ├── TagAndTagAttach.java │ │ ├── TagAttach.java │ │ ├── Todo.java │ │ ├── TodoType.java │ │ ├── Todolist.java │ │ ├── Topic.java │ │ ├── Trash.java │ │ ├── Upload.java │ │ ├── User.java │ │ ├── UserCompany.java │ │ ├── UserProject.java │ │ ├── type │ │ ├── Attachable.java │ │ ├── BaseCompanyItem.java │ │ ├── BaseOperateItem.java │ │ ├── BaseProjectItem.java │ │ ├── Boardable.java │ │ ├── Commentable.java │ │ ├── IdentifiableOperator.java │ │ ├── Indexable.java │ │ ├── Iterable.java │ │ ├── ProjectItem.java │ │ ├── Recommendable.java │ │ ├── Subscribable.java │ │ ├── Taggable.java │ │ └── Typeable.java │ │ └── utils │ │ └── HtmlTextParser.java ├── com.onboard.domain.transform │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── domain │ │ └── transform │ │ ├── ActivityTransForm.java │ │ ├── AttachmentTransform.java │ │ ├── BugTransForm.java │ │ ├── CollectionTransform.java │ │ ├── CommentTransform.java │ │ ├── CompanyApplicationTransform.java │ │ ├── CompanyTransform.java │ │ ├── DepartmentTransform.java │ │ ├── DiscussionTransform.java │ │ ├── HelpTransForm.java │ │ ├── IndexDocumentTransForm.java │ │ ├── IterationTransform.java │ │ ├── ProjectTransform.java │ │ ├── SearchResultTransform.java │ │ ├── StepTransform.java │ │ ├── StoryTransform.java │ │ ├── TagTransform.java │ │ ├── TodoTransform.java │ │ ├── TodolistTransform.java │ │ ├── TopicTransform.java │ │ ├── UploadTransForm.java │ │ └── UserTransform.java ├── com.onboard.osgi.dependencies │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── elevenframework │ │ │ └── web │ │ │ ├── GlobalService.java │ │ │ ├── exception │ │ │ ├── BadRequestException.java │ │ │ ├── InternalServerErrorException.java │ │ │ └── ResourceNotFoundException.java │ │ │ ├── handler │ │ │ └── IntercepterAnnotationHandlerMapping.java │ │ │ ├── interceptor │ │ │ └── Interceptors.java │ │ │ ├── internal │ │ │ ├── GlobalServiceImpl.java │ │ │ └── ThreadVariables.java │ │ │ └── listener │ │ │ └── RequestContextListener.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ ├── spring-web.xml │ │ └── web.xml ├── com.onboard.service.account.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── account │ │ │ │ ├── function │ │ │ │ └── InvitationProjectFilter.java │ │ │ │ ├── impl │ │ │ │ ├── AccountConfigure.java │ │ │ │ ├── AccountServiceImpl.java │ │ │ │ ├── CompanyServiceImpl.java │ │ │ │ ├── DepartmentServiceImpl.java │ │ │ │ ├── InvitationManager.java │ │ │ │ └── UserServiceImpl.java │ │ │ │ ├── redis │ │ │ │ ├── KeyUtils.java │ │ │ │ ├── Repository.java │ │ │ │ └── TokenType.java │ │ │ │ └── utils │ │ │ │ └── PasswordUtils.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ ├── service.account.osgi.xml │ │ │ │ └── service.account.xml │ │ │ └── templates │ │ │ ├── Confirmation.html │ │ │ ├── ForgetPassword.html │ │ │ └── Invitation.html │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── account │ │ ├── impl │ │ └── test │ │ │ ├── AbstractDepartmentServiceTest.java │ │ │ ├── AbstractInvitationManager.java │ │ │ ├── AbstractUserServiceTest.java │ │ │ ├── CompanyServiceImplTest.java │ │ │ ├── DepartmentSerivceImplTest.java │ │ │ ├── InvitationManagerTest.java │ │ │ └── UserServiceImplTest.java │ │ ├── redis │ │ └── KeyUtilsTest.java │ │ └── utils │ │ └── PasswordUtilsTest.java ├── com.onboard.service.account │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── account │ │ ├── AccountService.java │ │ ├── CompanyService.java │ │ ├── DepartmentService.java │ │ └── UserService.java ├── com.onboard.service.activity.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── activity │ │ │ │ └── impl │ │ │ │ ├── ActivityRecorderImpl.java │ │ │ │ ├── ActivityServiceImpl.java │ │ │ │ └── util │ │ │ │ └── ActivityHookHelper.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ ├── service.activity.osgi.xml │ │ │ └── service.activity.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── activity │ │ └── impl │ │ ├── test │ │ ├── ActivityRecorderImplTest.java │ │ └── ActivityServiceImplTest.java │ │ └── util │ │ └── test │ │ └── ActivityHookHelperTest.java ├── com.onboard.service.activity │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── activity │ │ ├── ActivityActionType.java │ │ ├── ActivityGenerator.java │ │ ├── ActivityHook.java │ │ ├── ActivityRecorder.java │ │ ├── ActivityService.java │ │ ├── SimpleActivityHook.java │ │ ├── SynchronizedActivityHook.java │ │ ├── exception │ │ └── ActivityRecorderException.java │ │ └── util │ │ └── ActivityHelper.java ├── com.onboard.service.collaboration.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── collaboration │ │ │ │ ├── activity │ │ │ │ ├── ActivityRecorderHelper.java │ │ │ │ ├── BugActivityGenerator.java │ │ │ │ ├── CommentActivityGenerator.java │ │ │ │ ├── DiscussionActivityGenerator.java │ │ │ │ ├── IterationActivityGenerator.java │ │ │ │ ├── ProjectActivityGenerator.java │ │ │ │ ├── StepActivityGenerator.java │ │ │ │ ├── StoryActivityGenerator.java │ │ │ │ ├── TodoActivityGenerator.java │ │ │ │ └── TodolistActivityGenerator.java │ │ │ │ ├── attach │ │ │ │ ├── ActivityAttachServiceImpl.java │ │ │ │ ├── CommentAttachServiceImpl.java │ │ │ │ └── TodoActivityAttachServiceImpl.java │ │ │ │ ├── impl │ │ │ │ ├── AttachmentServiceImpl.java │ │ │ │ ├── BugServiceImpl.java │ │ │ │ ├── CollectionServiceImpl.java │ │ │ │ ├── CommentServiceImpl.java │ │ │ │ ├── CompanyApplicationServiceImpl.java │ │ │ │ ├── DiscussionServiceImpl.java │ │ │ │ ├── IdInProjectServiceImpl.java │ │ │ │ ├── IterationServiceImpl.java │ │ │ │ ├── KeywordServiceImpl.java │ │ │ │ ├── MoveHook.java │ │ │ │ ├── ProjectMemberService.java │ │ │ │ ├── ProjectServiceImpl.java │ │ │ │ ├── StepServiceImpl.java │ │ │ │ ├── StoryServiceImpl.java │ │ │ │ ├── TagServiceImpl.java │ │ │ │ ├── TodoServiceImpl.java │ │ │ │ ├── TodolistServiceImpl.java │ │ │ │ ├── TopicServiceImpl.java │ │ │ │ └── TrashServiceImpl.java │ │ │ │ ├── index │ │ │ │ ├── CommentIndexableService.java │ │ │ │ ├── DiscussionIndexableService.java │ │ │ │ ├── TodoIndexableService.java │ │ │ │ └── TodolistIndexableService.java │ │ │ │ ├── notification │ │ │ │ ├── email │ │ │ │ │ ├── CommentEmailNotification.java │ │ │ │ │ ├── CompletedTodoEmailNotification.java │ │ │ │ │ ├── DiscussionEmailNotification.java │ │ │ │ │ ├── EmailNotificationHelper.java │ │ │ │ │ └── TodoEmailNotification.java │ │ │ │ └── rule │ │ │ │ │ ├── CommentNotificationRule.java │ │ │ │ │ ├── CompletedTodoNotificationRule.java │ │ │ │ │ ├── DiscussionNotificationRule.java │ │ │ │ │ └── TodoNotificationRule.java │ │ │ │ ├── scheduler │ │ │ │ ├── ClearTrashScheduler.java │ │ │ │ └── DueTodosScheduler.java │ │ │ │ ├── topic │ │ │ │ └── TopicWatcher.java │ │ │ │ ├── trash │ │ │ │ └── TrashWatcher.java │ │ │ │ └── utils │ │ │ │ ├── Helper.java │ │ │ │ └── SpringApplicationContext.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ ├── service.collaboration.aop.xml │ │ │ │ ├── service.collaboration.osgi.xml │ │ │ │ └── service.collaboration.xml │ │ │ └── templates │ │ │ ├── attachment-list.vm │ │ │ ├── comment-created.vm │ │ │ ├── discussion-created.vm │ │ │ ├── email-todosdue.vm │ │ │ ├── todo-completed.vm │ │ │ ├── todo-created.vm │ │ │ ├── todo-due.vm │ │ │ └── todolist-created.vm │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── collaboration │ │ │ ├── activity │ │ │ ├── AbstractDiscussionActivityGenerator.java │ │ │ ├── AbstractProjectActivityGenerator.java │ │ │ ├── AbstractTodolistActivityGenerator.java │ │ │ ├── ActivityRecorderHelperTest.java │ │ │ ├── DiscussionActivityGeneratorTest.java │ │ │ ├── IterationActivityGeneratorTest.java │ │ │ ├── ProjectActivityGeneratorTest.java │ │ │ ├── TodoActivityGeneratorTest.java │ │ │ └── TodolistActivityGeneratorTest.java │ │ │ └── impl │ │ │ ├── abstractfiles │ │ │ ├── AbstractBugServiceImplTest.java │ │ │ ├── AbstractCollectionTest.java │ │ │ ├── AbstractCommentServiceImplTest.java │ │ │ ├── AbstractCompanyApplicationTest.java │ │ │ └── AbstractProjectTest.java │ │ │ └── test │ │ │ ├── AbstractIdInProjectServiceTest.java │ │ │ ├── AbstractTrashServiceTest.java │ │ │ ├── AttachmentServiceImplTest.java │ │ │ ├── BugActivityGeneratorTest.java │ │ │ ├── BugServiceImplTest.java │ │ │ ├── CollectionServiceImplTest.java │ │ │ ├── CommentActivityGeneratorTest.java │ │ │ ├── CompanyApplicationServiceImplTest.java │ │ │ ├── ConmmentServiceTest.java │ │ │ ├── DiscussionServiceImplTest.java │ │ │ ├── ExampleUtilDemo.java │ │ │ ├── IdInProjectServiceImplTest.java │ │ │ ├── IterationServiceImplTest.java │ │ │ ├── KeywordServiceImplTest.java │ │ │ ├── ProjectMemberServiceImplTest.java │ │ │ ├── ProjectServiceImplTest.java │ │ │ ├── StepActivityGeneratorTest.java │ │ │ ├── StepServiceImplTest.java │ │ │ ├── StoryActivityGeneratorTest.java │ │ │ ├── StoryServiceImplTest.java │ │ │ ├── TagServiceImplTest.java │ │ │ ├── TodoServiceImplTest.java │ │ │ ├── TodolistServiceImplTest.java │ │ │ ├── TopicServiceImplTest.java │ │ │ └── TrashServiceImplTest.java │ │ └── resources │ │ └── META-INF │ │ ├── collaboration.persistence.test.xml │ │ └── collaboration.test.xml ├── com.onboard.service.collaboration │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── collaboration │ │ ├── AttachmentService.java │ │ ├── BugService.java │ │ ├── CollectionService.java │ │ ├── CommentService.java │ │ ├── CompanyApplicationService.java │ │ ├── DiscussionService.java │ │ ├── IdInProjectService.java │ │ ├── IterableService.java │ │ ├── IterationService.java │ │ ├── KeywordService.java │ │ ├── ProjectItemService.java │ │ ├── ProjectService.java │ │ ├── StepService.java │ │ ├── StoryService.java │ │ ├── TagService.java │ │ ├── TodoService.java │ │ ├── TodolistService.java │ │ ├── TopicService.java │ │ └── TrashService.java ├── com.onboard.service.common.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ ├── common │ │ │ │ ├── attach │ │ │ │ │ └── impl │ │ │ │ │ │ └── IdentifiableAttachManagerImpl.java │ │ │ │ ├── cache │ │ │ │ │ └── impl │ │ │ │ │ │ ├── OnboardCacheManagerImpl.java │ │ │ │ │ │ ├── OsgiJdkSerializationRedisSerializer.java │ │ │ │ │ │ └── RedisCacheDecorator.java │ │ │ │ ├── identifiable │ │ │ │ │ └── impl │ │ │ │ │ │ └── IdentifiableManagerImpl.java │ │ │ │ └── subscrible │ │ │ │ │ └── impl │ │ │ │ │ └── SubscriberServiceImpl.java │ │ │ │ ├── email │ │ │ │ └── impl │ │ │ │ │ ├── EmailServiceImpl.java │ │ │ │ │ ├── EmptyEmailServiceImpl.java │ │ │ │ │ └── OSGiTemplateEngine.java │ │ │ │ └── file │ │ │ │ ├── impl │ │ │ │ ├── LocalFileServiceImpl.java │ │ │ │ └── UpyunImageServiceImpl.java │ │ │ │ └── utils │ │ │ │ └── UpYun.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ ├── service.common.osgi.xml │ │ │ └── service.common.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ ├── common │ │ │ └── test │ │ │ │ ├── IdentifiableAttachManagerImplTest.java │ │ │ │ ├── IdentifiableManagerImplTest.java │ │ │ │ └── SubscriberServiceImplTest.java │ │ │ └── file │ │ │ └── impl │ │ │ └── test │ │ │ ├── FileServiceTest.java │ │ │ └── ImageServiceTest.java │ │ └── resources │ │ └── test.jpg ├── com.onboard.service.common │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ ├── service │ │ ├── base │ │ │ ├── AbstractBaseService.java │ │ │ └── BaseService.java │ │ ├── common │ │ │ ├── attach │ │ │ │ ├── AbstractAttachService.java │ │ │ │ ├── IdentifiableAttachManager.java │ │ │ │ └── IdentifiableAttachService.java │ │ │ ├── identifiable │ │ │ │ └── IdentifiableManager.java │ │ │ └── subscrible │ │ │ │ └── SubscriberService.java │ │ ├── email │ │ │ ├── EmailService.java │ │ │ ├── InternalEmailService.java │ │ │ ├── TemplateEngineService.java │ │ │ └── exception │ │ │ │ ├── AddressInvalidException.java │ │ │ │ └── MessageSendingException.java │ │ └── file │ │ │ ├── FileService.java │ │ │ ├── ImageService.java │ │ │ └── exception │ │ │ └── FileUploadException.java │ │ └── utils │ │ └── DataCipher.java ├── com.onboard.service.help.impl │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── help │ │ │ └── impl │ │ │ └── HelpTipServiceImpl.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ ├── service.helpcenter.osgi.xml │ │ └── service.helpcenter.xml ├── com.onboard.service.help │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── help │ │ └── HelpTipService.java ├── com.onboard.service.notification.impl │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── notification │ │ │ └── impl │ │ │ ├── AllNotificationRule.java │ │ │ ├── MessageNotification.java │ │ │ ├── NotificationManager.java │ │ │ └── NotificationServiceImpl.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ ├── service.notification.osgi.xml │ │ └── service.notification.xml ├── com.onboard.service.notification │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── notification │ │ │ ├── NotificationMethod.java │ │ │ ├── NotificationRule.java │ │ │ ├── NotificationService.java │ │ │ ├── SimpleNotificationMethod.java │ │ │ ├── SimpleNotificationRule.java │ │ │ └── email │ │ │ ├── AbstractEmailNotification.java │ │ │ └── EmailNotification.java │ │ └── resources │ │ └── com │ │ └── onboard │ │ └── service │ │ └── collaboration │ │ └── email │ │ └── vm │ │ ├── attachment-list.vm │ │ ├── comment-created.vm │ │ ├── discussion-created.vm │ │ ├── email-main.vm │ │ ├── email-todosdue.vm │ │ ├── event-changed.vm │ │ ├── event-created.vm │ │ ├── event-start.vm │ │ ├── todo-completed.vm │ │ ├── todo-created.vm │ │ ├── todo-due.vm │ │ ├── todolist-created.vm │ │ ├── upload-created.vm │ │ └── upload.vm ├── com.onboard.service.sampleProject.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── sampleProject │ │ │ │ └── impl │ │ │ │ └── SampleProjectServiceImpl.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ ├── service.sampleProject.osgi.xml │ │ │ │ └── service.sampleProject.xml │ │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── service │ │ │ └── sampleProject │ │ │ └── impl │ │ │ ├── file │ │ │ └── logo.jpg │ │ │ └── sample-project.json │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── sampleProject │ │ └── impl │ │ └── test │ │ ├── AbstractSampleProjectTest.java │ │ └── SampleProjectServiceImplTest.java ├── com.onboard.service.sampleProject │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── sampleProject │ │ ├── SampleProjectService.java │ │ └── model │ │ ├── SampleFile.java │ │ └── SampleProject.java ├── com.onboard.service.security.impl │ ├── osgi.bnd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── security │ │ │ │ ├── impl │ │ │ │ ├── CompanyPrivilegeServiceImpl.java │ │ │ │ ├── ProjectPrivilegeServiceImpl.java │ │ │ │ └── RoleServiceImpl.java │ │ │ │ └── interceptors │ │ │ │ └── impl │ │ │ │ ├── AttachmentCreatorRequiredImpl.java │ │ │ │ ├── CommentCreatorRequiredImpl.java │ │ │ │ ├── CompanyAdminInSpecificProjectRequiredImpl.java │ │ │ │ ├── CompanyAdminRequiredImpl.java │ │ │ │ ├── CompanyCheckingImpl.java │ │ │ │ ├── CompanyMemberRequiredImpl.java │ │ │ │ ├── CompanyOwnerRequiredImpl.java │ │ │ │ ├── DiscussionCreatorRequiredImpl.java │ │ │ │ ├── EventCreatorRequiredImpl.java │ │ │ │ ├── InvitationPermissionRequiredImpl.java │ │ │ │ ├── LoginRequiredImpl.java │ │ │ │ ├── ManagerRequiredImpl.java │ │ │ │ ├── ProjectAdminRequiredImpl.java │ │ │ │ ├── ProjectCheckingImpl.java │ │ │ │ ├── ProjectCreationPrivilegeRequiredImpl.java │ │ │ │ ├── ProjectMemberRequiredImpl.java │ │ │ │ ├── ProjectNotArchivedRequiredImpl.java │ │ │ │ ├── UploadCreatorRequiredImpl.java │ │ │ │ └── UserCheckingImpl.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ ├── service.security.osgi.xml │ │ │ └── service.security.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── security │ │ └── impl │ │ └── test │ │ ├── CompanyPrivilegeServiceImplTest.java │ │ ├── ProjectPrivilegeServiceImplTest.java │ │ └── RoleServiceImplTest.java ├── com.onboard.service.security │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── security │ │ ├── CompanyPrivilegeService.java │ │ ├── ProjectPrivilegeService.java │ │ ├── RoleService.java │ │ ├── auth │ │ ├── CustomizedPasswordEncoder.java │ │ ├── SaltedUser.java │ │ └── UserAuthenticationService.java │ │ ├── exception │ │ └── NoPermissionException.java │ │ ├── interceptors │ │ ├── AttachmentCreatorRequired.java │ │ ├── BasicIdentifiableInterceptor.java │ │ ├── CommentCreatorRequired.java │ │ ├── CompanyAdminInSpecificProjectRequired.java │ │ ├── CompanyAdminRequired.java │ │ ├── CompanyChecking.java │ │ ├── CompanyMemberRequired.java │ │ ├── CompanyOwnerRequired.java │ │ ├── DiscussionCreatorRequired.java │ │ ├── EventCreatorRequired.java │ │ ├── InvitationPermissionRequired.java │ │ ├── LoginRequired.java │ │ ├── ManagerRequired.java │ │ ├── ProjectAdminRequired.java │ │ ├── ProjectChecking.java │ │ ├── ProjectCreationPrivilegeRequired.java │ │ ├── ProjectMemberRequired.java │ │ ├── ProjectNotArchivedRequired.java │ │ ├── UploadCreatorRequired.java │ │ └── UserChecking.java │ │ └── utils │ │ └── SecurityUtils.java ├── com.onboard.service.upload.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── upload │ │ │ │ ├── activity │ │ │ │ └── UploadActivityGenerator.java │ │ │ │ ├── impl │ │ │ │ └── UploadServiceImpl.java │ │ │ │ └── notification │ │ │ │ ├── CreateUploadEmailNotification.java │ │ │ │ └── CreateUploadNotificationRule.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ ├── service.upload.aop.xml │ │ │ │ ├── service.upload.osgi.xml │ │ │ │ └── service.upload.xml │ │ │ └── templates │ │ │ ├── attachment-list.vm │ │ │ └── upload-created.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── upload │ │ ├── activity │ │ └── test │ │ │ └── UploadActivityGeneratorTest.java │ │ ├── impl │ │ └── test │ │ │ └── UploadServiceImplTest.java │ │ └── notification │ │ └── test │ │ ├── CreateUploadEmailNotificationTest.java │ │ └── CreateUploadNotificationRuleTest.java ├── com.onboard.service.upload │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── upload │ │ └── UploadService.java ├── com.onboard.service.web.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onboard │ │ │ │ └── service │ │ │ │ └── web │ │ │ │ └── impl │ │ │ │ └── SessionServiceImpl.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ ├── service.web.osgi.xml │ │ │ └── service.web.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── web │ │ └── impl │ │ └── test │ │ └── SessionServiceImplTest.java ├── com.onboard.service.web │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── web │ │ ├── SessionService.java │ │ └── WebUtils.java ├── com.onboard.service.websocket.impl │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── onboard │ │ │ └── service │ │ │ └── websocket │ │ │ └── impl │ │ │ ├── NotificationPuhser.java │ │ │ ├── RedisPublisher.java │ │ │ ├── UpdateHTMLPuhser.java │ │ │ └── WebSocketServiceImpl.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ ├── websocket-osgi.xml │ │ └── websocket.xml ├── com.onboard.service.websocket │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── onboard │ │ └── service │ │ └── websocket │ │ └── WebSocketService.java └── com.onboard.web.api │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── onboard │ │ └── web │ │ ├── api │ │ ├── MigrationController.java │ │ ├── WebConfiguration.java │ │ ├── account │ │ │ ├── AccountApiController.java │ │ │ ├── SigninController.java │ │ │ ├── SignupController.java │ │ │ ├── TrialSignupController.java │ │ │ └── form │ │ │ │ ├── ForgetPasswordForm.java │ │ │ │ ├── RegistrationForm.java │ │ │ │ ├── ResetPasswordForm.java │ │ │ │ ├── SigninForm.java │ │ │ │ ├── ThirdPartRegistrationForm.java │ │ │ │ └── UserUpdateForm.java │ │ ├── activity │ │ │ └── ActivityApiController.java │ │ ├── attachment │ │ │ └── AttachmentApiController.java │ │ ├── bug │ │ │ └── BugApiController.java │ │ ├── collection │ │ │ └── CollectionController.java │ │ ├── comment │ │ │ └── CommentAPIController.java │ │ ├── company │ │ │ ├── CompanyApiController.java │ │ │ └── CompanyGroupAndMemberController.java │ │ ├── constraints │ │ │ ├── EmailExists.java │ │ │ ├── Password.java │ │ │ ├── Username.java │ │ │ └── UsernameExists.java │ │ ├── departmnet │ │ │ └── DepartmentController.java │ │ ├── discussion │ │ │ └── DiscussionAPIController.java │ │ ├── exception │ │ │ ├── BadRequestException.java │ │ │ ├── HttpStatusHandlerExceptionResolver.java │ │ │ ├── InternalException.java │ │ │ ├── InvitationTokenExpiredException.java │ │ │ ├── InvitationTokenInvalidException.java │ │ │ ├── NoLoginException.java │ │ │ ├── RegisterTokenInvalidException.java │ │ │ ├── ResetPasswordTokenInvalidException.java │ │ │ └── ResourceNotFoundException.java │ │ ├── form │ │ │ ├── AttachTodoForm.java │ │ │ ├── CollectionForm.java │ │ │ ├── CommentForm.java │ │ │ ├── CompanyForm.java │ │ │ ├── DiscussionForm.java │ │ │ ├── HelpTipForm.java │ │ │ ├── InvitationForm.java │ │ │ ├── InvitationRegistrationForm.java │ │ │ ├── ProjectForm.java │ │ │ ├── RegistrationForm.java │ │ │ ├── StoryForm.java │ │ │ ├── TodoForm.java │ │ │ ├── TodolistForm.java │ │ │ ├── UpdateAttachTodoForm.java │ │ │ ├── UpdateHelpTipForm.java │ │ │ ├── UpdateProjectForm.java │ │ │ └── UploadForm.java │ │ ├── help │ │ │ └── HelpCenterApiController.java │ │ ├── invitation │ │ │ ├── InvitationOperateController.java │ │ │ ├── InvitationRegistrationOperateController.java │ │ │ └── NewInvitationController.java │ │ ├── iteration │ │ │ ├── IterationApiController.java │ │ │ └── IterationAttachApiController.java │ │ ├── notification │ │ │ └── NotificationApiController.java │ │ ├── project │ │ │ ├── ProjectAdminManageController.java │ │ │ ├── ProjectApiController.java │ │ │ ├── ProjectCreateController.java │ │ │ ├── ProjectEditController.java │ │ │ ├── ProjectItemApiController.java │ │ │ ├── ProjectTodoStatusApiController.java │ │ │ └── ProjectUserController.java │ │ ├── recommend │ │ │ └── RecommendController.java │ │ ├── search │ │ │ └── SearchApiController.java │ │ ├── stats │ │ │ └── StatsApiController.java │ │ ├── story │ │ │ ├── StepApiController.java │ │ │ └── StoryApiController.java │ │ ├── tag │ │ │ └── TagApiController.java │ │ ├── todo │ │ │ ├── TodoApiController.java │ │ │ └── TodolistApiController.java │ │ ├── topic │ │ │ └── TopicAPIController.java │ │ ├── trash │ │ │ └── TrashApiController.java │ │ ├── upload │ │ │ └── UploadApiController.java │ │ ├── user │ │ │ ├── CurrentUserAPIController.java │ │ │ ├── UserAPIController.java │ │ │ ├── UserDeleteController.java │ │ │ └── UserPrivilegeController.java │ │ ├── utils │ │ │ ├── ActivityHelper.java │ │ │ ├── AddDepartmentInfoHelper.java │ │ │ ├── AvatarUtils.java │ │ │ └── WebConfiguration.java │ │ └── validator │ │ │ ├── EmailExistsValidator.java │ │ │ ├── PasswordValidator.java │ │ │ ├── UsernameExistsValidator.java │ │ │ └── UsernameValidator.java │ │ └── exception │ │ └── handler │ │ └── ExceptionHandler.java │ └── resources │ └── WEB-INF │ ├── applicationContext.xml │ ├── applicationJsonMapper.xml │ ├── applicationOSGi.xml │ ├── applicationSecurity.xml │ ├── dispatcher-servlet.xml │ ├── index.jsp │ └── web.xml ├── onboard.plan ├── onboard.properties.sample ├── pom.xml └── test └── com.onboard.test.utils ├── osgi.bnd ├── pom.xml └── src └── main └── java └── com └── onboard └── test ├── exampleutils ├── AbstractMatcher.java ├── CriterionVerifier.java ├── ExampleMatcher.java └── ObjectMatcher.java ├── model ├── BaseProjectItemImpl.java └── IterableImpl.java ├── moduleutils ├── BaseProjectItemBuilder.java └── ModuleHelper.java └── service └── AbstractProjectItemServiceTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | .springBeans 2 | .project 3 | .settings 4 | .classpath 5 | target 6 | MANIFEST.MF 7 | TEST.MF 8 | bin 9 | velocity.log 10 | npm-debug.log 11 | generatorConfig.xml 12 | .idea 13 | *.iml 14 | out 15 | deploy.sh 16 | release.xml 17 | output 18 | .checkstyle 19 | mybatis-generator 20 | .jshintrc 21 | kernel/com.onboard.web/.externalToolBuilders/ 22 | .DS_Store 23 | *.swp 24 | 25 | solr/app/conf/db-data-config.xml 26 | solr/app/data 27 | 28 | *.properties 29 | 30 | node_modules 31 | onboard.css 32 | application-*.css 33 | application-*.js 34 | OnboardWeb/src/main/resources/templates/fragments/build 35 | 36 | generator/*.xml 37 | -------------------------------------------------------------------------------- /database/drivers/mysql-connector-java-5.1.25-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/database/drivers/mysql-connector-java-5.1.25-bin.jar -------------------------------------------------------------------------------- /database/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | me.ruici 5 | mybatis-migration 6 | 1.0 7 | mybatis-migration 8 | mybatis-migration 9 | jar 10 | 11 | 12 | 13 | 14 | org.mybatis.maven 15 | maven-migration-plugin 16 | 1.0.0 17 | 18 | ${basedir} 19 | 20 | 21 | 22 | mysql 23 | mysql-connector-java 24 | 5.1.6 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/Onboard插件编程指南.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/doc/Onboard插件编程指南.docx -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/constraints/EmailExists.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.constraints; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | import javax.validation.Constraint; 10 | import javax.validation.Payload; 11 | 12 | import com.onboard.frontend.validator.EmailExistsValidator; 13 | 14 | @Target({ ElementType.FIELD }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | @Constraint(validatedBy = EmailExistsValidator.class) 18 | public @interface EmailExists { 19 | 20 | boolean exist() default false; 21 | 22 | String message() default "Email already exists"; 23 | 24 | Class[] groups() default {}; 25 | 26 | Class[] payload() default {}; 27 | } 28 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/constraints/Password.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.constraints; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | import javax.validation.Constraint; 10 | import javax.validation.Payload; 11 | 12 | import com.onboard.frontend.validator.PasswordValidator; 13 | 14 | @Target({ ElementType.FIELD }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | @Constraint(validatedBy = PasswordValidator.class) 18 | public @interface Password { 19 | 20 | String message() default "Invalid Password"; 21 | 22 | Class[] groups() default {}; 23 | 24 | Class[] payload() default {}; 25 | } 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/constraints/Username.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.constraints; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | import javax.validation.Constraint; 10 | import javax.validation.Payload; 11 | 12 | import com.onboard.frontend.validator.UsernameValidator; 13 | 14 | @Target({ ElementType.FIELD }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | @Constraint(validatedBy = UsernameValidator.class) 18 | public @interface Username { 19 | 20 | String message() default "Invalid Username"; 21 | 22 | Class[] groups() default {}; 23 | 24 | Class[] payload() default {}; 25 | } 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/constraints/UsernameExists.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.constraints; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | import javax.validation.Constraint; 10 | import javax.validation.Payload; 11 | 12 | import com.onboard.frontend.validator.UsernameExistsValidator; 13 | 14 | @Target({ ElementType.FIELD }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | @Constraint(validatedBy = UsernameExistsValidator.class) 18 | public @interface UsernameExists { 19 | 20 | boolean exist() default false; 21 | 22 | String message() default "Username already exists"; 23 | 24 | Class[] groups() default {}; 25 | 26 | Class[] payload() default {}; 27 | } 28 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/controller/api/CurrentUserAPIController.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.controller.api; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | import org.springframework.web.bind.annotation.ResponseBody; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | import com.onboard.frontend.model.User; 12 | import com.onboard.frontend.service.web.SessionService; 13 | 14 | /** 15 | * Created by XingLiang on 2015/4/23. 16 | */ 17 | @RestController 18 | public class CurrentUserAPIController { 19 | 20 | @Autowired 21 | private SessionService sessionService; 22 | 23 | @RequestMapping(value = "/api/currentUser", method = RequestMethod.GET) 24 | @ResponseBody 25 | public User getCurrentUser(HttpServletRequest httpServletRequest) { 26 | return sessionService.getCurrentUser(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/controller/page/HomeController.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.controller.page; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestMethod; 6 | 7 | /** 8 | * Created by XingLiang on 2015/4/23. 9 | */ 10 | @Controller 11 | public class HomeController { 12 | 13 | /** 14 | * 选择company 15 | * 16 | */ 17 | @RequestMapping(value = { "/teams", "/teams/**", "/account/**" }, method = RequestMethod.GET) 18 | public String home() { 19 | return "onboard/Onboard"; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/controller/page/account/form/ForgetPasswordForm.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.controller.page.account.form; 2 | 3 | import com.onboard.frontend.constraints.EmailExists; 4 | 5 | public class ForgetPasswordForm { 6 | 7 | @EmailExists(exist = true, message = "邮箱地址不存在") 8 | private String email; 9 | 10 | public String getEmail() { 11 | return email; 12 | } 13 | 14 | public void setEmail(String email) { 15 | this.email = email; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/controller/page/account/form/SigninForm.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.controller.page.account.form; 2 | 3 | import com.onboard.frontend.constraints.EmailExists; 4 | 5 | public class SigninForm { 6 | 7 | @EmailExists(exist = true, message = "邮件地址不存在") 8 | private String email; 9 | 10 | private String password; 11 | 12 | private Boolean remember; 13 | 14 | public String getEmail() { 15 | return email; 16 | } 17 | 18 | public void setEmail(String email) { 19 | this.email = email; 20 | } 21 | 22 | public String getPassword() { 23 | return password; 24 | } 25 | 26 | public void setPassword(String password) { 27 | this.password = password; 28 | } 29 | 30 | public Boolean getRemember() { 31 | return remember; 32 | } 33 | 34 | public void setRemember(Boolean remember) { 35 | this.remember = remember; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/BadRequestException.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.BAD_REQUEST) 7 | public class BadRequestException extends RuntimeException { 8 | private static final long serialVersionUID = 1L; 9 | 10 | public BadRequestException() { 11 | 12 | } 13 | 14 | public BadRequestException(RuntimeException runtimeException) { 15 | super(runtimeException); 16 | } 17 | 18 | public BadRequestException(String message) { 19 | super(message); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/InternalException.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | 4 | public class InternalException extends Exception { 5 | 6 | private static final long serialVersionUID = 1L; 7 | 8 | public InternalException(Exception exception) { 9 | super(exception); 10 | } 11 | 12 | public InternalException(String message) { 13 | super(message); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/NoLoginException.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | public class NoLoginException extends RuntimeException { 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 1L; 9 | 10 | public NoLoginException() { 11 | 12 | } 13 | 14 | public NoLoginException(RuntimeException runtimeException) { 15 | super(runtimeException); 16 | } 17 | 18 | public NoLoginException(String message) { 19 | super(message); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/NoPermissionException.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.FORBIDDEN) 7 | public class NoPermissionException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | public NoPermissionException() { 12 | 13 | } 14 | 15 | public NoPermissionException(String message) { 16 | super(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/OnboardErrorController.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | 7 | @Controller 8 | public class OnboardErrorController { 9 | 10 | @RequestMapping(value = "/error/{statusCode}") 11 | public String handleError(@PathVariable int statusCode) { 12 | if (statusCode == 500) { 13 | return "error/500"; 14 | } else if (statusCode == 403) { 15 | return "error/403"; 16 | } 17 | return "error/404"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/exception/ResourceNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.NOT_FOUND) 7 | public class ResourceNotFoundException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | public ResourceNotFoundException() { 12 | 13 | } 14 | 15 | public ResourceNotFoundException(String message) { 16 | super(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/model/ResponseMap.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.model; 2 | 3 | import java.util.HashMap; 4 | 5 | public class ResponseMap extends HashMap { 6 | 7 | /** 8 | * 9 | */ 10 | private static final long serialVersionUID = -7635149109730846155L; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/model/ThreadVariables.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.model; 2 | 3 | import java.util.HashMap; 4 | 5 | public class ThreadVariables extends HashMap { 6 | 7 | private static final long serialVersionUID = 1L; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/model/dto/TagDTO.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.model.dto; 2 | 3 | 4 | public class TagDTO { 5 | 6 | private Integer id; 7 | 8 | private String tagName; 9 | 10 | private Integer projectId; 11 | 12 | public Integer getId() { 13 | return id; 14 | } 15 | 16 | public void setId(Integer id) { 17 | this.id = id; 18 | } 19 | 20 | public String getTagName() { 21 | return tagName; 22 | } 23 | 24 | public void setTagName(String tagName) { 25 | this.tagName = tagName; 26 | } 27 | 28 | public Integer getProjectId() { 29 | return projectId; 30 | } 31 | 32 | public void setProjectId(Integer projectId) { 33 | this.projectId = projectId; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/redis/KeyUtils.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.redis; 2 | 3 | import com.google.common.base.Preconditions; 4 | 5 | public class KeyUtils { 6 | 7 | public static String userToken(String type, Integer uid) { 8 | Preconditions.checkNotNull(type); 9 | Preconditions.checkNotNull(uid); 10 | return String.format("account:%s:%d", type, uid); 11 | } 12 | 13 | public static String sessionCurrentUserId(String sessionId) { 14 | Preconditions.checkNotNull(sessionId); 15 | return String.format("session-current-user:%s", sessionId); 16 | } 17 | 18 | public static String sessionCurrentCompanyId(String sessionId) { 19 | Preconditions.checkNotNull(sessionId); 20 | return String.format("session-current-company:%s", sessionId); 21 | } 22 | 23 | public static String sessionCurrentProjectId(String sessionId) { 24 | Preconditions.checkNotNull(sessionId); 25 | return String.format("session-current-project:%s", sessionId); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/redis/TokenType.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.redis; 2 | 3 | public enum TokenType { 4 | REMEMBER_ME("remember_me"), FORGET_PASSWORD("forget_password"), CONFIRMATION( 5 | "confirmation"); 6 | 7 | private String name; 8 | 9 | private TokenType(String name) { 10 | this.setName(name); 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/service/thirdpart/ThirdpartService.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.service.thirdpart; 2 | 3 | import java.util.Map; 4 | 5 | public interface ThirdpartService { 6 | String GITHUBCALLBACK = "/%d/projects/%d/users/%d/github/callback?code=%s"; 7 | 8 | Map thirdPartAuthenticateRepository(int companyId, int projectId, int userId, String code); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/service/thirdpart/impl/ThirdpartServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.service.thirdpart.impl; 2 | 3 | import java.util.Map; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.onboard.frontend.model.ResponseMap; 9 | import com.onboard.frontend.service.net.impl.NetServiceImpl; 10 | import com.onboard.frontend.service.thirdpart.ThirdpartService; 11 | 12 | @Service 13 | public class ThirdpartServiceImpl implements ThirdpartService { 14 | @Autowired 15 | private NetServiceImpl netService; 16 | 17 | public Map thirdPartAuthenticateRepository(int companyId, int projectId, int userId, String code) { 18 | return netService.getForObject(String.format(GITHUBCALLBACK, companyId, projectId, userId, code), ResponseMap.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/service/web/GlobalService.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.service.web; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | /** 6 | * Created by XingLiang on 2015/4/23. 7 | */ 8 | public interface GlobalService { 9 | 10 | public HttpSession getSession(); 11 | 12 | public void set(String key, Object object); 13 | 14 | public Object get(String key); 15 | } 16 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/service/web/RequestFilter.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.service.web; 2 | 3 | import com.onboard.frontend.service.web.impl.GlobalServiceImpl; 4 | 5 | import org.springframework.stereotype.Component; 6 | import org.springframework.web.filter.RequestContextFilter; 7 | 8 | import javax.servlet.FilterChain; 9 | import javax.servlet.ServletException; 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.io.IOException; 13 | 14 | /** 15 | * Created by XingLiang on 2015/4/28. 16 | */ 17 | @Component 18 | public class RequestFilter extends RequestContextFilter { 19 | 20 | @Override 21 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { 22 | GlobalServiceImpl.setUpHttpSession(request); 23 | super.doFilterInternal(request, response, filterChain); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/validator/EmailExistsValidator.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.validator; 2 | 3 | import javax.validation.ConstraintValidator; 4 | import javax.validation.ConstraintValidatorContext; 5 | 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | 10 | import com.onboard.frontend.constraints.EmailExists; 11 | import com.onboard.frontend.service.account.AccountService; 12 | 13 | public class EmailExistsValidator implements ConstraintValidator { 14 | 15 | public static final Logger logger = LoggerFactory.getLogger(EmailExistsValidator.class); 16 | 17 | @Autowired 18 | private AccountService accountService; 19 | 20 | private boolean exist; 21 | 22 | public void initialize(EmailExists arg0) { 23 | this.exist = arg0.exist(); 24 | } 25 | 26 | public boolean isValid(String arg0, ConstraintValidatorContext arg1) { 27 | return !(this.exist ^ accountService.getUserByEmailOrUsername(arg0) != null); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/validator/PasswordValidator.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.validator; 2 | 3 | import javax.validation.ConstraintValidator; 4 | import javax.validation.ConstraintValidatorContext; 5 | 6 | import com.google.common.base.Strings; 7 | import com.onboard.frontend.constraints.Password; 8 | 9 | public class PasswordValidator implements ConstraintValidator { 10 | 11 | public void initialize(Password constraintAnnotation) { 12 | 13 | } 14 | 15 | public boolean isValid(String value, ConstraintValidatorContext context) { 16 | return Strings.isNullOrEmpty(value) || value.length() >= 6 && value.length() <= 20; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/validator/UsernameValidator.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.validator; 2 | 3 | import javax.validation.ConstraintValidator; 4 | import javax.validation.ConstraintValidatorContext; 5 | 6 | import com.onboard.frontend.constraints.Username; 7 | 8 | public class UsernameValidator implements ConstraintValidator { 9 | 10 | public void initialize(Username constraintAnnotation) { 11 | 12 | } 13 | 14 | public boolean isValid(String value, ConstraintValidatorContext context) { 15 | if (value == null || value.length() == 0) { 16 | return true; 17 | } 18 | return value.matches("^[a-zA-Z0-9_]{3,16}$"); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/java/com/onboard/frontend/websocket/WebsocketConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.onboard.frontend.websocket; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.socket.config.annotation.EnableWebSocket; 6 | import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 7 | import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 8 | 9 | import com.onboard.frontend.service.web.SessionService; 10 | 11 | @Configuration 12 | @EnableWebSocket 13 | public class WebsocketConfiguration implements WebSocketConfigurer { 14 | 15 | @Autowired 16 | SessionService sessionService; 17 | 18 | @Autowired 19 | WebsocketHandler websocketHandler; 20 | 21 | public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 22 | registry.addHandler(websocketHandler, "/websocket"); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/application.examples: -------------------------------------------------------------------------------- 1 | api.protocol=http:// 2 | api.domain=127.0.0.1:8080 3 | api.path=/api 4 | 5 | account.tokenExpired=259200 6 | account.rememberMeExpired=2592000 7 | 8 | headTemplateName=fragments/CommonHTMLHead 9 | 10 | 11 | #link the 10 server open the next two lines 12 | spring.redis.host=127.0.0.1 13 | spring.redis.port=6379 14 | 15 | site.protocol=http:// 16 | site.domain=${site.host} 17 | site.host=127.0.0.1:8000 18 | site.static.host=127.0.0.1:8000 19 | site.static.protocol=http:// 20 | 21 | server.port=8000 22 | server.sessionTimeout=259200000 23 | data.host=http://127.0.0.1:8000 24 | 25 | user.defaultUser=-1 26 | profile=dev 27 | 28 | multipart.maxFileSize=32Mb 29 | spring.jackson.deserialization.fail-on-unknown-properties=true -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "onboard", 3 | "description": "nodejs packages for Onboard UI.", 4 | "repository": { 5 | "type": "git", 6 | "url": "http://onboard.cn/onboard.git" 7 | }, 8 | "dependencies": {}, 9 | "devDependencies": { 10 | "gulp": "3.8.10", 11 | "gulp-flatten": "0.0.2", 12 | "gulp-less": "1.3.6", 13 | "gulp-minify-css": "0.3.3", 14 | "gulp-minify-html": "^0.1.3", 15 | "gulp-rev": "^0.3.2", 16 | "gulp-uglify": "^0.2.1", 17 | "gulp-usemin": "^0.3.3", 18 | "gulp-filter": "~0.4.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/403.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/404.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/500.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/208x128-md-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/208x128-md-solid.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/ai.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/css.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/default.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/excel.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_gif.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_js.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_others.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_others.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_rar.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/file_extension_txt.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/flash.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/html.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/image.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/md-208x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/md-208x128.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/md-66x40-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/md-66x40-solid.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/md-66x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/md-66x40.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/paperclip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/paperclip.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/pdf.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/photoshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/photoshop.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/ppt.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/processbar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/processbar.gif -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/script.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/txt.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/word.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/attachment-icon/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/attachment-icon/zip.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/avatar/a0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/avatar/a0.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/center-panel-nav-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/center-panel-nav-shadow.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/favicon.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/commits.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/commits.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/process.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/process.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/recover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/recover.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/remind.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/remind.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/repository.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/repository.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/feature/search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/feature/search.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/index/header_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/index/header_bg.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/index/onboard-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/index/onboard-mobile.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/index/onboard-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/index/onboard-web.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-bg/boarding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-bg/boarding.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-bg/city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-bg/city.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-bg/jellyfish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-bg/jellyfish.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-bg/sail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-bg/sail.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-bg/tic-tac-toe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-bg/tic-tac-toe.jpg -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/login-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/login-logo.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/ob-checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/ob-checkbox.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/ob-input-checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/ob-input-checkbox.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/onboard-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/onboard-logo.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/img/sidebar-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/img/sidebar-shadow.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/modules/common.js: -------------------------------------------------------------------------------- 1 | // 这里的js会被所有页面引入 2 | 3 | window.Module['common'] = function() { 4 | 5 | // 既然模板是动态渲染的,这些在document.ready运行的方法就没用了。干掉它! 6 | $('[data-toggle="tooltip"]').tooltip(); 7 | $(".form_datetime").datetimepicker(); 8 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/modules/feedback.js: -------------------------------------------------------------------------------- 1 | 2 | // required by feedback modal in html footer 3 | 4 | window.Module['feedback'] = function() { 5 | 6 | $('#suggestion-form').draggable(); 7 | $('.create_suggestion').click(function() { 8 | $('#suggestion-form').show(); 9 | $('#suggestion-form').modal('show'); 10 | return false; 11 | }); 12 | $("#suggestion-submit-button").click(function () { 13 | var content = encodeURI($("#content").val()); 14 | $('#notification').show(0).delay(2000).hide(0); 15 | $.ajax({ 16 | type:"post", 17 | url:"/api/suggestion", 18 | async: false, 19 | data:$("#suggestionForm").serialize(), 20 | success: function(data, statusText, xhr, $form) { 21 | $('#suggestion-form').hide(); 22 | $('#suggestion-form').find('textarea').val(''); 23 | $('#suggestion-notification').modal('show').delay(2000).hide(); 24 | } 25 | }); 26 | 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/modules/onboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/10/14. 3 | */ 4 | 5 | // initialize and bootstrap onBoard App 6 | 7 | window.Module['onboard'] = function () { 8 | 9 | // prepare projectApp 10 | angular.module('data') 11 | .constant('upyun', { 12 | 'protocol': $('#upyunProtocol').val(), 13 | 'host': $('#upyunHost').val() 14 | }); 15 | 16 | // bootstrap projectApp 17 | angular.bootstrap($('#onboard')[0], ['onboard']); 18 | }; -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/README.md: -------------------------------------------------------------------------------- 1 | # angular模块 2 | 3 | 该目录下包含了onboard web中的所有angular模块。 4 | 5 | ## 模块的职责 6 | 7 | 模块的组织对应着Onboard的特性,每个特性抽象为一个模块。该模块中包括实现该特性的: 8 | 9 | - controller: 页面逻辑的控制器,尽量只包含交互逻辑 10 | - service: 为了完成页面逻辑所需要的所有单例:数据获取与数据转换接口、通用的交互逻辑 11 | - directive: 通用的html组件 12 | 13 | ## 文件的组织 14 | 15 | 一个模块对应一个文件夹。根模块(App)为onboard,在onboard中引入它需要的其他模块。 -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/account/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by pkutxq on 15-7-21. 3 | */ 4 | angular.module("account",['util','ui.router']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/attachmentList-ctrl.js: -------------------------------------------------------------------------------- 1 | angular.module('projectApp') 2 | .controller("attachmentsCtrl",['$scope','$http',function($scope,$http){ 3 | $http.get($scope.getProjectApiUri + 'attachments').success(function(data){ 4 | $scope.attachmentList = data; 5 | }).error(function(){ 6 | alert('add failed!'); 7 | }); 8 | 9 | $scope.attachmentTpe = function(){ 10 | return null; 11 | }; 12 | 13 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/bugs/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ddu on 2015/05/27. 3 | */ 4 | 5 | angular.module('bugs', ['data', 'util', 'ui.router', 'infinite-scroll']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/company/company-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/9/14. 3 | */ 4 | 5 | // 团队 6 | angular.module('company') 7 | 8 | .controller('companyCtrl', ['$scope', 'url', '$http', '$state', 'company', 9 | function ($scope, url, $http, $state, company) { 10 | 11 | $scope.companyId = url.companyId(); 12 | $scope.$state = $state; 13 | 14 | company.getCompanyInfo($scope.companyId).then(function(company) { 15 | $scope.currentCompany = company; 16 | }); 17 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/company/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/9/14. 3 | */ 4 | 5 | // 团队模块 6 | angular.module('company',['ui.router','ui.sortable', 'util', 'infinite-scroll', "checklist-model", 'ui.calendar', 'ngResource', 7 | 'ngAnimate', 'data', 'project', 'ngSanitize', 'sexyDatepicker', 'statistics', 'angularBrick', 'status']) 8 | .config(['$stateProvider', function ($stateProvider) { 9 | $stateProvider 10 | // abstract parent state 11 | .state('company', { 12 | url : '/teams/{companyId:[0-9]+}', 13 | views : { 14 | 'nav' : { 15 | templateUrl: 'company-header.html', 16 | controller : 'companyCtrl' 17 | }, 18 | 'content': { 19 | template : '
', 20 | controller: 'companyCtrl' 21 | } 22 | }, 23 | abstract: true 24 | }) 25 | }]); 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/cqa/cqa-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Steven on 2015/7/8. 3 | */ 4 | angular.module('cqa') 5 | .config(['$stateProvider', function($stateProvider) { 6 | $stateProvider.state('company.project.cqa', { 7 | url: '/cqa', 8 | templateUrl: 'cqaIndex.html', 9 | controller: 'cqaCtrl' 10 | }); 11 | }]) 12 | .controller('cqaCtrl', ['$scope', '$state', function($scope, $state) { 13 | // Get to list page for default, otherwise the sub-page will be empty. 14 | if ($state.$current.toString() == "company.project.cqa") { 15 | $state.go('company.project.cqa.jobs'); 16 | } 17 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/cqa/cqa-jobs-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Steven on 2015/7/8. 3 | */ 4 | angular.module('cqa') 5 | .config(['$stateProvider', function($stateProvider) { 6 | $stateProvider.state('company.project.cqa.jobs', { 7 | url: '/jobs', 8 | templateUrl: 'cqaJobs.html', 9 | controller: 'cqaJobsCtrl' 10 | }); 11 | }]) 12 | .controller('cqaJobsCtrl', ['$scope', '$state', function($scope, $state) { 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/cqa/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Steven on 2015/7/8. 3 | */ 4 | angular.module('cqa', ['data', 'ui.router', 'infinite-scroll', 'util']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/bug-websocket-service.js: -------------------------------------------------------------------------------- 1 | angular.module('data') 2 | .service('bugWebsocketService', ['bugService', 3 | function(bugService) { 4 | this.add = function(bugDTO) { 5 | bugService.webSocketCreateBug(bugDTO); 6 | console.log("bug added"); 7 | }; 8 | this.update = function(bugDTO) { 9 | bugService.webSocketUpdateBug(bugDTO); 10 | console.log("bug updated"); 11 | }; 12 | this.delete = function(bugDTO) { 13 | bugService.webSocketDeleteBug(bugDTO); 14 | console.log("bug deleted"); 15 | }; 16 | } 17 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/ciBuild-websocket-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by pkutxq on 15-5-9. 3 | */ 4 | angular.module('data') 5 | .service('ciBuildWebsocketService',['ciService', 6 | function(ciService){ 7 | this.add = function(ciBuildDTO){ 8 | ciService.webSocketCreateCIBuild(ciBuildDTO); 9 | console.log('add ciBuild'); 10 | }; 11 | this.update = function(ciBuildDTO){ 12 | ciService.webSocketUpdateCIBuild(ciBuildDTO); 13 | console.log('update ciBuild'); 14 | }; 15 | this.delete = function(ciBuildDTO){ 16 | ciService.webSocketDeleteCIBuild(ciBuildDTO); 17 | console.log('delete ciBuild'); 18 | } 19 | } 20 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/ciProject-websocket-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by pkutxq on 15-5-9. 3 | */ 4 | angular.module('data') 5 | .service('ciProjectWebsocketService', ['ciService', 6 | function (ciService) { 7 | this.add = function(ciProjectDTO){ 8 | ciService.webSocketCreateCIProject(ciProjectDTO); 9 | console.log('add ciProject'); 10 | }; 11 | this.update = function(ciProjectDTO){ 12 | ciService.webSocketUpdateCIProject(ciProjectDTO); 13 | console.log('update ciProject'); 14 | }; 15 | this.delete = function(ciProjectDTO){ 16 | ciService.webSocketDeleteCIProject(ciProjectDTO); 17 | console.log('delete ciProject'); 18 | } 19 | } 20 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/comment-websocket-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Dongdong Du on 12/24/2014. 3 | */ 4 | 5 | angular.module('data') 6 | .service('commentWebSocketService', ['commentService', function(commentService) { 7 | 8 | this.add = function(commentDTO) { 9 | commentService.updateAllComments(commentDTO); 10 | }; 11 | this.update = function(commentDTO) { 12 | commentService.updateAllComments(commentDTO); 13 | }; 14 | this.delete = function(commentDTO) { 15 | commentService.updateAllComments(commentDTO); 16 | }; 17 | 18 | }]); 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/cqa-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Steven on 2015/7/14. 3 | */ 4 | angular.module('data') 5 | .service('cqaService', ['url', '$http', function(url, $http) { 6 | 7 | this.createAnalyzeTask = function(source, branch) { 8 | var postUrl = [url.projectApiUrl(url.projectId(), url.companyId()), '/analyze-tasks'].join(""); 9 | var postParas = { 10 | name: "test", 11 | source: source, 12 | branch: branch 13 | }; 14 | return $http.post(postUrl, postUrl).then( 15 | function(result) { 16 | console.log('success"' + result); 17 | }, 18 | function(result) { 19 | console.log('failure"' + result); 20 | } 21 | ); 22 | }; 23 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/discussion-websocket-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Dongdong Du on 12/26/2014. 3 | */ 4 | 5 | angular.module('data') 6 | .service('discussionWebSocketService', ['discussionService', function(discussionService) { 7 | 8 | this.add = function(discussionDTO) { 9 | discussionService.webSocketCreateDiscussion(discussionDTO); 10 | }; 11 | this.update = function(discussionDTO) { 12 | discussionService.webSocketUpdateDiscussion(discussionDTO); 13 | }; 14 | this.delete = function(discussionDTO) { 15 | discussionService.webSocketDeleteDiscussion(discussionDTO); 16 | }; 17 | 18 | }]); 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('data', []); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/iteration-websocket-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Nettle on 2015/6/25. 3 | */ 4 | angular.module('data') 5 | .service('iterationWebsocketService', ['storyService', 'bugService', 6 | function(storyService, bugService) { 7 | this.update = function(data) { 8 | //storyService.webSocketUpdateStory(story); 9 | console.log(data); 10 | }; 11 | } 12 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/status-service.js: -------------------------------------------------------------------------------- 1 | angular.module('status', []) 2 | .service('statusService', [ 3 | function () { 4 | var dataOptions = [{ 5 | id: 0, 6 | name: '活动数' 7 | }, { 8 | id: 1, 9 | name: '完成任务数' 10 | }, { 11 | id: 4, 12 | name: '修复Bug数' 13 | }]; 14 | 15 | this.addStatusPage = function(newPage) { 16 | dataOptions.push(newPage); 17 | } 18 | 19 | this.getStatusPage = function() { 20 | return dataOptions; 21 | } 22 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/story-websocket-service.js: -------------------------------------------------------------------------------- 1 | angular.module('data') 2 | .service('storyWebsocketService', ['storyService', 3 | function(storyService) { 4 | this.add = function(story){ 5 | storyService.webSocketCreateStory(story); 6 | } 7 | this.update = function(story) { 8 | storyService.webSocketUpdateStory(story); 9 | console.log("story updated"); 10 | }; 11 | this.delete = function(story) { 12 | storyService.webSocketDeleteStory(story); 13 | console.log("story deleted"); 14 | }; 15 | } 16 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/data/uploads-websocket-service.js: -------------------------------------------------------------------------------- 1 | angular.module('data') 2 | .service('uploadsWebsocketService', ['uploadsService', 3 | function(uploadsService) { 4 | this.add = function(uploadDTO) { 5 | uploadsService.webSocketCreateUpload(uploadDTO); 6 | console.log("upload add"); 7 | }; 8 | this.update = function(uploadDTO) { 9 | uploadsService.webSocketUpdateUpload(uploadDTO); 10 | console.log("upload update"); 11 | }; 12 | this.delete = function(uploadDTO) { 13 | uploadsService.webSocketDeleteUpload(uploadDTO); 14 | console.log("upload delete"); 15 | }; 16 | } 17 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/discussions/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('discussions', ['data', 'util', 'ui.router', 'infinite-scroll']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/iteration/completed-iterations-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by R on 2014/11/25. 3 | */ 4 | 5 | angular.module('iteration') 6 | .controller('completedIterationsCtrl', ['$scope', 'filterFilter', 'iterationService', 7 | function ($scope, filterFilter, iterationService) { 8 | $scope.iterations = []; 9 | iterationService.getCompletedIterations(true).then(function(iterations){ 10 | $scope.iterations = iterations; 11 | }); 12 | 13 | $scope.getComptetedCount = function(iteration, completed){ 14 | var count = 0; 15 | for(var i = 0; i < iteration.iterables.length; i++){ 16 | if(iteration.iterables[i].iterationCompleted === completed){ 17 | count++; 18 | } 19 | } 20 | return count; 21 | }; 22 | } 23 | ]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/iteration/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('iteration', ['data', 'util', 'ui.router', 'statistics', 'tab']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/plugin/plugin.md: -------------------------------------------------------------------------------- 1 | # plugin js 文件 2 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/project/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/9/14. 3 | */ 4 | 5 | angular.module('project', ['ui.router', 'util', 'todo', 'iteration', 'discussions', 'upload', 6 | 'statistics', 'stories', 'angularMemberselector', 'bugs']) 7 | .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 8 | $urlRouterProvider.when('/{companyId:[0-9]+}/projects/{projectId:[0-9]+}', 9 | '/{companyId:[0-9]+}/projects/{projectId:[0-9]+}/todolists'); 10 | 11 | $stateProvider 12 | .state('company.project', { 13 | url : '/projects/{projectId:[0-9]+}', 14 | templateUrl: 'project.html', 15 | controller : 'projectCtrl', 16 | abstract : true 17 | }) 18 | }]); 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/statistics/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('statistics', ['ui.router', 'util', 'data']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/story/archived-stories-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by pkutxq on 15-5-22. 3 | */ 4 | angular.module('stories') 5 | .controller('archivedStoriesCtrl', ['$scope', '$http', 'storyService', function ($scope, $http, storyService) { 6 | 7 | storyService.getArchivedStories(true).then(function (archivedStories) { 8 | $scope.archivedStories = archivedStories; 9 | }, function (error) { 10 | console.log('获取需求列表失败'); 11 | }); 12 | 13 | var tempOpenStories = []; 14 | 15 | $scope.reopenStory = function(story){ 16 | storyService.reopenStory(story).then(function(response){ 17 | storyService.openStories().then(function(openStories){ 18 | tempOpenStories = openStories; 19 | tempOpenStories.pop(story); 20 | }); 21 | 22 | console.log(response); 23 | }) 24 | } 25 | 26 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/story/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Nettle on 2015/4/29. 3 | */ 4 | 5 | angular.module('stories', ['data', 'util', 'ui.tree']); 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/tab/comment-image-modal-ctrl.js: -------------------------------------------------------------------------------- 1 | angular.module('tab') 2 | .controller('commentImageModalCtrl', ['$scope', '$modalInstance', 'imageData', 3 | function($scope, $modalInstance, imageData) { 4 | 5 | $scope.commentImageUrl = imageData.commentImageUrl; 6 | $scope.commentImageTitle = imageData.commentImageTitle; 7 | 8 | $scope.cancel = function() { 9 | $modalInstance.dismiss('cancel'); 10 | }; 11 | 12 | } /* end of controller function */ 13 | ]); 14 | /* end of controller */ 15 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/tab/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/14/14. 3 | */ 4 | 5 | angular.module('tab', ['util', 'data', 'ui.bootstrap']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/tab/tab-set-ctrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by R on 2014/11/18. 3 | */ 4 | 5 | // tab子页面 6 | angular.module('tab') 7 | .controller('tabSetCtrl', ['$scope', '$http', 8 | function($scope, $http) { 9 | $scope.attachType = undefined; 10 | $scope.attachId = -1; 11 | $scope.updateEvent = "updateTab"; 12 | $scope.$on($scope.updateEvent, function(event, data){ 13 | if(data == undefined || data.attachId == undefined || data.attachType == undefined){ 14 | return; 15 | } 16 | $scope.attachId = data.attachId; 17 | $scope.attachType = data.attachType; 18 | $scope.projectId = data.projectId; 19 | $scope.companyId = data.companyId; 20 | $scope.$broadcast("update-tab-detail", data); 21 | }); 22 | $scope.updateTab = function () { 23 | $scope.$broadcast("update-tab-detail", { tab : this.tab }); 24 | } 25 | } 26 | ]); 27 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/todo/acrive-todolists-ctrl.js: -------------------------------------------------------------------------------- 1 | // 任务列表的列表 2 | 3 | angular.module('todo').controller('attriveTtodolistsCtrl', 4 | ['$scope', '$rootScope', '$http', '$state', '$document', "todolistService", "user", 'url', 'drawer', 'todoUtilService', 5 | function ($scope, $rootScope, $http, $state, $document, todolistService, user, url, drawer, todoUtilService) { 6 | $scope.todoUtilService = todoUtilService; 7 | todolistService.getArchivedTodolists(url.projectId(), url.companyId(), true).then(function (todolists) { 8 | $scope.todolists = todolists; 9 | }); 10 | } 11 | ]); 12 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/todo/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('todo', ['data', 'util', 'ui.bootstrap', 'ui.router', 'tab']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/upload/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/12/14. 3 | */ 4 | 5 | angular.module('upload', ['angularFileUpload', 'util', 'data', 'infinite-scroll']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/file-size-filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/9/14. 3 | */ 4 | 5 | angular.module('util') 6 | .filter('fileSize', function () { 7 | return function (value) { 8 | var out = value; 9 | if(value > 1000000000){ 10 | out = (value / 1000000000).toFixed(2) + 'G'; 11 | }else if (value >= 1000000) { 12 | out = (value / 1000000).toFixed(2) + 'M'; 13 | }else if (value >= 1000) { 14 | out = (value / 1000).toFixed(2) + 'K'; 15 | }else{ 16 | out = value + 'B'; 17 | } 18 | return out; 19 | }; 20 | }); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/9/14. 3 | */ 4 | 5 | // 工具模块,自定义小组件、工具directive、工具filter放在这里 6 | angular.module('util', []); 7 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/preview-directive.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 1/3/15. 3 | */ 4 | 5 | angular.module('util') 6 | .directive('preview', [function() { 7 | return { 8 | restrict: 'E', 9 | templateUrl: 'preview.html', 10 | scope: { 11 | "contentType": '=contentType' 12 | }, 13 | link: function($scope, element, attrs) { 14 | 15 | } 16 | }; 17 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/resize-directive.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by R on 2014/11/26. 3 | */ 4 | angular.module('util') 5 | .directive('resize', ['$timeout', function ($timeout) { 6 | return { 7 | link: function ($scope, element) { 8 | var resize = function () { 9 | return element[0].style.height = "" + element[0].scrollHeight + "px"; 10 | }; 11 | element.on("blur keyup change", resize); 12 | $timeout(resize, 0); 13 | } 14 | }; 15 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/theme-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by harttle on 12/11/14. 3 | */ 4 | // 主题:提供项目样式 5 | 6 | angular.module('util') 7 | .service('theme', [function () { 8 | 9 | this.themes = [ 10 | { 11 | color: '#AFAFAF', 12 | name: 'default' 13 | }, 14 | { 15 | color: '#11acfa', 16 | name: 'primary' 17 | }, 18 | { 19 | color: '#61B947', 20 | name: 'success' 21 | }, 22 | { 23 | color: '#333645', 24 | name: 'info' 25 | }, 26 | { 27 | color: '#F2AA47', 28 | name: 'warning' 29 | }, 30 | { 31 | color: '#F96565', 32 | name: 'danger' 33 | } 34 | ]; 35 | 36 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/tooltip-directive.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Steven on 2015/7/12. 3 | */ 4 | angular.module('util') 5 | .directive('tooltip', function(){ 6 | return { 7 | restrict: 'A', 8 | link: function(scope, element){ 9 | $(element).hover(function(){ 10 | // on mouse_enter 11 | $(element).tooltip('show'); 12 | }, function(){ 13 | // on mouse_leave 14 | $(element).tooltip('hide'); 15 | }); 16 | } 17 | }; 18 | }); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/util/util-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by SourceDark on 2015/6/1. 3 | */ 4 | angular.module('util') 5 | .service('utilService', [function () { 6 | this.contains = function(array, object){ 7 | for(var i = 0; i < array.length; i++){ 8 | if(object.id === array[i].id){ 9 | return true; 10 | } 11 | } 12 | return false; 13 | } 14 | }] 15 | ); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/js/ng-modules/websocket/index.js: -------------------------------------------------------------------------------- 1 | //websocket 连接 2 | angular.module('websocket', ['data']); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/README.md: -------------------------------------------------------------------------------- 1 | # less 文件 2 | 3 | onboard 主要使用 less 的层级特性,用来管理 CSS 冲突。 4 | 5 | 每个 less 文件对应一个 DOM 元素,通常以 ID 标识。文件组织与DOM树相对应,解决了不同模块 CSS 的冲突问题。 6 | 7 | onboard 中引入的 less 文件为 ./onboard/onboard.less,其他文件都通过该入口文件直接或间接引入。 -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/modules/account.less: -------------------------------------------------------------------------------- 1 | body.account { 2 | &#sign{ 3 | background-color: #eee; 4 | 5 | div.logo{ 6 | h2{ 7 | margin-left:15px; 8 | } 9 | } 10 | .form-sign { 11 | max-width: 400px; 12 | margin: 80px auto; 13 | .input-group{ 14 | margin-bottom: 10px; 15 | span .fa{ 16 | width:15px 17 | } 18 | } 19 | button[type='submit']{ 20 | margin-bottom: 10px; 21 | } 22 | } 23 | 24 | .well{ 25 | .input-group{ 26 | margin-bottom: 20px; 27 | .input{ 28 | max-width: 400px; 29 | } 30 | } 31 | .form-reset{ 32 | max-width:400px; 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/modules/attachmentlist.less: -------------------------------------------------------------------------------- 1 | tr.att td{ 2 | height:40px; 3 | padding-top:20px; 4 | .i-size{ 5 | font-size: 33px; 6 | margin-right: 27px; 7 | } 8 | img{ 9 | width:60px; 10 | height:30px; 11 | vertical-align:middle 12 | } 13 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/modules/filedropzone.less: -------------------------------------------------------------------------------- 1 | .attachment-list{ 2 | width:600px; 3 | border: 1px solid #F8F8F8; 4 | span.click{ 5 | color:#08c; 6 | } 7 | span.click:hover{ 8 | color: #005580; 9 | text-decoration: underline; 10 | } 11 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/modules/user.less: -------------------------------------------------------------------------------- 1 | body.user{ 2 | 3 | @nav-height: 50px; 4 | 5 | &#everyone{ 6 | .container{ 7 | margin-top:@nav-height+20px; 8 | margin-bottom: 50px; 9 | .page-header{ 10 | .btn{ 11 | margin-left:10px; 12 | width:200px; 13 | } 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/account/index.less: -------------------------------------------------------------------------------- 1 | // 账户设置页 2 | 3 | &{ 4 | margin-top: @nav-height+30px; 5 | } 6 | 7 | #profile{ 8 | @import "profile"; 9 | } 10 | #password{ 11 | @import "password"; 12 | } 13 | #sshkey{ 14 | @import "sshkey"; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/account/password.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/less/onboard/account/password.less -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/account/profile.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | #avatar-upload{ 4 | .thumbnail{ 5 | display: inline-block; 6 | margin-bottom: 10px; 7 | } 8 | #upload-btn{ 9 | margin: 0 0 20px 0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/account/sshkey.less: -------------------------------------------------------------------------------- 1 | td.ssh-key { 2 | vertical-align: middle; 3 | } 4 | td.ssh-text { 5 | overflow: hidden; 6 | word-break: break-word; 7 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/activity-list.less: -------------------------------------------------------------------------------- 1 | .activity-list{ 2 | 3 | #reply{ 4 | #commit{ 5 | margin-top: 5px; 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/activity.less: -------------------------------------------------------------------------------- 1 | // 活动样式,包括提交、pullrequest等各种活动。 2 | 3 | .activity { 4 | img.creator { 5 | border-radius: 50%; 6 | width: 50px; 7 | height: 50px; 8 | } 9 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/commit-list.less: -------------------------------------------------------------------------------- 1 | .commit-list{ 2 | 3 | .btn.commit-id{ 4 | margin-right: 10px; 5 | } 6 | 7 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/index.less: -------------------------------------------------------------------------------- 1 | // 通用模块 2 | // imported by onboard/onboard 3 | 4 | @import "variables"; 5 | @import "commit-list"; 6 | @import "diff"; 7 | @import "activity-list"; 8 | @import "../company/common/todo"; 9 | @import "activity"; 10 | @import "tab"; 11 | @import "comment"; 12 | @import "attachmentdetail"; 13 | @import "user-dropdown"; 14 | @import "link-todolist"; 15 | @import "ob-panel"; 16 | @import "tag-and-attachments"; 17 | //body font, btn, shared components 18 | @import "global"; 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/mixins.less: -------------------------------------------------------------------------------- 1 | .box-shadow(@args){ 2 | -webkit-box-shadow: @args; 3 | -moz-box-shadow: @args; 4 | box-shadow: @args; 5 | } 6 | 7 | .transform(@args){ 8 | -moz-transform: @args; 9 | -ms-transform: @args; 10 | -webkit-transform: @args; 11 | transform: @args; 12 | } 13 | 14 | .transition(@args){ 15 | -moz-transition: @args; 16 | -o-transition: @args; 17 | -webkit-transition: @args; 18 | transition: @args; 19 | } 20 | 21 | .animation(@args){ 22 | -webkit-animation: @args; 23 | -moz-animation: @args; 24 | -o-animation: @args; 25 | -ms-animation: @args; 26 | animation: @args; 27 | } 28 | 29 | .animation-delay(@args){ 30 | -webkit-animation-delay: @args; 31 | -moz-animation-delay: @args; 32 | -o-animation-delay: @args; 33 | -ms-animation-delay: @args; 34 | animation-delay: @args; 35 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/tag-and-attachments.less: -------------------------------------------------------------------------------- 1 | #tagAndAttachments{ 2 | .editTag{ 3 | padding-left: 10px; 4 | background-color: #f3f3f4; 5 | border: 0; 6 | font-size: 36px; 7 | } 8 | .tag_attacments { 9 | img{ 10 | width: 30px; 11 | height: 30px; 12 | margin-right: 10px; 13 | } 14 | 15 | td{ 16 | vertical-align: middle; 17 | } 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/common/user-dropdown.less: -------------------------------------------------------------------------------- 1 | 2 | .dropdown-menu.users{ 3 | img { 4 | width: 20px; 5 | height: 20px; 6 | border-radius: 50%; 7 | margin-right: 5px; 8 | } 9 | height: 200px; 10 | overflow-y: auto; 11 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/companies.less: -------------------------------------------------------------------------------- 1 | // 选择团队 2 | // imported by ./onboard.less 3 | 4 | .content { 5 | margin-bottom: 50px; 6 | .list-group { 7 | max-width: 400px; 8 | margin-left: auto; 9 | margin-right: auto; 10 | .list-group-item { 11 | } 12 | } 13 | form { 14 | .list-group; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/calendar.less: -------------------------------------------------------------------------------- 1 | 2 | .content { 3 | margin-top: 25px; 4 | } 5 | #main-header { 6 | margin-bottom: 30px; 7 | } 8 | #event-popover { 9 | min-width: 250px; 10 | .popover-title { 11 | input { 12 | border: none; 13 | background: inherit; 14 | } 15 | } 16 | .popover-content { 17 | .description { 18 | width: 100%; 19 | resize: none; 20 | border: none; 21 | } 22 | .alert { 23 | margin-bottom: 0; 24 | } 25 | } 26 | } 27 | #todo-popover { 28 | #event-popover; 29 | .popover-content { 30 | .assignee { 31 | width: 100%; 32 | } 33 | .deadline { 34 | width: 100%; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/collection.less: -------------------------------------------------------------------------------- 1 | .firstCss { 2 | color: #66ccff; 3 | } 4 | 5 | .page-header { 6 | position: relative; 7 | } 8 | 9 | 10 | 11 | .colle-body { 12 | .list-group { 13 | float: left; 14 | width: 10%; 15 | } 16 | table { 17 | float: right; 18 | width: 85%; 19 | tbody { 20 | tr { 21 | cursor: pointer; 22 | } 23 | tr:hover { 24 | background-color: #ddd; 25 | } 26 | } 27 | } 28 | } 29 | 30 | .search-tool { 31 | position: absolute; 32 | right: 0px; 33 | top: 0px; 34 | width: 340px; 35 | } 36 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/common/index.less: -------------------------------------------------------------------------------- 1 | 2 | @import "todo"; 3 | 4 | @import "userMenu"; -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/common/userMenu.less: -------------------------------------------------------------------------------- 1 | .userMenu { 2 | li:hover { 3 | cursor: pointer; 4 | background-color: #f5f5f5; 5 | } 6 | .dropdown-menu { 7 | z-index: 1500; 8 | width: 180px; 9 | hr { 10 | margin: 0 11 | } 12 | > span > li > a { 13 | display: block; 14 | padding: 3px 20px; 15 | clear: both; 16 | font-weight: 400; 17 | line-height: 1.42857143; 18 | color: #333; 19 | white-space: nowrap; 20 | } 21 | } 22 | #userMenu { 23 | width: 180px; 24 | } 25 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/invite.less: -------------------------------------------------------------------------------- 1 | // 邀请项目成员 2 | // imported by ./company 3 | 4 | #mainForm { 5 | margin-bottom: 20px; 6 | #emails { 7 | .form-inline { 8 | margin-bottom: 10px; 9 | .input-group { 10 | min-width: 300px; 11 | } 12 | } 13 | #add-email { 14 | margin-top: 10px; 15 | cursor: pointer; 16 | display: inline-block; 17 | } 18 | } 19 | #projects { 20 | .option { 21 | margin-right: 15px; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project-edit.less: -------------------------------------------------------------------------------- 1 | // 项目编辑页 2 | // imported by ./index.less 3 | 4 | .container { 5 | max-width: 700px; 6 | .well { 7 | margin-top: 20px; 8 | padding: 30px; 9 | #description { 10 | resize: vertical; 11 | } 12 | .form-result { 13 | width: 100px; 14 | } 15 | .add-by-email { 16 | margin-bottom: 10px; 17 | } 18 | #add-email { 19 | &:hover { 20 | text-decoration: none; 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/bugs/bugs.less: -------------------------------------------------------------------------------- 1 | // imported by project.less 2 | // styles for subview #bugs 3 | .center-panel-nav { 4 | .select-bug-list { 5 | margin-right: 20px; 6 | margin-top: -85px; 7 | } 8 | } 9 | 10 | .bug-content-wrapper { 11 | padding: 20px; 12 | background-color: white; 13 | .table { 14 | margin-bottom: 0px; 15 | } 16 | } 17 | 18 | #userMenu { 19 | padding: 5px 10px; 20 | font-size: 12px; 21 | line-height: 1.5; 22 | border-radius: 3px; 23 | } 24 | 25 | td.title a { 26 | //color: black; 27 | } 28 | 29 | .level-warning { 30 | td { 31 | font-weight: bold; 32 | &.createdTime { 33 | color: rgb(255, 155, 0);; 34 | } 35 | } 36 | } 37 | 38 | .level-alert { 39 | td { 40 | font-weight: bold; 41 | &.createdTime { 42 | color: red; 43 | } 44 | } 45 | } 46 | 47 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/ci/buildDetail.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/less/onboard/company/project/ci/buildDetail.less -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/ci/index.less: -------------------------------------------------------------------------------- 1 | #ciProjectDetail{ 2 | .center-panel-content{ 3 | table{ 4 | tr#builds-title{ 5 | font-family: "Courier New", Courier, monospace; 6 | font-size: 14px; 7 | th{ 8 | padding-left: 25px; 9 | } 10 | } 11 | tr#builds-info{ 12 | font-size: 14px; 13 | td{ 14 | padding-left:25px; 15 | span#build-success{ 16 | color: green; 17 | } 18 | span#build-unstable{ 19 | color:yellow; 20 | } 21 | span#build-failure{ 22 | color:red; 23 | } 24 | span#build-default{ 25 | color:blue; 26 | } 27 | } 28 | } 29 | 30 | } 31 | } 32 | } 33 | 34 | #ciTestReport{ 35 | @import "testReport"; 36 | } 37 | 38 | #buildDetail{ 39 | @import "buildDetail"; 40 | } 41 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/common/index.less: -------------------------------------------------------------------------------- 1 | 2 | @import "sidebar"; 3 | @import "center-panel"; 4 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/cqa/index.less: -------------------------------------------------------------------------------- 1 | // Created by 胡天翔 at 2015/07/08 2 | 3 | #cqa-jobs { 4 | @import "jobs.less"; 5 | } 6 | 7 | #cqa-new-job { 8 | @import "new-job.less"; 9 | } 10 | 11 | .title { 12 | font-size: 17px; 13 | margin: 15px 20px; 14 | //color: #2a6496; 15 | .title-content { 16 | } 17 | .title-button { 18 | display: inline-block; 19 | font-size: 13px; 20 | height: 19px; 21 | margin: 0px 0px 0px 10px; 22 | padding: 0px; 23 | width: 31px; 24 | } 25 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/cqa/new-job.less: -------------------------------------------------------------------------------- 1 | // Created by 胡天翔 at 2015/07/08 2 | 3 | .cqa-new-job-panel { 4 | margin: 15px 20px; 5 | padding: 15px; 6 | border: solid 1px; 7 | min-height: 200px; 8 | border-color: lightgray; 9 | background-color: white; 10 | .key { 11 | margin-bottom: 10px; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/index.less: -------------------------------------------------------------------------------- 1 | // overall css for project work panel 2 | // imported by company/company 3 | 4 | .wrap-all { 5 | @nav-height: 50px; 6 | position: absolute; 7 | top: @nav-height; 8 | bottom: 0; 9 | width: 100%; 10 | 11 | @import "common/index"; 12 | 13 | .content-wrapper { 14 | 15 | #todolists { 16 | @import "todo/index.less"; 17 | } 18 | #iterations { 19 | @import "iteration/index"; 20 | } 21 | #repository { 22 | @import "repository/index"; 23 | } 24 | #uploads { 25 | @import "uploads/index"; 26 | } 27 | #discussions { 28 | @import "discussion/index"; 29 | } 30 | #documents { 31 | @import "documents/documents"; 32 | } 33 | #bugs { 34 | @import "bugs/bugs"; 35 | } 36 | #stories { 37 | @import "story/index"; 38 | } 39 | #versions { 40 | @import "version/index"; 41 | } 42 | #statistics, #iterations { 43 | @import "statistics.less"; 44 | } 45 | @import "ci/index"; 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/repository/branches.less: -------------------------------------------------------------------------------- 1 | // 仓库页面branch子页 2 | // imported by ./repository 3 | 4 | .commit-id { 5 | margin-right: 10px; 6 | } 7 | #filter{ 8 | margin-top:20px; 9 | margin-bottom: 20px; 10 | } 11 | 12 | .delete-branch-icon{ 13 | color:#bd2c00; 14 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/repository/commits.less: -------------------------------------------------------------------------------- 1 | // 仓库页面commits子页 2 | // imported by ./repository 3 | 4 | .page-header { 5 | margin-top: 0px; 6 | small { 7 | margin-left: 20px; 8 | } 9 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/repository/index.less: -------------------------------------------------------------------------------- 1 | // imported by project.less 2 | // styles for subview #repository 3 | 4 | //.center-panel-nav .nav-pills{ 5 | // line-height: 15px; 6 | // .active a{ 7 | // background-color: @bright-blue; 8 | // } 9 | //} 10 | 11 | .center-panel-content.no-nav{ 12 | top: 0px; 13 | } 14 | 15 | #branches-tab { 16 | @import "branches"; 17 | } 18 | 19 | #files-tab { 20 | @import "files"; 21 | } 22 | 23 | #commits-tab { 24 | @import "commits"; 25 | } 26 | 27 | #pullrequests-tab { 28 | @import "pullrequest"; 29 | } 30 | 31 | #create-tab, #init-tab, #migrate-tab { 32 | @import "prepare"; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/repository/pullrequest.less: -------------------------------------------------------------------------------- 1 | // 仓库页面合并请求子页 2 | // imported by ./repository 3 | 4 | #pullrequests{ 5 | margin-top: 20px; 6 | .table-img { 7 | height: 40px; 8 | width: 40px; 9 | border-radius: 3px; 10 | margin-right: 5px; 11 | } 12 | td { 13 | vertical-align: middle; 14 | } 15 | } 16 | 17 | #pullrequest { 18 | #header{ 19 | margin-top: 10px; 20 | div{ 21 | display: inline-block; 22 | } 23 | } 24 | #summary{ 25 | margin-top: 15px; 26 | } 27 | #detail{ 28 | margin-top: 30px; 29 | margin-bottom: 20px; 30 | .tab-pane { 31 | margin-top: 20px; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/story/index.less: -------------------------------------------------------------------------------- 1 | #storyRenderer{ 2 | @import "story-renderer"; 3 | } 4 | #stories{ 5 | @import "story"; 6 | } 7 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/story/story.less: -------------------------------------------------------------------------------- 1 | #openStories{ 2 | #open-tree-root ol{ 3 | .angular-ui-tree-empty{ 4 | display:none; 5 | } 6 | } 7 | padding-right: 30px; 8 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/todo/index.less: -------------------------------------------------------------------------------- 1 | .opentodolists{ 2 | min-width: 800px; 3 | } 4 | 5 | .todolists-content { 6 | min-width: 600px; 7 | padding: 20px; 8 | } 9 | 10 | .todo-search-panel { 11 | padding-top: 10px; 12 | position: fixed; 13 | right: 0; 14 | z-index: 2; 15 | width: 12.5%; 16 | } 17 | .todo-search-panel .btn-group{ 18 | display: table; 19 | margin: 5px 0; 20 | } 21 | .todo-search-panel .btn-group button{ 22 | width: 120px; 23 | } 24 | 25 | .todo-filter{ 26 | width: 120px; 27 | } 28 | 29 | .todo-search-panel .todo-filter-title{ 30 | font-weight: bold; 31 | font-size: 15px; 32 | } 33 | 34 | .todo-search-panel ul.dropdown-menu { 35 | max-height: 200px; 36 | overflow-y: auto; 37 | } 38 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/company/project/version/index.less: -------------------------------------------------------------------------------- 1 | // imported by project.less 2 | // styles for subview #versions 3 | 4 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/drawer/story-detail.less: -------------------------------------------------------------------------------- 1 | #story-detail{ 2 | .modal-content{ 3 | .modal-header{ 4 | .doIt { 5 | margin-top: -28px; 6 | } 7 | .modal-title input{ 8 | width:75%; 9 | } 10 | } 11 | .control-priority{ 12 | margin-left:28px; 13 | font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Segoe UI", "Microsoft Yahei", Tahoma, Arial, STHeiti, sans-serif; 14 | color:#333; 15 | } 16 | .alert{ 17 | margin-top:10px; 18 | } 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/drawer/todo-detail.less: -------------------------------------------------------------------------------- 1 | 2 | .modal-header{ 3 | padding-left: 50px; 4 | } 5 | 6 | .modal-body { 7 | border-bottom: none; 8 | padding: 40px 30px; 9 | } 10 | 11 | #title{ 12 | margin-bottom: 0; 13 | input{ 14 | font-weight: normal; 15 | box-shadow: none; 16 | border:none; 17 | width: 100%; 18 | } 19 | span{ 20 | text-align: right; 21 | line-height: 29px; 22 | } 23 | } 24 | 25 | hr { 26 | margin: 15px 0; 27 | } 28 | 29 | .fa { 30 | margin-right: 5px; 31 | } 32 | 33 | #footer .btn { 34 | width: 100px; 35 | margin-right: 10px; 36 | } 37 | 38 | .todo_content { 39 | overflow-y: hidden; 40 | width: 90%; 41 | min-height: 28px; 42 | } 43 | 44 | .todolist-dropdown-list{ 45 | max-height: 200px; 46 | overflow-y: auto; 47 | } 48 | 49 | #todo-detail-fields{ 50 | padding: 0 35px; 51 | 52 | .todo-user{ 53 | .username{ 54 | margin-left: 30px; 55 | } 56 | img{ 57 | position: absolute; 58 | top: 50%; 59 | margin-top: -13px; // half of self height 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/drawer/uploaddetail.less: -------------------------------------------------------------------------------- 1 | 2 | .h3-align{ 3 | margin-left: 15px; 4 | } 5 | .creator-up{ 6 | height:50px; 7 | width:50px; 8 | margin-left: 10px; 9 | } 10 | .creator-down{ 11 | height:50px; 12 | width:50px; 13 | margin-top: 25px; 14 | } 15 | .upload-name{ 16 | color: #aa9c84; 17 | margin-left: 20px; 18 | } 19 | 20 | .img-set{ 21 | width: 100px; 22 | margin-left: 35px; 23 | display: inline-block; 24 | border: 1px solid #ccc; 25 | padding: 1px; 26 | box-sizing: border-box; 27 | margin-right: 10px; 28 | } 29 | .tool{ 30 | width: 75px; 31 | padding: 5px 20px 4px 0; 32 | min-height: 21px; 33 | } 34 | .showUploadName{ 35 | margin-left: 8px; 36 | } 37 | .comment{ 38 | padding: 15px 0 8px 0; 39 | border-top: 1px solid #e5e5e5; 40 | } 41 | 42 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/onboard.less: -------------------------------------------------------------------------------- 1 | // 登录后的主css 2 | // imported by /onboard.less 3 | @import "common/index"; 4 | 5 | #drawer { 6 | @import "drawer/index"; 7 | } 8 | 9 | #login, #sign { 10 | @import "login"; 11 | } 12 | 13 | #main-nav { 14 | @import "header"; 15 | } 16 | 17 | #main-content { 18 | margin-top: @nav-height; 19 | 20 | #account { 21 | @import "account/index"; 22 | } 23 | 24 | #company { 25 | @import "company/index"; 26 | } 27 | 28 | #companies { 29 | @import "companies"; 30 | } 31 | } 32 | 33 | @import "spinner"; 34 | 35 | .commit-item-body{ 36 | width:100% 37 | } 38 | 39 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/onboard/spinner.less: -------------------------------------------------------------------------------- 1 | .spinner { 2 | margin: 250px auto; 3 | width: 100px; 4 | color: #11acfa; 5 | } 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/less/plugin/plugin.md: -------------------------------------------------------------------------------- 1 | # plugin less 文件 2 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/alert.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.alert').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('alert/alert.tpl.html', '
 
'); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/alert.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.alert").run(["$templateCache",function(t){t.put("alert/alert.tpl.html",'
 
')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/aside.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.aside').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('aside/aside.tpl.html', ''); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/aside.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.aside").run(["$templateCache",function(t){t.put("aside/aside.tpl.html",'')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/date-formatter.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.helpers.dateFormatter",[]).service("$dateFormatter",["$locale","dateFilter",function(t,e){function r(t){return/(h+)([:\.])?(m+)[ ]?(a?)/i.exec(t).slice(1)}this.getDefaultLocale=function(){return t.id},this.getDatetimeFormat=function(e){return t.DATETIME_FORMATS[e]||e},this.weekdaysShort=function(){return t.DATETIME_FORMATS.SHORTDAY},this.hoursFormat=function(t){return r(t)[0]},this.minutesFormat=function(t){return r(t)[2]},this.timeSeparator=function(t){return r(t)[1]},this.showAM=function(t){return!!r(t)[3]},this.formatDate=function(t,r){return e(t,r)}}]); 9 | //# sourceMappingURL=date-formatter.min.js.map -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/debounce.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.helpers.debounce",[]).factory("debounce",["$timeout",function(n){return function(t,u,r){var e=null;return function(){var a=this,l=arguments,c=r&&!e;return e&&n.cancel(e),e=n(function(){e=null,r||t.apply(a,l)},u,!1),c&&t.apply(a,l),e}}}]).factory("throttle",["$timeout",function(n){return function(t,u,r){var e=null;return r||(r={}),function(){var a=this,l=arguments;e||(r.leading!==!1&&t.apply(a,l),e=n(function(){e=null,r.trailing!==!1&&t.apply(a,l)},u,!1))}}}]); 9 | //# sourceMappingURL=debounce.min.js.map -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/dropdown.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.dropdown').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('dropdown/dropdown.tpl.html', ''); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/dropdown.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.dropdown").run(["$templateCache",function(e){e.put("dropdown/dropdown.tpl.html",'')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/modal.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.modal').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('modal/modal.tpl.html', ''); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/modal.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.modal").run(["$templateCache",function(t){t.put("modal/modal.tpl.html",'')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/navbar.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.navbar",[]).provider("$navbar",function(){var t=this.defaults={activeClass:"active",routeAttr:"data-match-route",strict:!1};this.$get=function(){return{defaults:t}}}).directive("bsNavbar",["$window","$location","$navbar",function(t,a,r){var e=r.defaults;return{restrict:"A",link:function(t,r,n){var i=angular.copy(e);angular.forEach(Object.keys(e),function(t){angular.isDefined(n[t])&&(i[t]=n[t])}),t.$watch(function(){return a.path()},function(t){var a=r[0].querySelectorAll("li["+i.routeAttr+"]");angular.forEach(a,function(a){var r=angular.element(a),e=r.attr(i.routeAttr).replace("/","\\/");i.strict&&(e="^"+e+"$");var n=new RegExp(e,["i"]);n.test(t)?r.addClass(i.activeClass):r.removeClass(i.activeClass)})})}}}]); 9 | //# sourceMappingURL=navbar.min.js.map -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/popover.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.popover').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('popover/popover.tpl.html', '

'); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/popover.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.popover").run(["$templateCache",function(t){t.put("popover/popover.tpl.html",'

')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/raf.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.version.minor<3&&angular.version.dot<14&&angular.module("ng").factory("$$rAF",["$window","$timeout",function(n,e){var a=n.requestAnimationFrame||n.webkitRequestAnimationFrame||n.mozRequestAnimationFrame,t=n.cancelAnimationFrame||n.webkitCancelAnimationFrame||n.mozCancelAnimationFrame||n.webkitCancelRequestAnimationFrame,i=!!a,r=i?function(n){var e=a(n);return function(){t(e)}}:function(n){var a=e(n,16.66,!1);return function(){e.cancel(a)}};return r.supported=i,r}]); 9 | //# sourceMappingURL=raf.min.js.map -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/select.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.select").run(["$templateCache",function(t){t.put("select/select.tpl.html",'')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/tab.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.tab').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('tab/tab.tpl.html', '
'); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/tab.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.tab").run(["$templateCache",function(a){a.put("tab/tab.tpl.html",'
')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/tooltip.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.tooltip').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('tooltip/tooltip.tpl.html', '
'); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/tooltip.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.tooltip").run(["$templateCache",function(t){t.put("tooltip/tooltip.tpl.html",'
')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/typeahead.tpl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | 'use strict'; 9 | 10 | angular.module('mgcrea.ngStrap.typeahead').run(['$templateCache', function($templateCache) { 11 | 12 | $templateCache.put('typeahead/typeahead.tpl.html', ''); 13 | 14 | }]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular-strap/modules/typeahead.tpl.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-strap 3 | * @version v2.1.5 - 2014-12-23 4 | * @link http://mgcrea.github.io/angular-strap 5 | * @author Olivier Louvignes (olivier@mg-crea.com) 6 | * @license MIT License, http://www.opensource.org/licenses/MIT 7 | */ 8 | "use strict";angular.module("mgcrea.ngStrap.typeahead").run(["$templateCache",function(e){e.put("typeahead/typeahead.tpl.html",'')}]); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular/angular-brick.css: -------------------------------------------------------------------------------- 1 | .angular-brick { 2 | } 3 | 4 | .brick-line:before, .angular-brick:before { 5 | content: ' '; 6 | display: block; 7 | } 8 | 9 | .brick-line:after, .angular-brick:after { 10 | content: ' '; 11 | display: block; 12 | clear:both; 13 | } 14 | 15 | .label-text { 16 | float: left; 17 | margin-right: 10px; 18 | color: #7f7f7f; 19 | font-weight: bold; 20 | } 21 | 22 | .brick { 23 | float: left; 24 | height: 22px; 25 | width: 22px; 26 | background: #205123; 27 | border: 1px solid #111; 28 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular/angular-confirm-field.min.js: -------------------------------------------------------------------------------- 1 | angular.module("ng.confirmField",[]).directive("ngConfirmField",function(){return{require:"ngModel",scope:{confirmAgainst:"="},link:function(a,b,c,d){var e=function(){var a=d.$viewValue,b=f();return d.$setValidity("noMatch",b),b?a:void 0},f=function(){return d.$viewValue===a.confirmAgainst};d.$parsers.push(e),a.$watch("confirmAgainst",e)}}}); -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular/version.json: -------------------------------------------------------------------------------- 1 | {"raw":"v1.2.26","major":1,"minor":2,"patch":26,"prerelease":[],"build":[],"version":"1.2.26","codeName":"captivating-disinterest","full":"1.2.26","branch":"v1.2.x","cdn":{"raw":"v1.2.25","major":1,"minor":2,"patch":25,"prerelease":[],"build":[],"version":"1.2.25","isStable":true,"docsUrl":"http://code.angularjs.org/1.2.25/docs"}} -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/angular/version.txt: -------------------------------------------------------------------------------- 1 | 1.2.26 -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/at/jquery.atwho.min.css: -------------------------------------------------------------------------------- 1 | .atwho-view{position:absolute;top:0;left:0;display:none;margin-top:18px;background:#fff;color:#000;border:1px solid #DDD;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.1);min-width:120px;max-height:200px;overflow:auto;z-index:11110!important}.atwho-view .cur{background:#36F;color:#fff}.atwho-view .cur small{color:#fff}.atwho-view strong{color:#36F}.atwho-view .cur strong{color:#fff;font:700}.atwho-view ul{list-style:none;padding:0;margin:auto}.atwho-view ul li{display:block;padding:5px 10px;border-bottom:1px solid #DDD;cursor:pointer}.atwho-view small{font-size:smaller;color:#777;font-weight:400} -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified Chinese translation for bootstrap-datetimepicker 3 | * Yuan Cheung 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['zh-CN'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今日", 13 | suffix: [], 14 | meridiem: ["上午", "下午"] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/bootstrap-markdown/bootstrap-markdown.zh.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Chinese translation for bootstrap-markdown 3 | * benhaile 4 | */ 5 | (function ($) { 6 | $.fn.markdown.messages.zh = { 7 | 'Bold': "粗体", 8 | 'Italic': "斜体", 9 | 'Heading': "标题", 10 | 'URL/Link': "链接", 11 | 'Image': "图片", 12 | 'List': "列表", 13 | 'Unordered List': "无序列表", 14 | 'Ordered List': "有序列表", 15 | 'Code': "代码", 16 | 'Quote': "引用", 17 | 'Preview': "预览", 18 | 'strong text': "粗体", 19 | 'emphasized text': "强调", 20 | 'heading text': "标题", 21 | 'enter link description here': "输入链接说明", 22 | 'Insert Hyperlink': "URL地址", 23 | 'enter image description here': "输入图片说明", 24 | 'Insert Image Hyperlink': "图片URL地址", 25 | 'enter image title here': "在这里输入图片标题", 26 | 'list text here': "这里是列表文本", 27 | 'code text here': "这里输入代码", 28 | 'quote here': "这里输入引用文本" 29 | 30 | 31 | }; 32 | }(jQuery)); 33 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/bootstrap/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/fontawesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/images/glyphicons-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/images/glyphicons-white.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/images/glyphicons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/images/glyphicons.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/less/style.less: -------------------------------------------------------------------------------- 1 | // CSS Reset 2 | @import "reset.less"; 3 | 4 | // Main styles 5 | @import "site.less"; 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons/scripts/modernizr_license.txt: -------------------------------------------------------------------------------- 1 | Modernizr [http://modernizr.com/] is the right micro-library to get you up and running with HTML5 & CSS3 today and it is licensed under the MIT license [http://www.opensource.org/licenses/mit-license.php]. 2 | 3 | You may find its full online version here: http://modernizr.com/license/ -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/images/glyphicons_filetypes-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/images/glyphicons_filetypes-white.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/images/glyphicons_filetypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/images/glyphicons_filetypes.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/less/style.less: -------------------------------------------------------------------------------- 1 | // CSS Reset 2 | @import "reset.less"; 3 | 4 | // Main styles 5 | @import "site.less"; 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_filetypes/scripts/modernizr_license.txt: -------------------------------------------------------------------------------- 1 | Modernizr [http://modernizr.com/] is the right micro-library to get you up and running with HTML5 & CSS3 today and it is licensed under the MIT license [http://www.opensource.org/licenses/mit-license.php]. 2 | 3 | You may find its full online version here: http://modernizr.com/license/ -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/images/glyphicons_halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/images/glyphicons_halflings-white.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/images/glyphicons_halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/images/glyphicons_halflings.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/less/style.less: -------------------------------------------------------------------------------- 1 | // CSS Reset 2 | @import "reset.less"; 3 | 4 | // Main styles 5 | @import "site.less"; 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_halflings/scripts/modernizr_license.txt: -------------------------------------------------------------------------------- 1 | Modernizr [http://modernizr.com/] is the right micro-library to get you up and running with HTML5 & CSS3 today and it is licensed under the MIT license [http://www.opensource.org/licenses/mit-license.php]. 2 | 3 | You may find its full online version here: http://modernizr.com/license/ -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_handbook.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_handbook.pdf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/images/glyphicons_social-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/images/glyphicons_social-white.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/images/glyphicons_social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/images/glyphicons_social.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/less/style.less: -------------------------------------------------------------------------------- 1 | // CSS Reset 2 | @import "reset.less"; 3 | 4 | // Main styles 5 | @import "site.less"; 6 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/glyphicons-pro/glyphicons_social/scripts/modernizr_license.txt: -------------------------------------------------------------------------------- 1 | Modernizr [http://modernizr.com/] is the right micro-library to get you up and running with HTML5 & CSS3 today and it is licensed under the MIT license [http://www.opensource.org/licenses/mit-license.php]. 2 | 3 | You may find its full online version here: http://modernizr.com/license/ -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/glyphicons/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon-.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon-.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.ttf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/icomoon/icomoon.woff -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.eot -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.ttf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/homepage/fonts/onboard-logo/onboard-logo.woff -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/aero.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/aero@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/blue.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/blue@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/flat.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/flat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/flat@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/green.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/green@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/grey.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/grey@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/orange.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/orange@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/pink.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/pink@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/purple.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/purple@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/red.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/red@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/yellow.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/flat/yellow@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/futurico/futurico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/futurico/futurico.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/futurico/futurico@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/futurico/futurico@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/line/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/line/line.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/line/line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/line/line@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/aero.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/aero@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/blue.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/blue@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/green.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/green@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/grey.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/grey@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/minimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/minimal.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/minimal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/minimal@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/orange.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/orange@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/pink.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/pink@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/purple.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/purple@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/red.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/red@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/yellow.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/minimal/yellow@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/polaris/polaris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/polaris/polaris.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/polaris/polaris@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/polaris/polaris@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/aero.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/aero@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/blue.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/blue@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/green.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/green@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/grey.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/grey@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/orange.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/orange@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/pink.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/pink@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/purple.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/purple@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/red.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/red@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/square.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/square@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/square@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/yellow.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/icheck/skins/square/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/icheck/skins/square/yellow@2x.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/jquery-ui/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/less.js/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "less", 3 | "version": "1.7.5", 4 | "main": "./dist/less-1.7.5.js", 5 | "ignore": [ 6 | "**/.*", 7 | "benchmark", 8 | "bin", 9 | "build", 10 | "lib", 11 | "test", 12 | "*.md", 13 | "LICENSE", 14 | "Gruntfile.js", 15 | "package.json", 16 | "bower.json" 17 | ], 18 | "homepage": "https://github.com/less/less.js", 19 | "_release": "1.7.5", 20 | "_resolution": { 21 | "type": "version", 22 | "tag": "v1.7.5", 23 | "commit": "ad19bfe8acebaea71f0414a9f1908d2a2f783c2f" 24 | }, 25 | "_source": "git://github.com/less/less.js.git", 26 | "_target": "~1.7.4", 27 | "_originalSource": "less.js" 28 | } -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/static/lib/zeroclipboard/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/frontend/kernel/src/main/resources/static/lib/zeroclipboard/ZeroClipboard.swf -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/account/ResetResult.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 |

密码重置成功!请重新登录

16 |
17 |
18 |
19 | 20 |
21 | 22 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/account/ss/teacherNotSignedUp.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 10 |
11 |
12 |

您的老师还未注册,请等待老师注册后再登录

13 |
14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/403.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 | 403 10 | 11 |
12 |

13 | 船舱漏水了,快叫人来抢修! 或者 14 | 返回

15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 | 404 10 | 11 |
12 |

13 | 船舱漏水了,快叫人来抢修! 或者 14 | 返回

15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/500.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | Onboard - 500 6 | 7 | 8 |
9 |
10 | 404 11 | 12 |
13 |

14 | 船舱漏水了,快叫人来抢修! 或者 15 | 返回

16 |
17 |
18 |
21 |

22 | 23 |

24 |
    25 |
  • 27 |
  • 28 |
29 |
30 |
31 | 32 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/InvitationTokenInvalid.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 |

OnBoard.im

10 |
11 | 19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/ResetPasswordTokenExpires.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 |

OnBoard.im

10 |
11 | 19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/error/TokenExpires.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 |

OnBoard.im

10 |
11 | 17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/fragments/Header.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/plugin/DrawerSample.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/plugin/TabSample.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/plugin/plugin.md: -------------------------------------------------------------------------------- 1 | # plugin template 文件 2 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/bugs/BugsStats.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/common/CommentImageModal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 13 | 14 | 17 | 18 | 21 | 22 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/iteration/ActiveIterationStatistics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 20 | 21 |
22 | 23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/iteration/Iterations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 |

11 | 迭代 12 | 13 | ——按时间跨度规划任务,定时检查工作进展,确保工作顺利的按时按量完成。 14 | 15 |

16 | 20 |
21 | 22 | 23 |
24 |
25 |
26 |
27 |
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/iteration/LinkIteration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/todo/LinkTodo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/project/version/Versions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 |

TODO: release 子页面

11 |

12 | 该div会被引入到项目页相应的模块。该部分可以有独立的less模块、独立的Angular、独立的js模块 13 |

14 | 15 |
16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/tab/Activity.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 |
14 |

15 | {{activity.creatorName}} 16 |

17 |

{{activity.subject}}

18 |

{{activity.subject}}, {{activity.content}}

19 | 20 |
24 |
25 |
26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/tab/Bug.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 |
8 |

{{todolist.name}}

9 |
    10 |
  • 11 |
12 |
13 | 14 | 15 |
16 | 17 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/tab/Duration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 | 10 | 11 | 12 |
13 |

14 | {{activity.creatorName}} 15 |

16 |

{{activity.subject}}

17 |

{{activity.subject}}, {{activity.content}}

18 |
19 |
20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/tab/TabSet.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 |
12 |
13 |
14 |
15 | 16 | -------------------------------------------------------------------------------- /frontend/kernel/src/main/resources/templates/trial/ApplyResult.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 |
12 |

感谢您关注Onboard

13 |

我们会即时与您联系。如有任何问题,请联系我们

14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /generator/Readme.txt: -------------------------------------------------------------------------------- 1 | 运行以下命令可以重新生成mapper层代码,其中kernel.xml为配置文件,可以自己指定 2 | java -jar org.elevenframework.codegenerator-0.3.4.jar kernel.xml -------------------------------------------------------------------------------- /generator/org.elevenframework.codegenerator-0.3.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/generator/org.elevenframework.codegenerator-0.3.4.jar -------------------------------------------------------------------------------- /kernel/com.onboard.domain.dto/src/main/java/com/onboard/dto/DTO.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.dto; 17 | 18 | import java.io.Serializable; 19 | 20 | public interface DTO extends Serializable { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.mapper.model/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.mapper.model/src/main/java/com/onboard/domain/mapper/model/common/BaseItem.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.domain.mapper.model.common; 17 | 18 | public interface BaseItem { 19 | 20 | Integer getId(); 21 | void setId(Integer id); 22 | 23 | BaseItem copy(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.mapper/src/main/java/com/onboard/domain/mapper/CompanyMapper.java: -------------------------------------------------------------------------------- 1 | package com.onboard.domain.mapper; 2 | 3 | import com.onboard.domain.mapper.base.BaseMapper; 4 | import com.onboard.domain.mapper.model.CompanyExample; 5 | import com.onboard.domain.model.Company; 6 | 7 | public interface CompanyMapper extends BaseMapper { 8 | } 9 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.model/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.model/src/main/java/com/onboard/domain/model/type/Indexable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | 17 | package com.onboard.domain.model.type; 18 | 19 | /** 20 | * 可被索引的对象 21 | * 22 | * @author yewei 23 | * 24 | */ 25 | public interface Indexable extends BaseProjectItem { 26 | } 27 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.model/src/main/java/com/onboard/domain/model/type/ProjectItem.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.domain.model.type; 17 | 18 | public interface ProjectItem extends BaseProjectItem { 19 | 20 | Integer getIdInProject(); 21 | void setIdInProject(Integer id); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /kernel/com.onboard.domain.model/src/main/java/com/onboard/domain/model/type/Typeable.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.domain.model.type; 17 | 18 | public interface Typeable { 19 | 20 | String getType(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/GlobalService.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | public interface GlobalService { 6 | 7 | public HttpSession getSession(); 8 | 9 | public void set(String key, Object object); 10 | 11 | public Object get(String key); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/exception/BadRequestException.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.BAD_REQUEST) 7 | public class BadRequestException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | public BadRequestException() { 12 | 13 | } 14 | 15 | public BadRequestException(String message) { 16 | super(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/exception/InternalServerErrorException.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) 7 | public class InternalServerErrorException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | public InternalServerErrorException() { 12 | 13 | } 14 | 15 | public InternalServerErrorException(String message) { 16 | super(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/exception/ResourceNotFoundException.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.NOT_FOUND) 7 | public class ResourceNotFoundException extends RuntimeException { 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | public ResourceNotFoundException() { 12 | 13 | } 14 | 15 | public ResourceNotFoundException(String message) { 16 | super(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/interceptor/Interceptors.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web.interceptor; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 10 | * @author Ruici 11 | * 12 | */ 13 | @Target({ ElementType.TYPE, ElementType.METHOD }) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Interceptors { 16 | /** 17 | * @return interceptor classes. 18 | */ 19 | @SuppressWarnings("rawtypes") 20 | Class[] value(); 21 | } 22 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/java/org/elevenframework/web/internal/ThreadVariables.java: -------------------------------------------------------------------------------- 1 | package org.elevenframework.web.internal; 2 | 3 | import java.util.HashMap; 4 | 5 | public class ThreadVariables extends HashMap { 6 | 7 | private static final long serialVersionUID = 1L; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /kernel/com.onboard.osgi.dependencies/src/main/resources/META-INF/spring/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.activity.impl/src/main/resources/META-INF/spring/service.activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.collaboration.impl/src/main/resources/templates/attachment-list.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Templates for Thymeleaf Email Support 6 | 7 | 8 | 9 |
    10 |
  • 11 | 13 |
  • 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.common.impl/src/test/resources/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/kernel/com.onboard.service.common.impl/src/test/resources/test.jpg -------------------------------------------------------------------------------- /kernel/com.onboard.service.help.impl/src/main/resources/META-INF/spring/service.helpcenter.osgi.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.notification.impl/src/main/resources/META-INF/spring/service.notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.notification/src/main/resources/com/onboard/service/collaboration/email/vm/attachment-list.vm: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.notification/src/main/resources/com/onboard/service/collaboration/email/vm/email-todosdue.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 21 | 22 | 23 |
5 |

6 | 您的下列任务今天将过期: 7 |

8 |
12 | #foreach ($todo in $todos) 13 | 14 | ${todo.getBelongtos()} 15 | 16 |

17 | ${todo.getContent()} 18 |

19 | #end 20 |
24 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.notification/src/main/resources/com/onboard/service/collaboration/email/vm/upload.vm: -------------------------------------------------------------------------------- 1 | #foreach ($attachment in $attachmentList) 2 | ${attachment.name} 3 | #end 4 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.sampleProject.impl/src/main/resources/com/onboard/service/service/sampleProject/impl/file/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sercxtyf/onboard/98706fd02a9f181c79ab195f8f2e00571402a6d7/kernel/com.onboard.service.sampleProject.impl/src/main/resources/com/onboard/service/service/sampleProject/impl/file/logo.jpg -------------------------------------------------------------------------------- /kernel/com.onboard.service.security.impl/osgi.bnd: -------------------------------------------------------------------------------- 1 | Private-Package: com.onboard.service.security.impl;version=${project.version} 2 | Bundle-RequiredExecutionEnvironment: JavaSE-1.6 -------------------------------------------------------------------------------- /kernel/com.onboard.service.security.impl/src/main/resources/META-INF/spring/service.security.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.security/src/main/java/com/onboard/service/security/interceptors/CompanyAdminRequired.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.service.security.interceptors; 17 | 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | 20 | public interface CompanyAdminRequired extends HandlerInterceptor { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.security/src/main/java/com/onboard/service/security/interceptors/CompanyChecking.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.service.security.interceptors; 17 | 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | 20 | public interface CompanyChecking extends HandlerInterceptor { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.security/src/main/java/com/onboard/service/security/interceptors/CompanyOwnerRequired.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.service.security.interceptors; 17 | 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | 20 | public interface CompanyOwnerRequired extends HandlerInterceptor { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.security/src/main/java/com/onboard/service/security/interceptors/EventCreatorRequired.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.service.security.interceptors; 17 | 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | 20 | public interface EventCreatorRequired extends HandlerInterceptor { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.security/src/main/java/com/onboard/service/security/interceptors/ProjectChecking.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.service.security.interceptors; 17 | 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | 20 | public interface ProjectChecking extends HandlerInterceptor { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.upload.impl/src/main/resources/templates/attachment-list.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Templates for Thymeleaf Email Support 6 | 7 | 8 | 9 |
    10 |
  • 11 | 13 |
  • 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.web.impl/src/main/resources/META-INF/spring/service.web.osgi.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 9 | 12 | 13 | 15 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.web.impl/src/main/resources/META-INF/spring/service.web.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /kernel/com.onboard.service.websocket.impl/src/main/resources/META-INF/spring/websocket.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /kernel/com.onboard.web.api/src/main/java/com/onboard/web/api/form/CommentForm.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright [2015] [Onboard team of SERC, Peking University] 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | package com.onboard.web.api.form; 17 | 18 | import com.onboard.dto.CommentDTO; 19 | 20 | public class CommentForm extends CommentDTO { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kernel/com.onboard.web.api/src/main/resources/WEB-INF/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | 3 | 4 | 5 | onboard.cn REST API 6 | 7 | 8 |

This is Index Site for Onboard REST API

9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /onboard.plan: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /onboard.properties.sample: -------------------------------------------------------------------------------- 1 | mysql.driver=com.mysql.jdbc.Driver 2 | mysql.host=localhost 3 | mysql.port=3306 4 | mysql.name=onboard 5 | mysql.username=root 6 | mysql.password=password 7 | 8 | redis.host=127.0.0.1 9 | redis.port=6379 10 | redis.database=0 11 | 12 | solr.url=http://localhost:8089/solr/mysqlDB 13 | solr.username=admin 14 | solr.password=password 15 | 16 | mailgun.url={Your URL} 17 | mailgun.apikey={Your key} 18 | mailgun.defaultFromName={Your Name} 19 | mailgun.defaultFromAddress={YourEmail@youremail.com} 20 | mailgun.domain={Your Domain} 21 | 22 | upyun.bucketName= 23 | upyun.username=yourname 24 | upyun.password=password 25 | upyun.separator=! 26 | 27 | file.rootPathVariable=user.home 28 | file.folderName=.teamforge_files 29 | 30 | account.tokenExpired=259200 31 | account.rememberMeExpired=2592000 32 | 33 | /*需要每次自动获取IP时修改*/ 34 | site.host=localhost:8000 35 | site.protocol=http:// 36 | site.static.host=localhost:8080 37 | site.static.protocol=http:// 38 | 39 | sshserver.port=22 40 | 41 | data.host=${site.protocol}${site.host} 42 | user.defaultUser=-1 43 | -------------------------------------------------------------------------------- /test/com.onboard.test.utils/osgi.bnd: -------------------------------------------------------------------------------- 1 | Export-Package: com.onboard.test.exampleutils;version=${project.version},\ 2 | com.onboard.test.module;version=${project.version},\ 3 | com.onboard.test.moduleutils;version=${project.version},\ 4 | com.onboard.test.service;version=${project.version},\ 5 | Import-Package: com.onboard.domain.mapper.model,\ 6 | com.onboard.domain.mapper.model.common,\ 7 | * 8 | Bundle-RequiredExecutionEnvironment: JavaSE-1.6 --------------------------------------------------------------------------------