From c00b95ef412199c59f2bdaff446d20355fca59a7 Mon Sep 17 00:00:00 2001 From: Mathieu Lutfy Date: Sat, 25 Jul 2015 11:07:01 -0400 Subject: [PATCH] CRM-16352: Allow to define the language of Mailings (for tokens). --- CRM/Mailing/BAO/Mailing.php | 2 ++ CRM/Mailing/Form/Search.php | 8 ++++++++ CRM/Mailing/Info.php | 4 ++++ CRM/Mailing/Selector/Browse.php | 10 ++++++++++ CRM/Mailing/Selector/Search.php | 6 ++++++ ang/crmMailing/BlockMailing.html | 14 ++++++++++++++ ang/crmMailing/BlockReview.html | 3 +++ templates/CRM/Mailing/Form/Search.tpl | 9 +++++++++ xml/schema/Mailing/Mailing.xml | 15 +++++++++++++++ 9 files changed, 71 insertions(+) diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 4049a5367f..fe4b9ec3b6 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -2518,6 +2518,7 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id "$mailing.approval_status_id", "createdContact.sort_name as created_by", "scheduledContact.sort_name as scheduled_by", "$mailing.created_id as created_id", "$mailing.scheduled_id as scheduled_id", "$mailing.is_archived as archived", "$mailing.created_date as created_date", "campaign_id", "$mailing.sms_provider_id as sms_provider_id", + "$mailing.language" ); // we only care about parent jobs, since that holds all the info on @@ -2579,6 +2580,7 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id 'campaign_id' => $dao->campaign_id, 'campaign' => empty($dao->campaign_id) ? NULL : $allCampaigns[$dao->campaign_id], 'sms_provider_id' => $dao->sms_provider_id, + 'language' => $dao->language, ); } return $rows; diff --git a/CRM/Mailing/Form/Search.php b/CRM/Mailing/Form/Search.php index ad434b966a..b91a85891d 100644 --- a/CRM/Mailing/Form/Search.php +++ b/CRM/Mailing/Form/Search.php @@ -60,6 +60,13 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form { $this->addElement('checkbox', 'status_unscheduled', NULL, ts('Draft / Unscheduled')); $this->addYesNo('is_archived', ts('Mailing is Archived'), TRUE); + // Search by language, if multi-lingual + $enabledLanguages = CRM_Core_I18n::languages(TRUE); + + if (count($enabledLanguages) > 1) { + $this->addElement('select', 'language', ts('Language'), array('' => ' - all languages - ') + $enabledLanguages, array('class' => 'crm-select2')); + } + if ($parent->_sms) { $this->addElement('hidden', 'sms', $parent->_sms); } @@ -118,6 +125,7 @@ class CRM_Mailing_Form_Search extends CRM_Core_Form { 'sms', 'status_unscheduled', 'is_archived', + 'language', 'hidden_find_mailings', ); foreach ($fields as $field) { diff --git a/CRM/Mailing/Info.php b/CRM/Mailing/Info.php index 1fdd0e27b1..3444383c03 100644 --- a/CRM/Mailing/Info.php +++ b/CRM/Mailing/Info.php @@ -161,6 +161,8 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info { 'option_group_id' => "from_email_address", 'domain_id' => CRM_Core_Config::domainID(), )); + $enabledLanguages = CRM_Core_I18n::languages(TRUE); + $isMultiLingual = (count($enabledLanguages) > 1); CRM_Core_Resources::singleton() ->addSetting(array( 'crmMailing' => array( @@ -183,6 +185,8 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info { 'visibility' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::groupVisibility()), 'workflowEnabled' => CRM_Mailing_Info::workflowEnabled(), 'reportIds' => $reportIds, + 'enabledLanguages' => $enabledLanguages, + 'isMultiLingual' => $isMultiLingual, ), )) ->addPermissions(array( diff --git a/CRM/Mailing/Selector/Browse.php b/CRM/Mailing/Selector/Browse.php index a8658a0216..2d7474c54c 100644 --- a/CRM/Mailing/Selector/Browse.php +++ b/CRM/Mailing/Selector/Browse.php @@ -122,6 +122,11 @@ class CRM_Mailing_Selector_Browse extends CRM_Core_Selector_Base implements CRM_ 'sort' => 'name', 'direction' => CRM_Utils_Sort::DONTCARE, ), + array( + 'name' => ts('Language'), + 'sort' => 'language', + 'direction' => CRM_Utils_Sort::DONTCARE, + ), array( 'name' => ts('Status'), 'sort' => 'status', @@ -590,6 +595,11 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul $clauses[] = '( campaign_id IN ( ' . implode(' , ', array_values($campainIds)) . ' ) )'; } + if ($language = $this->_parent->get('language')) { + $clauses[] = "civicrm_mailing.language = %6"; + $params[6] = array($language, 'String'); + } + if (empty($clauses)) { return 1; } diff --git a/CRM/Mailing/Selector/Search.php b/CRM/Mailing/Selector/Search.php index 8b634527d1..40983319c8 100644 --- a/CRM/Mailing/Selector/Search.php +++ b/CRM/Mailing/Selector/Search.php @@ -60,6 +60,7 @@ class CRM_Mailing_Selector_Search extends CRM_Core_Selector_Base implements CRM_ 'contact_id', 'mailing_id', 'mailing_name', + 'language', 'sort_name', 'email', 'mailing_subject', @@ -358,6 +359,11 @@ class CRM_Mailing_Selector_Search extends CRM_Core_Selector_Base implements CRM_ 'sort' => 'mailing_name', 'direction' => CRM_Utils_Sort::DONTCARE, ), + array( + 'name' => ts('Language'), + 'sort' => 'language', + 'direction' => CRM_Utils_Sort::DONTCARE, + ), array( 'name' => ts('Mailing Subject'), 'sort' => 'mailing_subject', diff --git a/ang/crmMailing/BlockMailing.html b/ang/crmMailing/BlockMailing.html index e4556ef6b1..9836e48a5c 100644 --- a/ang/crmMailing/BlockMailing.html +++ b/ang/crmMailing/BlockMailing.html @@ -79,5 +79,19 @@ It could perhaps be thinned by 30-60% by making more directives. placeholder="Subject" name="subject" /> +
+
+ +
+
diff --git a/ang/crmMailing/BlockReview.html b/ang/crmMailing/BlockReview.html index 49b9232a64..def183c010 100644 --- a/ang/crmMailing/BlockReview.html +++ b/ang/crmMailing/BlockReview.html @@ -34,6 +34,9 @@ Required vars: mailing, attachments
{{ts('None')}}
+
+ {{crmMailingConst.enabledLanguages[mailing.language]}} +
diff --git a/templates/CRM/Mailing/Form/Search.tpl b/templates/CRM/Mailing/Form/Search.tpl index a68d745fb9..17c29aa020 100644 --- a/templates/CRM/Mailing/Form/Search.tpl +++ b/templates/CRM/Mailing/Form/Search.tpl @@ -63,6 +63,15 @@ {/if} + {* language *} + {if $form.language} + + {$form.language.label} {help id="id-language"}
+ {$form.language.html|crmAddClass:big} + + + {/if} + {* campaign in mailing search *} {include file="CRM/Campaign/Form/addCampaignToComponent.tpl" campaignContext="componentSearch" campaignTrClass='' campaignTdClass=''} diff --git a/xml/schema/Mailing/Mailing.xml b/xml/schema/Mailing/Mailing.xml index ca61d15cc3..d655f55359 100644 --- a/xml/schema/Mailing/Mailing.xml +++ b/xml/schema/Mailing/Mailing.xml @@ -439,4 +439,19 @@ 4.6 + + language + Mailing Language + varchar + 5 + Language of the content of the mailing. Useful for tokens. + 4.6 + + languages + name + + + Select + + -- 2.25.1