Exemplo n.º 1
0
 public function actionForm($type, $name, $default = '')
 {
     $files = array();
     $def = 0;
     $suggestions = array('' => '', '{dateformat pattern="d MMMM yyyy" time=$content.date}' => Yii::t('filesEditor', 'Function to show time'), '{link text="' . Yii::t('cms', 'Link') . '" url="view/index?pageId=1"}' => Yii::t('filesEditor', 'Function to show link, i.e. to page with ID=1'));
     if ($type == 'templates') {
         if (class_exists($name)) {
             $suggestions['{registercss file="file.css"}'] = Yii::t('filesEditor', 'Function to connect CSS-file');
             $suggestions['{registerjs file="file.js"}'] = Yii::t('filesEditor', 'Function to connect JavaScript-file');
             $suggestions['{publish file="file.js"}'] = Yii::t('filesEditor', 'Publish and return some file (i.e. image files)');
             $suggestions['{form action="/" method="POST" id="form-id" target="_blank"}'] = Yii::t('filesEditor', 'Generate form tag');
             if (Yii::app()->getViewRenderer() !== null) {
                 $extension = Yii::app()->getViewRenderer()->fileExtension;
             } else {
                 $extension = '.php';
             }
             $data = call_user_func(array($name, 'getTemplates'), $name, '', false);
             $files[] = array('name' => '', 'title' => Yii::t('filesEditor', '«default»'), 'writable' => false);
             foreach ($data as $file) {
                 $title = basename($file, $extension);
                 $files[] = array('name' => $title, 'title' => $title, 'writable' => is_writable($file));
                 if ($title == $default) {
                     $def = count($files) - 1;
                 }
             }
             $title = Yii::t('filesEditor', 'Widget «{name}» templates', array('{name}' => call_user_func(array($name, 'modelName'))));
             // Формируем подсказки:
             $suggestions['{$editMode}'] = Yii::t('filesEditor', 'Edit mode flag');
             $suggestions['{$language}'] = Yii::t('filesEditor', 'Language');
             $suggestions['{$isGuest}'] = Yii::t('filesEditor', 'Is user is a guest mode flag');
             if (method_exists($name, 'templateVars')) {
                 $vars = call_user_func(array($name, 'templateVars'));
                 foreach ($vars as $k => $v) {
                     $suggestions[$k] = Yii::t('filesEditor', 'Widget') . self::SUGGESTIONS_SEPARATOR . $v;
                 }
             }
             $objs = array('content' => $name, 'widget' => 'Widget', 'pageWidget' => 'PageWidget', 'page' => 'Page', 'user' => 'User');
             $names = array('widget' => Yii::t('filesEditor', 'Widget'), 'content' => Yii::t('filesEditor', 'Widget'), 'page' => Yii::t('filesEditor', 'Showing page'), 'pageWidget' => Yii::t('filesEditor', 'Widget location'), 'user' => Yii::t('filesEditor', 'User'));
             foreach ($objs as $param => $obj) {
                 $o = new $obj();
                 if (method_exists($o, 'attributeLabels') && method_exists($o, 'getAttributes')) {
                     $labels = $o->attributeLabels();
                     $attrs = $o->getAttributes();
                     foreach ($attrs as $attr => $value) {
                         if (isset($labels[$attr])) {
                             $k = '{$' . $param . '.' . $attr . '}';
                             $suggestions[$k] = $names[$param] . self::SUGGESTIONS_SEPARATOR . $labels[$attr];
                         }
                     }
                 }
             }
             $setts = call_user_func(array($name, 'settings'), $name);
             foreach ($setts as $k => $v) {
                 $var = '{$settings.local.' . $k . '}';
                 $suggestions[$var] = Yii::t('filesEditor', 'Settings for units «{name}»', array('{name}' => call_user_func(array($name, 'modelName')))) . self::SUGGESTIONS_SEPARATOR . $v['label'];
             }
         }
     } else {
     }
     $setts = SiteSettingsForm::attributeLabels();
     foreach ($setts as $k => $v) {
         $var = '{$settings.global.' . $k . '}';
         $suggestions[$var] = Yii::t('filesEditor', 'General settings') . self::SUGGESTIONS_SEPARATOR . $v;
     }
     $suggestions['{$userHostAddress}'] = Yii::t('filesEditor', 'User IP address');
     $suggestions['{$TIME}'] = Yii::t('filesEditor', 'Used time (seconds)');
     $suggestions['{$MEMORY}'] = Yii::t('filesEditor', 'Used memory (megabytes)');
     if (!empty($files)) {
         $id = 'FilesEditor_' . sprintf('%x', crc32(serialize($files) . $type . $name));
         $this->render('/form', array('id' => $id, 'files' => $files, 'type' => $type, 'name' => $name, 'title' => $title, 'default' => $def, 'suggestions' => $suggestions));
     }
 }