/** * Тест установки sitemap-индекса к конфигу */ public function testSelectControlNames() { SystemRegisterSample::clearCache(); $fileList = \DAO_FileSystem::getInstance()->getFileList(LIB_PATH . 'custom_config/controls/'); $list = CConfigControlManager::selectAll(); $this->assertEquals(sizeof($fileList), sizeof($list)); // Добавляем в реестр файлег, но не пишем класс $path = LIB_PATH . 'custom_config/test.php'; $register = new SystemRegister('Applications/cconfig/user_control_path'); $register->insert('test', $path, ''); file_put_contents($path, ''); $list = CConfigControlManager::selectAll(); $this->assertEquals(sizeof($fileList), sizeof($list)); // Заполняем инфо о классе, таким образом класс становится доступным $path = 'custom_config/test2.php'; $contents = <<<EOD <? class CConfigControl_Test2 extends CConfigBaseControl { \tpublic function getXType() { \t\treturn "test2"; \t} } ?> EOD; file_put_contents(LIB_PATH . $path, $contents); $register->insert('test2', $path, ''); $list = CConfigControlManager::selectAll(); $this->assertEquals(sizeof($fileList) + 1, sizeof($list)); }
protected function loadControls() { // Загружаем контролы $sql = 'select * from `%s` WHERE `schemaId`="%s" ORDER by `order` ASC'; $sql = sprintf($sql, CCONFIG_CONTROL_TABLE, $this->id); $data = DB::query($sql); // Конвертируем в объекты $result = array(); foreach ($data as $row) { $result[] = CConfigControlManager::createControl($row['id'], $row['name'], $row['xtype'], $row['title'], $row['config'], $row['value'], $this); } $this->controls = $result; }
/** * Отображает форму добавления нового контрола * @todo Сделать поддержку настраиваемых конфигов */ protected function outputAddControlForm() { // $controls = CConfigControlManager::selectAll(); foreach ($controls as $key => $row) { $controls[$key] = array('id' => $key, 'name' => call_user_func(array($row, 'getControlTitle'))); } // Выводим поля для вставки: имя, тайтл, селект выбора типа $name = new CInput(); $name->name = 'name'; $title = new CInput(); $title->name = 'title'; $xtype = new CSelect(); $xtype->name = 'xtype'; $xtype->items = $controls; // $design = CMSDesign::getInstance(); $design->forms->begin(); $design->table->begin(); $design->table->row2cell('Сист. имя', $name); $design->table->row2cell('Подпись к контролу', $title); $design->table->row2cell('Тип', $xtype); $design->table->end(); $design->forms->hidden('schema', $this->schema->getName()); $design->forms->submit('add', 'Добавить'); $design->forms->end(); }