See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
include_once($path_to_root . "/includes/banking.inc");
-include_once($path_to_root . "/includes/reserved.inc");
include_once($path_to_root . "/includes/types.inc");
include_once($path_to_root . "/includes/current_user.inc");
$_select_button = "<input %s type='submit' class='combo_select' style='border:0;background:url($path_to_root/themes/"
."%s/images/button_ok.png) no-repeat;%s' aspect='fallback' name='%s' value=' ' title='"._("Select")."'> ";
-$all_items = reserved_words::get_all();
+$all_items = ALL_TEXT;
//----------------------------------------------------------------------------
// Universal sql combo generator
'spec_id' => 0, // option id
// submit on select parameters
'default' => '', // default value when $_POST is not set
+ 'multi' => false, // multiple select
'select_submit' => false, //submit on select: true/false
'async' => true, // select update via ajax (true) vs _page_body reload
// search box parameters
'search_submit' => true, //search submit button: true/false
'size' => 8, // size and max of box tag
'max' => 50,
+ 'height' => false, // number of lines in select box
'cells' => false, // combo displayed as 2 <td></td> cells
'search' => array(), // sql field names to search
'format' => null, // format functions for regular options
$by_id = ($opts['type'] == 0);
$class = $by_id ? 'combo':'combo2';
$disabled = $opts['disabled'] ? "disabled" : '';
-
+ $multi = $opts['multi'];
+
if(!count($opts['search'])) {
$opts['search'] = array($by_id ? $valfield : $namefield);
}
if ($selected_id == null) {
$selected_id = get_post($name, $opts['default']);
}
+ if(!is_array($selected_id))
+ $selected_id = array($selected_id); // code is generalized for multiple selection support
+
$txt = get_post($search_box);
$rel = '';
$limit = '';
$rel = "rel='$search_box'"; // set relation to list
if ($opts['search_submit']) {
if (isset($_POST[$search_submit])) {
- $selected_id = ''; // ignore selected_id while search
+ $selected_id = array(); // ignore selected_id while search
if (!$opts['async'])
$Ajax->activate('_page_body');
else
$Ajax->activate($name);
}
if ($txt == '') {
- if ($spec_option === false && $selected_id==null)
+ if ($spec_option === false && $selected_id == array())
$limit = ' LIMIT 1';
else
$opts['where'][] = $valfield . "='". get_post($name, $spec_id)."'";
while ($contact_row = db_fetch($result)) {
$value = $contact_row[0];
$descr = $opts['format']==null ? $contact_row[1] :
- call_user_func($opts['format'], $contact_row);
+ call_user_func($opts['format'], $contact_row);
$sel = '';
if (get_post($search_submit) && ($txt === $value)) {
- $selected_id = $value;
+ $selected_id[] = $value;
}
- if ((string)($selected_id) === $value) {
+ if (in_array($value, $selected_id)) {
$sel = 'selected';
$found = $value;
}
. $selector;
}
- if ($found === false) {
- $selected_id = $first_id;
+ if ($found===false) {
+ $selected_id = array($first_id);
}
- $_POST[$name] = $selected_id;
+ $_POST[$name] = $multi ? $selected_id : $selected_id[0];
if ($by_id && $search_box != false) {
$txt = $found;
$Ajax->addUpdate($name, $search_box, $txt ? $txt : '');
}
- $selector = "<select $disabled name='$name' class='$class' title='"
+ $selector = "<select ".($multi ? "multiple" : '')
+ . ($opts['height']!==false ? ' size="'.$opts['height'].'"' : '')
+ . "$disabled name='$name".($multi ? '[]':'')."' class='$class' title='"
. $opts['sel_hint']."' $rel>".$selector."</select>\n";
$Ajax->addUpdate($name, "_{$name}_sel", $selector);
echo ($edit_entry!='' ? "<td>$edit_entry</td>" : '')."<td>$selector</td>";
else
echo $edit_entry.$selector;
-
return $str;
}
'select_submit' => false, //submit on select: true/false
'async' => true, // select update via ajax (true) vs _page_body reload
'default' => '', // default value when $_POST is not set
+ 'multi'=>false, // multiple select
// search box parameters
+ 'height' => false, // number of lines in select box
'sel_hint' => null,
'disabled' => false
);
$spec_id = $opts['spec_id'];
$spec_option = $opts['spec_option'];
$disabled = $opts['disabled'] ? "disabled" : '';
+ $multi = $opts['multi'];
if ($selected_id == null) {
$selected_id = get_post($name, $opts['default']);
}
+ if(!is_array($selected_id))
+ $selected_id = array($selected_id); // code is generalized for multiple selection support
if (isset($_POST[ '_'.$name.'_update'])) {
if (!$opts['async'])
//if($name=='SelectStockFromList') display_error($sql);
foreach($items as $value=>$descr) {
$sel = '';
- if ((string)$selected_id === (string)$value) {
+ if (in_array((string)$value, $selected_id)) {
$sel = 'selected';
$found = $value;
}
}
if ($found === false) {
- $selected_id = $first_id;
+ $selected_id[] = $first_id;
}
- $_POST[$name] = $selected_id;
-
- $selector = "<select $disabled name='$name' class='combo' title='"
+ $_POST[$name] = $multi ? $selected_id : $selected_id[0];
+ $selector = "<select ".($multi ? "multiple" : '')
+ . ($opts['height']!==false ? ' size="'.$opts['height'].'"' : '')
+ . "$disabled name='$name".($multi ? '[]' : '')."' class='combo' title='"
. $opts['sel_hint']."'>".$selector."</select>\n";
$Ajax->addUpdate($name, "_{$name}_sel", $selector);
return combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
array(
'format' => '_format_add_curr',
+ 'order' => array('supp_ref'),
'search_box' => $mode!=0,
'type' => 1,
'spec_option' => $spec_option === true ? _("All Suppliers") : $spec_option,
return combo_input($name, $selected_id, $sql, 'debtor_no', 'name',
array(
'format' => '_format_add_curr',
+ 'order' => array('debtor_ref'),
'search_box' => $mode!=0,
'type' => 1,
'size' => 20,
return combo_input($name, $selected_id, $sql, 'branch_code', 'br_name',
array(
'where' => $where,
+ 'order' => array('branch_ref'),
'spec_option' => $spec_option === true ? _('All branches') : $spec_option,
'spec_id' => $all_items,
'select_submit'=> $submit_on_change,
return combo_input($name, $selected_id, $sql, 'id', 'name',
array(
'spec_option' => $none_option,
- 'spec_id' => reserved_words::get_all_numeric(),
+ 'spec_id' => ALL_NUMERIC,
'select_submit'=> $submit_on_change,
'async' => false,
) );
array(
'order' => 'id',
'spec_option' => $none_option,
- 'spec_id' => reserved_words::get_all_numeric(),
+ 'spec_id' => ALL_NUMERIC,
'select_submit'=> $submit_on_change,
'async' => false,
) );
function shippers_list($name, $selected_id=null)
{
$sql = "SELECT shipper_id, shipper_name, inactive FROM ".TB_PREF."shippers";
- combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name', array());
+ combo_input($name, $selected_id, $sql, 'shipper_id', 'shipper_name',
+ array('order'=>array('shipper_name')));
}
function shippers_list_cells($label, $name, $selected_id=null)
function sales_persons_list($name, $selected_id=null)
{
$sql = "SELECT salesman_code, salesman_name, inactive FROM ".TB_PREF."salesman";
- combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name', array());
+ combo_input($name, $selected_id, $sql, 'salesman_code', 'salesman_name',
+ array('order'=>array('salesman_name')));
}
function sales_persons_list_cells($label, $name, $selected_id=null)
'async' => true,
'spec_option' =>$spec_option,
'spec_id' => -1,
+ 'order'=> array('pos_name')
) );
echo "</td></tr>\n";
$cells=false, $all_option=false, $submit_on_change=false, $all=false)
{
if ($skip_bank_accounts)
- $sql = "SELECT chart.account_code, chart.account_name, type.name, chart.inactive
+ $sql = "SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
FROM (".TB_PREF."chart_master chart,".TB_PREF."chart_types type) "
."LEFT JOIN ".TB_PREF."bank_accounts acc "
."ON chart.account_code=acc.account_code
WHERE acc.account_code IS NULL
AND chart.account_type=type.id";
else
- $sql = "SELECT chart.account_code, chart.account_name, type.name, chart.inactive
+ $sql = "SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
FROM ".TB_PREF."chart_master chart,".TB_PREF."chart_types type
WHERE chart.account_type=type.id";
'format' => '_format_account',
'spec_option' => $all_option===true ? _("Use Item Sales Accounts") : $all_option,
'spec_id' => '',
- 'order' => array('name','account_code'),
+ 'order' => array('type.id','account_code'),
'search_box' => $cells,
'search_submit' => false,
'size' => 12,
foreach ($installed_languages as $lang)
$items[$lang['code']] = $lang['name'];
- return array_selector($name, $selected_id, $items );
+ return array_selector($name, $selected_id, $items);
}
function languages_list_cells($label, $name, $selected_id=null)
function bank_account_types_list($name, $selected_id=null)
{
- $types = bank_account_types::get_all();
+ global $bank_account_types;
- $items = array();
- foreach ($types as $type)
- {
- $items[$type['id']] = $type['name'];
- }
-
- return array_selector($name, $selected_id, $items );
+ return array_selector($name, $selected_id, $bank_account_types);
}
function bank_account_types_list_cells($label, $name, $selected_id=null)
//------------------------------------------------------------------------------------------------
function payment_person_types_list($name, $selected_id=null, $submit_on_change=false)
{
- $types = payment_person_types::get_all();
+ global $payment_person_types;
$items = array();
- foreach ($types as $type)
+ foreach ($payment_person_types as $key=>$type)
{
- if (payment_person_types::has_items($type['id']))
- {
- if ($type['id'] != payment_person_types::WorkOrder())
- $items[$type['id']] = $type['name'];
- }
- }
-
+ if ($key != PT_WORKORDER)
+ $items[$key] = $type;
+ }
return array_selector($name, $selected_id, $items,
array( 'select_submit'=> $submit_on_change ) );
}
function wo_types_list($name, $selected_id=null)
{
- $types = wo_types::get_all();
-
- $items = array();
- foreach ($types as $type)
- $items[$type['id']] = $type['name'];
+ global $wo_types_array;
- return array_selector($name, $selected_id, $items,
+ return array_selector($name, $selected_id, $wo_types_array,
array( 'select_submit'=> true, 'async' => true ) );
}
echo "</td></tr>\n";
}
-function security_headings_list_row($label, $name, $value=null)
-{
- global $security_headings;
-
- echo "<tr><td>$label</td>\n<td>";
- array_selector( $name, $value, $security_headings );
- echo "</td></tr>\n";
-}
-
function systypes_list_cells($label, $name, $value=null, $submit_on_change=false)
{
global $systypes_array;
if ($label != null)
echo "<td>$label</td>\n";
echo "<td>";
-
- $items = array();
- foreach ($systypes_array as $key=>$type)
- $items[$key] = $type['name'];
- $str = array_selector($name, $value, $items,
+ $str = array_selector($name, $value, $systypes_array,
array(
'select_submit'=> $submit_on_change,
- 'async' => false
+ 'async' => false,
+ 'default' => 0
)
);
echo "</td>\n";
echo "<td>$label</td>\n";
echo "<td>";
- $items = array();
- foreach ($systypes_array as $key=>$type)
- // exclude orders and dimensions
- if (!in_array($key, array(18,26,30,40)))
- $items[$key] = $type['name'];
+ $items = $systypes_array;
+
+ // exclude quotes, orders and dimensions
+ foreach (array(ST_PURCHORDER, ST_WORKORDER, ST_SALESORDER, ST_DIMENSION,
+ ST_SALESQUOTE) as $excl)
+ unset($items[$excl]);
$str = array_selector($name, $value, $items,
array(
return array_selector($name, $selected, $items,
array( 'spec_option' => $no_option,
- 'spec_id' => reserved_words::get_all_numeric()) );
+ 'spec_id' => ALL_NUMERIC) );
}
function number_list_cells($label, $name, $selected, $from, $to, $no_option=false)
return $str;
}
+function tab_list_row($label, $name, $selected_id=null, $all = false)
+{
+ global $installed_extensions;
+
+ $tabs = array();
+ foreach ($_SESSION['App']->applications as $app) {
+ $tabs[$app->id] = access_string($app->name, true);
+ }
+ if ($all) { // add also not active ext. modules
+ foreach ($installed_extensions as $ext) {
+ if ($ext['type'] == 'module' && !$ext['active'])
+ $tabs[$ext['tab']] = access_string($ext['title'], true);
+ }
+ }
+ echo "<tr>\n";
+ echo "<td>$label</td><td>\n";
+ array_selector($name, $selected_id, $tabs);
+ echo "</td></tr>\n";
+}
+
+//-----------------------------------------------------------------------------------------------
+
+function tag_list($name, $height, $type, $multi=false, $all=false)
+{
+ // Get tags
+ global $path_to_root;
+ include_once($path_to_root . "/admin/db/tags_db.inc");
+ $results = get_tags($type,$all);
+
+ while ($tag = db_fetch($results))
+ $tags[$tag['id']] = $tag['name'];
+
+ if (!isset($tags)) {
+ $tags[''] = _("No ".($all?"":"active ")."tags defined.");
+ }
+ return array_selector($name, null, $tags,
+ array(
+ 'multi' => $multi,
+ 'height' => $height,
+ ) );
+}
+
+function tag_list_cells($label, $name, $height, $type, $mult=false, $all=false)
+{
+ if ($label != null)
+ echo "<td>$label</td>\n";
+ echo "<td>\n";
+ tag_list($name, $height, $type, $mult, $all);
+ echo "</td>\n";
+
+}
+
+function tag_list_row($label, $name, $height, $type, $mult=false, $all=false)
+{
+ echo "<tr>\n";
+ tag_list_cells($label, $name, $height, $type, $mult, $all);
+ echo "</tr>\n";
+}
+
+//---------------------------------------------------------------------------------------------
+// List of sets of active extensions
+//
+function extset_list($name, $value=null, $submit_on_change=false)
+{
+ global $db_connections;
+
+ $items = array();
+ foreach ($db_connections as $comp)
+ $items[] = sprintf(_("Activated for '%s'"), $comp['name']);
+ array_selector( $name, $value, $items,
+ array(
+ 'spec_option'=> _("Installed on system"),
+ 'spec_id' => -1,
+ 'select_submit'=> $submit_on_change,
+ 'async' => true
+ ));
+}
?>
\ No newline at end of file