From 1ef465c289195ded45fb7452c22aa2826edd7e7b Mon Sep 17 00:00:00 2001
From: "Donald A. Lobo" <lobo@civicrm.org>
Date: Sat, 30 Mar 2013 09:51:00 -0700
Subject: [PATCH] CRM-12254

---
 CRM/Core/BAO/CustomGroup.php              |  1 +
 CRM/Core/BAO/File.php                     |  2 +-
 CRM/Core/Page/File.php                    |  2 +-
 templates/CRM/Contact/Form/CustomData.tpl |  3 +++
 templates/CRM/Custom/Form/CustomData.tpl  |  1 +
 templates/CRM/Custom/Form/CustomField.tpl | 11 ++++----
 templates/CRM/Form/attachment.tpl         | 32 +++--------------------
 templates/CRM/Form/attachmentjs.tpl       | 27 +++++++++++++++++++
 8 files changed, 44 insertions(+), 35 deletions(-)
 create mode 100644 templates/CRM/Form/attachmentjs.tpl

diff --git a/CRM/Core/BAO/CustomGroup.php b/CRM/Core/BAO/CustomGroup.php
index 27459a4478..11b30806f0 100644
--- a/CRM/Core/BAO/CustomGroup.php
+++ b/CRM/Core/BAO/CustomGroup.php
@@ -630,6 +630,7 @@ SELECT $select
                           'fid' => $fieldID,
                         )
                       );
+                      $customValue['deleteURLArgs'] = CRM_Core_BAO_File::deleteURLArgs($table, $dao->$entityIDName, $fileDAO->id);
                       $customValue['fileName'] = CRM_Utils_File::cleanFileName(basename($fileDAO->uri));
                       if ($fileDAO->mime_type == "image/jpeg" ||
                         $fileDAO->mime_type == "image/pjpeg" ||
diff --git a/CRM/Core/BAO/File.php b/CRM/Core/BAO/File.php
index c11b92a5a2..c10becaced 100644
--- a/CRM/Core/BAO/File.php
+++ b/CRM/Core/BAO/File.php
@@ -105,7 +105,7 @@
        list($sql, $params) = self::sql($entityTable, $entityID, $fileTypeID);
      }
      else {
-       list($sql, $params) = self::sql($entityTable, $entityID, NULL);
+       list($sql, $params) = self::sql($entityTable, $entityID, 0);
      }
 
      $dao = CRM_Core_DAO::executeQuery($sql, $params);
diff --git a/CRM/Core/Page/File.php b/CRM/Core/Page/File.php
index 67725b7edd..51a64dedcc 100644
--- a/CRM/Core/Page/File.php
+++ b/CRM/Core/Page/File.php
@@ -33,8 +33,8 @@
  *
  */
 class CRM_Core_Page_File extends CRM_Core_Page {
-  function run() {
 
+  function run() {
     $eid    = CRM_Utils_Request::retrieve('eid', 'Positive', $this, TRUE);
     $fid    = CRM_Utils_Request::retrieve('fid', 'Positive', $this, FALSE);
     $id     = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE);
diff --git a/templates/CRM/Contact/Form/CustomData.tpl b/templates/CRM/Contact/Form/CustomData.tpl
index cf13c8983c..0816b8e3ab 100644
--- a/templates/CRM/Contact/Form/CustomData.tpl
+++ b/templates/CRM/Contact/Form/CustomData.tpl
@@ -33,6 +33,7 @@
     {*include custom data js file*}
     {include file="CRM/common/customData.tpl"}
 
+
   {if $customValueCount }
     {literal}
     <script type="text/javascript">
@@ -48,3 +49,5 @@
     {/literal}
   {/if}
 {/if}
+
+{include file="CRM/Form/attachmentjs.tpl"}
diff --git a/templates/CRM/Custom/Form/CustomData.tpl b/templates/CRM/Custom/Form/CustomData.tpl
index a0146bd895..51b99f29ee 100644
--- a/templates/CRM/Custom/Form/CustomData.tpl
+++ b/templates/CRM/Custom/Form/CustomData.tpl
@@ -82,4 +82,5 @@
       });
     {/literal}
   </script>
