Compare commits

..

6 Commits

2 changed files with 76 additions and 3 deletions

View File

@ -34,6 +34,14 @@ class CRM_EntityTemplates_Utils {
* @param object $form
*/
public static function buildForm($formName, &$form) {
if ('CRM_Custom_Form_CustomDataByType' == $formName) {
if (empty($form->_entityTemplateId)) {
return;
}
$formValues = CRM_EntityTemplates_BAO_EntityTemplates::getFormValues($form->_entityTemplateId);
$form->setDefaults($formValues);
}
if (!empty($form->_entityTemplateValues)) {
if ($form->_entityTemplate) {
unset($form->_required);
@ -47,15 +55,58 @@ class CRM_EntityTemplates_Utils {
$entities = CRM_EntityTemplates_BAO_EntityTemplates::getEntityTemplates($form->_entityTemplateValues['value']);
if (!empty($entities)) {
$form->add('select', 'entity_template_id', ts('Templates'), $entities, FALSE, ['placeholder' => ts('- select -'), 'class' => 'crm-select2']);
list($url, $query) = explode('?', $form->_entityTemplateValues['name']);
$url = CRM_Utils_System::url($url, $query);
$queryString = $form->get('queryString');
if (empty($queryString)) {
if (!empty($_SERVER['REDIRECT_QUERY_STRING'])) {
$queryString = $_SERVER['REDIRECT_QUERY_STRING'];
}
else {
$queryString = $query;
}
}
parse_str($queryString, $queryString);
if (isset($queryString['templateId'])) {
unset($queryString['templateId']);
}
if (isset($queryString['snippet'])) {
unset($queryString['snippet']);
}
$queryString = http_build_query($queryString);
$form->set('queryString', $queryString);
$url = CRM_Utils_System::url($url, $queryString, FALSE, NULL, FALSE);
$form->assign('redirectUrl', $url);
}
}
if ($form->_entityTemplateId) {
$formValues = CRM_EntityTemplates_BAO_EntityTemplates::getFormValues($form->_entityTemplateId);
$formValues['entity_template_id'] = $form->_entityTemplateId;
self::formatDateParams($formValues, $form->_elements);
$form->setDefaults($formValues);
if (!empty($formValues['payment_instrument_id'])) {
CRM_Core_Payment_Form::buildPaymentForm(
$form,
$form->getVar('_paymentProcessor'),
FALSE,
TRUE,
$formValues['payment_instrument_id']
);
}
CRM_Core_Resources::singleton()->addScript("
CRM.$(function($) {
$(document).ajaxSend(function(event, jqxhr, settings) {
if (settings.url .indexOf('civicrm/custom') != -1) {
settings.url = settings.url + '&templateId={$form->_entityTemplateId}';
}
});
})",
10,
'html-header'
);
}
CRM_Core_Region::instance('page-body')->add([
'template' => 'CRM/EntityTemplates/EntityTemplate.tpl',
@ -70,6 +121,9 @@ class CRM_EntityTemplates_Utils {
* @param array $params
*/
public static function addTemplate($objectName, $params) {
if (empty($params['entity_template'])) {
$params = $_POST;
}
if (CRM_Utils_Array::value('entity_template', $params) == $objectName) {
$id = NULL;
if (!empty($params['entity_template_id'])) {
@ -92,7 +146,6 @@ class CRM_EntityTemplates_Utils {
if ($id) {
$entityParams['id'] = $id;
}
civicrm_api3('EntityTemplates', 'create', $entityParams);
// print message
@ -103,4 +156,24 @@ class CRM_EntityTemplates_Utils {
}
}
/**
* Format Date field values in params.
*
* @param array $params
* @param object $elements
*/
public static function formatDateParams(&$params, $elements) {
foreach ($elements as $element) {
if (!empty($element->_attributes) && array_key_exists(
'data-crm-datepicker',
$element->_attributes
)) {
$name = $element->_attributes['name'];
if (!CRM_Utils_System::isNull($params[$name])) {
$params[$name] = date('Y-m-d H:i:s', strtotime($params[$name]));
}
}
}
}
}

View File

@ -245,7 +245,7 @@ function entitytemplates_civicrm_pre($op, $objectName, $id, &$params) {
*
*/
function entitytemplates_civicrm_validateForm($formName, &$fields, &$files, &$form, &$errors) {
if ($form->_entityTemplate) {
if (property_exists($form, '_entityTemplate') && $form->_entityTemplate) {
if (!empty($fields['entity_template_title'])) {
$params = [
'title' => $fields['entity_template_title'],