Merging changes form main trunk 2.2.5-2.2.6
[fa-stable.git] / includes / ui / ui_input.inc
index 558460e5325d211757adcdbc77e6a79351c4e658..13d39e63612d7525d132f834ab0ac7167c89571e 100644 (file)
@@ -47,11 +47,12 @@ function simple_page_mode($numeric_id = true)
 
        $default = $numeric_id ? -1 : '';
        $selected_id = get_post('selected_id', $default);
-       foreach (array('ADD_ITEM', 'UPDATE_ITEM', 'RESET') as $m) {
+       foreach (array('ADD_ITEM', 'UPDATE_ITEM', 'RESET', 'CLONE') as $m) {
                if (isset($_POST[$m])) {
                        $Ajax->activate('_page_body');
-                       if ($m == 'RESET') 
+                       if ($m == 'RESET'  || $m == 'CLONE'
                                $selected_id = $default;
+                       unset($_POST['_focus']);
                        $Mode = $m; return;
                }
        }
@@ -74,7 +75,7 @@ function simple_page_mode($numeric_id = true)
 //
 //     Read numeric value from user formatted input
 //
-function input_num($postname=null, $dflt=null)
+function input_num($postname=null, $dflt=0)
 {
        if (!isset($_POST[$postname]) || $_POST[$postname] == "")
                return $dflt;
@@ -135,7 +136,6 @@ function submit($name, $value, $echo=true, $title=false, $atype=false, $icon=fal
                                " aspect='fallback'" : " style='display:none;'"; break;
         }
 
-       default_focus($name);
        $submit_str = "<button class=\""
            .($atype ? 'ajaxsubmit' : 'inputsubmit')
                ."\" type=\"submit\""
@@ -154,9 +154,9 @@ function submit($name, $value, $echo=true, $title=false, $atype=false, $icon=fal
 
 function submit_center($name, $value, $echo=true, $title=false, $async=false, $icon=false)
 {
-       echo "<center>";
+       if ($echo) echo "<center>";
        submit($name, $value, $echo, $title, $async, $icon);
-       echo "</center>";
+       if ($echo) echo "</center>";
 }
 
 function submit_center_first($name, $value, $title=false, $async=false, $icon=false)
@@ -177,7 +177,7 @@ function submit_center_last($name, $value, $title=false, $async=false, $icon=fal
        'both' - use both Ctrl-Enter and Escape hotkeys 
        'cancel' - apply to 'RESET' button
 */
-function submit_add_or_update($add=true, $title=false, $async=false)
+function submit_add_or_update($add=true, $title=false, $async=false, $clone=false)
 {
        $cancel = $async;
 
@@ -192,25 +192,27 @@ function submit_add_or_update($add=true, $title=false, $async=false)
        if ($add)
                submit('ADD_ITEM', _("Add new"), true, $title, $async);
        else {
-               submit('UPDATE_ITEM', _("Update"), true, $title, $async);
-               submit('RESET', _("Cancel"), true, $title, $cancel);
+               submit('UPDATE_ITEM', _("Update"), true, _('Submit changes'), $async);
+               if ($clone) submit('CLONE', _("Clone"), true, 
+                       _('Edit new record with current data'), $async);
+               submit('RESET', _("Cancel"), true, _('Cancel edition'), $cancel);
        }
 }
 
-function submit_add_or_update_center($add=true, $title=false, $async=false)
+function submit_add_or_update_center($add=true, $title=false, $async=false, $clone=false)
 {
        echo "<center>";
-       submit_add_or_update($add, $title, $async);
+       submit_add_or_update($add, $title, $async, $clone);
        echo "</center>";
 }
 
-function submit_add_or_update_row($add=true, $right=true, $extra="", $title=false, $async=false)
+function submit_add_or_update_row($add=true, $right=true, $extra="", $title=false, $async=false, $clone = false)
 {
        echo "<tr>";
        if ($right)
                echo "<td>&nbsp;</td>\n";
        echo "<td $extra>";
-       submit_add_or_update($add, $title, $async);
+       submit_add_or_update($add, $title, $async, $clone);
        echo "</td></tr>\n";
 }
 
@@ -239,7 +241,8 @@ function submit_return($name, $value, $title=false)
 
 function submit_js_confirm($name, $msg) {
        add_js_source(
-               "_validate.$name=function(){ return confirm('$msg');};");
+               "_validate.$name=function(){ return confirm('"
+                       . strtr($msg, array("\n"=>'\\n')) . "');};");
 };
 //-----------------------------------------------------------------------------------
 
@@ -314,7 +317,7 @@ function checkbox($label, $name, $value=null, $submit_on_change=false, $title=fa
        global $Ajax;
 
        $str = '';      
-       default_focus($name);
+
        if ($label)
                $str .= $label . "  ";
        if ($submit_on_change !== false) {
@@ -341,7 +344,7 @@ function check($label, $name, $value=null, $submit_on_change=false, $title=false
        echo checkbox($label, $name, $value, $submit_on_change, $title);
 }
 
-function check_cells($label, $name, $value, $submit_on_change=false, $title=false,
+function check_cells($label, $name, $value=null, $submit_on_change=false, $title=false,
        $params='')
 {
        if ($label != null)
@@ -351,10 +354,10 @@ function check_cells($label, $name, $value, $submit_on_change=false, $title=fals
        echo "</td>";
 }
 
-function check_row($label, $name, $value, $submit_on_change=false, $title=false)
+function check_row($label, $name, $value=null, $submit_on_change=false, $title=false)
 {
-       echo "<tr>";
-       echo check_cells($label, $name, $value, $submit_on_change, $title);
+       echo "<tr><td class='label'>$label</td>";
+       echo check_cells(NULL, $name, $value, $submit_on_change, $title);
        echo "</tr>\n";
 }
 
@@ -384,6 +387,12 @@ function email_cell($label, $params="", $id=null)
        label_cell("<a href='mailto:$label'>$label</a>", $params, $id);
 }
 
+function amount_decimal_cell($label, $params="", $id=null)
+{
+       $dec = 0;
+       label_cell(price_decimal_format($label, $dec), "nowrap align=right ".$params, $id);
+}
+
 function amount_cell($label, $bold=false, $params="", $id=null)
 {
        if ($bold)
@@ -392,6 +401,16 @@ function amount_cell($label, $bold=false, $params="", $id=null)
                label_cell(price_format($label), "nowrap align=right ".$params, $id);
 }
 
+//JAM  Allow entered unit prices to be fractional
+function unit_amount_cell($label, $bold=false, $params="", $id=null)
+{
+       if ($bold)
+               label_cell("<b>".unit_price_format($label)."</b>", "nowrap align=right ".$params, $id);
+       else
+               label_cell(unit_price_format($label), "nowrap align=right ".$params, $id);
+}
+
+
 function percent_cell($label, $bold=false, $id=null)
 {
        if ($bold)
@@ -420,6 +439,11 @@ function label_cells($label, $value, $params="", $params2="", $id='')
 function label_row($label, $value, $params="", $params2="", $leftfill=0, $id='')
 {
        echo "<tr>";
+       if ($params == "")
+       {
+               echo "<td class='label'>$label</td>";
+               $label = null;
+       }       
        label_cells($label, $value, $params, $params2, $id);
        if ($leftfill!=0)
                echo "<td colspan=$leftfill></td>";
@@ -484,9 +508,8 @@ function text_cells_ex($label, $name, $size, $max=null, $init=null, $title=null,
 
 function text_row($label, $name, $value, $size, $max, $title=null, $params="", $post_label="")
 {
-       echo "<tr>";
-
-       text_cells($label, $name, $value, $size, $max, $title, $params, $post_label);
+       echo "<tr><td class='label'>$label</td>";
+       text_cells(null, $name, $value, $size, $max, $title, $params, $post_label);
 
        echo "</tr>\n";
 }
@@ -495,9 +518,8 @@ function text_row($label, $name, $value, $size, $max, $title=null, $params="", $
 
 function text_row_ex($label, $name, $size, $max=null, $title=null, $value=null, $params=null, $post_label=null)
 {
-       echo "<tr>";
-
-       text_cells_ex($label, $name, $size, $max, $value, $title, $params, $post_label);
+       echo "<tr><td class='label'>$label</td>";
+       text_cells_ex(null, $name, $size, $max, $value, $title, $params, $post_label);
 
        echo "</tr>\n";
 }
@@ -583,6 +605,8 @@ function date_cells($label, $name, $title = null, $check=null, $inc_days=0,
        if ($check && (get_post($name) != Today()))
                $aspect .= ' style="color:#FF0000"';
 
+       default_focus($name);
+
        echo "<input type=\"text\" name=\"$name\" $class $aspect size=\"9\" maxlength=\"12\" value=\"" 
         . $_POST[$name]. "\""
         .($title ? " title='$title'": '')." > $post_label";
@@ -593,12 +617,34 @@ function date_cells($label, $name, $title = null, $check=null, $inc_days=0,
 function date_row($label, $name, $title=null, $check=null, $inc_days=0, $inc_months=0, 
        $inc_years=0, $params=null, $submit_on_change=false)
 {
-       echo "<tr>";
-       date_cells($label, $name, $title, $check, $inc_days, $inc_months, 
+       echo "<tr><td class='label'>$label</td>";
+       date_cells(null, $name, $title, $check, $inc_days, $inc_months, 
                $inc_years, $params, $submit_on_change);
        echo "</tr>\n";
 }
 
+//-----------------------------------------------------------------------------------
+function password_row($label, $name, $value)
+{
+       echo "<tr><td class='label'>$label</td>";
+       label_cell("<input type='password' name='$name' size=20 maxlength=20 value='$value' />");
+       echo "</tr>\n";
+}      
+
+//-----------------------------------------------------------------------------------
+function file_cells($label, $name, $id="")
+{
+       if ($id != "")
+               $id = "id='$id'";
+       label_cells($label, "<input type='file' name='$name' $id />");
+}              
+function file_row($label, $name, $id = "")
+{
+       echo "<tr><td class='label'>$label</td>";
+       file_cells(null, $name, $id);
+       echo "</tr>\n";
+}      
+
 //-----------------------------------------------------------------------------------
 
 function ref_cells($label, $name, $title=null, $init=null, $params=null, $submit_on_change=false)
@@ -610,8 +656,8 @@ function ref_cells($label, $name, $title=null, $init=null, $params=null, $submit
 
 function ref_row($label, $name, $title=null, $init=null, $submit_on_change=false)
 {
-       echo "<tr>";
-       ref_cells($label, $name, $title, $init, null, $submit_on_change);
+       echo "<tr><td class='label'>$label</td>";
+       ref_cells(null, $name, $title, $init, null, $submit_on_change);
        echo "</tr>\n";
 }
 
@@ -642,8 +688,11 @@ function amount_cells_ex($label, $name, $size, $max=null, $init=null, $params=nu
                        $_POST[$name] = '';
        }
        if ($label != null)
+       {
+               if ($params == null)
+                       $params = "class='label'";
                label_cell($label, $params);
-
+       }
        if (!isset($max))
                $max = $size;
 
@@ -671,6 +720,15 @@ function amount_cells($label, $name, $init=null, $params=null, $post_label=null,
        amount_cells_ex($label, $name, 15, 15, $init, $params, $post_label, $dec);
 }
 
+//JAM  Allow entered unit prices to be fractional
+function unit_amount_cells($label, $name, $init=null, $params=null, $post_label=null, $dec=null)
+{
+       if (!isset($dec))
+               $dec = user_price_dec()+2;
+
+       amount_cells_ex($label, $name, 15, 15, $init, $params, $post_label, $dec+2);
+}
+
 function amount_row($label, $name, $init=null, $params=null, $post_label=null, $dec=null)
 {
        echo "<tr>";
@@ -750,8 +808,8 @@ function textarea_cells($label, $name, $value, $cols, $rows, $title = null, $par
 
 function textarea_row($label, $name, $value, $cols, $rows, $title=null, $params="")
 {
-       echo "<tr>";
-       textarea_cells($label, $name, $value, $cols, $rows, $title, $params);
+       echo "<tr><td class='label'>$label</td>";
+       textarea_cells(null, $name, $value, $cols, $rows, $title, $params);
        echo "</tr>\n";
 }