Ga naar hoofdinhoud

Workflow: inrichting binnen Interface Builder

Nieuwe versie

Variant: multiform

Variant: single form

Oude versie

PHP-code

1. OnShowEditForm

Huidige code

use Joomla\CMS\Factory;
$the_id=$_GET['edit_id'];
if (!$the_id){$the_id=$_GET['grouped_edit_id'];}
if (!$the_id){$the_id=$_GET['grouped_view_untabbed_id'];}

$process_id = 5;

$query="SELECT `item_process_state_id` FROM `jnxt_jne_wfm_items` WHERE `item_mod_scolarship_id` = '$the_id'";
$db = Factory::getDBO();
$db->setQuery($query);
$process_state_id = $db->loadResult();

if (!$process_state_id){$process_state_id='21';}

Nieuwe code

// Get info from item-record
$record_id = $_GET['edit_id'];

// Set where field
$field_name = 'id';


use Joomla\CMS\Factory;

$classWF = new modJNInterfacebuilderWorkflow();
echo "type of classWF: " . gettype($classWF) . "<br />";

$item_info = array();
echo "1: type of item_info: " . gettype($item_info) . "<br />";
$item_info = $classWF->getItemInfo($field_name, $record_id);
echo "2: type of item_info: " . gettype($item_info) . "<br />";
print_r($item_info);

// $item_info = modJNInterfacebuilderWorkflow::getItemInfo($field_name, $record_id);

// Explode array to variables.
list('item_type_id' => $item_type_id, 'item_subtype_id' => $item_subtype_id, 'item_owner_id' => $item_owner_id, 'item_addressee_id' => $item_addressee_id, 'item_startdate' => $item_startdate, 'item_enddate' => $item_enddate, 'process_id' => $process_id, 'process_state_id' => $process_state_id, 'process_action_id' => $process_action_id) = $item_info;

// Set where statement
$where_process_id = '';
if (isset($process_id)) {
$where_process_id = 'process_id = ' . $process_id . ' AND ';
} else {
$where_process_id = '';
}
echo "Where statement: " . $where_process_id . "<br />";
// if (!$process_state_id){$process_state_id='21';}

Nieuwe code met workflow.php

use Joomla\CMS\Factory;

// Get the ID of the item on screen
// This is de record_id from the 'content' table.
$record_id=$_GET['edit_id'];
if (!$record_id){$record_id=$_GET['grouped_edit_id'];}
if (!$record_id){$record_id=$_GET['grouped_view_untabbed_id'];}



// Use de record_id to find the accompanying record in the `items` table.
$item_id = getItemID($record_id);

$process_id = getProcessID($record_id);



$query = "SELECT `item_process_state_id` FROM `jnxt_jne_wfm_items` WHERE `item_mod_scolarship_id` = '$record_id'";
$db = Factory::getDBO();
$db->setQuery($query);
$process_state_id = $db->loadResult();


if (!$process_state_id){$process_state_id='21';}

Toelichting

Create cascading dropdown on process_id for process_state_before_id and process_state_after_id Two situations:

  1. Change value in dropdown of process_id: leads to DOM-event => refresh of page
  2. No change of value in dropdown of process_id. Because it is readonly, or the user just doesn't need to change it. At opening of the form the dropdowns of process_state_before_id and process_state_after_id need to be filtered on process_id. Solution: get process_id from database before opening the form: SELECT process_id FROM jnxt_jne_wfm_process_actions WHERE id = 28;

How:

  1. Get field_name / set field name: process_id
  2. Get table: $jn_group0_source;
  3. Get the id of the record: $_GET['edit_id']; Use this to get
// Set filter on 'process_state_before_id' and 'process_state_after_id'
// Initialize filter
$where_process_id = '';

// Option 1: No change in dropdown of process_id
$field_name = 'process_id';
$data_source = $jn_group0_source;
$record_id = $_GET['edit_id'];

// echo "Field name: " . $field_name ."<br />";
// echo "Table name: " . $data_source . "<br />";
// echo "Record value: " . $record_id . "<br />";

$process_id = modJNInterfacebuilderWorkflow::getValue($field_name, $data_source, $record_id);
echo "Process ID: " . $process_id . "<br />";

// Option 2: Change in dropdown of process_id: get process_id from URL after refresh
if (isset($_GET['process_id'])) {
$process_id = $_GET['process_id'];
}
$where_process_id = 'process_id = ' . $process_id . ' AND ';

Klachten

PHP scripts

OnShowEditForm

// Set filter on 'process_state_before_id' and 'process_state_after_id'

// Initialize variables
$process_id = 0
$where_process = '';
$process_state_id = 0;
$where_process_state = '';

// Option 1: No change in dropdown of process_id
$field_name = 'process_id';
$data_source = $jn_group0_source;
$record_id = $_GET['edit_id'];
$process_id = modJNInterfacebuilderWorkflow::getValue($field_name, $data_source, $record_id);
echo $process_id;

// Option 2: Change in dropdown of process_id: get process_id from URL after refresh
if (!isset($process_id)) {
if (isset($_GET['process_id'])) {
$process_id = $_GET['process_id'];
echo $process_id;
}
}

// Set filter on process_id
if (isset($process_id)){
$where_process = 'process_id = ' . $process_id . ' AND ';
}
echo $where_process;

// Set filter on process_state_id
$process_state_id = 24;
if (isset($process_state_id)){
$where_process_state = 'process_state_before_id = '. $process_state_id . ' AND ';
}
echo $where_process_state;

$where = $where_process . ' ' . $where_process_state;
echo $where;

Restanten

list(item_type_id => $item_type_id, item_subtype_id => $item_subtype_id, item_owner_id => $item_owner_id, item_addressee_id => $item_addressee_id, item_startdate => $item_startdate, item_enddate => $item_enddate, item_process_state_id => $item_process_state_id, item_process_action_id => $item_process_action_id) = $item_info;

echo "item_type_id: " . $item_type_id . ", ";
echo "item_subtype_id: " . $item_subtype_id . ", ";
echo "item_owner_id: " . $item_owner_id . ", ";
echo "item_addressee_id: " . $item_addressee_id . ", ";
echo "item_startdate: " . $item_startdate . ", ";
echo "item_enddate: " . $item_enddate . ", ";
echo "item_process_state_id: " . $item_process_state_id . ", ";
echo "item_process_action_id: " . $item_process_action_id;