X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fui%2Fui_lists.inc;h=17c61441db0d32fa4ff24873daf4487f42c95fe7;hb=4301c9cda0f510cc52335408380b368e51c2a663;hp=c654fafba709dde4350f74a754a4ce3d5473f8b0;hpb=cf015790b7363cfcf29b98c82d20787c8d703fc1;p=fa-stable.git diff --git a/includes/ui/ui_lists.inc b/includes/ui/ui_lists.inc index c654fafb..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, @@ -67,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')) :''; @@ -84,7 +85,6 @@ $opts = array( // default options $limit = ''; if (isset($_POST[$select_submit])) { - if ($by_id) $txt = $_POST[$name]; if (!$opts['async']) @@ -98,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 @@ -132,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; } @@ -167,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); @@ -183,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 ---------- @@ -194,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"; } } @@ -212,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' @@ -225,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 @@ -281,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); @@ -291,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); @@ -325,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, @@ -370,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') ) ); } @@ -755,7 +773,8 @@ function stock_purchasable_items_list($name, $selected_id=null, $all_option=false, $submit_on_change=false) { $str = stock_items_list($name, $selected_id, $all_option, $submit_on_change, - array('where'=>array("mb_flag!= 'M'"))); + array('where'=>array("mb_flag!= 'M'"), + 'edit_submit' => true)); return $str; } @@ -765,7 +784,9 @@ function stock_purchasable_items_list_cells($label, $name, $selected_id=null, if ($label != null) echo "