Compare commits

..

5 Commits

Author SHA1 Message Date
Thilina
9f47df5613 Ability to compile extensions 2021-06-29 11:37:46 +02:00
Thilina
731073a133 Merge tag 'v30.0.0.OS' into develop
v30.0.0.OS
2021-06-28 11:48:07 +02:00
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
7 changed files with 125 additions and 4 deletions

View File

@@ -13,10 +13,10 @@ if(!defined('HOME_LINK_OTHERS')){
}
//Version
define('VERSION', '29.0.0.OS');
define('CACHE_VALUE', '29.0.0.OS.2020-04021509');
define('VERSION_NUMBER', '290000');
define('VERSION_DATE', '02/04/2021');
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');}

View File

@@ -0,0 +1,31 @@
<?php
use Classes\ExtensionManager;
use Utils\LogManager;
if (!isset($extensionIndex)) {
exit();
}
define('MODULE_PATH',APP_BASE_PATH.'extensions/'.$moduleName);
include APP_BASE_PATH.'header.php';
$extensionManager = new ExtensionManager();
$meta = $extensionManager->getExtensionMetaData($moduleName);
if (!$meta) {
LogManager::getInstance()->error("Extension metadata.json not found for $moduleName");
exit();
}
if ($meta->headless) {
LogManager::getInstance()->error("Extension running in headless mode for $moduleName");
exit();
}
?>
<script type="text/javascript" src="<?=BASE_URL.'dist/vendorReact.js'?>?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL.'dist/vendorAntd.js'?>?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL.'dist/vendorAntdIcons.js'?>?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL.'dist/vendorAntv.js'?>?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=BASE_URL.'dist/vendorOther.js'?>?v=<?=$jsVersion?>"></script>
<script type="text/javascript" src="<?=EXTENSIONS_URL.$moduleName.'/dist/'.$moduleName.'.js'?>?v=<?=$jsVersion?>"></script>
<?php
include $extensionIndex;
include APP_BASE_PATH.'footer.php';
?>

View File

@@ -1,5 +1,6 @@
<?php
$migrationList = [];
$migrationList[] = 'v20210626_290004_add_s3_settings';
$migrationList[] = 'v20210606_290003_system_meta_data';
$migrationList[] = 'v20210606_290002_add_aws_region';
$migrationList[] = 'v20210606_290001_update_s3_config';

View File

@@ -0,0 +1,28 @@
<?php
namespace Classes\Migration;
class v20210626_290004_add_s3_settings extends AbstractMigration
{
public function up()
{
$sql = <<<'SQL'
REPLACE INTO `Settings` (`name`, `value`, `description`, `meta`, `category`) VALUES
('Files: Upload Files to S3', '0', '','["value", {"label":"Value","type":"select","source":[["1","Yes"],["0","No"]]}]', 'System'),
('Files: Amazon S3 Key for File Upload', '', 'Please provide S3 Key for uploading files','', 'System'),
('Files: Amazon S3 Secret for File Upload', '', 'Please provide S3 Secret for uploading files','', 'System'),
('Files: S3 Bucket', '', 'Please provide S3 Bucket name for uploading files','', 'System'),
('Files: S3 Web Url', '', 'Please provide Url to the s3 bucket','', 'System'),
('System: AWS Region', 'us-east-1', 'Amazon AWS Region used for file storage','', 'System');
SQL;
return $this->executeQuery($sql);
}
public function down()
{
return true;
}
}

1
extensions/gitkeep Executable file
View File

@@ -0,0 +1 @@
git keep

View File

@@ -361,6 +361,47 @@ gulp.task('modules-js', (done) => {
.pipe(gulp.dest('./web/dist'));
});
gulp.task('extension-js', (done) => {
let extension = process.argv.filter((item) => item.substr(0, 3) === '--x');
if (extension.length === 1) {
extension = extension[0].substr(3);
}
// map them to our stream function
return browserify({
entries: [`extensions/${extension}/web/js/index.js`],
basedir: '.',
debug: true,
cache: {},
packageCache: {},
})
.external(vendorsFlat)
.transform('babelify', {
plugins: [
['@babel/plugin-proposal-class-properties', { loose: true }],
],
presets: ['@babel/preset-env', '@babel/preset-react'],
extensions: ['.js', '.jsx'],
})
.transform(require('browserify-css'))
.bundle()
.pipe(source(`${extension}.js`))
.pipe(buffer())
.pipe(ifElse(!isProduction, () => sourcemaps.init({ loadMaps: true })))
.pipe(ifElse(isProduction, () => uglifyes(
{
compress: true,
mangle: {
reserved: [],
},
},
)))
.pipe(ifElse(isProduction, () => javascriptObfuscator({
compact: true,
})))
.pipe(ifElse(!isProduction, () => sourcemaps.write('./')))
.pipe(gulp.dest(`./extensions/${extension}/dist`));
});
gulp.task('watch', () => {
gulp.watch('web/admin/src/*/*.js', gulp.series('admin-js'));

View File

@@ -1,5 +1,24 @@
# Release Notes IceHrm Open Source
## Release note v30.0.0.OS
### 🛡️ Security improvements
* This release is fixing some critical security issues related to file storage. All IceHrm installations should be upgraded to this version immediately.
Please review instructions provided under [this link](https://icehrm.gitbook.io/icehrm/getting-started/securing-icehrm-installation) to make sure your IceHrm installation is secure.
### 🧲 New features
* Ability to use Amazon S3 as a secure file storage for IceHrm [find instructions here](https://icehrm.gitbook.io/icehrm/getting-started/using-aws-s3-for-icehrm-file-storage)
* Secure local file storage
* Connection module for showing critical errors in installation and sending extracting system information
* Ability to change AWS region via settings
### 🐛 Bug fixes
* Displaying employees list with non-UTF employee names
* Fix extension loading issue. This fixes the issue with loading new extension created following the [documentation](https://icehrm.gitbook.io/icehrm/developer-guide/creating-first-extension).
* Fix the issue with editing employee fields
## Release note v29.0.0.OS
### 🧲 New features