Exemple #1
0
 public function buildContent()
 {
     $TLM = TimeLineManager::inst();
     $insts = $TLM->getEntityClassInsts();
     if (empty($insts)) {
         return;
         //Нет временных шкал для показа
     }
     $idents = array_keys($insts);
     $options = array();
     /** @var TimeLineBuilderBase */
     foreach ($insts as $ident => $inst) {
         $options[] = array('content' => $inst->getTitle(), 'value' => $this->getPageUrl(array('type' => $ident)));
     }
     usort($options, function ($e1, $e2) {
         return strcasecmp($e1['content'], $e2['content']);
     });
     $current = RequestArrayAdapter::inst()->str('type');
     $current = $current && in_array($current, $idents) ? $current : $idents[0];
     $select = PsHtml::select(array('class' => 'switcher'), $options, $this->getPageUrl(array('type' => $current)));
     /*
      * В данный момент мы определили идентификатор временной шкалы и построили элемент $select,
      * можем строить страницу.
      */
     $params['body'] = $TLM->fetchTplWithResources($current);
     $params['select'] = $select;
     return $this->getFoldedEntity()->fetchTpl($params);
 }
Exemple #2
0
function smarty_block_choice($params, $content, Smarty_Internal_Template &$smarty)
{
    $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__);
    if (!$content) {
        return;
    }
    //<select name="$name" /> || <input type="checkbox|readio" name="$name" />
    $name = array_get_value('name', $params);
    //Если передан label, то поле будет отображено, как field формы
    $label = array_get_value('label', $params);
    //Текущее значение
    $curVal = array_get_value_unset('value', $params);
    //Текущее значение
    $choiceType = array_get_value_unset('type', $params);
    //Значения
    $options = array_get_value(SmartyBlockContext::CHOICE_OPTION, $ctxtParams);
    if (isEmpty($options)) {
        return;
        //---
    }
    switch ($choiceType) {
        case 'combo':
        case 'select':
            echo $label ? PsHtmlForm::select($label, $name, $params, $options, $curVal) : PsHtml::select($params, $options, $curVal);
            break;
        case 'check':
        case 'checkboxes':
            echo $label ? PsHtmlForm::checkboxes($label, $name, $options, $curVal) : PsHtml::checkboxes($name, $options, $curVal);
            break;
        case 'radio':
        case 'radios':
            echo $label ? PsHtmlForm::radios($label, $name, $options, $curVal) : PsHtml::radios($name, $options, $curVal);
            break;
        default:
            echo PsHtml::divErr("Неизвестный тип выбора: [{$choiceType}]");
    }
}
Exemple #3
0
 public static function select($label, $fieldId, $selectAttrs = array(), $options = array(), $curVal = null, $hasEmpty = false, $help = null)
 {
     $selectAttrs['name'] = $fieldId;
     /*
     * Пока не будем комбо-боксы для Да/Нет заменять на радиокнопки
     * 
      if (count($options) == 2) {
      $y = false;
      $n = false;
      foreach ($options as $option) {
      $y = $y || ($option['value'] == 1 && $option['content'] == 'Да');
      $n = $n || ($option['value'] == 0 && $option['content'] == 'Нет');
      }
      if ($y && $n) {
      return self::radios($label, $fieldId, $options, $curVal);
      }
      }
     */
     return self::field($label, PsHtml::select($selectAttrs, $options, $curVal, $hasEmpty), $help);
 }
Exemple #4
0
 public function zonesSelectHtml()
 {
     if (!isset($this->selectHtml)) {
         $currentZone = $this->getCurrentDateTimeZone()->getName();
         $zones = array();
         foreach (DateTimeZone::listIdentifiers() as $tzName) {
             $tz = $this->getDateTimeZone($tzName);
             //#1
             if ($tz) {
                 $offsetS = $tz->getOffset(new DateTime());
                 // -- Сдвиг в секундах
                 $sign = $offsetS < 0 ? '-' : '+';
                 $secARR = DatesTools::inst()->parseSeconds($offsetS);
                 $offsetH = $secARR['hf'];
                 $offsetM = $secARR['m'];
                 $gmt = number_format("{$offsetH}.{$offsetM}", 2, ":", "");
                 $gmt = "GMT {$sign}{$gmt}";
                 $tzName = $tz->getName();
                 $option['value'] = $tzName;
                 $option['offset'] = $offsetS;
                 $option['content'] = "{$tzName}  ({$gmt})";
                 if ($tzName == $currentZone) {
                     $option['class'] = 'current';
                     $option['selected'] = 1;
                 }
                 $zones[] = $option;
             }
             //#1
         }
         $selectAttrs['class'] = 'time_zones';
         $selectAttrs['name'] = FORM_PARAM_TIMEZONE;
         /*
          * Мы не передаём $currentZone внутрь, так как нам нужно ещё установить 
          * класс, который потом будет использован в js.
          */
         $this->selectHtml = PsHtml::select($selectAttrs, $zones);
     }
     return $this->selectHtml;
 }