CRM-17608: add formRule validation for invalid document file
authordeb.monish <monish.deb@webaccessglobal.com>
Thu, 21 Jul 2016 14:06:19 +0000 (19:36 +0530)
committerdeb.monish <monish.deb@webaccessglobal.com>
Thu, 21 Jul 2016 14:06:19 +0000 (19:36 +0530)
CRM/Admin/Form/MessageTemplates.php
CRM/Contact/Form/Task/PDFLetterCommon.php
templates/CRM/Admin/Form/MessageTemplates.tpl

index 36d845bf99b815380e14263c7d2f50fc8e089115..e269bd6d100c0293230957ede2cca369f96f0885 100644 (file)
@@ -245,8 +245,14 @@ class CRM_Admin_Form_MessageTemplates extends CRM_Admin_Form {
   public static function formRule($params, $files, $self) {
     $errors = array();
 
-    //empty file upload validation for odt/docx template
-    if (empty($files['file_id']['tmp_name']) && !empty($params['file_type']) && !$self->_is_document) {
+    // If user uploads non-document file other than odt/docx
+    if (!empty($files['file_id']['tmp_name']) &&
+      array_search($files['file_id']['type'], CRM_Core_SelectValues::documentApplicationType()) == NULL
+    ) {
+      $error['file_id'] = ts('Invalid document file format');
+    }
+    // If default is not set and no document file is uploaded
+    elseif (empty($files['file_id']['tmp_name']) && !empty($params['file_type']) && !$self->_is_document) {
       //On edit page of docx/odt message template if user changes file type but forgot to upload document
       $errors['file_id'] = ts('Please upload document');
     }
index 4a4677f2d6ed6f29ec6a213cfc7b9c43d7e0dfcf..214afdbad55aa79a076d46ba6808570a56114a71 100644 (file)
@@ -214,17 +214,24 @@ class CRM_Contact_Form_Task_PDFLetterCommon {
    *
    * @param array $fields
    *   The input form values.
-   * @param array $dontCare
+   * @param array $files
    * @param array $self
    *   Additional values form 'this'.
    *
    * @return bool
    *   TRUE if no errors, else array of errors.
    */
-  public static function formRule($fields, $dontCare, $self) {
+  public static function formRule($fields, $files, $self) {
     $errors = array();
     $template = CRM_Core_Smarty::singleton();
 
+    // If user uploads non-document file other than odt/docx
+    if (empty($fields['template']) &&
+      !empty($files['document_file']['tmp_name']) &&
+      array_search($files['document_file']['type'], CRM_Core_SelectValues::documentApplicationType()) == NULL
+    ) {
+      $errors['document_file'] = ts('Invalid document file format');
+    }
     //Added for CRM-1393
     if (!empty($fields['saveTemplate']) && empty($fields['saveTemplateName'])) {
       $errors['saveTemplateName'] = ts("Enter name to save message template");
index 69587aacaeae5f629bff7a5d6747f55e9412c797..c204294327861024c46c49c1ec5a44a7f5beccf3 100644 (file)
         mimeType = $('a.delete-attachment').data('mimetype');
       }
 
-      showHideUpload($("input[id$='_file_type']").val());
+      var selector = $("input[id$='_file_type']").attr('type') == 'radio' ? "input[id$='_file_type']:checked" : "input[id$='_file_type']";
+      showHideUpload($(selector).val());
       $("input[id$='_file_type']").on('click', function(){
         showHideUpload(this.value);
       });