Example #1
0
    public static function form()
    {
        $className = __CLASS__;
        $slideWidth = 'js:function(event,ui)' . <<<JS
 {
\t\$('#{$className}_width').val(ui.value);
\t{$className}_makesize(ui.value, false, ui.handle);
}
JS;
        $changeWidth = 'js:function(event,ui)' . <<<JS
 {
\t{$className}_makesize(ui.value, false, ui.handle);
}
JS;
        $slideHeight = 'js:function(event,ui)' . <<<JS
 {
\t\$('#{$className}_height').val(ui.value);
\t{$className}_makesize(ui.value, true, ui.handle);
}
JS;
        $changeHeight = 'js:function(event,ui)' . <<<JS
 {
\t{$className}_makesize(ui.value, true, ui.handle);
}
JS;
        $cfg = ContentUnit::loadConfig();
        return array('elements' => array(Form::tab(Yii::t('UnitVideo.main', 'Video')), 'video' => array('type' => 'Link', 'size' => 40, 'showPageSelectButton' => false), 'show_link' => array('type' => 'checkbox'), Yii::app()->controller->renderPartial($cfg['UnitVideo'] . '.video.assets.containersize', array('attribute' => 'video', 'width' => 'width', 'height' => 'height', 'selector' => 'object, embed, iframe', 'sizes' => array('425x344' => '425 × 344', '480x385' => '480 × 385', '640x505' => '640 × 505', '960x745' => '960 × 745'), 'className' => $className), true), 'width' => array('type' => 'Slider', 'event' => 'none', 'options' => array('min' => 1, 'max' => 1000, 'step' => 1, 'slide' => $slideWidth, 'change' => $changeWidth)), 'height' => array('type' => 'Slider', 'event' => 'none', 'options' => array('min' => 1, 'max' => 1000, 'step' => 1, 'slide' => $slideHeight, 'change' => $changeHeight)), Form::tab(Yii::t('UnitVideo.main', 'HTML')), 'html' => array('hint' => Yii::t('UnitVideo.main', 'If the link to your video is not recognized, use the version with the html-code.'), 'type' => 'textarea', 'rows' => 6, 'cols' => 60)));
    }
Example #2
0
    public static function form()
    {
        $className = __CLASS__;
        $slideWidth = 'js:function(event,ui)' . <<<JS
 {
\t\$('#{$className}_width').val(ui.value);
\t{$className}_makesize(ui.value, false, ui.handle);
}
JS;
        $changeWidth = 'js:function(event,ui)' . <<<JS
 {
\t{$className}_makesize(ui.value, false, ui.handle);
}
JS;
        $slideHeight = 'js:function(event,ui)' . <<<JS
 {
\t\$('#{$className}_height').val(ui.value);
\t{$className}_makesize(ui.value, true, ui.handle);
}
JS;
        $changeHeight = 'js:function(event,ui)' . <<<JS
 {
\t{$className}_makesize(ui.value, true, ui.handle);
}
JS;
        $cfg = ContentUnit::loadConfig();
        return array('elements' => array(Form::tab(Yii::t('UnitRandomimage.main', 'Images')), 'images' => array('type' => 'FileManager', 'width' => 900, 'height' => 350, 'multiple' => true, 'options' => array('onlyMimes' => array('image/jpeg', 'image/gif', 'image/png')), 'element' => array(array('name' => 'caption', 'type' => 'text', 'size' => 40, 'label' => Yii::t('UnitRandomimage.main', 'Caption'), 'i18n' => true))), Form::tab(Yii::t('UnitRandomimage.main', 'Size & link')), Yii::app()->controller->renderPartial($cfg['UnitImage'] . '.image.assets.imagesize', compact('className'), true), 'width' => array('type' => 'Slider', 'event' => 'none', 'options' => array('min' => 1, 'max' => 2000, 'step' => 1, 'slide' => $slideWidth, 'change' => $changeWidth)), 'height' => array('type' => 'Slider', 'event' => 'none', 'options' => array('min' => 1, 'max' => 2000, 'step' => 1, 'slide' => $slideHeight, 'change' => $changeHeight)), 'url' => array('type' => 'text', 'size' => 40), 'target' => array('type' => 'dropdownlist', 'items' => array('' => Yii::t('UnitRandomimage.main', 'Current window'), '_blank' => Yii::t('UnitRandomimage.main', 'New window')))));
    }
Example #3
0
 public static function form()
 {
     $model = new User();
     $registerFields = $model->proposedFields('register', true);
     $updateFields = $model->proposedFields('update', true);
     return array('elements' => array(Form::tab(Yii::t('UnitRegister.main', 'Settings')), 'fields' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $registerFields), 'fields_req' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $registerFields), 'is_emailauth_req' => array('type' => 'checkbox'), 'notify_admin' => array('type' => 'checkbox'), 'notify_user' => array('type' => 'checkbox'), Form::tab(Yii::t('UnitRegister.main', 'Text')), 'text' => array('type' => 'TextEditor', 'kind' => 'fck'), Form::tab(Yii::t('UnitRegister.main', 'User agreement')), 'agreement' => array('type' => 'TextEditor', 'kind' => 'fck'), Form::tab(Yii::t('UnitRegister.main', 'Editing profile')), 'profile_fields' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $updateFields), 'profile_fields_req' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $updateFields)));
 }
Example #4
0
 public function form()
 {
     $timezoneList = timezone_identifiers_list();
     sort($timezoneList);
     $timezoneList = array_combine($timezoneList, $timezoneList);
     // Общие настроки
     $ret = array('elements' => array(Form::tab(Yii::t('cms', 'General settings')), 'sitename' => array('type' => 'text', 'size' => 60), 'adminEmail' => array('type' => 'text', 'size' => 60), 'language' => array('type' => 'LanguageSelect', 'empty' => null), 'timezone' => array('type' => 'dropdownlist', 'items' => $timezoneList), 'autoSave' => array('type' => 'checkbox'), 'slugTransliterate' => array('type' => 'checkbox'), 'slugLowercase' => array('type' => 'checkbox'), 'pageOnError403' => array('type' => 'PageSelect'), 'pageOnError404' => array('type' => 'PageSelect'), Form::tab(Yii::t('cms', 'Appearance')), 'theme' => array('type' => 'ThemeSelect', 'empty' => null), 'defaultsPerPage' => array('type' => 'Slider', 'options' => array('min' => 1, 'max' => 50)), 'showWidgetAppearance' => array('type' => 'checkbox'), 'ajaxPager' => array('type' => 'checkbox'), 'ajaxPagerScroll' => array('type' => 'checkbox'), Form::tab(Yii::t('cms', 'Users')), 'defaultsShowEmail' => array('type' => 'dropdownlist', 'items' => Role::builtInRoles()), 'defaultsSendMessage' => array('type' => 'dropdownlist', 'items' => Role::builtInRoles()), 'userExtraFields' => array('type' => 'FieldSet'), Form::tab(Yii::t('cms', 'Performance')), 'cacheTime' => array('type' => 'Slider', 'options' => array('min' => 0, 'max' => 3600, 'step' => 60), 'hint' => Yii::t('cms', 'in seconds, 0 = off, 3600 - one hour'))));
     // Настройки для юнитов
     $units = ContentUnit::getInstalledUnits();
     $ret['elements'][] = Form::tab(Yii::t('cms', 'Units settings'));
     foreach ($units as $unitClass) {
         if (method_exists($unitClass, 'settings')) {
             $elems = call_user_func(array($unitClass, 'settings'), $unitClass);
             if (is_array($elems) && !empty($elems)) {
                 $ret['elements'][] = Form::section(call_user_func(array($unitClass, 'name')));
                 foreach ($elems as $k => $elem) {
                     $ret['elements'][$unitClass . '.' . $k] = $elem;
                 }
             }
         }
     }
     return self::localizedForm($ret);
 }
Example #5
0
 public static function form()
 {
     $sectionsArray = ModelBlog::getSectionsArray();
     return array('elements' => array(Form::tab(Yii::t('UnitBlog.main', 'Annotation')), 'title' => array('type' => 'text', 'size' => 40), 'annotation' => array('type' => 'TextEditor', 'kind' => 'ck', 'config' => array('toolbar' => 'Basic')), 'image' => array('type' => 'FileManager', 'width' => 900, 'height' => 350, 'options' => array('onlyMimes' => array('image/jpeg', 'image/gif', 'image/png'))), Form::tab(Yii::t('UnitBlog.main', 'Entry')), 'blog_id' => !empty($sectionsArray) ? array('type' => 'Select2', 'data' => $sectionsArray) : '', 'date' => array('type' => 'text'), 'text' => array('type' => 'TextEditor', 'kind' => 'ck', 'config' => array('toolbar' => 'Basic')), Form::tab(Yii::t('UnitBlog.main', 'Source')), 'source' => array('type' => 'text', 'maxlength' => 64), 'url' => array('type' => 'Link', 'showFileManagerButton' => false, 'showUploadButton' => false)));
 }
