Merged in feature/PMC-1241 (pull request #7171)

PMC-1241

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Paula Quispe
2020-01-03 13:06:05 +00:00
committed by Julio Cesar Laura Avendaño
27 changed files with 2906 additions and 1866 deletions

View File

@@ -0,0 +1,28 @@
<?php
use Faker\Generator as Faker;
$factory->define(\ProcessMaker\Model\AdditionalTables::class, function(Faker $faker) {
return [
'ADD_TAB_UID' => G::generateUniqueID(),
'ADD_TAB_NAME' => $faker->name,
'ADD_TAB_CLASS_NAME' => $faker->name,
'ADD_TAB_DESCRIPTION' => $faker->text,
'ADD_TAB_SDW_LOG_INSERT' => 0,
'ADD_TAB_SDW_LOG_UPDATE' => 0,
'ADD_TAB_SDW_LOG_DELETE' => 0,
'ADD_TAB_SDW_LOG_SELECT' => 0,
'ADD_TAB_SDW_MAX_LENGTH' => 0,
'ADD_TAB_SDW_AUTO_DELETE' => 0,
'ADD_TAB_PLG_UID' => '',
'DBS_UID' => 'workflow',
'PRO_UID' => function() {
return factory(\ProcessMaker\Model\Process::class)->create()->PRO_UID;
},
'ADD_TAB_TYPE' => '',
'ADD_TAB_GRID' => '',
'ADD_TAB_TAG' => '',
'ADD_TAB_OFFLINE' => 0,
'ADD_TAB_UPDATE_DATE' => $faker->dateTime()
];
});

View File

@@ -0,0 +1,50 @@
<?php
use Faker\Generator as Faker;
use ProcessMaker\Model\AdditionalTables;
$factory->define(\ProcessMaker\Model\Fields::class, function (Faker $faker) {
return [
'FLD_UID' => G::generateUniqueID(),
'ADD_TAB_UID' => G::generateUniqueID(),
'FLD_INDEX' => 0,
'FLD_NAME' => 'VAR_' . $faker->sentence(1),
'FLD_DESCRIPTION' => $faker->sentence(2),
'FLD_TYPE' => 'VARCHAR',
'FLD_SIZE' => 255,
'FLD_NULL' => 1,
'FLD_AUTO_INCREMENT' => 0,
'FLD_KEY' => 1,
'FLD_TABLE_INDEX' => 0,
'FLD_FOREIGN_KEY' => 0,
'FLD_FOREIGN_KEY_TABLE' => '',
'FLD_DYN_NAME' => '',
'FLD_DYN_UID' => '',
'FLD_FILTER' => 0,
];
});
// Create columns from a table with the foreign keys
$factory->state(\ProcessMaker\Model\Fields::class, 'foreign_keys', function (Faker $faker) {
return [
'FLD_UID' => G::generateUniqueID(),
'ADD_TAB_UID' => function() {
$table = factory(AdditionalTables::class)->create(['ADD_TAB_OFFLINE' => 1]);
return $table->ADD_TAB_UID;
},
'FLD_INDEX' => 0,
'FLD_NAME' => 'VAR_' . $faker->sentence(1),
'FLD_DESCRIPTION' => $faker->sentence(2),
'FLD_TYPE' => 'VARCHAR',
'FLD_SIZE' => 255,
'FLD_NULL' => 1,
'FLD_AUTO_INCREMENT' => 0,
'FLD_KEY' => 1,
'FLD_TABLE_INDEX' => 0,
'FLD_FOREIGN_KEY' => 0,
'FLD_FOREIGN_KEY_TABLE' => '',
'FLD_DYN_NAME' => '',
'FLD_DYN_UID' => '',
'FLD_FILTER' => 0,
];
});

View File

@@ -32,6 +32,7 @@ define('PMTABLE_KEY', 'pmtable');
define('DB_ADAPTER', 'mysql'); define('DB_ADAPTER', 'mysql');
// Path related some specific directories // Path related some specific directories
define('PATH_SEP', '/'); define('PATH_SEP', '/');
define("PATH_PLUGINS", PATH_CORE . "plugins" . PATH_SEP);
define('PATH_WORKSPACE', PATH_TRUNK . '/shared/sites/' . SYS_SYS . '/'); define('PATH_WORKSPACE', PATH_TRUNK . '/shared/sites/' . SYS_SYS . '/');
define('PATH_METHODS', dirname(__DIR__) . '/workflow/engine/methods/'); define('PATH_METHODS', dirname(__DIR__) . '/workflow/engine/methods/');
define('PATH_WORKFLOW_MYSQL_DATA', PATH_TRUNK . '/workflow/engine/data/mysql/'); define('PATH_WORKFLOW_MYSQL_DATA', PATH_TRUNK . '/workflow/engine/data/mysql/');

View File

@@ -0,0 +1,109 @@
<?php
namespace Tests\unit\workflow\engine\classes\model;
use AdditionalTables;
use Exception;
use G;
use ProcessMaker\Model\AdditionalTables as AdditionalTablesModel;
use Tests\TestCase;
class AdditionalTablesTest extends TestCase
{
/**
* This tests the creation of a PMTable.
* @test
* @covers \AdditionalTables::create()
*/
public function it_should_create()
{
$data = [
"ADD_TAB_UID" => "",
"ADD_TAB_NAME" => "PMT_TEST11",
"ADD_TAB_CLASS_NAME" => "PmtTest11",
"ADD_TAB_DESCRIPTION" => "",
"ADD_TAB_PLG_UID" => "",
"DBS_UID" => "workflow",
"PRO_UID" => "",
"ADD_TAB_TYPE" => "",
"ADD_TAB_GRID" => "",
"ADD_TAB_OFFLINE" => false,
"ADD_TAB_UPDATE_DATE" => "2019-10-22 19:52:52"
];
$additionalTables = new AdditionalTables();
$result = $additionalTables->create($data);
$additionalTablesModel = AdditionalTablesModel::where('ADD_TAB_UID', '=', $result)
->get()
->first();
$actual = $additionalTablesModel->toArray();
unset($data["ADD_TAB_UID"]);
$this->assertArraySubset($data, $actual);
}
/**
* This attempts to create a PMTable without correct data to cause an exception.
* @test
* @covers \AdditionalTables::create()
*/
public function it_should_create_without_data()
{
$data = [
];
$additionalTables = new AdditionalTables();
$this->expectException(Exception::class);
$additionalTables->create($data);
}
/**
* This updates the data of a PMTable.
* @test
* @covers \AdditionalTables::update()
*/
public function it_should_update()
{
$additionalTables = factory(AdditionalTablesModel::class)->create();
$expected = [
"ADD_TAB_UID" => $additionalTables->ADD_TAB_UID,
"ADD_TAB_NAME" => "PMT_TEST11",
"ADD_TAB_CLASS_NAME" => "PmtTest11",
"DBS_UID" => "workflow",
"ADD_TAB_OFFLINE" => false,
"ADD_TAB_UPDATE_DATE" => "2019-10-22 19:53:11"
];
$additionalTables = new AdditionalTables();
$additionalTables->update($expected);
$additionalTables = AdditionalTablesModel::where('ADD_TAB_UID', '=', $expected['ADD_TAB_UID'])
->get()
->first();
$this->assertEquals($expected["ADD_TAB_NAME"], $additionalTables->ADD_TAB_NAME);
$this->assertEquals($expected["ADD_TAB_CLASS_NAME"], $additionalTables->ADD_TAB_CLASS_NAME);
}
/**
* It tries to update the data of a non-existent "PMTable".
* @test
* @covers \AdditionalTables::update()
*/
public function it_should_update_if_registry_not_exist()
{
$expected = [
"ADD_TAB_UID" => G::generateUniqueID(),
"ADD_TAB_NAME" => "PMT_TEST11",
"ADD_TAB_CLASS_NAME" => "PmtTest11",
"DBS_UID" => "workflow",
"ADD_TAB_OFFLINE" => false,
"ADD_TAB_UPDATE_DATE" => "2019-10-22 19:53:11"
];
$this->expectException(Exception::class);
$additionalTables = new AdditionalTables();
$additionalTables->update($expected);
}
}

View File

@@ -0,0 +1,101 @@
<?php
namespace Tests\unit\workflow\engine\src\ProcessMaker\BusinessModel;
use Faker\Factory;
use ProcessMaker\BusinessModel\Light;
use Tests\TestCase;
class LightTest extends TestCase
{
/**
* This verifies that the mobile_offline_tables_download_interval parameter
* is defined in the result returned by the getConfiguration() method.
*
* @test
* @covers \ProcessMaker\BusinessModel\Light::getConfiguration
*/
public function it_should_return_mobile_offline_tables_download_interval_from_get_configuration_method()
{
$param = [
'fileLimit' => true,
'tz' => true,
];
$light = new Light();
/**
* In the getConfiguration() method, the next section:
*
* $postMaxSize = $this->return_bytes(ini_get('post_max_size'));
* $uploadMaxFileSize = $this->return_bytes(ini_get('upload_max_filesize'));
* if ($postMaxSize < $uploadMaxFileSize) {
* $uploadMaxFileSize = $postMaxSize;
* }
*
* It can only be tested if you change the values of "post_max_size" and "upload_max_filesize"
* in php.ini, you can't use the ini_set() function.
* The mode change of these directives is "PHP_INI_PERDIR", where is entry can be
* set in php.ini, .htaccess, httpd.conf or .user.ini, see here:
* https://www.php.net/manual/es/ini.list.php
* https://www.php.net/manual/en/configuration.changes.modes.php
*/
$result = $light->getConfiguration($param);
$this->assertArrayHasKey('mobile_offline_tables_download_interval', $result);
}
/**
* This returns the value of mobile_offline_tables_download_interval
* @test
* @covers \ProcessMaker\BusinessModel\Light::getConfiguration
*/
public function this_should_return_mobile_offline_tables_download_interval_inside_env()
{
$oldContent = "";
$path = PATH_CONFIG . "env.ini";
if (file_exists($path)) {
$oldContent = file_get_contents($path);
}
$expected = 30;
$content = "mobile_offline_tables_download_interval = {$expected};";
file_put_contents($path, $content);
$light = new Light();
$result = $light->getConfiguration([]);
$actual = $result['mobile_offline_tables_download_interval'];
file_put_contents($path, $oldContent);
$this->assertEquals($expected, $actual);
}
/**
* This returns the default value of mobile_offline_tables_download_interval.
* @test
* @covers \ProcessMaker\BusinessModel\Light::getConfiguration
*/
public function this_should_return_default_value_if_mobile_offline_tables_download_interval_inside_env_is_not_an_integer()
{
$oldContent = "";
$path = PATH_CONFIG . "env.ini";
if (file_exists($path)) {
$oldContent = file_get_contents($path);
}
$faker = $faker = Factory::create();
$alphanumeric = $faker->regexify('[A-Za-z0-9]{20}');
$content = "mobile_offline_tables_download_interval = '{$alphanumeric}';";
file_put_contents($path, $content);
$light = new Light();
$result = $light->getConfiguration([]);
$expected = (string) $result['mobile_offline_tables_download_interval'];
file_put_contents($path, $oldContent);
$this->assertTrue(ctype_digit($expected));
}
}

View File

@@ -2,22 +2,20 @@
namespace Tests\unit\workflow\engine\src\ProcessMaker\Core; namespace Tests\unit\workflow\engine\src\ProcessMaker\Core;
use G;
use Faker\Factory;
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use Tests\TestCase; use Tests\TestCase;
class SystemTest extends TestCase class SystemTest extends TestCase
{ {
/** /**
* Define the required variables * Define the required variables
*/ */
protected function setUp() public function setUp()
{ {
$this->markTestIncomplete();//@todo: Please correct this unit test parent::setUp();
$config = config('database.connections.testexternal');
define('DB_HOST', $config['host']);
define('DB_NAME', $config['database']);
define('DB_USER', $config['username']);
define('DB_PASS', $config['password']);
} }
/** /**
@@ -27,6 +25,8 @@ class SystemTest extends TestCase
*/ */
public function it_should_init_laravel_configurations() public function it_should_init_laravel_configurations()
{ {
$this->markTestIncomplete("@todo: Please correct this unit test");
$object = new System(); $object = new System();
$object->initLaravel(); $object->initLaravel();
@@ -36,4 +36,112 @@ class SystemTest extends TestCase
$this->assertEquals(DB_USER, config('database.connections.workflow.username')); $this->assertEquals(DB_USER, config('database.connections.workflow.username'));
$this->assertEquals(DB_PASS, config('database.connections.workflow.password')); $this->assertEquals(DB_PASS, config('database.connections.workflow.password'));
} }
/**
* It should return default system configuration parameters.
* @test
* @covers \ProcessMaker\Core\System::getSystemConfiguration()
*/
public function it_should_return_default_system_configuration_parameters()
{
$result = System::getSystemConfiguration();
$this->assertArrayHasKey('server_hostname_requests_frontend', $result);
$this->assertArrayHasKey('disable_php_upload_execution', $result);
$this->assertArrayHasKey('mobile_offline_tables_download_interval', $result);
}
/**
* It should return default system configuration parameters without workspace.
* @test
* @covers \ProcessMaker\Core\System::getSystemConfiguration()
*/
public function it_should_return_default_system_configuration_parameters_without_workspace()
{
config(["system.workspace" => '']);
putenv("REQUEST_URI=/sysworkflow");
$result = System::getSystemConfiguration();
$this->assertArrayHasKey('server_hostname_requests_frontend', $result);
$this->assertArrayHasKey('disable_php_upload_execution', $result);
$this->assertArrayHasKey('mobile_offline_tables_download_interval', $result);
}
/**
* It should return system configuration parameters defined inside env file.
* @test
* @covers \ProcessMaker\Core\System::getSystemConfiguration()
*/
public function it_should_return_system_configuration_parameters_defined_inside_env_file()
{
$oldContent = "";
$path = PATH_CONFIG . "env.ini";
if (file_exists($path)) {
$oldContent = file_get_contents($path);
}
$expected = 30;
$content = "mobile_offline_tables_download_interval = {$expected};";
file_put_contents($path, $content);
$result = System::getSystemConfiguration();
$actual = $result['mobile_offline_tables_download_interval'];
file_put_contents($path, $oldContent);
$this->assertEquals($expected, $actual);
}
/**
* It should return default system configuration parameters defined inside env file when is not integer.
* @test
* @covers \ProcessMaker\Core\System::getSystemConfiguration()
*/
public function it_should_return_default_system_configuration_parameters_defined_inside_env_file_when_is_not_an_integer()
{
$oldContent = "";
$path = PATH_CONFIG . "env.ini";
if (file_exists($path)) {
$oldContent = file_get_contents($path);
}
$faker = $faker = Factory::create();
$alphanumeric = $faker->regexify('[A-Za-z0-9]{20}');
$content = "mobile_offline_tables_download_interval = '{$alphanumeric}';";
file_put_contents($path, $content);
$result = System::getSystemConfiguration();
$expected = (string) $result['mobile_offline_tables_download_interval'];
file_put_contents($path, $oldContent);
$this->assertTrue(is_numeric($expected));
}
/**
* It should return proxy_pass defined inside env file.
* @test
* @covers \ProcessMaker\Core\System::getSystemConfiguration()
*/
public function it_should_return_proxy_pass_defined_inside_env_file()
{
$oldContent = "";
$path = PATH_CONFIG . "env.ini";
if (file_exists($path)) {
$oldContent = file_get_contents($path);
}
$faker = $faker = Factory::create();
$content = "proxy_pass = '{$faker->password}';";
file_put_contents($path, $content);
$result = System::getSystemConfiguration();
file_put_contents($path, $oldContent);
$this->assertArrayHasKey("proxy_pass", $result);
}
} }

View File

@@ -0,0 +1,81 @@
<?php
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
use ProcessMaker\Model\AdditionalTables;
use ProcessMaker\Model\Fields;
use Tests\TestCase;
class AdditionalTablesTest extends TestCase
{
/**
* Test belongs to ADD_TAB_UID
*
* @covers \ProcessMaker\Model\AdditionalTables::columns()
* @test
*/
public function it_has_a_columns_defined()
{
$table = factory(AdditionalTables::class)->create([
'ADD_TAB_UID' => function () {
return factory(Fields::class)->create()->ADD_TAB_UID;
}
]);
$this->assertInstanceOf(Fields::class, $table->columns);
}
/**
* Test scope query to get the offline tables
*
* @covers \ProcessMaker\Model\AdditionalTables::scopeOffline()
* @test
*/
public function it_filter_offline_table()
{
factory(AdditionalTables::class)->create(['ADD_TAB_OFFLINE' => 0]);
$table = factory(AdditionalTables::class)->create([
'ADD_TAB_OFFLINE' => 1
]);
$this->assertCount(1, $table->offline([$table->ADD_TAB_OFFLINE])->get());
}
/**
* Test get the structure of offline tables
*
* @covers \ProcessMaker\Model\AdditionalTables::getTablesOfflineStructure()
* @test
*/
public function it_get_structure_from_offline_tables()
{
factory(Fields::class)->states('foreign_keys')->create();
$results = AdditionalTables::getTablesOfflineStructure();
$this->assertNotEmpty($results);
foreach ($results as $row) {
$this->assertArrayHasKey('add_tab_uid', $row);
$this->assertArrayHasKey('add_tab_name', $row);
$this->assertArrayHasKey('add_tab_description', $row);
$this->assertArrayHasKey('add_tab_class_name', $row);
$this->assertArrayHasKey('fields', $row);
}
}
/**
* Test get the data of offline tables
*
* @covers \ProcessMaker\Model\AdditionalTables::getTablesOfflineData()
* @test
*/
public function it_get_data_from_offline_tables()
{
factory(Fields::class)->states('foreign_keys')->create();
$results = AdditionalTables::getTablesOfflineData();
$this->assertNotEmpty($results);
foreach ($results as $row) {
$this->assertArrayHasKey('add_tab_uid', $row);
$this->assertArrayHasKey('add_tab_name', $row);
$this->assertArrayHasKey('add_tab_description', $row);
$this->assertArrayHasKey('add_tab_class_name', $row);
$this->assertArrayHasKey('rows', $row);
}
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
use ProcessMaker\Model\AdditionalTables;
use ProcessMaker\Model\Fields;
use Tests\TestCase;
class FieldsTest extends TestCase
{
/**
* Test belongs to ADD_TAB_UID
*
* @covers \ProcessMaker\Model\Fields::table()
* @test
*/
public function it_has_a_columns_defined()
{
$tableColumns = factory(Fields::class)->create([
'ADD_TAB_UID' => function () {
return factory(AdditionalTables::class)->create()->ADD_TAB_UID;
}
]);
$this->assertInstanceOf(AdditionalTables::class, $tableColumns->table);
}
/**
* Test scope and the query with a specific ADD_TAB_UID
*
* @covers \ProcessMaker\Model\Fields::scopeTable()
* @covers \ProcessMaker\Model\Fields::getFields()
* @test
*/
public function it_get_fields_from_specific_table()
{
$fields = factory(Fields::class)->create();
$result = Fields::getFields($fields->ADD_TAB_UID);
$this->assertNotEmpty($result);
}
}

View File

@@ -1086,6 +1086,7 @@ class AdditionalTables extends BaseAdditionalTables
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_DESCRIPTION); $criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_DESCRIPTION);
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TYPE); $criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TYPE);
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TAG); $criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TAG);
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_OFFLINE);
$criteria->addSelectColumn(AdditionalTablesPeer::PRO_UID); $criteria->addSelectColumn(AdditionalTablesPeer::PRO_UID);
$criteria->addSelectColumn(AdditionalTablesPeer::DBS_UID); $criteria->addSelectColumn(AdditionalTablesPeer::DBS_UID);

