Esempio n. 1
0
    /**
     * Рисуем кнопку
     *
     * @param string $id Id HTML-элемента
     * @param mixed $value Значение элемента
     * @param array $params Массив параметров, передаваемых в JS-скрипт инициализации UI-компоненты
     * @param array $attribs Массив атрибутов HTML-элемента
     * @return string
     */
    public function selectResource($id, $value = null, array $params = array(), $attribs = null)
    {
        $translate = $this->view->translate()->getTranslator();
        $id_button = $id . '_button';
        $hiddenname = isset($params['multiple']) && $params['multiple'] == 1 ? $id . '[]' : $id;
        if (is_string($value)) {
            $value = array($value);
        }
        /**
         * Определяем параметры JQueryUI Dialog
         */
        $dialog_params = array('title' => $translate->_('Выбор материалов сайта'));
        /**
         * Добавляем кнопочку, инициализирующую диалог с DataGrid
         * При загрузке диалога устанавливаем в него идентификатор кнопки, по которому из грида будем искать место для вставки записей
         * @see /application/configs/resources/grids.xml[section=select]
         */
        $button = $this->view->Button($id_button, $translate->_('Выбрать'));
        $js = '$("#' . $id_button . '").click(function(){
					$("<iframe src=\\"' . $this->view->BaseUrl() . '/control/resource/index/section/select/\\"></iframe>").load(function(){ 
						$(this).contents().find("body").attr("rel","' . $id_button . '");
					}).phormDialog();
				})';
        $this->jquery->addOnLoad($js);
        /**
         * Формируем скрытое поле, выполняющее роль JS-шаблона и Устанавливаем значения
         */
        $xhtml = '<ul class="ui-phorm-multi-list">' . PHP_EOL;
        if (count($value) > 0) {
            $Resource = new Phorm_Resource();
            foreach ($value as $resourceid) {
                if ($ResourceInfo = $Resource->getResourceBaseInfo($resourceid)) {
                    $xhtml .= '<li class="ui-widget-content">' . '<span class="title"><a href="#">' . $ResourceInfo['resourcename'] . '</a></span>' . '<input type="hidden" name="' . $hiddenname . '" value="' . $ResourceInfo['resourceid'] . '" />' . '<a href="#" class="delete ui-corner-all ui-button ui-state-default" title="' . $translate->_('Удалить') . '"><span class="ui-icon ui-icon-close"></span></a>' . '</li>' . PHP_EOL;
                }
            }
        }
        $xhtml .= '<li class="hidden ui-widget-content">' . '<span class="title"></span>' . '<input type="hidden" name="' . $hiddenname . '" disabled="disabled" />' . '<a href="#" class="delete ui-corner-all ui-button ui-state-default" title="' . $translate->_('Удалить') . '"><span class="ui-icon ui-icon-close"></span></a>' . '<div class="clear"></div>' . '</li>' . PHP_EOL;
        $xhtml .= '</ul>' . PHP_EOL;
        /**
         * Вешаем событие на кнопки удаления
         */
        $js = '$("#' . $id_button . '").next("ul").find("li .delete").on("click",function(){ 
					if(confirm("' . $translate->_('Удалить') . '?")) $(this).parent("li").remove();
					return false; 
				});';
        $this->jquery->addOnLoad($js);
        /**
         * Сортировка выбранных элементов
         */
        if (isset($params['sortable']) && $params['sortable'] == 1 && isset($params['multiple']) && $params['multiple'] == 1) {
            $js = '$("#' . $id_button . '").next("ul").sortable().find("li").css({cursor:"move"});';
            $this->jquery->addOnLoad($js);
        }
        /**
         * Возвращаем кнопку и текущие элементы
         */
        return $button . $xhtml;
    }