Example #6
0
 public static function form()
 {
     $model = new User();
     $viewFields = $model->proposedFields('view', true);
     return array('elements' => array(Form::tab(Yii::t('UnitProfiles.main', 'Settings')), 'table_fields' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $viewFields), 'displayed_fields' => array('type' => 'listbox', 'multiple' => true, 'size' => 7, 'items' => $viewFields), 'per_page' => array('type' => 'Slider', 'hint' => Yii::t('UnitProfiles.main', 'If zero choosed, accordingly site\'s general settings'), 'options' => array('min' => 0, 'max' => 50, 'step' => 5)), Form::tab(Yii::t('UnitProfiles.main', 'Feedback form')), 'feedback_form' => array('type' => 'FieldSet')));
 }
Example #7
0
 public static function form()
 {
     return array('elements' => array(Form::tab(Yii::t('UnitBlog.main', 'Blog/news section')), 'entries' => array('type' => 'RecordsGrid', 'className' => 'ModelBlog_Entry', 'foreignAttribute' => 'blog_id', 'addButtonTitle' => Yii::t('UnitBlog.main', 'Create entry')), Form::tab(Yii::t('UnitBlog.main', 'Settings')), 'per_page' => array('type' => 'Slider', 'hint' => Yii::t('UnitBlog.main', 'If zero choosed, accordingly site\'s general settings'), 'options' => array('min' => 0, 'max' => 25))));
 }
