Compare commits

...

167 Commits

Author SHA1 Message Date
Thilina
f44b9ec8dd Merge branch 'release/v30.0.0.OS' 2021-06-28 11:48:05 +02:00
Thilina
ad4fe1cc29 Update release notes 2021-06-28 11:46:49 +02:00
Thilina
8fbf8f2152 Update S3 settings 2021-06-28 10:58:39 +02:00
Thilina
74309fc922 compiled assets and connection module 2021-06-28 08:14:48 +02:00
Thilina
a042ee67ec Add missing classes 2021-06-28 08:14:01 +02:00
Thilina
41ebd61c8e Updates to package json 2021-06-27 18:13:40 +02:00
Thilina
111781b327 Improve naming in custom fields 2021-06-27 18:12:26 +02:00
Thilina
74e448bf5d Add clientBaseUrl and download PDF 2021-06-27 18:12:01 +02:00
Thilina
66b3f006e6 Improve naming in custom fields 2021-06-27 18:07:18 +02:00
Thilina
40df433580 Show viewable files based on extension 2021-06-27 18:06:24 +02:00
Thilina
499c52516e Add connection module to gulp 2021-06-27 18:05:05 +02:00
Thilina
e94a365d71 Just empty spaces 2021-06-27 18:03:57 +02:00
Thilina
e88f5f8a1a Deny access to data directory in development environment 2021-06-27 18:03:23 +02:00
Thilina
c0ce41ed2f Fix typo 2021-06-27 18:01:09 +02:00
Thilina
944d5f1f88 Fix code style issue 2021-06-27 17:49:24 +02:00
Thilina
47871d9551 Add connection module 2021-06-27 17:49:05 +02:00
Thilina
46e3bf439e Fix type in setting 2021-06-27 17:45:45 +02:00
Thilina
b858a62d42 Module builder improvements 2021-06-27 17:45:09 +02:00
Thilina
6da42b4842 Fix issue with non UTF employee names and allow secure file downloads 2021-06-27 17:44:24 +02:00
Thilina
b7b128f9a7 Getting sysdata and checking subordinates 2021-06-27 17:42:39 +02:00
Thilina
7a9f7ec36e Fix usort warning 2021-06-27 17:41:27 +02:00
Thilina
a7218a6666 Update migration list 2021-06-27 17:40:18 +02:00
Thilina
87dc692faa Migration for adding system data table 2021-06-27 17:40:05 +02:00
Thilina
042180b805 Migration for setting AWS region via settings 2021-06-27 17:39:45 +02:00
Thilina
49a22ebdf0 Add migration for S3 settings 2021-06-27 17:39:22 +02:00
Thilina
f1d4b3915e Fix SAML user redirection issue 2021-06-27 17:36:31 +02:00
Thilina
b4bec17934 Update lib files 2021-06-27 17:35:35 +02:00
Thilina
24db01729d Define client base url for each module adapter 2021-06-27 17:10:42 +02:00
Thilina
b4fc0db4de Get AWS region from settings 2021-06-27 17:09:25 +02:00
Thilina
c00fb95319 Download files securely 2021-06-27 17:09:00 +02:00
Thilina
142395591e Generated PDF download action and the data file download wrapper 2021-06-27 17:08:16 +02:00
Thilina
235924f80b Remove unwanted log 2021-06-27 17:02:53 +02:00
Thilina
8f8034556a Fix showing leave tab when its not needed 2021-06-27 17:01:55 +02:00
Thilina
f12a467099 Deny calls to icehrm/core (for nginx need to set location rules) 2021-06-27 16:59:13 +02:00
Thilina
91c2c32c0c File upload fix from react components 2021-06-27 16:58:18 +02:00
Thilina
aacff040bb During the installation set directory permission of data directory to 755 2021-06-27 16:56:04 +02:00
Thilina
e889b856bc Fix extensions loading issue 2021-06-27 16:51:53 +02:00
Thilina
548df6f408 Add eslintrc 2021-06-27 16:50:34 +02:00
Thilina
2ca9eaa083 Soft fix to prevent directory listing 2021-06-27 16:48:38 +02:00
Alan Cell
3eaf290a58 Fix employee filed not loading issue 2021-05-07 08:16:06 +02:00
Alan Cell
c276009bd8 Update release notes 2021-05-07 08:11:21 +02:00
Alan Cell
ea93d4604c Release notes 2021-04-05 20:36:47 +02:00
Alan Cell
caf41de755 Merge tag 'v29.0.0.OS' into develop
v29.0.0.OS
2021-04-05 19:12:59 +02:00
Alan Cell
45d80e9440 Merge branch 'release/v29.0.0.OS' 2021-04-05 19:12:59 +02:00
Alan Cell
bb8f11963a Fix code style 2021-04-05 19:01:58 +02:00
Alan Cell
6581d1424e Merge tag 'v29.0.0.OS' into develop
v29.0.0.OS
2021-04-05 18:53:55 +02:00
Alan Cell
253b298b0d Merge branch 'release/v29.0.0.OS' 2021-04-05 18:53:54 +02:00
Alan Cell
df554680c4 Sync changes v29.0.0 from IceHrmPro (https://icehrm.com/purchase-icehrmpro) 2021-04-05 18:52:23 +02:00
Gamonoid
92032cf1eb Update readme.md 2021-01-12 19:55:00 +01:00
Gamonoid
22cd81611d Add applity 2020-12-20 20:32:30 +01:00
Alan Cell
1a3e468458 Fix displaying wring generated profile image for in staff directory 2020-11-14 19:37:18 +01:00
Alan Cell
88962d4380 Merge branch 'release/v28.2.0.OS' 2020-11-13 02:46:51 +01:00
Alan Cell
3b1285aeaf Merge tag 'v28.2.0.OS' into develop
v28.2.0.OS
2020-11-13 02:46:51 +01:00
Alan Cell
b73e244865 Production build, release notes and version update for v28.2.0 2020-11-13 02:45:48 +01:00
Alan Cell
5f050282f0 Update readme and change delete label for employees 2020-11-13 02:43:40 +01:00
Alan Cell
f1dcc6b6a0 Merge branch 'release/v28.1.1.OS' 2020-11-07 12:52:02 +01:00
Alan Cell
e5eccf32a7 Merge tag 'v28.1.1.OS' into develop
v28.1.1.OS
2020-11-07 12:52:02 +01:00
Alan Cell
b6c0256b49 Update production build 2020-11-07 12:37:11 +01:00
Alan Cell
e31bf5a4b9 Fix api issues and production build 2020-11-07 12:25:12 +01:00
Alan Cell
06a3172a38 Merge branch 'release/v28.1.1.OS' 2020-11-07 11:46:23 +01:00
Alan Cell
e74ca00902 Merge tag 'v28.1.1.OS' into develop
v28.1.1.OS
2020-11-07 11:46:23 +01:00
Alan Cell
28aa16f35c Update version 2020-11-07 11:45:05 +01:00
Alan Cell
fb3b5b562e Merge branch 'release/v28.1.1.OS' 2020-11-07 11:41:24 +01:00
Alan Cell
8663a7aff1 Merge tag 'v28.1.1.OS' into develop
v28.1.1.OS
2020-11-07 11:41:24 +01:00
Alan Cell
e9baf45d7c Production build + fixing code style issues 2020-11-06 20:08:07 +01:00
Alan Cell
2abe52963f Imitate the REST api using url parameter based implementation
Reason for this implementation is some clients having trouble configuring the rest api either due to not having proper access to the webserver in a shared hosting environment or security restrictions. But still from icehrm frontend we need to consume the backend rest api.
2020-11-06 20:00:53 +01:00
Alan Cell
da55c7a2d2 Ability to delete files from S3 2020-11-06 19:41:56 +01:00
Alan Cell
5cd7963f6f Implement password change for employee profile 2020-11-06 19:38:48 +01:00
Alan Cell
d986a2b5bb Fix issue: employee not be selected when filtering employee documents 2020-11-06 19:32:52 +01:00
Alan Cell
1ee4fb4ba1 Update vagrant file 2020-11-06 19:23:05 +01:00
Alan Cell
b06780c466 Fix issue with time-sheets module nit being able to load projects 2020-11-06 18:51:46 +01:00
Alan Cell
5ec497e11d Upgrade vagrant config 2020-11-06 18:41:39 +01:00
Alan Cell
df3b6e968a Update vagrant 2020-11-06 09:46:20 +01:00
Thilina Pituwala
3ceb427479 Fix ci build 2020-11-01 10:17:04 +01:00
Thilina Pituwala
d3b4748cba Remove in lage in readme 2020-11-01 02:37:33 +01:00
Thilina Pituwala
2a9e65d8a8 Remove php5.6 from travis 2020-11-01 02:31:57 +01:00
Thilina Pituwala
4887d89c69 Fix migration for candidates 2020-11-01 02:13:21 +01:00
Thilina Pituwala
e555f4f70d Release notes 2020-11-01 02:03:11 +01:00
Thilina Pituwala
eec946acae Merge tag 'v28.1.0.OS' into develop
v28.1.0.OS
2020-11-01 01:56:25 +01:00
Thilina Pituwala
58240f7d25 Merge branch 'release/v28.1.0.OS' 2020-11-01 01:56:16 +01:00
Thilina Pituwala
d9c645c5d8 Final test 2020-10-31 23:52:01 +01:00
Thilina Pituwala
294c5bc657 Update readme 2020-10-31 23:44:07 +01:00
Thilina Pituwala
0bdee3f4c4 Update readme 2020-10-31 23:41:44 +01:00
Thilina Pituwala
4b75bdb0ee Update readme with images 2020-10-31 23:40:19 +01:00
Thilina Pituwala
587a950011 Disable instance verification 2020-10-31 23:32:13 +01:00
Thilina Pituwala
d354fa4104 ignore web node modules 2020-10-31 19:13:45 +01:00
Thilina Pituwala
0e3ea90bf5 Merge branch 'develop' of github.com:gamonoid/icehrm into develop 2020-10-31 19:03:55 +01:00
Thilina Pituwala
b1df0037db License updated to GPLv3
🧲 New features
Custom user role permissions
Employee edit form updated
Employee daily task list
Attendance and employee distribution charts on dashboard
Improvements to company structure and company assets module
Improved tables for displaying data in several modules
Faster data loading (specially for employee module)
Initials based profile pictures
Re-designed login page
Re-designed user profile page
Improvements to filtering
New REST endpoints for employee qualifications

🐛 Bug fixes
Fixed, issue with managers being able to create performance reviews for employees who are not their direct reports
Fixed, issues related to using full profile image instead of using smaller version of profile image
Changing third gender to other
Improvements and fixes for internal frontend data caching
2020-10-31 19:02:37 +01:00
Thilina Hasantha
0c5a505d9e Fix docker build issue 2020-06-24 06:49:06 +02:00
Thilina Hasantha
86b8345505 Fix Api filtering by parameter 2020-06-16 06:26:04 +02:00
Thilina Pituwala
cdac95bc0e Merge tag 'v27.0.2.OS' into develop
v27.0.2.OS
2020-06-10 02:06:25 +02:00
Thilina Pituwala
8bb61ef4e0 Merge branch 'release/v27.0.2.OS' 2020-06-10 02:06:25 +02:00
Thilina Pituwala
22a6f47c8c Update version to v27.0.2.OS 2020-06-10 02:05:41 +02:00
Thilina Pituwala
7decc9d810 Merge branch 'develop' of github.com:gamonoid/icehrm into develop 2020-06-10 02:04:18 +02:00
Thilina Pituwala
c65bdbbfb3 Fix broken filtering | fix photo attendance | add vagrant development environment 2020-06-10 02:03:44 +02:00
Thilina Hasantha
a245826ae7 Fix code style issues 2020-06-03 06:06:17 +02:00
Thilina Hasantha
80c3b23ce5 Add ref link 2020-06-03 05:41:16 +02:00
Thilina Hasantha
65ef379219 Update version, show icehrm pro info only to admin users 2020-06-03 05:22:17 +02:00
Thilina Pituwala
61ef77a31f Merge tag 'v27.0.1.OS' into develop
v27.0.1.OS
2020-06-02 08:31:59 +02:00
Thilina Pituwala
5f38c8e723 Merge branch 'release/v27.0.1.OS' 2020-06-02 08:31:59 +02:00
Thilina Pituwala
ca7c767ebf Fix key verification 2020-06-02 08:31:13 +02:00
Thilina Pituwala
6d2244ef29 Merge branch 'release/v27.0.0.OS' 2020-06-01 12:33:40 +02:00
Thilina Pituwala
14a5b88e48 Merge tag 'v27.0.0.OS' into develop
v27.0.0.OS
2020-06-01 12:33:40 +02:00
Thilina Pituwala
3cf5e4ef91 Fix php 5.6 issue 2020-06-01 12:32:12 +02:00
Thilina Pituwala
b8299b5c57 Merge tag 'v27.0.0.OS' into develop
v27.0.0.OS
2020-06-01 09:28:25 +02:00
Thilina Pituwala
7baec8faf2 Merge branch 'release/v27.0.0.OS' 2020-06-01 09:28:24 +02:00
Thilina Pituwala
d897b1ae3e Release notes 2020-06-01 09:22:34 +02:00
Thilina Pituwala
d0740e66b4 Update development sample data 2020-06-01 08:49:08 +02:00
Thilina Pituwala
c1f93ae663 Update version 2020-06-01 08:33:12 +02:00
Thilina Pituwala
52358d27b0 Merge tag 'v27.0.0.OS' into develop
v27.0.0.OS
2020-05-31 10:24:51 +02:00
Thilina Pituwala
87941971bd Merge branch 'release/v27.0.0.OS' 2020-05-31 10:24:50 +02:00
Thilina Pituwala
2ff6a1ba8d Fix action button display issue 2020-05-31 10:17:56 +02:00
Thilina Pituwala
e700c4f6ac compile assets / change overtime menu name 2020-05-31 10:08:17 +02:00
Thilina Pituwala
7bc44d3dd5 Merge tag 'v27.0.0.OS' into develop
v27.0.0.OS
2020-05-31 09:29:14 +02:00
Thilina Pituwala
7a76f52f5a Merge branch 'release/v27.0.0.OS' 2020-05-31 09:29:13 +02:00
Thilina Pituwala
648901b104 Key verification 2020-05-31 09:21:24 +02:00
Thilina Pituwala
dd9e904378 Fix menu names 2020-05-31 07:07:38 +02:00
Thilina Pituwala
f87139ef41 Fix cypress tests 2020-05-30 16:12:56 +02:00
Thilina Hasantha
df7ca7e924 Fix travel request approval by supervisor 2020-05-30 02:55:36 +02:00
Thilina Hasantha
5bc3fb2588 Update readme 2020-05-29 06:49:07 +02:00
Thilina Hasantha
016fbe0f3b Update readme and fix code style issues 2020-05-25 07:39:54 +02:00
Thilina Pituwala
d0be9c988b Update readme 2020-05-25 06:27:54 +02:00
Thilina Pituwala
7f20318092 Merge tag 'v27.0.0.OS' into develop
v27.0.0.OS
2020-05-25 06:04:05 +02:00
Thilina Pituwala
89e5a54550 Merge branch 'release/v27.0.0.OS' 2020-05-25 06:03:55 +02:00
Thilina Hasantha
86a3ae485f Merge pull request #215 from gamonoid/feature/docker-setup
Feature/docker setup
2020-05-25 04:13:28 +02:00
Thilina Pituwala
a2ca93db83 Icehrm docker worker and readme 2020-05-25 04:12:35 +02:00
Thilina Pituwala
0f7530024e Split clients and projects modules 2020-05-24 02:35:02 +02:00
Thilina Pituwala
854e1038c6 Update icehrm docker production setup 2020-05-24 02:24:55 +02:00
Thilina Pituwala
b68401efeb Fix cypress test run in docker 2020-05-24 01:29:36 +02:00
Thilina Pituwala
c366248434 Remove vagrant and add testing docker 2020-05-23 20:01:53 +02:00
Thilina Pituwala
1e50da36e6 setup xdebug for development docker setup 2020-05-21 16:45:01 +02:00
Thilina Pituwala
12799bef9c Update readme 2020-05-21 12:15:45 +02:00
Thilina Pituwala
d91283912e Adding docker development env 2020-05-21 12:07:58 +02:00
Thilina Pituwala
a7ef560f79 Merge branch 'master' into develop 2020-05-20 21:22:34 +02:00
Thilina Pituwala
ae78c85806 Merge branch 'master' of github.com:gamonoid/icehrm
# Conflicts:
#	package-lock.json
2020-05-20 21:18:44 +02:00
Thilina Pituwala
7453a58aad Latest updates from IceHrmPro 2020-05-20 18:47:29 +02:00
Thilina Pituwala
1ca9cc0ed6 Fix vagrant key / ubuntu gulp issues 2020-05-20 12:04:28 +02:00
Thilina Hasantha
60c92d7935 Fix non existing class errors 2019-09-05 06:32:07 +02:00
Thilina Hasantha
bb274de175 Fox travis build (#197)
* Update mysql version for travis

* Add ant to travis ci
2019-08-30 03:23:51 +02:00
Thilina Hasantha
91bb1d2d8a Add ant to travis ci 2019-08-30 03:18:38 +02:00
Thilina Hasantha
526ee66e2d Fix travis CI build 2019-08-30 03:17:35 +02:00
Thilina Hasantha
0d92c820f7 Fix travis CI build 2019-08-30 03:12:53 +02:00
Thilina Hasantha
15a45150cb Update mysql version for travis 2019-08-30 03:09:48 +02:00
Thilina Hasantha
984b0fac5c Fix npm module vulnerabilities 2019-08-29 08:26:43 +02:00
Thilina Hasantha
08a52d216c Automate vagrant setup 2019-08-29 08:07:57 +02:00
Thilina Hasantha
61abe71314 Add more php versions 2019-07-28 10:27:10 +02:00
Thilina Hasantha
cae28f03a5 Fix code style issues 2019-07-28 10:23:45 +02:00
Thilina Hasantha
4a4d895592 Update readme 2019-07-26 04:22:32 +02:00
Thilina Hasantha
c05e815c17 Add settings endpoint 2019-07-26 04:17:25 +02:00
Thilina Hasantha
6e77aa99c4 Update google api key setting 2019-07-26 04:04:32 +02:00
Thilina Hasantha
fd99ea299e v26.6.0 updates 2019-07-26 03:53:24 +02:00
Thilina Hasantha
c3344b99fa Adding mobile modules endpoint 2019-02-19 07:05:10 +01:00
Thilina Hasantha
ca58e75556 Meta data rest endpoint 2019-02-18 07:46:24 +01:00
Thilina Hasantha
bf43ed8730 Order attendance list by in time latest 2019-02-18 07:45:07 +01:00
Thilina Hasantha
b922a48141 Fix vagrant url 2019-02-04 06:37:07 +01:00
Thilina Hasantha
26e55e8644 Fix php 5.6 compatibility 2019-02-04 06:20:05 +01:00
Thilina Hasantha
af9b9119ef Update release notes 2019-02-04 06:16:40 +01:00
Thilina Hasantha
afa345f374 Read me updated 2019-02-04 06:15:00 +01:00
Thilina Hasantha
a3d6430102 Update release notes 2019-02-03 16:14:45 +01:00
nightwatch75
e625f6013a Update it.po (#166)
- Weird accented characters (Società, pò etc.)
- About in italian is "info"
- Capital letter in some string
2019-02-03 14:42:32 +01:00
Thilina Hasantha
577ed9938f Update readme and disable broken unit tests 2019-02-03 14:37:15 +01:00
Thilina Hasantha
2ade4d9a4a Allow non admin users to ad own attendance entries via api 2019-02-03 14:14:37 +01:00
Thilina Hasantha
a55c56215a Delete cache properties 2019-02-03 14:06:14 +01:00
Thilina Hasantha
16014bb38e Upgrade to v26 (#172)
* A bunch of new updates from icehrm pro

* Push changes to frontend
2019-02-03 14:00:34 +01:00
Thilina Hasantha
a75325fb52 Add glacies links 2018-12-30 16:09:05 +01:00
gamonoid
9cee4e91df Upgrades from IceHrm Pro v24 2018-07-03 03:10:32 +02:00
gamonoid
8b276d54e6 Release notes v23.0.1.OS 2018-06-14 04:39:45 +02:00
17925 changed files with 1605003 additions and 114378 deletions

5
.eslintrc Normal file
View File

@@ -0,0 +1,5 @@
// Use this file as a starting point for your project's .eslintrc.
// Copy this file, and add rule overrides as needed.
{
"extends": "airbnb"
}

35
.gitignore vendored
View File

@@ -1,12 +1,37 @@
/.settings
/.buildpath
/.project
/.idea/
.idea/
/build
/deployment/clients/dev/data/
/deployment/clients/test/data/
/deployment/clients/local/data/
/deployment/clients/dev/data/*
/deployment/clients/test/data/*
/deployment/clients/local/data/*
/.vagrant
keys.tags.pub
keys.dev.pub
/app/config.php
/app/data/*
/app/icehrm.key
/app/data/*.*
/app/data/keys/*
!/app/data/index.php
!/app/data/.htaccess
icehrm.key
cache.properties
node_modules/*
test/frontend/node_modules/*
web/dist/*.map
web/admin/dist/*.map
web/modules/dist/*.map
test/frontend/cypress/videos/*
test/frontend/cypress/screenshots/*
.gitkeep
web/node_modules
/frontend/node_modules/*
docker/development/db_data
docker/prod/db_data
docker/prod/app_data
docker/testing/db_data
!deployment/vagrant/ssl/icehrm.key
/web/dist/vendor.js.map
/web/dist/admin-bundle.js.map
/web/dist/modules-bundle.js.map

View File

@@ -1,7 +1,11 @@
services:
- mysql
addons:
apt:
packages:
- ant
before_script:
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('dev') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
- echo "USE mysql;\nUPDATE user SET authentication_string=PASSWORD('dev') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
install:
#- rm $TRAVIS_BUILD_DIR/tools/phpunit
#- composer require --dev phpunit/phpunit ~6.5.5
@@ -12,4 +16,5 @@ language: php
php:
- '7.0'
- '7.1'
- '7.2'
after_failure: "cat /tmp/icehrm.test.log"

64
Dockerfile Normal file
View File

@@ -0,0 +1,64 @@
FROM alpine:3.11
LABEL Maintainer="Thilina, Pituwala <thilina@icehrm.com>" \
Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux."
ENV PHPIZE_DEPS \
autoconf \
dpkg-dev dpkg \
file \
g++ \
gcc \
libc-dev \
make \
pkgconf \
musl-dev \
re2c \
php7-dev \
php7-pear
RUN apk --no-cache add bind-tools
# Install packages
RUN apk --no-cache add php php-fpm php-opcache php-mysqli php-json php-openssl php-curl \
php-zlib php-xml php-phar php-intl php-dom php-xmlreader php-ctype php-session \
php-mbstring php-gd php7-ldap nginx supervisor curl
# Install xdebug
RUN apk add --no-cache $PHPIZE_DEPS \
&& pecl install xdebug-2.9.5
# Configure nginx
COPY docker/development/config/nginx.conf /etc/nginx/nginx.conf
# Remove default server definition
RUN rm /etc/nginx/conf.d/default.conf
# Configure PHP-FPM
COPY docker/development/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf
COPY docker/development/config/php.ini /etc/php7/conf.d/custom.ini
# Configure supervisord
COPY docker/development/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Setup document root
RUN mkdir -p /var/www/html
# Make sure files/folders needed by the processes are accessable when they run under the nobody user
RUN chown -R nobody.nobody /var/www/html && \
chown -R nobody.nobody /run && \
chown -R nobody.nobody /var/lib/nginx && \
chown -R nobody.nobody /var/log/nginx
# Switch to use a non-root user from here on
USER nobody
# Add application
WORKDIR /var/www/html
# Expose the port nginx is reachable on
EXPOSE 8080
# Let supervisord start nginx & php-fpm
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
# Configure a healthcheck to validate that everything is up&running
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8080/fpm-ping

49
Dockerfile-prod Normal file
View File

@@ -0,0 +1,49 @@
FROM alpine:3.11
LABEL Maintainer="Thilina, Pituwala <thilina@icehrm.com>" \
Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux."
# Install packages
RUN apk --no-cache add php7 php7-fpm php7-opcache php7-mysqli php7-json php7-openssl php7-curl \
php7-zlib php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype php7-session \
php7-mbstring php7-gd php7-ldap nginx supervisor curl
# Configure nginx
COPY docker/prod/config/nginx.conf /etc/nginx/nginx.conf
# Remove default server definition
RUN rm /etc/nginx/conf.d/default.conf
# Configure PHP-FPM
COPY docker/prod/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf
COPY docker/prod/config/php.ini /etc/php7/conf.d/custom.ini
# Configure supervisord
COPY docker/prod/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Setup document root
RUN mkdir -p /var/www/html
# Make sure files/folders needed by the processes are accessable when they run under the nobody user
RUN chown -R nobody.nobody /var/www/html && \
chown -R nobody.nobody /run && \
chown -R nobody.nobody /var/lib/nginx && \
chown -R nobody.nobody /var/log/nginx
# Switch to use a non-root user from here on
USER nobody
# Add application
WORKDIR /var/www/html
COPY --chown=nobody ./app /var/www/html/app/
COPY --chown=nobody ./core /var/www/html/core/
COPY --chown=nobody ./web /var/www/html/web/
COPY --chown=nobody ./index.php /var/www/html/index.php
COPY --chown=nobody ./docker/prod/config/config.php /var/www/html/app/config.php
# Expose the port nginx is reachable on
EXPOSE 8070
# Let supervisord start nginx & php-fpm
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
# Configure a healthcheck to validate that everything is up&running
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8071/fpm-ping

50
Dockerfile-testing Normal file
View File

@@ -0,0 +1,50 @@
FROM alpine:3.11
LABEL Maintainer="Thilina, Pituwala <thilina@icehrm.com>" \
Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux."
# Install packages
RUN apk --no-cache add php7 php7-fpm php7-opcache php7-mysqli php7-json php7-openssl php7-curl \
php7-zlib php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype php7-session \
php7-mbstring php7-gd php7-ldap nginx supervisor curl
# Configure nginx
COPY docker/testing/config/nginx.conf /etc/nginx/nginx.conf
# Remove default server definition
RUN rm /etc/nginx/conf.d/default.conf
# Configure PHP-FPM
COPY docker/testing/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf
COPY docker/testing/config/php.ini /etc/php7/conf.d/custom.ini
# Configure supervisord
COPY docker/testing/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Setup document root
RUN mkdir -p /var/www/html
# Make sure files/folders needed by the processes are accessable when they run under the nobody user
RUN chown -R nobody.nobody /var/www/html && \
chown -R nobody.nobody /run && \
chown -R nobody.nobody /var/lib/nginx && \
chown -R nobody.nobody /var/log/nginx
# Switch to use a non-root user from here on
USER nobody
# Add application
WORKDIR /var/www/html
COPY --chown=nobody ./app /var/www/html/app/
COPY --chown=nobody ./core /var/www/html/core/
COPY --chown=nobody ./web /var/www/html/web/
COPY --chown=nobody ./index.php /var/www/html/index.php
COPY --chown=nobody ./docker/testing/config/config.php /var/www/html/app/config.php
COPY --chown=nobody ./docker/testing/config/reset-db.php /var/www/html/app/reset-db.php
# Expose the port nginx is reachable on
EXPOSE 8090
# Let supervisord start nginx & php-fpm
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
# Configure a healthcheck to validate that everything is up&running
HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8091/fpm-ping

31
Dockerfile-worker Normal file
View File

@@ -0,0 +1,31 @@
FROM alpine:3.11
LABEL Maintainer="Thilina, Pituwala <thilina@icehrm.com>" \
Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux."
ARG EXE_ENV
RUN apk upgrade --available
RUN apk add --no-cache tini openrc busybox-initscripts
# Install packages
RUN apk --no-cache add php7 php7-opcache php7-mysqli php7-json php7-openssl php7-curl \
php7-zlib php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype php7-session \
php7-mbstring php7-gd curl
# Setup document root
RUN mkdir -p /var/www/html
# Add application
WORKDIR /var/www/html
COPY ./app /var/www/html/app/
COPY ./core /var/www/html/core/
COPY ./web /var/www/html/web/
COPY ./index.php /var/www/html/index.php
COPY ./docker/$EXE_ENV/config/config.php /var/www/html/app/config.php
COPY ./docker/worker/config/ice-cron /etc/crontabs/root
CMD /usr/sbin/crond -f -l 8

30
LICENSE
View File

@@ -1,21 +1,15 @@
MIT License
IceHrm is a web based human resource management software
Copyright (C) 2020 Thilina, Pituwala
Copyright (c) 2016 Thilina Hasantha
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

46
Vagrantfile vendored
View File

@@ -1,29 +1,33 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "icehrm/icehrm"
config.vm.box_version = "1.0.0"
config.vm.network "private_network", ip: "192.168.10.12"
config.vm.synced_folder ".", "/vagrant", type: "nfs"
Vagrant.configure(2) do |config|
config.vm.box = "thilinah/jessie64_isotope"
config.vm.box_version = "0.0.1"
config.vm.network "private_network", ip: "192.168.40.40"
config.vm.synced_folder ".", "/vagrant", type: "nfs"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = "2"
vb.name = "icehrm-os.test"
end
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = "2"
vb.name = "icehrm.open"
end
config.vm.provision "shell", inline: <<-SHELL
sudo rm /etc/nginx/ssl/icehrm.*
sudo ln -s /vagrant/deployment/vagrant/ssl/icehrm.crt /etc/nginx/ssl/icehrm.crt
sudo ln -s /vagrant/deployment/vagrant/ssl/icehrm.key /etc/nginx/ssl/icehrm.key
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /vagrant/deployment/vagrant/sites-available/default /etc/nginx/sites-enabled/default
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
SHELL
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
config.vm.hostname = "icehrm.open"
sudo service nginx restart
sudo chmod 755 -R /var/log
SHELL
config.hostsupdater.aliases = [
"app.dev",
"app.app.dev",
"clients.app.dev"
]
config.vm.hostname = "icehrm.os"
config.hostsupdater.aliases = [
"icehrm.os"
]
end

View File

@@ -4,4 +4,4 @@ if(php_sapi_name() != 'cli'){
}
include ('config.php');
include (APP_BASE_PATH.'crons/cron.php');
include (APP_BASE_PATH.'crons/cron.php');

2
app/data/.htaccess Normal file
View File

@@ -0,0 +1,2 @@
order deny,allow
deny from all

1
app/data/index.php Normal file
View File

@@ -0,0 +1 @@
<?php

3
app/fileupload-new.php Normal file
View File

@@ -0,0 +1,3 @@
<?php
include ('config.php');
include (APP_BASE_PATH.'fileupload-new.php');

View File

@@ -5,7 +5,7 @@ if(!file_exists('config.php')){
}
include ('config.php');
if(!isset($_REQUEST['g']) || !isset($_REQUEST['n'])){
header("Location:".CLIENT_BASE_URL."login.php");
header("Location:".CLIENT_BASE_URL."login.php");
exit();
}
$group = $_REQUEST['g'];
@@ -14,9 +14,16 @@ $name= $_REQUEST['n'];
$groups = array('admin','modules');
if($group == 'admin' || $group == 'modules'){
$name = str_replace("..","",$name);
$name = str_replace("..","",$name);
$name = str_replace("/","",$name);
include APP_BASE_PATH.'/'.$group.'/'.$name.'/index.php';
}else if ($group == 'extension'){
$name = str_replace("..","",$name);
$name = str_replace("/","",$name);
$moduleName = $name;
$moduleGroup = 'extensions';
$extensionIndex = APP_BASE_PATH.'/../extensions/'.$name.'/web/index.php';
include APP_BASE_PATH.'extensions/wrapper.php';
}else{
exit();
}
}

View File

@@ -19,7 +19,10 @@ $isConfigFileWriteable = is_writable(CLIENT_APP_PATH."config.php");
error_log("Config writable ".$isConfigFileWriteable);
error_log("Config exists ".file_exists(CLIENT_APP_PATH."config.php"));
if(!$isConfigFileWriteable){
$errorMap[] = array("important","Configuration file [".CLIENT_APP_PATH."config.php] is not writable","Make this file writable",array("sudo touch ".CLIENT_APP_PATH."config.php","sudo chmod 777 ".CLIENT_APP_PATH."config.php"));
$errorMap[] = array("important","Configuration file [".CLIENT_APP_PATH."config.php] is not writable","Make this file writable",array(
"sudo touch ".CLIENT_APP_PATH."config.php","sudo chmod 755 ".CLIENT_APP_PATH."config.php",
"sudo chown -R ".shell_exec('whoami')." ".CLIENT_APP_PATH,
));
}
$isConfigSampleFileExists = file_exists(CLIENT_APP_PATH."config.sample.php");
@@ -48,7 +51,7 @@ if(!$isDataFolderExists){
unlink(CLIENT_APP_PATH."data/test.txt");
}
if(!$isDataFolderWritable){
$errorMap[] = array("important","Data folder is not writable","Provide wirte permission to the web server user to ".CLIENT_APP_PATH."data",array("sudo chmod 777 ".CLIENT_APP_PATH."data"));
$errorMap[] = array("important","Data folder is not writable","Provide wirte permission to the web server user to ".CLIENT_APP_PATH."data",array("sudo chmod 755 ".CLIENT_APP_PATH."data"));
}
}

View File

@@ -1,3 +1,3 @@
<?php
include ('config.php');
include (APP_BASE_PATH.'rest.php');
include (APP_BASE_PATH.'rest.php');

1
bin/export-plural-rules Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/gettext/languages/bin/export-plural-rules

1
bin/markdown Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/cebe/markdown/bin/markdown

1
bin/pdepend Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/pdepend/pdepend/src/bin/pdepend

1
bin/phpcb Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/mayflower/php-codebrowser/bin/phpcb

1
bin/phpcbf Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/squizlabs/php_codesniffer/scripts/phpcbf

1
bin/phpcpd Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/sebastian/phpcpd/composer/bin/phpcpd

1
bin/phpcs Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/squizlabs/php_codesniffer/scripts/phpcs

1
bin/phploc Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/phploc/phploc/phploc

1
bin/phpmd Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/phpmd/phpmd/src/bin/phpmd

1
bin/phpunit Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/phpunit/phpunit/phpunit

1
bin/release Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/consolidation/self-update/scripts/release

1
bin/robo Symbolic link
View File

@@ -0,0 +1 @@
../core/lib/composer/vendor/consolidation/robo/robo

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="icehrm-pro" default="build">
<project name="icehrm" default="build">
<!-- By default, we assume all tools to be on the $PATH -->
<property name="toolsdir" value="${basedir}/tools/"/>
<property name="toolsdir" value="${basedir}/bin/"/>
<property name="destination" value="${basedir}/build/app"/>
<property name="testdir" value="${basedir}/build/test"/>
<property name="origin" value="${basedir}"/>
@@ -11,7 +11,7 @@
<property name="installpath" value="/var/www/apps.gamonoid.com/icehrm-open-core"/>
<target name="build-ci"
depends="prepare,lint,phpcs,copyapp,phpunit"
depends="prepare,lint,phpcs-ci"
description=""/>
<target name="build"
@@ -19,11 +19,11 @@
description=""/>
<target name="buildlocal"
depends="prepare,lint,phpcs,copyapp,phpunit"
depends="prepare,lint,phpcs,copyapp"
description=""/>
<target name="releaseapp"
depends="prepare,lint,copyapp,phpunit,release"
depends="prepare,lint,copyapp,release"
description=""/>
<target name="clean"
@@ -80,7 +80,6 @@
<exec executable="${toolsdir}phploc">
<arg value="--count-tests" />
<arg path="${basedir}/core/src" />
<arg path="${basedir}/test" />
</exec>
</target>
@@ -94,7 +93,6 @@
<arg value="--log-xml" />
<arg path="${basedir}/build/logs/phploc.xml" />
<arg path="${basedir}/core/src" />
<arg path="${basedir}/test" />
</exec>
</target>
@@ -137,15 +135,13 @@
<arg value="--extensions=php" />
<arg value="--ignore=autoload.php" />
<arg path="${basedir}/core/src" />
<arg path="${basedir}/test/unit" />
<arg path="${basedir}/test/integration" />
</exec>
</target>
<target name="phpcs-ci"
depends="prepare"
description="Find coding standard violations using PHP_CodeSniffer and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable="${toolsdir}phpcs" output="/dev/null">
<exec executable="${toolsdir}phpcs" failonerror="true">
<arg value="--report=checkstyle" />
<arg value="--report-file=${basedir}/build/logs/checkstyle.xml" />
<arg value="--standard=PSR2" />
@@ -181,12 +177,41 @@
</exec>
</target>
<target name="phpunit-sa"
description="Run unit tests with PHPUnit">
<exec executable="${toolsdir}phpunit" failonerror="true">
<arg value="--configuration"/>
<arg path="${basedir}/phpunit.xml"/>
</exec>
</target>
<target name="phpdox"
depends=""
description="Generate project documentation using phpDox">
<exec executable="${toolsdir}phpdox"/>
</target>
<target name="copyjs"
description="Copy generated assets">
<delete includeemptydirs="true">
<fileset dir="${destination}">
<include name="web/admin/dist/**"/>
<include name="web/modules/dist/**"/>
<include name="web/dist/**"/>
</fileset>
</delete>
<copy todir="${destination}" overwrite="true">
<fileset dir="${origin}">
<include name="web/admin/dist/**"/>
<include name="web/modules/dist/**"/>
<include name="web/dist/**"/>
</fileset>
</copy>
</target>
<target name="copyapp"
description="Copy generated files to QA app">
@@ -196,11 +221,21 @@
</fileset>
</delete>
<copy todir="${destination}" overwrite="true">
<fileset dir="${origin}">
<include name="**/*"/>
</fileset>
</copy>
<copy todir="${destination}" overwrite="true">
<fileset dir="${origin}">
<include name="**/*"/>
<exclude name="node_modules/**"/>
<exclude name="web/node_modules/**"/>
<exclude name="web/admin/**"/>
<exclude name="web/modules/**"/>
<exclude name="web/api/**"/>
<exclude name="web/api-common/**"/>
<exclude name="web/components/**"/>
<exclude name="web/themecss/**"/>
<exclude name="web/themejs/**"/>
<exclude name="docs/**"/>
</fileset>
</copy>
<delete includeemptydirs="true">
<fileset dir="${destination}">
@@ -219,6 +254,9 @@
<include name="cache.properties"/>
<include name="phpdox.xml"/>
<include name="phpunit.xml"/>
<include name="web/admin/dist/*.map"/>
<include name="web/modules/dist/*.map"/>
<include name="web/dist/*.map"/>
</fileset>
</delete>
@@ -277,8 +315,5 @@
<gzip destfile="${basedir}/build/release/${env.appname}_${env.Version}.tar.gz" src="${basedir}/build/release/${env.appname}_${env.Version}.tar"/>
</target>
</project>

View File

@@ -1,244 +0,0 @@
#Sun Apr 29 05:47:35 CEST 2018
/Users/Thilina/Projects/icehrm/src/Expenses/Common/Model/EmployeeExpenseApproval.php=db8eedd8fb151769acded489e9d616c1
/Users/Thilina/Projects/icehrm/src/Attendance/Common/Calculations/BasicOvertimeCalculator.php=9c96ae3f71796029d3f93e5c63783f53
/Users/Thilina/Projects/icehrm/src/Classes/Email/SNSEmailSender.php=fa905e3ab63ea745c591e744d6741b6b
/Users/Thilina/Projects/icehrm/src/Salary/Common/Model/SalaryComponent.php=31e89f1115de7986cd790c8e113ab6d5
/Users/Thilina/Projects/icehrm/src/Classes/Email/EmailSender.php=03a98d7d1bcc56a77cc5b3bfa46b79fd
/Users/Thilina/Projects/icehrm/test/bootstrap.php=391db040530140c40c84cbbc65645d58
/Users/Thilina/Projects/icehrm/src/Utils/InputCleaner.php=e86fcb9daf1d32a4328edf40a31152f8
/Users/Thilina/Projects/icehrm/src/Projects/Common/Model/Project.php=05b1cd967d67cb977558f2567d7f6cb6
/Users/Thilina/Projects/icehrm/src/Model/DataEntryBackup.php=9ab3a7d48dbdd377a90c505cf692c17e
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/Skill.php=e1441a2526e24a7ada7d20b36ff9e355
/Users/Thilina/Projects/icehrm/src/Permissions/Admin/Api/PermissionsAdminManager.php=c66e06b926b4006e8a2d7f2e77e0f1fa
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/Province.php=4a718577000772ab7591a2586f7c75c8
/Users/Thilina/Projects/icehrm/src/Loans/Common/Model/EmployeeCompanyLoan.php=abc8959df2ec0f3e19ff6da12c3163f9
/Users/Thilina/Projects/icehrm/src/Classes/Approval/ApprovalStatus.php=7a3bc0a73f237eb677254b245887f48f
/Users/Thilina/Projects/icehrm/src/Classes/FileService.php=806ff6c25c7654c30e99b0418e1c1475
/Users/Thilina/Projects/icehrm/src/Dashboard/User/Api/DashboardActionManager.php=3f797cf4807ad5cd4f881607142df049
/Users/Thilina/Projects/icehrm/src/Classes/Cron/Task/EmailSenderTask.php=f0c93e7c807706922cb812723e51bd09
/Users/Thilina/Projects/icehrm/src/Attendance/Admin/Api/AttendanceUtil.php=34fe63a4c0f954451afae6c359ea5b38
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/Deduction.php=1e49d0fd8d4673e3fd094cfb0e467df4
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/PayrollDataExport.php=83bd6faa73c75667ecf25091c3729abc
/Users/Thilina/Projects/icehrm/src/Employees/Common/Model/Employee.php=f8814257c241892fcf45e1d409d6ab1b
/Users/Thilina/Projects/icehrm/src/Metadata/Admin/Api/MetadataAdminManager.php=9f383f9c34ec98a8e2e701825c548a8a
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/NewHiresEmployeeReport.php=64eab525953538d481dab6052dd76d81
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/DeductionGroup.php=c35db5b88aa4b0c7d78b8444688931b5
/Users/Thilina/Projects/icehrm/src/Utils/Math/EvalMathFuncs.php=d6f7c26eab307d205ee8483d87a380cb
/Users/Thilina/Projects/icehrm/src/Classes/ModuleBuilder/ModuleTabGroup.php=d81cfc2b3dcad2f57317b1274c884d95
/Users/Thilina/Projects/icehrm/src/Model/RestAccessToken.php=77c292675944ff887fc8b4c3f7b6da94
/Users/Thilina/Projects/icehrm/src/Classes/LDAPManager.php=e88dd0634a6ca372564faa5a1d540796
/Users/Thilina/Projects/icehrm/src/Expenses/Admin/Api/ExpensesAdminManager.php=ef6961e298a55379ec4dfff8b9db77fc
/Users/Thilina/Projects/icehrm/src/Dashboard/User/Api/DashboardModulesManager.php=2e8968121b445353ee864c76c44483d3
/Users/Thilina/Projects/icehrm/src/Model/UserReport.php=0a8a8476e3088011cc54fda139567b56
/Users/Thilina/Projects/icehrm/src/Travel/Common/Model/EmployeeTravelRecordApproval.php=d84b2a1323f3663806cc30545e748cd4
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/SupportedLanguage.php=3ec1220796f6e33641998a33f036d709
/Users/Thilina/Projects/icehrm/src/TimeSheets/Common/Model/QTDays.php=32a00e65a966331b776dc37cc0609edf
/Users/Thilina/Projects/icehrm/src/Salary/Common/Model/EmployeeSalary.php=ec80c4e8280d23568df79f59d1b32de8
/Users/Thilina/Projects/icehrm/src/Classes/SimpleImage.php=fdfb7b2e71e14975ebce16de44ea9dee
/Users/Thilina/Projects/icehrm/src/Expenses/User/Api/ExpensesModulesManager.php=4860a1fbb24f4074a6918b2c0b973e80
/Users/Thilina/Projects/icehrm/src/Employees/User/Api/EmployeesActionManager.php=7f495266d28737c779e1e9ab3c61e0db
/Users/Thilina/Projects/icehrm/src/Classes/Approval/ApproveAdminActionManager.php=3c26b53f0e5141b8f4a033cbbd4c622e
/Users/Thilina/Projects/icehrm/src/Settings/Admin/Api/SettingsAdminManager.php=5e5df0056db6f9593128720581feca18
/Users/Thilina/Projects/icehrm/src/Travel/User/Api/TravelModulesManager.php=94c9204a67e99af9133cd2aa371cb6da
/Users/Thilina/Projects/icehrm/test/unit/UserAttendanceActionManagerUnit.php=1d71d366a13f253ef6931aa87202ac42
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/OvertimeRequestReport.php=3cd3bc887da768a32bfc61c152489528
/Users/Thilina/Projects/icehrm/src/Employees/User/Api/EmployeesModulesManager.php=ad9ab05afd9cf551870352dba82e6d69
/Users/Thilina/Projects/icehrm/test/helper/EmployeeTestDataHelper.php=65ec2048653c9e4e4359d9b6967a860d
/Users/Thilina/Projects/icehrm/test/integration/ApprovalStatusIntegration.php=8b9243e5cbb302513d906ff9de246acd
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeTimeSheetData.php=9d612ee603fdf4e6b710eec725da2656
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayrollData.php=f1a49da4e6e5a91695dd96c9585e1686
/Users/Thilina/Projects/icehrm/src/TimeSheets/User/Api/TimeSheetsInitialize.php=d47372f12494019c1004a04cbe57013d
/Users/Thilina/Projects/icehrm/src/Modules/Admin/Api/ModulesAdminManager.php=ef70889c3b3b9eae52800ce3a326d540
/Users/Thilina/Projects/icehrm/src/Modules/Common/Model/Module.php=8f0d1680087f555f5628c53236c7625f
/Users/Thilina/Projects/icehrm/src/Expenses/Common/Model/ExpensesPaymentMethod.php=338ce9cabb90a291e88b940756b06701
/Users/Thilina/Projects/icehrm/src/Company/Common/Model/Timezone.php=50aff3bc39221658c35041abdc55ad98
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/OvertimeSummaryReport.php=16d9e2f10de82f25d0965e2d327086b9
/Users/Thilina/Projects/icehrm/src/Data/Common/Model/DataImport.php=a6af4d8acd5585932823889509cca581
/Users/Thilina/Projects/icehrm/src/FieldNames/Common/Model/FieldNameMapping.php=73bd1da0f6e51329dbe12930bb566ccd
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/ActiveEmployeeReport.php=261180dfbe69ab83d9d63646111695ba
/Users/Thilina/Projects/icehrm/test/unit/LanguageManagerUnit.php=ebb20febce875350bfddd7f0358e6ad0
/Users/Thilina/Projects/icehrm/src/Utils/LogManager.php=144ebae4d0ff60f0fd21e79a45aa6e6a
/Users/Thilina/Projects/icehrm/src/Dependents/Common/Model/EmployeeDependent.php=1f4b6cd6dfbc14269b53dbbac3730f9e
/Users/Thilina/Projects/icehrm/src/Data/Admin/Import/PayrollDataImporter.php=7350ec94ef8a70ba6c263e53c70c7073
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/ExpenseReport.php=397c8deb446994b64e2b9fef2845bb89
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/OvertimeReport.php=f630ae5402ec7957f42b64fa46cd1923
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeLeaveEntitlementReport.php=9be41bfeb88fd0171028203f6513c799
/Users/Thilina/Projects/icehrm/src/Projects/User/Api/ProjectsModulesManager.php=4fc0463507ca7768a1e493d703ac2581
/Users/Thilina/Projects/icehrm/src/Permissions/Common/Model/Permission.php=0745dd3786e95cfc5265c32f47f4ee4a
/Users/Thilina/Projects/icehrm/src/Overtime/Admin/Api/OvertimeActionManager.php=0b039c008daf52e64f9ce827eabdd25a
/Users/Thilina/Projects/icehrm/src/Salary/User/Api/SalaryModulesManager.php=050d077e79532353a7d12a7221829b7c
/Users/Thilina/Projects/icehrm/src/Classes/Cron/IceTask.php=cc9b1481e824fd967eb503248eb92e29
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeTimesheetReport.php=8661944cf39b10c441841a8af72cb988
/Users/Thilina/Projects/icehrm/src/EmergencyContacts/User/Api/EmergencyContactModulesManager.php=527888466137dad3da5c6bf5b7bf9b28
/Users/Thilina/Projects/icehrm/src/Classes/SettingsManager.php=ebed24cde74d7fb33cca4ba156389760
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/EmployeeLanguage.php=66127455502fb29181324c1cc25f93c4
/Users/Thilina/Projects/icehrm/src/Classes/Approval/ApproveCommonActionManager.php=c1b7efb8c4f3fe8199c7e0d6fdd1ccce
/Users/Thilina/Projects/icehrm/src/Overtime/Common/Model/EmployeeOvertime.php=50c166318a354b05dc2ae0e442d43a33
/Users/Thilina/Projects/icehrm/src/Reports/User/Api/ReportsModulesManager.php=1645b61be16b96d0085510f6a2d30b68
/Users/Thilina/Projects/icehrm/src/Classes/RestApiManager.php=c53180aa40576c5fe8c519b2b0a39e32
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/Payroll.php=5c7eb622aade003f693275944e041cc7
/Users/Thilina/Projects/icehrm/src/Attendance/Admin/Api/AttendanceActionManager.php=9045182bc0854647219b0a0418c37ffd
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/PDFReportBuilder.php=fbbc196b5ea432671667bcc239d8bf54
/Users/Thilina/Projects/icehrm/src/Employees/Rest/EmployeeRestEndPoint.php=5a006d8637a05d63f19e130b37bdd97d
/Users/Thilina/Projects/icehrm/src/Model/File.php=8211922ac309e1c3e5fc316a90bc0bf0
/Users/Thilina/Projects/icehrm/src/Data/Admin/Api/AbstractDataImporter.php=315bf5eec45aa13e174d412014e2237f
/Users/Thilina/Projects/icehrm/src/Classes/NotificationManager.php=a739fd4177892d44e78efed1641072cc
/Users/Thilina/Projects/icehrm/src/Utils/SessionUtils.php=f5c4db2214dfb4d8bf5b9bfe5edb1bac
/Users/Thilina/Projects/icehrm/src/Travel/Admin/Api/TravelActionManager.php=0e2fdd403d3456ebda102d554349e9f4
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayrollColumn.php=0f2e8fd9b44c038f163ae646d3c6f4b6
/Users/Thilina/Projects/icehrm/src/Travel/Common/Model/EmployeeTravelRecord.php=5366a1927bd94630217ffbc9386ff605
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/TravelRequestReport.php=c4bdd4c88f4a7b15c8091a0dcbb5018a
/Users/Thilina/Projects/icehrm/src/Classes/StatusChangeLogManager.php=b091e855d9800eea9d4190e0c75e3e8c
/Users/Thilina/Projects/icehrm/src/Qualifications/Admin/Api/QualificationsAdminManager.php=3037d64a2344a497ff0ceea52265d2a6
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeLeavesReport.php=bd5efb4666ca4103a2e7e98aa24e1c83
/Users/Thilina/Projects/icehrm/src/TimeSheets/User/Api/TimeSheetsActionManager.php=ef271183cf6e71d8db24b8d3369e19b9
/Users/Thilina/Projects/icehrm/src/Expenses/Common/Model/ExpensesCategory.php=e9c0e170b950a39994d0a33d5981374f
/Users/Thilina/Projects/icehrm/src/Classes/Email/SwiftMailer.php=eca37dc0add437ae1089c695b5074b90
/Users/Thilina/Projects/icehrm/src/Data/Admin/Import/AttendanceDataImporter.php=dc4dec4294b9feac08a5f996b85cab85
/Users/Thilina/Projects/icehrm/src/Salary/Common/Model/PayrollEmployee.php=1a01bd60d1f82fc6f3eeb1875006f659
/Users/Thilina/Projects/icehrm/src/Classes/Crypt/AesCtr.php=4897c7fe9a510f38eeb91046127d79f7
/Users/Thilina/Projects/icehrm/src/Classes/AbstractModuleManager.php=5bb9fc5859bdd790753277a47752b0b9
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/ImmigrationStatus.php=f0dc9a94bcc487df21d53387ae8e89ba
/Users/Thilina/Projects/icehrm/src/Salary/Admin/Api/SalaryAdminManager.php=8bedb5d82608974feedd1c094cac64fa
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/ClassBasedReportBuilder.php=fc77219539745bdb6364fc81bdda2516
/Users/Thilina/Projects/icehrm/src/Classes/BaseService.php=e0de0276b6a8b58a4e318848a45439b6
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayrollColumnTemplate.php=cb69bf4717cfbaf0f395b931296efd9a
/Users/Thilina/Projects/icehrm/src/Expenses/Admin/Api/ExpensesActionManager.php=2997346b4574ccd83e564c338e38b189
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeTimeTrackReport.php=eddda882fae0c258e97fb50aafe21061
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/Nationality.php=0f0cd1d95496f95ac9de08aa15e6b6a4
/Users/Thilina/Projects/icehrm/src/Classes/ReportHandler.php=80b280cae34fdfbee864b05b07c6789a
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/ExpenseReport.php=7c8d187bc57175a92b8bc0fa33e501f0
/Users/Thilina/Projects/icehrm/src/Overtime/Admin/Api/OvertimeAdminManager.php=7ae7776e6445429a1f0158a5efd38c04
/Users/Thilina/Projects/icehrm/src/Salary/Common/Model/SalaryComponentType.php=d96878a0b1547f44731830526306ab56
/Users/Thilina/Projects/icehrm/src/Travel/Common/Model/EmployeeImmigration.php=1dcb690d0045699a1aa65eda033f9adf
/Users/Thilina/Projects/icehrm/src/Classes/MenuItemTemplate.php=7ad7eb3a874ec729ec1baf0760f0b4ed
/Users/Thilina/Projects/icehrm/src/Employees/Admin/Api/EmployeesAdminManager.php=15e983c78e17191ced1a7eec13be0d3e
/Users/Thilina/Projects/icehrm/src/Classes/Cron/CronUtils.php=b55a1fe1c4ed55dc582e208b341f52b4
/Users/Thilina/Projects/icehrm/src/Overtime/Common/Model/EmployeeOvertimeApproval.php=edd2eedebb9f62a44f0e588c615654ce
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/EmployeeSkill.php=a02c5ceda0489aba4ed47df010d4892e
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/EmployeeAttendanceReport.php=a20c94c986fa57c52daebbcbf4fa1f3f
/Users/Thilina/Projects/icehrm/src/Overtime/User/Api/OvertimeActionManager.php=f6d2c26500ed9e10b90bb5826d6c124e
/Users/Thilina/Projects/icehrm/src/Projects/Common/Model/Client.php=666b6d5ad575ddd9ccc198f5e98e1211
/Users/Thilina/Projects/icehrm/src/Dependents/User/Api/DependentsModulesManager.php=409b6ea72b6ce0319bb12df6458d2bef
/Users/Thilina/Projects/icehrm/src/Jobs/Common/Model/JobTitle.php=4765635589eb4cc84cec2e578faa1557
/Users/Thilina/Projects/icehrm/src/Model/Cron.php=4f3da95d8dd8e6b4642e6a2c6390c5fe
/Users/Thilina/Projects/icehrm/src/Projects/Admin/Api/ProjectsAdminManager.php=8f20c5277a8560a69318263166b804e3
/Users/Thilina/Projects/icehrm/src/Loans/Common/Model/CompanyLoan.php=6e1e409dd612f22b47c6ffdcda4fe3a0
/Users/Thilina/Projects/icehrm/src/Classes/Migration/MigrationManager.php=10ce5f1187ed06d2b12820a0d9d7e90a
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/ReportsAdminManager.php=be16482fcb8d6714f13618407acf25a5
/Users/Thilina/Projects/icehrm/src/Utils/CalendarTools.php=9f60bf1aaa928a02163680da60ac255c
/Users/Thilina/Projects/icehrm/src/Data/Admin/Api/DataAdminManager.php=3913dc1f43ae1965956c420d0d9084c8
/Users/Thilina/Projects/icehrm/src/TimeSheets/Common/Model/EmployeeTimeEntry.php=f69d37222ff6d528b5dde53fcbb5b3a8
/Users/Thilina/Projects/icehrm/src/Classes/UIManager.php=03b64742f6595dedce18bba1372d4b20
/Users/Thilina/Projects/icehrm/src/Classes/MemcacheService.php=e07916b1c628686162c19fa26aad93d5
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/EmployeeTimesheetReport.php=2ec16a7dccb131862f295ad97db9067b
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/Country.php=f772b574b2b1310977a50daf9d2a51ef
/Users/Thilina/Projects/icehrm/src/Model/Audit.php=31e7780e4e210a8c840188d2015d2e01
/Users/Thilina/Projects/icehrm/src/Classes/Approval/ApproveModuleActionManager.php=834a7aad3a07c194a0a830cc353daec9
/Users/Thilina/Projects/icehrm/src/Loans/Admin/Api/LoansAdminManager.php=0954d425f553598a6f3a9dbefc19fb45
/Users/Thilina/Projects/icehrm/src/Classes/SubActionManager.php=7523ec5017da87c8d7d3e4438310d96f
/Users/Thilina/Projects/icehrm/src/Model/ApproveModel.php=7f15abbdae78812f15d65e7a165f6115
/Users/Thilina/Projects/icehrm/src/Classes/CustomFieldManager.php=7259e4d11e73fdd04984097e00233203
/Users/Thilina/Projects/icehrm/src/Payroll/Admin/Api/PayrollActionManager.php=177d85ae36ed00f8a42d9bb9e8f9aa1a
/Users/Thilina/Projects/icehrm/src/Loans/User/Api/LoansModulesManager.php=4f0650c7b4ab3ec6c241bd32c680dfca
/Users/Thilina/Projects/icehrm/src/Utils/Math/EvalMathStack.php=4b86e2041c19d8ef8eaf7f4ea630e116
/Users/Thilina/Projects/icehrm/src/Users/Admin/Api/UsersAdminManager.php=695662b7186616d4379d0a588b5130e6
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/Language.php=c904c6e3e2e167f5e79afffabf94716a
/Users/Thilina/Projects/icehrm/src/Classes/Macaw.php=5a2f26ffcb41c9f42af776a91c283572
/Users/Thilina/Projects/icehrm/src/Attendance/Common/Model/AttendanceStatus.php=ad80af2d596e584a3ab60a5fce4aac09
/Users/Thilina/Projects/icehrm/src/Classes/Email/SMTPEmailSender.php=0df2a519ce3a2d61d486b9527782f72b
/Users/Thilina/Projects/icehrm/src/FieldNames/Admin/Api/FieldNamesAdminManager.php=5eca8c33ccd8d9fc1c4e5b7fa81ed93c
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayFrequency.php=9207a551d667bab9734aa041e02a1be1
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/CurrencyType.php=e9f5f17d4e18a706e4c4068f253c01ac
/Users/Thilina/Projects/icehrm/src/Employees/Common/Model/EmployeeApproval.php=481ddd171d66e644bb442ab02e97b097
/Users/Thilina/Projects/icehrm/src/Data/Admin/Api/DataImporter.php=ad94e2de98e11c1d3f0f0b32c46f358c
/Users/Thilina/Projects/icehrm/src/Expenses/Common/Model/EmployeeExpense.php=29d2dccb5d009d392c4b8f44c59fcdd8
/Users/Thilina/Projects/icehrm/test/TestTemplate.php=8e6ff185d587f339892a9a720e2bfa5f
/Users/Thilina/Projects/icehrm/src/Classes/Crypt/Aes.php=d0b15a04faf73b0ff35efc308d09b6e7
/Users/Thilina/Projects/icehrm/src/Classes/LanguageManager.php=8df5d6d62bae8a5e14ab1cd486325af3
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/Education.php=6f992ef2bb13951f3c52f5209d73733b
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/EmployeeLeavesReport.php=0bd5801ac4c9803db53198c68904d5f5
/Users/Thilina/Projects/icehrm/src/TimeSheets/Common/Model/EmployeeTimeSheet.php=2a4e685315485e4933df5d2ba856d8fb
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/ClientProjectTimeReport.php=f860b3cff536b5074bb7d1e193c1c41d
/Users/Thilina/Projects/icehrm/src/Expenses/User/Api/ExpensesActionManager.php=c8ce93f6877fd2cdbc963b5c38708f04
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/EmployeeAttendanceReport.php=600c1feca3eab6d724ac9661f2f514d5
/Users/Thilina/Projects/icehrm/src/Utils/Math/EvalMath.php=476cb2ee5306966d7cd7bee2f3202559
/Users/Thilina/Projects/icehrm/src/Model/Migration.php=3f11c6dfaa18d4a6dcb2caa8d3677121
/Users/Thilina/Projects/icehrm/src/Data/Common/Model/DataImportFile.php=a0b3f8410e80862ba79aa9d8fed383d7
/Users/Thilina/Projects/icehrm/src/Travel/User/Api/TravelActionManager.php=e6241358886dc00138506f3bc4d13346
/Users/Thilina/Projects/icehrm/src/Company/Common/Model/CompanyStructure.php=a1957202858bc093b29e8dfe48955cc6
/Users/Thilina/Projects/icehrm/src/Classes/Migration/AbstractMigration.php=324fe15e15a0ca2b0f50f4029ae10548
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/EmployeeCertification.php=96045388cba569f4ea9617dc8fbeded6
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayslipTemplate.php=cc9bf7552cfccd84a0b9b1431f224f1f
/Users/Thilina/Projects/icehrm/test/test.includes.php=d87bcd9386b3271b62818e2b86df6c28
/Users/Thilina/Projects/icehrm/src/Company/Admin/Api/CompanyAdminManager.php=484a8b669d5fed117f1f40f289f2c6f4
/Users/Thilina/Projects/icehrm/src/Classes/Email/PHPMailer.php=54789d10177cc5075cb4d50838b05821
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/EmployeeEducation.php=8ba4cbc034b5ee23d593cc3352cf46a9
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Reports/TerminatedEmployeeReport.php=1b8b58d6e85eb77e45aaf44f426025ea
/Users/Thilina/Projects/icehrm/src/Users/Admin/Api/UsersEmailSender.php=87247955c331115e482aa3e577eca0b4
/Users/Thilina/Projects/icehrm/src/Classes/IceConstants.php=5f7497997d12c27dab080b6f34640df1
/Users/Thilina/Projects/icehrm/test/test.config.php=2d82ac9b697f10bb9bd6d760f63d2be4
/Users/Thilina/Projects/icehrm/src/Travel/Common/Model/ImmigrationDocument.php=c0636d2ce3e7d89d9e4ebb00c8d1450f
/Users/Thilina/Projects/icehrm/src/Classes/ModuleBuilder/ModuleBuilder.php=29fed2a27587032060efc02c7a30a838
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/PayslipReport.php=a7197be66726cf126c196bf6beccb907
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/EmployeeTimeTrackReport.php=ce6f2b098845233342c336f837001554
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/PDFReportBuilderInterface.php=cc049c4c1b86e5a5e4fd99ddf24e563d
/Users/Thilina/Projects/icehrm/src/Qualifications/User/Api/QualificationsModulesManager.php=e668d64139ecc146af9ebaea2f91e1fe
/Users/Thilina/Projects/icehrm/src/Classes/RestEndPoint.php=86136262a2e2a8f45564d17123dd5812
/Users/Thilina/Projects/icehrm/src/Classes/S3FileSystem.php=6308aca72380cef1981625946b59652f
/Users/Thilina/Projects/icehrm/src/Classes/Cron/Task/EmailIceTask.php=b754a286061db310b3f18677946d7b43
/Users/Thilina/Projects/icehrm/src/Data/Admin/Import/EmployeeDataImporter.php=d1b66e2d042335df792fa8913d363d5f
/Users/Thilina/Projects/icehrm/src/Projects/Common/Model/EmployeeProject.php=b0de956de8ec4c423604195b96f57df9
/Users/Thilina/Projects/icehrm/src/Model/Report.php=498c96015d1be2b31d8cd0bcedea7fab
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/CustomFieldValue.php=a9b7d8db9ee113345298ba49f9354be8
/Users/Thilina/Projects/icehrm/src/Classes/Cron/IceCron.php=edb023962095493d7daa728793ceaf9c
/Users/Thilina/Projects/icehrm/src/Settings/Admin/Api/SettingsInitialize.php=148bc391f5d101121f915a590f991a6b
/Users/Thilina/Projects/icehrm/src/Dashboard/Admin/Api/DashboardActionManager.php=5e8e996f9f4b77f1fbd10e026a5d1351
/Users/Thilina/Projects/icehrm/src/Payroll/Admin/Api/PayrollAdminManager.php=9bac9a6ed8406c9eb6fe7ef666aee482
/Users/Thilina/Projects/icehrm/src/Jobs/Admin/Api/JobsAdminManager.php=12546328edffcc5bda7e84f6a8c56d9e
/Users/Thilina/Projects/icehrm/src/Jobs/Common/Model/PayGrade.php=55f2f83ff22136154b14460b6b37632a
/Users/Thilina/Projects/icehrm/src/EmergencyContacts/Common/Model/EmergencyContact.php=6ec07210d94e695732c6d1a6a0fb34be
/Users/Thilina/Projects/icehrm/src/Employees/Admin/Api/EmployeesActionManager.php=63c6ccf63f54eab8556c893cf47f983c
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/CalculationHook.php=bbfa6f83e4042db9640b67c131274118
/Users/Thilina/Projects/icehrm/src/Users/Common/Model/User.php=cc9b6c966b40678574fdd35bb1f16cb2
/Users/Thilina/Projects/icehrm/src/Users/Admin/Api/UsersActionManager.php=b65c97c665190f9fb011cc8d0b97888c
/Users/Thilina/Projects/icehrm/src/Attendance/User/Api/AttendanceModulesManager.php=f1b34fae71cc963e197b41ed2ca032ca
/Users/Thilina/Projects/icehrm/src/Classes/IceResponse.php=bb74495c33fab87e96f72b610cfd5374
/Users/Thilina/Projects/icehrm/src/Qualifications/Common/Model/Certification.php=e81a7f90a10799d97a918e2cb071c1a9
/Users/Thilina/Projects/icehrm/src/Model/BaseModel.php=d932a9bb126c174000b9c51a8cb4d2f6
/Users/Thilina/Projects/icehrm/src/Model/StatusChangeLog.php=0745140bddda3f06915dcfcc6ac97ce8
/Users/Thilina/Projects/icehrm/src/Classes/AbstractInitialize.php=841a38244ca1d44b008f67a6b45df348
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/EmployeeTimeSheetData.php=2d6e95947963949b1c5150269d7527f7
/Users/Thilina/Projects/icehrm/src/Data/Admin/Api/DataActionManager.php=82f3ced08b946ca6e10a83c6e07475db
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/OvertimeReport.php=431965980b2458019398d2ed6d7fc39a
/Users/Thilina/Projects/icehrm/src/Metadata/Common/Model/Ethnicity.php=5f5935cdeab1b41ac0d2db9f6973f6b0
/Users/Thilina/Projects/icehrm/test/integration/MigrationManagerIntegration.php=f0f5bccf120067b34396f1e61fd6d20a
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/CSVReportBuilderInterface.php=6ada9a15e850c09162fc75020d6b00e4
/Users/Thilina/Projects/icehrm/src/Payroll/Common/Model/PayrollCalculations.php=70d1b733b1adbb6c6a2ea0dcec89efca
/Users/Thilina/Projects/icehrm/src/Travel/Admin/Api/TravelAdminManager.php=9b3c6e369e2264d2bc9fca122e8ed90c
/Users/Thilina/Projects/icehrm/src/Model/ReportFile.php=0a766e94902b5473ef1fa24583cf2481
/Users/Thilina/Projects/icehrm/src/Modules/Admin/Api/ModulesActionManager.php=c4d592d8930201a883a5d1ea71a037af
/Users/Thilina/Projects/icehrm/src/Model/IceEmail.php=02bd3cd01cb37ab05d763e468cba3835
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/ReportBuilderInterface.php=dd7e723c48ec4f97db98ffec0d0f39cb
/Users/Thilina/Projects/icehrm/src/TimeSheets/User/Api/TimeSheetsModulesManager.php=63a8c4364cd579be46b60a2e83f8f87f
/Users/Thilina/Projects/icehrm/src/Employees/Common/Model/ArchivedEmployee.php=6056e5073538c0d7a22dea52b6c25374
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/ReportBuilder.php=9b0e8e996157caebcf17a2a342ba0f6e
/Users/Thilina/Projects/icehrm/src/Users/Common/Model/UserRole.php=8d7dbcdf68c2c5a7a4d4f73dbb07d63b
/Users/Thilina/Projects/icehrm/src/Salary/Common/Model/PayFrequency.php=fab16310b7db7bb9aace5a6b038c9d2a
/Users/Thilina/Projects/icehrm/src/Model/Notification.php=0b06b249e456508d5a8ce06b453efe6b
/Users/Thilina/Projects/icehrm/src/Attendance/Admin/Api/AttendanceDashboardManager.php=c08fc7c021dd0c0780851c308225291f
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/TravelRequestReport.php=810d405042307fe9c6ca82e082c3673e
/Users/Thilina/Projects/icehrm/src/Attendance/Common/Model/Attendance.php=aa0945e6fc70e6e3418d0e09f7110082
/Users/Thilina/Projects/icehrm/src/Employees/Common/Model/EmploymentStatus.php=11365db49528f08847e0dfbf1b31472d
/Users/Thilina/Projects/icehrm/src/Attendance/Admin/Api/AttendanceAdminManager.php=21e4a22a3eb290704181e5a4a7a5df7a
/Users/Thilina/Projects/icehrm/src/Classes/HistoryManager.php=4741dd856bb81ec2e27bd016afb8e042
/Users/Thilina/Projects/icehrm/src/Dashboard/Admin/Api/DashboardAdminManager.php=800b72969de1b8c311a8e1b7d2940c79
/Users/Thilina/Projects/icehrm/src/Overtime/User/Api/OvertimeModulesManager.php=b29d52a4e3f021cdd786f41cbf1b9837
/Users/Thilina/Projects/icehrm/src/Reports/User/Reports/OvertimeSummaryReport.php=3918d7210957040977b8a43c580abae0
/Users/Thilina/Projects/icehrm/src/Classes/ModuleBuilder/ModuleTab.php=89136363d7520967c2d42e175052f4d5
/Users/Thilina/Projects/icehrm/src/Reports/Admin/Api/CSVReportBuilder.php=5c5f7175cc2aff776388c3281cea9cf3
/Users/Thilina/Projects/icehrm/src/Model/Setting.php=5b9440e9211662f5ed69f29794b6054d
/Users/Thilina/Projects/icehrm/src/FieldNames/Common/Model/CustomField.php=88578da07f1f07bae868e17b4a8e4cf7
/Users/Thilina/Projects/icehrm/src/Attendance/User/Api/AttendanceActionManager.php=feaa97dd192e7faec2045aba7dc03125
/Users/Thilina/Projects/icehrm/src/Overtime/Common/Model/OvertimeCategory.php=e9c90b23155e3fe1c7d9dd9cef462d1e
/Users/Thilina/Projects/icehrm/src/Attendance/Common/Calculations/CaliforniaOvertimeCalculator.php=a1a5ff46939030747f505710fbd49ffd

2
core/.htaccess Normal file
View File

@@ -0,0 +1,2 @@
order deny,allow
deny from all

View File

@@ -1,31 +1,16 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'attendance_monitor';
$moduleName = 'attendance';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$photoAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance: Photo Attendance');
$mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance: Request Attendance Location on Mobile');
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
@@ -65,18 +50,41 @@ $photoAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendan
<div class="row" style="background: #f3f4f5; padding: 10px;text-align: center;">
<h4 id="attendnaceCanvasEmp"></h4>
</div>
<div class="row" style="background: #f3f4f5; padding: 10px;">
<div class="col-sm-6" style="text-align: center;">
<canvas id="attendnaceCanvasIn" height="156" width="208" style="border: 1px #222 dotted;"></canvas>
<hr/>
<span id="attendnaceCanvasPunchInTime"></span>
<div class="row" style="background: #f3f4f5; padding: 10px;">
<div id="attendnaceCanvasPunchInTimeWraper" class="col-sm-6" style="text-align: center;">
<b>In: </b><span id="attendnaceCanvasPunchInTime"></span>
<br/>
IP Address: <span id="punchInIp"></span>
</div>
<div id="attendnaceCanvasPunchOutTimeWrapper" class="col-sm-6" style="text-align: center;">
<b>Out: </b><span id="attendnaceCanvasPunchOutTime"></span>
<br/>
IP Address: <span id="punchOutIp"></span>
</div>
</div>
<div id="attendancePhoto" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
<div id="attendnaceCanvasInWrapper" class="col-sm-6" style="text-align: center;">
</div>
<div class="col-sm-6" style="text-align: center;">
<canvas id="attendnaceCanvasOut" height="156" width="208" style="border: 1px #222 dotted;"></canvas>
<hr/>
<span id="attendnaceCanvasPunchOutTime"></span>
<div id="attendnaceCanvasOutWrapper" class="col-sm-6" style="text-align: center;">
</div>
</div>
<div id="attendanceMap" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
<div id="attendnaceMapCanvasInWrapper" class="col-sm-6" style="text-align: center;">
</div>
<div id="attendnaceMapCanvasOutWrapper" class="col-sm-6" style="text-align: center;">
</div>
<div class="col-sm-6" style="text-align: center;">
<span>Location: <span id="punchInLocation"></span></span>
</div>
<div class="col-sm-6" style="text-align: center;">
<span>Location: <span id="punchOutLocation"></span></span>
</div>
</div>
</div>
<div class="modal-footer">
@@ -88,7 +96,7 @@ $photoAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendan
var modJsList = new Array();
modJsList['tabAttendance'] = new AttendanceAdapter('Attendance','Attendance','','in_time desc');
modJsList['tabAttendance'].setRemoteTable(true);
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1'?>);
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1' || $mapAttendance == '1'?>);
modJsList['tabAttendanceStatus'] = new AttendanceStatusAdapter('AttendanceStatus','AttendanceStatus','','');
modJsList['tabAttendanceStatus'].setShowAddNew(false);
var modJs = modJsList['tabAttendance'];

View File

@@ -2,7 +2,7 @@
"label": "Monitor Attendance",
"menu": "Employees",
"order": "8",
"icon": "fa-clock-o",
"icon": "fa-clock",
"user_levels": [
"Admin",
"Manager"

View File

@@ -0,0 +1,44 @@
ICEHRM END USER LICENSE AGREEMENT
NOTICE TO ALL USERS: BY PURCHASING THE MODULE, YOU (EITHER AN INDIVIDUAL OR A SINGLE ENTITY) CONSENT TO BE BOUND BY AND BECOME A PARTY TO THIS AGREEMENT.
All references to "Software" herein shall be deemed to include the software license with which you will be provided by Gamonoid Media Pvt Ltd, as part of the Software.
1. LICENSE GRANT. Subject to the payment of the applicable licence fees, and subject to the terms and conditions of this Agreement, ICEHRM hereby grants to you a non-exclusive, non-transferable right to use one copy of the specified version of the Software and the accompanying documentation (the "Documentation") for the term of this Agreement solely for your own internal business purposes. You may install one copy of the Software for production use.
.
2. USE. The Software is licensed as a single product; it may not be used on more than one ICEHRM Server at a time. The Software is "in use" on a Server when its installed on a Server. You shall not, nor permit any third party to copy (other than as expressly permitted herein). You shall not rent, lease or lend the Software to any other person, nor transfer or sub-licence your licence rights to any other person.
3. TERM. This Agreement is effective until terminated as set forth herein. This Agreement will terminate automatically if you fail to comply with any of the conditions, limitations or other requirements described herein. Upon any termination of this Agreement, you must immediately destroy all copies of the Software and the Documentation. You may terminate this Agreement at any point by destroying all copies of the Software and the Documentation.
4. SUPPORT. Gamonoid Media Pvt Ltd will provide you support according to the support agreement subscribed by the company.
5. OWNERSHIP RIGHTS. The Software is protected by copyright laws. ICEHRM and Gamonoid Media Pvt Ltd own and retain all right, title and interest in and to the Software, including all copyrights, patents, trademarks and other intellectual property rights therein. Your possession, installation, or use of the Software does not transfer to you any title to the intellectual property in the Software, and you will not acquire any rights to the Software except as expressly set forth in this Agreement.
6. LIMITED WARRANTY. You may not rent, lease, loan or resell the Software. You may not permit third parties to benefit from the use or functionality of the Software via a timesharing, service bureau or other arrangement, except to the extent such use is specified in the applicable list price or product packaging for the Software. You may not transfer any of the rights granted to you under this Agreement. You may not modify, or create derivative works based upon, the Software in whole or in part. You may not copy the Software or Documentation except as expressly permitted in Section 1 above. You may not remove any proprietary notices or labels on the Software. All rights not expressly set forth hereunder are reserved by ICEHRM. ICEHRM reserves the right to periodically conduct audits upon advance written notice to verify compliance with the terms of this Agreement.
7. WARRANTY and DISCLAIMER.
(i) Gamonoid Media Pvt Ltd. warrants that for 30 days from first download or installation the Software will perform substantially in accordance with the functionality described in the Documentation (http://blog.icehrm.com) when operated properly and in the manner specified in the Documentation.
(ii) You accept all responsibility for the selection of this Software to meet your requirements.
(iii) Gamonoid Media Pvt Ltd. does not warrant that the Software and/or the Documentation will be suitable for such requirements nor that any use will be uninterrupted and error free.
(iv) The warranty in (i) shall not apply if you (a) make or cause to be made any modifications to this Software, (b) use the Software in a manner for which it was not intended or (c) use the Software other than as permitted under this Agreement.
(vii) The warranties and conditions stated in this Agreement are in lieu of all other conditions, warranties or other terms concerning the supply or purported supply of, failure to supply or delay in supplying the Software or the Documentation which might but for this paragraph (vii) have effect between the ICEHRM and you or would otherwise be implied into or incorporated into this Agreement or any collateral contract, whether by statute, common law or otherwise, all of which are hereby excluded (including, without limitation, the implied conditions, warranties or other terms as to satisfactory quality, fitness for purpose or as to the use of reasonable skill and care).
8. LIMITATION of LIABILITY. Gamonoid Media Pvt Ltd. shall have no liability (whether in contract, tort, restitution or otherwise) for any of the following losses or damage (whether such losses or damage were foreseen, foreseeable, known or otherwise):
- Loss of revenue;
- Loss of actual or anticipated profits (including for loss of profits on contracts);
- Loss of the use of money;
- Loss of anticipated savings;
- Loss of business;
- Loss of opportunity;
- Loss of goodwill;
- Loss of reputation;
- Loss of, damage to or corruption of data;
or
Any indirect or consequential loss or damage howsoever caused (including, for the avoidance of doubt, where such loss or damage is of the type specified in paragraph (ii), (a) to (ii), (i).
The ICEHRM liability (whether in contract, tort, restitution or otherwise) arising out of or in connection with the supply of the Software shall in no circumstances exceed a sum equal to the amount equally paid by you for the Software.
The construction and interpretation of this Agreement shall be governed in accordance with the laws of Sri Lanka. The parties hereby submit to the jurisdiction of the courts of Sri Lanka save that ICEHRM as claimant shall be entitled to initiate proceedings in any court of competent jurisdiction.
This Agreement contains the entire understanding of the parties with respect to the subject matter hereof and supersedes all and any prior understandings, undertakings and promises between you and ICEHRM, whether oral or in writing, which have been given or may be implied from anything written or said in negotiations between us or our representatives prior to this Agreement and all prior agreements between the parties relating to the matters aforesaid shall cease to have effect as from the Effective Date.

View File

@@ -0,0 +1,7 @@
This module is licensed under IceHrm Commercial License, which can be found in LICENSE.txt.
You are allowed to make any modification required to these module, but only allowed to use
the module in one production server (even with modifications).
Installation
------------
Copy this module into <icehrm path>/admin/ directory

View File

@@ -0,0 +1,57 @@
<?php
$moduleName = 'charts';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
?>
<link href="<?=BASE_URL.'js/nvd3/src/nv.d3.css?v='.$jsVersion?>" rel="stylesheet" type="text/css">
<script src="<?=BASE_URL.'js/nvd3/lib/d3.v3.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/nv.d3.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/tooltip.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/utils.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/models/legend.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/models/axis.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/models/multiBar.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/models/discreteBar.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/src/models/discreteBarChart.js?v='.$jsVersion?>"></script>
<script src="<?=BASE_URL.'js/nvd3/stream_layers.js?v='.$jsVersion?>"></script>
<style type="text/css">
svg .tooltip { opacity: 1; }
</style>
<div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabAttendanceGraph" href="#tabPageAttendanceGraph"><?=t('Attendance Graph')?></a></li>
<li><a id="tabTimeUtilizationGraph" href="#tabPageTimeUtilizationGraph"><?=t('Hours in Office vs Hours Worked Graph')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active reviewBlock with-3d-shadow with-transitions" id="tabPageAttendanceGraph" style="height: 500px;position: relative;">
<svg></svg>
</div>
<div class="tab-pane reviewBlock with-3d-shadow with-transitions" id="tabPageTimeUtilizationGraph" style="height: 500px;position: relative;">
<svg></svg>
</div>
</div>
</div>
<script>
var modJsList = new Array();
modJsList['tabAttendanceGraph'] = new AttendanceGraphAdapter('AttendanceGraph');
modJsList['tabAttendanceGraph'].setShowAddNew(false);
modJsList['tabTimeUtilizationGraph'] = new TimeUtilizationGraphAdapter('TimeUtilizationGraph');
modJsList['tabTimeUtilizationGraph'].setShowAddNew(false);
var modJs = modJsList['tabAttendanceGraph'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -0,0 +1,13 @@
{
"label": "Time and Attendance",
"menu": "Insights",
"order": "1",
"icon": "fa-user-clock",
"user_levels": [
"Admin",
"Manager"
],
"permissions": [],
"model_namespace": "\\Charts\\Common\\Model",
"manager": "\\Charts\\Admin\\Api\\ChartsAdminManager"
}

View File

@@ -0,0 +1,51 @@
<?php
/*
Copyright (c) 2020 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\PermissionManager;
use Clients\Common\Model\Client;
$moduleName = 'clients';
$moduleGroup = 'admin';
define('MODULE_PATH', dirname(__FILE__));
include APP_BASE_PATH . 'header.php';
include APP_BASE_PATH . 'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabClient" href="#tabPageClient"><?= t('Clients') ?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageClient">
<div id="ClientTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="ClientForm"></div>
<div id="ClientFilterForm"></div>
</div>
</div>
</div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'permissions' => [
'Client' => PermissionManager::checkGeneralAccess(new Client()),
]
];
?>
<script>
var data = <?= json_encode($moduleData) ?>;
var modJsList = [];
modJsList['tabClient'] = new ClientAdapter('Client');
modJsList.tabClient.setObjectTypeName('Client');
modJsList.tabClient.setAccess(data.permissions.Client);
modJsList.tabClient.setDataPipe(new IceDataPipe(modJsList.tabClient));
modJsList.tabClient.setRemoteTable(true);
var modJs = modJsList['tabClient'];
</script>
<?php include APP_BASE_PATH . 'footer.php'; ?>

View File

@@ -0,0 +1,20 @@
{
"label": "Clients",
"menu": "Admin",
"order": "52",
"icon": "fa-user-circle",
"user_levels": [
"Admin",
"Manager"
],
"dashboardPosition": 4,
"permissions": {
"Manager": {
"Add Clients": "Yes",
"Edit Clients": "Yes",
"Delete Clients": "No"
}
},
"model_namespace": "\\Clients\\Common\\Model",
"manager": "\\Clients\\Admin\\Api\\ClientsAdminManager"
}

View File

@@ -1,27 +1,15 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\BaseService;
use Classes\PermissionManager;
use Company\Common\Model\CompanyStructure;
$moduleName = 'company_structure';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
@@ -57,15 +45,12 @@ path.link {
<li class="active"><a id="tabCompanyStructure" href="#tabPageCompanyStructure"><?=t('Company Structure')?></a></li>
<li><a id="tabCompanyGraph" href="#tabPageCompanyGraph"><?=t('Company Graph')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageCompanyStructure">
<div id="CompanyStructure" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="CompanyStructureForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="CompanyStructureTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="CompanyStructureForm"></div>
<div id="CompanyStructureFilterForm"></div>
</div>
<div class="tab-pane reviewBlock" id="tabPageCompanyGraph" style="overflow-x: scroll;">
@@ -73,24 +58,16 @@ path.link {
</div>
</div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'customFields' => BaseService::getInstance()->getCustomFields("CompanyStructure"),
'permissions' => [
'CompanyStructure' => PermissionManager::checkGeneralAccess(new CompanyStructure()),
]
];
?>
<script>
var modJsList = new Array();
modJsList['tabCompanyStructure'] = new CompanyStructureAdapter('CompanyStructure');
<?php if(isset($modulePermissions['perm']['Add Company Structure']) && $modulePermissions['perm']['Add Company Structure'] == "No"){?>
modJsList['tabCompanyStructure'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Company Structure']) && $modulePermissions['perm']['Delete Company Structure'] == "No"){?>
modJsList['tabCompanyStructure'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Company Structure']) && $modulePermissions['perm']['Edit Company Structure'] == "No"){?>
modJsList['tabCompanyStructure'].setShowEdit(false);
<?php }?>
modJsList['tabCompanyGraph'] = new CompanyGraphAdapter('CompanyStructure');
var modJs = modJsList['tabCompanyStructure'];
initAdminCompanyStructure(<?=json_encode($moduleData)?>);
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -2,7 +2,7 @@
"label":"Company Structure",
"menu":"Admin",
"order":"2",
"icon":"fa-building-o",
"icon":"fa-building",
"user_levels":["Admin","Manager"],
"dashboardPosition":2,

View File

@@ -0,0 +1,59 @@
<?php
use Classes\StatsHelper;
use Connection\Common\ConnectionService;
$moduleName = 'connection';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$isIceHrmPro = false;
if (class_exists('\\Classes\\ProVersion')) {
$data = \Classes\ProVersion::$data;
$isIceHrmPro = true;
$data = json_decode($data, true);
}
$employeeCount = StatsHelper::getEmployeeCount();
$userCount = StatsHelper::getUserCount();
$connectionService = new ConnectionService();
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabConnection" href="#tabConnection"><?=t('Connection')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabConnection">
<div class="reviewBlock" data-content="List">
<div id="connectionData"></div>
</div>
</div>
</div>
</div>
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'components' => [
'employeeCount' => [
'isIceHrmPro' => $isIceHrmPro,
'count' => $employeeCount,
'allowed' => $isIceHrmPro ? intval($data['employees']) : 'N/A',
'validUntil' => $data['licenseActivated'],
'licenseId' => $data['key'],
],
'systemData' => [
'data' => $connectionService->getSystemReport(),
'issues' => $connectionService->getSystemErrors(),
],
]
];
?>
<script>
initAdminConnection(<?=json_encode($moduleData)?>);
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -0,0 +1,12 @@
{
"label": "Ice Connect",
"menu": "System",
"order": "9",
"icon": "fa-wifi",
"user_levels": [
"Admin"
],
"permissions": [],
"model_namespace": "\\Connection\\Common\\Model",
"manager": "\\Connection\\Admin\\Api\\ConnectionAdminManager"
}

View File

@@ -0,0 +1,42 @@
<?php
use Classes\BaseService;
use Classes\PermissionManager;
use FieldNames\Common\Model\CustomField;
$moduleName = 'assets';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$modelClasses = BaseService::getInstance()->getCustomFieldClassMap();
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabCustomField" href="#tabPageCustomField"><?=t('Custom Fields')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageCustomField">
<div id="CustomFieldTable" class="reviewBlock" data-content="List"></div>
<div id="CustomFieldForm"></div>
<div id="CustomFieldFilterForm"></div>
</div>
</div>
</div>
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'types' => $modelClasses,
'permissions' => [
'CustomField' => PermissionManager::checkGeneralAccess(new CustomField()),
]
];
?>
<script>
initAdminCustomFields(<?=json_encode($moduleData)?>);
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -0,0 +1,12 @@
{
"label": "Custom Fields",
"menu": "Admin",
"order": "892",
"icon": "fa-code",
"user_levels": [
"Admin"
],
"permissions": [],
"model_namespace": "\\FieldNames\\Common\\Model",
"manager": "\\CustomField\\Admin\\Api\\CustomFieldAdminManager"
}

View File

@@ -1,121 +1,88 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\BaseService;
use Classes\LanguageManager;
$moduleName = 'dashboard';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$invoices = [];
$numOfUnpaidInvoices = 0;
if (class_exists('\\Billing\\Admin\\Api\\BillingActionManager')) {
$billingActionManager = new \Billing\Admin\Api\BillingActionManager();
$moduleManagers = BaseService::getInstance()->getModuleManagers();
$dashBoardList = array();
foreach($moduleManagers as $moduleManagerObj){
$invoices = $billingActionManager->getInvoices(null)->getData();
if(!empty($invoices)){
$invoices = json_decode(json_encode($invoices));
//Check if this is not an admin module
if($moduleManagerObj->getModuleType() != 'admin'){
continue;
}
foreach($invoices as $inv){
if($inv->status == "Sent"){
$numOfUnpaidInvoices++;
}
$allowed = BaseService::getInstance()->isModuleAllowedForUser($moduleManagerObj);
if(!$allowed){
continue;
}
$item = $moduleManagerObj->getDashboardItem();
if(!empty($item)) {
$index = $moduleManagerObj->getDashboardItemIndex();
$dashBoardList[$index] = $item;
}
}
ksort($dashBoardList);
$dashboardList1 =[];
$dashboardList2 =[];
foreach($dashBoardList as $k=>$v){
if (count($dashboardList1) === 4 ) {
$dashboardList2[] = $v;
} else {
$dashboardList1[] = $v;
}
}
?><div class="span9">
<div class="row">
<?php if($numOfUnpaidInvoices == 1){?>
<div class="callout callout-warning lead" style="font-size: 14px;">
<h4>You have a pending invoice</h4>
<p style="font-weight: bold;">
You have a pending invoice. Please make you complete the payment so we can provide a better service.
<br/>
<br/>
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
</p>
</div>
<?php }else if($numOfUnpaidInvoices > 1){?>
<div class="callout callout-danger lead" style="font-size: 14px;">
<h4>You have <?=$numOfUnpaidInvoices?> pending invoices</h4>
<p style="font-weight: bold;">
You have <?=$numOfUnpaidInvoices?> pending invoice. None of your employees are currently allowed to login. Please make sure you complete payments to all the invoices to restore your service.
Please logout and login after completing the payment to get your service restored.
<br/>
<br/>
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
</p>
</div>
<?php }?>
<?php if(\Utils\SessionUtils::getSessionObject('account_locked') == "1"){?>
<div class="callout callout-danger lead" style="font-size: 14px;">
<h4>Your Trial Has Expired</h4>
<p style="font-weight: bold;">
Your Icehrm Trial has expired. Please upgrade subscription to continue. If not upgraded your account will be deleted with in few days.
<br/>
<br/>
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Upgrade Subscription</a>
</p>
</div>
<?php }?>
<?php
$moduleManagers = \Classes\BaseService::getInstance()->getModuleManagers();
$dashBoardList = array();
foreach($moduleManagers as $moduleManagerObj){
//Check if this is not an admin module
if($moduleManagerObj->getModuleType() != 'admin'){
continue;
}
$allowed = \Classes\BaseService::getInstance()->isModuleAllowedForUser($moduleManagerObj);
if(!$allowed){
continue;
}
$item = $moduleManagerObj->getDashboardItem();
if(!empty($item)) {
$index = $moduleManagerObj->getDashboardItemIndex();
$dashBoardList[$index] = $item;
}
foreach($dashboardList1 as $v){
echo LanguageManager::translateTnrText($v);
}
ksort($dashBoardList);
foreach($dashBoardList as $k=>$v){
echo \Classes\LanguageManager::translateTnrText($v);
?>
</div>
<div class="row">
<div class="col-lg-4 col-xs-12">
<div id="EmployeeOnlineOfflineChartLoader" style="width:100%;"></div>
<div id="EmployeeOnlineOfflineChart" style="display:none;box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);border: none;margin-bottom: 20px;"></div>
</div>
<div class="col-lg-4 col-xs-12">
<div id="EmployeeDistributionChartLoader" style="width:100%;"></div>
<div id="EmployeeDistributionChart" style="display:none;box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);border: none;margin-bottom: 20px;"></div>
</div>
<div class="col-lg-4 col-xs-12">
<div id="TaskListLoader" style="width:100%;"></div>
<div id="TaskListWrap" style="display: none;box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);border: none;margin-bottom: 20px; padding:25px;">
<h4>Tasks to Attend</h4>
<div id="TaskList" style="margin-left: 10px; margin-top: 30px;"></div>
</div>
</div>
</div>
<div class="row">
<?php
foreach($dashboardList2 as $v){
echo LanguageManager::translateTnrText($v);
}
?>
</div>
</div>
<script>
var modJsList = new Array();
var modJsList = [];
modJsList['tabDashboard'] = new DashboardAdapter('Dashboard','Dashboard');

View File

@@ -1,6 +1,7 @@
<?php
$moduleName = 'data';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -0,0 +1,19 @@
<div class="col-lg-3 col-xs-12">
<div class="small-box bg-green">
<div class="inner">
<h3>
<t>Document</t>
</h3>
<p id="numberOfDocuments">
<t>Management</t>
</p>
</div>
<div class="icon">
<i class="ion ion-document"></i>
</div>
<a href="#_moduleLink_#" class="small-box-footer" id="documentLink">
<t>Manage</t> <t>Documents</t> <i class="fa fa-arrow-circle-right"></i>
</a>
</div>
</div>

View File

@@ -0,0 +1,8 @@
Dear #_employee_#,<br/><br/>
Following documents listed under your profile will be soon be expired<br/>
Please login and take necessary actions.
<br/>
<hr/>
#_documents_#
IceHrm Url: <a href="#_url_#">#_url_#</a>
<br/>

View File

@@ -0,0 +1,66 @@
<?php
/*
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'documents';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$activeStr = '';
if($user->user_level == "Manager"){
$activeStr = 'active';
}
$moduleBuilder = new \Classes\ModuleBuilder\ModuleBuilder();
if($user->user_level == "Admin") {
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'CompanyDocument',
'CompanyDocument',
'Company Documents',
'CompanyDocumentAdapter',
'',
'',
true
));
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'Document',
'Document',
'Document Types',
'DocumentAdapter',
'',
'',
false
));
$options1 = array();
$options1['setRemoteTable'] = 'true';
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'EmployeeDocument',
'EmployeeDocument',
'Employee Documents',
'EmployeeDocumentAdapter',
'',
'',
false,
$options1
));
}else{
$options1 = array();
$options1['setRemoteTable'] = 'true';
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'EmployeeDocument',
'EmployeeDocument',
'Employee Documents',
'EmployeeDocumentAdapter',
'',
'',
($user->user_level != "Admin"),
$options1
));
}
echo \Classes\UIManager::getInstance()->renderModule($moduleBuilder);
include APP_BASE_PATH.'footer.php';

View File

@@ -0,0 +1,14 @@
{
"label": "Document Management",
"menu": "Employees",
"order": "2",
"icon": "fa-file-alt",
"user_levels": [
"Admin",
"Manager"
],
"dashboardPosition": 13,
"permissions": [],
"model_namespace": "\\Documents\\Common\\Model",
"manager": "\\Documents\\Admin\\Api\\DocumentsAdminManager"
}

View File

@@ -159,9 +159,10 @@
</div>
</div>
<div class="row" style="margin-left:10px;margin-top:20px;">
<div id="customFieldsCont">
<div id="customFieldsCont">
</div>
</div>

View File

@@ -1,6 +1,16 @@
<?php
use Classes\PermissionManager;
use Dependents\Common\Model\EmployeeDependent;
use EmergencyContacts\Common\Model\EmergencyContact;
use Employees\Common\Model\Employee;
use Qualifications\Common\Model\EmployeeCertification;
use Qualifications\Common\Model\EmployeeEducation;
use Qualifications\Common\Model\EmployeeLanguage;
use Qualifications\Common\Model\EmployeeSkill;
$moduleName = 'employees';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
@@ -9,139 +19,97 @@ $customFields = \Classes\BaseService::getInstance()->getCustomFields("Employee")
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<?php if($user->user_level != "Admin"){
?>
<li class="active"><a id="tabEmployee" href="#tabPageEmployee"><?=t('Employees (Direct Reports)')?></a></li>
<?php }else{ ?>
<li class="active"><a id="tabEmployee" href="#tabPageEmployee"><?=t('Employees')?></a></li>
<?php }?>
<?php if($user->user_level == "Admin"){
?>
<li class="active"><a id="tabEmployee" href="#tabPageEmployee"><?=t('Employees')?></a></li>
<li><a id="tabEmployeeSkill" href="#tabPageEmployeeSkill"><?=t('Skills')?></a></li>
<li><a id="tabEmployeeEducation" href="#tabPageEmployeeEducation"><?=t('Education')?></a></li>
<li><a id="tabEmployeeCertification" href="#tabPageEmployeeCertification"><?=t('Certifications')?></a></li>
<li><a id="tabEmployeeLanguage" href="#tabPageEmployeeLanguage"><?=t('Languages')?></a></li>
<li><a id="tabEmployeeDependent" href="#tabPageEmployeeDependent"><?=t('Dependents')?></a></li>
<li><a id="tabEmergencyContact" href="#tabPageEmergencyContact"><?=t('Emergency Contacts')?></a></li>
<?php if (class_exists('\\Documents\\Admin\\Api\\DocumentsAdminManager')) {?>
<li><a id="tabEmployeeDocument" href="#tabPageEmployeeDocument"><?=t('Documents')?></a></li>
<?php } ?>
<?php }?>
<?php if($user->user_level == "Admin"){
?>
<li class="dropdown">
<a href="#" id="terminatedEmployeeMenu" class="dropdown-toggle" data-toggle="dropdown" aria-controls="terminatedEmployeeMenu-contents"><?=t('Deactivated Employees')?> <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="terminatedEmployeeMenu" id="terminatedEmployeeMenu-contents">
<li><a id="tabTerminatedEmployee" href="#tabPageTerminatedEmployee"><?=t('Temporarily Deactivated Employees')?></a></li>
<li><a id="tabArchivedEmployee" href="#tabPageArchivedEmployee"><?=t('Terminated Employee Data')?></a></li>
</ul>
</li>
<?php }?>
<li><a id="tabEmergencyContact" href="#tabPageEmergencyContact"><?=t('Contacts')?></a></li>
<li><a id="tabTerminatedEmployee" href="#tabPageTerminatedEmployee"><?=t('Deactivated')?></a></li>
<li><a id="tabArchivedEmployee" href="#tabPageArchivedEmployee"><?=t('Archived')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageEmployee">
<div id="Employee" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeForm"></div>
<div id="EmployeeFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeSkill">
<div id="EmployeeSkill" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeSkillForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeSkillTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeSkillForm"></div>
<div id="EmployeeSkillFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeEducation">
<div id="EmployeeEducation" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeEducationForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeEducationTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeEducationForm"></div>
<div id="EmployeeEducationFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeCertification">
<div id="EmployeeCertification" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeCertificationForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeCertificationTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeCertificationForm"></div>
<div id="EmployeeCertificationFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeLanguage">
<div id="EmployeeLanguage" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeLanguageForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeLanguageTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeLanguageForm"></div>
<div id="EmployeeLanguageFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeDependent">
<div id="EmployeeDependent" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeDependentForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmployeeDependentTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeDependentForm"></div>
<div id="EmployeeDependentFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmergencyContact">
<div id="EmergencyContact" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmergencyContactForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmergencyContactTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmergencyContactForm"></div>
<div id="EmergencyContactFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageArchivedEmployee">
<div id="ArchivedEmployee" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="ArchivedEmployeeForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="ArchivedEmployeeTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="ArchivedEmployeeForm"></div>
<div id="ArchivedEmployeeFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageTerminatedEmployee">
<div id="TerminatedEmployee" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="TerminatedEmployeeForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="TerminatedEmployeeTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="TerminatedEmployeeForm"></div>
<div id="TerminatedEmployeeFilterForm"></div>
</div>
<?php if (class_exists('\\Documents\\Admin\\Api\\DocumentsAdminManager')) {?>
<div class="tab-pane" id="tabPageEmployeeDocument">
<div id="EmployeeDocument" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeDocumentForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
<?php } ?>
</div>
</div>
<script>
var modJsList = new Array();
<?php if($user->user_level != "Admin"){
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'customFields' => $customFields,
'permissions' => [
'Employee' => PermissionManager::checkGeneralAccess(new Employee()),
'EmployeeSkill' => PermissionManager::checkGeneralAccess(new EmployeeSkill()),
'EmployeeEducation' => PermissionManager::checkGeneralAccess(new EmployeeEducation()),
'EmployeeCertification' => PermissionManager::checkGeneralAccess(new EmployeeCertification()),
'EmployeeLanguage' => PermissionManager::checkGeneralAccess(new EmployeeLanguage()),
'EmployeeDependent' => PermissionManager::checkGeneralAccess(new EmployeeDependent()),
'EmergencyContact' => PermissionManager::checkGeneralAccess(new EmergencyContact()),
]];
?>
<script>
var modJsList = [];
<?php if($user->user_level != "Admin"){ ?>
modJsList['tabEmployee'] = new EmployeeAdapter('Employee','Employee',{"status":"Active"});
modJsList['tabEmployee'].setShowAddNew(false);
<?php
}else{
?>
modJsList['tabEmployee'].setShowDelete(false);
<?php }else{ ?>
modJsList['tabEmployee'] = new EmployeeAdapter('Employee','Employee',{"status":"Active"});
<?php
}
?>
<?php } ?>
modJsList['tabEmployee'].setObjectTypeName('Employee');
modJsList['tabEmployee'].setModalType(EmployeeAdapter.MODAL_TYPE_STEPS);
modJsList['tabEmployee'].setDataPipe(new IceDataPipe(modJsList['tabEmployee']));
modJsList['tabEmployee'].setAccess(<?=json_encode($moduleData['permissions']['Employee'])?>);
modJsList['tabEmployee'].enableLocalStorage();
$(document).ready(() => modJsList['tabEmployee'].initForm());
modJsList['tabEmployee'].setRemoteTable(true);
modJsList['tabEmployee'].setFieldNameMap(<?=json_encode($fieldNameMap)?>);
@@ -149,45 +117,66 @@ modJsList['tabEmployee'].setCustomFields(<?=json_encode($customFields)?>);
modJsList['tabEmployeeSkill'] = new EmployeeSkillAdapter('EmployeeSkill');
modJsList['tabEmployeeSkill'].setRemoteTable(true);
modJsList['tabEmployeeSkill'].setObjectTypeName('Employee Skill');
modJsList['tabEmployeeSkill'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeSkill']));
modJsList['tabEmployeeSkill'].setAccess(<?=json_encode($moduleData['permissions']['EmployeeSkill'])?>);
modJsList['tabEmployeeEducation'] = new EmployeeEducationAdapter('EmployeeEducation');
modJsList['tabEmployeeEducation'].setRemoteTable(true);
modJsList['tabEmployeeEducation'].setObjectTypeName('Employee Education');
modJsList['tabEmployeeEducation'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeEducation']));
modJsList['tabEmployeeEducation'].setAccess(<?=json_encode($moduleData['permissions']['EmployeeEducation'])?>);
modJsList['tabEmployeeCertification'] = new EmployeeCertificationAdapter('EmployeeCertification');
modJsList['tabEmployeeCertification'].setRemoteTable(true);
modJsList['tabEmployeeCertification'].setObjectTypeName('Employee Certification');
modJsList['tabEmployeeCertification'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeCertification']));
modJsList['tabEmployeeCertification'].setAccess(<?=json_encode($moduleData['permissions']['EmployeeCertification'])?>);
modJsList['tabEmployeeLanguage'] = new EmployeeLanguageAdapter('EmployeeLanguage');
modJsList['tabEmployeeLanguage'].setRemoteTable(true);
modJsList['tabEmployeeLanguage'].setObjectTypeName('Employee Language');
modJsList['tabEmployeeLanguage'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeLanguage']));
modJsList['tabEmployeeLanguage'].setAccess(<?=json_encode($moduleData['permissions']['EmployeeLanguage'])?>);
modJsList['tabEmployeeDependent'] = new EmployeeDependentAdapter('EmployeeDependent');
modJsList['tabEmployeeDependent'].setRemoteTable(true);
modJsList['tabEmployeeDependent'].setObjectTypeName('Employee Dependent');
modJsList['tabEmployeeDependent'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeDependent']));
modJsList['tabEmployeeDependent'].setAccess(<?=json_encode($moduleData['permissions']['EmployeeDependent'])?>);
modJsList['tabEmergencyContact'] = new EmergencyContactAdapter('EmergencyContact');
modJsList['tabEmergencyContact'].setRemoteTable(true);
modJsList['tabEmergencyContact'].setObjectTypeName('Emergency Contact');
modJsList['tabEmergencyContact'].setDataPipe(new IceDataPipe(modJsList['tabEmergencyContact']));
modJsList['tabEmergencyContact'].setAccess(<?=json_encode($moduleData['permissions']['EmergencyContact'])?>);
modJsList['tabEmployeeImmigration'] = new EmployeeImmigrationAdapter('EmployeeImmigration');
modJsList['tabEmployeeImmigration'].setRemoteTable(true);
//modJsList['tabEmployeeImmigration'] = new EmployeeImmigrationAdapter('EmployeeImmigration');
//modJsList['tabEmployeeImmigration'].setRemoteTable(true);
//modJsList['tabEmployeeImmigration'].setObjectTypeName('Employee Dependent');
//modJsList['tabEmployeeImmigration'].setDataPipe(new IceDataPipe(modJsList['tabEmployeeDependent']));
//modJsList['tabEmployeeImmigration'].setAccess(<?//=json_encode($moduleData['permissions']['EmployeeDependent'])?>//);
modJsList['tabArchivedEmployee'] = new ArchivedEmployeeAdapter('ArchivedEmployee');
modJsList['tabArchivedEmployee'].setRemoteTable(true);
modJsList['tabArchivedEmployee'].setShowAddNew(false);
modJsList['tabArchivedEmployee'].setShowEdit(false);
modJsList['tabArchivedEmployee'].setObjectTypeName('Archived Employee');
modJsList['tabArchivedEmployee'].setDataPipe(new IceDataPipe(modJsList['tabArchivedEmployee']));
modJsList['tabArchivedEmployee'].setAccess(<?=json_encode($moduleData['permissions']['Employee'])?>);
modJsList['tabTerminatedEmployee'] = new TerminatedEmployeeAdapter('Employee','TerminatedEmployee',{"status":"Terminated"});
modJsList['tabTerminatedEmployee'].setRemoteTable(true);
modJsList['tabTerminatedEmployee'].setShowAddNew(false);
modJsList['tabTerminatedEmployee'].setShowEdit(false);
modJsList['tabTerminatedEmployee'].setObjectTypeName('Deactivated Employees');
modJsList['tabTerminatedEmployee'].setDataPipe(new IceDataPipe(modJsList['tabTerminatedEmployee']));
modJsList['tabTerminatedEmployee'].setAccess(<?=json_encode($moduleData['permissions']['Employee'])?>);
<?php if (class_exists('\\Documents\\Admin\\Api\\DocumentsAdminManager')) {?>
modJsList['tabEmployeeDocument'] = new EmployeeDocumentAdapter('EmployeeDocument','EmployeeDocument');
modJsList['tabTerminatedEmployee'].setRemoteTable(true);
<?php } ?>
var modJs = modJsList['tabEmployee'];
</script>
<div class="modal" id="createUserModel" tabindex="-1" role="dialog" aria-labelledby="messageModelLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">

View File

@@ -1,14 +1,11 @@
<?php
/*
This file is part of Ice Framework.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'fieldnames';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
@@ -16,8 +13,7 @@ include APP_BASE_PATH.'modulejslibs.inc.php';
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabEmployeeFieldName" href="#tabPageEmployeeFieldName"><?=t('Employee Field Names')?></a></li>
<li><a id="tabEmployeeCustomField" href="#tabPageEmployeeCustomField"><?=t('Employee Custom Fields')?></a></li>
</ul>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageEmployeeFieldName">
@@ -28,29 +24,17 @@ include APP_BASE_PATH.'modulejslibs.inc.php';
</div>
</div>
<div class="tab-pane" id="tabPageEmployeeCustomField">
<div id="EmployeeCustomField" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeCustomFieldForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
</div>
</div>
<script>
var modJsList = new Array();
var modJsList = [];
modJsList['tabEmployeeFieldName'] = new FieldNameAdapter('FieldNameMapping','EmployeeFieldName',{"type":"Employee"});
modJsList['tabEmployeeFieldName'].setRemoteTable(true);
modJsList['tabEmployeeFieldName'].setShowDelete(false);
modJsList['tabEmployeeFieldName'].setShowAddNew(false);
modJsList['tabEmployeeCustomField'] = new CustomFieldAdapter('CustomField','EmployeeCustomField',{"type":"Employee"},"display_order desc");
modJsList['tabEmployeeCustomField'].setRemoteTable(true);
modJsList['tabEmployeeCustomField'].setTableType("Employee");
var modJs = modJsList['tabEmployeeFieldName'];

View File

@@ -1,8 +1,8 @@
{
"label": "Employee Custom Fields",
"label": "Employee Fields",
"menu": "Admin",
"order": "83",
"icon": "fa-sliders",
"icon": "fa-ruler-horizontal",
"user_levels": [
"Admin"
],

View File

@@ -1,73 +1,58 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\PermissionManager;
use Employees\Common\Model\EmploymentStatus;
use Jobs\Common\Model\JobTitle;
use Jobs\Common\Model\PayGrade;
$moduleName = 'jobs';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabJobTitles" href="#tabPageJobTitles"><?=t('Job Titles')?></a></li>
<li><a id="tabPayGrades" href="#tabPagePayGrades"><?=t('Pay Grades')?></a></li>
<li class="active"><a id="tabJobTitle" href="#tabPageJobTitles"><?=t('Job Titles')?></a></li>
<li><a id="tabPayGrade" href="#tabPagePayGrades"><?=t('Pay Grades')?></a></li>
<li><a id="tabEmploymentStatus" href="#tabPageEmploymentStatus"><?=t('Employment Status')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageJobTitles">
<div id="JobTitle" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="JobTitleForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="JobTitleTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="JobTitleForm"></div>
<div id="JobTitleFilterForm"></div>
</div>
<div class="tab-pane" id="tabPagePayGrades">
<div id="PayGrade" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="PayGradeForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="PayGradeTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="PayGradeForm"></div>
<div id="PayGradeFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmploymentStatus">
<div id="EmploymentStatus" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmploymentStatusForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EmploymentStatusTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmploymentStatusForm"></div>
<div id="EmploymentStatusFilterForm"></div>
</div>
</div>
</div>
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'permissions' => [
'JobTitle' => PermissionManager::checkGeneralAccess(new JobTitle()),
'PayGrade' => PermissionManager::checkGeneralAccess(new PayGrade()),
'EmploymentStatus' => PermissionManager::checkGeneralAccess(new EmploymentStatus()),
]
];
?>
<script>
var modJsList = new Array();
modJsList['tabJobTitles'] = new JobTitleAdapter('JobTitle');
modJsList['tabPayGrades'] = new PayGradeAdapter('PayGrade');
modJsList['tabEmploymentStatus'] = new EmploymentStatusAdapter('EmploymentStatus');
var modJs = modJsList['tabJobTitles'];
initAdminJobs(<?=json_encode($moduleData)?>);
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -1,52 +1,36 @@
<?php
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'CompanyLoans';
$moduleName = 'loans';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabCompanyLoan" href="#tabPageCompanyLoan"><?=t('Loan Types')?></a></li>
<li><a id="tabEmployeeCompanyLoan" href="#tabPageEmployeeCompanyLoan"><?=t('Employee Loans')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageCompanyLoan">
<div id="CompanyLoan" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="CompanyLoanForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
<div class="tab-pane" id="tabPageEmployeeCompanyLoan">
<div id="EmployeeCompanyLoan" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeCompanyLoanForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
</div>
@@ -61,4 +45,4 @@ modJsList['tabEmployeeCompanyLoan'] = new EmployeeCompanyLoanAdapter('EmployeeCo
var modJs = modJsList['tabCompanyLoan'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -2,7 +2,7 @@
"label": "Company Loans",
"menu": "Admin",
"order": "89",
"icon": "fa-shield",
"icon": "fa-money-check",
"user_levels": [
"Admin"
],

View File

@@ -1,8 +1,8 @@
{
"Admin":"fa-cubes",
"Employees":"fa-users",
"Admin Reports":"fa-file-text",
"System":"fa-cogs",
"Insights":"fa-bar-chart-o",
"Payroll":"fa-money"
"Admin": "fa-cubes",
"Employees": "fa-grip-horizontal",
"Admin Reports": "fa-book-reader",
"System": "fa-cogs",
"Insights": "fa-chart-line",
"Payroll": "fa-file-archive"
}

View File

@@ -1,27 +1,6 @@
<?php
/*
This file is part of Ice Framework.
Ice Framework is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ice Framework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ice Framework. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
*/
$moduleName = 'metadata';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -2,11 +2,11 @@
"label": "Manage Metadata",
"menu": "System",
"order": "6",
"icon": "fa-sort-alpha-asc",
"icon": "fa-microchip",
"user_levels": [
"Admin"
],
"permissions": [],
"model_namespace": "\\Metadata\\Common\\Model",
"manager": "\\Metadata\\Admin\\Api\\MetadataAdminManager"
}
}

View File

@@ -1,27 +1,11 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'Modules';
$moduleName = 'modules';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -1,27 +1,11 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'travel';
$moduleName = 'overtime';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -1,5 +1,5 @@
{
"label": "Overtime Administration",
"label": "Overtime",
"menu": "Admin",
"order": "82",
"icon": "fa-align-center",

View File

@@ -1,6 +1,7 @@
<?php
$moduleName = 'payroll';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
@@ -10,11 +11,11 @@ include APP_BASE_PATH.'modulejslibs.inc.php';
</style>
<div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabPayrollEmployee" href="#tabPagePayrollEmployee"><?=t('Company Payroll')?></a></li>
<li class="active"><a id="tabPayrollEmployee" href="#tabPagePayrollEmployee"><?=t('Payroll Employees')?></a></li>
<li class=""><a id="tabPayroll" href="#tabPagePayroll"><?=t('Payroll Reports')?></a></li>
<li class=""><a id="tabPayrollColumn" href="#tabPagePayrollColumn"><?=t('Payroll Columns')?></a></li>
<li class=""><a id="tabDeductionGroup" href="#tabPageDeductionGroup"><?=t('Calculation Groups')?></a></li>
<li class=""><a id="tabDeduction" href="#tabPageDeduction"><?=t('Calculation Methods')?></a></li>
<li class=""><a id="tabDeductionGroup" href="#tabPageDeductionGroup"><?=t('Payroll Groups')?></a></li>
<li class=""><a id="tabDeduction" href="#tabPageDeduction"><?=t('Saved Calculations')?></a></li>
<li class=""><a id="tabPayslipTemplate" href="#tabPagePayslipTemplate"><?=t('Payslip Templates')?></a></li>
</ul>

View File

@@ -1,43 +1,27 @@
<?php
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'Permissions';
$moduleName = 'permissions';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabPermission" href="#tabPagePermission"><?=t('Permissions')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPagePermission">
<div id="Permission" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="PermissionForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
</div>
@@ -51,4 +35,4 @@ modJsList['tabPermission'].setShowAddNew(false);
var modJs = modJsList['tabPermission'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -1,113 +1,68 @@
<?php
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\PermissionManager;
use Projects\Common\Model\Project;
use Projects\Common\Model\EmployeeProject;
$moduleName = 'projects';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$moduleGroup = 'admin';
define('MODULE_PATH', dirname(__FILE__));
include APP_BASE_PATH . 'header.php';
include APP_BASE_PATH . 'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabClient" href="#tabPageClient"><?=t('Clients')?></a></li>
<li><a id="tabProject" href="#tabPageProject"><?=t('Projects')?></a></li>
<li><a id="tabEmployeeProject" href="#tabPageEmployeeProject"><?=t('Employee Projects')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageClient">
<div id="Client" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="ClientForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
<div class="tab-pane" id="tabPageProject">
<div id="Project" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="ProjectForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
<div class="tab-pane" id="tabPageEmployeeProject">
<div id="EmployeeProject" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EmployeeProjectForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
</div>
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabProject" href="#tabPageProject"><?= t('Projects') ?></a></li>
<li><a id="tabEmployeeProject" href="#tabPageEmployeeProject"><?= t('Employee Projects') ?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageProject">
<div id="ProjectTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="ProjectForm"></div>
<div id="ProjectFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEmployeeProject">
<div id="EmployeeProjectTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EmployeeProjectForm"></div>
<div id="EmployeeProjectFilterForm"></div>
</div>
</div>
</div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'permissions' => [
'Project' => PermissionManager::checkGeneralAccess(new Project()),
'EmployeeProject' => PermissionManager::checkGeneralAccess(new EmployeeProject()),
]
];
?>
<script>
var modJsList = new Array();
var modJsList = [];
var data = <?= json_encode($moduleData) ?>;
modJsList['tabProject'] = new ProjectAdapter('Project', 'Project');
modJsList.tabProject.setObjectTypeName('Project');
modJsList.tabProject.setAccess(data.permissions.Project);
modJsList.tabProject.setDataPipe(new IceDataPipe(modJsList.tabProject));
modJsList.tabProject.setRemoteTable(true);
modJsList['tabClient'] = new ClientAdapter('Client','Client');
<?php if(isset($modulePermissions['perm']['Add Clients']) && $modulePermissions['perm']['Add Clients'] == "No"){?>
modJsList['tabClient'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Clients']) && $modulePermissions['perm']['Delete Clients'] == "No"){?>
modJsList['tabClient'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Clients']) && $modulePermissions['perm']['Edit Clients'] == "No"){?>
modJsList['tabClient'].setShowSave(false);
<?php }?>
modJsList['tabProject'] = new ProjectAdapter('Project','Project');
<?php if(isset($modulePermissions['perm']['Add Projects']) && $modulePermissions['perm']['Add Projects'] == "No"){?>
modJsList['tabProject'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Projects']) && $modulePermissions['perm']['Delete Projects'] == "No"){?>
modJsList['tabProject'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Projects']) && $modulePermissions['perm']['Edit Projects'] == "No"){?>
modJsList['tabProject'].setShowSave(false);
<?php }?>
modJsList['tabEmployeeProject'] = new EmployeeProjectAdapter('EmployeeProject', 'EmployeeProject');
modJsList['tabEmployeeProject'] = new EmployeeProjectAdapter('EmployeeProject','EmployeeProject');
modJsList['tabEmployeeProject'].setRemoteTable(true);
modJsList.tabEmployeeProject.setObjectTypeName('Employee Project');
modJsList.tabEmployeeProject.setAccess(data.permissions.EmployeeProject);
modJsList.tabEmployeeProject.setDataPipe(new IceDataPipe(modJsList.tabEmployeeProject));
modJsList.tabEmployeeProject.setRemoteTable(true);
<?php if(isset($modulePermissions['perm']['Add Projects']) && $modulePermissions['perm']['Add Projects'] == "No"){?>
modJsList['tabEmployeeProject'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Projects']) && $modulePermissions['perm']['Delete Projects'] == "No"){?>
modJsList['tabEmployeeProject'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Projects']) && $modulePermissions['perm']['Edit Projects'] == "No"){?>
modJsList['tabEmployeeProject'].setShowEdit(false);
<?php }?>
var modJs = modJsList['tabClient'];
var modJs = modJsList['tabProject'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>
<?php include APP_BASE_PATH . 'footer.php'; ?>

View File

@@ -1,5 +1,5 @@
{
"label": "Projects\/Client Setup",
"label": "Projects",
"menu": "Admin",
"order": "51",
"icon": "fa-list-alt",
@@ -12,12 +12,9 @@
"Manager": {
"Add Projects": "Yes",
"Edit Projects": "Yes",
"Delete Projects": "No",
"Add Clients": "Yes",
"Edit Clients": "Yes",
"Delete Clients": "No"
"Delete Projects": "No"
}
},
"model_namespace": "\\Projects\\Common\\Model",
"manager": "\\Projects\\Admin\\Api\\ProjectsAdminManager"
}
}

View File

@@ -1,127 +1,65 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'company_structure';
use Classes\PermissionManager;
use Qualifications\Common\Model\Certification;
use Qualifications\Common\Model\Education;
use Qualifications\Common\Model\Language;
use Qualifications\Common\Model\Skill;
$moduleName = 'qualifications';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabSkill" href="#tabPageSkill"><?=t('Skills')?></a></li>
<li><a id="tabEducation" href="#tabPageEducation"><?=t('Education')?></a></li>
<li><a id="tabCertification" href="#tabPageCertification"><?=t('Certifications')?></a></li>
<li><a id="tabLanguage" href="#tabPageLanguage"><?=t('Languages')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageSkill">
<div id="Skill" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="SkillForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="SkillTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="SkillForm"></div>
<div id="SkillFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageEducation">
<div id="Education" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="EducationForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="EducationTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="EducationForm"></div>
<div id="EducationFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageCertification">
<div id="Certification" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="CertificationForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="CertificationTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="CertificationForm"></div>
<div id="CertificationFilterForm"></div>
</div>
<div class="tab-pane" id="tabPageLanguage">
<div id="Language" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="LanguageForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="LanguageTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="LanguageForm"></div>
<div id="LanguageFilterForm"></div>
</div>
</div>
</div>
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'permissions' => [
'Skill' => PermissionManager::checkGeneralAccess(new Skill()),
'Education' => PermissionManager::checkGeneralAccess(new Education()),
'Certification' => PermissionManager::checkGeneralAccess(new Certification()),
'Language' => PermissionManager::checkGeneralAccess(new Language()),
]
];
?>
<script>
var modJsList = new Array();
modJsList['tabSkill'] = new SkillAdapter('Skill');
<?php if(isset($modulePermissions['perm']['Add Skills']) && $modulePermissions['perm']['Add Skills'] == "No"){?>
modJsList['tabSkill'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Skills']) && $modulePermissions['perm']['Delete Skills'] == "No"){?>
modJsList['tabSkill'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Skills']) && $modulePermissions['perm']['Edit Skills'] == "No"){?>
modJsList['tabSkill'].setShowEdit(false);
<?php }?>
modJsList['tabEducation'] = new EducationAdapter('Education');
<?php if(isset($modulePermissions['perm']['Add Education']) && $modulePermissions['perm']['Add Education'] == "No"){?>
modJsList['tabEducation'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Education']) && $modulePermissions['perm']['Delete Education'] == "No"){?>
modJsList['tabEducation'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Education']) && $modulePermissions['perm']['Edit Education'] == "No"){?>
modJsList['tabEducation'].setShowEdit(false);
<?php }?>
modJsList['tabCertification'] = new CertificationAdapter('Certification');
<?php if(isset($modulePermissions['perm']['Add Certifications']) && $modulePermissions['perm']['Add Certifications'] == "No"){?>
modJsList['tabCertification'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Certifications']) && $modulePermissions['perm']['Delete Certifications'] == "No"){?>
modJsList['tabCertification'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Certifications']) && $modulePermissions['perm']['Edit Certifications'] == "No"){?>
modJsList['tabCertification'].setShowEdit(false);
<?php }?>
modJsList['tabLanguage'] = new LanguageAdapter('Language');
<?php if(isset($modulePermissions['perm']['Add Languages']) && $modulePermissions['perm']['Add Languages'] == "No"){?>
modJsList['tabLanguage'].setShowAddNew(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Delete Languages']) && $modulePermissions['perm']['Delete Languages'] == "No"){?>
modJsList['tabLanguage'].setShowDelete(false);
<?php }?>
<?php if(isset($modulePermissions['perm']['Edit Languages']) && $modulePermissions['perm']['Edit Languages'] == "No"){?>
modJsList['tabLanguage'].setShowEdit(false);
<?php }?>
var modJs = modJsList['tabSkill'];
initAdminQualifications(<?=json_encode($moduleData)?>);
</script>
<?php include APP_BASE_PATH.'footer.php';?>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -2,7 +2,7 @@
"label": "Qualifications Setup",
"menu": "Admin",
"order": "4",
"icon": "fa-check-square-o",
"icon": "fa-check-square",
"user_levels": [
"Admin",
"Manager"
@@ -25,4 +25,4 @@
},
"model_namespace": "\\Qualifications\\Common\\Model",
"manager": "\\Qualifications\\Admin\\Api\\QualificationsAdminManager"
}
}

View File

@@ -1,6 +1,7 @@
<?php
$moduleName = 'Reports';
$moduleName = 'reports';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -2,7 +2,7 @@
"label": "Reports",
"menu": "Admin Reports",
"order": "1",
"icon": "fa-file-o",
"icon": "fa-window-maximize",
"user_levels": [
"Admin",
"Manager"
@@ -11,4 +11,4 @@
"permissions": [],
"model_namespace": "\\Reports\\Common\\Model",
"manager": "\\Reports\\Admin\\Api\\ReportsAdminManager"
}
}

View File

@@ -1,6 +1,7 @@
<?php
$moduleName = 'salary';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';

View File

@@ -2,11 +2,11 @@
"label": "Salary",
"menu": "Payroll",
"order": "1",
"icon": "fa-money",
"icon": "fa-money-check-alt",
"user_levels": [
"Admin"
],
"permissions": [],
"model_namespace": "\\Salary\\Common\\Model",
"manager": "\\Salary\\Admin\\Api\\SalaryAdminManager"
}
}

View File

@@ -1,62 +1,65 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\ModuleBuilder\ModuleBuilder;
use Classes\ModuleBuilder\ModuleTab;
use Classes\UIManager;
$moduleName = 'settings';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$moduleBuilder = new \Classes\ModuleBuilder\ModuleBuilder();
$moduleBuilder = new ModuleBuilder();
$options1 = array();
$options1['setShowAddNew'] = 'false';
$options1['setRemoteTable'] = 'true';
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'CompanySetting','Setting','Company','SettingAdapter','{"name":["Company:"]}','name',true,$options1
$notCloud = !defined('IS_CLOUD') || IS_CLOUD == false;
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'CompanySetting','Setting','Company','SettingAdapter','{"category":"Company"}','name',true,$options1
));
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'SystemSetting','Setting','System','SettingAdapter','{"name":["System:"]}','name',false,$options1
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'SystemSetting','Setting','System','SettingAdapter','{"category":"System"}','name',false,$options1
));
if (!defined('CLOUD_INSTALLATION')) {
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'EmailSetting', 'Setting', 'Email', 'SettingAdapter', '{"name":["Email:"]}', 'name', false, $options1
if ( $notCloud ) {
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'EmailSetting', 'Setting', 'Email', 'SettingAdapter', '{"category":"Email"}', 'name', false, $options1
));
}
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'LeaveSetting','Setting','Leave / PTO','SettingAdapter','{"name":["Leave:"]}','name',false,$options1
if(defined('LEAVE_ENABLED') && LEAVE_ENABLED == true) {
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'LeaveSetting', 'Setting', 'Leave', 'SettingAdapter', '{"category":"Leave"}', 'name', false, $options1
));
}
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'AttendanceSetting','Setting','Attendance','SettingAdapter','{"category":"Attendance"}','name',false,$options1
));
if(!defined('LDAP_ENABLED') || LDAP_ENABLED == true){
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'LDAPSetting','Setting','LDAP','SettingAdapter','{"name":["LDAP:"]}','name',false,$options1
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'LDAPSetting','Setting','LDAP','SettingAdapter','{"category":"LDAP"}','name',false,$options1
));
}
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'AttendanceSetting','Setting','Attendance','SettingAdapter','{"name":["Attendance:"]}','name',false,$options1
if(!defined('SAML_ENABLED') || SAML_ENABLED == true){
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'SAMLSetting','Setting','SAML','SettingAdapter','{"category":"SAML"}','name',false,$options1
));
}
$moduleBuilder->addModuleOrGroup(new ModuleTab(
'OtherSetting','Setting','Other','SettingAdapter','{"category":["Projects","Recruitment","Notifications","Expense","Travel","Api","Overtime"]}','name',false,$options1
));
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'OtherSetting','Setting','Other','SettingAdapter','{"name":["Projects:","Recruitment:","Notifications:","Expense:","Travel:","Api:","Overtime:"]}','name',false,$options1
));
echo \Classes\UIManager::getInstance()->renderModule($moduleBuilder);
echo UIManager::getInstance()->renderModule($moduleBuilder);
?>
</div>
<script>

