Jump to content


Photo
- - - - -

Уникальные классы элементов Checkbox в тизире


Best Answer SmetDenis , 22 June 2013 - 22:28

<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// register ElementOption class
App::getInstance('zoo')->loader->register('ElementOption', 'elements:option/option.php');

/*
	Class: ElementCheckbox
		The checkbox element class
*/
class ElementCheckbox extends ElementOption {

	/*
	   Function: edit
	       Renders the edit form field.

	   Returns:
	       String - html
	*/
	public function edit(){

		// init vars
		$options_from_config = $this->config->get('option', array());
		$default			 = $this->config->get('default');

		if (count($options_from_config)) {

			// set default, if item is new
			if ($default != '' && $this->_item != null && $this->_item->id == 0) {
				$default = array($default);
			} else {
				$default = array();
			}

			$selected_options  = $this->get('option', $default);

			$i       = 0;
			$html    = array('<div>');
				foreach ($options_from_config as $option) {
					$name = $this->getControlName('option', true);
					$checked = in_array($option['value'], $selected_options) ? ' checked="checked"' : null;
					$html[]  = '<div><input id="'.$name.$i.'" type="checkbox" name="'.$name.'" value="'.$option['value'].'"'.$checked.' /><label for="'.$name.$i++.'">'.$option['name'].'</label></div>';
					}
				// workaround: if nothing is selected, the element is still being transfered
				$html[] = '<input type="hidden" name="'.$this->getControlName('check').'" value="1" />';
			$html[] = '</div>';

			return implode("\n", $html);
		}

		return JText::_("There are no options to choose from.");
	}
    
    public function render($params = array()) {
 
        // init vars
        $params = $this->app->data->create($params);
        $selected_options  = $this->get('option', array());
     
        $options = array();
        foreach ($this->config->get('option', array()) as $option) {
            if (in_array($option['value'], $selected_options)) {
                $options[] = '<span class="option-'.$option['value'].'">'.$option['name'].'</span>';
            }
        }
     
        return $this->app->element->applySeparators($params->get('separated_by'), $options);
     
    }

}
Go to the full post


  • This topic is locked This topic is locked
8 replies to this topic

#1 legatsv

legatsv
  • JBZoo User (rus)
  • User rate: 0
  • posts: 45
  • topics: 13

Posted 21 June 2013 - 12:58

Всем привет. Тема уже подымалась, но я все же не могу понять как ИМЕННО в тизере элементам (span или div ...) выводимого чекбокса присвоить уникальный класс?

 

После манипуляций из вышеуказанного топика, обрамляему элементы  div присваевается уникальный класс, а элементам - нет.


  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 21 June 2013 - 21:11

Покажите страницу, что у вас получилось?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 legatsv

legatsv
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 45
  • topics: 13

Posted 22 June 2013 - 10:54

http://remont-postro...ory/bryuki.html

Attached Thumbnails

  • Screenshot_1.png
  • Screenshot_2.png

  • 0

#4 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 22 June 2013 - 17:40

Добавьте в этот класс вот такой метод
media\zoo\elements\checkbox\checkbox.php

public function render($params = array()) {

    // init vars
    $params = $this->app->data->create($params);
    $selected_options  = $this->get('option', array());

    $options = array();
    foreach ($this->config->get('option', array()) as $option) {
        if (in_array($option['value'], $selected_options)) {
            $options[] = '<span class="option-'.$option['value'].'">'.$option['name'].'</span>';
        }
    }

    return $this->app->element->applySeparators($params->get('separated_by'), $options);

}

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 legatsv

legatsv
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 45
  • topics: 13

Posted 22 June 2013 - 20:40

Parse error: syntax error, unexpected T_STRING in .../media/zoo/elements/checkbox/checkbox.php on line 25


  • 0

#6 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 22 June 2013 - 20:52

Я не умею телепатировать. Что у вас на 25 строке?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 legatsv

legatsv
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 45
  • topics: 13

Posted 22 June 2013 - 21:31

)))) извиняюсь.  Может я не правильно вставляю код, что появляются синтаксические ошибки. Не могли бы вы скинуть код этого файла. Спасибо.


  • 0

#8 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 22 June 2013 - 22:28   Best Answer

<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// register ElementOption class
App::getInstance('zoo')->loader->register('ElementOption', 'elements:option/option.php');

/*
	Class: ElementCheckbox
		The checkbox element class
*/
class ElementCheckbox extends ElementOption {

	/*
	   Function: edit
	       Renders the edit form field.

	   Returns:
	       String - html
	*/
	public function edit(){

		// init vars
		$options_from_config = $this->config->get('option', array());
		$default			 = $this->config->get('default');

		if (count($options_from_config)) {

			// set default, if item is new
			if ($default != '' && $this->_item != null && $this->_item->id == 0) {
				$default = array($default);
			} else {
				$default = array();
			}

			$selected_options  = $this->get('option', $default);

			$i       = 0;
			$html    = array('<div>');
				foreach ($options_from_config as $option) {
					$name = $this->getControlName('option', true);
					$checked = in_array($option['value'], $selected_options) ? ' checked="checked"' : null;
					$html[]  = '<div><input id="'.$name.$i.'" type="checkbox" name="'.$name.'" value="'.$option['value'].'"'.$checked.' /><label for="'.$name.$i++.'">'.$option['name'].'</label></div>';
					}
				// workaround: if nothing is selected, the element is still being transfered
				$html[] = '<input type="hidden" name="'.$this->getControlName('check').'" value="1" />';
			$html[] = '</div>';

			return implode("\n", $html);
		}

		return JText::_("There are no options to choose from.");
	}
    
    public function render($params = array()) {
 
        // init vars
        $params = $this->app->data->create($params);
        $selected_options  = $this->get('option', array());
     
        $options = array();
        foreach ($this->config->get('option', array()) as $option) {
            if (in_array($option['value'], $selected_options)) {
                $options[] = '<span class="option-'.$option['value'].'">'.$option['name'].'</span>';
            }
        }
     
        return $this->app->element->applySeparators($params->get('separated_by'), $options);
     
    }

}

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 legatsv

legatsv
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 45
  • topics: 13

Posted 23 June 2013 - 11:28

Еще раз спасибо за понимание и оперативность! Удачи в работе!


  • 0




Click to return to top of page in style!