if ($action == 'get_kwg_in') { include_lcm('inc_keywords'); include_lcm('inc_access'); // Return a list of sub-keyword-groups // Or, if the kwg selected has "apply = many", list the sub-kwg and their keywords // Note: currently, it does only for "apply = many". // Example: The user selected "matter type = Family", so we will // return the "Type 1" + "Type 2" comboboxes. echo '<div id="' . _request('div') . '">'; if (_request('group_name')) { $kwg = get_kwg_from_name(_request('group_name', '__ASSERT__')); $id_group = $kwg['id_group']; $type_obj = _request('type_obj', 'case'); $id_obj = _request('id_obj', 0); $id_obj_sec = _request('id_obj_sec', 0); $sub_kwgs = get_subgroups_in_group_id($id_group); if (count($sub_kwgs)) { if ($kwg['quantity'] == 'one') { // Show which sub-kwg to select from $obj_id_ajax = 'kw_' . create_random_password(15, time()); echo '<select id="nop_kwg_' . $obj_id_ajax . '" ' . 'name="nop_kwg_' . $type_obj . '_value[]" ' . "onchange=\"getKeywordInfo('get_kws_in', this.value, '{$type_obj}', {$id_obj}, {$id_obj_sec}, '{$obj_id_ajax}')\"" . '>'; echo '<option value="">' . '' . "</option>\n"; foreach ($sub_kwgs as $foo_kwg) { echo '<option value="' . $foo_kwg['name'] . '">' . _T(remove_number_prefix($foo_kwg['title'])) . "</option>\n"; } echo "</select>\n"; echo '<div id="' . $obj_id_ajax . '"></div>' . "\n"; } else { // Show all sub-kwgs as a seperate combobox foreach ($sub_kwgs as $sg) { $obj_id_ajax = 'kw_' . create_random_password(15, time());
function show_edit_keywords_form($type_obj, $id_obj, $id_obj_sec = 0) { include_lcm('inc_access'); if (!$GLOBALS['legal_obj'][$type_obj]) { lcm_panic("Invalid object type requested"); } if ($id_obj) { // // Show current keywords (already attached to object) // $current_kws = get_keywords_applied_to($type_obj, $id_obj, $id_obj_sec); $cpt = 0; foreach ($current_kws as $kw) { $kwg = get_kwg_from_id($kw['id_group']); $show_kw_value = false; echo "<tr>\n"; echo "<td>" . "<label for=\"kw_value_{$type_obj}{$cpt}\">" . f_err_star('kwg' . $kwg['id_group']) . _Ti(remove_number_prefix($kwg['title'])) . "</label>" . "<br />(" . _T('keywords_input_policy_' . $kwg['policy']) . ")" . "</td>\n"; echo "<td>"; $kw_for_kwg = get_keywords_in_group_id($kwg['id_group']); if (count($kw_for_kwg)) { echo '<input type="hidden" name="kwg_id_' . $type_obj . '[]" value="' . $kwg['id_group'] . '" />' . "\n"; echo '<input type="hidden" name="kw_entry_' . $type_obj . '[]" value="' . $kw['id_entry'] . '" />' . "\n"; echo '<select id="kw_value_' . $type_obj . $cpt . '" name="kw_value_' . $type_obj . '[]">'; echo '<option value="">' . '' . "</option>\n"; foreach ($kw_for_kwg as $kw1) { if ($kw1['hasvalue'] == 'Y') { $show_kw_value = true; } $sel = ''; if (isset($_SESSION['form_data']['kw_value_' . $type_obj][$cpt]) && $_SESSION['form_data']['kw_value_' . $type_obj][$cpt] == $kw1['id_keyword']) { $sel = ' selected="selected" '; } elseif ($kw1['id_keyword'] == $kw['id_keyword']) { $sel = ' selected="selected" '; } echo '<option value="' . $kw1['id_keyword'] . '"' . $sel . '>' . _T(remove_number_prefix($kw1['title'])) . "</option>\n"; } echo "</select>\n"; } // Check if keyword policy = mandatory, and quantity = one $kwg = get_kwg_from_id($kw['id_group']); if (!($kwg['policy'] == 'mandatory' && $kwg['quantity'] == 'one')) { echo '<label for="kw_del_' . $type_obj . $cpt . '">' . '<img src="images/jimmac/stock_trash-16.png" width="16" height="16" alt="Delete?" title="Delete?" />' . '</label> <input type="checkbox" id="kw_del_' . $type_obj . $cpt . '" name="kw_del_' . $type_obj . $cpt . '"/>'; } if ($show_kw_value) { // Use value if submitted with the form, else use previous one if (isset($_SESSION['form_data']['kw_entryval_' . $type_obj . $cpt])) { $tmp_value = $_SESSION['form_data']['kw_entryval_' . $type_obj . $cpt]; } else { $tmp_value = $kw['value']; } echo "<br />\n"; echo '<input type="text" name="kw_entryval_' . $type_obj . $cpt . '" ' . 'value="' . $tmp_value . '" />' . "\n"; } echo "</td>\n"; echo "</tr>\n"; $cpt++; } } // // New keywords // $kwg_for_case = get_kwg_applicable_for($type_obj, $id_obj, $id_obj_sec); $cpt_kw = 0; foreach ($kwg_for_case as $kwg) { echo "<tr>\n"; echo '<td><label for="new_keyword_' . $type_obj . $cpt_kw . '">' . f_err_star('keyword_' . $type_obj . $cpt_kw) . f_err_star('kwg' . $kwg['id_group']) . _Ti(remove_number_prefix($kwg['title'])) . '</label>' . "<br />(" . _T('keywords_input_policy_' . $kwg['policy']) . ")</td>\n"; echo "<td>"; $kw_for_kwg = get_keywords_in_group_id($kwg['id_group']); if (count($kw_for_kwg)) { $obj_id_ajax = 'kw_' . create_random_password(15, time()); echo '<input type="hidden" name="new_kwg_' . $type_obj . '_id[]" value="' . $kwg['id_group'] . '" />' . "\n"; echo '<select id="new_keyword_' . $type_obj . $cpt_kw . '" ' . 'name="new_keyword_' . $type_obj . '_value[]" ' . "onchange=\"getKeywordInfo('get_kwg_in','" . $kwg['name'] . "', '{$type_obj}', {$id_obj}, 0, '{$obj_id_ajax}')\"" . '>'; echo '<option value="">' . '' . "</option>\n"; $show_kw_value = false; foreach ($kw_for_kwg as $kw) { if ($kw['hasvalue'] == 'Y') { $show_kw_value = true; } // For default value, use the form_data (if present), else use suggested keyword $sel = ''; if (isset($_SESSION['form_data']['new_keyword_' . $type_obj . '_value'][$cpt_kw]) && $_SESSION['form_data']['new_keyword_' . $type_obj . '_value'][$cpt_kw] == $kw['id_keyword']) { $sel = ' selected="selected" '; } elseif ($kwg['suggest'] == $kw['name']) { $sel = ' selected="selected" '; } // $sel = ($kwg['suggest'] == $kw['name'] ? ' selected="selected" ' : ''); echo '<option ' . $sel . ' value="' . $kw['id_keyword'] . '">' . _T(remove_number_prefix($kw['title'])) . "</option>\n"; } echo "</select>\n"; if ($show_kw_value) { $tmp_value = ''; if (isset($_SESSION['form_data']['new_kw_entryval_' . $type_obj . $cpt_kw])) { $tmp_value = $_SESSION['form_data']['new_kw_entryval_' . $type_obj . $cpt_kw]; } echo "<br />\n"; echo '<input type="text" name="new_kw_entryval_' . $type_obj . $cpt_kw . '" ' . 'value="' . $tmp_value . '" />' . "\n"; } echo '<div id="' . $obj_id_ajax . '"></div>' . "\n"; } else { // // Sub-keyword group(s), since no top-level keywords // $sub_kwgs = get_subgroups_in_group_id($kwg['id_group']); if (count($sub_kwgs)) { echo '<input type="hidden" name="nop_kwg_' . $type_obj . '_id[]" value="' . $kwg['id_group'] . '" />' . "\n"; $obj_id_ajax = 'kw_' . create_random_password(15, time()); $sel_id = 'nop_kwg_' . $type_obj . $cpt_kw; $sel_name = 'nop_keyword_' . $type_obj . '_value[]'; echo "<select id=\"{$sel_id}\" name=\"{$sel_name}\" " . "onchange=\"getKeywordInfo('get_kwg_in', this.value, '{$type_obj}', {$id_obj}, 0, '{$obj_id_ajax}')\"" . '>'; echo '<option value="">' . '' . "</option>\n"; foreach ($sub_kwgs as $sg) { echo '<option value="' . $sg['name'] . '">' . _T(remove_number_prefix($sg['title'])) . "</option>\n"; } echo "</select>\n"; echo '<div id="' . $obj_id_ajax . '"></div>' . "\n"; } echo '<div id="keywords_in_group_data' . $kwg['id_group'] . '"></div>' . "\n"; } echo "</td>\n"; echo "</tr>\n"; $cpt_kw++; } }
function show_keyword_group_id($id_group, $id_parent = 0) { global $system_kwg; $kwg = array(); $sub_kwg = array(); $parent_kwg = array(); if (!$id_group) { // set default values (common to both new kwg or sub-kwg) $kwg['title'] = $kwg['description'] = ''; $kwg['ac_author'] = 'Y'; $kwg['policy'] = ''; $kwg['suggest'] = ''; $kwg['quantity'] = 'one'; if ($id_parent) { // New keyword sub-group $parent_kwg = get_kwg_from_id($id_parent); // set default values (based on parent kwg) $kwg['type'] = $parent_kwg['type']; // recommend a new name $all_kws = get_subgroups_in_group_id($id_parent, false); $cpt = sprintf("%02d", count($all_kws) + 1); while (get_kw_from_name($parent_kwg['name'], $parent_kwg['name'] . '_sub' . $cpt)) { $cpt = sprintf("%02d", ++$cpt); } $kwg['name'] = $parent_kwg['name'] . '_sub' . $cpt; lcm_page_start(_T('title_subkwg_edit')); } else { // New keyword group, set default values if (_request('type')) { $kwg['name'] = ''; $kwg['type'] = _request('type'); } else { $kwg['name'] = ''; $kwg['type'] = 'user'; } lcm_page_start(_T('title_kwg_new')); } } else { // Editing existing (parent or sub) keyword group $kwg = get_kwg_from_id($id_group); lcm_page_start(_T('title_kwg_edit')); if ($kwg['id_parent']) { $parent_kwg = get_kwg_from_id($kwg['id_parent']); $id_parent = $kwg['id_parent']; } } echo show_all_errors($_SESSION['errors']); // // Start form // echo '<form action="keywords.php" method="post">' . "\n"; echo '<input type="hidden" name="action" value="update_group" />' . "\n"; echo '<input type="hidden" name="id_group" value="' . $id_group . '" />' . "\n"; if ($id_parent) { echo '<input type="hidden" name="id_parent" value="' . $id_parent . '" />' . "\n"; } echo "<table border='0' width='99%' align='left' class='tbl_usr_dtl'>\n"; echo "<tr>\n"; // // Parent group (if sub-group) // if ($id_parent || $kwg['id_parent']) { echo "<td>" . _Ti('keywords_parent_group_title') . "</td>\n"; echo "<td>" . _T($parent_kwg['title']) . "</td>\n"; echo "</tr><tr>\n"; } // // Keyword group type (applies to..) // echo '<td width="30%"><label for="kwg_type">' . f_err_star('type') . _T('keywords_input_type') . "</label></td>\n"; echo "<td>"; if ($kwg['type'] == 'system' || $kwg['type'] == 'contact' || $id_parent) { echo _T('keywords_input_type_' . $kwg['type']); echo '<input type="hidden" name="kwg_type" value="' . $kwg['type'] . '" />' . "\n"; } else { $all_types = array("case", "stage", "followup", "client", "org", "client_org"); // "author" echo '<select name="kwg_type" id="kwg_type">'; foreach ($all_types as $t) { $sel = isSelected($t == $kwg['type']); echo '<option value="' . $t . '"' . $sel . '>' . _T('keywords_input_type_' . $t) . '</option>'; } echo "</select>\n"; } echo "</td>\n"; echo "</tr>\n"; // // Policy // Note: if sub-group, there could be a per-subgroup policy // E.g. one kw from SubGroupAlpha mandatory, one kw from SubGroupBeta optional // echo "<tr>\n"; echo '<td><label for="kwg_policy">' . f_err_star('policy') . _T('keywords_input_policy') . "</label></td>\n"; echo "<td>"; if ($kwg['type'] == 'system') { echo _T('keywords_input_policy_' . $kwg['policy']); } else { $all_policy = array('mandatory', 'optional', 'recommended'); echo '<select name="kwg_policy" id="kwg_policy">'; foreach ($all_policy as $pol) { $sel = isSelected($kwg['policy'] == $pol); echo '<option value="' . $pol . '"' . $sel . '>' . _T('keywords_input_policy_' . $pol) . "</option>\n"; } echo "</select>\n"; } echo "</td>\n"; echo "</tr>\n"; // // Default suggested keyword // if ($kwg['type'] != 'contact') { echo "<tr>\n"; echo "<td>" . _T('keywords_input_suggest') . "</td>\n"; echo "<td>"; echo '<select name="kwg_suggest" class="sel_frm">'; echo '<option value="">' . "none" . '</option>' . "\n"; // TRAD if ($id_group) { $all_kw = get_keywords_in_group_name($kwg['name']); foreach ($all_kw as $kw) { $sel = isSelected($kw['name'] == $kwg['suggest']); echo '<option value="' . $kw['name'] . '"' . $sel . '>' . _T($kw['title']) . '</option>' . "\n"; } } echo '</select>'; echo "</td>\n"; echo "</tr>\n"; } echo "<tr>\n"; // // Name (only for new keywords, must be unique and cannot be changed) // $disabled = $id_group ? ' disabled="disabled" ' : ''; echo "<td colspan='2'>"; echo "<p class='normal_text'>"; echo "<strong>" . f_err_star('name') . _T('keywords_input_name') . "</strong> " . "(short identifier, unique to this keyword group)" . "<br />\n"; // TRAD echo '<input ' . $disabled . ' type="text" style="width:99%;" id="kwg_name" name="kwg_name" size="45" value="' . $kwg['name'] . '" class="search_form_txt" />' . "\n"; echo "</p>\n"; // // Title // echo "<p class='normal_text'>"; echo "<strong>" . f_err_star('title') . _T('keywords_input_title') . "</strong><br />\n"; echo "<input type='text' style='width:99%;' id='kwg_title' name='kwg_title' size='45' value='" . $kwg['title'] . "' class='search_form_txt' />\n"; echo "</p>\n"; // // Description // echo "<p class='normal_text'>"; echo "<strong>" . _T('keywords_input_description') . "</strong><br />\n"; echo "<textarea id='kwg_description' name='kwg_description' style='width:99%' rows='2' cols='45' wrap='soft' class='frm_tarea'>"; echo $kwg['description']; echo "</textarea>\n"; echo "</p>\n"; echo "</td>\n"; echo "</tr><tr>\n"; echo '<td colspan="2">'; echo '<ul class="info">'; // Quantity: relevevant only for user keywords (ex: 'thematics' for cases) if ($kwg['type'] == 'system') { $html_quantity = _T('keywords_option_quantity_' . $kwg['quantity']) . '<input type="hidden" name="kwg_quantity" value="' . $kwg['quantity'] . '" />'; } else { $my_qty = $kwg['quantity']; // [ML] Yes, strange UI, but imho it works great (otherwise confusing, I hate checkboxes) $html_quantity = '<select name="kwg_quantity" id="kwg_quantity">' . (!$my_qty ? '<option value=""></option>' : '') . '<option value="one"' . isSelected($my_qty == 'one') . '>' . _T('keywords_option_quantity_one') . '</option>' . '<option value="many"' . isSelected($my_qty == 'many') . '>' . _T('keywords_option_quantity_many') . '</option>' . '</select>'; } echo '<li>' . _T('keywords_info_quantity', array('quantity' => $html_quantity)) . "</li>\n"; if ($kwg['type'] != 'system') { echo '<li>' . _T('keywords_info_kwg_ac_author') . " " . get_yes_no('kwg_ac_author', $kwg['ac_author']) . "</li>\n"; } echo "</ul>\n"; echo "</td>\n"; echo "</tr>\n"; echo "</table>\n\n"; echo '<p><button name="submit" type="submit" value="submit" class="simple_form_btn">' . _T('button_validate') . "</button></p>\n"; echo "</form>\n"; // destroy error messages $_SESSION['errors'] = array(); lcm_page_end(); exit; }