- Override the function __toString to comply with xdebug
- function Card_Property::input ; the build of the HtmlInput is done is a separated function Card_Property::build_input to ease the override of the input function
This commit is contained in:
parent
570e3c53a1
commit
840cd82f3b
1 changed files with 160 additions and 132 deletions
|
|
@ -56,6 +56,10 @@ class Card_Property
|
|||
$this->ad_id=0;
|
||||
$this->display_mode='window';
|
||||
}
|
||||
public function __toString(): string
|
||||
{
|
||||
return "card_property".var_export($this,true);
|
||||
}
|
||||
public function setDisplayMode($p_mode)
|
||||
{
|
||||
if ( ! in_array($p_mode,array("window","large"))) {
|
||||
|
|
@ -139,6 +143,143 @@ class Card_Property
|
|||
$this->jnt_order=$jnt_order;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief build the needed elements to display
|
||||
* @param Object Fiche_Def $p_fiche_def
|
||||
* @return array
|
||||
* - $result['msg'] message to display,
|
||||
* - $result['label'] label of the CardProperty (ad_text),
|
||||
* - $result['input' is the HtmlInput object
|
||||
* - $result['class'] is the CSS class to use
|
||||
* - $result['bulle'] is the infobulle
|
||||
*/
|
||||
public function build_input($p_fiche_def=null)
|
||||
{
|
||||
$result = ['msg' => '', 'input' => null, 'label' => '', 'class' => 'input_text','bulle'=>''];
|
||||
if ($this->ad_id == ATTR_DEF_NAME || $this->ad_id == ATTR_DEF_QUICKCODE) {
|
||||
$result['class'] = " input_text highlight info";
|
||||
}
|
||||
if ($this->ad_id == ATTR_DEF_ACCOUNT) {
|
||||
if ( $p_fiche_def == null ) {
|
||||
throw new \Exception ("CP162.p_fiche_def is null");
|
||||
}
|
||||
$result['input'] = new IPoste("av_text" . $this->ad_id);
|
||||
$result['input']->id = uniqid('accounting');
|
||||
$result['input']->set_attribute('ipopup', 'ipop_account');
|
||||
$result['input']->set_attribute('jrn', '0');
|
||||
$result['input']->set_attribute('account', "av_text" . $this->ad_id);
|
||||
$result['input']->dbl_click_history();
|
||||
$result['input']->value = $this->av_text;
|
||||
// account created automatically
|
||||
$sql = "select account_auto($p_fiche_def->id)";
|
||||
$ret_sql = $this->cn->exec_sql($sql);
|
||||
$a = Database::fetch_array($ret_sql, 0);
|
||||
$result['label'] = new ISpan();
|
||||
$result['label']->name = "av_text" . $this->ad_id . "_label";
|
||||
$p_fiche_def->load();
|
||||
if ($a['account_auto'] == 't') {
|
||||
$result['msg'] .= $result['label']->input() . " <span style=\"color:red\">" .
|
||||
_("Rappel: Poste créé automatiquement à partir de ")
|
||||
. $p_fiche_def->class_base . " </span> ";
|
||||
} else {
|
||||
// if there is a class base in fiche_def_ref, this account will be the
|
||||
// the default one
|
||||
if (strlen(trim($p_fiche_def->class_base)) != 0) {
|
||||
$result['msg'] .= " <span style=\"color:red\">" . _("Rappel: Poste par défaut sera ") .
|
||||
$p_fiche_def->class_base .
|
||||
" !</span> ";
|
||||
$result['input']->value = $p_fiche_def->class_base;
|
||||
}
|
||||
}
|
||||
$result['label']=_("Poste comptable");
|
||||
$result['class']=" highlight input_text";
|
||||
return $result;
|
||||
} elseif ($this->ad_id == ATTR_DEF_TVA) {
|
||||
$result['input'] = new ITva_Popup('popup_tva');
|
||||
$result['input']->table = 1;
|
||||
$result['input']->value = $this->av_text;
|
||||
$result['label']=$this->ad_text;
|
||||
} else {
|
||||
switch ($this->ad_type) {
|
||||
case 'text':
|
||||
$result['input'] = new IText();
|
||||
$result['input']->css_size = "100%";
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
case 'numeric':
|
||||
$result['input'] = new INum();
|
||||
$result['input']->prec = ($this->ad_extra == "") ? 2 : $this->ad_extra;
|
||||
$result['input']->size = $this->ad_size;
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
case 'date':
|
||||
$result['input'] = new IDate();
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
case 'zone':
|
||||
$result['input'] = new ITextArea();
|
||||
$result['input']->style = ' class="itextarea" style="margin:0px;width:100%"';
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
case 'poste':
|
||||
$result['input'] = new IPoste("av_text" . $this->ad_id);
|
||||
$result['input']->set_attribute('ipopup', 'ipop_account');
|
||||
$result['input']->set_attribute('account', "av_text" . $this->ad_id);
|
||||
$result['input']->table = 1;
|
||||
$bulle = Icon_Action::infobulle(14);
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
case 'check':
|
||||
$result['input'] = new InputSwitch("av_text" . $this->ad_id);
|
||||
$result['input']->value = (empty($this->av_text) ) ? 0 : 1;
|
||||
break;
|
||||
case 'select':
|
||||
$result['input'] = new ISelect("av_text" . $this->ad_id);
|
||||
$result['input']->value = $this->cn->make_array($this->ad_extra);
|
||||
$result['input']->style = 'style="width:100%"';
|
||||
$result['input']->selected = $this->av_text;
|
||||
break;
|
||||
case 'card':
|
||||
$result['input'] = new ICard("av_text" . $this->ad_id);
|
||||
// filter on frd_id
|
||||
$result['input']->extra = $this->ad_extra;
|
||||
$result['input']->extra2 = 0;
|
||||
$result['input']->id = uniqid();
|
||||
$result['label'] = new ISpan();
|
||||
$filter = $this->ad_extra;
|
||||
$result['input']->width = $this->ad_size;
|
||||
$result['input']->extra = $filter;
|
||||
$result['input']->extra2 = 0;
|
||||
$result['input']->limit = 6;
|
||||
$result['label']->name = "av_text" . $this->ad_id . $result['input']->id . "_label";
|
||||
$result['input']->set_attribute('ipopup', 'ipopcard');
|
||||
$result['input']->set_attribute('typecard', $this->ad_extra);
|
||||
$result['input']->set_attribute('inp', $result['input']->id);
|
||||
$result['input']->set_attribute('label', "av_text" . $this->ad_id . $result['input']->id . "_label");
|
||||
$result['input']->autocomplete = 1;
|
||||
$result['input']->dblclick = "fill_ipopcard(this);";
|
||||
$result['msg'] = $result['input']->search();
|
||||
$result['msg'] .= $result['label']->input();
|
||||
$result['input']->value = $this->av_text;
|
||||
break;
|
||||
}
|
||||
$result['input']->table = 0;
|
||||
$result['label']=$this->ad_text;
|
||||
}
|
||||
|
||||
$result['input']->label = $this->ad_text;
|
||||
$result['input']->name = "av_text" . $this->ad_id;
|
||||
if ($this->ad_id == 21 || $this->ad_id == 22 || $this->ad_id == 20 || $this->ad_id == 31) {
|
||||
$result['bulle'] = Icon_Action::infobulle(21);
|
||||
}
|
||||
|
||||
// Warning length quickcode
|
||||
if ($this->ad_id == ATTR_DEF_QUICKCODE) {
|
||||
$result['bulle'] = Icon_Action::warnbulle(76);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
/**
|
||||
* @brief Load all the attribute of a card , it modifies the parameter $fiche. Usually called from fiche::insert
|
||||
* and fiche::update . In the same time, it will synchronize the attributes which the database.
|
||||
|
|
@ -231,142 +372,15 @@ class Card_Property
|
|||
*/
|
||||
function input($p_fiche_def=null)
|
||||
{
|
||||
$bulle=""; $msg="";
|
||||
$r="";
|
||||
if ($this->ad_id==ATTR_DEF_ACCOUNT)
|
||||
{
|
||||
$w=new IPoste("av_text".$this->ad_id);
|
||||
$w->id=uniqid('accounting');
|
||||
$w->set_attribute('ipopup', 'ipop_account');
|
||||
$w->set_attribute('jrn', '0');
|
||||
$w->set_attribute('account', "av_text".$this->ad_id);
|
||||
$w->dbl_click_history();
|
||||
$w->value=$this->av_text;
|
||||
// account created automatically
|
||||
$sql="select account_auto($p_fiche_def->id)";
|
||||
$ret_sql=$this->cn->exec_sql($sql);
|
||||
$a=Database::fetch_array($ret_sql, 0);
|
||||
$label=new ISpan();
|
||||
$label->name="av_text".$this->ad_id."_label";
|
||||
|
||||
if ($a['account_auto']=='t')
|
||||
{
|
||||
$msg.=$label->input()." <span style=\"color:red\">".
|
||||
_("Rappel: Poste créé automatiquement à partir de ")
|
||||
.$p_fiche_def->class_base." </span> ";
|
||||
}
|
||||
else
|
||||
{
|
||||
// if there is a class base in fiche_def_ref, this account will be the
|
||||
// the default one
|
||||
if (strlen(trim($p_fiche_def->class_base))!=0)
|
||||
{
|
||||
$msg.="<TD>".$label->input()." <span style=\"color:red\">"._("Rappel: Poste par défaut sera ").
|
||||
$p_fiche_def->class_base.
|
||||
" !</span> ";
|
||||
$w->value=$p_fiche_def->class_base;
|
||||
}
|
||||
}
|
||||
$r.="<TR>".td(_("Poste Comptable"), ' class="highlight input_text" ').td($w->input().$msg)."</TR>";
|
||||
return $r;
|
||||
}
|
||||
elseif ($this->ad_id==ATTR_DEF_TVA)
|
||||
{
|
||||
$w=new ITva_Popup('popup_tva');
|
||||
$w->table=1;
|
||||
$w->value=$this->av_text;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ($this->ad_type)
|
||||
{
|
||||
case 'text':
|
||||
$w=new IText();
|
||||
$w->css_size="100%";
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
case 'numeric':
|
||||
$w=new INum();
|
||||
$w->prec=($this->ad_extra=="")?2:$this->ad_extra;
|
||||
$w->size=$this->ad_size;
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
case 'date':
|
||||
$w=new IDate();
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
case 'zone':
|
||||
$w=new ITextArea();
|
||||
$w->style=' class="itextarea" style="margin:0px;width:100%"';
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
case 'poste':
|
||||
$w=new IPoste("av_text".$this->ad_id);
|
||||
$w->set_attribute('ipopup', 'ipop_account');
|
||||
$w->set_attribute('account', "av_text".$this->ad_id);
|
||||
$w->table=1;
|
||||
$bulle=Icon_Action::infobulle(14);
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
case 'check':
|
||||
$w=new InputSwitch("av_text".$this->ad_id);
|
||||
$w->value=(trim($w->value)=="")?1:$w->value;
|
||||
break;
|
||||
case 'select':
|
||||
$w=new ISelect("av_text".$this->ad_id);
|
||||
$w->value=$this->cn->make_array($this->ad_extra);
|
||||
$w->style='style="width:100%"';
|
||||
$w->selected=$this->av_text;
|
||||
break;
|
||||
case 'card':
|
||||
$w=new ICard("av_text".$this->ad_id);
|
||||
// filter on frd_id
|
||||
$w->extra=$this->ad_extra;
|
||||
$w->extra2=0;
|
||||
$w->id=uniqid();
|
||||
$label=new ISpan();
|
||||
$filter=$this->ad_extra;
|
||||
$w->width=$this->ad_size;
|
||||
$w->extra=$filter;
|
||||
$w->extra2=0;
|
||||
$w->limit=6;
|
||||
$label->name="av_text".$this->ad_id.$w->id."_label";
|
||||
$w->set_attribute('ipopup', 'ipopcard');
|
||||
$w->set_attribute('typecard', $this->ad_extra);
|
||||
$w->set_attribute('inp', $w->id);
|
||||
$w->set_attribute('label', "av_text".$this->ad_id.$w->id."_label");
|
||||
$w->autocomplete=1;
|
||||
$w->dblclick="fill_ipopcard(this);";
|
||||
$msg=$w->search();
|
||||
$msg.=$label->input();
|
||||
$w->value=$this->av_text;
|
||||
break;
|
||||
}
|
||||
$w->table=0;
|
||||
}
|
||||
$result=$this->build_input($p_fiche_def);
|
||||
|
||||
$w->label=$this->ad_text;
|
||||
$w->name="av_text".$this->ad_id;
|
||||
if ($this->ad_id==21||$this->ad_id==22||$this->ad_id==20||$this->ad_id==31)
|
||||
{
|
||||
$bulle=Icon_Action::infobulle(21);
|
||||
}
|
||||
|
||||
// Warning length quickcode
|
||||
if ($this->ad_id==ATTR_DEF_QUICKCODE)
|
||||
{
|
||||
$bulle=Icon_Action::warnbulle(76);
|
||||
}
|
||||
if ($this->ad_id==ATTR_DEF_NAME||$this->ad_id==ATTR_DEF_QUICKCODE)
|
||||
{
|
||||
$class=" input_text highlight info";
|
||||
}
|
||||
else
|
||||
{
|
||||
$class="input_text";
|
||||
}
|
||||
$url='<td>'.$this->add_link($this->ad_id,$this->av_text).'</td>';
|
||||
$r.="<TR>".td(_($w->label)." $bulle", ' class="'.$class.'" ').td($w->input()." $msg").
|
||||
$r="<TR>".
|
||||
td(_($result["label"]). $result['bulle'],
|
||||
' class="'.$result['class'].'" ').
|
||||
td($result["input"]->input().$result["msg"]).
|
||||
$url.
|
||||
" </TR>";
|
||||
return $r;
|
||||
|
|
@ -653,4 +667,18 @@ class Card_Property
|
|||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief return the Property of an array of property with the right ad_id
|
||||
* @param int $attr_def_id the search attr_def_id
|
||||
* @param array $a_property array of Card_Property
|
||||
* @return mixed|null
|
||||
*/
|
||||
static function findProperty($attr_def_id, $a_property)
|
||||
{
|
||||
$nb = count($a_property);
|
||||
for ($i = 0; $i < $nb; $i++) {
|
||||
if ($a_property[$i]->get_ad_id() == $attr_def_id) return $a_property[$i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue