17 require_once SQ_PACKAGES_PATH.
'/cms/page_templates/page_decision_tree/decision_tree_question/decision_tree_question_edit_fns.inc';
38 parent::__construct();
56 $write_access = $asset->writeAccess(
'attributes');
57 $rules = $asset->attr(
'rules');
58 $q_dest = $asset->attr(
'question_destinations');
61 <table
class=
"sq-backend-table">
63 <td
class=
"sq-backend-table-header">
64 <?php echo translate(
'answer_rule'); ?>
66 <td
class=
"sq-backend-table-header">
67 <?php echo translate(
'next_question'); ?>
69 <td
class=
"sq-backend-table-header">
70 <?php echo translate(
'result_bodycopy'); ?>
72 <td
class=
"sq-backend-table-header">
73 <?php echo translate(
'points_value'); ?>
77 foreach ($rules as $rule => $details){
80 <td
class=
"sq-backend-table-cell">
82 $asset->printDescription($details);
85 <td
class=
"sq-backend-table-cell">
87 $nxt_q = (!empty($q_dest[$rule][
'next_question'])) ? $q_dest[$rule][
'next_question'] :
'';
90 'decision_tree_question_type_select' =>
'I',
91 'decision_tree_question_type_numeric' =>
'I',
93 asset_finder($prefix.
'_next_question_'.$rule, $nxt_q, $type_codes);
95 if ($nxt_q) echo get_asset_tag_line($nxt_q,
'details');
99 <td
class=
"sq-backend-table-cell">
101 $res_body = (!empty($q_dest[$rule][
'result_bodycopy'])) ? $q_dest[$rule][
'result_bodycopy'] :
'';
103 $type_codes = Array (
106 asset_finder($prefix.
'_bodycopy_'.$rule, $res_body, $type_codes);
108 if ($res_body) echo get_asset_tag_line($res_body,
'details');
112 <td
class=
"sq-backend-table-cell">
114 $points = (!empty($q_dest[$rule][
'points_value'])) ? $q_dest[$rule][
'points_value'] : 0;
116 text_box($prefix.
'_points_value_'.$rule, $points);
144 if (!$asset->writeAccess(
'attributes'))
return FALSE;
145 $rules = $asset->attr(
'rules');
148 foreach ($rules as $rule => $details){
150 $nxt_q = (isset($_POST[$prefix.
'_next_question_'.$rule])) ? $_POST[$prefix.
'_next_question_'.$rule][
'assetid'] :
'';
153 $parents = $GLOBALS[
'SQ_SYSTEM']->am->getParents($nxt_q,
'decision_tree_question', FALSE, NULL, NULL, TRUE, 1, 1);
154 if (!array_key_exists($asset->id, $parents)){
155 $minor = $GLOBALS[
'SQ_SYSTEM']->am->getAsset($nxt_q);
156 if(!$GLOBALS[
'SQ_SYSTEM']->am->createAssetLink($asset, $minor, SQ_LINK_TYPE_2)) $nxt_q =
'';
159 $q_dest[$rule][
'next_question'] = $nxt_q;
161 $res_body = (isset($_POST[$prefix.
'_bodycopy_'.$rule])) ? $_POST[$prefix.
'_bodycopy_'.$rule][
'assetid'] :
'';
162 $q_dest[$rule][
'result_bodycopy'] = $res_body;
164 $points = (isset($_POST[$prefix.
'_points_value_'.$rule])) ? $_POST[$prefix.
'_points_value_'.$rule] : 0;
165 if (!is_numeric($points)) {
166 trigger_localised_error(
'CMS0114', E_USER_NOTICE);
169 $q_dest[$rule][
'points_value'] = $points;
173 $asset->setAttrValue(
'question_destinations', $q_dest);
174 $asset->saveAttributes();
192 $write_access = $asset->writeAccess(
'attributes');
194 $rules = $asset->attr(
'rules');
195 $contents = $asset->getOperators();
199 ?><table
class=
"sq-backend-table" style=
"width:auto">
201 <th><?php echo translate(
'range_type'); ?></th>
202 <th><?php echo translate(
'range_values'); ?></th>
203 <th><?php echo translate(
'delete'); ?></th>
205 foreach ($rules as $key => $item) {
209 combo_box($prefix.
'[RULES][default]['.$key.
'][logic]', $contents, FALSE, $item[
'logic']);
214 text_box($prefix.
'[RULES][default]['.$key.
'][value_1]', $item[
'value_1'], 10);
216 text_box($prefix.
'[RULES][default]['.$key.
'][value_2]', $item[
'value_2'], 10);
219 ?><td><?php check_box($prefix.
'[RULES][default]['.$key.
'][delete]', 1, FALSE,
'document.getElementById("'.$prefix.
'[RULES][default]['.$key.
'][logic]").disabled = document.getElementById("'.$prefix.
'[RULES][default]['.$key.
'][value_1]").disabled = document.getElementById("'.$prefix.
'[RULES][default]['.$key.
'][value_2]").disabled = this.checked') ?></td><?php
224 <td colspan=
"3"><a href=
"#" id=
"<?php echo $prefix?>[RULES][add]" onclick=
"addAnother(this.parentNode.parentNode); return false;">Add another...</a></td>
227 <script type=
"text/javascript">
228 nextIndex = <?php echo (
int)count($rules); ?>;
229 function addAnother(node) {
231 var options =
'<?php foreach ($contents as $value => $desc) {
232 echo '<option value=
"'.$value.'">
'.$desc.'</option>
';
235 var prefix =
'<?php echo $prefix; ?>';
236 var parent = node.parentNode;
239 tr = document.createElement(
'tr');
242 td1 = document.createElement(
'td');
243 td1.innerHTML =
'<select name="'+prefix+
'[RULES][default][' + nextIndex +
'][logic]" class="sq-form-field">'+options+
'</select>';
244 td2 = document.createElement(
'td');
245 var box1 =
'<input type="text" name="'+prefix+
'[RULES][default][' + nextIndex +
'][value_1]" value="" size="10" /> ';
246 td2.innerHTML = box1+
'<input type="text" name="'+prefix+
'[RULES][default][' + nextIndex +
'][value_2]" value="" size="10" />';
247 td3 = document.createElement(
'td');
248 td3.innerHTML =
'<em>new</em>';
254 parent.insertBefore(tr, node);
264 ?><table
class=
"sq-backend-table" style=
"width:auto">
266 <th>Answer Rules</th>
268 foreach ($rules as $key => $item) {
270 ?><td><?php $asset->printDescription($item); ?></td><?php
293 if (!$asset->writeAccess(
'attributes'))
return FALSE;
295 if (isset($_POST[$prefix][
'RULES'])) {
297 $rules = $_POST[$prefix][
'RULES'][
'default'];
299 foreach ($rules as $key => $value) {
301 $allowed_sub_keys = Array(
'logic',
'value_1',
'value_2',
'delete');
302 foreach ($value as $sub_key) {
303 if (!in_array($sub_key, $allowed_sub_keys)) {
304 unset($rules[$key][$sub_key]);
309 if (array_get_index($value,
'delete', FALSE)) {
314 $processed_rules = Array();
315 foreach ($rules as &$value) {
316 $value[
'value_1'] = trim($value[
'value_1']);
317 $value[
'value_2'] = trim($value[
'value_2']);
318 if ($value[
'value_1'] ==
'' && $value[
'value_2'] ==
'')
continue;
319 $new_key = strtolower($value[
'logic'].
'_'.$value[
'value_1'].
'_'.$value[
'value_2']);
320 $processed_rules[$new_key] = $value;
324 $asset->setAttrValue(
'rules', $processed_rules);
325 $asset->saveAttributes();