Example #8
0
    /**
     * Обрабатывает запрос на редактирование блока
     *
     * @param int $pageWidgetId id редактируемого страничного блока
     * @param int $widgetId id редактируемого блока
     * @param int $pageId id страницы, на которой размещается блок
     * (используется, если предполагается создание нового блока)
     * @param int $prevPageWidgetId id блока, после которого размещается текущий блок
     * (используется, если предполагается создание нового блока)
     * @param string $area название области страницы где размещается блок
     * (используется, если предполагается создание нового блока)
     * (используется, если предполагается создание нового блока)
     * @param string $modelClass имя класса модели редактируемой записи
     * @param string $widgetClass имя класса виджета редактируемого блока
     * @param int $recordId id редактируемой записи
     * @param int $sectionId
     * @param string foreignAttribute
     * @param string $return тип возвращаемого ответа (json, html)
     */
    public function actionEdit($pageWidgetId = 0, $widgetId = 0, $pageId = 0, $prevPageWidgetId = 0, $area = 'main', $modelClass = '', $widgetClass = '', $recordId = 0, $sectionId = 0, $foreignAttribute = '', $return = 'html')
    {
        $ret = true;
        // Обрабатываем входящие параметры и находим (или создаем) необходимые объекты
        $pageWidgetId = (int) $pageWidgetId;
        $widgetId = (int) $widgetId;
        $recordId = (int) $recordId;
        $pageId = (int) $pageId;
        // Если указан id страничного блока
        if ($pageWidgetId > 0) {
            $pageWidget = PageWidget::model()->with('widget')->findByPk($pageWidgetId);
            if ($pageWidget) {
                $widget = $pageWidget->widget;
                $widgetClass = $widget->class;
                $content = $widget->content;
                $content->scenario = 'edit';
            }
            // Если указан id блока в общем
        } elseif ($widgetId > 0) {
            $widget = Widget::model()->findByPk($widgetId);
            $widgetClass = $widget->class;
            if ($widget) {
                $content = $widget->content;
                $content->scenario = 'edit';
            }
            // Если указан класс и id модели
        } elseif ($recordId > 0 && $modelClass) {
            $content = call_user_func(array($modelClass, 'model'))->findByPk($recordId);
            $content->scenario = 'edit';
            // Если указан только класс виджета
        } elseif ($widgetClass || $modelClass) {
            if ($widgetClass) {
                $modelClass = call_user_func(array($widgetClass, 'modelClassName'));
            }
            if (method_exists($modelClass, 'defaultObject')) {
                $content = call_user_func(array($modelClass, 'defaultObject'));
            } else {
                $content = new $modelClass();
            }
            $content->scenario = 'add';
        } else {
            $ret = false;
        }
        if (!isset($widget) && $content && $content->hasAttribute('widget_id')) {
            if (!empty($content->widget_id)) {
                $widget = $content->widget;
                $widgetClass = $widget->class;
            } elseif ($content->scenario == 'add') {
                $widget = new Widget();
            }
        }
        $modelClass = get_class($content);
        $langs = array_keys(I18nActiveRecord::getLangs(Yii::app()->language));
        // Если блок новый, заполняем его исходными данными
        if (isset($widget) && $widgetClass && $widget->isNewRecord) {
            $widget->class = $widgetClass;
            $widget->title = call_user_func(array($modelClass, 'modelName'));
            foreach ($langs as $lang) {
                $widget->{$lang . '_title'} = call_user_func(array($modelClass, 'modelName'), $lang);
            }
        }
        // Если указывается внешний ключ
        $sectionId = (int) $sectionId;
        if ($sectionId && $foreignAttribute && $content->hasAttribute($foreignAttribute)) {
            $content->{$foreignAttribute} = $sectionId;
        }
        // Делаем форму редактирования
        $id = 'WidgetEdit' . $modelClass;
        $widgetFormArray = call_user_func(array($modelClass, 'form'));
        $widgetFormArray['type'] = 'form';
        $widgetFormArray['id'] = $id;
        $showTitle = true;
        if (isset($widgetFormArray['title'])) {
            if ($widgetFormArray['title'] === false) {
                $showTitle = false;
            }
            unset($widgetFormArray['title']);
        }
        //  В окно редактирования свойств подключаем диалог для управления размещением
        //  todo: нужно исправить урл
        //        if (isset($pageWidget)) {
        //            $widgetFormArray['elements'][] = Form::tab('Размещение', '/?r=widget/setDialog&pageId='.$pageWidget->page_id.'&widgetId='.$pageWidget->widget_id.'&pageWidgetId='.$pageWidget->id);
        //        }
        $formArray = array('id' => $id, 'activeForm' => Form::ajaxify($id), 'action' => Yii::app()->request->getUrl(), 'buttons' => array('save' => array('type' => 'submit', 'label' => Yii::t('cms', 'Save'), 'title' => Yii::t('cms', 'Save and close window')), 'apply' => array('type' => 'submit', 'label' => Yii::t('cms', 'Apply'), 'title' => Yii::t('cms', 'Save and continue editing'))));
        if ($content->scenario == 'add') {
            $formArray['activeForm']['clientOptions']['afterValidate'] = 'js:function(f,d,h)' . <<<JS
{cmsAjaxSubmitForm(f,d,h, {
    onSuccess: function(html) {

        var params = \$(html).find('form').attr('action').split('&');
        for (var i=0; i<params.length; i++)
        {
            var a = params[i].split('=');
            if (a[0] == 'pageWidgetId') {
                var pageWidgetId = a[1];
            }
            if (a[0] == 'widgetId') {
                var widgetId = a[1];
            }
        }
        var prevPageWidgetId = '{$prevPageWidgetId}';
        var areaName = '{$area}';
        var widgetClass = '{$widgetClass}';
        var pageId = '{$pageId}';
        if (\$('#cms-pagewidget-'+pageWidgetId).length==0) {
            if (prevPageWidgetId != '0') {
                var prevPageWidget = \$('#cms-pagewidget-'+prevPageWidgetId);
            } else {
                var prevPageWidget = \$('#cms-area-'+areaName).find('.cms-empty-area-buttons').eq(0);
            }
            prevPageWidget.after('<div id="cms-pagewidget-'+pageWidgetId+'" class="cms-pagewidget cms-widget-'+widgetClass+'" rel="'+widgetClass+'" rev="'+widgetId+'" style="cursor:move;"></div>');
        }
        var pageWidget = \$('#cms-pagewidget-'+pageWidgetId);
        if (pageWidget.length) {
            var origBg = pageWidget.css('backgroundColor');
            cmsReloadPageWidget(pageWidgetId, '.cms-pagewidget[rev='+widgetId+']', function() {
                cmsAreaEmptyCheck();
            });
            pageWidget.css('backgroundColor', '#FFFF00').animate({
                backgroundColor: origBg
            }, 2500);
            \$.scrollTo('#cms-pagewidget-'+pageWidgetId, 'normal', {
                offset: -10
            });
        }


    }
});
}
JS;
        }
        if (substr($widgetFormArray['elements'][0], 0, 2) != Form::TAB_DELIMETER || substr($widgetFormArray['elements'][0], -2) != Form::TAB_DELIMETER) {
            $formArray['title'] = '';
        }
        if (method_exists($modelClass, 'modelName')) {
            if (is_subclass_of($modelClass, 'Content')) {
                $caption = array('icon' => call_user_func(array($modelClass, 'icon')), 'label' => call_user_func(array($modelClass, 'modelName')));
            } else {
                $caption = array('icon' => $content->icon(), 'label' => $content->modelName());
            }
        } else {
        }
        if (isset($widget)) {
            $formArray['elements']['widget'] = array('type' => 'form', 'id' => $id, 'elements' => array('title' => array('type' => 'text', 'maxlength' => 255, 'size' => 60)));
            if (Yii::app()->settings->getValue('showWidgetAppearance')) {
                $formArray['elements']['widget']['elements']['template'] = array('type' => 'TemplateSelect', 'className' => $widgetClass, 'hideDefault' => false, 'empty' => Yii::t('cms', '«accordingly to general settings»'));
                $widgetFormArray['elements'][] = Form::tab(Yii::t('cms', 'Appearance'));
            }
        }
        $formArray['elements']['content'] = $widgetFormArray;
        $form = new Form($formArray);
        if (isset($widget)) {
            $form['widget']->model = $widget;
        }
        $form['content']->model = $content;
        // ajax-валидация
        if (isset($widget)) {
            $this->performAjaxValidation(array($widget, $content));
        } else {
            $this->performAjaxValidation($content);
        }
        // Проверка и сохранение
        if ($form->submitted('save') || $form->submitted('apply')) {
            if (isset($widget)) {
                $widget = $form['widget']->model;
            }
            $content = $form['content']->model;
            if ($form->validate()) {
                if (isset($widget)) {
                    $isWidgetNew = $widget->isNewRecord;
                    if ($isWidgetNew && $content->isMaxLimitReached()) {
                        $ret = false;
                    }
                    if ($ret && $widget->save(false)) {
                        $formArray['action'] .= '&widgetId=' . $widget->id;
                        // Если блок новый, размещаем его на текущей странице
                        if ($isWidgetNew) {
                            $prevPageWidgetId = (int) $prevPageWidgetId;
                            $order = $prevPageWidgetId > 0 ? PageWidget::model()->findByPk($prevPageWidgetId)->order : -1;
                            if ($content->hasAttribute('page_id') && $content->page_id > 0) {
                                $pageWidget = $widget->setOnPage($content->page_id, $area, -1);
                            } else {
                                $pageWidget = $widget->setOnPage($pageId, $area, $order);
                            }
                            $formArray['action'] .= '&pageWidgetId=' . $pageWidget->id;
                        }
                        $content->widget_id = $widget->id;
                        $content->save(false);
                    }
                } else {
                    $content->save(false);
                    $formArray['action'] .= '&modelClass=' . get_class($content);
                    $formArray['action'] .= '&recordId=' . $content->id;
                }
            }
        }
        $form = new Form($formArray);
        if (isset($widget)) {
            $form['widget']->model = $widget;
        }
        $form['content']->model = $content;
        // Формируем ответ
        if ($return == 'html') {
            if ($ret) {
                $this->render('/form', compact('form', 'showTitle', 'caption', 'prevPageWidgetId', 'pageId', 'area'));
            } else {
                throw new CHttpException(500, Yii::t('cms', 'The requested page does not exist.'));
            }
        } elseif ($return == 'json') {
            echo CJavaScript::jsonEncode(array('pageWidgetId' => $pageWidget->id, 'widgetId' => $widget->id, 'contentId' => $content->id, 'status' => (int) $ret));
        }
    }