View File

@@ -97,6 +97,10 @@ class AdditionalTablesMapBuilder
$tMap->addColumn('ADD_TAB_TAG', 'AddTabTag', 'string', CreoleTypes::VARCHAR, false, 256); $tMap->addColumn('ADD_TAB_TAG', 'AddTabTag', 'string', CreoleTypes::VARCHAR, false, 256);
$tMap->addColumn('ADD_TAB_OFFLINE', 'AddTabOffline', 'int', CreoleTypes::TINYINT, true, null);
$tMap->addColumn('ADD_TAB_UPDATE_DATE', 'AddTabUpdateDate', 'int', CreoleTypes::TIMESTAMP, true, null);
} // doBuild() } // doBuild()
} // AdditionalTablesMapBuilder } // AdditionalTablesMapBuilder

View File

@@ -123,6 +123,18 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
*/ */
protected $add_tab_tag = ''; protected $add_tab_tag = '';
/**
* The value for the add_tab_offline field.
* @var int
*/
protected $add_tab_offline = 0;
/**
* The value for the add_tab_update_date field.
* @var int
*/
protected $add_tab_update_date;
/** /**
* Flag to prevent endless save loop, if this object is referenced * Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction. * by another object which falls in this transaction.
@@ -313,6 +325,49 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
return $this->add_tab_tag; return $this->add_tab_tag;
} }
/**
* Get the [add_tab_offline] column value.
*
* @return int
*/
public function getAddTabOffline()
{
return $this->add_tab_offline;
}
/**
* Get the [optionally formatted] [add_tab_update_date] column value.
*
* @param string $format The date/time format string (either date()-style or strftime()-style).
* If format is NULL, then the integer unix timestamp will be returned.
* @return mixed Formatted date/time value as string or integer unix timestamp (if format is NULL).
* @throws PropelException - if unable to convert the date/time to timestamp.
*/
public function getAddTabUpdateDate($format = 'Y-m-d H:i:s')
{
if ($this->add_tab_update_date === null || $this->add_tab_update_date === '') {
return null;
} elseif (!is_int($this->add_tab_update_date)) {
// a non-timestamp value was set externally, so we convert it
$ts = strtotime($this->add_tab_update_date);
if ($ts === -1 || $ts === false) {
throw new PropelException("Unable to parse value of [add_tab_update_date] as date/time value: " .
var_export($this->add_tab_update_date, true));
}
} else {
$ts = $this->add_tab_update_date;
}
if ($format === null) {
return $ts;
} elseif (strpos($format, '%') !== false) {
return strftime($format, $ts);
} else {
return date($format, $ts);
}
}
/** /**
* Set the value of [add_tab_uid] column. * Set the value of [add_tab_uid] column.
* *
@@ -665,6 +720,57 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
} // setAddTabTag() } // setAddTabTag()
/**
* Set the value of [add_tab_offline] column.
*
* @param int $v new value
* @return void
*/
public function setAddTabOffline($v)
{
// Since the native PHP type for this column is integer,
// we will cast the input value to an int (if it is not).
if ($v !== null && !is_int($v) && is_numeric($v)) {
$v = (int) $v;
}
if ($this->add_tab_offline !== $v || $v === 0) {
$this->add_tab_offline = $v;
$this->modifiedColumns[] = AdditionalTablesPeer::ADD_TAB_OFFLINE;
}
} // setAddTabOffline()
/**
* Set the value of [add_tab_update_date] column.
*
* @param int $v new value
* @return void
*/
public function setAddTabUpdateDate($v)
{
if ($v !== null && !is_int($v)) {
$ts = strtotime($v);
//Date/time accepts null values
if ($v == '') {
$ts = null;
}
if ($ts === -1 || $ts === false) {
throw new PropelException("Unable to parse date/time value for [add_tab_update_date] from input: " .
var_export($v, true));
}
} else {
$ts = $v;
}
if ($this->add_tab_update_date !== $ts) {
$this->add_tab_update_date = $ts;
$this->modifiedColumns[] = AdditionalTablesPeer::ADD_TAB_UPDATE_DATE;
}
} // setAddTabUpdateDate()
/** /**
* Hydrates (populates) the object variables with values from the database resultset. * Hydrates (populates) the object variables with values from the database resultset.
* *
@@ -714,12 +820,16 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
$this->add_tab_tag = $rs->getString($startcol + 15); $this->add_tab_tag = $rs->getString($startcol + 15);
$this->add_tab_offline = $rs->getInt($startcol + 16);
$this->add_tab_update_date = $rs->getTimestamp($startcol + 17, null);
$this->resetModified(); $this->resetModified();
$this->setNew(false); $this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer. // FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 16; // 16 = AdditionalTablesPeer::NUM_COLUMNS - AdditionalTablesPeer::NUM_LAZY_LOAD_COLUMNS). return $startcol + 18; // 18 = AdditionalTablesPeer::NUM_COLUMNS - AdditionalTablesPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) { } catch (Exception $e) {
throw new PropelException("Error populating AdditionalTables object", $e); throw new PropelException("Error populating AdditionalTables object", $e);
@@ -971,6 +1081,12 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
case 15: case 15:
return $this->getAddTabTag(); return $this->getAddTabTag();
break; break;
case 16:
return $this->getAddTabOffline();
break;
case 17:
return $this->getAddTabUpdateDate();
break;
default: default:
return null; return null;
break; break;
@@ -1007,6 +1123,8 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
$keys[13] => $this->getAddTabType(), $keys[13] => $this->getAddTabType(),
$keys[14] => $this->getAddTabGrid(), $keys[14] => $this->getAddTabGrid(),
$keys[15] => $this->getAddTabTag(), $keys[15] => $this->getAddTabTag(),
$keys[16] => $this->getAddTabOffline(),
$keys[17] => $this->getAddTabUpdateDate(),
); );
return $result; return $result;
} }
@@ -1086,6 +1204,12 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
case 15: case 15:
$this->setAddTabTag($value); $this->setAddTabTag($value);
break; break;
case 16:
$this->setAddTabOffline($value);
break;
case 17:
$this->setAddTabUpdateDate($value);
break;
} // switch() } // switch()
} }
@@ -1173,6 +1297,14 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
$this->setAddTabTag($arr[$keys[15]]); $this->setAddTabTag($arr[$keys[15]]);
} }
if (array_key_exists($keys[16], $arr)) {
$this->setAddTabOffline($arr[$keys[16]]);
}
if (array_key_exists($keys[17], $arr)) {
$this->setAddTabUpdateDate($arr[$keys[17]]);
}
} }
/** /**
@@ -1248,6 +1380,14 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
$criteria->add(AdditionalTablesPeer::ADD_TAB_TAG, $this->add_tab_tag); $criteria->add(AdditionalTablesPeer::ADD_TAB_TAG, $this->add_tab_tag);
} }
if ($this->isColumnModified(AdditionalTablesPeer::ADD_TAB_OFFLINE)) {
$criteria->add(AdditionalTablesPeer::ADD_TAB_OFFLINE, $this->add_tab_offline);
}
if ($this->isColumnModified(AdditionalTablesPeer::ADD_TAB_UPDATE_DATE)) {
$criteria->add(AdditionalTablesPeer::ADD_TAB_UPDATE_DATE, $this->add_tab_update_date);
}
return $criteria; return $criteria;
} }
@@ -1332,6 +1472,10 @@ abstract class BaseAdditionalTables extends BaseObject implements Persistent
$copyObj->setAddTabTag($this->add_tab_tag); $copyObj->setAddTabTag($this->add_tab_tag);
$copyObj->setAddTabOffline($this->add_tab_offline);
$copyObj->setAddTabUpdateDate($this->add_tab_update_date);
$copyObj->setNew(true); $copyObj->setNew(true);

View File

@@ -25,7 +25,7 @@ abstract class BaseAdditionalTablesPeer
const CLASS_DEFAULT = 'classes.model.AdditionalTables'; const CLASS_DEFAULT = 'classes.model.AdditionalTables';
/** The total number of columns. */ /** The total number of columns. */
const NUM_COLUMNS = 16; const NUM_COLUMNS = 18;
/** The number of lazy-loaded columns. */ /** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0; const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -79,6 +79,12 @@ abstract class BaseAdditionalTablesPeer
/** the column name for the ADD_TAB_TAG field */ /** the column name for the ADD_TAB_TAG field */
const ADD_TAB_TAG = 'ADDITIONAL_TABLES.ADD_TAB_TAG'; const ADD_TAB_TAG = 'ADDITIONAL_TABLES.ADD_TAB_TAG';
/** the column name for the ADD_TAB_OFFLINE field */
const ADD_TAB_OFFLINE = 'ADDITIONAL_TABLES.ADD_TAB_OFFLINE';
/** the column name for the ADD_TAB_UPDATE_DATE field */
const ADD_TAB_UPDATE_DATE = 'ADDITIONAL_TABLES.ADD_TAB_UPDATE_DATE';
/** The PHP to DB Name Mapping */ /** The PHP to DB Name Mapping */
private static $phpNameMap = null; private static $phpNameMap = null;
@@ -90,10 +96,10 @@ abstract class BaseAdditionalTablesPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/ */
private static $fieldNames = array ( private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('AddTabUid', 'AddTabName', 'AddTabClassName', 'AddTabDescription', 'AddTabSdwLogInsert', 'AddTabSdwLogUpdate', 'AddTabSdwLogDelete', 'AddTabSdwLogSelect', 'AddTabSdwMaxLength', 'AddTabSdwAutoDelete', 'AddTabPlgUid', 'DbsUid', 'ProUid', 'AddTabType', 'AddTabGrid', 'AddTabTag', ), BasePeer::TYPE_PHPNAME => array ('AddTabUid', 'AddTabName', 'AddTabClassName', 'AddTabDescription', 'AddTabSdwLogInsert', 'AddTabSdwLogUpdate', 'AddTabSdwLogDelete', 'AddTabSdwLogSelect', 'AddTabSdwMaxLength', 'AddTabSdwAutoDelete', 'AddTabPlgUid', 'DbsUid', 'ProUid', 'AddTabType', 'AddTabGrid', 'AddTabTag', 'AddTabOffline', 'AddTabUpdateDate', ),
BasePeer::TYPE_COLNAME => array (AdditionalTablesPeer::ADD_TAB_UID, AdditionalTablesPeer::ADD_TAB_NAME, AdditionalTablesPeer::ADD_TAB_CLASS_NAME, AdditionalTablesPeer::ADD_TAB_DESCRIPTION, AdditionalTablesPeer::ADD_TAB_SDW_LOG_INSERT, AdditionalTablesPeer::ADD_TAB_SDW_LOG_UPDATE, AdditionalTablesPeer::ADD_TAB_SDW_LOG_DELETE, AdditionalTablesPeer::ADD_TAB_SDW_LOG_SELECT, AdditionalTablesPeer::ADD_TAB_SDW_MAX_LENGTH, AdditionalTablesPeer::ADD_TAB_SDW_AUTO_DELETE, AdditionalTablesPeer::ADD_TAB_PLG_UID, AdditionalTablesPeer::DBS_UID, AdditionalTablesPeer::PRO_UID, AdditionalTablesPeer::ADD_TAB_TYPE, AdditionalTablesPeer::ADD_TAB_GRID, AdditionalTablesPeer::ADD_TAB_TAG, ), BasePeer::TYPE_COLNAME => array (AdditionalTablesPeer::ADD_TAB_UID, AdditionalTablesPeer::ADD_TAB_NAME, AdditionalTablesPeer::ADD_TAB_CLASS_NAME, AdditionalTablesPeer::ADD_TAB_DESCRIPTION, AdditionalTablesPeer::ADD_TAB_SDW_LOG_INSERT, AdditionalTablesPeer::ADD_TAB_SDW_LOG_UPDATE, AdditionalTablesPeer::ADD_TAB_SDW_LOG_DELETE, AdditionalTablesPeer::ADD_TAB_SDW_LOG_SELECT, AdditionalTablesPeer::ADD_TAB_SDW_MAX_LENGTH, AdditionalTablesPeer::ADD_TAB_SDW_AUTO_DELETE, AdditionalTablesPeer::ADD_TAB_PLG_UID, AdditionalTablesPeer::DBS_UID, AdditionalTablesPeer::PRO_UID, AdditionalTablesPeer::ADD_TAB_TYPE, AdditionalTablesPeer::ADD_TAB_GRID, AdditionalTablesPeer::ADD_TAB_TAG, AdditionalTablesPeer::ADD_TAB_OFFLINE, AdditionalTablesPeer::ADD_TAB_UPDATE_DATE, ),
BasePeer::TYPE_FIELDNAME => array ('ADD_TAB_UID', 'ADD_TAB_NAME', 'ADD_TAB_CLASS_NAME', 'ADD_TAB_DESCRIPTION', 'ADD_TAB_SDW_LOG_INSERT', 'ADD_TAB_SDW_LOG_UPDATE', 'ADD_TAB_SDW_LOG_DELETE', 'ADD_TAB_SDW_LOG_SELECT', 'ADD_TAB_SDW_MAX_LENGTH', 'ADD_TAB_SDW_AUTO_DELETE', 'ADD_TAB_PLG_UID', 'DBS_UID', 'PRO_UID', 'ADD_TAB_TYPE', 'ADD_TAB_GRID', 'ADD_TAB_TAG', ), BasePeer::TYPE_FIELDNAME => array ('ADD_TAB_UID', 'ADD_TAB_NAME', 'ADD_TAB_CLASS_NAME', 'ADD_TAB_DESCRIPTION', 'ADD_TAB_SDW_LOG_INSERT', 'ADD_TAB_SDW_LOG_UPDATE', 'ADD_TAB_SDW_LOG_DELETE', 'ADD_TAB_SDW_LOG_SELECT', 'ADD_TAB_SDW_MAX_LENGTH', 'ADD_TAB_SDW_AUTO_DELETE', 'ADD_TAB_PLG_UID', 'DBS_UID', 'PRO_UID', 'ADD_TAB_TYPE', 'ADD_TAB_GRID', 'ADD_TAB_TAG', 'ADD_TAB_OFFLINE', 'ADD_TAB_UPDATE_DATE', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
); );
/** /**
@@ -103,10 +109,10 @@ abstract class BaseAdditionalTablesPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/ */
private static $fieldKeys = array ( private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('AddTabUid' => 0, 'AddTabName' => 1, 'AddTabClassName' => 2, 'AddTabDescription' => 3, 'AddTabSdwLogInsert' => 4, 'AddTabSdwLogUpdate' => 5, 'AddTabSdwLogDelete' => 6, 'AddTabSdwLogSelect' => 7, 'AddTabSdwMaxLength' => 8, 'AddTabSdwAutoDelete' => 9, 'AddTabPlgUid' => 10, 'DbsUid' => 11, 'ProUid' => 12, 'AddTabType' => 13, 'AddTabGrid' => 14, 'AddTabTag' => 15, ), BasePeer::TYPE_PHPNAME => array ('AddTabUid' => 0, 'AddTabName' => 1, 'AddTabClassName' => 2, 'AddTabDescription' => 3, 'AddTabSdwLogInsert' => 4, 'AddTabSdwLogUpdate' => 5, 'AddTabSdwLogDelete' => 6, 'AddTabSdwLogSelect' => 7, 'AddTabSdwMaxLength' => 8, 'AddTabSdwAutoDelete' => 9, 'AddTabPlgUid' => 10, 'DbsUid' => 11, 'ProUid' => 12, 'AddTabType' => 13, 'AddTabGrid' => 14, 'AddTabTag' => 15, 'AddTabOffline' => 16, 'AddTabUpdateDate' => 17, ),
BasePeer::TYPE_COLNAME => array (AdditionalTablesPeer::ADD_TAB_UID => 0, AdditionalTablesPeer::ADD_TAB_NAME => 1, AdditionalTablesPeer::ADD_TAB_CLASS_NAME => 2, AdditionalTablesPeer::ADD_TAB_DESCRIPTION => 3, AdditionalTablesPeer::ADD_TAB_SDW_LOG_INSERT => 4, AdditionalTablesPeer::ADD_TAB_SDW_LOG_UPDATE => 5, AdditionalTablesPeer::ADD_TAB_SDW_LOG_DELETE => 6, AdditionalTablesPeer::ADD_TAB_SDW_LOG_SELECT => 7, AdditionalTablesPeer::ADD_TAB_SDW_MAX_LENGTH => 8, AdditionalTablesPeer::ADD_TAB_SDW_AUTO_DELETE => 9, AdditionalTablesPeer::ADD_TAB_PLG_UID => 10, AdditionalTablesPeer::DBS_UID => 11, AdditionalTablesPeer::PRO_UID => 12, AdditionalTablesPeer::ADD_TAB_TYPE => 13, AdditionalTablesPeer::ADD_TAB_GRID => 14, AdditionalTablesPeer::ADD_TAB_TAG => 15, ), BasePeer::TYPE_COLNAME => array (AdditionalTablesPeer::ADD_TAB_UID => 0, AdditionalTablesPeer::ADD_TAB_NAME => 1, AdditionalTablesPeer::ADD_TAB_CLASS_NAME => 2, AdditionalTablesPeer::ADD_TAB_DESCRIPTION => 3, AdditionalTablesPeer::ADD_TAB_SDW_LOG_INSERT => 4, AdditionalTablesPeer::ADD_TAB_SDW_LOG_UPDATE => 5, AdditionalTablesPeer::ADD_TAB_SDW_LOG_DELETE => 6, AdditionalTablesPeer::ADD_TAB_SDW_LOG_SELECT => 7, AdditionalTablesPeer::ADD_TAB_SDW_MAX_LENGTH => 8, AdditionalTablesPeer::ADD_TAB_SDW_AUTO_DELETE => 9, AdditionalTablesPeer::ADD_TAB_PLG_UID => 10, AdditionalTablesPeer::DBS_UID => 11, AdditionalTablesPeer::PRO_UID => 12, AdditionalTablesPeer::ADD_TAB_TYPE => 13, AdditionalTablesPeer::ADD_TAB_GRID => 14, AdditionalTablesPeer::ADD_TAB_TAG => 15, AdditionalTablesPeer::ADD_TAB_OFFLINE => 16, AdditionalTablesPeer::ADD_TAB_UPDATE_DATE => 17, ),
BasePeer::TYPE_FIELDNAME => array ('ADD_TAB_UID' => 0, 'ADD_TAB_NAME' => 1, 'ADD_TAB_CLASS_NAME' => 2, 'ADD_TAB_DESCRIPTION' => 3, 'ADD_TAB_SDW_LOG_INSERT' => 4, 'ADD_TAB_SDW_LOG_UPDATE' => 5, 'ADD_TAB_SDW_LOG_DELETE' => 6, 'ADD_TAB_SDW_LOG_SELECT' => 7, 'ADD_TAB_SDW_MAX_LENGTH' => 8, 'ADD_TAB_SDW_AUTO_DELETE' => 9, 'ADD_TAB_PLG_UID' => 10, 'DBS_UID' => 11, 'PRO_UID' => 12, 'ADD_TAB_TYPE' => 13, 'ADD_TAB_GRID' => 14, 'ADD_TAB_TAG' => 15, ), BasePeer::TYPE_FIELDNAME => array ('ADD_TAB_UID' => 0, 'ADD_TAB_NAME' => 1, 'ADD_TAB_CLASS_NAME' => 2, 'ADD_TAB_DESCRIPTION' => 3, 'ADD_TAB_SDW_LOG_INSERT' => 4, 'ADD_TAB_SDW_LOG_UPDATE' => 5, 'ADD_TAB_SDW_LOG_DELETE' => 6, 'ADD_TAB_SDW_LOG_SELECT' => 7, 'ADD_TAB_SDW_MAX_LENGTH' => 8, 'ADD_TAB_SDW_AUTO_DELETE' => 9, 'ADD_TAB_PLG_UID' => 10, 'DBS_UID' => 11, 'PRO_UID' => 12, 'ADD_TAB_TYPE' => 13, 'ADD_TAB_GRID' => 14, 'ADD_TAB_TAG' => 15, 'ADD_TAB_OFFLINE' => 16, 'ADD_TAB_UPDATE_DATE' => 17, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ) BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
); );
/** /**
@@ -239,6 +245,10 @@ abstract class BaseAdditionalTablesPeer
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TAG); $criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_TAG);
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_OFFLINE);
$criteria->addSelectColumn(AdditionalTablesPeer::ADD_TAB_UPDATE_DATE);
} }
const COUNT = 'COUNT(ADDITIONAL_TABLES.ADD_TAB_UID)'; const COUNT = 'COUNT(ADDITIONAL_TABLES.ADD_TAB_UID)';

View File

@@ -2522,6 +2522,8 @@
<column name="ADD_TAB_TYPE" type="VARCHAR" size="32" required="false" default=""/> <column name="ADD_TAB_TYPE" type="VARCHAR" size="32" required="false" default=""/>
<column name="ADD_TAB_GRID" type="VARCHAR" size="256" required="false" default=""/> <column name="ADD_TAB_GRID" type="VARCHAR" size="256" required="false" default=""/>
<column name="ADD_TAB_TAG" type="VARCHAR" size="256" required="false" default=""/> <column name="ADD_TAB_TAG" type="VARCHAR" size="256" required="false" default=""/>
<column name="ADD_TAB_OFFLINE" type="TINYINT" required="true" default="0"/>
<column name="ADD_TAB_UPDATE_DATE" type="TIMESTAMP" required="true"/>
<index name="indexAdditionalProcess"> <index name="indexAdditionalProcess">
<index-column name="PRO_UID"/> <index-column name="PRO_UID"/>
</index> </index>

View File

@@ -2755,6 +2755,18 @@ msgstr "AVAILABLE GROUPS"
msgid "AVAILABLE MEMBERS" msgid "AVAILABLE MEMBERS"
msgstr "AVAILABLE MEMBERS" msgstr "AVAILABLE MEMBERS"
# TRANSLATION
# LABEL/ID_AVAILABLE_OFFLINE
#: LABEL/ID_AVAILABLE_OFFLINE
msgid "Available offline"
msgstr "Available offline"
# TRANSLATION
# LABEL/ID_AVAILABLE_OFFLINE_THE_MOBILE_APPLICATIONS
#: LABEL/ID_AVAILABLE_OFFLINE_THE_MOBILE_APPLICATIONS
msgid "Available offline, the mobile applications will download this table for offline use"
msgstr "Available offline, the mobile applications will download this table for offline use"
# TRANSLATION # TRANSLATION
# LABEL/ID_AVAILABLE_PERMISSIONS # LABEL/ID_AVAILABLE_PERMISSIONS
#: LABEL/ID_AVAILABLE_PERMISSIONS #: LABEL/ID_AVAILABLE_PERMISSIONS
@@ -20075,6 +20087,24 @@ msgstr "User has been updated successfully"
msgid "Off" msgid "Off"
msgstr "Off" msgstr "Off"
# TRANSLATION
# LABEL/ID_OFFLINE_TABLES
#: LABEL/ID_OFFLINE_TABLES
msgid "Offline Tables"
msgstr "Offline Tables"
# TRANSLATION
# LABEL/ID_OFFLINE_TABLES_ENABLE
#: LABEL/ID_OFFLINE_TABLES_ENABLE
msgid "Set Offline"
msgstr "Set Offline"
# TRANSLATION
# LABEL/ID_OFFLINE_TABLES_DISABLE
#: LABEL/ID_OFFLINE_TABLES_DISABLE
msgid "Set Online"
msgstr "Set Online"
# TRANSLATION # TRANSLATION
# LABEL/ID_OF_THE_MONTH # LABEL/ID_OF_THE_MONTH
#: LABEL/ID_OF_THE_MONTH #: LABEL/ID_OF_THE_MONTH

View File

@@ -1,6 +1,7 @@
<?php <?php
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\Model\AdditionalTables as AdditionalTablesModel;
use ProcessMaker\Validation\ExceptionRestApi; use ProcessMaker\Validation\ExceptionRestApi;
use ProcessMaker\Validation\ValidationUploadedFiles; use ProcessMaker\Validation\ValidationUploadedFiles;
@@ -218,6 +219,34 @@ class pmTablesProxy extends HttpProxyController
} }
} }
/**
* Update the offline property.
* @param stdClass $httpData
* @return stdClass
*/
public function updateOffline(stdClass $httpData): stdClass
{
$result = new stdClass();
try {
$array = G::json_decode(stripslashes($httpData->rows));
$data = [];
$enable = false;
foreach ($array as $value) {
if ($value->type !== "NORMAL") {
$data[] = $value->id;
$enable = $value->offline ? 1 : 0;
}
}
AdditionalTablesModel::updatePropertyOffline($data, $enable);
$result->success = true;
$result->message = $enable ? G::LoadTranslation("ID_ENABLE") : G::LoadTranslation("ID_DISABLE");
} catch (Exception $e) {
$result->success = false;
$result->message = $e->getMessage();
}
return $result;
}
/** /**
* delete pm table * delete pm table
* *

View File

@@ -57261,6 +57261,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_AVAILABLE_FIELDS','en','Available Fields','2014-01-15') , ( 'LABEL','ID_AVAILABLE_FIELDS','en','Available Fields','2014-01-15') ,
( 'LABEL','ID_AVAILABLE_GROUPS','en','AVAILABLE GROUPS','2014-01-15') , ( 'LABEL','ID_AVAILABLE_GROUPS','en','AVAILABLE GROUPS','2014-01-15') ,
( 'LABEL','ID_AVAILABLE_MEMBERS','en','AVAILABLE MEMBERS','2014-01-15') , ( 'LABEL','ID_AVAILABLE_MEMBERS','en','AVAILABLE MEMBERS','2014-01-15') ,
( 'LABEL','ID_AVAILABLE_OFFLINE','en','Available offline','2019-10-15') ,
( 'LABEL','ID_AVAILABLE_OFFLINE_THE_MOBILE_APPLICATIONS','en','Available offline, the mobile applications will download this table for offline use','2019-10-15') ,
( 'LABEL','ID_AVAILABLE_PERMISSIONS','en','AVAILABLE PERMISSIONS','2014-01-15') , ( 'LABEL','ID_AVAILABLE_PERMISSIONS','en','AVAILABLE PERMISSIONS','2014-01-15') ,
( 'LABEL','ID_AVAILABLE_TRIGGERS','en','Available Triggers','2014-01-15') , ( 'LABEL','ID_AVAILABLE_TRIGGERS','en','Available Triggers','2014-01-15') ,
( 'LABEL','ID_AVAILABLE_USERS','en','AVAILABLE USERS','2014-01-15') , ( 'LABEL','ID_AVAILABLE_USERS','en','AVAILABLE USERS','2014-01-15') ,
@@ -60214,6 +60216,9 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_OBJECT_REMOVE','en','Object has been removed successfully','2014-01-15') , ( 'LABEL','ID_OBJECT_REMOVE','en','Object has been removed successfully','2014-01-15') ,
( 'LABEL','ID_OBJECT_UPDATE','en','User has been updated successfully','2014-01-15') , ( 'LABEL','ID_OBJECT_UPDATE','en','User has been updated successfully','2014-01-15') ,
( 'LABEL','ID_OFF','en','Off','2014-01-15') , ( 'LABEL','ID_OFF','en','Off','2014-01-15') ,
( 'LABEL','ID_OFFLINE_TABLES','en','Offline Tables','2019-12-19') ,
( 'LABEL','ID_OFFLINE_TABLES_ENABLE','en','Set Offline Tables','2019-12-19') ,
( 'LABEL','ID_OFFLINE_TABLES_DISABLE','en','Set Online Tables','2019-12-19') ,
( 'LABEL','ID_OF_THE_MONTH','en','of the month(s)','2014-01-15') , ( 'LABEL','ID_OF_THE_MONTH','en','of the month(s)','2014-01-15') ,
( 'LABEL','ID_OK','en','Ok','2015-09-17') , ( 'LABEL','ID_OK','en','Ok','2015-09-17') ,
( 'LABEL','ID_OLD_VERSION','en','old version','2014-01-15') , ( 'LABEL','ID_OLD_VERSION','en','old version','2014-01-15') ,

View File

@@ -1162,6 +1162,8 @@ CREATE TABLE `ADDITIONAL_TABLES`
`ADD_TAB_TYPE` VARCHAR(32) default '', `ADD_TAB_TYPE` VARCHAR(32) default '',
`ADD_TAB_GRID` VARCHAR(256) default '', `ADD_TAB_GRID` VARCHAR(256) default '',
`ADD_TAB_TAG` VARCHAR(256) default '', `ADD_TAB_TAG` VARCHAR(256) default '',
`ADD_TAB_OFFLINE` TINYINT default 0 NOT NULL,
`ADD_TAB_UPDATE_DATE` DATETIME NOT NULL,
PRIMARY KEY (`ADD_TAB_UID`), PRIMARY KEY (`ADD_TAB_UID`),
KEY `indexAdditionalProcess`(`PRO_UID`) KEY `indexAdditionalProcess`(`PRO_UID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8'; )ENGINE=InnoDB DEFAULT CHARSET='utf8';

View File

@@ -698,7 +698,6 @@ class Light
$info = pathinfo($oAppDocument->getAppDocFilename()); $info = pathinfo($oAppDocument->getAppDocFilename());
$ext = (isset($info['extension']) ? $info['extension'] : ''); //BUG fix: must handle files without any extension $ext = (isset($info['extension']) ? $info['extension'] : ''); //BUG fix: must handle files without any extension
//$app_uid = G::getPathFromUID($oAppDocument->Fields['APP_UID']);
$file = G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid); $file = G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid);
$realPath = PATH_DOCUMENT . G::getPathFromUID($app_uid) . '/' . $file[0] . $file[1] . '_' . $iDocVersion . '.' . $ext; $realPath = PATH_DOCUMENT . G::getPathFromUID($app_uid) . '/' . $file[0] . $file[1] . '_' . $iDocVersion . '.' . $ext;
@@ -1358,6 +1357,8 @@ class Light
*/ */
public function getConfiguration($params) public function getConfiguration($params)
{ {
$response = [];
$sysConf = Bootstrap::getSystemConfiguration('', '', config("system.workspace")); $sysConf = Bootstrap::getSystemConfiguration('', '', config("system.workspace"));
$multiTimeZone = false; $multiTimeZone = false;
//Set Time Zone //Set Time Zone
@@ -1423,6 +1424,8 @@ class Light
$response['tz'] = isset($_SESSION['USR_TIME_ZONE']) ? $_SESSION['USR_TIME_ZONE'] : $sysConf['time_zone']; $response['tz'] = isset($_SESSION['USR_TIME_ZONE']) ? $_SESSION['USR_TIME_ZONE'] : $sysConf['time_zone'];
} }
$response['mobile_offline_tables_download_interval'] = $sysConf['mobile_offline_tables_download_interval'];
return $response; return $response;
} }

View File

@@ -486,7 +486,9 @@ class ReportTable
'DBS_UID' => ($arrayData['REP_TAB_CONNECTION']) ? $arrayData['REP_TAB_CONNECTION'] : 'workflow', 'DBS_UID' => ($arrayData['REP_TAB_CONNECTION']) ? $arrayData['REP_TAB_CONNECTION'] : 'workflow',
'PRO_UID' => $arrayData['PRO_UID'], 'PRO_UID' => $arrayData['PRO_UID'],
'ADD_TAB_TYPE' => $arrayData['REP_TAB_TYPE'], 'ADD_TAB_TYPE' => $arrayData['REP_TAB_TYPE'],
'ADD_TAB_GRID' => $arrayData['REP_TAB_GRID'] 'ADD_TAB_GRID' => $arrayData['REP_TAB_GRID'],
'ADD_TAB_OFFLINE' => !empty($arrayData['REP_TAB_OFFLINE']) ?? 0,
'ADD_TAB_UPDATE_DATE' => date('Y-m-d H:i:s'),
]; ];
if ($arrayData['REP_TAB_UID'] == '' || (isset($arrayData['forceUid']) && $arrayData['forceUid'])) { if ($arrayData['REP_TAB_UID'] == '' || (isset($arrayData['forceUid']) && $arrayData['forceUid'])) {
@@ -806,6 +808,8 @@ class ReportTable
$tableData->REP_TAB_CONNECTION = $contentSchema['DBS_UID']; $tableData->REP_TAB_CONNECTION = $contentSchema['DBS_UID'];
$tableData->REP_TAB_TYPE = (isset($contentSchema['ADD_TAB_TYPE'])) ? $contentSchema['ADD_TAB_TYPE'] : ''; $tableData->REP_TAB_TYPE = (isset($contentSchema['ADD_TAB_TYPE'])) ? $contentSchema['ADD_TAB_TYPE'] : '';
$tableData->REP_TAB_GRID = (isset($contentSchema['ADD_TAB_GRID'])) ? $contentSchema['ADD_TAB_GRID'] : ''; $tableData->REP_TAB_GRID = (isset($contentSchema['ADD_TAB_GRID'])) ? $contentSchema['ADD_TAB_GRID'] : '';
$tableData->REP_TAB_OFFLINE = (isset($contentSchema['ADD_TAB_OFFLINE'])) ? $contentSchema['ADD_TAB_OFFLINE'] : '0';
$tableData->REP_TAB_UPDATE_DATE = date('Y-m-d H:i:s');
$tableData->columns = G::json_encode($columns); $tableData->columns = G::json_encode($columns);
$tableData->forceUid = true; $tableData->forceUid = true;

View File

@@ -20,7 +20,7 @@ class Table
* *
* @return array * @return array
*/ */
public function getTables($pro_uid = '', $reportFlag = false) public function getTables($pro_uid = '', $reportFlag = false, $offline = false)
{ {
//VALIDATION //VALIDATION
if ($reportFlag) { if ($reportFlag) {
@@ -87,6 +87,7 @@ class Table
$tabData['PMT_UID'] = $tab_uid; $tabData['PMT_UID'] = $tab_uid;
$tabData['PMT_TAB_NAME'] = $table['ADD_TAB_NAME']; $tabData['PMT_TAB_NAME'] = $table['ADD_TAB_NAME'];
$tabData['PMT_TAB_DESCRIPTION'] = $table['ADD_TAB_DESCRIPTION']; $tabData['PMT_TAB_DESCRIPTION'] = $table['ADD_TAB_DESCRIPTION'];
$tabData['PMT_TAB_OFFLINE'] = $table['ADD_TAB_OFFLINE'];
$tabData['PMT_TAB_CLASS_NAME'] = $table['ADD_TAB_CLASS_NAME']; $tabData['PMT_TAB_CLASS_NAME'] = $table['ADD_TAB_CLASS_NAME'];
$tabData['PMT_NUM_ROWS'] = $tableData['count']; $tabData['PMT_NUM_ROWS'] = $tableData['count'];
} }
@@ -384,6 +385,8 @@ class Table
'ADD_TAB_NAME' => $dataValidate['REP_TAB_NAME'], 'ADD_TAB_NAME' => $dataValidate['REP_TAB_NAME'],
'ADD_TAB_CLASS_NAME' => $repTabClassName, 'ADD_TAB_CLASS_NAME' => $repTabClassName,
'ADD_TAB_DESCRIPTION' => $dataValidate['REP_TAB_DSC'], 'ADD_TAB_DESCRIPTION' => $dataValidate['REP_TAB_DSC'],
'ADD_TAB_OFFLINE' => 0,
'ADD_TAB_UPDATE_DATE' => date('Y-m-d H:i:s'),
'ADD_TAB_PLG_UID' => '', 'ADD_TAB_PLG_UID' => '',
'DBS_UID' => ($dataValidate['REP_TAB_CONNECTION'] ? $dataValidate['REP_TAB_CONNECTION'] : 'workflow'), 'DBS_UID' => ($dataValidate['REP_TAB_CONNECTION'] ? $dataValidate['REP_TAB_CONNECTION'] : 'workflow'),
'PRO_UID' => $dataValidate['PRO_UID'], 'PRO_UID' => $dataValidate['PRO_UID'],
@@ -396,6 +399,8 @@ class Table
'ADD_TAB_NAME' => $dataValidate['PMT_TAB_NAME'], 'ADD_TAB_NAME' => $dataValidate['PMT_TAB_NAME'],
'ADD_TAB_CLASS_NAME' => $repTabClassName, 'ADD_TAB_CLASS_NAME' => $repTabClassName,
'ADD_TAB_DESCRIPTION' => $dataValidate['PMT_TAB_DSC'], 'ADD_TAB_DESCRIPTION' => $dataValidate['PMT_TAB_DSC'],
'ADD_TAB_OFFLINE' => !empty($dataValidate['PMT_TAB_OFFLINE']) ?? 0,
'ADD_TAB_UPDATE_DATE' => date('Y-m-d H:i:s'),
'ADD_TAB_PLG_UID' => '', 'ADD_TAB_PLG_UID' => '',
'DBS_UID' => ($dataValidate['PMT_TAB_CONNECTION'] ? $dataValidate['PMT_TAB_CONNECTION'] : 'workflow'), 'DBS_UID' => ($dataValidate['PMT_TAB_CONNECTION'] ? $dataValidate['PMT_TAB_CONNECTION'] : 'workflow'),
'PRO_UID' => '', 'PRO_UID' => '',
@@ -549,6 +554,11 @@ class Table
$dataValidate['rep_tab_dsc'] = $tableData['pmt_tab_dsc']; $dataValidate['rep_tab_dsc'] = $tableData['pmt_tab_dsc'];
$tableDsc = true; $tableDsc = true;
} }
if (!empty($tableData['pmt_tab_offline'])) {
$dataValidate['rep_tab_offline'] = $tableData['pmt_tab_offline'];
$tableDsc = true;
}
$dataValidate['rep_tab_update_date'] = date('Y-m-d H:i:s');
} }
if (!empty($tableData['fields'])) { if (!empty($tableData['fields'])) {
$dataValidate['fields'] = $tableData['fields']; $dataValidate['fields'] = $tableData['fields'];

View File

@@ -73,7 +73,8 @@ class System
'files_white_list' => '', 'files_white_list' => '',
'delay' => '0', 'delay' => '0',
'tries' => '10', 'tries' => '10',
'retry_after' => '90' 'retry_after' => '90',
'mobile_offline_tables_download_interval' => 24
]; ];
/** /**
@@ -1203,6 +1204,15 @@ class System
$config['proxy_pass'] = G::decrypt($config['proxy_pass'], 'proxy_pass'); $config['proxy_pass'] = G::decrypt($config['proxy_pass'], 'proxy_pass');
} }
/**
* Here if you validate if the type of data obtained from the configuration
* files are valid, otherwise the default value is used.
*/
$value = (string) $config['mobile_offline_tables_download_interval'];
if (!is_numeric($value)) {
$config['mobile_offline_tables_download_interval'] = self::$defaultConfig['mobile_offline_tables_download_interval'];
}
return $config; return $config;
} }

View File

@@ -0,0 +1,105 @@
<?php
namespace ProcessMaker\Model;
use AdditionalTables as ModelAdditionalTables;
use Illuminate\Database\Eloquent\Model;
class AdditionalTables extends Model
{
protected $table = 'ADDITIONAL_TABLES';
public $timestamps = false;
/**
* Get the fields related to the table belongs to
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function columns()
{
return $this->belongsTo(Fields::class, 'ADD_TAB_UID', 'ADD_TAB_UID');
}
/**
* Scope a query to get the offline tables
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeOffline($query)
{
return $query->where('ADD_TAB_OFFLINE', '=', 1);
}
/**
* Get the structure of offline tables
*
* @return array
*/
public static function getTablesOfflineStructure()
{
$query = AdditionalTables::query()->select([
'ADD_TAB_UID',
'ADD_TAB_NAME',
'ADD_TAB_DESCRIPTION',
'ADD_TAB_CLASS_NAME'
]);
$query->offline();
$results = $query->get();
$data = [];
$results->each(function ($item, $key) use (&$data) {
$data[$key] = array_change_key_case($item->toArray(), CASE_LOWER);
$data[$key]['fields'] = Fields::getFields($item->ADD_TAB_UID);
});
return $data;
}
/**
* Get the data of offline tables
*
* @return array
*/
public static function getTablesOfflineData()
{
$query = AdditionalTables::query()->select([
'ADD_TAB_UID',
'ADD_TAB_NAME',
'ADD_TAB_DESCRIPTION',
'ADD_TAB_CLASS_NAME'
]);
$query->offline();
$results = $query->get();
$data = [];
$results->each(function ($item, $key) use (&$data) {
$data[$key] = array_change_key_case($item->toArray(), CASE_LOWER);
$additionalTables = new ModelAdditionalTables();
$result = $additionalTables->getAllData($item->ADD_TAB_UID);
if (empty($result['rows'])) {
$data[$key]['rows'] = [];
} else {
foreach ($result['rows'] as $i => $row) {
$data[$key]['rows'][$i] = $row;
}
}
});
return $data;
}
/**
* Update the offline property.
* @param array $tablesUid
* @param int $value
* @return void
*/
public static function updatePropertyOffline(array $tablesUid, $value): void
{
$query = AdditionalTables::whereIn('ADD_TAB_UID', $tablesUid)
->update(['ADD_TAB_OFFLINE' => $value]);
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace ProcessMaker\Model;
use Illuminate\Database\Eloquent\Model;
class Fields extends Model
{
protected $table = 'FIELDS';
public $timestamps = false;
/**
* Get the fields related to the table belongs to
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function table()
{
return $this->belongsTo(AdditionalTables::class, 'ADD_TAB_UID', 'ADD_TAB_UID');
}
/**
* Scope a query to get the offline tables
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $tabUid
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeTable($query, $tabUid)
{
return $query->where('ADD_TAB_UID', '=', $tabUid);
}
/**
* Get the offline tables
*
* @param string $tabUid
*
* @return array
*/
public static function getFields($tabUid)
{
$query = Fields::query();
$query->table($tabUid);
$results = $query->get();
$data = [];
$results->each(function ($item, $key) use (&$data) {
$data[$key] = array_change_key_case($item->toArray(), CASE_LOWER);
});
return $data;
}
}

View File

@@ -1,9 +1,11 @@
<?php <?php
namespace ProcessMaker\Services\Api; namespace ProcessMaker\Services\Api;
use Exception; use Exception;
use Luracast\Restler\RestException; use Luracast\Restler\RestException;
use ProcessMaker\BusinessModel\Table as BusinessModelTable; use ProcessMaker\BusinessModel\Table as BusinessModelTable;
use ProcessMaker\Model\AdditionalTables;
use ProcessMaker\Services\Api; use ProcessMaker\Services\Api;
/** /**
@@ -14,85 +16,137 @@ use ProcessMaker\Services\Api;
class Pmtable extends Api class Pmtable extends Api
{ {
/** /**
* @return array * Get a list of the PM tables in the workspace. It does not include any Report Table
* *
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com> * @url GET
* @copyright Colosa - Bolivia * @status 200
*
* @param boolean $offline {@from path}
*
* @return array
* @throws RestException
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_LOGIN}
* @url GET * @link https://wiki.processmaker.com/3.1/REST_API_Administration/PM_Tables#PM_Tables_List:_GET_.2Fpmtable
*/ */
public function doGetPmTables() public function doGetPmTables($offline = false)
{ {
try { try {
$oPmTable = new \ProcessMaker\BusinessModel\Table(); if ($offline) {
$response = $oPmTable->getTables(); $response = AdditionalTables::getTablesOfflineStructure();
} else {
$pmTable = new BusinessModelTable();
$response = $pmTable->getTables();
}
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* @param string $pmt_uid {@min 1} {@max 32} * Get the data of the offline PM tables
*
* @url GET /offline/data
* @status 200
*
* @param boolean $compress {@from path}
*
* @return array * @return array
* *
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com> * @throws RestException
* @copyright Colosa - Bolivia *
* @access protected
* @class AccessControl {@permission PM_LOGIN}
* @link https://wiki.processmaker.com/3.1/REST_API_Administration/PM_Tables#PM_Tables_List:_GET_.2Fpmtable
*/
public function doGetPmTablesDataOffline($compress = true)
{
try {
$data = AdditionalTables::getTablesOfflineData();
if ($compress) {
$json = json_encode($data);
$compressed = gzcompress($json, 5);
echo $compressed;
} else {
return $data;
}
} catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
/**
* Get the structure from a specific PM Table, including a list of its fields and their properties.
*
* @url GET /:pmt_uid
* @status 200
*
* @param string $pmt_uid {@min 1} {@max 32}
*
* @return array
* @throws RestException
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url GET /:pmt_uid * @link https://wiki.processmaker.com/3.1/REST_API_Administration/PM_Tables#Get_PM_Table_Structure:_GET_.2Fpmtable.2F.7Bpmt_uid.7D
*/ */
public function doGetPmTable($pmt_uid) public function doGetPmTable($pmt_uid)
{ {
try { try {
$oPmTable = new \ProcessMaker\BusinessModel\Table(); $oPmTable = new BusinessModelTable();
$response = $oPmTable->getTable($pmt_uid); $response = $oPmTable->getTable($pmt_uid);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* Get the data from a PM table
*
* @url GET /:pmt_uid/data
* @status 200
*
* @param string $pmt_uid {@min 1} {@max 32} * @param string $pmt_uid {@min 1} {@max 32}
* @param string $filter * @param string $filter
* @param string $q * @param string $q
* @return array
* *
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com> * @return array
* @copyright Colosa - Bolivia * @throws RestException
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url GET /:pmt_uid/data *
*/ */
public function doGetPmTableData($pmt_uid, $filter = null, $q = "") public function doGetPmTableData($pmt_uid, $filter = null, $q = "")
{ {
try { try {
$oPmTable = new \ProcessMaker\BusinessModel\Table(); $oPmTable = new BusinessModelTable();
$response = $oPmTable->getTableData($pmt_uid, null, $filter, false, $q); $response = $oPmTable->getTableData($pmt_uid, null, $filter, false, $q);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* Create a new PM Table
*
* @url POST
* @status 201
*
* @param array $request_data * @param array $request_data
* @param string $pmt_tab_name {@from body} * @param string $pmt_tab_name {@from body}
* @param string $pmt_tab_dsc {@from body} * @param string $pmt_tab_dsc {@from body}
* @return array
* *
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com> * @return array
* @copyright Colosa - Bolivia * @throws RestException
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url POST
* @status 201
*/ */
public function doPostPmTable( public function doPostPmTable(
$request_data, $request_data,
@@ -100,58 +154,58 @@ class Pmtable extends Api
$pmt_tab_dsc = '' $pmt_tab_dsc = ''
) { ) {
try { try {
$oReportTable = new \ProcessMaker\BusinessModel\Table(); $oReportTable = new BusinessModelTable();
$response = $oReportTable->saveTable($request_data); $response = $oReportTable->saveTable($request_data);
if (isset($response['pro_uid'])) { if (isset($response['pro_uid'])) {
unset($response['pro_uid']); unset($response['pro_uid']);
} }
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* @param string $pmt_uid {@min 1} {@max 32} * Add a new record to a PM Table
* *
* @param array $request_data
* @return array
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url POST /:pmt_uid/data * @url POST /:pmt_uid/data
* @status 201 * @status 201
*
* @param string $pmt_uid {@min 1} {@max 32}
* @param array $request_data
*
* @return array
* @throws RestException
* @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES}
*/ */
public function doPostPmTableData( public function doPostPmTableData(
$pmt_uid, $pmt_uid,
$request_data $request_data
) { ) {
try { try {
$oReportTable = new \ProcessMaker\BusinessModel\Table(); $oReportTable = new BusinessModelTable();
$response = $oReportTable->saveTableData($pmt_uid, $request_data); $response = $oReportTable->saveTableData($pmt_uid, $request_data);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* Update pm-table. * Update the structure of a PM table.
* *
* @url PUT /:pmt_uid * @url PUT /:pmt_uid
* @status 200
* *
* @param string $pmt_uid {@min 1} {@max 32} * @param string $pmt_uid {@min 1} {@max 32}
* @param array $request_data * @param array $request_data
* *
* @return void * @return void
* @throw RestException * @throws RestException
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @throws RestException
*/ */
public function doPutPmTable( public function doPutPmTable(
$pmt_uid, $pmt_uid,
@@ -167,9 +221,10 @@ class Pmtable extends Api
} }
/** /**
* Update pm-table data. * Update the data of an existing record in a PM table.
* *
* @url PUT /:pmt_uid/data * @url PUT /:pmt_uid/data
* @status 200
* *
* @param string $pmt_uid {@min 1} {@max 32} * @param string $pmt_uid {@min 1} {@max 32}
* @param array $request_data * @param array $request_data
@@ -185,37 +240,47 @@ class Pmtable extends Api
$request_data $request_data
) { ) {
try { try {
$oReportTable = new \ProcessMaker\BusinessModel\Table(); $oReportTable = new BusinessModelTable();
$response = $oReportTable->updateTableData($pmt_uid, $request_data); $response = $oReportTable->updateTableData($pmt_uid, $request_data);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* Delete a specified PM table and all its data.
*
* @url DELETE /:pmt_uid
* @status 200
*
* @param string $pmt_uid {@min 1} {@max 32} * @param string $pmt_uid {@min 1} {@max 32}
* *
* @return void * @return void
* * @throws RestException
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url DELETE /:pmt_uid
*/ */
public function doDeletePmTable($pmt_uid) public function doDeletePmTable($pmt_uid)
{ {
try { try {
$oReportTable = new \ProcessMaker\BusinessModel\Table(); $oReportTable = new BusinessModelTable();
$response = $oReportTable->deleteTable($pmt_uid); $response = $oReportTable->deleteTable($pmt_uid);
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }
/** /**
* Delete a record from a PM table, by specifying its primary key(s). The PM Table can have up to 3 primary key
* fields.
*
* @url DELETE /:pmt_uid/data/:key1/:value1
* @url DELETE /:pmt_uid/data/:key1/:value1/:key2/:value2
* @url DELETE /:pmt_uid/data/:key1/:value1/:key2/:value2/:key3/:value3
* @status 200
*
* @param string $pmt_uid {@min 1} {@max 32} * @param string $pmt_uid {@min 1} {@max 32}
* @param string $key1 {@min 1} * @param string $key1 {@min 1}
* @param string $value1 {@min 1} * @param string $value1 {@min 1}
@@ -225,15 +290,10 @@ class Pmtable extends Api
* @param string $value3 * @param string $value3
* *
* @return array * @return array
* * @throws RestException
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
* *
* @access protected * @access protected
* @class AccessControl {@permission PM_SETUP_PM_TABLES} * @class AccessControl {@permission PM_SETUP_PM_TABLES}
* @url DELETE /:pmt_uid/data/:key1/:value1
* @url DELETE /:pmt_uid/data/:key1/:value1/:key2/:value2
* @url DELETE /:pmt_uid/data/:key1/:value1/:key2/:value2/:key3/:value3
*/ */
public function doDeletePmTableData($pmt_uid, $key1, $value1, $key2 = '', $value2 = '', $key3 = '', $value3 = '') public function doDeletePmTableData($pmt_uid, $key1, $value1, $key2 = '', $value2 = '', $key3 = '', $value3 = '')
{ {
@@ -245,10 +305,10 @@ class Pmtable extends Api
if ($key3 != '') { if ($key3 != '') {
$rows[$key3] = $value3; $rows[$key3] = $value3;
} }
$oReportTable = new \ProcessMaker\BusinessModel\Table(); $oReportTable = new BusinessModelTable();
$response = $oReportTable->deleteTableData($pmt_uid, $rows); $response = $oReportTable->deleteTableData($pmt_uid, $rows);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
} }

View File

@@ -1,6 +1,5 @@
/** /**
* PM tables Edit * PM tables Edit
* @author Erik A. O. <erik@colosa.com>
*/ */
var store; var store;
@@ -64,8 +63,12 @@ Ext.onReady(function(){
listeners: { listeners: {
selectionchange: function (sm) { selectionchange: function (sm) {
switch (sm.getCount()) { switch (sm.getCount()) {
case 0: Ext.getCmp('assignButton').disable(); break; case 0:
default: Ext.getCmp('assignButton').enable(); break; Ext.getCmp('assignButton').disable();
break;
default:
Ext.getCmp('assignButton').enable();
break;
} }
} }
} }
@@ -95,14 +98,13 @@ Ext.onReady(function(){
listeners: {rowdblclick: AssignFieldsAction} listeners: {rowdblclick: AssignFieldsAction}
}); });
//selecion model for table columns grid //selection model for table columns grid
sm = new Ext.grid.RowSelectionModel({ sm = new Ext.grid.RowSelectionModel({
selectSingle: false, selectSingle: false,
listeners: { listeners: {
selectionchange: function (sm) { selectionchange: function (sm) {
switch (sm.getCount()) { switch (sm.getCount()) {
case 0: case 0:
//Ext.getCmp('removeButton').disable();
Ext.getCmp('editColumn').disable(); Ext.getCmp('editColumn').disable();
Ext.getCmp('removeColumn').disable(); Ext.getCmp('removeColumn').disable();
break; break;
@@ -111,7 +113,6 @@ Ext.onReady(function(){
Ext.getCmp('removeColumn').enable(); Ext.getCmp('removeColumn').enable();
break; break;
default: default:
//Ext.getCmp('removeButton').enable();
Ext.getCmp('editColumn').disable(); Ext.getCmp('editColumn').disable();
Ext.getCmp('removeColumn').enable(); Ext.getCmp('removeColumn').enable();
break; break;
@@ -192,7 +193,6 @@ Ext.onReady(function(){
if (valueInputField) { if (valueInputField) {
this.setValue(this.getValue().replace(/\s/g, '').toUpperCase()); this.setValue(this.getValue().replace(/\s/g, '').toUpperCase());
} else { } else {
//Ext.Msg.alert(_('ID_WARNING'), _('ID_FIELD_NAME'));
this.setValue(''); this.setValue('');
} }
} }
@@ -228,7 +228,7 @@ Ext.onReady(function(){
} else { } else {
return true; return true;
} }
}, }
} }
}, { }, {
id: 'field_type', id: 'field_type',
@@ -282,7 +282,7 @@ Ext.onReady(function(){
flagShowMessageError = 1; flagShowMessageError = 1;
} }
}//select }
} }
}) })
}, { }, {
@@ -477,7 +477,6 @@ Ext.onReady(function(){
//table columns grid //table columns grid
assignedGrid = new Ext.grid.GridPanel({ assignedGrid = new Ext.grid.GridPanel({
//title: 'Columns',
region: 'center', region: 'center',
id: 'assignedGrid', id: 'assignedGrid',
ddGroup: 'availableGridDDGroup', ddGroup: 'availableGridDDGroup',
@@ -549,7 +548,6 @@ Ext.onReady(function(){
}); });
assignedGrid.getSelectionModel().on('selectionchange', function (sm) { assignedGrid.getSelectionModel().on('selectionchange', function (sm) {
//alert('s');
}); });
// (vertical) selection buttons // (vertical) selection buttons
@@ -584,9 +582,7 @@ Ext.onReady(function(){
FieldsPanel = new Ext.Panel({ FieldsPanel = new Ext.Panel({
//title: _('ID_FIELDS'),
region: 'center', region: 'center',
//autoWidth : true,
width: 150, width: 150,
layout: 'hbox', layout: 'hbox',
defaults: {flex: 1}, //auto stretch defaults: {flex: 1}, //auto stretch
@@ -698,7 +694,6 @@ Ext.onReady(function(){
fieldLabel: _("ID_DB_CONNECTION"), fieldLabel: _("ID_DB_CONNECTION"),
hiddenName: 'DBS_UID', hiddenName: 'DBS_UID',
store: dbConnectionsStore, store: dbConnectionsStore,
//value: 'rp',
valueField: 'DBS_UID', valueField: 'DBS_UID',
displayField: 'DBS_NAME', displayField: 'DBS_NAME',
triggerAction: 'all', triggerAction: 'all',
@@ -732,9 +727,7 @@ Ext.onReady(function(){
height: 40, height: 40,
allowBlank: true allowBlank: true
}); });
items.push({
items.push(
{
layout: "column", layout: "column",
style: "margin-left: 255px;", style: "margin-left: 255px;",
hidden: (dataNumRows > 0) ? false : true, hidden: (dataNumRows > 0) ? false : true,
@@ -747,10 +740,7 @@ Ext.onReady(function(){
boxLabel: _("ID_PMTABLE_DATA_KEEP") boxLabel: _("ID_PMTABLE_DATA_KEEP")
} }
] ]
} });
);
//items.push(comboDbConnections);
var frmDetails = new Ext.FormPanel({ var frmDetails = new Ext.FormPanel({
id: 'frmDetails', id: 'frmDetails',
@@ -762,7 +752,6 @@ Ext.onReady(function(){
frame: true, frame: true,
height: 170, height: 170,
items: items, items: items,
//tbar : tbar,
waitMsgTarget: true, waitMsgTarget: true,
defaults: { defaults: {
allowBlank: false, allowBlank: false,
@@ -771,7 +760,6 @@ Ext.onReady(function(){
} }
}); });
southPanel = new Ext.FormPanel({ southPanel = new Ext.FormPanel({
region: 'south', region: 'south',
buttons: [ buttons: [
@@ -784,8 +772,7 @@ Ext.onReady(function(){
} else { } else {
createReportTable(); createReportTable();
} }
} } else {
else {
PMExt.confirm(_('ID_CONFIRM'), _('ID_PMTABLE_SAVE_AND_DATA_LOST'), createReportTable); PMExt.confirm(_('ID_CONFIRM'), _('ID_PMTABLE_SAVE_AND_DATA_LOST'), createReportTable);
} }
} }
@@ -810,7 +797,6 @@ Ext.onReady(function(){
Ext.getCmp('REP_TAB_NAME').setValue(TABLE.ADD_TAB_NAME); Ext.getCmp('REP_TAB_NAME').setValue(TABLE.ADD_TAB_NAME);
Ext.getCmp('REP_TAB_NAME').setDisabled(false); Ext.getCmp('REP_TAB_NAME').setDisabled(false);
Ext.getCmp('REP_TAB_DSC').setValue(TABLE.ADD_TAB_DESCRIPTION); Ext.getCmp('REP_TAB_DSC').setValue(TABLE.ADD_TAB_DESCRIPTION);
loadTableRowsFromArray(TABLE.FIELDS); loadTableRowsFromArray(TABLE.FIELDS);
} }
@@ -835,7 +821,6 @@ Ext.onReady(function(){
}); });
// actions // actions
function createReportTable() function createReportTable()
{ {
var tableName = Ext.getCmp('REP_TAB_NAME').getValue().trim(); var tableName = Ext.getCmp('REP_TAB_NAME').getValue().trim();
@@ -991,7 +976,6 @@ function _showDebugWin(content)
modal: false, modal: false,
autoScroll: true, autoScroll: true,
maximizable: true, maximizable: true,
//closeAction: 'hide',
maximizable: false, maximizable: false,
items: [], items: [],
x: 0, x: 0,
@@ -1004,7 +988,6 @@ function _showDebugWin(content)
function addColumn() { function addColumn() {
var PMRow = assignedGrid.getStore().recordType; var PMRow = assignedGrid.getStore().recordType;
//var meta = mapPMFieldType(records[i].data['FIELD_UID']);
var row = new PMRow({ var row = new PMRow({
uid: '', uid: '',
field_uid: '', field_uid: '',
@@ -1149,8 +1132,10 @@ function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, f
} }
} }
////ASSIGNBUTON FUNCTIONALITY //Assign button functionality
AssignFieldsAction = function () { AssignFieldsAction = function () {
var records, i;
records = Ext.getCmp('availableGrid').getSelectionModel().getSelections(); records = Ext.getCmp('availableGrid').getSelectionModel().getSelections();
for (i = 0; i < records.length; i++) { for (i = 0; i < records.length; i++) {
@@ -1289,7 +1274,6 @@ var DDLoadFields = function(){
//add on target grid //add on target grid
for (i = 0; i < records.length; i++) { for (i = 0; i < records.length; i++) {
//arrAux[r] = records[r].data['FIELD_UID'];
var meta = mapPMFieldType(records[i].data['FIELD_UID']); var meta = mapPMFieldType(records[i].data['FIELD_UID']);
var row = new PMRow({ var row = new PMRow({
uid: '', uid: '',
@@ -1312,13 +1296,13 @@ var DDLoadFields = function(){
return true; return true;
} }
}); });
//sw_func_groups = true;
}; };
function loadTableRowsFromArray(records) function loadTableRowsFromArray(records)
{ {
var PMRow = assignedGrid.getStore().recordType; var PMRow = assignedGrid.getStore().recordType;
if (records.length == 0) return; if (records.length == 0)
return;
for (i = 0; i < records.length; i++) { for (i = 0; i < records.length; i++) {
var row = new PMRow({ var row = new PMRow({
uid: records[i].FLD_UID, uid: records[i].FLD_UID,
@@ -1341,7 +1325,8 @@ function loadTableRowsFromArray(records)
function in_array(needle, haystack) { function in_array(needle, haystack) {
for (var i in haystack) { for (var i in haystack) {
if(haystack[i] == needle) return true; if (haystack[i] == needle)
return true;
} }
return false; return false;
} }

View File

@@ -1,8 +1,13 @@
/**
* PM tables list
*/
var newButton; var newButton;
var editButton; var editButton;
var deleteButton; var deleteButton;
var importButton; var importButton;
var exportButton; var exportButton;
var offlineEnableDisable;
var dataButton; var dataButton;
var store; var store;
@@ -20,7 +25,7 @@ var currentSelectedRow = -1;
var extensionPmt = 'pmt'; var extensionPmt = 'pmt';
Ext.onReady(function () { Ext.onReady(function () {
///Keyboard Events // Keyboard Events
new Ext.KeyMap(document, { new Ext.KeyMap(document, {
key: Ext.EventObject.F5, key: Ext.EventObject.F5,
fn: function (keycode, e) { fn: function (keycode, e) {
@@ -30,8 +35,7 @@ Ext.onReady(function(){
} }
e.stopEvent(); e.stopEvent();
document.location = document.location; document.location = document.location;
} } else {
else{
Ext.Msg.alert(_('ID_REFRESH_LABEL'), _('ID_REFRESH_MESSAGE')); Ext.Msg.alert(_('ID_REFRESH_LABEL'), _('ID_REFRESH_MESSAGE'));
} }
} }
@@ -63,13 +67,6 @@ Ext.onReady(function(){
var flagProcessmap = (typeof ('flagProcessmap') != 'undefined') ? flagProcessmap : 0; var flagProcessmap = (typeof ('flagProcessmap') != 'undefined') ? flagProcessmap : 0;
/*if (PRO_UID !== false) {
newMenuOptions.push({
text: _('ID_NEW_REPORT_TABLE_OLD'),
handler: NewReportTableOld
});
}*/
if (PRO_UID !== false) { if (PRO_UID !== false) {
newButton = new Ext.Action({ newButton = new Ext.Action({
id: 'newButton', id: 'newButton',
@@ -112,6 +109,26 @@ Ext.onReady(function(){
disabled: true disabled: true
}); });
offlineEnableDisable = new Ext.Action({
id: 'offlineEnableDisable',
text: _('ID_OFFLINE_TABLES'),
iconCls: 'silk-add',
icon: '/images/offline-pin.png',
menu: [{
text: _('ID_OFFLINE_TABLES_ENABLE'),
handler: function () {
OfflineEnableDisablePMTable(true);
}
}, {
text: _('ID_OFFLINE_TABLES_DISABLE'),
handler: function () {
OfflineEnableDisablePMTable(false);
}
}
],
disabled: true
});
dataButton = new Ext.Action({ dataButton = new Ext.Action({
id: 'dataButton', id: 'dataButton',
text: '&nbsp;' + _('ID_DATA'), text: '&nbsp;' + _('ID_DATA'),
@@ -232,7 +249,8 @@ Ext.onReady(function(){
{name: 'ADD_TAB_TAG'}, {name: 'ADD_TAB_TAG'},
{name: 'PRO_UID'}, {name: 'PRO_UID'},
{name: "DBS_UID"}, {name: "DBS_UID"},
{name : 'NUM_ROWS'} {name: 'NUM_ROWS'},
{name: 'ADD_TAB_OFFLINE'}
] ]
}), }),
listeners: { listeners: {
@@ -255,18 +273,21 @@ Ext.onReady(function(){
editButton.disable(); editButton.disable();
deleteButton.disable(); deleteButton.disable();
exportButton.disable(); exportButton.disable();
offlineEnableDisable.disable();
dataButton.disable(); dataButton.disable();
break; break;
case 1: case 1:
editButton.enable(); editButton.enable();
deleteButton.enable(); deleteButton.enable();
exportButton.enable(); exportButton.enable();
offlineEnableDisable.enable();
dataButton.enable(); dataButton.enable();
break; break;
default: default:
editButton.disable(); editButton.disable();
deleteButton.enable(); deleteButton.enable();
exportButton.enable(); exportButton.enable();
offlineEnableDisable.enable();
dataButton.disable(); dataButton.disable();
break; break;
} }
@@ -280,7 +301,8 @@ Ext.onReady(function(){
cmodelColumns.push({dataIndex: 'ADD_TAB_TAG', hidden: true, hideable: false}); cmodelColumns.push({dataIndex: 'ADD_TAB_TAG', hidden: true, hideable: false});
cmodelColumns.push({header: _('ID_NAME'), dataIndex: 'ADD_TAB_NAME', width: 300, align: 'left', renderer: function (v, p, r) { cmodelColumns.push({header: _('ID_NAME'), dataIndex: 'ADD_TAB_NAME', width: 300, align: 'left', renderer: function (v, p, r) {
return r.get('TYPE') == 'CLASSIC' ? v + '&nbsp<span style="font-size:9px; color:green">(' + _('ID_OLD_VERSION') + ')</font>' : v; return r.get('TYPE') == 'CLASSIC' ? v + '&nbsp<span style="font-size:9px; color:green">(' + _('ID_OLD_VERSION') + ')</font>' : v;
}}); }
});
cmodelColumns.push({header: _('ID_DESCRIPTION'), dataIndex: 'ADD_TAB_DESCRIPTION', sortable: true, width: 400, hidden: false, align: 'left', renderer: function (v, p, r) { cmodelColumns.push({header: _('ID_DESCRIPTION'), dataIndex: 'ADD_TAB_DESCRIPTION', sortable: true, width: 400, hidden: false, align: 'left', renderer: function (v, p, r) {
if (r.get('ADD_TAB_TAG')) { if (r.get('ADD_TAB_TAG')) {
tag = r.get('ADD_TAB_TAG').replace('plugin@', ''); tag = r.get('ADD_TAB_TAG').replace('plugin@', '');
@@ -295,18 +317,21 @@ Ext.onReady(function(){
v = Ext.util.Format.htmlEncode(v); v = Ext.util.Format.htmlEncode(v);
return r.get("ADD_TAB_TAG") ? "<span style = \"font-size:9px; color:green\">" + tag + ":</span> " + v : v; return r.get("ADD_TAB_TAG") ? "<span style = \"font-size:9px; color:green\">" + tag + ":</span> " + v : v;
}}); }
});
cmodelColumns.push({header: _('ID_TABLE_TYPE'), dataIndex: 'PRO_UID', width: 120, align: 'left', renderer: function (v, p, r) { cmodelColumns.push({header: _('ID_TABLE_TYPE'), dataIndex: 'PRO_UID', width: 120, align: 'left', renderer: function (v, p, r) {
color = r.get('PRO_UID') ? 'blue' : 'green'; color = r.get('PRO_UID') ? 'blue' : 'green';
value = r.get('PRO_UID') ? _('ID_REPORT_TABLE') : _('ID_PMTABLE'); value = r.get('PRO_UID') ? _('ID_REPORT_TABLE') : _('ID_PMTABLE');
return '<span style="color:' + color + '">' + value + '</span> '; return '<span style="color:' + color + '">' + value + '</span> ';
}}); }
});
cmodelColumns.push({dataIndex: "DBS_UID", hidden: true, hideable: false}); cmodelColumns.push({dataIndex: "DBS_UID", hidden: true, hideable: false});
cmodelColumns.push({header: _('ID_RECORDS'), dataIndex: 'NUM_ROWS', width: 90, align: 'left', renderer: function (v, p, r) { cmodelColumns.push({header: _('ID_RECORDS'), dataIndex: 'NUM_ROWS', width: 90, align: 'left', renderer: function (v, p, r) {
return '<div style="text-align:' + (isNaN(v) ? 'left' : 'right') + ';">' + v + '</div>'; return '<div style="text-align:' + (isNaN(v) ? 'left' : 'right') + ';">' + v + '</div>';
}}); }
});
if (PRO_UID === false) { if (PRO_UID === false) {
cmodelColumns.push({header: _('ID_PROCESS'), dataIndex: 'PRO_TITLE', width: 180, align: 'left'}); cmodelColumns.push({header: _('ID_PROCESS'), dataIndex: 'PRO_TITLE', width: 180, align: 'left'});
@@ -314,6 +339,11 @@ Ext.onReady(function(){
cmodelColumns.push({header: _('ID_TYPE'), dataIndex: 'ADD_TAB_TYPE', width: 400, hidden: true, align: 'left'}); cmodelColumns.push({header: _('ID_TYPE'), dataIndex: 'ADD_TAB_TYPE', width: 400, hidden: true, align: 'left'});
cmodelColumns.push({header: _('ID_AVAILABLE_OFFLINE'), dataIndex: 'ADD_TAB_OFFLINE', width: 400, align: 'left', renderer: function (value) {
return value === "1" ? _('ID_YES') : _('ID_NO');
}
});
cmodel = new Ext.grid.ColumnModel({ cmodel = new Ext.grid.ColumnModel({
defaults: { defaults: {
width: 50, width: 50,
@@ -359,6 +389,7 @@ Ext.onReady(function(){
dataButton, '-', dataButton, '-',
importButton, importButton,
exportButton, exportButton,
offlineEnableDisable,
'->', '->',
searchText, searchText,
clearTextButton, clearTextButton,
@@ -401,7 +432,9 @@ Ext.onReady(function(){
} }
}, this); }, this);
infoGrid.on('contextmenu', function(evt){evt.preventDefault();}, this); infoGrid.on('contextmenu', function (evt) {
evt.preventDefault();
}, this);
infoGrid.addListener('rowcontextmenu', onMessageContextMenu, this); infoGrid.addListener('rowcontextmenu', onMessageContextMenu, this);
viewport = new Ext.Viewport({ viewport = new Ext.Viewport({
@@ -413,19 +446,21 @@ Ext.onReady(function(){
infoGrid.store.load(); infoGrid.store.load();
}); });
//Funtion Handles Context Menu Opening //Function Handles Context Menu Opening
onMessageContextMenu = function (grid, rowIndex, e) { onMessageContextMenu = function (grid, rowIndex, e) {
e.stopEvent(); e.stopEvent();
var coords = e.getXY(); var coords = e.getXY();
contextMenu.showAt([coords[0], coords[1]]); contextMenu.showAt([coords[0], coords[1]]);
}; };
/////JS FUNCTIONS // JS Functions
//Capitalize String Function //Capitalize String Function
capitalize = function (s) { capitalize = function (s) {
s = s.toLowerCase(); s = s.toLowerCase();
return s.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } ); return s.replace(/(^|\s)([a-z])/g, function (m, p1, p2) {
return p1 + p2.toUpperCase();
});
}; };
//Do Nothing Function //Do Nothing Function
@@ -441,9 +476,6 @@ NewReportTable = function() {
}; };
NewReportTableOld = function () { NewReportTableOld = function () {
//location.href = 'reportTables/edit?PRO_UID='+PRO_UID+'&tableType=report';
//parent.reportTables2();
//parent.Pm.data.render.buildingBlocks.injector('reportTables2');
location.href = 'reportTables/reportTables_Edit?PRO_UID=' + PRO_UID; location.href = 'reportTables/reportTables_Edit?PRO_UID=' + PRO_UID;
}; };
@@ -458,8 +490,7 @@ EditPMTable = function(){
tableType = row.data.PRO_UID ? 'report' : 'table'; tableType = row.data.PRO_UID ? 'report' : 'table';
proParam = PRO_UID !== false ? '&PRO_UID=' + PRO_UID : ''; proParam = PRO_UID !== false ? '&PRO_UID=' + PRO_UID : '';
location.href = 'pmTables/edit?id=' + row.data.ADD_TAB_UID + '&flagProcessmap=' + flagProcessmap + '&tableType=' + tableType + proParam; location.href = 'pmTables/edit?id=' + row.data.ADD_TAB_UID + '&flagProcessmap=' + flagProcessmap + '&tableType=' + tableType + proParam;
} } else { //edit old report table
else { //edit old report table
location.href = 'reportTables/reportTables_Edit?REP_TAB_UID=' + row.data.ADD_TAB_UID location.href = 'reportTables/reportTables_Edit?REP_TAB_UID=' + row.data.ADD_TAB_UID
} }
}; };
@@ -509,6 +540,7 @@ DeletePMTable = function() {
editButton.disable(); editButton.disable();
deleteButton.disable(); deleteButton.disable();
exportButton.disable(); exportButton.disable();
offlineEnableDisable.disable();
dataButton.disable(); dataButton.disable();
} }
} }
@@ -532,7 +564,6 @@ ImportPMTable = function(){
resizable: false, resizable: false,
items: [ items: [
new Ext.FormPanel({ new Ext.FormPanel({
/*renderTo: 'form-panel',*/
id: 'uploader', id: 'uploader',
fileUpload: true, fileUpload: true,
width: 400, width: 400,
@@ -581,8 +612,7 @@ ImportPMTable = function(){
if (result.success) { if (result.success) {
PMExt.notify('', result.message); PMExt.notify('', result.message);
} } else {
else {
win = new Ext.Window({ win = new Ext.Window({
id: 'windowImportingError', id: 'windowImportingError',
applyTo: 'hello-win', applyTo: 'hello-win',
@@ -593,7 +623,6 @@ ImportPMTable = function(){
plain: true, plain: true,
html: '<h3>' + _('ID_IMPORTING_ERROR') + '</h3>' + result.message, html: '<h3>' + _('ID_IMPORTING_ERROR') + '</h3>' + result.message,
items: [], items: [],
buttons: [{ buttons: [{
text: 'Close', text: 'Close',
handler: function () { handler: function () {
@@ -689,7 +718,6 @@ PMTableData = function()
var row = Ext.getCmp('infoGrid').getSelectionModel().getSelected(); var row = Ext.getCmp('infoGrid').getSelectionModel().getSelected();
var type = row.get('PRO_UID'); var type = row.get('PRO_UID');
//location.href = 'pmTables/data?id='+row.get('ADD_TAB_UID');
if (row.get('TYPE') != '') { if (row.get('TYPE') != '') {
PMExt.info(_('ID_INFO'), _('ID_DATA_LIST_NOT_AVAILABLE_FOR_OLDVER')); PMExt.info(_('ID_INFO'), _('ID_DATA_LIST_NOT_AVAILABLE_FOR_OLDVER'));
return; return;
@@ -704,7 +732,6 @@ PMTableData = function()
modal: true, modal: true,
maximizable: true, maximizable: true,
constrain: true, constrain: true,
//closeAction:'hide',
plain: true, plain: true,
items: [{ items: [{
xtype: "iframepanel", xtype: "iframepanel",
@@ -775,7 +802,7 @@ function updateTagPermissions(){
if (rowsSelected) { if (rowsSelected) {
location.href = 'pmReports/reportsAjax?action=permissionList&ADD_TAB_NAME=' + rowsSelected[0].get('ADD_TAB_NAME') + '&ADD_TAB_UID=' + rowsSelected[0].get('ADD_TAB_UID') + '&pro_uid=' + PRO_UID + '&flagProcessmap=' + flagProcessmap; location.href = 'pmReports/reportsAjax?action=permissionList&ADD_TAB_NAME=' + rowsSelected[0].get('ADD_TAB_NAME') + '&ADD_TAB_UID=' + rowsSelected[0].get('ADD_TAB_UID') + '&pro_uid=' + PRO_UID + '&flagProcessmap=' + flagProcessmap;
} }
}; }
function PopupCenter(pageURL, title, w, h) { function PopupCenter(pageURL, title, w, h) {
var left = (Ext.getBody().getViewSize().width / 3); var left = (Ext.getBody().getViewSize().width / 3);
@@ -946,3 +973,39 @@ function pmtablesErrors(aOverwrite,aRelated,aMessage){
Ext.get(aOverwrite[i]['NAME_TABLE']).setStyle({border: '0', marginTop: '0'}); Ext.get(aOverwrite[i]['NAME_TABLE']).setStyle({border: '0', marginTop: '0'});
} }
} }
function OfflineEnableDisablePMTable(enableDisable) {
var rows = Ext.getCmp('infoGrid').getSelectionModel().getSelections();
if (rows.length <= 0) {
return;
}
var selections = [];
for (var i = 0; i < rows.length; i++) {
selections[i] = {
id: rows[i].get('ADD_TAB_UID'),
type: rows[i].get('ADD_TAB_TYPE'),
offline: enableDisable
};
}
Ext.Ajax.request({
url: 'pmTablesProxy/updateOffline',
params: {
rows: Ext.util.JSON.encode(selections)
},
success: function (response) {
Ext.MessageBox.hide();
var result = Ext.util.JSON.decode(response.responseText);
if (result.success) {
PMExt.notify(_("ID_OFFLINE_TABLES"), result.message.nl2br());
} else {
PMExt.error(_("ID_ERROR"), result.message.nl2br());
}
Ext.getCmp('infoGrid').getStore().reload();
},
failure: function (target, response) {
Ext.MessageBox.hide();
Ext.getCmp('infoGrid').getStore().reload();
Ext.Msg.alert(_('ID_ERROR'), response.result.message);
}
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B