Last active
May 18, 2016 16:03
-
-
Save dfelton/7a70d2b1b97ba61303bb5bd78fb49e43 to your computer and use it in GitHub Desktop.
Magento - Add Webform drop down to CMS Pages (Works with VladimirPopov_WebForms)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// app/code/local/FirstScribe/ModuleName/Model/Observer/Adminhtml.php | |
/** | |
* Observer class. Public method names correspond directly to the event which | |
* they observe. | |
* | |
* @category FirstScribe | |
* @package FirstScribe_ModuleName | |
* @author ${author} | |
* @version ${date} | |
*/ | |
class FirstScribe_ModuleName_Model_Observer_Adminhtml | |
{ | |
/** | |
* @param $observer Varien_Event_Observer | |
*/ | |
public function adminhtmlBlockHtmlBefore($observer) | |
{ | |
/* @block Mage_Core_Block_Abstract */ | |
$block = $observer->getData('block'); | |
switch ($block->getData('type')) { | |
case 'adminhtml/cms_page_edit_tab_content': | |
$this->_cmsPageEditFormTabContent($block); | |
break; | |
default: | |
break; | |
} | |
} | |
/** | |
* Adds form fields to the "Content" tab of the add/edit cms page. | |
* | |
* @param Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Content $block | |
*/ | |
protected function _cmsPageEditFormTabContent($block) | |
{ | |
/* @var $cmsPage Mage_Cms_Model_Page */ | |
/* @var $fieldset Varien_Data_Form_Element_Fieldset */ | |
/* @var $helper Mage_Cms_Helper_Data */ | |
/* @var $webforms VladimirPopov_WebForms_Model_Mysql4_Webforms_Collection */ | |
/* @var $webform VladimirPopov_WebForms_Model_Webforms */ | |
$cmsPage = Mage::registry('cms_page'); | |
$fieldset = $block->getForm()->getElement('content_fieldset'); | |
$helper = Mage::helper('cms'); | |
if ( $helper->isModuleEnabled('VladimirPopov_WebForms') | |
&& $helper->isModuleOutputEnabled('VladimirPopov_WebForms') | |
) { | |
// Add "Webform" dropdown | |
$webforms = Mage::getResourceModel('webforms/webforms_collection'); | |
$webforms->setOrder('name', Varien_Data_Collection::SORT_ORDER_ASC); | |
$options = array('' => $helper->__('-- Select --')); | |
foreach ($webforms as $webform) { | |
$options[$webform->getId()] = $webform->getData('name'); | |
} | |
$fieldset->addField( | |
'webform_id', | |
'select', | |
array( | |
'title' => $helper->__('Webform'), | |
'label' => $helper->__('Webform'), | |
'options' => $options, | |
'value' => $cmsPage->getData('webform_id'), | |
'name' => 'webform_id' | |
), | |
'content_heading' | |
); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- | |
app/code/local/FirstScribe/ModuleName/etc/config.xml | |
--> | |
<!-- | |
Assumes that your extension already has the following configured: | |
Models, Blocks, Setup Resources, Frontend Layout XML file | |
--> | |
</config> | |
<adminhtml> | |
<events> | |
<adminhtml_block_html_before> | |
<observers> | |
<firstscribe_moduleName> | |
<type>singleton</type> | |
<class>firstscribe_moduleName/observer_adminhtml</class> | |
<method>adminhtmlBlockHtmlBefore</method> | |
</firstscribe_moduleName> | |
</observers> | |
</adminhtml_block_html_before> | |
</events> | |
</adminhtml> | |
</config> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<!-- | |
(your extension may have this file in different package and/or theme) | |
app/design/frontend/base/default/layout/firstscribe/moduleName.xml | |
--> | |
<layout> | |
<cms_page> | |
<reference name="content"> | |
<block type="firstscribe_moduleName/cms_page_view_webform" name="cms.page.webforms" /> | |
</reference> | |
</cms_page> | |
</layout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Make sure to name this file approprately according to your extension version. | |
// app/code/local/FirstScribe/ModuleName/sql/firstscribe_modulename_setup/upgrade-*-*.php | |
/** | |
* Installer Script | |
* | |
* @category FirstScribe | |
* @package FirstScribe_ModuleName | |
* @author ${user} | |
* @version ${date} | |
*/ | |
/* @var $this Mage_Core_Model_Resource_Setup */ | |
$this->startSetup(); | |
$this | |
->getConnection() | |
->addColumn( | |
$this->getTable('cms/page'), | |
'webform_id', | |
array( | |
'type' => Varien_Db_Ddl_Table::TYPE_INTEGER, | |
'length' => 11, | |
'nullable' => true, | |
'default' => null, | |
'comment' => 'Webform Id' | |
) | |
) | |
; | |
$this->endSetup(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Adds a webform to the page if the page is assigned one. | |
* | |
* @category FirstScribe | |
* @package FirstScribe_ModuleName | |
* @author ${user} | |
* @version ${date} | |
*/ | |
class FirstScribe_ModuleName_Block_Cms_Page_View_Webform extends Mage_Core_Block_Text | |
{ | |
/** | |
* Set the text for this block. | |
*/ | |
protected function _prepareLayout() | |
{ | |
/* @var $block VladimirPopov_WebForms_Block_Webforms */ | |
/* @var $cmsPage Mage_Cms_Model_Page */ | |
/* @var $helper Mage_Core_Helper_Data */ | |
parent::_prepareLayout(); | |
$cmsPage = Mage::getSingleton('cms/page'); | |
$helper = Mage::helper('core'); | |
if ( $cmsPage->getData('webform_id') | |
&& $helper->isModuleEnabled('VladimirPopov_WebForms') | |
&& $helper->isModuleOutputEnabled('VladimirPopov_WebForms') | |
) { | |
$layout = $this->getLayout(); | |
$block = $layout->createBlock( | |
'webformsl/webforms', | |
'cms.page.webforms.form', | |
array( | |
'template' => 'webforms/default.phtml', | |
'webform_id' => $cmsPage->getData('webform_id') | |
) | |
); | |
if (false !== $block) { | |
try { | |
Mage::log($block->toHtml()); | |
} catch (Exception $e) { | |
Mage::logException($e); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment