Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 4
0
 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));
     }
 }
Ejemplo n.º 5
0
 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();
 }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
 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')));
 }
Ejemplo n.º 12
0
 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;
 }
Ejemplo n.º 13
0
 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;
 }
Ejemplo n.º 14
0
 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));
         }
     }
 }
Ejemplo n.º 15
0
 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));
             }
         }
     }
 }
Ejemplo n.º 16
0
 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);
 }
Ejemplo n.º 19
0
 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];
 }
Ejemplo n.º 20
0
 protected function _getChainedGenerator()
 {
     $class = Kwc_Abstract::getSetting($this->_class, 'masterComponentClass');
     $generatorKey = $this->_settings['generator'];
     return Kwf_Component_Generator_Abstract::getInstance($class, $generatorKey);
 }
Ejemplo n.º 21
0
 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;
 }
Ejemplo n.º 22
0
 /**
  * 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');
 }
Ejemplo n.º 24
0
 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;
 }
Ejemplo n.º 25
0
 /**
  * @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');
 }
Ejemplo n.º 27
0
 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;
 }
Ejemplo n.º 28
0
 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;
 }
Ejemplo n.º 29
0
 /**
  * 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);
 }