View File

@@ -1,27 +1,11 @@
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
$moduleName = 'travel';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
@@ -47,22 +31,6 @@ $moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
$travelRequestOptions
));
if ($user->user_level === 'Admin') {
$travelCustomFieldOptions = [];
$travelCustomFieldOptions['setRemoteTable'] = 'true';
$travelCustomFieldOptions['setTableType'] = '\'EmployeeTravelRecord\'';
$moduleBuilder->addModuleOrGroup(new \Classes\ModuleBuilder\ModuleTab(
'TravelCustomField',
'CustomField',
'Custom Fields',
'CustomFieldAdapter',
'{"type":"EmployeeTravelRecord"}',
'',
false,
$travelCustomFieldOptions
));
}
echo \Classes\UIManager::getInstance()->renderModule($moduleBuilder);

View File

@@ -4,14 +4,23 @@ Your account in <b>IceHrm</b> has been created on <a href="#_url_#">#_url_#</a><
<b>Please find your account information below:</b><br/><br/>
Username: <b>#_username_#</b><br/>
Email: <b>#_email_#</b> (You can use, username or email to login)<br/>
Password: <b>#_password_#</b> (Strongly advised to change this password once logged in)<br/>
Temporary Password: <b>#_password_#</b> (Strongly advised to change this password once logged in)<br/>
<br/>
To get started, follow this link: <b><a href="#_url_#">#_url_#</a></b><br/><br/>
Login to IceHrm here: (<b><a href="#_url_#">#_url_#</a></b>)<br/>
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; width: 100%; margin: 30px auto; padding: 0; text-align: center;">
<tr>
<td align="center" style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box;">
<div style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box;">
<a href="#_url_#" class="button" style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; width: 200px; border-radius: 3px; color: #ffffff; font-size: 15px; line-height: 45px; text-align: center; text-decoration: none; -webkit-text-size-adjust: none; mso-hide: all; background-color: #22BC66;" target="_blank">Get Started</a>
</div>
</td>
</tr>
</table>
<font face="Arial, sans-serif" size="1" color="#4a4a4a">
THIS IS AN AUTOMATED EMAIL - REPLIES WILL BE SENT TO #_adminEmail_#
</font>
<br/>
<br/>
<br/>

View File

@@ -1,66 +1,70 @@
<?php
<?php
/*
This file is part of iCE Hrm.
iCE Hrm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
iCE Hrm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with iCE Hrm. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
*/
use Classes\PermissionManager;
use Users\Common\Model\UserRole;
$moduleName = 'users';
$moduleGroup = 'admin';
define('MODULE_PATH',dirname(__FILE__));
include APP_BASE_PATH.'header.php';
include APP_BASE_PATH.'modulejslibs.inc.php';
$csrf = \Classes\BaseService::getInstance()->generateCsrf('User');
$modelClasses = array_keys(\Classes\BaseService::getInstance()->getModelClassMap());
$modelClasses = array_map(function($item) {
return [ $item, $item ];
}, $modelClasses);
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabUser" href="#tabPageUser"><?=t('Users')?></a></li>
<li class=""><a id="tabUserRole" href="#tabPageUserRole"><?=t('User Roles')?></a></li>
<li class=""><a id="tabUserRole" href="#tabPageUserRole"><?=t('Users Roles')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageUser">
<div id="User" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="UserForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
<div id="UserForm" class="reviewBlock" data-content="Form" data-csrf="<?=$csrf?>" style="padding-left:5px;display:none;">
</div>
</div>
<div class="tab-pane" id="tabPageUserRole">
<div id="UserRole" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="UserRoleForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="UserRoleTable" class="reviewBlock" data-content="List" style="padding-left:5px;"></div>
<div id="UserRoleForm"></div>
<div id="UserRoleFilterForm"></div>
</div>
</div>
</div>
<div id="dataGroup"></div>
<?php
$moduleData = [
'user_level' => $user->user_level,
'permissions' => [
'UserRole' => PermissionManager::checkGeneralAccess(new UserRole()),
]];
?>
<script>
var modJsList = new Array();
var modJsList = [];
modJsList['tabUser'] = new UserAdapter('User');
<?php if(isset($_REQUEST['action']) && $_REQUEST['action'] == "new" && isset($_REQUEST['object'])){?>
modJsList['tabUser'].newInitObject = JSON.parse(Base64.decode('<?=$_REQUEST['object']?>'));
modJsList['tabUser'].setCSRFRequired(true);
modJsList['tabUser'].setRemoteTable(true);;
<?php if(isset($_GET['action']) && $_GET['action'] == "new" && isset($_GET['object'])){?>
modJsList['tabUser'].newInitObject = JSON.parse(Base64.decode('<?=$_GET['object']?>'));
<?php }?>
modJsList['tabUserRole'] = new UserRoleAdapter('UserRole');
modJsList['tabUserRole'].setTables(<?=json_encode($modelClasses)?>);
modJsList['tabUserRole'].setObjectTypeName('User Role');
modJsList['tabUserRole'].setDataPipe(new IceDataPipe(modJsList['tabUserRole']));
modJsList['tabUserRole'].setAccess(<?=json_encode($moduleData['permissions']['UserRole'])?>);
var modJs = modJsList['tabUser'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>
<div id="UserRoleFormReact"></div>
<div id="dataGroup"></div>
<?php include APP_BASE_PATH.'footer.php';?>

47
core/api-rest.php Normal file
View File

@@ -0,0 +1,47 @@
<?php
define('CLIENT_PATH',dirname(__FILE__));
include ("config.base.php");
include ("include.common.php");
include("server.includes.inc.php");
if(\Classes\SettingsManager::getInstance()->getSetting('Api: REST Api Enabled') == '1') {
if (defined('SYM_CLIENT')) {
define('REST_API_PATH', '/'.SYM_CLIENT.'/');
} else if (!defined('REST_API_PATH')){
define('REST_API_PATH', '/');
}
\Utils\LogManager::getInstance()->info("Request: " . $_REQUEST);
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
$echoRoute = \Classes\Macaw::get(REST_API_PATH . 'echo', function () {
echo "Echo " . rand();
});
\Utils\LogManager::getInstance()->debug('Api registered URI: '.$echoRoute);
$moduleManagers = \Classes\BaseService::getInstance()->getModuleManagers();
foreach ($moduleManagers as $moduleManagerObj) {
$moduleManagerObj->setupRestEndPoints();
}
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$method = $_SERVER['REQUEST_METHOD'];
\Utils\LogManager::getInstance()->debug('Api dispatch URI: '.$uri);
\Utils\LogManager::getInstance()->debug('Api dispatch method: '.$uri);
if (!defined('SYM_CLIENT')) {
//For hosted installations, dispatch will be done in app/index
\Classes\Macaw::dispatch();
}
}else{
echo "REST Api is not enabled. Please set 'Api: REST Api Enabled' setting to true";
}

39
core/api-url-based.php Normal file
View File

@@ -0,0 +1,39 @@
<?php
define('CLIENT_PATH',dirname(__FILE__));
include ("config.base.php");
include ("include.common.php");
include("server.includes.inc.php");
if(\Classes\SettingsManager::getInstance()->getSetting('Api: REST Api Enabled') == '1') {
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
define('REST_API_PATH', '/');
$echoRoute = \Classes\Macaw::get(REST_API_PATH . 'echo', function () {
echo "Echo " . rand();
});
\Utils\LogManager::getInstance()->debug('Api registered URI: '.$echoRoute);
$moduleManagers = \Classes\BaseService::getInstance()->getModuleManagers();
foreach ($moduleManagers as $moduleManagerObj) {
$moduleManagerObj->setupRestEndPoints();
}
$method = $_SERVER['REQUEST_METHOD'];
if (strtoupper($method) === 'GET') {
\Classes\IceRoute::dispatch($_GET['url'], $method);
} else {
$method = strtoupper($_REQUEST['method']);
\Classes\IceRoute::dispatch($_REQUEST['url'], $method);
}
}else{
echo "REST Api is not enabled. Please set 'Api: REST Api Enabled' setting to true";
}

View File

@@ -13,14 +13,13 @@ if(!defined('HOME_LINK_OTHERS')){
}
//Version
define('VERSION', '23.0.1.OS');
define('CACHE_VALUE', '23.0.1.OS');
define('VERSION_NUMBER', '2301');
define('VERSION_DATE', '14/06/2018');
define('VERSION', '30.0.0.OS');
define('CACHE_VALUE', '30.0.0.OS.2021-06261009');
define('VERSION_NUMBER', '300000');
define('VERSION_DATE', '26/06/2021');
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
if(!defined('APP_SEC')){define('APP_SEC','dbcs234d2saaqw');}
define('UI_SHOW_SWITCH_PROFILE', true);
define('CRON_LOG', ini_get('error_log'));
@@ -33,6 +32,13 @@ if(!defined('WK_HTML_PATH')){
}
define('ALL_CLIENT_BASE_PATH', '/var/www/icehrm.app/icehrmapp/');
define('IS_CLOUD', false);
define('LDAP_ENABLED', true);
define('SAML_ENABLED', true);
define('LEAVE_ENABLED', true);
define('RECRUITMENT_ENABLED', false);
define('APP_WEB_URL', 'https://icehrm.com');
if (!defined('EXTENSIONS_URL')) {
define('EXTENSIONS_URL', str_replace('/web/', '/extensions/', BASE_URL));
}

View File

@@ -5,18 +5,16 @@ $cron = new \Model\Cron();
$crons = $cron->Find("status = ?",array('Enabled'));
if(!$crons){
\Utils\LogManager::getInstance()->info(CLIENT_NAME." error :".$cron->ErrorMsg());
\Utils\LogManager::getInstance()->error(CLIENT_NAME." error :".$cron->ErrorMsg());
}
\Utils\LogManager::getInstance()->info(CLIENT_NAME." cron count :".count($crons));
\Utils\LogManager::getInstance()->debug(CLIENT_NAME." cron count :".count($crons));
foreach($crons as $cron){
$count++;
$iceCron = new \Classes\Cron\IceCron($cron);
\Utils\LogManager::getInstance()->info(CLIENT_NAME." check cron :".$cron->name);
\Utils\LogManager::getInstance()->debug(CLIENT_NAME." check cron :".$cron->name);
if($iceCron->isRunNow()){
\Utils\LogManager::getInstance()->info(CLIENT_NAME." execute cron :".$cron->name);
\Utils\LogManager::getInstance()->debug(CLIENT_NAME." execute cron :".$cron->name);
$iceCron->execute();
sleep(1);
}
}

View File

@@ -17,6 +17,14 @@ $_REQUEST['sm'] = \Classes\BaseService::getInstance()->fixJSON($_REQUEST['sm']);
$_REQUEST['cl'] = \Classes\BaseService::getInstance()->fixJSON($_REQUEST['cl']);
$_REQUEST['ft'] = \Classes\BaseService::getInstance()->fixJSON($_REQUEST['ft']);
// Domain aware input cleanup
$cleaner = new \Classes\DomainAwareInputCleaner();
$_REQUEST['t'] = $cleaner->cleanTableColumn($_REQUEST['t']);
$_REQUEST['ft'] = $cleaner->cleanFilters($_REQUEST['ft']);
$_REQUEST['ob'] = $cleaner->cleanOrderBy($_REQUEST['ob']);
$_REQUEST['sSearch'] = $cleaner->cleanSearch($_REQUEST['sSearch']);
$_REQUEST['cl'] = $cleaner->cleanColumns($_REQUEST['cl']);
$columns = json_decode($_REQUEST['cl'], true);
$columns[] = "id";
$table = $_REQUEST['t'];
@@ -80,8 +88,6 @@ if (!isset($_REQUEST['objects'])) {
}
}
\Utils\LogManager::getInstance()->debug("Row Count Filter Query:" . $countFilterQuery);
\Utils\LogManager::getInstance()->debug("Row Count Filter Query Data:" . json_encode($countFilterQueryData));
if (in_array($table, \Classes\BaseService::getInstance()->userTables)
&& !$skipProfileRestriction && !$isSubOrdinates) {
@@ -89,8 +95,6 @@ if (!isset($_REQUEST['objects'])) {
$sql = "Select count(id) as count from "
. $obj->_table . " where " . SIGN_IN_ELEMENT_MAPPING_FIELD_NAME . " = ? " . $countFilterQuery;
array_unshift($countFilterQueryData, $cemp);
\Utils\LogManager::getInstance()->debug("Count Filter Query 1:" . $sql);
\Utils\LogManager::getInstance()->debug("Count Filter Query Data 1:" . json_encode($countFilterQueryData));
$rowCount = $obj->DB()->Execute($sql, $countFilterQueryData);
} else {
@@ -166,20 +170,12 @@ if (!isset($_REQUEST['objects'])) {
$sql = "Select count(id) as count from " . $obj->_table .
" where " . $obj->getUserOnlyMeAccessField() . " in (" . $subordinatesIds . ") "
. $countFilterQuery;
\Utils\LogManager::getInstance()->debug("Count Filter Query 2:" . $sql);
\Utils\LogManager::getInstance()->debug(
"Count Filter Query Data 2:" . json_encode($countFilterQueryData)
);
$rowCount = $obj->DB()->Execute($sql, $countFilterQueryData);
} else {
$sql = "Select count(id) as count from " . $obj->_table;
if (!empty($countFilterQuery)) {
$sql .= " where 1=1 " . $countFilterQuery;
}
\Utils\LogManager::getInstance()->debug("Count Filter Query 3:" . $sql);
\Utils\LogManager::getInstance()->debug(
"Count Filter Query Data 3:" . json_encode($countFilterQueryData)
);
$rowCount = $obj->DB()->Execute($sql, $countFilterQueryData);
}
}
@@ -196,8 +192,30 @@ if (isset($rowCount) && !empty($rowCount)) {
/*
* Output
*/
if (isset($_REQUEST['version']) && $_REQUEST['version'] === 'v2') {
$output = [
"totalRecords" => $totalRows,
"totalDisplayRecords" => $totalRows,
"objects" => []
];
if (!isset($_REQUEST['objects'])) {
foreach ($data as $item) {
$row = new stdClass();
$colCount = count($columns);
for ($i = 0; $i < $colCount; $i++) {
$row->{$columns[$i]} = $item->{$columns[$i]};
}
$output['objects'][] = $row;
}
try {
echo \Classes\BaseService::getInstance()->safeJsonEncode($output);
} catch (Exception $e) {
\Utils\LogManager::getInstance()->error($e->getMessage());
\Utils\LogManager::getInstance()->notifyException($e);
echo json_encode(['status' => 'Error']);
}
}else if (!isset($_REQUEST['objects'])) {
$output = array(
"sEcho" => intval($_REQUEST['sEcho']),
"iTotalRecords" => $totalRows,
@@ -214,12 +232,24 @@ if (!isset($_REQUEST['objects'])) {
$row["_org"] = \Classes\BaseService::getInstance()->cleanUpAdoDB($item);
$output['aaData'][] = $row;
}
echo json_encode($output);
try {
echo \Classes\BaseService::getInstance()->safeJsonEncode($output);
} catch (Exception $e) {
\Utils\LogManager::getInstance()->error($e->getMessage());
\Utils\LogManager::getInstance()->notifyException($e);
echo json_encode(['status' => 'Error']);
}
} else {
$output = array();
foreach ($data as $item) {
unset($item->keysToIgnore);
$output[] = \Classes\BaseService::getInstance()->cleanUpAdoDB($item);
}
echo json_encode($output);
try {
echo \Classes\BaseService::getInstance()->safeJsonEncode($output);
} catch (Exception $e) {
\Utils\LogManager::getInstance()->error($e->getMessage());
echo json_encode(['status' => 'Error']);
}
}

View File

@@ -0,0 +1,312 @@
{
"name": "Ghana Payroll Calculation",
"description": "",
"deductions": [
{
"id": "101",
"name": "Housing Allowance (10%)",
"componentType": "[]",
"component": "[\"1\"]",
"payrollColumn": null,
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":0,\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"X*0.1\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "102",
"name": "Overtime Allowance (10%)",
"componentType": "[]",
"component": "[\"1\"]",
"payrollColumn": null,
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":0,\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"X*0.1\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "103",
"name": "SSNIT",
"componentType": "[]",
"component": "[\"1\"]",
"payrollColumn": null,
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":0,\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"X*0.055\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "104",
"name": "Tax - Ghana",
"componentType": "[]",
"component": "[]",
"payrollColumn": null,
"rangeAmounts": ""
},
{
"id": "106",
"name": "Next 108 GHC",
"componentType": "[]",
"component": "[]",
"payrollColumn": "112",
"rangeAmounts": "[{\"lowerCondition\":\"gte\",\"lowerLimit\":\"216\",\"upperCondition\":\"lt\",\"upperLimit\":\"324\",\"amount\":\"X*0.05\",\"id\":\"rangeAmounts_1\"},{\"lowerCondition\":\"gte\",\"lowerLimit\":\"324\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"5.4\",\"id\":\"rangeAmounts_2\"}]"
},
{
"id": "107",
"name": "Next 151 GHC",
"componentType": "[]",
"component": "[]",
"payrollColumn": "112",
"rangeAmounts": "[{\"lowerCondition\":\"gte\",\"lowerLimit\":\"324\",\"upperCondition\":\"lt\",\"upperLimit\":\"475\",\"amount\":\"(X-324) * 0.1\",\"id\":\"rangeAmounts_1\"},{\"lowerCondition\":\"gte\",\"lowerLimit\":\"259\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"15.10\",\"id\":\"rangeAmounts_2\"}]"
},
{
"id": "108",
"name": "Next 2765 GHC",
"componentType": "[]",
"component": "[]",
"payrollColumn": "112",
"rangeAmounts": "[{\"lowerCondition\":\"gte\",\"lowerLimit\":\"475\",\"upperCondition\":\"lt\",\"upperLimit\":\"3240\",\"amount\":\"(X - 475) * 0.175\",\"id\":\"rangeAmounts_1\"},{\"lowerCondition\":\"gte\",\"lowerLimit\":\"3240\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"483.88\",\"id\":\"rangeAmounts_2\"}]"
},
{
"id": "111",
"name": "Remaining after 3240 GHC",
"componentType": "[]",
"component": "[]",
"payrollColumn": "112",
"rangeAmounts": "[{\"lowerCondition\":\"gte\",\"lowerLimit\":\"3240\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"(X-3240)*0.25\",\"id\":\"rangeAmounts_1\"}]"
}
],
"columns": [
{
"id": "105",
"name": "GH - Salary (Basic)",
"calculation_hook": null,
"salary_components": "[\"1\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "1",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "106",
"name": "GH - Housing Allowance",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"101\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "2",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "107",
"name": "GH - Overtime Allowance",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"102\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "3",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "108",
"name": "GH - Total",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"106\",\"107\",\"105\"]",
"sub_columns": "[]",
"colorder": "4",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "109",
"name": "GH - SSNIT",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"103\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "5",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "112",
"name": "GH - Taxable Income",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"106\",\"105\"]",
"sub_columns": "[\"109\"]",
"colorder": "7",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "113",
"name": "GH - Next 108 GHC",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"106\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "9",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "114",
"name": "GH - Next 151 GHC",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"107\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "10",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "115",
"name": "GH - Next 2765 GHC",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"108\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "11",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "120",
"name": "GH - Remaining after 3240 GHC",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"111\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "12",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "121",
"name": "GH - Overtime Allow. Tax",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "13",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "[{\"name\":\"O\",\"column\":\"107\",\"id\":\"calculation_columns_1\"}]",
"calculation_function": "O*0.05"
},
{
"id": "122",
"name": "GH - Total (PAYE Tax)",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"113\",\"114\",\"115\",\"121\",\"120\"]",
"sub_columns": "[]",
"colorder": "14",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "123",
"name": "GH - Deductions - Sub Total",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"109\",\"122\"]",
"sub_columns": "[]",
"colorder": "15",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "125",
"name": "GH - Final Total",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"108\"]",
"sub_columns": "[\"123\"]",
"colorder": "16",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
}
],
"salaryComponents": [
{
"id": "1",
"name": "Basic Salary",
"componentType": "1",
"details": null
}
],
"salaryComponentTypes": [
{
"id": "1",
"code": "B001",
"name": "Basic"
}
],
"samplePayroll": {
"name": "Germany Payroll Calculation",
"pay_period": "4",
"columns": "[\"126\",\"127\",\"131\",\"129\",\"128\",\"133\",\"130\",\"132\"]",
"date_start": "2017-08-01",
"date_end": "2017-08-31",
"status": "Draft"
},
"payslipTemplate": {
"name": "Sample Payslip Template",
"data": "[{\"type\":\"Company Logo\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_1\"},{\"type\":\"Company Name\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_2\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_5\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"126\",\"label\":\"Basic Salary\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_3\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"127\",\"label\":\"Car Allowance\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_4\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"130\",\"label\":\"Payment for Hours Worked\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_6\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_7\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"131\",\"label\":\"Gross Pay\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_8\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"132\",\"label\":\"Tax 19%\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_9\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_10\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"133\",\"label\":\"Net Pay\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_11\"}]",
"status": null,
"created": "2017-09-08 21:12:40",
"updated": "2017-09-08 21:12:40"
}
}

View File

@@ -0,0 +1,188 @@
{
"name": "Sample Country Payroll",
"description": "",
"deductions": [
{
"id": "112",
"name": "DE - Tax",
"componentType": "[]",
"component": "[]",
"payrollColumn": "131",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":0,\"upperCondition\":\"No Upper Limit\",\"upperLimit\":0,\"amount\":\"X * 0.19\",\"id\":\"rangeAmounts_1\"}]"
}
],
"columns": [
{
"id": "126",
"name": "DE - Basic Salary",
"calculation_hook": null,
"salary_components": "[\"1\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "1",
"editable": "Yes",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "127",
"name": "DE - Car Allowance",
"calculation_hook": null,
"salary_components": "[\"3\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "2",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "128",
"name": "DE - Hours Worked per Month",
"calculation_hook": "AttendanceUtil_getTimeWorkedHours",
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "3",
"editable": "No",
"enabled": "Yes",
"default_value": "0",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "129",
"name": "DE - Hourly Pay",
"calculation_hook": null,
"salary_components": "[\"5\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "4",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "130",
"name": "DE - Payment for Hours Worked",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "5",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "[{\"name\":\"X\",\"column\":\"128\",\"id\":\"calculation_columns_1\"},{\"name\":\"Y\",\"column\":\"129\",\"id\":\"calculation_columns_2\"}]",
"calculation_function": "X * Y"
},
{
"id": "131",
"name": "DE - Gross Salary",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"126\",\"127\",\"130\"]",
"sub_columns": "[]",
"colorder": "6",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "132",
"name": "DE - Tax",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"112\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "7",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "133",
"name": "DE - Net Salary",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"131\"]",
"sub_columns": "[\"132\"]",
"colorder": "8",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
}
],
"salaryComponents": [
{
"id": "1",
"name": "Basic Salary",
"componentType": "1",
"details": null
},
{
"id": "3",
"name": "Car Allowance",
"componentType": "2",
"details": null
},
{
"id": "5",
"name": "Regular Hourly Pay",
"componentType": "3",
"details": null
}
],
"salaryComponentTypes": [
{
"id": "1",
"code": "B001",
"name": "Basic"
},
{
"id": "2",
"code": "B002",
"name": "Allowance"
},
{
"id": "3",
"code": "B003",
"name": "Hourly"
}
],
"samplePayroll": {
"name": "Sample Country Payroll",
"pay_period": "4",
"columns": "[\"126\",\"127\",\"131\",\"129\",\"128\",\"133\",\"130\",\"132\"]",
"date_start": "2017-08-01",
"date_end": "2017-08-31",
"status": "Draft"
},
"payslipTemplate": {
"name": "Sample Payslip Template",
"data": "[{\"type\":\"Company Logo\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_1\"},{\"type\":\"Company Name\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_2\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_5\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"126\",\"label\":\"Basic Salary\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_3\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"127\",\"label\":\"Car Allowance\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_4\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"130\",\"label\":\"Payment for Hours Worked\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_6\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_7\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"131\",\"label\":\"Gross Pay\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_8\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"132\",\"label\":\"Tax 19%\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_9\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_10\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"133\",\"label\":\"Net Pay\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_11\"}]",
"status": null,
"created": "2017-09-08 21:12:40",
"updated": "2017-09-08 21:12:40"
}
}

View File

@@ -0,0 +1,264 @@
{
"name": "Sri Lanka Payroll Calculation",
"description": "",
"deductions": [
{
"id": "1",
"name": "EPF Employee Contribution",
"componentType": "[]",
"component": "[]",
"payrollColumn": "7",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":\"0\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":\"0\",\"amount\":\"X*0.08\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "2",
"name": "EPF Employer Contribution",
"componentType": "[]",
"component": "[]",
"payrollColumn": "7",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":\"0\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":\"0\",\"amount\":\"X*0.12\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "3",
"name": "ETF Employer Contribution",
"componentType": "[]",
"component": "[]",
"payrollColumn": "7",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":\"0\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":\"0\",\"amount\":\"X*0.03\",\"id\":\"rangeAmounts_1\"}]"
},
{
"id": "4",
"name": "PAYE Tax",
"componentType": "[]",
"component": "[]",
"payrollColumn": "12",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":\"0\",\"upperCondition\":\"lte\",\"upperLimit\":\"62500\",\"amount\":\"0\",\"id\":\"rangeAmounts_1\"},{\"lowerCondition\":\"gt\",\"lowerLimit\":\"62500\",\"upperCondition\":\"lte\",\"upperLimit\":\"104167\",\"amount\":\"X*0.04 - 2500\",\"id\":\"rangeAmounts_2\"},{\"lowerCondition\":\"gt\",\"lowerLimit\":\"104167\",\"upperCondition\":\"lte\",\"upperLimit\":\"145833\",\"amount\":\"X*0.08 - 6667\",\"id\":\"rangeAmounts_3\"},{\"lowerCondition\":\"gt\",\"lowerLimit\":\"145833\",\"upperCondition\":\"lte\",\"upperLimit\":\"187500\",\"amount\":\"X*0.12-12500\",\"id\":\"rangeAmounts_4\"},{\"lowerCondition\":\"gt\",\"lowerLimit\":\"187500\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":\"0\",\"amount\":\"X*0.16 - 20000\",\"id\":\"rangeAmounts_5\"}]"
},
{
"id": "5",
"name": "Stamp Duty",
"componentType": "[]",
"component": "[]",
"payrollColumn": "12",
"rangeAmounts": "[{\"lowerCondition\":\"No Lower Limit\",\"lowerLimit\":\"0\",\"upperCondition\":\"lte\",\"upperLimit\":\"25000\",\"amount\":\"0\",\"id\":\"rangeAmounts_1\"},{\"lowerCondition\":\"gt\",\"lowerLimit\":\"25000\",\"upperCondition\":\"No Upper Limit\",\"upperLimit\":\"0\",\"amount\":\"25\",\"id\":\"rangeAmounts_2\"}]"
}
],
"columns": [
{
"id": "5",
"name": "LK - Basic Salary",
"calculation_hook": null,
"salary_components": "[\"1\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "5",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "6",
"name": "LK - Fixed Allowance",
"calculation_hook": null,
"salary_components": "[\"2\"]",
"deductions": "[]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "6",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "7",
"name": "LK - Gross Pay",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"5\",\"6\"]",
"sub_columns": "[]",
"colorder": "7",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "8",
"name": "LK - EPF Employee Contribution",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"1\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "8",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "9",
"name": "LK - EPF Employer Contribution",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"2\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "9",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "10",
"name": "LK - ETF Employer Contribution",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"3\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "10",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "11",
"name": "LK - Total EPF 20%",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"8\",\"9\"]",
"sub_columns": "[]",
"colorder": "11",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "12",
"name": "LK - Total for PAYE",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"7\"]",
"sub_columns": "[]",
"colorder": "12",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "13",
"name": "LK - PAYE Tax",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"4\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "13",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "14",
"name": "LK - Stamp Duty",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[\"5\"]",
"add_columns": "[]",
"sub_columns": "[]",
"colorder": "14",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "15",
"name": "LK - Total Deductions",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"8\",\"13\",\"14\"]",
"sub_columns": "[]",
"colorder": "15",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
},
{
"id": "16",
"name": "LK - Salary to Bank",
"calculation_hook": null,
"salary_components": "[]",
"deductions": "[]",
"add_columns": "[\"7\"]",
"sub_columns": "[\"15\"]",
"colorder": "16",
"editable": "No",
"enabled": "Yes",
"default_value": "0.00",
"calculation_columns": "",
"calculation_function": ""
}
],
"salaryComponents": [
{
"id": "1",
"name": "Basic Salary",
"componentType": "1",
"details": null
},
{
"id": "2",
"name": "Fixed Allowance",
"componentType": "1",
"details": null
}
],
"salaryComponentTypes": [
{
"id": "1",
"code": "B001",
"name": "Basic"
}
],
"samplePayroll": {
"name": "Sri Lanka Payroll Sample",
"pay_period": "4",
"columns": "[\"5\",\"8\",\"9\",\"10\",\"6\",\"7\",\"13\",\"16\",\"14\",\"15\",\"11\",\"12\"]",
"date_start": "2016-03-01",
"date_end": "2016-03-31",
"status": "Draft"
},
"payslipTemplate": {
"name": "Sri Lanka - Default Payslip",
"data": "[{\"type\":\"Company Logo\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"fontSize\":\"Normal\",\"fontStyle\":\"Normal\",\"fontColor\":\"#000000\",\"status\":\"Show\",\"id\":\"data_1\"},{\"type\":\"Company Name\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"fontSize\":\"Normal\",\"fontStyle\":\"Normal\",\"fontColor\":\"\",\"status\":\"Show\",\"id\":\"data_2\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"fontSize\":\"Normal\",\"fontStyle\":\"Normal\",\"fontColor\":\"\",\"status\":\"Show\",\"id\":\"data_8\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"5\",\"label\":\"Basic Salary\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_3\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"6\",\"label\":\"Fixed Allowance\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_4\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"7\",\"label\":\"Gross Pay\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_11\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"fontSize\":\"Normal\",\"fontStyle\":\"Normal\",\"fontColor\":\"\",\"status\":\"Show\",\"id\":\"data_9\"},{\"type\":\"Text\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"Deductions\",\"status\":\"Show\",\"id\":\"data_13\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"8\",\"label\":\"EPF Employee Contribution\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_6\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"13\",\"label\":\"PAYE Tax\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_14\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"14\",\"label\":\"Stamp Duty\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_15\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"15\",\"label\":\"Total Deductions\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_16\"},{\"type\":\"Separators\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_17\"},{\"type\":\"Text\",\"payrollColumn\":\"NULL\",\"label\":\"\",\"text\":\"Employer Contributions\",\"status\":\"Show\",\"id\":\"data_18\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"9\",\"label\":\"EPF Employer Contribution\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_19\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"7\",\"label\":\"ETF Employer Contribution\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_20\"},{\"type\":\"Separators\",\"payrollColumn\":\"7\",\"label\":\"\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_21\"},{\"type\":\"Text\",\"payrollColumn\":\"7\",\"label\":\"\",\"text\":\"Totals\",\"status\":\"Show\",\"id\":\"data_22\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"11\",\"label\":\"Total EPF 20%\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_23\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"12\",\"label\":\"Total for PAYE\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_24\"},{\"type\":\"Payroll Column\",\"payrollColumn\":\"16\",\"label\":\"Net Salary\",\"text\":\"\",\"status\":\"Show\",\"id\":\"data_25\"}]",
"status": null,
"created": "2016-06-29 22:07:12",
"updated": "2016-06-29 22:07:12"
}
}

View File

@@ -3,8 +3,8 @@
</div><!-- ./wrapper -->
<script type="text/javascript">
for (var prop in modJsList) {
if(modJsList.hasOwnProperty(prop)){
modJsList[prop].setPermissions(<?=json_encode($modulePermissions['perm'])?>);
@@ -15,35 +15,23 @@
modJsList[prop].setEmailTemplates(<?=json_encode($emailTemplates)?>);
<?php } ?>
modJsList[prop].setUser(<?=json_encode($user)?>);
//Test
<?php if(isset($_REQUEST['action']) && $_REQUEST['action'] == "new"){?>
if(modJsList[prop].newInitObject == undefined || modJsList[prop].newInitObject == null){
modJsList[prop].initFieldMasterData(null,modJsList[prop].renderForm);
}else{
modJsList[prop].initFieldMasterData(null,modJsList[prop].renderForm, modJsList[prop].newInitObject);
}
<?php }else{?>
modJsList[prop].initFieldMasterData(null, modJs.loadingFunction);
<?php }?>
//modJsList[prop].initFieldMasterData(null, modJs.loadingFunction);
modJsList[prop].initMasterDataReader();
modJsList[prop].masterDataReader.updateAllMasterData()
.then(() => {
modJs.loadingFunction();
});
modJsList[prop].setBaseUrl('<?=BASE_URL?>');
modJsList[prop].setCurrentProfile(<?=json_encode($activeProfile)?>);
modJsList[prop].setInstanceId('<?=$baseService->getInstanceId()?>');
modJsList[prop].setNoJSONRequests('<?=$noJSONRequests?>');
}
}
//Other static js objects
var timeUtils = new TimeUtils();
timeUtils.setServerGMToffset('<?=$diffHoursBetweenServerTimezoneWithGMT?>');
var clientUrl = '<?=CLIENT_BASE_URL?>';
</script>
<?php include 'popups.php';?>
<?php include APP_BASE_PATH.'js/bootstrapDataTable.php';?>
<script src="<?=BASE_URL?>js/bootstrap-datatable.js"></script>
</body>
</html>
</html>

View File

@@ -1,17 +1,27 @@
<?php
$logoFileName = CLIENT_BASE_PATH."data/logo.png";
$logoFileUrl = CLIENT_BASE_URL."data/logo.png";
if(!file_exists($logoFileName)){
$logoFileUrl = BASE_URL."images/logo.png";
}
$logoFileUrl = \Classes\UIManager::getInstance()->getCompanyLogoUrl();
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?=$meta->title?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<?php if (!empty(\Classes\BaseService::getInstance()->getGAKey())) { ?>
<!-- Google Analytics -->
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '<?=\Classes\BaseService::getInstance()->getGAKey()?>', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->
<?php } else { ?>
<script>window.ga = [];</script>
<?php } ?>
<meta charset="utf-8">
<title><?=$companyName?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="https://icehrm.s3.amazonaws.com/images/icon16.png">
<meta name="author" content="">
<link rel="image_src" href="<?=!empty($meta->imageUrl)?$meta->imageUrl:$logoFileUrl?>"/>
<meta property="og:image" content="<?=!empty($meta->imageUrl)?$meta->imageUrl:$logoFileUrl?>"/>
@@ -20,76 +30,20 @@ if(!file_exists($logoFileName)){
<meta property="og:description" content="<?=$meta->description?>"/>
<link href="<?=BASE_URL?>themecss/bootstrap.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>themecss/font-awesome.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>themecss/ionicons.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>dist/third-party.css?v=<?=$cssVersion?>" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>dist/third-party.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>dist/common.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery2.0.2.min.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery-ui.js"></script>
<script src="<?=BASE_URL?>themejs/bootstrap.js"></script>
<script src="<?=BASE_URL?>js/jquery.placeholder.js"></script>
<script src="<?=BASE_URL?>js/base64.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-datepicker.js"></script>
<script src="<?=BASE_URL?>js/jquery.timepicker.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-datetimepicker.js"></script>
<script src="<?=BASE_URL?>js/fullcalendar.min.js"></script>
<script src="<?=BASE_URL?>js/select2/select2.min.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-colorpicker-2.1.1/js/bootstrap-colorpicker.min.js"></script>
<link href="<?=BASE_URL?>themecss/datatables/dataTables.bootstrap.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/jquery.timepicker.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/datepicker.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/fullcalendar.css" rel="stylesheet">
<link href="<?=BASE_URL?>js/select2/select2.css" rel="stylesheet">
<link href="<?=BASE_URL?>js/bootstrap-colorpicker-2.1.1/css/bootstrap-colorpicker.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>themecss/AdminLTE.css" rel="stylesheet">
<script src="<?=BASE_URL?>themejs/plugins/datatables/jquery.dataTables.js"></script>
<script src="<?=BASE_URL?>themejs/plugins/datatables/dataTables.bootstrap.js"></script>
<script src="<?=BASE_URL?>themejs/AdminLTE/app.js"></script>
<link href="<?=BASE_URL?>css/style.css?v=<?=$cssVersion?>" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>bower_components/tinymce/tinymce.min.js"></script>
<link href="<?=BASE_URL?>bower_components/simplemde/dist/simplemde.min.css" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>bower_components/simplemde/dist/simplemde.min.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/signature_pad.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/date.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/json2.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/CrockfordInheritance.v0.1.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/Base.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/AdapterBase.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/FormValidation.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/Notifications.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/TimeUtils.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/AesCrypt.js?v=<?=$jsVersion?>"></script>
<?php include APP_BASE_PATH.'/modulejslibs.inc.php';?>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script>
var baseUrl = '<?=CLIENT_BASE_URL?>service.php';
var CLIENT_BASE_URL = '<?=CLIENT_BASE_URL?>';
</script>
<script type="text/javascript" src="<?=BASE_URL?>js/app-global.js"></script>
<!-- Can not bundle - Start-->
<script src="<?=BASE_URL?>js/jquery.timepicker.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-datetimepicker.js"></script>
<link href="<?=BASE_URL?>bower_components/flag-icon-css/css/flag-icon.min.css" rel="stylesheet">
<!-- Can not bundle - End-->
<?php include 'modulejslibs.inc.php'; ?>
<script>
var baseUrl = '<?=CLIENT_BASE_URL?>service.php';
var CLIENT_BASE_URL = '<?=CLIENT_BASE_URL?>';
</script>
</head>
<body>

View File

@@ -78,8 +78,8 @@ class qqFileUploader {
}
$size = $this->file->getSize();
\Utils\LogManager::getInstance()->info('file size ='.$size);
\Utils\LogManager::getInstance()->info('file size limit ='.$this->sizeLimit);
\Utils\LogManager::getInstance()->debug('file size ='.$size);
\Utils\LogManager::getInstance()->debug('file size limit ='.$this->sizeLimit);
if ($size == 0) {
return array('success'=>0,'error' => 'File is empty');
}
@@ -127,9 +127,6 @@ if(empty($saveFileName) || $saveFileName == "_NEW_"){
$saveFileName = str_replace(".", "-", $saveFileName);
}
$file = new \Model\File();
$file->Load("name = ?",array($saveFileName));
// list of valid extensions, ex. array("jpeg", "xml", "bmp")
$allowedExtensions = explode(',', "csv,doc,xls,docx,xlsx,txt,ppt,pptx,rtf,pdf,xml,jpg,bmp,gif,png,jpeg");
@@ -142,16 +139,13 @@ $result = $uploader->handleUpload(CLIENT_BASE_PATH.'data/',$saveFileName);
$uploadFilesToS3 = \Classes\SettingsManager::getInstance()->getSetting("Files: Upload Files to S3");
$uploadFilesToS3Key = \Classes\SettingsManager::getInstance()->getSetting("Files: Amazon S3 Key for File Upload");
$uploadFilesToS3Secret = \Classes\SettingsManager::getInstance()->getSetting(
"Files: Amazone S3 Secret for File Upload"
"Files: Amazon S3 Secret for File Upload"
);
$s3Bucket = \Classes\SettingsManager::getInstance()->getSetting("Files: S3 Bucket");
$s3WebUrl = \Classes\SettingsManager::getInstance()->getSetting("Files: S3 Web Url");
$uploadedToS3 = false;
\Utils\LogManager::getInstance()->info(
$uploadFilesToS3."|".$uploadFilesToS3Key."|".$uploadFilesToS3Secret."|".$s3Bucket."|".$s3WebUrl."|".CLIENT_NAME
);
$localFile = CLIENT_BASE_PATH.'data/'.$result['filename'];
$f_size = filesize($localFile);
if($uploadFilesToS3.'' == '1' && !empty($uploadFilesToS3Key) && !empty($uploadFilesToS3Secret) &&
@@ -159,9 +153,9 @@ if($uploadFilesToS3.'' == '1' && !empty($uploadFilesToS3Key) && !empty($uploadFi
$uploadname = CLIENT_NAME."/".$result['filename'];
\Utils\LogManager::getInstance()->info("Upload file to s3:".$uploadname);
\Utils\LogManager::getInstance()->info("Local file:".$localFile);
\Utils\LogManager::getInstance()->info("Local file size:".$f_size);
\Utils\LogManager::getInstance()->debug("Upload file to s3:".$uploadname);
\Utils\LogManager::getInstance()->debug("Local file:".$localFile);
\Utils\LogManager::getInstance()->debug("Local file size:".$f_size);
$s3FileSys = new \Classes\S3FileSystem($uploadFilesToS3Key, $uploadFilesToS3Secret);
@@ -176,10 +170,17 @@ if($uploadFilesToS3.'' == '1' && !empty($uploadFilesToS3Key) && !empty($uploadFi
}
if($result['success'] == 1){
if ($_POST['file_group'] === 'profile_image' && !empty($_POST['user'])) {
\Classes\FileService::getInstance()->deleteProfileImage(intval($_POST['user']));
}
$file = new \Model\File();
$file->Load("name = ?",array($saveFileName));
$file->name = $saveFileName;
$file->filename = $result['filename'];
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
$file->$signInMappingField = $_POST['user']=="_NONE_"?null:$_POST['user'];
$file->file_group = $_POST['file_group'];
$file->size = $f_size;
$file->size_text = \Classes\FileService::getInstance()->getReadableSize($f_size);
@@ -187,7 +188,7 @@ if($result['success'] == 1){
if($uploadedToS3){
$result['data'] = $file_url;
}else{
$result['data'] = CLIENT_BASE_URL.'data/'.$result['filename'];
$result['data'] = \Classes\FileService::getInstance()->getLocalSecureUrl($result['filename']);
}
$result['data'] .= "|".$saveFileName;
$result['data'] .= "|".$file->id;

View File

@@ -22,7 +22,8 @@ if($_REQUEST['file_type']=="image"){
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery.form.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/date.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/json2.js"></script>

View File

@@ -15,40 +15,22 @@
<?php if(isset($emailTemplates)){?>
modJsList[prop].setEmailTemplates(<?=json_encode($emailTemplates)?>);
<?php } ?>
modJsList[prop].setUser(<?=json_encode($user)?>);
<?php if(isset($_REQUEST['action']) && $_REQUEST['action'] == "new"){?>
if(modJsList[prop].newInitObject == undefined || modJsList[prop].newInitObject == null){
modJsList[prop].initFieldMasterData(null,modJsList[prop].renderForm);
}else{
modJsList[prop].initFieldMasterData(null,modJsList[prop].renderForm, modJsList[prop].newInitObject);
}
<?php }else{ ?>
if(modJsList[prop].initialFilter != null && modJsList[prop].initialFilter != undefined){
modJsList[prop].initFieldMasterData(null,modJsList[prop].setFilterExternal);
}else{
modJsList[prop].initFieldMasterData();
}
<?php } ?>
modJsList[prop].setUser(<?=json_encode(\Classes\BaseService::getInstance()->cleanUpUser($user))?>);
modJsList[prop].initSourceMappings();
modJsList[prop].setBaseUrl('<?=BASE_URL?>');
modJsList[prop].setClientUrl('<?=CLIENT_BASE_URL?>');
modJsList[prop].setCurrentProfile(<?=json_encode($activeProfile)?>);
modJsList[prop].setInstanceId('<?=\Classes\BaseService::getInstance()->getInstanceId()?>');
modJsList[prop].setGoogleAnalytics(ga);
modJsList[prop].setNoJSONRequests('<?=\Classes\SettingsManager::getInstance()->getSetting("System: Do not pass JSON in request")?>');
}
}
//Other static js objects
var timeUtils = new TimeUtils();
timeUtils.setServerGMToffset('<?=$diffHoursBetweenServerTimezoneWithGMT?>');
var notificationManager = new NotificationManager();
notificationManager.setBaseUrl('<?=CLIENT_BASE_URL?>service.php');
notificationManager.setTimeUtils(timeUtils);
var timeUtils = setupTimeUtils('<?=$diffHoursBetweenServerTimezoneWithGMT?>');
var notificationManager = setupNotifications('<?=CLIENT_BASE_URL?>service.php');
<?php
$notificationTemplates = array();
@@ -68,8 +50,17 @@
e.preventDefault();
$(this).tab('show');
modJs = modJsList[$(this).attr('id')];
modJs.get([]);
modJs.initFieldMasterData();
modJs.get([]);
// Do not load master data for new types of tables
if (!modJs.isV2) {
if(modJs.initialFilter != null){
modJs.initFieldMasterData(null,modJs.setFilterExternal);
} else {
modJs.initFieldMasterData();
}
}
var helpLink = modJs.getHelpLink();
if(helpLink != null && helpLink != undefined){
$('.helpLink').attr('href',helpLink);
@@ -77,20 +68,23 @@
}else{
$('.helpLink').hide();
}
});
for (var modName in modJsList) {
modJsList[modName].setApiUrl('<?=$restApiBase?>');
modJsList[modName].setupApiClient($('#jt').attr('t'));
}
var tabName = window.location.hash.substr(1);
if(tabName!= undefined && tabName != "" && modJsList[tabName] != undefined && modJsList[tabName] != null){
$("#"+tabName).click();
}else{
<?php if(!isset($_REQUEST['action']) && $_REQUEST['action'] != "new"){?>
<?php if(!isset($_REQUEST['action'])){?>
modJs.get([]);
<?php } ?>
}
notificationManager.getNotifications();
$("#delegationDiv").on('click', "#notifications", function(e) {
@@ -109,7 +103,18 @@
$('.helpLink').hide();
}
$(this).scrollTop(0);
});
if (!modJs.isV2) {
if(modJs.initialFilter != null){
modJs.initFieldMasterData(null,modJs.setFilterExternal);
} else {
modJs.initFieldMasterData();
}
}
var clientUrl = '<?=CLIENT_BASE_URL?>';
var modulesInstalled = <?=json_encode(\Classes\BaseService::getInstance()->getModuleManagerNames())?>;
@@ -142,7 +147,10 @@
</script>
<?php include 'popups.php';?>
<?php include APP_BASE_PATH.'js/bootstrapDataTable.php';?>
<?php
include 'popups.php';
?>
<script src="<?=BASE_URL?>js/bootstrap-datatable.js"></script>
<div id="jt" t="<?=$jwtService->create(3600)?>"></div>
</body>
</html>

View File

@@ -1,25 +1,4 @@
<?php
/*
This file is part of Ice Framework.
Ice Framework is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ice Framework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ice Framework. If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------------------
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
*/
if (!defined('MODULE_NAME')) {
define('MODULE_NAME', $moduleName);
}
@@ -89,17 +68,31 @@ $meta = json_decode(file_get_contents(MODULE_PATH."/meta.json"),true);
include('configureUIManager.php');
$chatUserProfile = \Classes\UIManager::getInstance()->getCurrentProfile();
if (defined('SYM_CLIENT')) {
$restApiBase = WEB_APP_BASE_URL.'/api/'.SYM_CLIENT.'/';
} else if (defined('REST_API_BASE')){
$restApiBase = REST_API_BASE;
} else {
$restApiBase = CLIENT_BASE_URL.'api/';
}
?><!DOCTYPE html>
<html>
<head>
<!-- Google Analytics -->
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '<?=\Classes\BaseService::getInstance()->getGAKey()?>', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->
<?php if (!empty(\Classes\BaseService::getInstance()->getGAKey())) { ?>
<!-- Google Analytics -->
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '<?=\Classes\BaseService::getInstance()->getGAKey()?>', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->
<?php } else { ?>
<script>window.ga = [];</script>
<?php } ?>
<meta charset="utf-8">
<title><?=$companyName?></title>
@@ -108,86 +101,20 @@ include('configureUIManager.php');
<meta name="description" content="">
<meta name="author" content="">
<link href="<?=BASE_URL?>themecss/bootstrap.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>themecss/font-awesome.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>themecss/ionicons.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>bower_components/material-design-icons/iconfont/material-icons.css" rel="stylesheet">
<link href="<?=BASE_URL?>dist/third-party.css?v=<?=$cssVersion?>" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>dist/third-party.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>dist/common.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery2.0.2.min.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/jquery-ui.js"></script>
<script src="<?=BASE_URL?>themejs/bootstrap.js"></script>
<script src="<?=BASE_URL?>js/jquery.placeholder.js"></script>
<script src="<?=BASE_URL?>js/base64.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-datepicker.js"></script>
<!-- Can not bundle - Start-->
<script src="<?=BASE_URL?>js/jquery.timepicker.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-datetimepicker.js"></script>
<script src="<?=BASE_URL?>js/select2/select2.min.js"></script>
<script src="<?=BASE_URL?>js/bootstrap-colorpicker-2.1.1/js/bootstrap-colorpicker.min.js"></script>
<!--fullcaledar-->
<link href="<?=BASE_URL?>js/fullcaledar/fullcalendar.css" rel="stylesheet">
<link href="<?=BASE_URL?>js/fullcaledar/fullcalendar.print.css" rel="stylesheet" media="print">
<script src="<?=BASE_URL?>js/fullcaledar/lib/moment.min.js"></script>
<script src="<?=BASE_URL?>js/fullcaledar/fullcalendar.min.js"></script>
<script src="<?=BASE_URL?>js/clipboard.js"></script>
<link href="<?=BASE_URL?>themecss/datatables/dataTables.bootstrap.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/jquery.timepicker.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/datepicker.css" rel="stylesheet">
<link href="<?=BASE_URL?>css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>js/select2/select2.css" rel="stylesheet">
<link href="<?=BASE_URL?>js/bootstrap-colorpicker-2.1.1/css/bootstrap-colorpicker.min.css" rel="stylesheet">
<link href="<?=BASE_URL?>bower_components/flag-icon-css/css/flag-icon.min.css" rel="stylesheet">
<!-- Can not bundle - End-->
<link href="<?=BASE_URL?>themecss/AdminLTE.css" rel="stylesheet">
<script src="<?=BASE_URL?>themejs/plugins/datatables/jquery.dataTables.js?v=<?=$jsVersion?>"></script>
<script src="<?=BASE_URL?>themejs/plugins/datatables/dataTables.bootstrap.js?v=<?=$jsVersion?>"></script>
<script src="<?=BASE_URL?>themejs/AdminLTE/app.js?v=<?=$jsVersion?>"></script>
<link href="<?=BASE_URL?>css/style.css?v=<?=$cssVersion?>" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>bower_components/tinymce/tinymce.min.js"></script>
<link href="<?=BASE_URL?>bower_components/simplemde/dist/simplemde.min.css" rel="stylesheet">
<script type="text/javascript" src="<?=BASE_URL?>bower_components/simplemde/dist/simplemde.min.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>bower_components/inputmask/dist/min/jquery.inputmask.bundle.min.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/signature_pad.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/date.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/json2.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>js/CrockfordInheritance.v0.1.js"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/Base.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/AdapterBase.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/FormValidation.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/Notifications.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/TimeUtils.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/ConversationsAdapter.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/AesCrypt.js?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL?>api/SocialShare.js?v=<?=$jsVersion?>"></script>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="<?=BASE_URL?>js/html5shiv.js"></script>
<script src="<?=BASE_URL?>js/respond.min.js"></script>
<![endif]-->
<script>
var baseUrl = '<?=CLIENT_BASE_URL?>service.php';
var CLIENT_BASE_URL = '<?=CLIENT_BASE_URL?>';
</script>
<script type="text/javascript" src="<?=BASE_URL?>js/app-global.js"></script>
</head>
<body class="skin-blue" data-turbolinks="false">
@@ -214,6 +141,9 @@ include('configureUIManager.php');
</div>
</nav>
</header>
<?php if(\Classes\UIManager::getInstance()->getCurrentLanguageCode() === 'ar') {?>
<link href="<?=BASE_URL?>css/rtl.css" rel="stylesheet">
<?php } ?>
<div class="wrapper row-offcanvas row-offcanvas-left">
<div id="iceloader" style="
width: 100%;
@@ -236,7 +166,7 @@ include('configureUIManager.php');
<ul class="sidebar-menu">
<?php if($user->user_level == 'Admin' || $user->user_level == 'Manager' || $user->user_level == 'Other'){?>
<?php if($user->user_level == 'Admin' || $user->user_level == 'Manager' || $user->user_level == 'Restricted Admin' || $user->user_level == 'Restricted Manager'){?>
<?php foreach($adminModules as $menu){?>
<?php if(count($menu['menu']) == 0){continue;}?>
@@ -285,6 +215,26 @@ include('configureUIManager.php');
<?php }?>
<?php foreach($extensions as $menu){?>
<?php if(count($menu['menu']) == 0){continue;}?>
<li class="treeview" ref="<?="extension_".str_replace(" ", "_", $menu['name'])?>">
<a href="#">
<i class="fa <?=!isset($mainIcons[$menu['name']])?"fa-th":$mainIcons[$menu['name']];?>"></i></i> <span><?=\Classes\LanguageManager::tran($menu['name'])?></span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu" id="<?="extension_".str_replace(" ", "_", $menu['name'])?>">
<?php foreach ($menu['menu'] as $item){?>
<li>
<a data-turbolinks="true" href="<?=CLIENT_BASE_URL?>?g=extension&n=<?=$item['name']?>&m=<?="extension_".str_replace(" ", "_", $menu['name'])?>">
<i class="fa <?=!isset($item['icon'])?"fa-angle-double-right":$item['icon']?>"></i> <?=\Classes\LanguageManager::tran($item['label'])?>
</a>
</li>
<?php }?>
</ul>
</li>
<?php }?>
<?php
if(file_exists(CLIENT_PATH.'/third_party_meta.json')){
$tpModules = json_decode(file_get_contents(CLIENT_PATH.'/third_party_meta.json'),true);
@@ -327,19 +277,6 @@ include('configureUIManager.php');
<!-- Right side column. Contains the navbar and content of the page -->
<aside class="right-side">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
<?=\Classes\LanguageManager::tran($meta['label'])?>
<small>
<?=\Classes\LanguageManager::tran($meta['menu'])?>&nbsp;&nbsp
</small>
</h1>
<a href="#" class="helpLink" target="_blank"
style="display:none;color:#f4f4f4;font-size: 2.3rem;float: right;margin-top: -30px;text-shadow: 1px 1px 2px black, 0 0 25px #367fa9, 0 0 5px #367fa9;">
<i class="fa fa-question-circle"></i></a>
</section>
<!-- Main content -->
<section class="content">

View File

@@ -1,4 +1,9 @@
<?php
use Classes\Common\IceContainer;
use Classes\LanguageManager;
use Utils\InputCleaner;
ini_set('display_errors', false);
error_reporting(E_ERROR);
require dirname(__FILE__).'/lib/composer/vendor/autoload.php';
@@ -8,9 +13,11 @@ require dirname(__FILE__).'/lib/composer/vendor/autoload.php';
//$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
//$whoops->register();
$container = new IceContainer();
function t($text)
{
return \Classes\LanguageManager::translateTnrText($text);
return LanguageManager::translateTnrText($text);
}
if(!defined('TAGS_TO_PRESERVE')){define('TAGS_TO_PRESERVE','');}
@@ -18,9 +25,9 @@ $jsVersion = defined('CACHE_VALUE')?CACHE_VALUE:"v".VERSION;
$cssVersion = defined('CACHE_VALUE')?CACHE_VALUE:"v".VERSION;
if(!isset($_REQUEST['content']) || $_REQUEST['content'] != 'HTML'){
$_REQUEST = \Utils\InputCleaner::cleanParameters($_REQUEST);
$_GET = \Utils\InputCleaner::cleanParameters($_GET);
$_POST = \Utils\InputCleaner::cleanParameters($_POST);
$_REQUEST = InputCleaner::cleanParameters($_REQUEST);
$_GET = InputCleaner::cleanParameters($_GET);
$_POST = InputCleaner::cleanParameters($_POST);
}
date_default_timezone_set('Asia/Colombo');

View File

@@ -55,6 +55,7 @@ $fieldTemplates['colorpick'] = file_get_contents(CLIENT_PATH.'/templates/fields/
$fieldTemplates['signature'] = file_get_contents(CLIENT_PATH.'/templates/fields/signature.html');
$fieldTemplates['simplemde'] = file_get_contents(CLIENT_PATH.'/templates/fields/simplemde.html');
$fieldTemplates['tinymce'] = file_get_contents(CLIENT_PATH.'/templates/fields/tinymce.html');
$fieldTemplates['code'] = file_get_contents(CLIENT_PATH.'/templates/fields/code.html');
$templates = array();
$templates['formTemplate'] = file_get_contents(CLIENT_PATH.'/templates/form_template.html');

1992
core/lang/al.po Normal file

File diff suppressed because it is too large Load Diff

1989
core/lang/ar.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1903,3 +1903,87 @@ msgstr "Gespräche"
msgid "Start Now"
msgstr "Jetzt anfangen"
msgid "Company Assets"
msgstr "Betriebsvermögen"
msgid "Asset Types"
msgstr "Asset-Typ"
msgid "Asset Name"
msgstr "Asset-Name"
msgid "Performance"
msgstr "Performance"
msgid "Performance Review"
msgstr "Leistungsbeurteilung"
msgid "Performance Reviews"
msgstr "Leistungsbeurteilungen"
msgid "Review"
msgstr "Rezension"
msgid "Reviews"
msgstr "Bewertungen"
msgid "Review Feedback"
msgstr "Rückmeldung überprüfen"
msgid "Review Template"
msgstr "Vorlage überprüfen"
msgid "Template"
msgstr "Vorlage"
msgid "Review Date"
msgstr "Prüfungsdatum"
msgid "Self Assessment Due On"
msgstr "Selbsteinschätzung fällig am"
msgid "Review Period Start"
msgstr "Überprüfungszeitraum starten"
msgid "Review Period End"
msgstr "Periodenende überprüfen"
msgid "Attendees"
msgstr "Teilnehmer"
msgid "Performance Reviews Coordinated by Me"
msgstr "Performance Reviews koordiniert von mir"
msgid "Provide Feedback"
msgstr "Rückmeldung geben"
msgid "Review Status"
msgstr "Überprüfen Sie den Status"
msgid "Payroll Employees"
msgstr "Mitarbeiter der Gehaltsabrechnung"
msgid "Payroll Groups"
msgstr "Gehaltsabrechnungs-Gruppen"
msgid "Saved Calculations"
msgstr "Gespeicherte Berechnungen"
msgid "Total Leave Days"
msgstr "Gesamturlaubstage"
msgid "Actions"
msgstr "Aktionen"
msgid "Edit"
msgstr "Bearbeiten"
msgid "View"
msgstr "Siehe"
msgid "Delete"
msgstr "Löschen"
msgid "Copy"
msgstr "Kopie"

View File

@@ -1903,3 +1903,87 @@ msgstr "Conversations"
msgid "Start Now"
msgstr "Start Now"
msgid "Company Assets"
msgstr "Company Assets"
msgid "Asset Types"
msgstr "Asset Types"
msgid "Asset Name"
msgstr "Asset Name"
msgid "Performance"
msgstr "Performance"
msgid "Performance Review"
msgstr "Performance Review"
msgid "Performance Reviews"
msgstr "Performance Reviews"
msgid "Review"
msgstr "Review"
msgid "Reviews"
msgstr "Reviews"
msgid "Review Feedback"
msgstr "Review Feedback"
msgid "Review Template"
msgstr "Review Template"
msgid "Template"
msgstr "Template"
msgid "Review Date"
msgstr "Review Date"
msgid "Self Assessment Due On"
msgstr "Self Assessment Due On"
msgid "Review Period Start"
msgstr "Review Period Start"
msgid "Review Period End"
msgstr "Review Period End"
msgid "Attendees"
msgstr "Attendees"
msgid "Performance Reviews Coordinated by Me"
msgstr "Performance Reviews Coordinated by Me"
msgid "Provide Feedback"
msgstr "Provide Feedback"
msgid "Review Status"
msgstr "Review Status"
msgid "Payroll Employees"
msgstr "Payroll Employees"
msgid "Payroll Groups"
msgstr "Payroll Groups"
msgid "Saved Calculations"
msgstr "Saved Calculations"
msgid "Total Leave Days"
msgstr "Total Leave Days"
msgid "Actions"
msgstr "Actions"
msgid "Edit"
msgstr "Edit"
msgid "View"
msgstr "View"
msgid "Delete"
msgstr "Delete"
msgid "Copy"
msgstr "Copy"

File diff suppressed because it is too large Load Diff

1989
core/lang/fi.po Normal file

File diff suppressed because it is too large Load Diff

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