function smarty_function_dhtml_calendar($params, &$smarty)
{
    require_once dirname(__FILE__) . '/../../jscalendar/calendar.php';
    $jscalendar_options['firstDate'] = 1;
    $jscalendar_options['showsTime'] = false;
    $jscalendar_options['timeFormat'] = "24";
    $jscalendar_options['showOthers'] = false;
    $jscalendar_options['ifFormat'] = "%Y/%m/%d";
    $jscalendar_properties['style'] = '';
    $jscalendar_properties['name'] = '';
    $jscalendar_properties['value'] = '';
    if (empty($params['name'])) {
        $smarty->trigger_error("dhtml_calendar: missing 'name' parameter");
        return;
    } else {
        $jscalendar_properties['name'] = $params['name'];
    }
    if (!empty($params['format'])) {
        $jscalendar_options['ifFormat'] = $params['format'];
    }
    if (!empty($params['value'])) {
        $jscalendar_properties['value'] = $params['value'];
    }
    if (!empty($params['style'])) {
        $jscalendar_properties['style'] = $params['style'];
    }
    if (!empty($params['class'])) {
        $jscalendar_properties['class'] = $params['class'];
    }
    if (strstr($jscalendar_options['ifFormat'], '%H')) {
        $jscalendar_options['showsTime'] = true;
    }
    $calendar = new DHTML_Calendar(dirname(__FILE__) . '/../../jscalendar/');
    return $calendar->make_input_field($jscalendar_options, $jscalendar_properties);
}
Exemplo n.º 2
0
       please consider sending it back to me so that I can include it in the
       calendar distribution.
     </blockquote>
     </form>

     <form action="test.php" method="get">
     <input type="hidden" name="submitted" value="1" />

     <table>
     <tr>
     <td>
       Date 1:
     </td>
     <td>
       <?php 
    $calendar->make_input_field(array('firstDay' => 1, 'showsTime' => true, 'showOthers' => true, 'ifFormat' => '%Y-%m-%d %I:%M %P', 'timeFormat' => '12'), array('style' => 'width: 15em; color: #840; background-color: #ff8; border: 1px solid #000; text-align: center', 'name' => 'date1', 'value' => strftime('%Y-%m-%d %I:%M %P', strtotime('now'))));
    ?>
     </td>
     </tr>
     </table>

     <hr />
     <button>Submit</button>

     </form>

<?php 
}
?>

