/** * @param null $uniqueId * @param null $nodeId * @param string $modelClassName */ public function actionRelationsAndAttributesTreeForMergeTags($uniqueId = null, $nodeId = null, $modelClassName = 'Contact') { if ($modelClassName == null) { $modelClassName = 'Contact'; } $moduleClassName = $modelClassName::getModuleClassName(); $type = Report::TYPE_ROWS_AND_COLUMNS; $treeType = ComponentForReportForm::TYPE_FILTERS; $report = new Report(); $report->setModuleClassName($moduleClassName); $report->setType($type); if ($nodeId != null) { $reportToTreeAdapter = new MergeTagsReportRelationsAndAttributesToTreeAdapter($report, $treeType, $uniqueId); echo ZurmoTreeView::saveDataAsJson($reportToTreeAdapter->getData($nodeId)); Yii::app()->end(0, false); } $view = new ReportRelationsAndAttributesForMergeTagsTreeView($type, $treeType, 'edit-form', $uniqueId); $content = $view->render(); Yii::app()->getClientScript()->setToAjaxMode(); Yii::app()->getClientScript()->render($content); echo $content; }
public function testGetData() { $moduleClassName = Contact::getModuleClassName(); $type = Report::TYPE_ROWS_AND_COLUMNS; $treeType = ComponentForReportForm::TYPE_FILTERS; $report = new Report(); $report->setModuleClassName($moduleClassName); $report->setType($type); $reportToTreeAdapter = new MergeTagsReportRelationsAndAttributesToTreeAdapter($report, $treeType, 'EmailTemplate'); $emailTemplate = new EmailTemplate(); $emailTemplate->type = EmailTemplate::TYPE_CONTACT; $emailTemplate->subject = 'Another Test subject'; $emailTemplate->name = 'Another Test Email Template'; $emailTemplate->textContent = 'Text Content '; $emailTemplate->htmlContent = 'Html Content '; $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_PASTED_HTML; $emailTemplate->modelClassName = 'Contact'; // By testing the getData method we're actually testing that all Merge Tags are valid // and that we can save the EmailTemplate with each Merge Tag without having the error 'Invalid Merge Tag'. $data = $reportToTreeAdapter->getData('source'); foreach ($data[1]['children'] as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_createdByUser'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_owner'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_owner___primaryEmail'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_primaryAddress'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); // Test against invalid Merge Tags $emailTemplate->textContent = 'Text Content [[TEXT__INVALID^MERGE^TAG]]'; $emailTemplate->htmlContent = 'Html Content [[HTMLINVALIDMERGETAG]]'; $validated = $emailTemplate->validate(null, false, true); $this->assertFalse($validated); $errorMessages = $emailTemplate->getErrors(); $this->assertEquals(2, count($errorMessages)); $this->assertTrue(array_key_exists('textContent', $errorMessages)); $this->assertTrue(array_key_exists('htmlContent', $errorMessages)); $this->assertEquals(1, count($errorMessages['textContent'])); $this->assertEquals(1, count($errorMessages['htmlContent'])); $this->assertContains('TEXT__INVALID^MERGE^TAG', $errorMessages['textContent'][0]); $this->assertContains('HTMLINVALIDMERGETAG', $errorMessages['htmlContent'][0]); }