00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 class HtmlInput
00054 {
00055
00056 var $type;
00057 var $name;
00058 var $value;
00059 var $readOnly;
00060 var $size;
00061 var $selected;
00062 var $table;
00063 var $label;
00064 var $disabled;
00065 var $extra;
00066 var $extra2;
00067
00068 var $javascript;
00069 var $ctrl;
00070
00071 var $tabindex;
00072 function __construct($p_name="",$p_value="",$p_id="")
00073 {
00074 $this->name=$p_name;
00075 $this->readOnly=false;
00076 $this->size=20;
00077 $this->width=50;
00078 $this->heigh=20;
00079 $this->value=$p_value;
00080 $this->selected="";
00081 $this->table=0;
00082 $this->disabled=false;
00083 $this->javascript="";
00084 $this->extra2="all";
00085 $this->attribute=array();
00086 $this->id=$p_id;
00087
00088 }
00089 function setReadOnly($p_read)
00090 {
00091 $this->readOnly=$p_read;
00092 }
00093
00094
00095
00096
00097 public function set_attribute($p_name,$p_value)
00098 {
00099 $this->attribute[]=array($p_name,$p_value);
00100 $this->$p_name=$p_value;
00101 }
00102
00103
00104
00105
00106
00107
00108 public function get_js_attr()
00109 {
00110 require_once('function_javascript.php');
00111 $attr="";
00112 if ( count($this->attribute) == 0) return "";
00113
00114
00115 for ($i=0;$i< count($this->attribute);$i++)
00116 {
00117 list($name,$value)=$this->attribute[$i];
00118 $tmp1=sprintf("$('%s').%s='%s';",
00119 $this->name,
00120 $name,
00121 $value);
00122 $attr.=$tmp1;
00123 }
00124 $attr=create_script($attr);
00125 return $attr;
00126 }
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 public function make_object($p_name=null)
00147 {
00148 $name=($p_name != null)?$p_name.'=':'';
00149 if ( count($this->attribute) == 0) return $name."{}";
00150 $ret=$name."{";
00151 $and='';
00152
00153 for ($i=0;$i< count($this->attribute);$i++)
00154 {
00155 list($name,$value)=$this->attribute[$i];
00156 $tmp1=sprintf($and."'%s':'%s'",
00157 $name,
00158 $value);
00159 $ret.=$tmp1;
00160 $and=',';
00161 }
00162
00163 $ret.='}';
00164 return $ret;
00165 }
00166
00167
00168
00169 function debug()
00170 {
00171 echo "Type ".$this->type."<br>";
00172 echo "name ".$this->name."<br>";
00173 echo "value". $this->value."<br>";
00174 $readonly=($this->readonly==false)?"false":"true";
00175 echo "read only".$readonly."<br>";
00176 }
00177 static function submit ($p_name,$p_value,$p_javascript="",$p_class="smallbutton")
00178 {
00179
00180 return '<INPUT TYPE="SUBMIT" class="'.$p_class.'" NAME="'.$p_name.'" ID="'.$p_name.'_submit_id" VALUE="'.$p_value.'" '.$p_javascript.'>';
00181 }
00182 static function button ($p_name,$p_value,$p_javascript="",$p_class="smallbutton")
00183 {
00184
00185 return '<INPUT TYPE="button" class="'.$p_class.'" NAME="'.$p_name.'" ID="'.$p_name.'" VALUE="'.$p_value.'" '.$p_javascript.'>';
00186 }
00187
00188 static function reset ($p_value)
00189 {
00190 return '<INPUT TYPE="RESET" class="smallbutton" VALUE="'.$p_value.'">';
00191 }
00192 static function hidden($p_name,$p_value,$p_id="")
00193 {
00194 if ($p_id=="") $p_id=$p_name;
00195 return '<INPUT TYPE="hidden" id="'.$p_id.'" NAME="'.$p_name.'" VALUE="'.$p_value.'">';
00196 }
00197
00198 static function extension()
00199 {
00200 return self::hidden('plugin_code',$_REQUEST['plugin_code']);
00201 }
00202
00203
00204
00205
00206
00207
00208
00209
00210 static function button_anchor($p_label,$p_value,$p_name="",$p_javascript="",$p_class="button")
00211 {
00212 $r=sprintf('<span id="%s" > <A class="'.$p_class.'" style="display:inline;" href="%s" %s >%s</A></span>',
00213 $p_name,
00214 $p_value,
00215 $p_javascript,
00216 $p_label);
00217 return $r;
00218 }
00219 static function infobulle($p_comment)
00220 {
00221 $r='<A HREF="#" tabindex="-1" style="display:inline;color:black;background-color:yellow;padding-left:4px;width:2em;padding-right:4px;text-decoration:none;" onmouseover="showBulle(\''.$p_comment.'\')" onclick="showBulle(\''.$p_comment.'\')" onmouseout="hideBulle(0)">?</A>';
00222 return $r;
00223 }
00224 static function warnbulle($p_comment)
00225 {
00226 $r='<A HREF="#" tabindex="-1" style="display:inline;color:red;background-color:white;padding-left:4px;padding-right:4px;text-decoration:none;" onmouseover="showBulle(\''.$p_comment.'\')" onclick="showBulle(\''.$p_comment.'\')" onmouseout="hideBulle(0)">Δ</A>';
00227 return $r;
00228 }
00229
00230
00231
00232 static function detail_op($p_jr_id,$p_mesg)
00233 {
00234 return sprintf('<A class="detail" style="text-decoration:underline;display:inline" HREF="javascript:modifyOperation(%d,%d)">%s</A>',
00235 $p_jr_id,dossier::id(),$p_mesg);
00236 }
00237
00238
00239
00240
00241
00242
00243
00244 static function detail_action($ag_id,$p_mesg,$p_modify=1)
00245 {
00246 return sprintf('<A class="detail" style="text-decoration:underline;display:inline" HREF="javascript:view_action(%d,%d,%d)">%s</A>',
00247 $ag_id,dossier::id(),$p_modify,$p_mesg);
00248 }
00249
00250
00251
00252 static function detail_modele_document($p_id,$p_mesg)
00253 {
00254 return sprintf('<A class="detail" style="text-decoration:underline" HREF="javascript:modifyModeleDocument(%d,%d)">%s</A>',
00255 $p_id,dossier::id(),$p_mesg);
00256 }
00257
00258
00259
00260
00261 static function remove_stock($p_id,$p_mesg)
00262 {
00263 return sprintf('<A class="detail" style="text-decoration:underline" HREF="javascript:removeStock(%d,%d)">%s</A>',
00264 $p_id,dossier::id(),$p_mesg);
00265 }
00266
00267
00268
00269
00270 static function history_card($f_id,$p_mesg,$p_style="")
00271 {
00272 $view_history= sprintf('<A class="detail" style="text-decoration:underline;%s" HREF="javascript:view_history_card(\'%s\',\'%s\')" >%s</A>',
00273 $p_style,$f_id, dossier::id(), $p_mesg);
00274 return $view_history;
00275 }
00276
00277
00278
00279 static function history_card_button($f_id,$p_mesg)
00280 {
00281 static $e=0;
00282 $e++;
00283 $js= sprintf('onclick="view_history_card(\'%s\',\'%s\')"',
00284 $f_id, dossier::id());
00285 $view_history=HtmlInput::button("hcb"+$e,$p_mesg,$js);
00286 return $view_history;
00287 }
00288
00289
00290
00291
00292 static function history_account($p_account,$p_mesg,$p_style="")
00293 {
00294 $view_history= sprintf('<A class="detail" style="text-decoration:underline;%s" HREF="javascript:view_history_account(\'%s\',\'%s\')" >%s</A>',
00295 $p_style,$p_account, dossier::id(), $p_mesg);
00296 return $view_history;
00297 }
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 static function select_ledger($p_type,$p_selected,$div='')
00308 {
00309 global $g_user;
00310 $r = '';
00311
00312 $p_array = $g_user->get_ledger($p_type, 3);
00313
00314 ob_start();
00315
00316
00317
00318 echo '<div id="div_jrn'.$div.'" >';
00319 echo HtmlInput::title_box(_("Journaux"), $div."jrn_search");
00320 echo '<div style="padding:5px">';
00321 echo '<form method="GET" id="'.$div.'search_frm" onsubmit="return hide_ledger_choice(\''.$div.'search_frm\')">';
00322 echo HtmlInput::hidden('nb_jrn', count($p_array));
00323 echo _('Filtre ').HtmlInput::filter_table($div.'tb_jrn', '0,1,2', 1);
00324 echo '<table class="result" id="'.$div.'tb_jrn">';
00325 echo '<tr>';
00326 echo th(_('Nom'));
00327 echo th(_('Description'));
00328 echo th(_('Type'));
00329 echo '</tr>';
00330
00331 for ($e=0;$e<count($p_array);$e++)
00332 {
00333 $row=$p_array[$e];
00334 $r=new ICheckBox($div.'r_jrn'.$e,$row['jrn_def_id']);
00335 $idx=$row['jrn_def_id'];
00336 if ( $p_selected != null && in_array($row['jrn_def_id'],$p_selected))
00337 {
00338 $r->selected=true;
00339 }
00340 $class=($e%2==0)?' class="even" ':' class="odd" ';
00341 echo '<tr '.$class.'>';
00342 echo '<td style="white-space: nowrap">'.$r->input().$row['jrn_def_name'].'</td>';
00343 echo '<td >'.$row['jrn_def_description'].'</td>';
00344 echo '<td >'.$row['jrn_def_type'].'</td>';
00345 echo '</tr>';
00346
00347 }
00348 echo '</table>';
00349 echo HtmlInput::hidden('div',$div);
00350 echo HtmlInput::submit('save',_('Valider'));
00351 echo HtmlInput::button_close($div."jrn_search");
00352 echo '</form>';
00353 echo '</div>';
00354 echo '</div>';
00355 $ret=ob_get_contents();
00356 ob_end_clean();
00357 return $ret;
00358 }
00359
00360
00361
00362
00363 static function select_cat($array_cat)
00364 {
00365 ob_start();
00366 $ledger=new ISmallButton('l');
00367 $ledger->label=_("Catégorie");
00368 $ledger->javascript=" show_cat_choice()";
00369 echo $ledger->input();
00370
00371
00372 echo '<div id="div_cat">';
00373 echo '<h2 class="info">'._('Choix des categories').'</h2>';
00374 $selected=(isset($_GET['r_cat']))?$_GET['r_cat']:null;
00375
00376 echo '<ul>';
00377 for ($e=0;$e<count($array_cat);$e++)
00378 {
00379 $row=$array_cat[$e];
00380 $re=new ICheckBox('r_cat['.$e.']',$row['cat']);
00381
00382 if ( $selected != null && isset($selected[$e]))
00383 {
00384 $re->selected=true;
00385 }
00386 echo '<li style="list-style-type: none;">'.$re->input().$row['name'].'('.$row['cat'].')</li>';
00387
00388 }
00389 echo '</ul>';
00390 $hide=new IButton('l');
00391 $hide->label=_("Valider");
00392 $hide->javascript=" hide_cat_choice() ";
00393 echo $hide->input();
00394
00395 echo '</div>';
00396 $r=ob_get_contents();
00397 ob_end_clean();
00398 return $r;
00399 }
00400 static function display_periode($p_id)
00401 {
00402 $r=sprintf('<a href="javascript:void(0)" onclick="display_periode(%d,%d)">Modifier</a>',
00403 dossier::id(),
00404 $p_id);
00405 return $r;
00406 }
00407
00408
00409
00410
00411
00412 static function button_close($div_name)
00413 {
00414 $a=new IButton('Fermer',_('Fermer'));
00415 $a->label=_("Fermer");
00416 $a->javascript="removeDiv('".$div_name."')";
00417 $html=$a->input();
00418
00419 return $html;
00420
00421 }
00422
00423
00424
00425
00426 static function anchor_close($div)
00427 {
00428 $r='';
00429 $r.='<div style="float:right;margin-right:2px;margin-top:5px;padding:0px;">';
00430 $r.= '<A id="close_div" class="input_text" HREF="javascript:void(0)" onclick="removeDiv(\''.$div.'\');">'._('Fermer').'</A>';
00431 $r.='</div>';
00432 return $r;
00433 }
00434
00435
00436
00437
00438
00439 static function button_action($action,$javascript,$id="xx",$p_class="button")
00440 {
00441 if ($id=="xx"){
00442 $id=HtmlInput::generate_id("xx");
00443 }
00444 $r="";
00445 $r.='<input type="button" id="'.$id.'" class="'.$p_class.'" onclick="'.$javascript.'" value="'.h($action).'">';
00446 return $r;
00447
00448 }
00449
00450
00451
00452
00453
00454
00455
00456 static function anchor_hide($action,$javascript)
00457 {
00458 $r='';
00459 $r.='<div style="float:right;margin:2px;">';
00460 $r.= '<span id="close_div" class="input_text" onclick="'.$javascript.'">'.$action.'</span>';
00461 $r.='</div>';
00462 return $r;
00463 }
00464
00465
00466
00467
00468 static function print_window()
00469 {
00470 $r='';
00471 $r.=HtmlInput::button('print','Imprimer','onclick="window.print();"');
00472 return $r;
00473 }
00474
00475
00476
00477 static function card_detail($p_qcode,$pname='',$p_style="",$p_nohistory=false)
00478 {
00479 //if ($pname=='')$pname=$p_qcode;
00480 $r="";
00481 $histo=($p_nohistory==true)?' ,nohistory:1':"";
00482 $r.=sprintf('<a href="javascript:void(0)" %s onclick="fill_ipopcard({qcode:\'%s\' %s})">%s [%s]</a>',
00483 $p_style,$p_qcode,$histo,$pname,$p_qcode);
00484 return $r;
00485 }
00486
00487
00488
00489
00490
00491
00492 static function array_to_hidden($array,$global_array )
00493 {
00494
00495 $r="";
00496
00497 if ( count($global_array )==0) return '';
00498 foreach ($array as $a)
00499 {
00500 if (isset($global_array [$a]))
00501 if (is_array($global_array[$a]) == false ) {
00502 $r.=HtmlInput::hidden($a,$global_array [$a]);
00503 } else {
00504 if (count($global_array[$a]) > 0)
00505 {
00506 foreach ($global_array[$a] as $value)
00507 {
00508 $r.=HtmlInput::hidden($a."[]",$value);
00509 }
00510 }
00511 }
00512 }
00513
00514 return $r;
00515 }
00516
00517
00518
00519
00520
00521
00522 static function get_to_hidden($array)
00523 {
00524 $r=self::array_to_hidden($array,$_GET );
00525 return $r;
00526 }
00527
00528
00529
00530
00531
00532
00533
00534 static function post_to_hidden($array)
00535 {
00536 $r=self::array_to_hidden($array,$_POST );
00537 return $r;
00538 }
00539
00540
00541
00542
00543
00544
00545
00546 static function request_to_hidden($array)
00547 {
00548 $r=self::array_to_hidden($array,$_REQUEST );
00549 return $r;
00550 }
00551
00552
00553
00554
00555
00556
00557
00558 static function array_to_string($array,$global_array,$start="?" )
00559 {
00560
00561 $r=$start;
00562
00563 if ( count($global_array )==0) return '';
00564 $and="";
00565 foreach ($array as $a)
00566 {
00567 if (isset($global_array [$a]))
00568 {
00569 if (is_array($global_array[$a]) == false ) {
00570 $r.=$and."$a=".$global_array [$a];
00571 } else {
00572 for ($i=0;$i<count($global_array[$a]);$i++) {
00573 $r.=$and."$a"."[]=".$global_array[$a][$i];
00574 $and="&";
00575 }
00576 }
00577 }
00578 $and="&";
00579 }
00580
00581 return $r;
00582 }
00583
00584
00585
00586
00587
00588
00589 static function get_to_string($array,$start="?")
00590 {
00591 $r=self::array_to_string($array,$_GET ,$start);
00592 return $r;
00593 }
00594
00595
00596
00597
00598
00599
00600
00601 static function post_to_string($array)
00602 {
00603 $r=self::array_to_string($array,$_POST );
00604 return $r;
00605 }
00606
00607
00608
00609
00610
00611
00612
00613 static function request_to_string($array,$start="?")
00614 {
00615 $r=self::array_to_string($array,$_REQUEST,$start );
00616 return $r;
00617 }
00618
00619
00620
00621
00622
00623
00624
00625 static function generate_id($p_prefix)
00626 {
00627 $r=sprintf('%s_%d',$p_prefix,mt_rand(0,999999));
00628 return $r;
00629 }
00630
00631
00632
00633
00634
00635
00636 static function default_value($ind,$default,$array)
00637 {
00638 if ( ! isset($array[$ind]))
00639 {
00640 return $default;
00641 }
00642 return $array[$ind];
00643 }
00644
00645
00646
00647
00648
00649
00650 static function default_value_get($ind, $default)
00651 {
00652 if (!isset($_GET[$ind]))
00653 {
00654 return $default;
00655 }
00656 return $_GET[$ind];
00657 }
00658
00659
00660
00661
00662
00663
00664 static function default_value_post($ind, $default)
00665 {
00666 if (!isset($_POST[$ind]))
00667 {
00668 return $default;
00669 }
00670 return $_POST[$ind];
00671 }
00672
00673
00674
00675
00676
00677
00678 static function default_value_request($ind, $default)
00679 {
00680 if (!isset($_REQUEST[$ind]))
00681 {
00682 return $default;
00683 }
00684 return $_REQUEST[$ind];
00685 }
00686 static function title_box($name,$div,$mod="close")
00687 {
00688 if ($mod=='close') $r=HtmlInput::anchor_close($div);
00689 if ($mod=='hide') $r=HtmlInput::anchor_hide(_('Fermer'),"$('$div').hide()");
00690 if ( $mod == 'none') $r="";
00691 $r.=h2($name,' class="title" ');
00692 return $r;
00693 }
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703 static function anchor($p_text,$p_url="",$p_js="")
00704 {
00705 if ($p_js != "")
00706 {
00707 $p_url="javascript:void(0)";
00708 }
00709
00710
00711 $str=sprintf('<a class="line" href="%s" %s>%s</a>',
00712 $p_url,$p_js,$p_text);
00713 return $str;
00714 }
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725 static function select_stock( $p_cn, $p_name,$p_mode)
00726 {
00727 global $g_user;
00728 if ( ! in_array($p_mode,array('R','W') ) )
00729 {
00730 throw new Exception (__FILE__.":".__LINE__." $p_mode invalide");
00731 }
00732 $profile=$g_user->get_profile();
00733 $sel=new ISelect($p_name);
00734
00735 if ($p_mode == 'W')
00736 {
00737 $sel->value=$p_cn->make_array("
00738 select r_id,r_name
00739 from stock_repository join profile_sec_repository using (r_id)
00740 where
00741 ur_right='W' and p_id=".sql_string($profile).
00742 " order by 2" );
00743 return $sel;
00744 }
00745 if ($p_mode == 'R')
00746 {
00747 $sel->value=$p_cn->make_array("
00748 select r_id,r_name
00749 from stock_repository join profile_sec_repository using (r_id)
00750 where
00751 p_id=".sql_string($profile).
00752 " order by 2" );
00753 return $sel;
00754 }
00755 }
00756 static function filter_table($p_table_id,$p_col,$start_row)
00757 {
00758 $r= "
00759 <span>
00760 <input id=\"lk_".$p_table_id."\" autocomplete=\"off\" class=\"input_text\" name=\"filter\" onkeyup=\"filter_table(this, '$p_table_id','$p_col',$start_row )\" type=\"text\">
00761 <input type=\"button\" class=\"smallbutton\" onclick=\"$('lk_".$p_table_id."').value='';filter_table($('lk_".$p_table_id."'), '$p_table_id','$p_col',$start_row );\" value=\"X\">
00762 </span>
00763 ";
00764 return $r;
00765 }
00766
00767 static function show_reconcile($p_div, $let,$span="")
00768 {
00769 $r = '<A style="color:red;text-decoration:underline" href="javascript:void(0)" onclick="show_reconcile(\'' . $p_div . '\',\'' . $let . '\')">' . $let.$span . '</A>';
00770 return $r;
00771 }
00772
00773
00774
00775
00776
00777 static function calendar_zoom($obj)
00778 {
00779 $button=new ISmallButton("calendar", _("Calendrier"));
00780 $button->javascript="calendar_zoom($obj)";
00781 return $button->input();
00782 }
00783
00784
00785
00786
00787
00788
00789
00790
00791 static function button_choice_ledger($p_array)
00792 {
00793 extract ($p_array);
00794 $bledger_param = json_encode(array(
00795 'dossier' => $_REQUEST['gDossier'],
00796 'type' => $type,
00797 'all_type' => $all_type,
00798 'div' => $div,
00799 'class'=>'inner_box'
00800 ));
00801
00802 $bledger_param = str_replace('"', "'", $bledger_param);
00803 $bledger = new ISmallButton('l');
00804 $bledger->label = _("choix des journaux");
00805 $bledger->javascript = " show_ledger_choice($bledger_param)";
00806 $f_ledger = $bledger->input();
00807 $hid_jrn = "";
00808 if (isset($_REQUEST[$div . 'nb_jrn']))
00809 {
00810 for ($i = 0; $i < $_REQUEST[$div . 'nb_jrn']; $i++)
00811 {
00812 if (isset($_REQUEST[$div . "r_jrn"][$i]))
00813 $hid_jrn.=HtmlInput::hidden($div . 'r_jrn[' . $i . ']', $_REQUEST[$div . "r_jrn"][$i]);
00814 }
00815 $hid_jrn.=HtmlInput::hidden($div . 'nb_jrn', $_REQUEST[$div . 'nb_jrn']);
00816 } else
00817 {
00818 $hid_jrn = HtmlInput::hidden($div . 'nb_jrn', 0);
00819 }
00820 echo $f_ledger;
00821 echo '<span id="ledger_id' . $div . '">';
00822 echo $hid_jrn;
00823 echo '</span>';
00824 }
00825
00826 }