public function addBlock($blockTypeHandle) { $bt = BlockType::getByHandle($blockTypeHandle); $cct = ComposerControlType::getByHandle('block'); $control = $ctca->getPageTypeComposerControlByIdentifier($bt->getBlockID()); // add control $composerFLS = $control->addToPageTypeComposerFormLayoutSet($this->layoutSet); }
public function execute(Batch $batch) { $types = $batch->getObjectCollection('page_type'); /** * @var \PortlandLabs\Concrete5\MigrationTool\Entity\Import\PageType\PageType */ if (!$types) { return; } foreach ($types->getTypes() as $type) { if (!$type->getPublisherValidator()->skipItem()) { $pkg = null; if ($type->getPackage()) { $pkg = \Package::getByHandle($type->getPackage()); } $defaultTemplate = Template::getByHandle($type->getDefaultTemplate()); $templates = array(); if ($type->getAllowedTemplates() == 'C' || $type->getAllowedTemplates() == 'X') { foreach ($type->getTemplates() as $templateHandle) { $templates[] = Template::getByHandle($templateHandle); } } $data = array('handle' => $type->getHandle(), 'name' => $type->getName(), 'defaultTemplate' => $defaultTemplate, 'allowedtempates' => $type->getAllowedTemplates(), 'internal' => $type->getIsInternal(), 'ptLaunchInComposer' => $type->getLaunchInComposer(), 'ptIsFrequentlyAdded' => $type->getIsFrequentlyAdded(), 'templates' => $templates); $pageType = \Concrete\Core\Page\Type\Type::add($data, $pkg); foreach ($type->getLayoutSets() as $set) { $layoutSet = $pageType->addPageTypeComposerFormLayoutSet($set->getName(), $set->getDescription()); /** * @var \PortlandLabs\Concrete5\MigrationTool\Entity\Import\PageType\ComposerFormLayoutSetControl */ foreach ($set->getControls() as $controlEntity) { $controlType = \Concrete\Core\Page\Type\Composer\Control\Type\Type::getByHandle($controlEntity->getHandle()); $control = $controlType->configureFromImportHandle($controlEntity->getItemIdentifier()); $setControl = $control->addToPageTypeComposerFormLayoutSet($layoutSet, true); $setControl->updateFormLayoutSetControlRequired($controlEntity->getIsRequired()); $setControl->updateFormLayoutSetControlCustomTemplate($controlEntity->getCustomTemplate()); $setControl->updateFormLayoutSetControlCustomTemplate($controlEntity->getCustomLabel()); $setControl->updateFormLayoutSetControlDescription($controlEntity->getDescription()); } } } } }
public function getPageTypeComposerControlTypeObject() { return PageTypeComposerControlType::getByHandle($this->ptComposerControlTypeHandle); }
public static function import($node) { $types = array(); if ((string) $node->pagetemplates['type'] == 'custom' || (string) $node->pagetemplates['type'] == 'except') { if ((string) $node->pagetemplates['type'] == 'custom') { $ptAllowedPageTemplates = 'C'; } else { $ptAllowedPageTemplates = 'X'; } foreach ($node->pagetemplates->pagetemplate as $pagetemplate) { $types[] = PageTemplate::getByHandle((string) $pagetemplate['handle']); } } else { $ptAllowedPageTemplates = 'A'; } $ptName = (string) $node['name']; $ptHandle = (string) $node['handle']; $db = Loader::db(); $defaultPageTemplate = PageTemplate::getByHandle((string) $node->pagetemplates['default']); $ptID = $db->GetOne('select ptID from PageTypes where ptHandle = ?', array($ptHandle)); $data = array('handle' => $ptHandle, 'name' => $ptName); if ($defaultPageTemplate) { $data['defaultTemplate'] = $defaultPageTemplate; } if ($ptAllowedPageTemplates) { $data['allowedTemplates'] = $ptAllowedPageTemplates; } if ($node['internal']) { $data['internal'] = true; } $data['ptLaunchInComposer'] = 0; if ($node['launch-in-composer'] == '1') { $data['ptLaunchInComposer'] = 1; } $data['ptIsFrequentlyAdded'] = 0; if ($node['is-frequently-added'] == '1') { $data['ptIsFrequentlyAdded'] = 1; } $data['templates'] = $types; $pkg = false; if ($node['package']) { $pkg = Package::getByHandle((string) $node['package']); } if ($ptID) { $cm = static::getByID($ptID); $cm->update($data); } else { $cm = static::add($data, $pkg); } $node = $node->composer; if (isset($node->formlayout->set)) { foreach ($node->formlayout->set as $setnode) { $set = $cm->addPageTypeComposerFormLayoutSet((string) $setnode['name'], (string) $setnode['description']); if (isset($setnode->control)) { foreach ($setnode->control as $controlnode) { $controltype = PageTypeComposerControlType::getByHandle((string) $controlnode['type']); $control = $controltype->configureFromImportHandle((string) $controlnode['handle']); $setcontrol = $control->addToPageTypeComposerFormLayoutSet($set, true); $required = (string) $controlnode['required']; $customTemplate = (string) $controlnode['custom-template']; $label = (string) $controlnode['custom-label']; $description = (string) $controlnode['description']; $outputControlID = (string) $controlnode['output-control-id']; if ($required == '1') { $setcontrol->updateFormLayoutSetControlRequired(true); } else { $setcontrol->updateFormLayoutSetControlRequired(false); } if ($customTemplate) { $setcontrol->updateFormLayoutSetControlCustomTemplate($customTemplate); } if ($label) { $setcontrol->updateFormLayoutSetControlCustomLabel($label); } if ($description) { $setcontrol->updateFormLayoutSetControlDescription($description); } if ($outputControlID) { ContentImporter::addPageTypeComposerOutputControlID($setcontrol, $outputControlID); } } } } } }
public function install() { $pkg = parent::install(); // Dashboard Page $sp = SinglePage::add('/dashboard/forums', $pkg); if (is_object($sp)) { $sp->update(array('cName' => t('Forums'), 'cDescription' => t('Forums Dashboard'))); } // Add Sidebar block set BlockTypeSet::add('forums', 'Forums', $pkg); // Add forum moderator user group $forumGroup = Group::getByName('Forum Moderators'); if (!is_object($authorGroup)) { Group::add('Forum Moderators', t('Forum Moderators, delete, edit, approve')); } // install blocks BlockType::installBlockTypeFromPackage('webli_forum_post', $pkg); BlockType::installBlockTypeFromPackage('webli_forum_list', $pkg); BlockType::installBlockTypeFromPackage('webli_forum_search', $pkg); BlockType::installBlockTypeFromPackage('webli_forum_archive', $pkg); BlockType::installBlockTypeFromPackage('webli_forum_tags', $pkg); // Add Collection Attribute Set $akCat = AttributeKeyCategory::getByHandle('collection'); $akCat->setAllowAttributeSets(AttributeKeyCategory::ASET_ALLOW_SINGLE); $akCatSet = $akCat->addSet('forums', t('Forums'), $pkg); // Add Collection Attributes $attribute = CollectionAttributeKey::getByHandle('forum_post'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('textarea'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_post', 'akName' => t('Forum Post'), 'akIsSearchableIndexed' => true, 'akTextareaDisplayMode' => 'rich_text'), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_category'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('boolean'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_category', 'akName' => t('Forum Category')), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_email'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('text'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_email', 'akName' => t('Forum Email Address'), 'akIsSearchableIndexed' => true), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_name'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('text'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_name', 'akName' => t('Forum Name'), 'akIsSearchableIndexed' => true), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_pin'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('boolean'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_pin', 'akName' => t('Pin Forum Post')), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_post_approved'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('boolean'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_post_approved', 'akName' => t('Forum Post Approved')), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('tags'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('select'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'tags', 'akName' => t('Tags'), 'akIsSearchableIndexed' => true), $pkg)->setAttributeSet($akCatSet); } $attribute = CollectionAttributeKey::getByHandle('forum_image'); if (!is_object($attribute)) { $att = AttributeType::getByHandle('image_file'); // add to attribute set CollectionAttributeKey::add($att, array('akHandle' => 'forum_image', 'akName' => t('Forum Image')), $pkg)->setAttributeSet($akCatSet); $addAttribute = CollectionAttributeKey::getByHandle('forum_image'); } // Add top level Forums Page $forumPage = \Page::getByPath('/forums'); if (!is_object($forumPage) || $forumPage->cID == null) { $parentPage = \Page::getByID(1); $pageType = \PageType::getByHandle('right_sidebar'); $template = \PageTemplate::getByHandle('right_sidebar'); $forumsPage = $parentPage->add($pageType, array('cName' => t('Forums'), 'cDescription' => t('Top Level Forums Page'), 'cHandle ' => 'forums'), $template); //Add forum_category page attribute $forumsPage->setAttribute('forum_category', 1); } // Add top Forum Search Results Page $forumSearchPage = \Page::getByPath('/forum-search'); if (!is_object($forumSearchPage) || $forumSearch->cID == null) { $parentPage = \Page::getByID(1); $pageType = \PageType::getByHandle('right_sidebar'); $template = \PageTemplate::getByHandle('right_sidebar'); $forumSearchPage = $parentPage->add($pageType, array('cName' => t('Forum Search'), 'cDescription' => t('Forum Search Page'), 'cHandle ' => 'forum-search'), $template); $forumSearchPage->setAttribute('exclude_nav', 1); } // Add Forum Post Page Template if (!is_object(PageTemplate::getByHandle('forum_post'))) { $pageTemplate = PageTemplate::add('forum_post', 'Forum Post', 'landing.png', $pkg); } // Add Forum Post Page Type if (!is_object(PageType::getByHandle('forum_post'))) { $data = array('handle' => 'forum_post', 'name' => 'Forum Post', 'ptLaunchInComposer' => true, 'ptIsFrequentlyAdded' => true, 'defaultTemplate' => PageTemplate::getByHandle('forum_post'), 'allowedTemplates' => 'C', 'templates' => array(PageTemplate::getByHandle('forum_post'))); $pt = PageType::add($data, $pkg); } /* Get blog_post page template */ $pageType = \PageType::getByHandle('forum_post'); $ctTemplate = $pageType->getPageTypeDefaultPageTemplateObject(); $forumPostTemplate = $pageType->getPageTypePageTemplateDefaultPageObject($ctTemplate); /* Add Composer Layouts */ $basics = $pageType->addPageTypeComposerFormLayoutSet('Basics', 'Basic Info'); $post = $pageType->addPageTypeComposerFormLayoutSet('Forum Post', 'Forum Post'); /* Add Built in Properties */ $cct = ComposerControlType::getByHandle('core_page_property'); /* Post Title */ $control = $cct->getPageTypeComposerControlByIdentifier('name'); $control->addToPageTypeComposerFormLayoutSet($basics); /* Post Slug */ $control = $cct->getPageTypeComposerControlByIdentifier('url_slug'); $control->addToPageTypeComposerFormLayoutSet($basics); /* Post Publish Location */ $control = $cct->getPageTypeComposerControlByIdentifier('publish_target'); $control->addToPageTypeComposerFormLayoutSet($basics); /* Post Date */ $control = $cct->getPageTypeComposerControlByIdentifier('date_time'); $control->addToPageTypeComposerFormLayoutSet($basics); /* Post Author */ $control = $cct->getPageTypeComposerControlByIdentifier('user'); $control->addToPageTypeComposerFormLayoutSet($basics); /* Add Attributes */ $cct = ComposerControlType::getByHandle('collection_attribute'); /* Forum Pin */ $attributeId = CollectionAttributeKey::getByHandle('forum_pin')->getAttributeKeyID(); $control = $cct->getPageTypeComposerControlByIdentifier($attributeId); $control->addToPageTypeComposerFormLayoutSet($post); /* Forum Post Approved */ $attributeId = CollectionAttributeKey::getByHandle('forum_post_approved')->getAttributeKeyID(); $control = $cct->getPageTypeComposerControlByIdentifier($attributeId); $control->addToPageTypeComposerFormLayoutSet($post); /* Forum Post */ $attributeId = CollectionAttributeKey::getByHandle('forum_post')->getAttributeKeyID(); $control = $cct->getPageTypeComposerControlByIdentifier($attributeId); $control->addToPageTypeComposerFormLayoutSet($post); /* Forum Image */ $attributeId = CollectionAttributeKey::getByHandle('forum_image')->getAttributeKeyID(); $control = $cct->getPageTypeComposerControlByIdentifier($attributeId); $control->addToPageTypeComposerFormLayoutSet($post); /* Forum Tags */ $attributeId = CollectionAttributeKey::getByHandle('tags')->getAttributeKeyID(); $control = $cct->getPageTypeComposerControlByIdentifier($attributeId); $control->addToPageTypeComposerFormLayoutSet($post); /* Add default Blocks to page template */ $ctTemplate = $pageType->getPageTypeDefaultPageTemplateObject(); $forumPostTemplate = $pageType->getPageTypePageTemplateDefaultPageObject($ctTemplate); //Add exclude_nav page attributeto Forum Post Template $forumPostTemplate->setAttribute('exclude_nav', 1); // Get Forum Category Page $forumCategoryPage = Page::getByPath('/forums'); //Add forum_category page attribute $forumCategoryPage->setAttribute('forum_category', 1); // Get Forum Search Page $forumSearchPage = Page::getByPath('/forum-search'); //Add exclude_nav page attribute $forumSearchPage->setAttribute('exclude_nav', 1); // Install Blocks //install Forum Post Block $forumPost = BlockType::getByHandle('webli_forum_post'); $forumPostData = array(); $forumCategoryPage->addBlock($forumPost, 'Main', $forumPostData); //install forum post block to forum_post template $forumPostTemplate->addBlock($forumPost, 'Forum Post', $forumPostData); //install Forum List Block on Forums top level page $forumList = BlockType::getByHandle('webli_forum_list'); $forumListData = array(); $forumListData['num'] = 25; $forumListData['paginate'] = 1; $forumListData['cParentID'] = $forumCategoryPage->getCollectionID(); $forumListData['orderBy'] = 'chrono_desc'; $forumListData['use_content'] = 1; $forumListData['truncateSummaries'] = 1; $forumListData['truncateChars'] = 200; $forumListData['display_author'] = 1; $forumListData['includeDate'] = 1; $forumListData['includeName'] = 1; $forumListData['includeDescription'] = 1; $forumListData['date_format'] = 'l F j, Y g:ia'; $forumListData['forum_pin'] = 1; $forumListData['forumReplies'] = 3; $forumListData['thumb_width'] = 250; $forumListData['thumb_height'] = 150; $forumListData['crop'] = 1; $forumListData['noResultsMessage'] = 'No Forum Posts available to view.'; $forumCategoryPage->addBlock($forumList, 'Main', $forumListData); // Install Forum Search Block on forum_post Page template $forumSearch = BlockType::getByHandle('webli_forum_search'); $forumSearchData = array(); $forumSearchData['title'] = 'Forum Search'; $forumSearchData['postTo_cID'] = $forumSearchPage->getCollectionID(); $forumSearchData['baseSearchPath'] = 'PARENT'; $forumPostTemplate->addBlock($forumSearch, 'Sidebar', $forumSearchData); //install Forum Search Block Forums forum_category Page $forumSearchData = array(); $forumSearchData['title'] = 'Forum Search'; $forumSearchData['postTo_cID'] = $forumSearchPage->getCollectionID(); $forumSearchData['baseSearchPath'] = $forumCategoryPage->getCollectionPath(); $forumCategoryPage->addBlock($forumSearch, 'Sidebar', $forumSearchData); //install Forum Search Block on Forum Search Page $forumSearchData = array(); $forumSearchData['title'] = 'Forum Search'; $forumSearchData['buttonText'] = 'Search'; $forumSearchData['baseSearchPath'] = $forumCategoryPage->getCollectionPath(); $forumSearchPage->addBlock($forumSearch, 'Main', $forumSearchData); //install Forum Archive Block on forum_post template $forumArchive = BlockType::getByHandle('webli_forum_archive'); $forumArchiveData = array(); $forumArchiveData['title'] = 'Forum Archive'; $forumArchiveData['cParentID'] = 'PARENT'; $forumPostTemplate->addBlock($forumArchive, 'Sidebar', $forumArchiveData); //install Forum Archive Block $forumArchiveData = array(); $forumArchiveData['title'] = 'Forum Archive'; $forumArchiveData['cParentID'] = $forumCategoryPage->getCollectionID(); $forumCategoryPage->addBlock($forumArchive, 'Sidebar', $forumArchiveData); $forumSearchPage->addBlock($forumArchive, 'Sidebar', $forumArchiveData); //install Forum Tags Block on forum_post template $forumTags = BlockType::getByHandle('webli_forum_tags'); $forumTagsData = array(); $forumTagsData['title'] = 'Forum Tags'; $forumTagsData['cParentID'] = 'PARENT'; $forumTagsData['postTo_cID'] = $forumSearchPage->getCollectionID(); $forumTagsData['baseSearchPath'] = $forumCategoryPage->getCollectionPath(); $forumTagsData['min_height'] = 15; $forumTagsData['max_height'] = 30; $forumPostTemplate->addBlock($forumTags, 'Sidebar', $forumTagsData); //install Forum Tags Block $forumTagsData = array(); $forumTagsData['title'] = 'Forum Tags'; $forumTagsData['cParentID'] = $forumCategoryPage->getCollectionID(); $forumTagsData['postTo_cID'] = $forumSearchPage->getCollectionID(); $forumTagsData['baseSearchPath'] = $forumCategoryPage->getCollectionPath(); $forumTagsData['min_height'] = 15; $forumTagsData['max_height'] = 30; $forumCategoryPage->addBlock($forumTags, 'Sidebar', $forumTagsData); $forumSearchPage->addBlock($forumTags, 'Sidebar', $forumTagsData); //install Conversations block to forum_post template $conversations = BlockType::getByHandle('core_conversation'); $conversationsData = array(); $conversationsData['attachmentsEnabled'] = 0; $conversationsData['addMessageLabel'] = t('Add a Comment'); $conversationsData['itemsPerPage'] = 25; $conversationsData['enablePosting'] = 1; $conversationsData['enableCommentRating'] = 1; $conversationsData['paginate'] = 1; $conversationsData['displayMode'] = 'threaded'; $conversationsData['displayPostingForm'] = 'bottom'; $forumPostTemplate->addBlock($conversations, 'Forum Replies', $conversationsData); $db = Loader::db(); // insert default page category values $db->Execute('insert into btWebliForums ( cID, display_title, display_author, display_date, date_format, display_tags, enable_comments, enable_breadcrumb, crop_image, display_image, image_height, image_width, display_avatars, forum_search_block, forum_archive_block, forum_tags_block, rich_text, page_template, page_type ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', array(0, 1, 1, 1, 'l F j, Y g:ia', 1, 1, 1, 0, 1, 350, 250, 1, 1, 1, 1, 1, $pageTemplate->getPageTemplateID(), $pageType->getPageTypeID())); // Add Sample Forum Post $forumsPage = \Page::getByPath('/forums'); if (is_object($forumsPage) || $forumsPage->cID != null) { $pageType = \PageType::getByHandle('forum_post'); $template = \PageTemplate::getByHandle('forum_post'); $samplePost = $forumsPage->add($pageType, array('cName' => 'My First Forum Post', 'cDescription' => 'First Forum Post', 'cHandle ' => 'first-forum-post'), $template); $samplePost->setAttribute('forum_post', t(' <p>Hey, Congratulations, you have installed Forums for Concrete5. Forums will give visitors to your site frontend editing capabilities to add Forum Messages and reply to existing messages.</p> <p>Administrators have access to the Forums Dashboard Page to customize and manage your forums.</p> <p>So get your forum started and if you have any comments or questions visit <a href="http://forums.webli.us" target="_blank">forums.webli.us</a></p>')); $samplePost->setAttribute('forum_post_approved', 1); $samplePost->setAttribute('tags', array('Forums', t('Frist Message'))); } $cms = Core::make('app'); $cms->clearCaches(); }
function save_settings() { if ($_POST['optional_attributes']) { $forumAttributes = serialize($_POST['optional_attributes']); /* Get blog_post page template */ $pageType = \PageType::getByID($_POST['page_type']); $ctTemplate = $pageType->getPageTypeDefaultPageTemplateObject(); $blogPostTemplate = $pageType->getPageTypePageTemplateDefaultPageObject($ctTemplate); // Drop the Optional Attribute Composer Layout $db = Loader::db(); $db->Execute('delete from PageTypeComposerFormLayoutSets where ptComposerFormLayoutSetName = ?', array('Optional Attributes')); /* Add Composer Layouts */ $post = $pageType->addPageTypeComposerFormLayoutSet('Optional Attributes', 'Optional Attributes'); /* Add Optional Attributes */ $cct = ComposerControlType::getByHandle('collection_attribute'); foreach ($_POST['optional_attributes'] as $oa) { $control = $cct->getPageTypeComposerControlByIdentifier($oa); $control->addToPageTypeComposerFormLayoutSet($post); } } $db = Loader::db(); // Drop database row $db->Execute('DELETE FROM btWebliForums WHERE cID= ?', $_POST['cID']); $db->Execute('insert into btWebliForums ( cID, display_title, display_date, date_format, display_author, display_tags, enable_comments, enable_breadcrumb, mod_approval, display_image, crop_image, image_height, image_width, add_this, add_this_script, add_this_share_html, add_this_follow_html, add_this_recommend_html, share_this, share_this_script, share_this_html, twitter_post, twitter_api_key, twitter_api_secret, twitter_token, twitter_token_secret, twitter_select, twitter_image, anonymous_posts, captcha, forum_search_block, forum_archive_block, forum_tags_block, display_avatars, notification, email_addresses, page_template, page_type, optional_attributes, rich_text) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', array($_POST['cID'], $_POST['display_title'], $_POST['display_date'], $_POST['date_format'], $_POST['display_author'], $_POST['display_tags'], $_POST['enable_comments'], $_POST['enable_breadcrumb'], $_POST['mod_approval'], $_POST['display_image'], $_POST['crop_image'], $_POST['image_height'], $_POST['image_width'], $_POST['add_this'], $_POST['add_this'] ? $_POST['add_this_script'] : null, $_POST['add_this'] ? $_POST['add_this_share_html'] : null, $_POST['add_this'] ? $_POST['add_this_follow_html'] : null, $_POST['add_this'] ? $_POST['add_this_recommend_html'] : null, $_POST['share_this'], $_POST['share_this'] ? $_POST['share_this_script'] : null, $_POST['share_this'] ? $_POST['share_this_html'] : null, $_POST['twitter_post'], $_POST['twitter_api_key'], $_POST['twitter_api_secret'], $_POST['twitter_token'], $_POST['twitter_token_secret'], $_POST['twitter_select'], $_POST['twitter_image'], $_POST['anonymous_posts'], $_POST['captcha'], $_POST['forum_search_block'], $_POST['forum_archive_block'], $_POST['forum_tags_block'], $_POST['display_avatars'], $_POST['notification'], $_POST['email_addresses'], $_POST['page_template'], $_POST['page_type'], $forumAttributes, $_POST['rich_text'])); $this->save_active_category($_POST['cID']); $this->save_active_tab($_POST['activeTab']); $this->redirect(Page::getCurrentPage()->getCollectionPath()); }
/** * Create a page type and assign defaults and shit */ private function createPageType(array $settings) { // Cast to an object $settings = (object) $settings; // Get the page type if it exists previously $pageType = PageType::getByHandle($settings->configs['handle']); // Delete it? Only works if the $pageType isn't assigned to this package already if (is_object($pageType) && !((int) $pageType->getPackageID() >= 1)) { $pageType->delete(); } if (!is_object(PageType::getByHandle($settings->configs['handle']))) { /** @var $ptPage \Concrete\Core\Page\Type\Type */ $ptPage = PageType::add(array_merge(array('ptIsFrequentlyAdded' => 1, 'ptLaunchInComposer' => 1), $settings->configs), $this->packageObject()); // Set configured publish target $ptPage->setConfiguredPageTypePublishTargetObject(PublishTargetType::getByHandle('all')->configurePageTypePublishTarget($ptPage, array('ptID' => $ptPage->getPageTypeID()))); /** @var $layoutSet \Concrete\Core\Page\Type\Composer\FormLayoutSet */ $layoutSet = $ptPage->addPageTypeComposerFormLayoutSet('Basics', 'Basics'); // Are we adding composer controls? if (property_exists($settings, 'controls') && is_array($settings->controls)) { // Core page properties $corePageProperties = $settings->controls['core_page_property']; if (is_array($corePageProperties)) { /** @var $controlTypeObj \Concrete\Core\Page\Type\Composer\Control\Type\CorePagePropertyType */ $controlTypeObj = \Concrete\Core\Page\Type\Composer\Control\Type\Type::getByHandle('core_page_property'); if (is_object($controlTypeObj)) { foreach ($corePageProperties as $controlName => $isRequired) { $control = $controlTypeObj->getPageTypeComposerControlByIdentifier($controlName); $control->addToPageTypeComposerFormLayoutSet($layoutSet)->updateFormLayoutSetControlRequired($isRequired); } } } // Blocks $pageBlocks = $settings->controls['block']; if (is_array($pageBlocks)) { /** @var $controlTypeObj \Concrete\Core\Page\Type\Composer\Control\Type\CollectionAttributeType */ $controlTypeObj = \Concrete\Core\Page\Type\Composer\Control\Type\Type::getByHandle('block'); if (is_object($controlTypeObj)) { foreach ($pageBlocks as $controlName) { $blockTypeObj = BlockType::getByHandle($controlName); if (is_object($blockTypeObj)) { $control = $controlTypeObj->getPageTypeComposerControlByIdentifier($blockTypeObj->getBlockTypeID()); $control->addToPageTypeComposerFormLayoutSet($layoutSet); } } } } // Attributes $pageAttributes = $settings->controls['collection_attribute']; if (is_array($pageAttributes)) { /** @var $controlTypeObj \Concrete\Core\Page\Type\Composer\Control\Type\CollectionAttributeType */ $controlTypeObj = \Concrete\Core\Page\Type\Composer\Control\Type\Type::getByHandle('collection_attribute'); if (is_object($controlTypeObj)) { foreach ($pageAttributes as $controlName) { $collectionAttrKey = CollectionAttributeKey::getByHandle($controlName); if (is_object($collectionAttrKey)) { $control = $controlTypeObj->getPageTypeComposerControlByIdentifier($collectionAttrKey->getAttributeKeyID()); $control->addToPageTypeComposerFormLayoutSet($layoutSet); } } } } } } }
public function add_blog_page($pkg) { /* * Add new Post template */ //$tmplt = Template::add('pb_post', 'ProBlog Post', 'right_sidebar.png', $pkg); $tmplt = Template::getByHandle('right_sidebar'); /* * Add new Post Page Type using new Template */ $setBlogAt = Page::getByPath('/blog'); $type = CollectionType::add(array('handle' => 'pb_post', 'name' => 'ProBlog Post', 'defaultTemplate' => $tmplt, 'allowedTemplates' => 'C', 'templates' => array($tmplt), 'ptLaunchInComposer' => 1, 'ptIsFrequentlyAdded' => 1), $pkg); /* * Add our new blog_section PublishTarget Type */ $pt_target = PublishTarget::add('blog_section', 'Choose From Blog Section Pages', $pkg); $configuration = new BlogSectionConfiguration($pt_target); /* * Set Post Page Type to use Parent Page Configuration */ $type->setConfiguredPageTypePublishTargetObject($configuration); /* * Create Post Page Type Form Layout Sets */ $info = $type->addPageTypeComposerFormLayoutSet('General Info', 'Basic Blog Post Information'); $post = $type->addPageTypeComposerFormLayoutSet('Post Content', 'Your Post Content'); $metas = $type->addPageTypeComposerFormLayoutSet('Post Metas', 'Your Post Meta Data'); $options = $type->addPageTypeComposerFormLayoutSet('Post Options', 'Your Post Options'); /* * Create Post Page Type Form Layout Controls */ $core_att_controls = PageTypeComposerControlType::getByHandle('core_page_property'); $page_att_controls = PageTypeComposerControlType::getByHandle('collection_attribute'); $block_controls = PageTypeComposerControlType::getByHandle('block'); /* * ++++++++++++++++++++++ * Info Tab * ++++++++++++++++++++++ */ /* Post Title */ $name = $core_att_controls->getPageTypeComposerControlByIdentifier('name'); $name->setPageTypeComposerControlName(t('Post Title')); $name->addToPageTypeComposerFormLayoutSet($info); /* Post Slug */ $slug = $core_att_controls->getPageTypeComposerControlByIdentifier('url_slug'); $slug->setPageTypeComposerControlName(t('Post Slug')); $slug->addToPageTypeComposerFormLayoutSet($info); /* Post Author */ $control_id = CollectionAttributeKey::getByHandle('blog_author')->getAttributeKeyID(); $blog_author = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $blog_author->addToPageTypeComposerFormLayoutSet($info); /* Post Thumbnail */ $control_id = CollectionAttributeKey::getByHandle('thumbnail')->getAttributeKeyID(); $thumbnail = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $thumbnail->addToPageTypeComposerFormLayoutSet($info); /* Post Description */ $description = $core_att_controls->getPageTypeComposerControlByIdentifier('description'); $description->addToPageTypeComposerFormLayoutSet($info); /* * ++++++++++++++++++++++ * Post Tab * ++++++++++++++++++++++ */ /* Event Content */ $control_id = BlockType::getByHandle('content')->getBlockTypeID(); $post_content = $block_controls->getPageTypeComposerControlByIdentifier($control_id); $post_content->addToPageTypeComposerFormLayoutSet($post); /* * ++++++++++++++++++++++ * Metas Tab * ++++++++++++++++++++++ */ /* Meta Title */ $control_id = CollectionAttributeKey::getByHandle('meta_title')->getAttributeKeyID(); $meta_title = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $meta_title->addToPageTypeComposerFormLayoutSet($metas); /* Meta Description */ $control_id = CollectionAttributeKey::getByHandle('meta_description')->getAttributeKeyID(); $meta_description = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $meta_description->addToPageTypeComposerFormLayoutSet($metas); /* Meta Keywords */ $control_id = CollectionAttributeKey::getByHandle('meta_keywords')->getAttributeKeyID(); $meta_keywords = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $meta_keywords->addToPageTypeComposerFormLayoutSet($metas); /* * ++++++++++++++++++++++ * Options Tab * ++++++++++++++++++++++ */ /* Post Location */ $target = $core_att_controls->getPageTypeComposerControlByIdentifier('publish_target'); $target->addToPageTypeComposerFormLayoutSet($options); /* Post Date */ $public = $core_att_controls->getPageTypeComposerControlByIdentifier('date_time'); $public->addToPageTypeComposerFormLayoutSet($options); /* Post Tags */ $control_id = CollectionAttributeKey::getByHandle('tags')->getAttributeKeyID(); $tags = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $tags->addToPageTypeComposerFormLayoutSet($options); /* Post Blog Category */ $control_id = CollectionAttributeKey::getByHandle('blog_category')->getAttributeKeyID(); $blog_category = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $blog_category->addToPageTypeComposerFormLayoutSet($options); /* Send to subscribers */ $control_id = CollectionAttributeKey::getByHandle('send_subscription')->getAttributeKeyID(); $send_subscribe = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $send_subscribe->addToPageTypeComposerFormLayoutSet($options); /* Post To Twitter */ $control_id = CollectionAttributeKey::getByHandle('post_to_twitter')->getAttributeKeyID(); $twitter = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $twitter->addToPageTypeComposerFormLayoutSet($options); /* Composer Optimize */ $control_id = CollectionAttributeKey::getByHandle('composer_optimizer')->getAttributeKeyID(); $composer_optimize = $page_att_controls->getPageTypeComposerControlByIdentifier($control_id); $composer_optimize->addToPageTypeComposerFormLayoutSet($options); $db = Loader::db(); $cocID = $db->getOne("SELECT ptComposerOutputControlID FROM PageTypeComposerOutputControls WHERE pTemplateID = ? AND ptID = ?", array($tmplt->getPageTemplateID(), $type->getPageTypeID())); $this->install_pb_page_defaults($pkg, $cocID); }
public function skipItem() { $editor = Type::getByHandle($this->object->getHandle()); return is_object($editor); }