protected function _getRssEntries() { $select = $this->_getSelect(); if (!$select) { return array(); } $select->limit(10); if (!$select->hasPart('group')) { $select->group('id'); } $itemDirectory = $this->getData()->parent->getComponent()->getItemDirectory(); if (is_string($itemDirectory)) { $c = Kwc_Abstract::getComponentClassByParentClass($itemDirectory); $generator = Kwf_Component_Generator_Abstract::getInstance($c, 'detail'); $items = $generator->getChildData(null, $select); //TODO: callModifyItemData aufrufen } else { $items = $itemDirectory->getChildComponents($select); foreach ($items as $item) { $itemDirectory->getComponent()->callModifyItemData($item); } } $ret = array(); foreach ($items as $item) { $ret[] = $this->_getRssEntryByItem($item); } return $ret; }
public function getRows($where = null, $order = null, $limit = null, $start = null) { if (!is_object($where)) { $select = $this->select(); if ($where) { $select->where($where); } if ($order) { $select->order($order); } if ($limit || $start) { $select->limit($limit, $start); } } else { $select = $where; } $parentData = null; $itemDirectory = $this->getItemDirectory(); if (is_string($itemDirectory)) { $itemDirectoryClass = $itemDirectory; } else { $itemDirectoryClass = $itemDirectory->componentClass; $parentData = $itemDirectory; } $gen = Kwf_Component_Generator_Abstract::getInstance($itemDirectoryClass, 'detail'); $rowset = $gen->getChildData($parentData, $select); $rowset = array_values($rowset); return new $this->_rowsetClass(array('dataKeys' => $rowset, 'rowClass' => $this->_rowClass, 'model' => $this)); }
public function load($row, array $info = array()) { $gen = Kwf_Component_Generator_Abstract::getInstance($this->_componentClass, $this->_generatorKey); $edit = Kwf_Component_Abstract_ExtConfig_Abstract::getEditConfigs($this->_getComponentClassByRow($row), $gen, '{componentId}-{0}', ''); $this->_componentConfigs = array_merge($this->_componentConfigs, $edit['componentConfigs']); $ret = $edit['contentEditComponents']; $g = Kwc_Abstract::getSetting($this->_componentClass, 'generators'); if (isset($g['detail']['dbIdShortcut'])) { $dbId = $g['detail']['dbIdShortcut'] . $row->id; } else { $dbId = $row->component_id . $gen->getIdSeparator() . $row->id; } $components = Kwf_Component_Data_Root::getInstance()->getComponentsByDbId($dbId, array('ignoreVisible' => true)); if (isset($components[0])) { foreach (Kwf_Controller_Action_Component_PagesController::getSharedComponents($components[0]) as $cls => $cmp) { $cfg = Kwc_Admin::getInstance($cls)->getExtConfig(Kwf_Component_Abstract_ExtConfig_Abstract::TYPE_SHARED); foreach ($cfg as $k => $c) { if (!isset($this->_componentConfigs[$cls . '-' . $k])) { $this->_componentConfigs[$cls . '-' . $k] = $c; } $ret[] = array('componentClass' => $cls, 'type' => $k, 'idTemplate' => '{componentId}-{0}', 'componentIdSuffix' => ''); } } } return $ret; }
public function onDirectoryUpdate(Kwc_Directories_List_EventItemAbstract $event) { $datas = Kwf_Component_Generator_Abstract::getInstance($event->class, 'detail')->getChildData(null, array('id' => $event->itemId)); if (isset($datas[0])) { $directory = $datas[0]->parent; $this->fireEvent(new Kwf_Component_Event_ComponentClass_Tag_ContentChanged($this->_class, $directory->componentId)); } }
private function _getSubrootFromItemId($dirCls, $itemId) { $gen = Kwf_Component_Generator_Abstract::getInstance($dirCls, 'detail'); $datas = $gen->getChildData(null, array('id' => $itemId, 'ignoreVisible' => true)); if (!isset($datas[0])) { return null; } return $datas[0]->getSubroot(); }
public function testChildComponentClassesIncludingAlternative() { $g = Kwf_Component_Generator_Abstract::getInstance('Kwf_Component_Generator_GetRecursiveChildComponentsWithAlternativeComponent_Root', 'test1'); $c = $g->getChildComponentClasses(); $this->assertEquals(2, count($c)); $c = array_values($c); sort($c); $this->assertEquals(array('Kwf_Component_Generator_GetRecursiveChildComponentsWithAlternativeComponent_TestComponent1_Component', 'Kwf_Component_Generator_GetRecursiveChildComponentsWithAlternativeComponent_TestComponent2_Component'), $c); }
public function getListeners() { $ret = array(); $generator = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'detail'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Updated', 'callback' => 'onChildRowUpdate'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Inserted', 'callback' => 'onChildRowInsert'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Deleted', 'callback' => 'onChildRowDelete'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Model_Updated', 'callback' => 'onChildModelUpdated'); return $ret; }
public function testGetComponentByClass() { $components = Kwf_Component_Data_Root::getInstance()->getComponentsByClass('Kwf_Component_Generator_Recursive_Root'); $this->assertEquals(1, count($components)); $components = Kwf_Component_Data_Root::getInstance()->getComponentsBySameClass('Kwf_Component_Generator_Recursive_Root'); $this->assertEquals(1, count($components)); $generator = Kwf_Component_Generator_Abstract::getInstance('Kwf_Component_Generator_Recursive_Root', 'static'); $this->assertEquals(1, count($generator->getChildData(null, array('componentClass' => 'Kwf_Component_Generator_Recursive_Static')))); $this->assertNotNull($this->_root->getComponentByClass('Kwf_Component_Generator_Recursive_Static')); }
protected function _getConfig() { $detail = Kwc_Abstract::getChildComponentClass($this->_class, 'child'); $gen = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'child'); $edit = Kwf_Component_Abstract_ExtConfig_Abstract::getEditConfigs($detail, $gen); $config = $this->_getStandardConfig('kwc.list.listEditButton', 'ListEditButton'); $config['componentConfigs'] = $edit['componentConfigs']; $config['contentEditComponents'] = $edit['contentEditComponents']; $config['needsComponentPanel'] = true; return array('list' => $config); }
protected function _getConfig() { $detail = Kwc_Abstract::getChildComponentClass($this->_class, 'child'); $gen = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'child'); $edit = Kwf_Component_Abstract_ExtConfig_Abstract::getEditConfigs($detail, $gen); $config = $this->_getStandardConfig('kwc.list.list'); $config['componentConfigs'] = $edit['componentConfigs']; $config['contentEditComponents'] = $edit['contentEditComponents']; $config['useInsertAdd'] = true; $config['listTitle'] = null; $config['editForms'] = array(); return array('list' => $config); }
protected function _initColumns() { $this->_columns->add(new Kwf_Grid_Column_Visible()); $this->_columns->add(new Kwf_Grid_Column('component_class'))->setData(new Kwf_Data_Kwc_ComponentClass($this->_getParam('class'))); $this->_columns->add(new Kwf_Grid_Column('component_name'))->setData(new Kwf_Data_Kwc_ComponentName($this->_getParam('class'))); $this->_columns->add(new Kwf_Grid_Column('component_icon'))->setData(new Kwf_Data_Kwc_ComponentIcon($this->_getParam('class'))); $this->_columns->add(new Kwf_Grid_Column('preview'))->setData(new Kwf_Data_Kwc_Frontend($this->_getParam('class')))->setRenderer('component'); $this->_columns->add(new Kwf_Grid_Column('device_visible'))->setEditor(new Kwf_Form_Field_TextField()); foreach (Kwf_Component_Data_Root::getInstance()->getPlugins('Kwf_Component_PluginRoot_Interface_GeneratorProperty') as $plugin) { $params = $plugin->getGeneratorProperty(Kwf_Component_Generator_Abstract::getInstance($this->_getParam('class'), 'paragraphs')); if ($params) { $editor = new Kwf_Form_Field_Select(); $editor->setValues($params['values'])->setListWidth(200); $this->_columns->add(new Kwf_Grid_Column($params['name']))->setEditor($editor)->setData(new Kwf_Component_PluginRoot_GeneratorProperty_Data($plugin)); } } $this->_columns->add(new Kwf_Grid_Column('edit_components'))->setData(new Kwf_Data_Kwc_EditComponents($this->_getParam('class'))); }
public function getListeners() { $ret = parent::getListeners(); // master model $masterComponentClass = Kwc_Abstract::getSetting($this->_class, 'masterComponentClass'); $ret[] = array('class' => $masterComponentClass, 'event' => 'Kwc_Directories_List_EventItemUpdated', 'callback' => 'onMasterChildRowUpdate'); $ret[] = array('class' => $masterComponentClass, 'event' => 'Kwc_Directories_List_EventItemInserted', 'callback' => 'onMasterChildRowInsert'); $ret[] = array('class' => $masterComponentClass, 'event' => 'Kwc_Directories_List_EventItemDeleted', 'callback' => 'onMasterChildRowDelete'); $ret[] = array('class' => $masterComponentClass, 'event' => 'Kwc_Directories_List_EventItemsUpdated', 'callback' => 'onMasterChildModelUpdated'); // trl model (optional) $generator = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'detail'); if ($generator->getModel()) { $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Updated', 'callback' => 'onChildRowUpdate'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Inserted', 'callback' => 'onChildRowInsert'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Row_Deleted', 'callback' => 'onChildRowDelete'); $ret[] = array('class' => get_class($generator->getModel()), 'event' => 'Kwf_Events_Event_Model_Updated', 'callback' => 'onChildModelUpdated'); } return $ret; }
protected function _getMultiFields() { $multifields = new Kwf_Form_Field_MultiFields('Children'); $multifields->setMinEntries(0); $multifields->setPosition(true); if (Kwc_Abstract::getSetting($this->getClass(), 'hasVisible')) { $multifields->fields->add(new Kwf_Form_Field_Checkbox('visible', trlKwf('Visible'))); } foreach (Kwf_Component_Data_Root::getInstance()->getPlugins('Kwf_Component_PluginRoot_Interface_GeneratorProperty') as $plugin) { $params = $plugin->getGeneratorProperty(Kwf_Component_Generator_Abstract::getInstance($this->getClass(), 'child')); if ($params) { $multifields->fields->add(new Kwf_Form_Field_Select($params['name'], $params['label']))->setValues($params['values'])->setDefaultValue($params['defaultValue'])->setData(new Kwf_Component_PluginRoot_GeneratorProperty_Data($plugin, $this)); } } $form = Kwc_Abstract_Form::createChildComponentForm($this->getClass(), 'child'); $form->setIdTemplate('{component_id}-{id}'); $multifields->fields->add($form); return $multifields; }
protected function _initColumns() { parent::_initColumns(); $this->_columns->add(new Kwf_Grid_Column_Visible()); if ($this->_showChildComponentGridColumns) { $c = Kwc_Abstract::getChildComponentClass($this->_getParam('class'), 'child'); foreach (Kwc_Admin::getInstance($c)->gridColumns() as $i) { $this->_columns->add($i); } } foreach (Kwf_Component_Data_Root::getInstance()->getPlugins('Kwf_Component_PluginRoot_Interface_GeneratorProperty') as $plugin) { $params = $plugin->getGeneratorProperty(Kwf_Component_Generator_Abstract::getInstance($this->_getParam('class'), 'child')); if ($params) { $editor = new Kwf_Form_Field_Select(); $editor->setValues($params['values'])->setListWidth(200); $this->_columns->add(new Kwf_Grid_Column($params['name'], $params['label']))->setEditor($editor)->setShowDataIndex($params['name'] . '_text')->setData(new Kwf_Component_PluginRoot_GeneratorProperty_Data($plugin)); $this->_columns->add(new Kwf_Grid_Column($params['name'] . '_text'))->setData(new Kwf_Component_PluginRoot_GeneratorProperty_DataText($plugin)); } } }
public function onRowUpdate(Kwf_Events_Event_Row_Updated $event) { foreach ($this->_getComponentsByRow($event->row) as $c) { if ($c->componentClass == $this->_class) { $generator = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'child'); $child = $c->getChildComponent(array('id' => $generator->getIdSeparator() . $event->row->{$generator->getIdColumn()}, 'ignoreVisible' => true)); $this->fireEvent(new Kwf_Component_Event_Component_ContentChanged($this->_class, $c)); if (Kwc_Abstract::getSetting($this->_class, 'hasVisible') && $event->isDirty('visible')) { $this->fireEvent(new Kwf_Component_Event_Component_HasContentChanged($this->_class, $c)); if ($event->row->visible) { $this->fireEvent(new Kwc_Abstract_List_EventItemInserted($this->_class, $child)); } else { $this->fireEvent(new Kwc_Abstract_List_EventItemDeleted($this->_class, $child)); } } else { $this->fireEvent(new Kwc_Abstract_List_EventItemUpdated($this->_class, $child)); } } } }
protected function _createChildComponentForm($id, $name = null) { if (substr($id, 0, 1) != '-' && substr($id, 0, 1) != '_') { throw new Kwf_Exception("'-' or '_' is missing in id"); } if (!$name) { $name = substr($id, 1); } $idTemplate = '{0}' . $id; $childComponentClass = null; $detailClass = $this->getClass(); foreach (Kwc_Abstract::getSetting($detailClass, 'generators') as $generatorKey => $generatorData) { $generator = Kwf_Component_Generator_Abstract::getInstance($detailClass, $generatorKey); if ($generator->getIdSeparator() != substr($id, 0, 1)) { continue; } $childComponentClass = $generator->getComponentByKey(substr($id, 1)); if ($childComponentClass) { break; } } if (!$childComponentClass) { throw new Kwf_Exception("No child component with id '{$id}' for '{$detailClass}' found."); } $form = Kwc_Abstract_Form::createComponentForm($childComponentClass, $name); if (!$form) { return null; } $detailGen = Kwf_Component_Generator_Abstract::getInstance($this->getDirectoryClass(), 'detail'); if ($detailGen->hasSetting('dbIdShortcut')) { $dbIdShortcut = $detailGen->getSetting('dbIdShortcut'); $form->setIdTemplate($dbIdShortcut . $idTemplate); } else { if (!$detailGen->getModel()->hasColumn('component_id')) { throw new Kwf_Exception("Model '" . get_class($detailGen->getModel()) . "' doesn't have component_id column"); } $form->setIdTemplate('{component_id}' . $detailGen->getIdSeparator() . $idTemplate); } return $form; }
public function _initFields() { $class = $this->_getParam('class'); $this->_form->setModel(Kwc_Abstract::createChildModel($class)); $gen = Kwf_Component_Generator_Abstract::getInstance($this->_getParam('class'), 'detail'); $detailClasses = Kwc_Abstract::getChildComponentClasses($class, 'detail'); $forms = array(); foreach ($detailClasses as $key => $detailClass) { $formClass = Kwc_Admin::getComponentClass($detailClass, 'Form'); $form = new $formClass($key, $detailClass, $class); $form->setIdTemplate('{0}'); $form->setCreateMissingRow(true); $form->setModel($this->_form->getModel()); $forms[$key] = $form; } if (count($forms) == 1) { $this->_form->add(reset($forms)); } else { $cards = $this->_form->add(new Kwf_Form_Container_Cards('component', trlKwf('Type')))->setComboBox(new Kwf_Form_Field_Hidden('component')); $cards->getCombobox()->setWidth(250)->setListWidth(250)->setAllowBlank(false)->setData(new Kwc_Directories_Item_Directory_Trl_FormController_ComponentData('component')); foreach ($forms as $key => $form) { $card = $cards->add(); $card->add($form); $card->setTitle(Kwf_Trl::getInstance()->trlStaticExecute(Kwc_Abstract::getSetting($form->getClass(), 'componentName'))); $card->setName($key); $card->setNamePrefix($key); } $cards->getCombobox()->getData()->cards = $cards->fields; } $classes = Kwc_Abstract::getChildComponentClasses($class); foreach ($classes as $class) { $formName = Kwc_Admin::getComponentClass($class, 'ItemEditForm'); if ($formName) { $this->_form->add(new $formName('detail', $class, $this->_getParam('componentId'))); } } }
protected function _getConfig() { $gen = Kwf_Component_Generator_Abstract::getInstance($this->_class, 'detail'); $generators = Kwc_Abstract::getSetting($this->_class, 'generators'); $idTemplate = null; if (isset($generators['detail']['dbIdShortcut'])) { $idTemplate = $generators['detail']['dbIdShortcut'] . '{0}'; } $componentPlugins = array(); foreach ($this->_getAdmin()->getPluginAdmins() as $a) { $plugin = $a->getPluginExtConfig(); if ($plugin) { $componentPlugins[] = $plugin; } } $config = $this->_getStandardConfig('kwc.directories.item.directory'); $detailClasses = Kwc_Abstract::getChildComponentClasses($this->_class, 'detail'); $componentConfigs = array(); $contentEditComponents = array(); foreach ($detailClasses as $type => $detailClass) { $edit = Kwf_Component_Abstract_ExtConfig_Abstract::getEditConfigs($detailClass, $gen, $idTemplate, ''); $componentConfigs = array_merge($componentConfigs, $edit['componentConfigs']); foreach ($edit['contentEditComponents'] as $ec) { $ec['component'] = $type; $contentEditComponents[] = $ec; } } $config['componentConfigs'] = $componentConfigs; $config['contentEditComponents'] = $contentEditComponents; $config['componentPlugins'] = $componentPlugins; $config['needsComponentPanel'] = true; $config['countDetailClasses'] = count($detailClasses); $config['idSeparator'] = $gen->getIdSeparator(); $config['multiFileUpload'] = Kwc_Abstract::getSetting($this->_class, 'multiFileUpload'); return array('items' => $config); }
private function _getGeneratorsForClasses($lookingForClasses) { $cacheId = 'genForCls' . $this->getComponentClass() . str_replace('.', '_', implode('', $lookingForClasses)); if (isset($this->_generatorsForClassesCache[$cacheId])) { } else { if (($generators = Kwf_Cache_SimpleStatic::fetch($cacheId)) !== false) { $ret = array(); foreach ($generators as $g) { $ret[] = Kwf_Component_Generator_Abstract::getInstance($g[0], $g[1]); } $this->_generatorsForClassesCache[$cacheId] = $ret; } else { $generators = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { foreach (Kwc_Abstract::getSetting($c, 'generators') as $key => $generator) { foreach ($generator['component'] as $childClass) { if (in_array($childClass, $lookingForClasses)) { $generators[$c . $key] = array($c, $key); } } } } $generators = array_values($generators); Kwf_Cache_SimpleStatic::add($cacheId, $generators); $ret = array(); foreach ($generators as $g) { $ret[] = Kwf_Component_Generator_Abstract::getInstance($g[0], $g[1]); } $this->_generatorsForClassesCache[$cacheId] = $ret; } } return $this->_generatorsForClassesCache[$cacheId]; }
protected function _getChainedGenerator() { $class = Kwc_Abstract::getSetting($this->_class, 'masterComponentClass'); $generatorKey = $this->_settings['generator']; return Kwf_Component_Generator_Abstract::getInstance($class, $generatorKey); }
public function getPagingCount($select = null) { if (!$select) { $select = $this->_getSelect(); } if (!$select) { return 0; } $dir = $this->getData()->parent->getComponent()->getItemDirectory(); if (is_string($dir)) { $c = Kwc_Abstract::getComponentClassByParentClass($dir); $generator = Kwf_Component_Generator_Abstract::getInstance($c, 'detail'); $ret = $generator->countChildData(null, $select); } else { $ret = $dir->countChildComponents($select); } if ($select->hasPart(Kwf_Model_Select::LIMIT_COUNT)) { $limitCount = $select->getPart(Kwf_Model_Select::LIMIT_COUNT); if ($ret > $limitCount) { $ret = $limitCount; } } return $ret; }
/** * Returns child component classes of a componentclass or a componentData * * @param string|Kwf_Component_Data if data inherited generators are returned as well * @param array Optional filtering (string to get for one generator) */ public static function getChildComponentClasses($class, $select = array()) { $selectType = gettype($select); if ($selectType == 'string' && is_string($class)) { //simple case no. 1: get from specific generator $g = Kwc_Abstract::getSetting($class, 'generators'); if (!isset($g[$select])) { return array(); } return $g[$select]['component']; } else { if (!$select && is_string($class)) { //simple case no. 2: get 'em all $ret = array(); foreach (Kwc_Abstract::getSetting($class, 'generators') as $g) { $ret = array_merge($ret, $g['component']); } return array_unique($ret); } else { if ($selectType == 'array' && is_string($class) && count($select) == 1 && isset($select['componentClass']) && count($select['componentClass']) == 1) { //simple case no 3: looking for a single comopnentClass foreach (Kwc_Abstract::getSetting($class, 'generators') as $g) { foreach ($g['component'] as $c) { if ($c == $select['componentClass']) { return array($c); } } } return array(); } else { if ($selectType == 'array' && is_string($class) && count($select) == 1 && isset($select['generatorFlags']) && $select['generatorFlags'] == array('static' => true)) { //simple case no 4: looking for a generator by flag $ret = array(); foreach (Kwc_Abstract::getSetting($class, 'generators') as $key => $gSettings) { $g = Kwf_Component_Generator_Abstract::getInstance($class, $key, $gSettings); if ($g->getGeneratorFlag('static')) { foreach ($gSettings['component'] as $c) { $ret[] = $c; } } } return array_unique($ret); } else { if ($selectType == 'array' && is_string($class) && count($select) == 2 && isset($select['generator']) && isset($select['componentKey'])) { //simple case no 5: looking for a generator plus componentKey $ret = array(); $generators = Kwc_Abstract::getSetting($class, 'generators'); if (isset($generators[$select['generator']]['component'][$select['componentKey']])) { $ret[] = $generators[$select['generator']]['component'][$select['componentKey']]; } return $ret; } else { if ($selectType == 'array') { $select = new Kwf_Component_Select($select); } } } } } } //not so simple, else we ask Generator_Abstract::getInstances for help $ret = array(); $generators = Kwf_Component_Generator_Abstract::getInstances($class, $select); if (!$generators) { return $ret; } foreach ($generators as $generator) { $c = $generator->getChildComponentClasses($select); if (!$select->hasPart(Kwf_Component_Select::WHERE_GENERATOR)) { $c = array_values($c); } $ret = array_merge($ret, $c); } if (!$select->hasPart(Kwf_Component_Select::WHERE_GENERATOR)) { $ret = array_unique($ret); } return $ret; }
protected function _getChainedGenerator() { return Kwf_Component_Generator_Abstract::getInstance('Kwc_Cc_CopyPages_Root', 'page'); }
public function getSelect() { $itemDirectory = $this->getItemDirectory(); if (!$itemDirectory) { return null; } if (is_string($itemDirectory)) { if ($this->_getSetting('useDirectorySelect')) { throw new Kwf_Exception("If itemDirectory is a ComponentClass you can't use 'useDirectorySelect' setting"); } $c = Kwc_Abstract::getComponentClassByParentClass($itemDirectory); $ret = Kwf_Component_Generator_Abstract::getInstance($c, 'detail')->select(null); } else { if ($this->_getSetting('useDirectorySelect')) { $ret = $itemDirectory->getComponent()->getSelect(); } else { $ret = $itemDirectory->getGenerator('detail')->select($this->getItemDirectory()); } } if (Kwc_Abstract::hasSetting($this->getData()->componentClass, 'order')) { throw new Kwf_Exception("Setting 'order' (" . get_class($this) . ") doesn't exist anymore - overwrite getSelect for a custom order"); } return $ret; }
/** * @return Kwc_Abstract_Form **/ public static function createChildComponentForm($componentClass, $id, $name = null) { if (substr($id, 0, 1) == '-' || substr($id, 0, 1) == '_') { $id = substr($id, 1); } if (!$name) { $name = $id; } $idTemplate = '{0}'; $childComponentClass = null; //TODO: wenns mal benötigt wird recursiv die id weiter nach unten gehen und komponenten suchen foreach (Kwc_Abstract::getSetting($componentClass, 'generators') as $generatorKey => $generatorData) { $generator = Kwf_Component_Generator_Abstract::getInstance($componentClass, $generatorKey); if ($childComponentClass = $generator->getComponentByKey($id)) { $idTemplate .= $generator->getIdSeparator() . $id; break; } } if (!$childComponentClass) { throw new Kwf_Exception("No child component with id '{$id}' for '{$componentClass}' found."); } $form = self::createComponentForm($childComponentClass, $name); if ($form) { $form->setIdTemplate($idTemplate); } return $form; }
protected function _getChainedGenerator() { $class = Kwc_Abstract::getSetting($this->_class, 'pageGeneratorComponentClass'); return Kwf_Component_Generator_Abstract::getInstance($class, 'page'); }
protected function _formatSelect($parentData, $select) { $ret = parent::_formatSelect($parentData, $select); if (!$ret) { return $ret; } $dateColumn = Kwc_Abstract::getSetting($this->_class, 'dateColumn'); $ret->group($this->_getSelectGroup($dateColumn)); $ret->order($dateColumn, 'DESC'); if (!$parentData) { //hier können wir nicht so wie unten den detail generator verwenden da wir //die parent->componentClass nicht wissen //wenn also kein $parentData übergeben stimmt der rückgabewert uU nicht if ($this->_getModel()->hasColumn('component_id')) { $page = $select->getPart(Kwf_Component_Select::WHERE_CHILD_OF); if (!$page) { return null; } $ret->where(new Kwf_Model_Select_Expr_Like('component_id', $page->dbId . '-%')); } } else { //den detail generator vom "haupt" directory holen und das select formatieren lassen //der kann korrekt where component_id einfügen oder andere wheres $c = $parentData->parent; if (is_instance_of($c->componentClass, 'Kwc_Directories_YearMonth_Component')) { $c = $c->parent; } $g = Kwf_Component_Generator_Abstract::getInstance($c->componentClass, 'detail'); $ret->merge($g->_formatSelect($c, array())); } return $ret; }
protected function _duplicateRow($source, $parentTarget) { $ret = null; if ($this->_getUseComponentId()) { //only duplicate rows that are scoped to source component (using component_id) if (count($this->_settings['component']) > 1) { $targetGen = Kwf_Component_Generator_Abstract::getInstance($parentTarget->componentClass, $this->getGeneratorKey()); if (!array_key_exists($source->row->component, $targetGen->_settings['component'])) { //ignore, component doesn't exist in target generator (we have incompatible generators) return null; } } $ret = $source->row->duplicate(array('component_id' => $parentTarget->dbId)); } else { $ret = $source->row; } return $ret; }
/** * Returns a generator of this data * * shortcut for Kwf_Component_Generator_Abstract::getInstance($data->componentClass, $key); * * @param string generator key * @return Kwf_Component_Generator_Abstract */ public function getGenerator($key) { return Kwf_Component_Generator_Abstract::getInstance($this->componentClass, $key); }
private function _getGenerator($class, $generatorKey) { return Kwf_Component_Generator_Abstract::getInstance($class, $generatorKey); }