- Added LSattr_html/LSformElement quota
authorBenjamin Renard <brenard@smtp.easter-eggs.fr>
Wed, 26 May 2010 07:57:30 +0000 (09:57 +0200)
committerBenjamin Renard <brenard@smtp.easter-eggs.fr>
Wed, 26 May 2010 07:57:30 +0000 (09:57 +0200)
public_html/css/default/LSformElement_quota.css [new file with mode: 0644]
public_html/includes/class/class.LSattr_html_quota.php [new file with mode: 0644]
public_html/includes/class/class.LSformElement_quota.php [new file with mode: 0644]
public_html/templates/default/LSformElement_quota_field.tpl [new file with mode: 0644]

diff --git a/public_html/css/default/LSformElement_quota.css b/public_html/css/default/LSformElement_quota.css
new file mode 100644 (file)
index 0000000..3b59d82
--- /dev/null
@@ -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 (file)
index 0000000..195907e
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/*******************************************************************************
+ * Copyright (C) 2007 Easter-eggs
+ * http://ldapsaisie.labs.libre-entreprise.org
+ *
+ * Author: See AUTHORS file in top-level directory.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+******************************************************************************/
+
+/**
+ * Type d'attribut HTML quota
+ *
+ * @author Benjamin Renard <brenard@easter-eggs.com>
+ */
+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 (file)
index 0000000..977e3ac
--- /dev/null
@@ -0,0 +1,158 @@
+<?php
+/*******************************************************************************
+ * Copyright (C) 2007 Easter-eggs
+ * http://ldapsaisie.labs.libre-entreprise.org
+ *
+ * Author: See AUTHORS file in top-level directory.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+******************************************************************************/
+
+
+/**
+ * Element quota d'un formulaire pour LdapSaisie
+ *
+ * Cette classe définis les éléments quota des formulaires.
+ * Elle étant la classe basic LSformElement.
+ *
+ * @author Benjamin Renard <brenard@easter-eggs.com>
+ */
+
+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 (file)
index 0000000..c7afd21
--- /dev/null
@@ -0,0 +1,19 @@
+{if $freeze}
+  {if $value}
+    {if $quotas[$value].unknown}
+      <span class='LSformElement_quota_unknown'>{$quotas[$value].unknown}</span>
+    {else}
+      {$quotas[$value].valueTxt}
+    {/if}
+  {else}
+    {$noValueTxt}
+  {/if}
+{else}
+  <input name='{$attr_name}_size[]' type=text class='LSformElement_quota' value="{$quotas[$value].valueSize}"/>
+  <select name='{$attr_name}_sizeFact[]' class='LSform LSformElement_quota'>
+    {html_options options=$sizeFacts selected=$quotas[$value].valueSizeFact}
+  </select>
+  {if $quotas[$value].unknown}
+    <span class='LSformElement_quota_unknown'>{$quotas[$value].unknown}</span>
+  {/if}
+{/if}