X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;ds=inline;f=includes%2Fui%2Fui_lists.inc;h=17c61441db0d32fa4ff24873daf4487f42c95fe7;hb=4301c9cda0f510cc52335408380b368e51c2a663;hp=101d3d3c4e56f898197ff508408a467883d2395f;hpb=4358c55dc780dace88d9843054c2898bf602d666;p=fa-stable.git diff --git a/includes/ui/ui_lists.inc b/includes/ui/ui_lists.inc index 101d3d3c..17c61441 100644 --- a/includes/ui/ui_lists.inc +++ b/includes/ui/ui_lists.inc @@ -6,10 +6,10 @@ include_once($path_to_root . "/includes/types.inc"); include_once($path_to_root . "/includes/current_user.inc"); $_search_button = " "; + ."%s/images/locate.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Set filter")."'> "; $_select_button = " "; + ."%s/images/button_ok.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Select")."'> "; $all_items = reserved_words::get_all(); @@ -32,6 +32,7 @@ $opts = array( // default options // submit on select parameters 'default' => '', // default value when $_POST is not set 'select_submit' => false, //submit on select: true/false + 'edit_submit' => false, // call editor on F4 'async' => true, // select update via ajax (true) vs _page_body reload // search box parameters 'sel_hint' => null, @@ -51,7 +52,8 @@ $opts = array( // default options 'box_hint' => null // box/selectors hints; null = std see below ); // ------ merge options with defaults ---------- - $opts = array_merge($opts, $options); + if($options != null) + $opts = array_merge($opts, $options); if (!is_array($opts['where'])) $opts['where'] = array($opts['where']); $search_box = $opts['search_box']===true ? '_'.$name.'_edit' : $opts['search_box']; @@ -66,12 +68,12 @@ $opts = array( // default options if(!count($opts['search'])) { $opts['search'] = array($by_id ? $valfield : $namefield); } - if ($opts['sel_hint'] === null) + if ($opts['sel_hint'] === null) $opts['sel_hint'] = $by_id || $search_box==false ? '' : _('Press Space tab for search pattern entry'); if ($opts['box_hint'] === null) - $opts['box_hint'] = $search_box ? + $opts['box_hint'] = $search_box && $search_submit != false ? ($by_id ? _('Enter code fragment to search or * for all') : _('Enter description fragment to search or * for all')) :''; @@ -83,7 +85,6 @@ $opts = array( // default options $limit = ''; if (isset($_POST[$select_submit])) { - if ($by_id) $txt = $_POST[$name]; if (!$opts['async']) @@ -97,6 +98,7 @@ $opts = array( // default options $rel = "rel='$search_box'"; // set relation to list if ($opts['search_submit']) { if (isset($_POST[$search_submit])) { + $selected_id = ''; // ignore selected_id while search if (!$opts['async']) $Ajax->activate('_page_body'); else @@ -131,14 +133,17 @@ $opts = array( // default options $selector = $first_opt = ''; $first_id = false; $found = false; -//if($name=='SelectStockFromList') display_error($sql); +//if($name=='contact_sel') display_error($sql); if($result = db_query($sql)) { while ($contact_row = db_fetch($result)) { $value = $contact_row[0]; $descr = $opts['format']==null ? $contact_row[1] : call_user_func($opts['format'], $contact_row); $sel = ''; - if ((string)($selected_id) === $value) { + if (get_post($search_submit) && ($txt === $value)) { + $selected_id = $value; + } + if ((string)($selected_id) === $value) { $sel = 'selected'; $found = $value; } @@ -166,11 +171,12 @@ $opts = array( // default options $_POST[$name] = $selected_id; if ($by_id && $search_box != false) { - $txt = $_POST[$name]; - $Ajax->addUpdate($name, $search_box, $txt); + $txt = $found; + $Ajax->addUpdate($name, $search_box, $txt ? $txt : ''); } + $aspect = $opts['edit_submit'] ? " aspect='editable'" : ''; $selector = "\n"; + . $opts['sel_hint']."'$aspect $rel>".$selector."\n"; $Ajax->addUpdate($name, "_{$name}_sel", $selector); @@ -182,7 +188,7 @@ $opts = array( // default options global $_select_button; // button class selects form reload/ajax selector update $selector .= sprintf($_select_button, $disabled, user_theme(), - (in_ajax() ? 'display:none;':''), + (fallback_mode() ? '' : 'display:none;'), $select_submit)."\n"; } // ------ make combo ---------- @@ -193,12 +199,12 @@ $opts = array( // default options $opts['size']."' maxlength='".$opts['max']. "' value='$txt' class='$class' rel='$name' autocomplete='off' title='" .$opts['box_hint']."'" - .(in_ajax() && !$by_id ? " style=display:none;":'') + .(!fallback_mode() && !$by_id ? " style=display:none;":'') .">\n"; if ($search_submit != false) { global $_search_button; $edit_entry .= sprintf($_search_button, $disabled, user_theme(), - (in_ajax() ? 'display:none;':''), + (fallback_mode() ? '' : 'display:none;'), $search_submit)."\n"; } } @@ -211,6 +217,15 @@ $opts = array( // default options return $str; } + +/* + Helper function. + Returns true if selector $name is subject to update. +*/ +function list_updated($name) +{ + return isset($_POST['_'.$name.'_update']) || isset($_POST['_'.$name.'_button']); +} //---------------------------------------------------------------------------------------------- // Universal array combo generator // $items is array of options 'value' => 'description' @@ -224,6 +239,7 @@ $opts = array( // default options 'spec_option'=>false, // option text or false 'spec_id' => 0, // option id 'select_submit' => false, //submit on select: true/false + 'edit_submit' => false, // call editor on F4 'async' => true, // select update via ajax (true) vs _page_body reload 'default' => '', // default value when $_POST is not set // search box parameters @@ -231,7 +247,8 @@ $opts = array( // default options 'disabled' => false ); // ------ merge options with defaults ---------- - $opts = array_merge($opts, $options); + if($options != null) + $opts = array_merge($opts, $options); $select_submit = $opts['select_submit']===true ? '_'.$name.'_update' : $opts['select_submit']; $spec_id = $opts['spec_id']; $spec_option = $opts['spec_option']; @@ -279,8 +296,9 @@ $opts = array( // default options $_POST[$name] = $first_id; } + $aspect = $opts['edit_submit'] ? " aspect='editable'" : ''; $selector = "\n"; + . $opts['sel_hint']."'$aspect >".$selector."\n"; $Ajax->addUpdate($name, "_{$name}_sel", $selector); @@ -289,7 +307,7 @@ $opts = array( // default options if ($select_submit != false) { // if submit on change is used - add select button global $_select_button; $selector .= sprintf($_select_button, $disabled, user_theme(), - (in_ajax() ? 'display:none;':''), + (fallback_mode() ? '' : 'display:none;'), $select_submit)."\n"; } default_focus($name); @@ -323,6 +341,7 @@ function supplier_list($name, $selected_id=null, $spec_option=false, $submit_on_ array( 'format' => '_format_add_curr', 'search_box' => $mode!=0, + 'edit_submit' => true, 'type' => 1, 'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option, 'spec_id' => $all_items, @@ -368,8 +387,9 @@ return combo_input($name, $selected_id, $sql, 'debtor_no', 'name', 'spec_option' => $spec_option === true ? _("All Customers") : $spec_option, 'spec_id' => $all_items, 'select_submit'=> $submit_on_change, + 'edit_submit' => true, // call editor on F4 'async' => false, - 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment') : + 'sel_hint' => $mode ? _('Press Space tab to filter by name fragment; F4 - entry new customer') : _('Select customer') ) ); } @@ -482,20 +502,20 @@ return combo_input($name, $selected_id, $sql, 'curr_abrev', 'currency', ) ); } -function currencies_list_cells($label, $name, $selected_id=null) +function currencies_list_cells($label, $name, $selected_id=null, $submit_on_change=false) { if ($label != null) echo "