</body>
Exemplo n.º 3
0
 /**
  * Esta función genera una cadena que contiene un formulario HTML. Para hacer
  * esto, toma una plantilla de formulario e inserta en ella los elementos de
  * formulario.
  *
  * @param   string  $templateName   Ruta al archivo de plantilla Smarty a usar.
  * @param   string  $title          Texto a usar como título del formulario
  * @param   array   $arrPreFilledValues Arreglo para asignar variables a mostrar
  *                                  en el formulario. Este arreglo es idéntico
  *                                  en formato al arreglo $_POST que se genera
  *                                  al enviar el formulario lleno, de forma que
  *                                  se puede usar $_POST directamente para 
  *                                  llenar con valores en caso de que la 
  *                                  validación falle.
  *
  * @return  string  Texto HTML del formulario con valores asignados
  */
 function fetchForm($templateName, $title, $arrPreFilledValues = array())
 {
     /* Función interna para convertir un arreglo especificado en 
          INPUT_EXTRA_PARAM en una cadena de atributos clave=valor adecuada 
          para incluir al final de un widget HTML. Si no existe 
          INPUT_EXTRA_PARAM, o no es un arreglo, se devuelve una cadena vacía
        */
     if (!function_exists('_inputExtraParam_a_atributos')) {
         function _inputExtraParam_a_atributos(&$arrVars)
         {
             if (!isset($arrVars['INPUT_EXTRA_PARAM']) || !is_array($arrVars['INPUT_EXTRA_PARAM']) || count($arrVars['INPUT_EXTRA_PARAM']) <= 0) {
                 return '';
             }
             $listaAttr = array();
             foreach ($arrVars['INPUT_EXTRA_PARAM'] as $key => $value) {
                 $listaAttr[] = sprintf('%s="%s"', htmlentities($key, ENT_COMPAT, 'UTF-8'), htmlentities($value, ENT_COMPAT, 'UTF-8'));
             }
             return implode(' ', $listaAttr);
         }
     }
     // Función para usar con array_map
     if (!function_exists('_map_htmlentities')) {
         function _map_htmlentities($s)
         {
             return htmlentities($s, ENT_COMPAT, 'UTF-8');
         }
     }
     if (!function_exists('_labelName')) {
         function _labelName($varName, &$arrVars)
         {
             $tooltip = "";
             if (isset($arrVars['DESCRIPTION'])) {
                 if ($arrVars['DESCRIPTION'] != false && $arrVars['DESCRIPTION'] != "") {
                     $tooltip = 'data-tooltip="' . htmlentities($arrVars['DESCRIPTION'], ENT_COMPAT, 'UTF-8') . '"';
                 }
             }
             if ($tooltip != "") {
                 return sprintf('<label for="%s" %s>%s</label>', htmlentities($varName, ENT_COMPAT, 'UTF-8'), $tooltip, htmlentities($arrVars['LABEL'], ENT_COMPAT, 'UTF-8'));
             } else {
                 return htmlentities($arrVars['LABEL'], ENT_COMPAT, 'UTF-8');
             }
         }
     }
     foreach ($this->arrFormElements as $varName => $arrVars) {
         if (!isset($arrPreFilledValues[$varName])) {
             $arrPreFilledValues[$varName] = "";
         }
         $arrMacro = array();
         $strInput = "";
         $arrVars['EDITABLE'] = isset($arrVars['EDITABLE']) ? $arrVars['EDITABLE'] : '';
         // Verificar si se debe mostrar un widget activo para ingreso de valor
         $bIngresoActivo = $this->modo == 'input' || $this->modo == 'edit' && $arrVars['EDITABLE'] != 'no';
         /* El indicar ENT_COMPAT escapa las comillas dobles y deja intactas
            las comillas simples. Por lo tanto, se asume que todos los usos
            de $varXXX_escaped serán dentro de comillas dobles, o en texto 
            libre. */
         $varName_escaped = htmlentities($varName, ENT_COMPAT, 'UTF-8');
         $varValue_escaped = is_array($arrPreFilledValues[$varName]) ? NULL : htmlentities($arrPreFilledValues[$varName], ENT_COMPAT, 'UTF-8');
         switch ($arrVars['INPUT_TYPE']) {
             case "TEXTAREA":
                 $strInput = $bIngresoActivo ? sprintf('<textarea name="%s" rows="%s" cols="%s" %s>%s</textarea>', $varName_escaped, isset($arrVars['ROWS']) ? (int) $arrVars['ROWS'] : 3, isset($arrVars['COLS']) ? (int) $arrVars['COLS'] : 20, _inputExtraParam_a_atributos($arrVars), $varValue_escaped) : $varValue_escaped;
                 break;
             case "TEXT":
                 $strInput = $bIngresoActivo ? sprintf('<input type="text" name="%s" value="%s" %s />', $varName_escaped, $varValue_escaped, _inputExtraParam_a_atributos($arrVars)) : $varValue_escaped;
                 break;
             case "CHECKBOX":
                 $checked = 'off';
                 $disable = 'on';
                 if ($arrPreFilledValues[$varName] == 'on') {
                     $checked = 'on';
                 }
                 if ($bIngresoActivo) {
                     $disable = 'off';
                 }
                 //Funcion definida en misc.lib.php
                 $strInput = checkbox($varName, $checked, $disable);
                 break;
             case "PASSWORD":
                 $strInput = $bIngresoActivo ? sprintf('<input type="password" name="%s" value="%s" %s />', $varName_escaped, $varValue_escaped, _inputExtraParam_a_atributos($arrVars)) : $varValue_escaped;
                 break;
             case "HIDDEN":
                 $strInput = sprintf('<input type="hidden" name="%s" value="%s" %s />', $varName_escaped, $varValue_escaped, _inputExtraParam_a_atributos($arrVars));
                 break;
             case "FILE":
                 $strInput = $bIngresoActivo ? sprintf('<input type="file" name="%s" %s />', $varName_escaped, _inputExtraParam_a_atributos($arrVars)) : $varValue_escaped;
                 break;
             case "RADIO":
                 if ($bIngresoActivo) {
                     $strInput = "";
                     if (is_array($arrVars['INPUT_EXTRA_PARAM'])) {
                         $listaRadio = array();
                         foreach ($arrVars['INPUT_EXTRA_PARAM'] as $radioValue => $radioLabel) {
                             $listaRadio[] = sprintf('<input type="radio" name="%s" value="%s" %s />&nbsp;%s&nbsp;', $varName_escaped, htmlentities($radioValue, ENT_COMPAT, 'UTF-8'), $radioValue == $arrPreFilledValues[$varName] ? 'checked="checked"' : '', htmlentities($radioLabel, ENT_COMPAT, 'UTF-8'));
                         }
                         $strInput = implode("\n", $listaRadio);
                     }
                 } else {
                     $strInput = $varValue_escaped;
                 }
                 break;
             case "SELECT":
                 if ($bIngresoActivo) {
                     $listaOpts = array();
                     $keyVals = is_array($arrPreFilledValues[$varName]) ? $arrPreFilledValues[$varName] : array($arrPreFilledValues[$varName]);
                     if (is_array($arrVars['INPUT_EXTRA_PARAM'])) {
                         foreach ($arrVars['INPUT_EXTRA_PARAM'] as $idSeleccion => $nombreSeleccion) {
                             $listaOpts[] = sprintf('<option value="%s" %s>%s</option>', htmlentities($idSeleccion, ENT_COMPAT, 'UTF-8'), in_array($idSeleccion, $keyVals) ? 'selected="selected"' : '', htmlentities($nombreSeleccion, ENT_COMPAT, 'UTF-8'));
                         }
                     }
                     $sNombreSelect = $varName_escaped;
                     $sAttrMultiple = '';
                     if (isset($arrVars['MULTIPLE']) && $arrVars['MULTIPLE'] != '' && $arrVars['MULTIPLE']) {
                         $sAttrMultiple = 'multiple="multiple"';
                         $sNombreSelect .= '[]';
                     }
                     $strInput = sprintf('<select name="%s" id="%s" %s %s %s>%s</select>', $sNombreSelect, $sNombreSelect, $sAttrMultiple, isset($arrVars['SIZE']) && $arrVars['SIZE'] != '' ? sprintf('size="%s"', htmlentities($arrVars['SIZE'], ENT_COMPAT, 'UTF-8')) : '', isset($arrVars['ONCHANGE']) && $arrVars['ONCHANGE'] != '' ? "onchange='{$arrVars['ONCHANGE']}'" : '', implode("\n", $listaOpts));
                 } else {
                     $strInput = is_array($arrPreFilledValues[$varName]) ? '| ' . implode(' | ', array_map('_map_htmlentities', array_intersect_key($arrVars['INPUT_EXTRA_PARAM'], array_flip($arrPreFilledValues[$varName])))) : (isset($arrVars['INPUT_EXTRA_PARAM'][$arrPreFilledValues[$varName]]) ? htmlentities($arrVars['INPUT_EXTRA_PARAM'][$arrPreFilledValues[$varName]], ENT_COMPAT, 'UTF-8') : '');
                 }
                 break;
             case "DATE":
                 if ($bIngresoActivo) {
                     require_once "libs/js/jscalendar/calendar.php";
                     $time = false;
                     $format = '%d %b %Y';
                     $timeformat = '12';
                     $firstDay = 1;
                     if (is_array($arrVars['INPUT_EXTRA_PARAM']) && count($arrVars['INPUT_EXTRA_PARAM']) > 0) {
                         foreach ($arrVars['INPUT_EXTRA_PARAM'] as $key => $value) {
                             if ($key == 'TIME') {
                                 $time = $value;
                             }
                             if ($key == 'FORMAT') {
                                 $format = $value;
                             }
                             if ($key == 'TIMEFORMAT') {
                                 $timeformat = $value;
                             }
                             if ($key == 'FIRSTDAY') {
                                 $firstDay = $value;
                             }
                         }
                     }
                     $oCal = new DHTML_Calendar("/libs/js/jscalendar/", "en", "calendar-win2k-2", $time);
                     $this->smarty->assign("HEADER", $oCal->load_files());
                     $strInput .= $oCal->make_input_field(array('firstDay' => $firstDay, 'showsTime' => true, 'showOthers' => true, 'ifFormat' => $format, 'timeFormat' => $timeformat), array('style' => 'width: 10em; color: #840; background-color: #fafafa; ' . 'border: 1px solid #999999; text-align: center', 'name' => $varName, 'value' => $arrPreFilledValues[$varName]));
                 } else {
                     $strInput = $varValue_escaped;
                 }
                 break;
             default:
                 $strInput = "";
         }
         $arrMacro['LABEL'] = _labelName($varName, $arrVars);
         $arrMacro['INPUT'] = $strInput;
         $this->smarty->assign($varName, $arrMacro);
     }
     $this->smarty->assign("title", htmlentities($title, ENT_COMPAT, 'UTF-8'));
     $this->smarty->assign("mode", $this->modo);
     return $this->smarty->fetch("file:{$templateName}");
 }