@@ -227,13 +227,13 @@ protected function _buildKeywords($categoryTypes)
227
227
}
228
228
229
229
/**
230
- * Add "Required" Option to Checkout Agreements
230
+ * Add "Required" and "Visible on Custom Creation" Option to Checkout Agreements
231
231
*
232
232
* @param Varien_Event_Observer $observer Observer
233
233
* @event adminhtml_block_html_before
234
234
* @return FireGento_GermanSetup_Model_Observer
235
235
*/
236
- public function addIsRequiredOnAgreements (Varien_Event_Observer $ observer )
236
+ public function addOptionsForAgreements (Varien_Event_Observer $ observer )
237
237
{
238
238
$ block = $ observer ->getEvent ()->getBlock ();
239
239
if ($ block instanceof Mage_Adminhtml_Block_Checkout_Agreement_Edit_Form) {
@@ -252,6 +252,19 @@ public function addIsRequiredOnAgreements(Varien_Event_Observer $observer)
252
252
),
253
253
));
254
254
255
+ $ fieldset ->addField ('is_visible_on_registration ' , 'select ' , array (
256
+ 'label ' => Mage::helper ('germansetup ' )->__ ('Use on Customer Creation ' ),
257
+ 'title ' => Mage::helper ('germansetup ' )->__ ('Use on Customer Creation ' ),
258
+ 'note ' => Mage::helper ('germansetup ' )->__ ('Require Confirmation on Customer Registration ' ),
259
+ 'name ' => 'is_visible_on_registration ' ,
260
+ 'required ' => true ,
261
+ 'options ' => array (
262
+ '1 ' => Mage::helper ('germansetup ' )->__ ('Yes ' ),
263
+ '0 ' => Mage::helper ('germansetup ' )->__ ('No ' ),
264
+ ),
265
+ ));
266
+
267
+
255
268
Mage::dispatchEvent ('germansetup_adminhtml_checkout_agreement_edit_form ' , array (
256
269
'form ' => $ form ,
257
270
'fieldset ' => $ fieldset ,
@@ -282,4 +295,32 @@ public function recollectAfterQuoteItemUpdate()
282
295
->collectTotals ();
283
296
}
284
297
}
298
+
299
+ /**
300
+ * Get required agreements on custom registration
301
+ *
302
+ * @return mixed
303
+ */
304
+ protected function _getCustomerCreateAgreements ()
305
+ {
306
+ $ ids = $ this ->_agreements = Mage::getModel ('checkout/agreement ' )->getCollection ()
307
+ ->addStoreFilter (Mage::app ()->getStore ()->getId ())
308
+ ->addFieldToFilter ('is_active ' , 1 )
309
+ ->addFieldToFilter ('is_visible_on_registration ' , 1 ) // Only get Required Elements
310
+ ->getAllIds ();
311
+ return $ ids ;
312
+ }
313
+
314
+ public function customerCreatePreDispatch (Varien_Event_Observer $ event )
315
+ {
316
+ $ requiredAgreements = $ this ->_getCustomerCreateAgreements ();
317
+ $ controller = $ event ->getControllerAction ();
318
+ $ postedAgreements = array_keys ($ controller ->getRequest ()->getPost ('agreement ' , array ()));
319
+ if ($ diff = array_diff ($ requiredAgreements , $ postedAgreements )) {
320
+ $ session = Mage::getSingleton ('customer/session ' );
321
+ $ session ->addException (new Mage_Customer_Exception ('Cannot create customer: agreements not confirmed ' ), Mage::helper ('germansetup ' )->__ ('Agreements not confirmed. ' ));
322
+ $ controller ->getResponse ()->setRedirect ( Mage::getUrl ('*/*/create ' , array ('_secure ' => true )) );
323
+ $ controller ->setFlag ($ controller ->getRequest ()->getActionName (), Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH , true );
324
+ }
325
+ }
285
326
}
0 commit comments