+
 {/if}
diff --git a/templates/CRM/Custom/Form/CustomField.tpl b/templates/CRM/Custom/Form/CustomField.tpl
index c916648ce6..67b0caa0fc 100644
--- a/templates/CRM/Custom/Form/CustomField.tpl
+++ b/templates/CRM/Custom/Form/CustomField.tpl
@@ -76,18 +76,20 @@
                     <span class="crm-clear-link">(<a href="#" title="unselect" onclick="unselectRadio('{$element_name}', '{$form.formName}'); return false;" >{ts}clear{/ts}</a>)</span>
                 {elseif $element.data_type eq 'File'}
                     {if $element.element_value.data}
+                      <div id="attachStatusMesg_{$element_name}" class="status hiddenElement"></div>
+                      <div id="attachFile_{$element_name}">
                         <span class="html-adjust"><br />
                             &nbsp;{ts}Attached File{/ts}: &nbsp;
-                            {if $element.element_value.displayURL }
+                            {if $element.element_value.displayURL}
                                 <a href="#" onclick="popUp('{$element.element_value.imageURL}'); return false;" ><img src="{$element.element_value.displayURL}" height = "{$element.element_value.imageThumbHeight}" width="{$element.element_value.imageThumbWidth}"></a>
                             {else}
                                 <a href="{$element.element_value.fileURL}">{$element.element_value.fileName}</a>
                             {/if}
-                            {if $element.element_value.deleteURL }
-                                <br />
-                            {$element.element_value.deleteURL}
+                            {if $element.element_value.deleteURL}
+                                   <a href="#" onclick="showDelete('{$element.element_value.fileName}', '{$element.element_value.deleteURLArgs}', {$element.element_value.fid}, '#attachStatusMesg_{$element_name}', '#attachFile_{$element_name}'); return false;" title="{ts}Delete this file{/ts}"><span class="icon red-icon delete-icon" style="margin:0px 0px -5px 20px" title="{ts}Delete this file{/ts}"></span></a>
                             {/if}
                         </span>
+                      </div>
                     {/if}
                 {elseif $element.html_type eq 'Autocomplete-Select'}
                   {if $element.data_type eq 'ContactReference'}
@@ -100,4 +102,3 @@
         </tr>
 
     {/if}
-
diff --git a/templates/CRM/Form/attachment.tpl b/templates/CRM/Form/attachment.tpl
index 4b46567e25..4648ac684a 100644
--- a/templates/CRM/Form/attachment.tpl
+++ b/templates/CRM/Form/attachment.tpl
@@ -118,7 +118,7 @@
                   <strong><a href="{$attVal.url}">{$attVal.cleanName}</a></strong>
                   {if $attVal.description}&nbsp;-&nbsp;{$attVal.description}{/if}
                   {if $attVal.deleteURLArgs}
-                   <a href="#" onclick="showDelete('{$attVal.cleanName}', '{$attVal.deleteURLArgs}', {$attVal.fileID}); return false;" title="{ts}Delete this attachment{/ts}"><span class="icon red-icon delete-icon" style="margin:0px 0px -5px 20px" title="{ts}Delete this attachment{/ts}"></span></a>
+                   <a href="#" onclick="showDelete('{$attVal.cleanName}', '{$attVal.deleteURLArgs}', {$attVal.fileID}, '#attachStatusMesg', '#attachFileRecord_{$attVal.fileID}'); return false;" title="{ts}Delete this attachment{/ts}"><span class="icon red-icon delete-icon" style="margin:0px 0px -5px 20px" title="{ts}Delete this attachment{/ts}"></span></a>
                   {/if}
                   {if !empty($attVal.tag)}
                     <br/>
@@ -158,34 +158,10 @@
     </script>
     {/literal}
  {/if} {* edit/add if*}
-{if $currentAttachmentInfo}
-<script type="text/javascript">
-{literal}
-  function hideStatus( ) {
-    cj( '#attachStatusMesg' ).hide( );
-  }
-
-  function showDelete( fileName, postURLData, fileID ) {
-    var confirmMsg = '{/literal}{ts escape="js"}Are you sure you want to delete attachment: {/ts}{literal}' + fileName + '&nbsp; <a href="#" onclick="deleteAttachment( \'' + postURLData + '\',' + fileID + ' ); return false;" style="text-decoration: underline;">{/literal}{ts escape='js'}Yes{/ts}{literal}</a>&nbsp;&nbsp;&nbsp;<a href="#" onclick="hideStatus( ); return false;" style="text-decoration: underline;">{/literal}{ts escape='js'}No{/ts}{literal}</a>';
-    cj( '#attachStatusMesg' ).show( ).html( confirmMsg );
-  }
 
-  function deleteAttachment( postURLData, fileID ) {
-    var postUrl = {/literal}"{crmURL p='civicrm/file/delete' h=0 }"{literal};
-    cj.ajax({
-      type: "GET",
-      data:  postURLData,
-      url: postUrl,
-      success: function(html){
-        var resourceBase   = {/literal}"{$config->resourceBase}"{literal};
-        var successMsg = '{/literal}{ts escape="js"}The selected attachment has been deleted.{/ts}{literal} &nbsp;&nbsp;<a href="#" onclick="hideStatus( ); return false;"><img title="{/literal}{ts escape='js'}close{/ts}{literal}" src="' +resourceBase+'i/close.png"/></a>';
-        cj( '#attachFileRecord_' + fileID ).hide( );
-        cj( '#attachStatusMesg' ).show( ).html( successMsg );
-      }
-    });
-  }
-{/literal}
-</script>
+{if $currentAttachmentInfo}
+{include file="CRM/Form/attachmentjs.tpl"}
 {/if}
+
 {/if} {* top level if *}
 
diff --git a/templates/CRM/Form/attachmentjs.tpl b/templates/CRM/Form/attachmentjs.tpl
new file mode 100644
index 0000000000..b1c8c018ee
--- /dev/null
+++ b/templates/CRM/Form/attachmentjs.tpl
@@ -0,0 +1,27 @@
+<script type="text/javascript">
+{literal}
+  function hideStatus( divName ) {
+    cj( divName ).hide( );
+  }
+
+  function showDelete( fileName, postURLData, fileID, divName, divFile ) {
+    var confirmMsg = '{/literal}{ts escape="js"}Are you sure you want to delete attachment: {/ts}{literal}' + fileName + '&nbsp; <a href="#" onclick="deleteAttachment( \'' + postURLData + '\',' + fileID + ',\'' + divName + '\', \'' + divFile + '\' ); return false;" style="text-decoration: underline;">{/literal}{ts escape='js'}Yes{/ts}{literal}</a>&nbsp;&nbsp;&nbsp;<a href="#" onclick="hideStatus( divName ); return false;" style="text-decoration: underline;">{/literal}{ts escape='js'}No{/ts}{literal}</a>';
+    cj( divName ).show( ).html( confirmMsg );
+p  }
+
+  function deleteAttachment( postURLData, fileID, divName, divFile ) {
+    var postUrl = {/literal}"{crmURL p='civicrm/file/delete' h=0 }"{literal};
+    cj.ajax({
+      type: "GET",
+      data:  postURLData,
+      url: postUrl,
+      success: function(html){
+        var resourceBase   = {/literal}"{$config->resourceBase}"{literal};
+        var successMsg = '{/literal}{ts escape="js"}The selected attachment has been deleted.{/ts}{literal} &nbsp;&nbsp;<a href="#" onclick="hideStatus( \'' + divName + '\'); return false;"><img title="{/literal}{ts escape='js'}close{/ts}{literal}" src="' +resourceBase+'i/close.png"/></a>';
+        cj( divFile ).hide( );
+        cj( divName ).show( ).html( successMsg );
+      }
+    });
+  }
+{/literal}
+</script>
-- 
GitLab