From e655335f0bab6e84243902309a79e80b2d365634 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 26 May 2010 09:57:30 +0200 Subject: [PATCH] - Added LSattr_html/LSformElement quota --- .../css/default/LSformElement_quota.css | 14 ++ .../class/class.LSattr_html_quota.php | 34 ++++ .../class/class.LSformElement_quota.php | 158 ++++++++++++++++++ .../default/LSformElement_quota_field.tpl | 19 +++ 4 files changed, 225 insertions(+) create mode 100644 public_html/css/default/LSformElement_quota.css create mode 100644 public_html/includes/class/class.LSattr_html_quota.php create mode 100644 public_html/includes/class/class.LSformElement_quota.php create mode 100644 public_html/templates/default/LSformElement_quota_field.tpl diff --git a/public_html/css/default/LSformElement_quota.css b/public_html/css/default/LSformElement_quota.css new file mode 100644 index 00000000..3b59d826 --- /dev/null +++ b/public_html/css/default/LSformElement_quota.css @@ -0,0 +1,14 @@ +input.LSformElement_quota { + width: 3em !important; + text-align: right; +} + +select.LSformElement_quota { + width: 3em; +} + +span.LSformElement_quota_unknown { + color: #f59a67; +} + + diff --git a/public_html/includes/class/class.LSattr_html_quota.php b/public_html/includes/class/class.LSattr_html_quota.php new file mode 100644 index 00000000..195907e5 --- /dev/null +++ b/public_html/includes/class/class.LSattr_html_quota.php @@ -0,0 +1,34 @@ + + */ +class LSattr_html_quota extends LSattr_html { + + var $LSformElement_type = 'quota'; + +} + +?> diff --git a/public_html/includes/class/class.LSformElement_quota.php b/public_html/includes/class/class.LSformElement_quota.php new file mode 100644 index 00000000..977e3ac9 --- /dev/null +++ b/public_html/includes/class/class.LSformElement_quota.php @@ -0,0 +1,158 @@ + + */ + +class LSformElement_quota extends LSformElement { + + var $fieldTemplate = 'LSformElement_quota_field.tpl'; + + var $sizeFacts = array( + 1 => 'o', + 1000 => 'Ko', + 1000000 => 'Mo', + 1000000000 => 'Go' + ); + + /** + * Retourne les infos d'affichage de l'élément + * + * Cette méthode retourne les informations d'affichage de l'élement + * + * @retval array + */ + function getDisplay(){ + $return = $this -> getLabelInfos(); + + $quotas=array(); + + foreach ($this -> values as $value) { + if (ereg('^([0-9]*)$',$value,$regs)) { + $infos = array( + 'size' => ceil($regs[1]/$this -> getFactor()) + ); + if ($infos['size'] >= 1000000000) { + $infos['valueSizeFact']=1000000000; + } + else if ($infos['size'] >= 1000000) { + $infos['valueSizeFact']=1000000; + } + else if ($infos['size'] >= 1000) { + $infos['valueSizeFact']=1000; + } + else { + $infos['valueSizeFact']=1; + } + $infos['valueSize'] = $infos['size'] / $infos['valueSizeFact']; + $infos['valueTxt'] = $infos['valueSize'].$this ->sizeFacts[$infos['valueSizeFact']]; + + $quotas[$value] = $infos; + } + else { + $quotas[$value] = array( + 'unknown' => _('Incorrect value') + ); + } + } + + LSsession :: addCssFile('LSformElement_quota.css'); + + $return['html'] = $this -> fetchTemplate( + NULL, + array( + 'quotas' => $quotas, + 'sizeFacts' => $this -> sizeFacts + ) + ); + return $return; + } + + /** + * Retourne le code HTML d'un champ vide + * + * @retval string Code HTML d'un champ vide. + */ + function getEmptyField() { + return $this -> fetchTemplate( + $this -> fieldTemplate, + array( + 'sizeFacts' => $this -> sizeFacts + ) + ); + } + + /** + * Recupère la valeur de l'élement passée en POST + * + * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère + * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément + * + * @param[] array Pointeur sur le tableau qui recupèrera la valeur. + * + * @retval boolean true si la valeur est présente en POST, false sinon + */ + function getPostData(&$return) { + if($this -> isFreeze()) { + return true; + } + if (isset($_POST[$this -> name.'_size'])) { + $return[$this -> name]=array(); + if(!is_array($_POST[$this -> name.'_size'])) { + $_POST[$this -> name.'_size'] = array($_POST[$this -> name.'_size']); + } + if(isset($_POST[$this -> name.'_sizeFact']) && !is_array($_POST[$this -> name.'_sizeFact'])) { + $_POST[$this -> name.'_sizeFact'] = array($_POST[$this -> name.'_sizeFact']); + } + foreach($_POST[$this -> name.'_size'] as $key => $val) { + if (!empty($val)) { + $f = 1; + if (isset($_POST[$this -> name.'_sizeFact'][$key]) && ($_POST[$this -> name.'_sizeFact'][$key]!=1)) { + $f = $_POST[$this -> name.'_sizeFact'][$key]; + } + $return[$this -> name][$key] = intval(ceil(($val*$f)*$this -> getFactor())); + } + } + return true; + } + else { + $return[$this -> name] = array(); + return true; + } + } + + private function getFactor() { + if (isset($this -> params['html_options']['factor'])) { + return $this -> params['html_options']['factor']; + } + return 1; + } +} + +?> diff --git a/public_html/templates/default/LSformElement_quota_field.tpl b/public_html/templates/default/LSformElement_quota_field.tpl new file mode 100644 index 00000000..c7afd21b --- /dev/null +++ b/public_html/templates/default/LSformElement_quota_field.tpl @@ -0,0 +1,19 @@ +{if $freeze} + {if $value} + {if $quotas[$value].unknown} + {$quotas[$value].unknown} + {else} + {$quotas[$value].valueTxt} + {/if} + {else} + {$noValueTxt} + {/if} +{else} + + + {if $quotas[$value].unknown} + {$quotas[$value].unknown} + {/if} +{/if}