├── views ├── assets │ ├── src │ │ ├── components │ │ │ ├── pusher │ │ │ │ ├── mixin.js │ │ │ │ ├── store.js │ │ │ │ ├── App.js │ │ │ │ ├── settings-tab-menu.vue │ │ │ │ └── router.js │ │ │ ├── importtools │ │ │ │ ├── mixin.js │ │ │ │ ├── store.js │ │ │ │ └── router.js │ │ │ ├── common │ │ │ │ ├── empty.vue │ │ │ │ ├── popper.vue │ │ │ │ └── click-wrap.vue │ │ │ ├── project-files │ │ │ │ ├── store.js │ │ │ │ ├── mixin.js │ │ │ │ ├── router.js │ │ │ │ └── index.vue │ │ │ ├── categories │ │ │ │ ├── store.js │ │ │ │ └── router.js │ │ │ ├── project-lists │ │ │ │ ├── project-search-all.vue │ │ │ │ ├── project-search-by-client.vue │ │ │ │ ├── empty.vue │ │ │ │ ├── project-new-project-btn.vue │ │ │ │ └── mixin.js │ │ │ ├── reports │ │ │ │ └── router.js │ │ │ ├── woo-project │ │ │ │ └── router.js │ │ │ ├── calendar │ │ │ │ └── router.js │ │ │ ├── pro-modules │ │ │ │ └── router.js │ │ │ ├── upgrade │ │ │ │ ├── router.js │ │ │ │ ├── overlay.vue │ │ │ │ └── badge.vue │ │ │ ├── welcome │ │ │ │ └── router.js │ │ │ ├── premium │ │ │ │ └── router.js │ │ │ ├── project-milestones │ │ │ │ ├── index.vue │ │ │ │ ├── date-picker.vue │ │ │ │ └── list.vue │ │ │ ├── project-task-lists │ │ │ │ ├── index.vue │ │ │ │ └── new-task-btn.vue │ │ │ ├── add-ons │ │ │ │ └── router.js │ │ │ ├── progress │ │ │ │ └── router.js │ │ │ ├── privacy │ │ │ │ └── router.js │ │ │ ├── tasks-report │ │ │ │ ├── router.js │ │ │ │ └── menu.vue │ │ │ ├── root │ │ │ │ └── init.vue │ │ │ ├── project-overview │ │ │ │ ├── router.js │ │ │ │ └── store.js │ │ │ ├── project-settings │ │ │ │ └── integrations.vue │ │ │ ├── pro-settings │ │ │ │ ├── page-tab-menu.vue │ │ │ │ └── invoice-tab-menu.vue │ │ │ ├── project-activities │ │ │ │ └── router.js │ │ │ └── settings │ │ │ │ └── store.js │ │ ├── helpers │ │ │ ├── less │ │ │ │ ├── common │ │ │ │ │ └── components │ │ │ │ │ │ ├── form.less │ │ │ │ │ │ ├── card.less │ │ │ │ │ │ └── display.less │ │ │ │ ├── fonts │ │ │ │ │ ├── icomoon.eot │ │ │ │ │ ├── icomoon.ttf │ │ │ │ │ └── icomoon.woff │ │ │ │ ├── project │ │ │ │ │ ├── abstracts │ │ │ │ │ │ ├── vars.less │ │ │ │ │ │ └── mixins.less │ │ │ │ │ ├── pm-project.less │ │ │ │ │ └── components │ │ │ │ │ │ ├── pagination.less │ │ │ │ │ │ └── tooltip.less │ │ │ │ └── images │ │ │ │ │ ├── pm-left-arrow.svg │ │ │ │ │ ├── pm-solid-plus.svg │ │ │ │ │ ├── pm-user.svg │ │ │ │ │ └── pm-enter.svg │ │ │ ├── mixin │ │ │ │ └── module-mixin.js │ │ │ ├── underscore.js │ │ │ ├── global-common-components.js │ │ │ ├── library.js │ │ │ └── menu-fix.js │ │ ├── start.js │ │ └── main.js │ ├── css │ │ ├── jquery-timepicker │ │ │ └── jquery-timepicker.css │ │ ├── images │ │ │ ├── banner.png │ │ │ ├── prettyPhoto │ │ │ │ ├── default │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── sprite_x.png │ │ │ │ │ ├── sprite_y.png │ │ │ │ │ ├── sprite_next.png │ │ │ │ │ ├── sprite_prev.png │ │ │ │ │ └── default_thumb.png │ │ │ │ ├── facebook │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPatternLeft.png │ │ │ │ │ ├── contentPatternTop.png │ │ │ │ │ ├── default_thumbnail.gif │ │ │ │ │ ├── contentPatternBottom.png │ │ │ │ │ └── contentPatternRight.png │ │ │ │ ├── dark_rounded │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPattern.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ ├── dark_square │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPattern.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ ├── light_square │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ └── light_rounded │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ └── attachment.png │ │ ├── icomoon-fonts │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.ttf │ │ │ └── icomoon.woff │ │ ├── flaticon-fonts │ │ │ ├── Flaticon.eot │ │ │ ├── Flaticon.ttf │ │ │ ├── Flaticon.woff │ │ │ └── Flaticon.woff2 │ │ ├── jquery-ui │ │ │ └── images │ │ │ │ ├── loading.gif │ │ │ │ ├── calendar-loading.gif │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_444444_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ ├── ui-icons_555555_256x240.png │ │ │ │ ├── ui-icons_777620_256x240.png │ │ │ │ ├── ui-icons_777777_256x240.png │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ ├── ui-icons_ffffff_256x240.png │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_flat_0_ffffff_40x100.png │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ ├── prettyPhoto │ │ │ │ └── prettyPhoto │ │ │ │ │ ├── facebook │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPatternLeft.png │ │ │ │ │ ├── contentPatternTop.png │ │ │ │ │ ├── default_thumbnail.gif │ │ │ │ │ ├── contentPatternBottom.png │ │ │ │ │ └── contentPatternRight.png │ │ │ │ │ ├── dark_rounded │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPattern.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ │ ├── dark_square │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ ├── contentPattern.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ │ ├── light_rounded │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ │ └── light_square │ │ │ │ │ ├── btnNext.png │ │ │ │ │ ├── loader.gif │ │ │ │ │ ├── sprite.png │ │ │ │ │ ├── btnPrevious.png │ │ │ │ │ └── default_thumbnail.gif │ │ │ │ └── ui-bg_diagonals-small_75_cccccc_40x40.png │ │ ├── pretty-photo │ │ │ └── default │ │ │ │ ├── loader.gif │ │ │ │ ├── sprite.png │ │ │ │ ├── sprite_x.png │ │ │ │ ├── sprite_y.png │ │ │ │ ├── sprite_next.png │ │ │ │ ├── sprite_prev.png │ │ │ │ └── default_thumb.png │ │ ├── fontawesome │ │ │ └── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ ├── Elegant-Loading-Indicator │ │ │ ├── pm-loadin.gif │ │ │ └── pm-loading.gif │ │ ├── v-autocomplete │ │ │ └── v-autocomplete.css │ │ └── nprogress │ │ │ └── nprogress.css │ ├── images │ │ ├── new.png │ │ ├── arrow.png │ │ ├── chart.png │ │ ├── copy.png │ │ ├── docs.png │ │ ├── lock.png │ │ ├── move.png │ │ ├── plus.png │ │ ├── tpbk.png │ │ ├── GitHub.png │ │ ├── active.png │ │ ├── calendar.png │ │ ├── comment.png │ │ ├── complete.png │ │ ├── gravatar.png │ │ ├── loading.gif │ │ ├── notify.png │ │ ├── pm-icon.png │ │ ├── pm-logo.gif │ │ ├── pm-logo.png │ │ ├── triangle.png │ │ ├── attachment.png │ │ ├── icons │ │ │ ├── code.png │ │ │ ├── pdf.png │ │ │ ├── ppt.png │ │ │ ├── text.png │ │ │ ├── 1807138.png │ │ │ ├── _audio.png │ │ │ ├── _code.png │ │ │ ├── _text.png │ │ │ ├── archive.png │ │ │ ├── audio.png │ │ │ ├── default.png │ │ │ ├── video.png │ │ │ ├── _default.png │ │ │ ├── _document.png │ │ │ ├── document.png │ │ │ ├── icon-psd.png │ │ │ ├── _interactive.png │ │ │ ├── _spreadsheet.png │ │ │ ├── interactive.png │ │ │ └── spreadsheet.png │ │ ├── milestones.png │ │ ├── promo-logo.png │ │ ├── to-do-list.png │ │ ├── _bullet_green.png │ │ ├── bullet_green.png │ │ ├── more-loading.gif │ │ ├── pm-logo-pro.png │ │ ├── modules │ │ │ ├── invoice.png │ │ │ ├── sprint.png │ │ │ ├── stripe.png │ │ │ ├── sub-task.png │ │ │ ├── buddy-press.png │ │ │ ├── gantt-chart.png │ │ │ ├── kanban-board.png │ │ │ ├── time-tracker.png │ │ │ ├── woo-project.png │ │ │ ├── custom-fields.png │ │ │ ├── task-recurring.png │ │ │ ├── popup-slider │ │ │ │ ├── slider-1.jpg │ │ │ │ ├── slider-2.jpg │ │ │ │ ├── slider-3.jpg │ │ │ │ └── slider-4.jpg │ │ │ ├── x.svg │ │ │ ├── check.svg │ │ │ ├── diamond.svg │ │ │ └── crown.svg │ │ ├── pro-feature │ │ │ ├── banner.png │ │ │ ├── report-thumb.jpg │ │ │ ├── calendar-thumb.jpg │ │ │ └── progress-thumb.jpg │ │ ├── welcome │ │ │ ├── file-thumb.jpg │ │ │ ├── task-thumb.jpg │ │ │ ├── milestone-thumb.jpg │ │ │ ├── overview-thumb.jpg │ │ │ ├── activities-thumb.jpg │ │ │ ├── discussion-thumb.jpg │ │ │ └── intro-video-bg-image.png │ │ ├── completed-task-center-logo.png │ │ ├── completed-task-header-background.png │ │ ├── check-mark.svg │ │ ├── download.svg │ │ ├── download_hover.svg │ │ ├── close.svg │ │ ├── refresh.svg │ │ ├── minus.svg │ │ ├── crown.svg │ │ ├── active_projects.svg │ │ ├── active_projects_hover.svg │ │ ├── column.svg │ │ ├── Edit_01.svg │ │ ├── edit.svg │ │ ├── list-menu.svg │ │ ├── list-menu-hover.svg │ │ └── done.svg │ └── vendor │ │ ├── vue-fullscreen │ │ └── vue-fullscreen.js │ │ ├── wp-hooks │ │ └── wp-hooks.js │ │ ├── const.js │ │ └── tinymce │ │ └── plugins │ │ └── placeholder │ │ └── plugin.min.js └── project-switch │ └── task-creating.php ├── languages ├── wedevs-project-manager-bn_BD.mo ├── wedevs-project-manager-cs_CZ.mo ├── wedevs-project-manager-de_DE.mo ├── wedevs-project-manager-es_ES.mo ├── wedevs-project-manager-fr_FR.mo ├── wedevs-project-manager-id_ID.mo ├── wedevs-project-manager-nl_NL.mo ├── wedevs-project-manager-pl_PL.mo ├── wedevs-project-manager-pt_BR.mo ├── wedevs-project-manager-sk_SK.mo ├── wedevs-project-manager-tr_TR.mo ├── wedevs-project-manager-zh_CN.mo └── readme.txt ├── src ├── Pusher │ ├── views │ │ └── assets │ │ │ └── images │ │ │ ├── kanban-board.png │ │ │ ├── notification.png │ │ │ ├── column.svg │ │ │ ├── column-hover.svg │ │ │ ├── list-menu.svg │ │ │ └── list-menu-hover.svg │ └── Libs │ │ ├── filter.php │ │ └── function.php ├── Project │ ├── Transformers │ │ ├── Generate_Project_Transformer.php │ │ └── Overview_Graph_Transformer.php │ ├── Sanitizers │ │ ├── Delete_Sanitizer.php │ │ └── Project_Sanitizer.php │ ├── Validators │ │ ├── Create_Project.php │ │ └── Update_Project.php │ └── Project_Status.php ├── Common │ ├── Traits │ │ ├── Assignee_Filter.php │ │ ├── Resource_Editors.php │ │ ├── Last_Activity.php │ │ ├── Request_Filter.php │ │ ├── Model_Events.php │ │ └── Board_Status.php │ ├── Transformers │ │ └── Board_Transformer.php │ └── Models │ │ ├── Board.php │ │ ├── Assignee.php │ │ └── Boardable.php ├── Comment │ └── Validators │ │ ├── Comment_Sanitizer.php │ │ ├── Create_Comment.php │ │ └── Update_Comment.php ├── Imports │ └── Models │ │ └── Import.php ├── Task │ ├── Sanitizers │ │ └── Task_Sanitizer.php │ └── Validators │ │ ├── Create_Task.php │ │ └── Update_Task.php ├── Milestone │ ├── Sanitizers │ │ └── Milestone_Sanitizer.php │ └── Validators │ │ ├── Create_Milestone.php │ │ └── Update_Milestone.php ├── Task_List │ └── Validators │ │ ├── Task_List_Sanitizer.php │ │ ├── Create_Task_List.php │ │ └── Update_Task_List.php ├── Category │ ├── Sanitizers │ │ └── Category_Sanitizer.php │ ├── Validators │ │ ├── Create_Category.php │ │ └── Update_Category.php │ ├── Models │ │ └── Category.php │ └── Transformers │ │ └── Category_Transformer.php ├── Settings │ ├── Sanitizers │ │ └── Task_Type_Sanitizer.php │ ├── Models │ │ ├── Task_Types.php │ │ └── Task_Type_Task.php │ └── Transformers │ │ └── Task_Type_Transformer.php ├── File │ ├── Sanitizers │ │ └── File_Sanitizer.php │ └── Models │ │ └── File.php ├── Role │ ├── Models │ │ └── Role.php │ ├── Validators │ │ ├── Create_Role.php │ │ └── Update_Role.php │ └── Transformers │ │ └── Role_Transformer.php ├── Discussion_Board │ └── Validators │ │ ├── Discussion_Board_Sanitizer.php │ │ ├── Create_Discussion_Board.php │ │ └── Update_Discussion_Board.php ├── Tools │ └── Library │ │ └── PM_ActiveCol.php ├── Activity │ └── Activity_Log.php ├── My_Task │ └── Transformers │ │ └── Project_Transformer.php └── User │ └── Models │ └── User_Role.php ├── core ├── Database │ ├── Migration.php │ ├── Abstract_Migration.php │ ├── Migration_Model.php │ └── Model_Observer.php ├── WP │ ├── Output.php │ └── Register_Scripts.php ├── Permissions │ ├── Administrator.php │ ├── Permission.php │ ├── Settings_Page_Access.php │ ├── Categories_Page_Access.php │ ├── Authentic.php │ ├── Admin.php │ ├── Manager.php │ ├── Project_Create_Capability.php │ ├── Create_Task.php │ ├── Create_File.php │ ├── Create_Milestone.php │ ├── Create_Task_List.php │ ├── Create_Discuss.php │ ├── Abstract_Permission.php │ ├── Edit_File.php │ ├── Project_Settings_Page_Access.php │ ├── Access_Project.php │ ├── Edit_Milestone.php │ ├── Edit_Task_List.php │ ├── Edit_Discuss.php │ ├── Delete_Task.php │ ├── Edit_Task.php │ ├── Edit_Comment.php │ └── Project_Manage_Capability.php ├── Exceptions │ ├── Class_Not_Found.php │ ├── Invalid_Route_Handler.php │ └── Undefined_Method_Call.php ├── Pro │ └── assets │ │ └── images │ │ ├── check.svg │ │ └── crown.svg └── Installer │ └── Installer.php ├── config ├── define.php ├── db.php ├── frontend.php └── app.php ├── codeception.yml ├── routes ├── pusher.php ├── search.php ├── activity.php └── mytask.php ├── libs ├── sanitization-filters.php └── validation-rules.php ├── bootstrap └── start.php └── phpcs-xml └── plugin-check-accessibility.xml /views/assets/src/components/pusher/mixin.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/assets/css/jquery-timepicker/jquery-timepicker.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/assets/src/components/importtools/mixin.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | 4 | } 5 | }; -------------------------------------------------------------------------------- /views/assets/css/images/banner.png: -------------------------------------------------------------------------------- 1 | module.exports = __webpack_public_path__ + "69569174d77b6836c235fd229de0fecc.png"; -------------------------------------------------------------------------------- /views/assets/images/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/new.png -------------------------------------------------------------------------------- /views/assets/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/arrow.png -------------------------------------------------------------------------------- /views/assets/images/chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/chart.png -------------------------------------------------------------------------------- /views/assets/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/copy.png -------------------------------------------------------------------------------- /views/assets/images/docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/docs.png -------------------------------------------------------------------------------- /views/assets/images/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/lock.png -------------------------------------------------------------------------------- /views/assets/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/move.png -------------------------------------------------------------------------------- /views/assets/images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/plus.png -------------------------------------------------------------------------------- /views/assets/images/tpbk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/tpbk.png -------------------------------------------------------------------------------- /views/assets/src/helpers/less/common/components/form.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* multiselect styles */ 4 | .multiselect__tags { 5 | 6 | } -------------------------------------------------------------------------------- /views/assets/vendor/vue-fullscreen/vue-fullscreen.js: -------------------------------------------------------------------------------- 1 | import fullscreen from 'vue-fullscreen' 2 | 3 | Vue.use(fullscreen) 4 | -------------------------------------------------------------------------------- /views/assets/images/GitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/GitHub.png -------------------------------------------------------------------------------- /views/assets/images/active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/active.png -------------------------------------------------------------------------------- /views/assets/images/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/calendar.png -------------------------------------------------------------------------------- /views/assets/images/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/comment.png -------------------------------------------------------------------------------- /views/assets/images/complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/complete.png -------------------------------------------------------------------------------- /views/assets/images/gravatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/gravatar.png -------------------------------------------------------------------------------- /views/assets/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/loading.gif -------------------------------------------------------------------------------- /views/assets/images/notify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/notify.png -------------------------------------------------------------------------------- /views/assets/images/pm-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/pm-icon.png -------------------------------------------------------------------------------- /views/assets/images/pm-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/pm-logo.gif -------------------------------------------------------------------------------- /views/assets/images/pm-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/pm-logo.png -------------------------------------------------------------------------------- /views/assets/images/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/triangle.png -------------------------------------------------------------------------------- /views/assets/images/attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/attachment.png -------------------------------------------------------------------------------- /views/assets/images/icons/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/code.png -------------------------------------------------------------------------------- /views/assets/images/icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/pdf.png -------------------------------------------------------------------------------- /views/assets/images/icons/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/ppt.png -------------------------------------------------------------------------------- /views/assets/images/icons/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/text.png -------------------------------------------------------------------------------- /views/assets/images/milestones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/milestones.png -------------------------------------------------------------------------------- /views/assets/images/promo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/promo-logo.png -------------------------------------------------------------------------------- /views/assets/images/to-do-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/to-do-list.png -------------------------------------------------------------------------------- /views/assets/images/_bullet_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/_bullet_green.png -------------------------------------------------------------------------------- /views/assets/images/bullet_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/bullet_green.png -------------------------------------------------------------------------------- /views/assets/images/icons/1807138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/1807138.png -------------------------------------------------------------------------------- /views/assets/images/icons/_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_audio.png -------------------------------------------------------------------------------- /views/assets/images/icons/_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_code.png -------------------------------------------------------------------------------- /views/assets/images/icons/_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_text.png -------------------------------------------------------------------------------- /views/assets/images/icons/archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/archive.png -------------------------------------------------------------------------------- /views/assets/images/icons/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/audio.png -------------------------------------------------------------------------------- /views/assets/images/icons/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/default.png -------------------------------------------------------------------------------- /views/assets/images/icons/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/video.png -------------------------------------------------------------------------------- /views/assets/images/more-loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/more-loading.gif -------------------------------------------------------------------------------- /views/assets/images/pm-logo-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/pm-logo-pro.png -------------------------------------------------------------------------------- /views/assets/images/icons/_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_default.png -------------------------------------------------------------------------------- /views/assets/images/icons/_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_document.png -------------------------------------------------------------------------------- /views/assets/images/icons/document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/document.png -------------------------------------------------------------------------------- /views/assets/images/icons/icon-psd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/icon-psd.png -------------------------------------------------------------------------------- /views/assets/images/modules/invoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/invoice.png -------------------------------------------------------------------------------- /views/assets/images/modules/sprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/sprint.png -------------------------------------------------------------------------------- /views/assets/images/modules/stripe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/stripe.png -------------------------------------------------------------------------------- /languages/wedevs-project-manager-bn_BD.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-bn_BD.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-cs_CZ.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-cs_CZ.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-de_DE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-de_DE.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-es_ES.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-fr_FR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-fr_FR.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-id_ID.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-id_ID.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-nl_NL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-nl_NL.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-pl_PL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-pl_PL.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-pt_BR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-pt_BR.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-sk_SK.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-sk_SK.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-tr_TR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-tr_TR.mo -------------------------------------------------------------------------------- /languages/wedevs-project-manager-zh_CN.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/languages/wedevs-project-manager-zh_CN.mo -------------------------------------------------------------------------------- /views/assets/css/icomoon-fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/icomoon-fonts/icomoon.eot -------------------------------------------------------------------------------- /views/assets/css/icomoon-fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/icomoon-fonts/icomoon.ttf -------------------------------------------------------------------------------- /views/assets/images/icons/_interactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_interactive.png -------------------------------------------------------------------------------- /views/assets/images/icons/_spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/_spreadsheet.png -------------------------------------------------------------------------------- /views/assets/images/icons/interactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/interactive.png -------------------------------------------------------------------------------- /views/assets/images/icons/spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/icons/spreadsheet.png -------------------------------------------------------------------------------- /views/assets/images/modules/sub-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/sub-task.png -------------------------------------------------------------------------------- /views/assets/images/pro-feature/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/pro-feature/banner.png -------------------------------------------------------------------------------- /views/assets/images/welcome/file-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/welcome/file-thumb.jpg -------------------------------------------------------------------------------- /views/assets/images/welcome/task-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/welcome/task-thumb.jpg -------------------------------------------------------------------------------- /views/assets/css/flaticon-fonts/Flaticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/flaticon-fonts/Flaticon.eot -------------------------------------------------------------------------------- /views/assets/css/flaticon-fonts/Flaticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/flaticon-fonts/Flaticon.ttf -------------------------------------------------------------------------------- /views/assets/css/icomoon-fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/icomoon-fonts/icomoon.woff -------------------------------------------------------------------------------- /views/assets/images/modules/buddy-press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/buddy-press.png -------------------------------------------------------------------------------- /views/assets/images/modules/gantt-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/gantt-chart.png -------------------------------------------------------------------------------- /views/assets/images/modules/kanban-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/kanban-board.png -------------------------------------------------------------------------------- /views/assets/images/modules/time-tracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/time-tracker.png -------------------------------------------------------------------------------- /views/assets/images/modules/woo-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/woo-project.png -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/kanban-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/src/Pusher/views/assets/images/kanban-board.png -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/src/Pusher/views/assets/images/notification.png -------------------------------------------------------------------------------- /views/assets/css/flaticon-fonts/Flaticon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/flaticon-fonts/Flaticon.woff -------------------------------------------------------------------------------- /views/assets/css/flaticon-fonts/Flaticon.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/flaticon-fonts/Flaticon.woff2 -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/loading.gif -------------------------------------------------------------------------------- /views/assets/images/modules/custom-fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/custom-fields.png -------------------------------------------------------------------------------- /views/assets/images/modules/task-recurring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/modules/task-recurring.png -------------------------------------------------------------------------------- /views/assets/images/welcome/milestone-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/welcome/milestone-thumb.jpg -------------------------------------------------------------------------------- /views/assets/images/welcome/overview-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/images/welcome/overview-thumb.jpg -------------------------------------------------------------------------------- /views/assets/src/components/pusher/store.js: -------------------------------------------------------------------------------- 1 | export default { 2 | state: { 3 | 4 | }, 5 | 6 | mutations: { 7 | 8 | } 9 | 10 | }; 11 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/src/helpers/less/fonts/icomoon.eot -------------------------------------------------------------------------------- /views/assets/src/helpers/less/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/src/helpers/less/fonts/icomoon.ttf -------------------------------------------------------------------------------- /src/Project/Transformers/Generate_Project_Transformer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/Database/Migration.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_rounded/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_square/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/light_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/light_square/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_flat_0_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_flat_0_ffffff_40x100.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_rounded/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_rounded/contentPattern.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_square/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_square/contentPattern.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/facebook/contentPatternLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/facebook/contentPatternLeft.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/facebook/contentPatternTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/facebook/contentPatternTop.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/facebook/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/facebook/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/light_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/light_rounded/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /views/assets/vendor/wp-hooks/wp-hooks.js: -------------------------------------------------------------------------------- 1 | import { createHooks } from '@wordpress/hooks'; //Remove this file from grunt. But it will store in github 2 | 3 | window.wedevsPMWPHook = createHooks(); 4 | -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_square/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/facebook/contentPatternBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/facebook/contentPatternBottom.png -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/facebook/contentPatternRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/facebook/contentPatternRight.png -------------------------------------------------------------------------------- /views/assets/src/start.js: -------------------------------------------------------------------------------- 1 | __webpack_public_path__ = PM_Vars.dir_url + 'views/assets/js/'; 2 | 3 | //For IE6 4 | require('es6-promise/auto'); 5 | 6 | require('./main'); 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/dark_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/dark_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/light_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/light_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/images/prettyPhoto/light_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/images/prettyPhoto/light_square/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/loader.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/sprite.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/ui-bg_diagonals-small_75_cccccc_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/ui-bg_diagonals-small_75_cccccc_40x40.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/btnNext.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/btnNext.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/loader.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/sprite.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/btnNext.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/loader.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/sprite.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/loader.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/sprite.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/btnNext.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/loader.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/sprite.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/btnNext.png -------------------------------------------------------------------------------- /config/define.php: -------------------------------------------------------------------------------- 1 | dirname( dirname( __FILE__ ) ), 4 | 'url' => plugin_dir_url( dirname( __FILE__ ) ), 5 | 'view_path' => dirname( dirname( __FILE__ ) ) . '/views', 6 | ]; 7 | 8 | -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/btnPrevious.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/contentPattern.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/contentPattern.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternLeft.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternTop.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/default_thumbnail.gif -------------------------------------------------------------------------------- /core/WP/Output.php: -------------------------------------------------------------------------------- 1 | array( 'id' => array() ) ) ); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/dark_square/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternBottom.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/facebook/contentPatternRight.png -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_square/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/src/components/project-files/store.js: -------------------------------------------------------------------------------- 1 | export default { 2 | state: { 3 | files: [] 4 | }, 5 | mutations: { 6 | setFiles (state, files) { 7 | state.files = files; 8 | } 9 | }, 10 | } -------------------------------------------------------------------------------- /views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weDevsOfficial/wp-project-manager/HEAD/views/assets/css/jquery-ui/images/prettyPhoto/prettyPhoto/light_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /views/assets/vendor/const.js: -------------------------------------------------------------------------------- 1 | pm.Vue = Vue; 2 | pm.Vuex = Vuex; 3 | pm.VueRouter = VueRouter; 4 | pm.Chart = Chart; 5 | pm.Moment = moment; 6 | pm.NProgress = NProgress; 7 | pm.Toastr = toastr; 8 | 9 | 10 | pm.pmObject = {}; 11 | -------------------------------------------------------------------------------- /views/assets/src/helpers/underscore.js: -------------------------------------------------------------------------------- 1 | import * as allUnderscore from 'underscore'; 2 | 3 | if(typeof _ != 'undefined') { 4 | for ( var underscoreProperty in allUnderscore ) { 5 | _[underscoreProperty] = allUnderscore[underscoreProperty]; 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /views/assets/src/components/categories/store.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Make sure to call pm.Vue.use(Vuex) first if using a vuex module system 4 | */ 5 | export default { 6 | 7 | state: { 8 | 9 | }, 10 | mutations: { 11 | 12 | } 13 | }; -------------------------------------------------------------------------------- /views/assets/src/components/project-lists/project-search-all.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /views/assets/src/helpers/global-common-components.js: -------------------------------------------------------------------------------- 1 | //import pmSingleTask from '@components/project-task-lists/single-task.vue'; 2 | export default { 3 | pagination: require('@components/common/pagination.vue'), 4 | datePicker: require('@components/common/date-picker.vue'), 5 | } 6 | -------------------------------------------------------------------------------- /views/assets/src/components/project-lists/project-search-by-client.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Common/Traits/Assignee_Filter.php: -------------------------------------------------------------------------------- 1 | schema(); 10 | } 11 | 12 | abstract public function schema(); 13 | } -------------------------------------------------------------------------------- /views/assets/src/components/calendar/router.js: -------------------------------------------------------------------------------- 1 | import Calendar from '@components/calendar/calendar'; 2 | 3 | weDevsPMRegisterChildrenRoute('project_root', 4 | [ 5 | { 6 | path: '/calendar', 7 | component: Calendar, 8 | name: 'calendar', 9 | }, 10 | ] 11 | ); 12 | -------------------------------------------------------------------------------- /views/assets/src/components/pro-modules/router.js: -------------------------------------------------------------------------------- 1 | import Modules from '@components/pro-modules/modules'; 2 | 3 | weDevsPMRegisterChildrenRoute('project_root', 4 | [ 5 | { 6 | path: '/modules', 7 | component: Modules, 8 | name: 'modules', 9 | }, 10 | ] 11 | ); 12 | -------------------------------------------------------------------------------- /views/assets/src/components/upgrade/router.js: -------------------------------------------------------------------------------- 1 | import Popup from '@components/upgrade/popup'; 2 | 3 | weDevsPMRegisterChildrenRoute('project_root', 4 | [ 5 | { 6 | path: '/pm-upgrade-popup', 7 | component: Popup, 8 | name: 'pm-upgrade-popup', 9 | } 10 | 11 | ] 12 | ); 13 | -------------------------------------------------------------------------------- /src/Project/Sanitizers/Delete_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'absolute', 11 | ]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /languages/readme.txt: -------------------------------------------------------------------------------- 1 | For creating translation file 2 | ============================= 3 | 4 | 1. Copy the "wedevs-project-manager.pot" file to "wedevs-project-manager-.po". e.g: "wedevs-project-manager-fr_FR.po" 5 | 2. Open the "wedevs-project-manager-.po" in "Poedit" software and translate the strings. 6 | -------------------------------------------------------------------------------- /core/Exceptions/Class_Not_Found.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ __( 'Pusher', 'wedevs-project-manager' ) }} 4 | 5 | 6 | 7 | 12 | --> 13 | -------------------------------------------------------------------------------- /src/Comment/Validators/Comment_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'pm_kses', 11 | ]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Pusher/Libs/filter.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | 8 | -------------------------------------------------------------------------------- /core/Exceptions/Undefined_Method_Call.php: -------------------------------------------------------------------------------- 1 | 'trimer|sanitize_text_field', 11 | 'description' => 'trimer|pm_kses', 12 | ]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Milestone/Sanitizers/Milestone_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer|pm_kses', 11 | 'description' => 'trimer|pm_kses', 12 | ]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Task_List/Validators/Task_List_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer|pm_kses', 11 | 'description' => 'trimer|pm_kses', 12 | ]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /views/assets/src/components/pusher/router.js: -------------------------------------------------------------------------------- 1 | weDevsPmRegisterModule('pusher', 'pusher'); 2 | 3 | // import PusherSettings from '@components/settings.vue'; 4 | 5 | // weDevsPMRegisterChildrenRoute('settings_root', 6 | // [ 7 | // { 8 | // path: 'pusher', 9 | // component: PusherSettings, 10 | // name: 'pusher_settings_tab', 11 | // } 12 | // ] 13 | // ) 14 | -------------------------------------------------------------------------------- /config/db.php: -------------------------------------------------------------------------------- 1 | 'mysql', 5 | 'host' => wedevs_pm_config( 'DB_HOST' ), 6 | 'database' => wedevs_pm_config( 'DB_NAME' ), 7 | 'username' => wedevs_pm_config( 'DB_USER' ), 8 | 'password' => wedevs_pm_config( 'DB_PASSWORD' ), 9 | 'charset' => 'utf8mb4', 10 | 'collation' => 'utf8mb4_unicode_ci', 11 | 'prefix' => $wpdb->prefix, 12 | ]; -------------------------------------------------------------------------------- /src/Category/Sanitizers/Category_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer|sanitize_text_field', 11 | 'description' => 'trimer|pm_kses', 12 | ]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/project/components/pagination.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: pagination 3 | */ 4 | 5 | .pm-overview-panel .pm-pagination-wrap { 6 | margin: 0 0 20px !important; 7 | a { 8 | transition: background .3s ease-in; 9 | &.current, 10 | &:hover, 11 | &:focus { 12 | background: @theme-color !important; 13 | } 14 | &.current { 15 | cursor: not-allowed; 16 | opacity: .8; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /views/assets/src/components/upgrade/overlay.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 24 | -------------------------------------------------------------------------------- /src/Settings/Sanitizers/Task_Type_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer|sanitize_text_field', 11 | 'description' => 'trimer|sanitize_text_field', 12 | ]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /views/assets/images/modules/x.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/Permissions/Authentic.php: -------------------------------------------------------------------------------- 1 | ID ) ) { 13 | return false; 14 | } 15 | 16 | return true; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/File/Sanitizers/File_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer|pm_kses', 11 | 'description' => 'trimer|pm_kses', 12 | 'type' => 'trimer|pm_kses', 13 | ]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/common/components/card.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Card; 3 | */ 4 | 5 | .@{theme-prefix}-card { 6 | border-radius: 3px; 7 | padding: 20px; 8 | transition: box-shadow .3s ease-in; 9 | display: block; 10 | height: 100%; 11 | &.@{theme-prefix}-card-default { 12 | background: #fff; 13 | border: 1px solid #ECECEC; 14 | // &:hover { 15 | // box-shadow: 0 4px 10px 0 rgba(0,0,0,0.09); 16 | // } 17 | } 18 | } -------------------------------------------------------------------------------- /views/assets/src/components/project-task-lists/index.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /views/assets/src/components/add-ons/router.js: -------------------------------------------------------------------------------- 1 | // const AddOns = resolve => { 2 | // require.ensure(['./add-ons.vue'], () => { 3 | // resolve(require('./add-ons.vue')); 4 | // }); 5 | // } 6 | 7 | import AddOns from './add-ons.vue' 8 | 9 | weDevsPMRegisterChildrenRoute('project_root', 10 | [ 11 | { 12 | path: '/add-ons', 13 | component: AddOns, 14 | name: 'add-ons', 15 | } 16 | 17 | ] 18 | ); -------------------------------------------------------------------------------- /views/assets/src/components/progress/router.js: -------------------------------------------------------------------------------- 1 | // const Progress = resolve => { 2 | // require.ensure(['./progress.vue'], () => { 3 | // resolve(require('./progress.vue')); 4 | // }); 5 | // } 6 | 7 | import Progress from './progress.vue' 8 | 9 | weDevsPMRegisterChildrenRoute('project_root', 10 | [ 11 | { 12 | path: '/progress', 13 | component: Progress, 14 | name: 'progress', 15 | } 16 | 17 | ] 18 | ); -------------------------------------------------------------------------------- /views/assets/images/check-mark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /routes/pusher.php: -------------------------------------------------------------------------------- 1 | post( 'user/{user_id}/pusher/auth', 'WeDevs\PM\Pusher\Src\Controllers\Pusher_Controller@authentication' ) 12 | ->permission(['WeDevs\PM\Core\Permissions\Authentic']); 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /config/frontend.php: -------------------------------------------------------------------------------- 1 | defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min', 4 | 'patch' => dirname( dirname( __FILE__ ) ), 5 | 'view_path' => dirname( dirname( __FILE__ ) ) . '/views', 6 | 'url' => plugin_dir_url( dirname( __FILE__ ) ), 7 | 'assets_url' => plugin_dir_url( dirname( __FILE__ ) ) . 'views/assets/', 8 | 'path' => plugin_dir_path( __FILE__ ), 9 | 'basename' => basename( dirname( dirname( __FILE__ ) ) ) 10 | ]; 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Project/Transformers/Overview_Graph_Transformer.php: -------------------------------------------------------------------------------- 1 | $item['date_time'], 12 | 'tasks' => $item['tasks'], 13 | 'activities' => $item['activities'], 14 | ]; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Role/Models/Role.php: -------------------------------------------------------------------------------- 1 | 'trimer|sanitize_text_field', 11 | 'description' => 'trimer|pm_kses', 12 | 'status' => 'trimer', 13 | ]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /views/assets/src/components/privacy/router.js: -------------------------------------------------------------------------------- 1 | import TaskListPrivacy from '@components/privacy/task-list-privacy'; 2 | import DiscussionPrivacy from '@components/privacy/discussion-privacy'; 3 | 4 | weDevs_PM_Components.push({ 5 | hook: 'pm_task_list_form', 6 | component: 'pm_task_list_privacy_field', 7 | property: TaskListPrivacy 8 | }); 9 | 10 | weDevs_PM_Components.push({ 11 | hook: 'pm_discuss_form', 12 | component: 'pm_discuss_privacy_field', 13 | property: DiscussionPrivacy 14 | }); 15 | -------------------------------------------------------------------------------- /core/Permissions/Manager.php: -------------------------------------------------------------------------------- 1 | table = wedevs_pm_migrations_table_prefix() . '_migrations'; 12 | 13 | parent::__construct( $attributes ); 14 | } 15 | 16 | protected $fillable = [ 17 | 'id', 18 | 'migration' 19 | ]; 20 | } -------------------------------------------------------------------------------- /src/Category/Validators/Create_Category.php: -------------------------------------------------------------------------------- 1 | __( 'Category title is required.', 'wedevs-project-manager' ), 11 | ]; 12 | } 13 | 14 | public function rules() { 15 | return [ 16 | 'title' => 'required', 17 | ]; 18 | } 19 | } -------------------------------------------------------------------------------- /libs/sanitization-filters.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Common/Traits/Resource_Editors.php: -------------------------------------------------------------------------------- 1 | creator; 11 | return $this->item( $creator, new User_Transformer ); 12 | } 13 | 14 | public function includeUpdater( $item ) { 15 | $updater = $item->updater; 16 | 17 | return $this->item ( $updater, new User_Transformer ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Project/Sanitizers/Project_Sanitizer.php: -------------------------------------------------------------------------------- 1 | 'trimer', 11 | 'title' => 'trimer|sanitize_text_field', 12 | 'description' => 'trimer|sanitize_text_field', 13 | 'status' => 'trimer', 14 | ]; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /views/assets/src/components/importtools/store.js: -------------------------------------------------------------------------------- 1 | export default { 2 | state: { 3 | getIndex: function ( itemList, id, slug) { 4 | var index = false; 5 | 6 | if(typeof itemList === 'undefined') return index; 7 | 8 | itemList.forEach(function(item, key) { 9 | if (item[slug] == id) { 10 | index = key; 11 | } 12 | }); 13 | 14 | return index; 15 | } 16 | }, 17 | 18 | mutations: { 19 | 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /views/assets/images/modules/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Role/Validators/Create_Role.php: -------------------------------------------------------------------------------- 1 | __( 'Role title is required.', 'wedevs-project-manager' ), 11 | ]; 12 | } 13 | 14 | public function rules() { 15 | return [ 16 | 'title' => 'required', 17 | 'description' => 'pm_kses', 18 | ]; 19 | } 20 | } -------------------------------------------------------------------------------- /views/assets/src/components/root/init.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 31 | -------------------------------------------------------------------------------- /src/Settings/Models/Task_Types.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |
6 | 7 | 8 |
9 |
10 |
11 | 12 |
13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /views/assets/src/components/project-overview/router.js: -------------------------------------------------------------------------------- 1 | 2 | // const overview = resolve => { 3 | // require.ensure(['./overview.vue'], () => { 4 | // resolve(require('./overview.vue')); 5 | // }); 6 | // } 7 | 8 | import overview from './overview.vue' 9 | 10 | weDevsPmRegisterModule('projectOverview', 'project-overview'); 11 | 12 | weDevsPMRegisterChildrenRoute('projects', 13 | [ 14 | { 15 | path: ':project_id/overview', 16 | component: overview, 17 | name: 'pm_overview', 18 | }, 19 | ] 20 | ) 21 | 22 | -------------------------------------------------------------------------------- /core/Permissions/Project_Create_Capability.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /views/assets/src/components/project-files/mixin.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | methods: { 4 | getFiles () { 5 | var self = this; 6 | var request = { 7 | url: self.base_url + 'pm/v2/projects/'+self.project_id+'/files', 8 | success (res) { 9 | self.$store.commit( 'projectFiles/setFiles', res.data ); 10 | pm.NProgress.done(); 11 | self.loading = false; 12 | } 13 | }; 14 | self.httpRequest(request); 15 | }, 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /views/assets/images/download.svg: -------------------------------------------------------------------------------- 1 | Download File -------------------------------------------------------------------------------- /routes/search.php: -------------------------------------------------------------------------------- 1 | get( 'search', 'WeDevs\PM\Search\Controllers\Search_Controller@search' ) 11 | ->permission( [ $wedevs_pm_authentic ] ); 12 | 13 | $wedevs_pm_router->get( 'admin-topbar-search', 'WeDevs\PM\Search\Controllers\Search_Controller@searchTopBar' ) 14 | ->permission( [ $wedevs_pm_authentic ] ); 15 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/project/abstracts/mixins.less: -------------------------------------------------------------------------------- 1 | /* 2 | * mixins 3 | */ 4 | 5 | .clearfix{ 6 | zoom:1; 7 | &:before, &:after{ content:""; display:table; } 8 | &:after{ clear: both; } 9 | } 10 | 11 | @context-size: 16; 12 | .rem( @target, @context: @context-size ) { 13 | font-size: (@target / @context) + 0rem; 14 | } 15 | 16 | .pm-bubble-border(@top: 100%, @right: 5.5px) { 17 | content: ""; 18 | position: absolute; 19 | top: @top; 20 | right: @right; 21 | z-index: 999; 22 | border-top: 6px solid #000; 23 | border-left: 5px solid transparent; 24 | border-right: 5px solid transparent; 25 | } -------------------------------------------------------------------------------- /src/Role/Transformers/Role_Transformer.php: -------------------------------------------------------------------------------- 1 | (int) $item->id, 13 | 'title' => $item->title, 14 | 'description' => $item->description, 15 | 'created_at' => wedevs_pm_format_date( $item->created_at ), 16 | 'slug' => $item->slug 17 | ]; 18 | } 19 | } -------------------------------------------------------------------------------- /views/assets/images/download_hover.svg: -------------------------------------------------------------------------------- 1 | Download File Hover -------------------------------------------------------------------------------- /views/assets/src/components/importtools/router.js: -------------------------------------------------------------------------------- 1 | //weDevsPmProRegisterModule('importtools', 'importtools'); 2 | 3 | import Mixin from './mixin'; 4 | 5 | PmProMixin.projectSettings = Mixin; 6 | 7 | // const settingsContent = resolve => { 8 | // require.ensure(['./content.vue'], () => { 9 | // resolve(require('./content.vue')); 10 | // }); 11 | // } 12 | 13 | import importtools from './content.vue'; 14 | 15 | 16 | weDevsPMRegisterChildrenRoute('project_root', 17 | [ 18 | { 19 | path: '/importtools', 20 | name: 'importtools', 21 | component: importtools, 22 | } 23 | ] 24 | ); 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /views/assets/images/close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Comment/Validators/Create_Comment.php: -------------------------------------------------------------------------------- 1 | __( 'Comment title is required.', 'wedevs-project-manager' ), 11 | 'project_id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 12 | ]; 13 | } 14 | 15 | public function rules() { 16 | return [ 17 | 'content' => 'required', 18 | 'project_id' => 'required' 19 | ]; 20 | } 21 | } -------------------------------------------------------------------------------- /core/Permissions/Create_Task.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 11 | 12 | $pm_task_create_permission = apply_filters( 'wedevs_pm_check_permission', true, $project_id, 'create_task' ); 13 | 14 | if ( $pm_task_create_permission ) { 15 | return true; 16 | } 17 | 18 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Pusher/Libs/function.php: -------------------------------------------------------------------------------- 1 | 'create-task', //Event 12 | 'task_update' => 'update-task', //Event 13 | 'new_comment' => 'new-comment', //Event 14 | 'message_create' => 'create-message', //Event 15 | 'message_update' => 'update-message', //Event 16 | ]; 17 | } 18 | 19 | function wedevs_pm_pusher_get_event( $event_key ) { 20 | 21 | $events = wedevs_pm_pusher_events(); 22 | 23 | return $events[$event_key]; 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/Task_List/Validators/Create_Task_List.php: -------------------------------------------------------------------------------- 1 | __( 'Task list title is required.', 'wedevs-project-manager' ), 11 | 'project_id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 12 | ]; 13 | } 14 | 15 | public function rules() { 16 | return [ 17 | 'title' => 'required', 18 | 'project_id' => 'required', 19 | ]; 20 | } 21 | } -------------------------------------------------------------------------------- /src/Milestone/Validators/Create_Milestone.php: -------------------------------------------------------------------------------- 1 | __( 'Milestone title is required.', 'wedevs-project-manager' ), 11 | 'project_id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 12 | ]; 13 | } 14 | 15 | public function rules() { 16 | return [ 17 | 'title' => 'required', 18 | 'project_id' => 'required' 19 | ]; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/Permissions/Create_File.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 11 | 12 | $pm_file_create_permission = apply_filters( 'wedevs_pm_check_permission', true, $project_id, 'create_file' ); 13 | 14 | if ( $pm_file_create_permission ) { 15 | return true; 16 | } 17 | 18 | return new \WP_Error( 'project', __( "You have no permission to create message.", "wedevs-project-manager" ) ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Common/Traits/Last_Activity.php: -------------------------------------------------------------------------------- 1 | where('resource_id', $resource_id) 15 | ->orderBy('created_at', 'desc') 16 | ->first(); 17 | 18 | $item = new Item( $activity, new Activity_Transformer ); 19 | 20 | return $this->get_response($item); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /core/Permissions/Create_Milestone.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 11 | 12 | $pm_milestone_create_permission = apply_filters( 'wedevs_pm_check_permission', true, $project_id, 'create_milestone' ); 13 | 14 | if ( $pm_milestone_create_permission ) { 15 | return true; 16 | } 17 | 18 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /core/Permissions/Create_Task_List.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 12 | 13 | $pm_task_list_create_permission = apply_filters( 'wedevs_pm_check_permission', true, $project_id, 'create_list' ); 14 | 15 | if ( $pm_task_list_create_permission ) { 16 | return true; 17 | } 18 | 19 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /routes/activity.php: -------------------------------------------------------------------------------- 1 | get( 'projects/{project_id}/activities', 'WeDevs/PM/Activity/Controllers/Activity_Controller@index' ) 12 | ->permission( [ $wedevs_pm_access_project ] ); 13 | 14 | $wedevs_pm_router->get( 'activities', 'WeDevs/PM/Activity/Helper/Activity@get_activities' ) 15 | ->permission( [ $wedevs_pm_authentic ] ); 16 | -------------------------------------------------------------------------------- /src/Discussion_Board/Validators/Create_Discussion_Board.php: -------------------------------------------------------------------------------- 1 | __( 'Discussion title is required.', 'wedevs-project-manager' ), 11 | 'project_id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 12 | ]; 13 | } 14 | 15 | public function rules() { 16 | return [ 17 | 'title' => 'required', 18 | 'project_id' => 'required' 19 | ]; 20 | } 21 | } -------------------------------------------------------------------------------- /views/assets/src/components/project-lists/project-new-project-btn.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /src/Settings/Transformers/Task_Type_Transformer.php: -------------------------------------------------------------------------------- 1 | (int) $item->id, 16 | 'title' => $item->title, 17 | 'description' => $item->description, 18 | 'type' => $item->type, 19 | 'status' => $item->status 20 | ]; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /views/assets/src/components/project-settings/integrations.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 27 | 28 | 33 | -------------------------------------------------------------------------------- /views/assets/images/modules/diamond.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/Permissions/Create_Discuss.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 12 | 13 | $pm_discussion_create_permission = apply_filters( 'wedevs_pm_check_permission', wedevs_pm_is_user_in_project( $project_id ), $project_id, 'create_message' ); 14 | 15 | if ( $pm_discussion_create_permission ) { 16 | return true; 17 | } 18 | 19 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Common/Traits/Request_Filter.php: -------------------------------------------------------------------------------- 1 | get_params() as $key => $value ) { 20 | if ( $value !== '') { 21 | $data[$key] = $value; 22 | } 23 | } 24 | 25 | return $data; 26 | } 27 | } -------------------------------------------------------------------------------- /src/Category/Models/Category.php: -------------------------------------------------------------------------------- 1 | belongsToMany( 'WeDevs\PM\Project\Models\Project', wedevs_pm_tb_prefix() . 'pm_category_project', 'category_id', 'project_id' ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Task/Validators/Create_Task.php: -------------------------------------------------------------------------------- 1 | __( 'Task title is required.', 'wedevs-project-manager' ), 11 | 'project_id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 12 | 'project_id.numeric' => __( 'Project ID shoud be numeric.', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'project_id' => 'required|numeric', 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Task/Validators/Update_Task.php: -------------------------------------------------------------------------------- 1 | __( 'Task title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Task ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Task ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /views/assets/images/refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Tools/Library/PM_ActiveCol.php: -------------------------------------------------------------------------------- 1 | token = new Token($token, $url); 23 | $this->client = new Client($this->token); 24 | } 25 | 26 | public function getProject($id){ 27 | return $this->client->get('/projects/'.$id)->getJson(); 28 | } 29 | 30 | public function getItem($item){ 31 | return $this->client->get($item)->getJson(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /views/assets/src/components/project-files/router.js: -------------------------------------------------------------------------------- 1 | // const files = resolve => { 2 | // require.ensure(['./files.vue'], () => { 3 | // resolve(require('./files.vue')); 4 | // }); 5 | // } 6 | 7 | weDevsPmRegisterModule('projectFiles', 'project-files'); 8 | 9 | import files from './files.vue'; 10 | 11 | weDevsPMRegisterChildrenRoute('projects', 12 | [ 13 | { 14 | path: ':project_id/files', 15 | component: files, 16 | name: 'pm_files', 17 | children: wedevsPMGetRegisterChildrenRoute('pm_files') 18 | }, 19 | ] 20 | ) 21 | 22 | // export default { 23 | // path: ':project_id/files', 24 | // component: index, 25 | // name: 'pm_files', 26 | // children: wedevsPMGetRegisterChildrenRoute('pm_files') 27 | // } 28 | // 29 | -------------------------------------------------------------------------------- /src/Category/Validators/Update_Category.php: -------------------------------------------------------------------------------- 1 | __( 'Category title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Category ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Category ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Comment/Validators/Update_Comment.php: -------------------------------------------------------------------------------- 1 | __( 'Comment title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Comment ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Comment ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'content' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Common/Transformers/Board_Transformer.php: -------------------------------------------------------------------------------- 1 | (int) $item->id, 20 | 'title' => $item->title, 21 | 'description' => $item->description, 22 | 'board_type' => $item->type, 23 | 'created_at' => wedevs_pm_format_date( $item->created_at ), 24 | ]; 25 | } 26 | } -------------------------------------------------------------------------------- /src/Milestone/Validators/Update_Milestone.php: -------------------------------------------------------------------------------- 1 | __( 'Milestone title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Milestone ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Milestone ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Task_List/Validators/Update_Task_List.php: -------------------------------------------------------------------------------- 1 | __( 'Task list title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Task list ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Task list ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Activity/Activity_Log.php: -------------------------------------------------------------------------------- 1 | getName(); 14 | $resource_short_name = $reflector->getShortName(); 15 | 16 | $observer = str_replace( 17 | "Models\\{$resource_short_name}", 18 | "Observers\\", 19 | $resource_name 20 | ); 21 | 22 | $observer .= $resource_short_name . "_Observer"; 23 | 24 | if ( class_exists( $observer ) ) { 25 | (new $observer)->handle( $resource, $act ); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Role/Validators/Update_Role.php: -------------------------------------------------------------------------------- 1 | __( 'Role title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Role ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Role ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'description' => 'pm_kses', 20 | 'id' => 'required|gtz', //Greater than zero (gtz) 21 | ]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Common/Traits/Model_Events.php: -------------------------------------------------------------------------------- 1 | getFillable(); 13 | 14 | foreach ( $attribute_values as $key => $value ) { 15 | if ( in_array( $key, $fillable ) ) { 16 | $this->$key = $value; 17 | } 18 | } 19 | 20 | $this->save(); 21 | } 22 | 23 | public function creator() { 24 | return $this->belongsTo( 'WeDevs\PM\User\Models\User', 'created_by' ); 25 | } 26 | 27 | public function updater() { 28 | return $this->belongsTo( 'WeDevs\PM\User\Models\User', 'updated_by' ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /views/assets/src/components/project-files/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 32 | -------------------------------------------------------------------------------- /src/Discussion_Board/Validators/Update_Discussion_Board.php: -------------------------------------------------------------------------------- 1 | __( 'Discussion title is required.', 'wedevs-project-manager' ), 11 | 'id.required' => __( 'Discussion ID is required.', 'wedevs-project-manager' ), 12 | 'id.gtz' => __( 'Discussion ID must be greater than zero', 'wedevs-project-manager' ), 13 | ]; 14 | } 15 | 16 | public function rules() { 17 | return [ 18 | 'title' => 'required', 19 | 'id' => 'required|gtz', //Greater than zero (gtz) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/My_Task/Transformers/Project_Transformer.php: -------------------------------------------------------------------------------- 1 | tasks; 21 | $transfomer = new Task_Transformer(); 22 | $transfomer = $transfomer->setDefaultIncludes(['assignees']); 23 | 24 | return $this->collection( $tasks, $transfomer); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/images/pm-left-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Shape 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/images/pm-solid-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | + 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | + 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Project/Validators/Create_Project.php: -------------------------------------------------------------------------------- 1 | __( 'Project title is required.', 'wedevs-project-manager' ), 11 | 'title.pm_unique' => __( 'Project title must be unique.', 'wedevs-project-manager' ), 12 | ]; 13 | } 14 | 15 | public function rules() { 16 | 17 | if ( apply_filters( 'wedevs_pm_check_project_title_unique', true ) ) { 18 | return [ 19 | 'title' => 'required|pm_unique:Project,title', 20 | ]; 21 | } 22 | 23 | return [ 24 | 'title' => 'required', 25 | ]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /views/assets/images/minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/assets/src/components/common/click-wrap.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | 15 | 16 | 41 | 42 | -------------------------------------------------------------------------------- /src/Common/Models/Board.php: -------------------------------------------------------------------------------- 1 | hasMany( 'WeDevs\PM\Common\Models\Meta', 'entity_id' ) 29 | ->whereIn( 'entity_type', [ 'milestone', 'task_list', 'discussion_board' ] ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /core/Installer/Installer.php: -------------------------------------------------------------------------------- 1 | run(); 12 | 13 | $was_installed_before = get_option( 'pm_db_version', false ); 14 | 15 | if ( ! $was_installed_before ) { 16 | set_transient( '_pm_setup_page_redirect', true, 30 ); 17 | } 18 | 19 | $this->set_admin_capability(); 20 | } 21 | 22 | function set_admin_capability() { 23 | 24 | $admin_users = get_users( [ 'role' => 'Administrator' ] ); 25 | 26 | if ( $admin_users ) { 27 | foreach ( $admin_users as $admin_user ) { 28 | $admin_user->add_cap( wedevs_pm_admin_cap_slug() ); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Common/Models/Assignee.php: -------------------------------------------------------------------------------- 1 | belongsTo( 'WeDevs\PM\User\Models\User', 'assigned_to' ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /bootstrap/start.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/User/Models/User_Role.php: -------------------------------------------------------------------------------- 1 | assigned_by = 1; 25 | } ); 26 | 27 | static::updating( function ( $model ) { 28 | $model->assigned_by = 1; 29 | } ); 30 | } 31 | 32 | function role() { 33 | return $this->hasOne( 'WeDevs\PM\Role\Models\Role', 'id', 'role_id' ); 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /core/Permissions/Abstract_Permission.php: -------------------------------------------------------------------------------- 1 | request = $request; 24 | } 25 | 26 | /** 27 | * Check for a specific permission. 28 | * 29 | * @return boolean (true if operation is permitted; otherwise false). 30 | */ 31 | abstract public function check(); 32 | } 33 | -------------------------------------------------------------------------------- /core/Pro/assets/images/crown.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/assets/src/main.js: -------------------------------------------------------------------------------- 1 | import '@helpers/less/pm-style.less' 2 | import router from '@router/router' 3 | import store from '@store/store' 4 | import '@directives/directive' 5 | import Mixin from '@helpers/mixin/mixin' 6 | import ModuleMixin from '@helpers/mixin/module-mixin' 7 | import App from './App.vue' 8 | import '@helpers/common-components' 9 | import menuFix from '@helpers/menu-fix'; 10 | 11 | window.pmBus = new Vue(); 12 | 13 | Vue.config.devtools = true; 14 | 15 | /** 16 | * Project template render 17 | */ 18 | var PM_Vue = { 19 | el: `#${PM_Vars.id}`, 20 | store, 21 | router, 22 | render: t => t(App), 23 | moduleMixins: ModuleMixin 24 | } 25 | 26 | Vue.mixin(Mixin); 27 | 28 | new Vue(PM_Vue); 29 | 30 | // fix the admin menu for the slug "vue-app" 31 | menuFix('pm_projects'); 32 | 33 | //Always load in the bottom of the code 34 | import '@helpers/underscore' 35 | 36 | 37 | -------------------------------------------------------------------------------- /views/assets/images/modules/crown.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /routes/mytask.php: -------------------------------------------------------------------------------- 1 | get( 'users/{id}/user-activities', 'WeDevs/PM/My_Task/Controllers/MyTask_Controller@user_activities' ) 9 | ->permission(['WeDevs\PM\Core\Permissions\Authentic']); 10 | 11 | $wedevs_pm_router->get( 'users/{id}/tasks', 'WeDevs/PM/My_Task/Controllers/MyTask_Controller@user_tasks_by_type' ) 12 | ->permission(['WeDevs\PM\Core\Permissions\Authentic']); 13 | 14 | $wedevs_pm_router->get( 'users/{id}/tasks/calender', 'WeDevs/PM/My_Task/Controllers/MyTask_Controller@user_calender_tasks' ) 15 | ->permission(['WeDevs\PM\Core\Permissions\Authentic']); 16 | 17 | $wedevs_pm_router->get( 'assigned_users', 'WeDevs/PM/My_Task/Controllers/MyTask_Controller@assigned_users' ) 18 | ->permission(['WeDevs\PM\Core\Permissions\Authentic']); 19 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/project/components/tooltip.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Tooltip; 3 | */ 4 | .pm-has-tooltip { 5 | position: relative; 6 | .pm-tooltip-label { 7 | display: block; 8 | position: absolute; 9 | bottom: 100%; 10 | margin-bottom: 8px; 11 | left: 50%; 12 | min-width: 50px; 13 | line-height: 100%; 14 | opacity: 0; 15 | visibility: hidden; 16 | transform: translate(-50%, -20%); 17 | transition: all .3s ease-in-out; 18 | z-index: 999; 19 | background: #000; 20 | color: #fff; 21 | padding: 8px 10px; 22 | white-space: nowrap; 23 | border-radius: @theme-border-radius; 24 | .rem(11); 25 | &:after { 26 | .pm-bubble-border(@right: 50%); 27 | transform: translate(50%, 0); 28 | border-bottom-color: #000; 29 | } 30 | } 31 | &:hover { 32 | .pm-tooltip-label { 33 | opacity: 1; 34 | visibility: visible; 35 | transform: translate(-50%, 0); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /views/assets/images/active_projects.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /config/app.php: -------------------------------------------------------------------------------- 1 | 'Project Manager', 5 | 'slug' => 'pm', 6 | 'version' => PM_VERSION, 7 | 'api' => '2', 8 | 'db_version' => '2.5', 9 | 'text_domain' => 'pm', 10 | 'comment_per_page' => 200, 11 | 'allowed_html' => [ 12 | 'a' => [ 'href' => [], 'title' => [] ], 13 | 'br' => [], 14 | 'em' => [], 15 | 'strong' => [], 16 | 'span' => [ 17 | 'style' => [], 18 | 'class' => [], 19 | 'id' => [], 20 | 'data-pm-user-id' => [], 21 | 'data-pm-user' => [], 22 | 'name' => [], 23 | 'title' => [] 24 | ], 25 | 'b' => [], 26 | 'em' => [], 27 | 'p' => [], 28 | 'code' => [], 29 | 'pre' => [], 30 | ] 31 | ]; 32 | -------------------------------------------------------------------------------- /views/assets/images/active_projects_hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /views/assets/vendor/tinymce/plugins/placeholder/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("placeholder",function(a){a.on("init",function(){function d(){!a.settings.readonly==!0&&c.hide(),a.execCommand("mceFocus",!1)}function e(){""==a.getContent()?c.show():c.hide()}function f(){c.hide()}var c=new b;e(),tinymce.DOM.bind(c.el,"click",d),a.on("focus",d),a.on("blur",e),a.on("change",e),a.on("setContent",e),a.on("keydown",f)});var b=function(){var b=a.getElement().getAttribute("placeholder")||a.settings.placeholder,c=a.settings.placeholder_attrs||{style:{position:"absolute",top:"5px",left:0,color:"#888",padding:"1%",width:"98%",overflow:"hidden","white-space":"pre-wrap"}},d=a.getContentAreaContainer();tinymce.DOM.setStyle(d,"position","relative"),this.el=tinymce.DOM.add(d,a.settings.placeholder_tag||"label",c,b)};b.prototype.hide=function(){tinymce.DOM.setStyle(this.el,"display","none")},b.prototype.show=function(){tinymce.DOM.setStyle(this.el,"display","")}}); -------------------------------------------------------------------------------- /views/assets/images/column.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /views/assets/src/components/pro-settings/page-tab-menu.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 30 | 31 | 50 | -------------------------------------------------------------------------------- /core/Permissions/Edit_File.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'file_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $file = File::find( $id ); 23 | if ( $file && $file->created_by == $user_id ){ 24 | return true; 25 | } 26 | 27 | } 28 | 29 | return new \WP_Error( 'File', __( "You have no permission.", "wedevs-project-manager" ) ); 30 | } 31 | } -------------------------------------------------------------------------------- /src/Common/Models/Boardable.php: -------------------------------------------------------------------------------- 1 | where( 'board_type', $board_type ) 27 | ->where( 'boardable_type', $boardable_type ) 28 | ->orderBy( 'order', 'DESC' ) 29 | ->first(); 30 | return $boardable ? $boardable->order : 0; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /views/assets/src/components/pro-settings/invoice-tab-menu.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 30 | 31 | 50 | -------------------------------------------------------------------------------- /views/assets/src/components/project-milestones/date-picker.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/common/components/display.less: -------------------------------------------------------------------------------- 1 | // 2 | // Display 3 | // 4 | 5 | .@{theme-prefix}-display-none { display: none !important; } 6 | .@{theme-prefix}-display-inline { display: inline !important; } 7 | .@{theme-prefix}-display-inline-block { display: inline-block !important; } 8 | .@{theme-prefix}-display-block { display: block !important; } 9 | .@{theme-prefix}-display-table { display: table !important; } 10 | .@{theme-prefix}-display-table-row { display: table-row !important; } 11 | .@{theme-prefix}-display-table-cell { display: table-cell !important; } 12 | .@{theme-prefix}-display-flex { display: flex !important; } 13 | .@{theme-prefix}-display-inline-flex { display: inline-flex !important; } 14 | 15 | .@{theme-prefix}-hidden-sm { 16 | @media (max-width: 767px){ 17 | display: none !important; 18 | } 19 | } 20 | .@{theme-prefix}-hidden-lg { 21 | @media (min-width: 768px){ 22 | display: none !important; 23 | } 24 | } -------------------------------------------------------------------------------- /core/Permissions/Project_Settings_Page_Access.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 13 | 14 | if ( empty( $user_id ) || empty( $project_id ) ) { 15 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 16 | } 17 | 18 | if ( wedevs_pm_user_can_access( wedevs_pm_manager_cap_slug() ) ) { 19 | return true; 20 | } 21 | 22 | if ( wedevs_pm_is_manager( $project_id, $user_id ) ) { 23 | return true; 24 | } 25 | 26 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /views/assets/src/components/project-lists/mixin.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data () { 3 | return { 4 | 5 | } 6 | }, 7 | computed: { 8 | ...pm.Vuex.mapState('projectLists', 9 | { 10 | projects_view: state => state.projects_view, 11 | } 12 | ), 13 | 14 | isFetchProjects () { 15 | return this.$store.state.projectLists.isFetchProjects; 16 | } 17 | }, 18 | methods: { 19 | 20 | activeClass(view){ 21 | if ( view == this.projects_view ) { 22 | return view; 23 | } 24 | 25 | //return this.$store.state.projects_view === view; 26 | }, 27 | 28 | projects_view_class (){ 29 | return 'grid_view' === this.projects_view ? 'pm-project-grid': 'pm-project-list' 30 | }, 31 | 32 | projectFetchStatus (status) { 33 | this.$store.commit( 'projectLists/projectFetchComplete', status ); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /views/assets/src/components/project-overview/store.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Make sure to call pm.Vue.use(Vuex) first if using a vuex module system 4 | */ 5 | export default { 6 | 7 | state: { 8 | meta: {}, 9 | assignees: [], 10 | graph: [], 11 | newlyCreated: {}, 12 | fetchOverview: false, 13 | getIndex: function ( itemList, id, slug) { 14 | var index = false; 15 | 16 | itemList.forEach(function(item, key) { 17 | if (item[slug] == id) { 18 | index = key; 19 | } 20 | }); 21 | 22 | return index; 23 | }, 24 | }, 25 | 26 | mutations: { 27 | setOverViews (state, over_views) { 28 | state.meta = over_views.meta.data; 29 | state.assignees = over_views.assignees.data; 30 | state.graph = over_views.overview_graph.data; 31 | state.fetchOverview = true; 32 | } 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /core/Permissions/Access_Project.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 16 | 17 | if ( empty($project_id) ) { 18 | $project_id = $this->request->get_param( 'id' ); 19 | } 20 | 21 | // $user_id = $this->request->get_param( 'user_id' ); 22 | // $user_id = empty( $user_id ) ? 0 : intval( $user_id ); 23 | 24 | if ( wedevs_pm_user_can( 'view_project', $project_id ) ) { 25 | return true; 26 | } 27 | 28 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/images/pm-user.svg: -------------------------------------------------------------------------------- 1 | User 3 -------------------------------------------------------------------------------- /core/Permissions/Edit_Milestone.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'milestone_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $milestone = Milestone::find( $id ); 23 | 24 | if ( $milestone && $milestone->created_by == $user_id ){ 25 | return true; 26 | } 27 | 28 | } 29 | 30 | return new \WP_Error( 'Milestone', __( "You have no permission.", "wedevs-project-manager" ) ); 31 | } 32 | } -------------------------------------------------------------------------------- /core/Permissions/Edit_Task_List.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'task_list_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $task_list = Task_List::find( $id ); 23 | 24 | if ( $task_list && $task_list->created_by == $user_id ){ 25 | return true; 26 | } 27 | 28 | } 29 | 30 | return new \WP_Error( 'TaskList', __( "You have no permission.", "wedevs-project-manager" ) ); 31 | } 32 | } -------------------------------------------------------------------------------- /core/Permissions/Edit_Discuss.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'discussion_board_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $discuss = Discussion_Board::find( $id ); 23 | 24 | if ( $discuss && $discuss->created_by == $user_id ){ 25 | return true; 26 | } 27 | 28 | } 29 | 30 | return new \WP_Error( 'Discuss', __( "You have no permission.", "wedevs-project-manager" ) ); 31 | } 32 | } -------------------------------------------------------------------------------- /views/assets/images/Edit_01.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /views/assets/src/helpers/library.js: -------------------------------------------------------------------------------- 1 | __webpack_public_path__ = PM_Vars.dir_url + 'views/assets/js/'; 2 | 3 | import Fragment from 'vue-fragment' 4 | Vue.use(Fragment.Plugin) 5 | 6 | pm.hooks = (wp && wp.hooks) ? wp.hooks : wedevsPMWPHook; 7 | 8 | var color = require('vue-color/src/components/Sketch.vue'); 9 | pm.color = color.default; 10 | pm.Multiselect = require('vue-multiselect'); 11 | 12 | var commonComp = require('./global-common-components'); 13 | pm.commonComponents = commonComp.default; 14 | 15 | Vue.use(VTooltip); 16 | 17 | import Lists from '@components/project-task-lists/mixin' 18 | import Mixins from '@helpers/mixin/mixin' 19 | import Settings from '@components/settings/mixin' 20 | import SingleTask from '@components/project-task-lists/single-task.vue'; 21 | // import listpage from '@components/project-task-lists/lists.vue'; 22 | 23 | pm.SingleTask = SingleTask; 24 | 25 | PmMixin.projectTaskLists = Lists; 26 | PmMixin.mixins = Mixins; 27 | PmMixin.settings = Settings; 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /core/Permissions/Delete_Task.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'project_id' ); 14 | $task_id = $this->request->get_param( 'task_id' ); 15 | $task = Task::where( 'id', $task_id )->where( 'project_id', $project_id )->first(); 16 | 17 | if ( isset( $task->created_by ) && (int) $task->created_by === $user_id ) { 18 | return true; 19 | } 20 | 21 | $pm_task_delete_permission = apply_filters( 'wedevs_pm_check_permission', true, $project_id, 'create_task' ); 22 | 23 | if ( ! $pm_task_delete_permission ) { 24 | return false; 25 | } 26 | 27 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /views/assets/images/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/Permissions/Edit_Task.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'task_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $task = Task::with('assignees') 23 | ->where('id', $id) 24 | ->first(); 25 | 26 | if ( isset( $task->created_by ) && $task->created_by == $user_id ){ 27 | return true; 28 | } 29 | 30 | } 31 | 32 | return new \WP_Error( 'Task', __( "You have no permission.", "wedevs-project-manager" ) ); 33 | } 34 | } -------------------------------------------------------------------------------- /src/Project/Validators/Update_Project.php: -------------------------------------------------------------------------------- 1 | __( 'Project title is required.', 'wedevs-project-manager' ), 11 | 'title.pm_unique' => __( 'Project title must be unique.', 'wedevs-project-manager' ), 12 | 'id.required' => __( 'Project ID is required.', 'wedevs-project-manager' ), 13 | 'id.gtz' => __( 'Project ID must be greater than zero', 'wedevs-project-manager' ), 14 | ]; 15 | } 16 | 17 | public function rules() { 18 | $id = $this->request->get_param( 'id' ); 19 | 20 | if(is_array( $id )) { 21 | return []; 22 | } 23 | 24 | return [ 25 | 'title' => 'required|pm_unique:Project,title,'.$id, 26 | 'id' => 'required|gtz', //Greater than zero (gtz) 27 | ]; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /views/assets/src/helpers/menu-fix.js: -------------------------------------------------------------------------------- 1 | /** 2 | * As we are using hash based navigation, hack fix 3 | * to highlight the current selected menu 4 | * 5 | * Requires jQuery 6 | */ 7 | var menuFix = function (slug) { 8 | var $ = jQuery; 9 | 10 | let menuRoot = $('#toplevel_page_' + slug); 11 | let currentUrl = window.location.href; 12 | let currentPath = currentUrl.substr( currentUrl.indexOf('admin.php') ); 13 | 14 | menuRoot.on('click', 'a', function() { 15 | var self = $(this); 16 | 17 | $('ul.wp-submenu li', menuRoot).removeClass('current'); 18 | 19 | if ( self.hasClass('wp-has-submenu') ) { 20 | $('li.wp-first-item', menuRoot).addClass('current'); 21 | } else { 22 | self.parents('li').addClass('current'); 23 | } 24 | }); 25 | 26 | $('ul.wp-submenu a', menuRoot).each(function(index, el) { 27 | if ( $(el).attr( 'href' ) === currentPath ) { 28 | $(el).parent().addClass('current'); 29 | return; 30 | } 31 | }); 32 | } 33 | 34 | export default menuFix; 35 | -------------------------------------------------------------------------------- /core/Permissions/Edit_Comment.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'comment_id' ); 13 | $project_id = $this->request->get_param( 'project_id' ); 14 | $user_id = get_current_user_id(); 15 | 16 | if ( $user_id ) { 17 | 18 | if ( $project_id && wedevs_pm_has_project_managing_capability( $project_id, $user_id ) ) { 19 | return true; 20 | } 21 | 22 | $comment = Comment::find( $id ); 23 | 24 | if ( !empty( $comment->created_by ) ) { 25 | if ( $comment->created_by == $user_id ){ 26 | return true; 27 | } 28 | } 29 | } 30 | 31 | return new \WP_Error( 'Comment', __( "You have no permission.", "wedevs-project-manager" ) ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /core/Permissions/Project_Manage_Capability.php: -------------------------------------------------------------------------------- 1 | request->get_param( 'id' ); 12 | 13 | if ( empty( $project_id ) ) { 14 | $project_id = $this->request->get_param( 'project_id' ); 15 | } 16 | 17 | if ( empty( $user_id ) || empty( $project_id ) ) { 18 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 19 | } 20 | 21 | if ( wedevs_pm_user_can_access( wedevs_pm_manager_cap_slug() ) ) { 22 | return true; 23 | } 24 | 25 | if ( wedevs_pm_is_manager( $project_id, $user_id ) ) { 26 | return true; 27 | } 28 | 29 | return new \WP_Error( 'project', __( "You have no permission.", "wedevs-project-manager" ) ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Common/Traits/Board_Status.php: -------------------------------------------------------------------------------- 1 | 'archived', 9 | 1 => 'current', 10 | 2 => 'complete', 11 | ]; 12 | 13 | 14 | public function getStatusAttribute( $value ) { 15 | $value = isset( $value ) ? (int) $value : 1; 16 | 17 | if ( array_key_exists( $value, self::$status ) ) { 18 | return self::$status[(int) $value]; 19 | } 20 | 21 | return self::$status[1]; 22 | } 23 | 24 | public function setStatusAttribute( $value ) { 25 | $value = strtolower( $value ); 26 | $key = array_search( $value, self::$status ); 27 | 28 | if ( array_key_exists( $value, self::$status ) ) { 29 | $this->attributes['status'] = $value; 30 | } else { 31 | $this->attributes['status'] = $key; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/column.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /views/assets/src/components/categories/router.js: -------------------------------------------------------------------------------- 1 | weDevsPmRegisterModule('projectCategories', 'categories'); 2 | 3 | // const categories = resolve => { 4 | // require.ensure(['./categories.vue'], () => { 5 | // resolve(require('./categories.vue')); 6 | // }); 7 | // } 8 | 9 | import categories from './categories.vue'; 10 | 11 | weDevsPMRegisterChildrenRoute('project_root', 12 | [ 13 | { 14 | path: '/categories', 15 | component: categories, 16 | name: 'categories', 17 | meta: { 18 | permission: function(project) { 19 | return pmHasManageCapability() 20 | }, 21 | label: __('Categories', 'wedevs-project-manager'), 22 | order: 2, 23 | }, 24 | children: [ 25 | { 26 | path: 'pages/:current_page_number', 27 | component: categories, 28 | name: 'category_pagination', 29 | }, 30 | ] 31 | } 32 | 33 | ] 34 | ); 35 | -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/column-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /views/assets/src/helpers/less/images/pm-enter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Shape Copy 3 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /views/assets/src/components/project-activities/router.js: -------------------------------------------------------------------------------- 1 | 2 | weDevsPmRegisterModule('projectActivities', 'project-activities'); 3 | 4 | // const activities_route = resolve => { 5 | // require.ensure(['./activities.vue'], () => { 6 | // resolve(require('./activities.vue')); 7 | // }); 8 | // } 9 | 10 | import activities_route from './activities.vue' 11 | 12 | weDevsPMRegisterChildrenRoute('projects', 13 | [ 14 | { 15 | path: ':project_id/activities/', 16 | component: activities_route, 17 | name: 'activities', 18 | children: [ 19 | { 20 | path: 'pages/:current_page_number', 21 | component: activities_route, 22 | name: 'activities_pagination', 23 | }, 24 | { 25 | path: 'tasks/:task_id', 26 | components: { 27 | singleTask: pm.SingleTask 28 | }, 29 | name: 'activity_single_task', 30 | }, 31 | ] 32 | } 33 | ] 34 | ); 35 | 36 | -------------------------------------------------------------------------------- /phpcs-xml/plugin-check-accessibility.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WordPress Plugin Check - Accessibility Category Rules 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | warning 13 | 14 | 15 | 16 | 17 | warning 18 | 19 | 20 | 21 | 22 | warning 23 | 24 | 25 | 26 | 27 | warning 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /views/assets/css/nprogress/nprogress.css: -------------------------------------------------------------------------------- 1 | #nprogress{pointer-events:none;}#nprogress .bar{background:#29d;position:fixed;z-index:105;top:0;left:0;width:100%;height:2px;}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px);}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px;}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite;}.nprogress-custom-parent{overflow:hidden;position:relative;}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute;}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);}}@keyframes nprogress-spinner{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}} -------------------------------------------------------------------------------- /views/assets/src/components/upgrade/badge.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 36 | 37 | 58 | -------------------------------------------------------------------------------- /src/File/Models/File.php: -------------------------------------------------------------------------------- 1 | hasOne( 'WeDevs\PM\Comment\Models\Comment', 'id', 'fileable_id'); 30 | } 31 | 32 | public function meta() { 33 | return $this->hasMany( 'WeDevs\PM\Common\Models\Meta', 'entity_id' )->where('entity_type', 'file'); 34 | } 35 | 36 | public function children() { 37 | return $this->hasMany( $this, 'parent' ); 38 | } 39 | 40 | 41 | 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /core/WP/Register_Scripts.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 13 | 14 |
15 | 16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 | {{ getProgressPercent( list ) }}% 24 |
25 |
26 |
27 | 28 | 29 | 37 | -------------------------------------------------------------------------------- /src/Category/Transformers/Category_Transformer.php: -------------------------------------------------------------------------------- 1 | (int) $item->id, 20 | 'title' => $item->title, 21 | 'description' => $item->description, 22 | 'categorible_type' => $item->categorible_type, 23 | 'created_at' => wedevs_pm_format_date( $item->created_at ), 24 | ]; 25 | } 26 | 27 | /** 28 | * Getter for defaultIncludes. 29 | * 30 | * @return array 31 | */ 32 | public function getDefaultIncludes() 33 | { 34 | return apply_filters( "wedevs_pm_category_transformer_default_includes", $this->defaultIncludes ); 35 | } 36 | } -------------------------------------------------------------------------------- /views/assets/images/list-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /views/assets/images/list-menu-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/list-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/Pusher/views/assets/images/list-menu-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /views/assets/src/components/tasks-report/menu.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 45 | -------------------------------------------------------------------------------- /src/Project/Project_Status.php: -------------------------------------------------------------------------------- 1 | 'incomplete', 9 | 1 => 'complete', 10 | 2 => 'pending', 11 | 3 => 'archived' 12 | ]; 13 | 14 | public function getStatusAttribute( $value ) { 15 | $value = (int) $value; 16 | 17 | if (array_key_exists($value, self::$status)) { 18 | return self::$status[(int)$value]; 19 | } 20 | 21 | return self::$status[0]; 22 | } 23 | 24 | public function setStatusAttribute( $value ) { 25 | $value = strtolower( $value ); 26 | $key = array_search( $value, self::$status ); 27 | 28 | if ( array_key_exists( $value, self::$status ) ) { 29 | $this->attributes['status'] = $value; 30 | } else { 31 | $this->attributes['status'] = $key; 32 | } 33 | } 34 | 35 | public function setEstCompletionDateAttribute( $date ) { 36 | $this->attributes['est_completion_date'] = wedevs_pm_make_carbon_date( $date ); 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /core/Database/Model_Observer.php: -------------------------------------------------------------------------------- 1 | $act( $resource ); 12 | } 13 | } 14 | 15 | public function call_attribute_methods( $resource ) { 16 | $fillable_attributes = $resource->getFillable(); 17 | $old = $resource->getOriginal(); 18 | $new = $resource->getAttributes(); 19 | 20 | foreach ( $fillable_attributes as $attribute ) { 21 | if ( !isset( $old[$attribute] ) ) { 22 | continue; 23 | } 24 | 25 | if ( !isset( $new[$attribute] ) ) { 26 | continue; 27 | } 28 | if ( $old[$attribute] != $new[$attribute] && method_exists( $this, $attribute ) ) { 29 | $this->$attribute( $resource, $old[$attribute] ); 30 | } 31 | } 32 | } 33 | 34 | abstract protected function created( $resource ); 35 | 36 | abstract protected function updated( $resource ); 37 | } 38 | -------------------------------------------------------------------------------- /views/assets/images/done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /libs/validation-rules.php: -------------------------------------------------------------------------------- 1 | array( 'min_range' => 1 ) 22 | ); 23 | 24 | if( filter_var( $value, FILTER_VALIDATE_INT, $filter_options ) !== FALSE) { 25 | return true; 26 | } 27 | 28 | return false; 29 | } 30 | 31 | function wedevs_pm_unique ($value, $args) { 32 | // Listing all the variables 33 | list($model, $collumn) = $args; 34 | if ( empty( $collumn ) ) { 35 | $collumn = 'title'; 36 | } 37 | 38 | 39 | $id = empty( $args[2] ) ? 0 : intval( $args[2] ); 40 | 41 | 42 | $calssname = "WeDevs\PM\\" .$model. "\\Models\\" .$model; 43 | if ( class_exists( $calssname ) ) { 44 | return ! $calssname::where($collumn, $value )->where('id', '!=', $id)->exists(); 45 | } 46 | 47 | return true; 48 | } 49 | -------------------------------------------------------------------------------- /views/assets/src/components/project-task-lists/new-task-btn.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | -------------------------------------------------------------------------------- /views/assets/src/components/settings/store.js: -------------------------------------------------------------------------------- 1 | var Store = { 2 | state: { 3 | taskTypes: [], 4 | getIndex: function ( itemList, id, slug) { 5 | var index = false; 6 | 7 | itemList.forEach(function(item, key) { 8 | if (item[slug] == id) { 9 | index = key; 10 | } 11 | }); 12 | 13 | return index; 14 | }, 15 | }, 16 | 17 | mutations: { 18 | setTaskTypes ( state, taskTypes ) { 19 | state.taskTypes = [ ...taskTypes ]; 20 | }, 21 | 22 | setTaskType ( state, taskType ) { 23 | state.taskTypes.push( taskType ); 24 | }, 25 | 26 | updateTaskType ( state, taskType ) { 27 | var index = state.getIndex(state.taskTypes, taskType.id, 'id'); 28 | 29 | state.taskTypes.splice( index, 1, taskType ); 30 | }, 31 | 32 | deleteTaskType ( state, id ) { 33 | var index = state.getIndex(state.taskTypes, parseInt(id), 'id'); 34 | 35 | state.taskTypes.splice( index, 1 ); 36 | }, 37 | } 38 | } 39 | 40 | export default Store; 41 | --------------------------------------------------------------------------------