Example #9
0
 public static function form()
 {
     return array('elements' => array(Form::tab(Yii::t('cms', 'Page properties')), 'title' => array('type' => 'text', 'maxlength' => 255, 'size' => 60), 'parent_id' => array('type' => 'PageSelect', 'canClear' => false), 'keywords' => array('type' => 'textarea', 'rows' => 4, 'cols' => 40), 'description' => array('type' => 'textarea', 'rows' => 4, 'cols' => 40), Form::tab(Yii::t('cms', 'URL')), 'alias' => array('type' => 'text', 'maxlength' => 64, 'size' => 32), 'url' => array('type' => 'text', 'readonly' => true, 'size' => 55), Form::tab(Yii::t('cms', 'Extra')), 'redirect' => array('type' => 'Link', 'showFileManagerButton' => false, 'showUploadButton' => false), 'theme' => array('type' => 'ThemeSelect'), 'language' => array('type' => 'LanguageSelect'), Form::tab(Yii::t('cms', 'Access rights')), 'author_id' => array('type' => 'ComboBox', 'array' => CHtml::listData(User::model()->findAll(), 'id', 'fullname'))), 'buttons' => array('save' => array('type' => 'submit', 'label' => Yii::t('cms', 'Save'), 'title' => Yii::t('cms', 'Save and close window'))));
 }