From 310bbbe5718d8cfecf50bb4b4b6662bc70626d06 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 30 Apr 2014 18:24:31 -0700 Subject: [PATCH] CRM-13966 - Tagset fixes for files --- CRM/Core/BAO/File.php | 10 +++--- CRM/Core/Form.php | 2 -- CRM/Core/Form/Tag.php | 60 +++++++++++-------------------- templates/CRM/Form/attachment.tpl | 16 ++++----- templates/CRM/common/Tagset.tpl | 30 ++++++++-------- 5 files changed, 49 insertions(+), 69 deletions(-) diff --git a/CRM/Core/BAO/File.php b/CRM/Core/BAO/File.php index 8c515cb5f1..1a66be5954 100644 --- a/CRM/Core/BAO/File.php +++ b/CRM/Core/BAO/File.php @@ -383,17 +383,15 @@ 'maxfilesize', $maxFileSize * 1024 * 1024 ); - $form->addElement('text', "attachDesc_$i", ts('Description'), 'size=40 maxlength=255'); + $form->addElement('text', "attachDesc_$i", NULL, array('size' => 40, 'maxlength' => 255, 'placeholder' => ts('Description'))); if (!empty($tags)) { $form->add('select', "tag_$i", ts('Tags'), $tags, FALSE, - array('id' => "tags_$i", 'multiple' => 'multiple', 'class' => 'crm-select2') + array('id' => "tags_$i", 'multiple' => 'multiple', 'class' => 'huge crm-select2', 'placeholder' => ts('- none -')) ); } + CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_file', NULL, FALSE, TRUE, "file_taglist_$i"); } - - // build tagset widget - CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_file', NULL, TRUE, TRUE); } /** @@ -444,7 +442,7 @@ $attachName = "attachFile_$i"; $attachDesc = "attachDesc_$i"; $attachTags = "tag_$i"; - $attachFreeTags = "attachment_taglist_$i"; + $attachFreeTags = "file_taglist_$i"; if (isset($formValues[$attachName]) && !empty($formValues[$attachName])) { // add static tags if selects $tagParams = array(); diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index baffb9a87c..d4c07cec6e 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -112,8 +112,6 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ public $urlPath = array(); - protected $unsavedWarn; - /** * constants for attributes for various form elements * attempt to standardize on the number of variations that we diff --git a/CRM/Core/Form/Tag.php b/CRM/Core/Form/Tag.php index cbe2f38b96..f7ffb32f57 100644 --- a/CRM/Core/Form/Tag.php +++ b/CRM/Core/Form/Tag.php @@ -62,53 +62,30 @@ class CRM_Core_Form_Tag { $form->assign("isTagset", FALSE); $mode = NULL; - foreach ($parentNames as & $parentNameItem) { + foreach ($parentNames as &$parentNameItem) { // get the parent id for tag list input for keyword $parentId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Tag', $parentNameItem, 'id', 'name'); // check if parent exists if ($parentId) { - $tagsetItem = 'parentId_' . $parentId; - $tagset[$tagsetItem]['skipEntityAction'] = $skipEntityAction; + $tagsetItem = $tagsetElementName . 'parentId_' . $parentId; $tagset[$tagsetItem]['parentID'] = $parentId; - // Fixme: these 3 variables may be unused - $tagset[$tagsetItem]['parentName'] = $parentNameItem; - $tagset[$tagsetItem]['entityTable'] = $entityTable; - $tagset[$tagsetItem]['skipTagCreate'] = $skipTagCreate; - - switch ($entityTable) { - case 'civicrm_activity': - $tagsetElementName = "activity_taglist"; - $mode = 'activity'; - break; - - case 'civicrm_case': - $tagsetElementName = "case_taglist"; - $mode = 'case'; - break; - - case 'civicrm_file': - $mode = 'attachment'; - break; - - default: - $tagsetElementName = "contact_taglist"; - $mode = 'contact'; + list(, $mode) = explode('_', $entityTable); + if (!$tagsetElementName) { + $tagsetElementName = $mode . "_taglist"; } - $tagset[$tagsetItem]['tagsetElementName'] = $tagsetElementName; - if ($tagsetElementName) { - $form->addEntityRef("{$tagsetElementName}[{$parentId}]", $parentNameItem, array( - 'entity' => 'tag', - 'multiple' => TRUE, - 'create' => !$skipTagCreate, - 'api' => array('params' => array('parent_id' => $parentId)), - 'data-entity_table' => $entityTable, - 'data-entity_id' => $entityId, - 'class' => "crm-$mode-tagset", - )); - } + + $form->addEntityRef("{$tagsetElementName}[{$parentId}]", $parentNameItem, array( + 'entity' => 'tag', + 'multiple' => TRUE, + 'create' => !$skipTagCreate, + 'api' => array('params' => array('parent_id' => $parentId)), + 'data-entity_table' => $entityTable, + 'data-entity_id' => $entityId, + 'class' => "crm-$mode-tagset", + )); if ($entityId) { $tagset[$tagsetItem]['entityId'] = $entityId; @@ -120,6 +97,7 @@ class CRM_Core_Form_Tag { else { $skipEntityAction = TRUE; } + $tagset[$tagsetItem]['skipEntityAction'] = $skipEntityAction; } } @@ -127,8 +105,12 @@ class CRM_Core_Form_Tag { // assign current tagsets which is used in postProcess $form->_tagsetInfo = $tagset; $form->assign("tagsetType", $mode); + // Merge this tagset info with possibly existing info in the template $tagsetInfo = (array) $form->get_template_vars("tagsetInfo"); - $tagsetInfo[$mode] = $tagset; + if (empty($tagsetInfo[$mode])) { + $tagsetInfo[$mode] = array(); + } + $tagsetInfo[$mode] = array_merge($tagsetInfo[$mode], $tagset); $form->assign("tagsetInfo", $tagsetInfo); $form->assign("isTagset", TRUE); } diff --git a/templates/CRM/Form/attachment.tpl b/templates/CRM/Form/attachment.tpl index 9a5877baa4..b59047b4a5 100644 --- a/templates/CRM/Form/attachment.tpl +++ b/templates/CRM/Form/attachment.tpl @@ -69,12 +69,12 @@ {if $form.tag_1.html} - -
{$form.tag_1.html}
+ {$form.tag_1.label} +
{$form.tag_1.html}
{/if} - {if $tagsetInfo.attachment} - {include file="CRM/common/Tagset.tpl" tagsetType='attachment' tagsetNumber=1 } + {if $tagsetInfo.file} + {include file="CRM/common/Tagset.tpl" tagsetType='file' tableLayout=true tagsetElementName="file_taglist_1"} {/if} {section name=attachLoop start=2 loop=$numAttachments+1} {assign var=index value=$smarty.section.attachLoop.index} @@ -87,11 +87,11 @@ {$form.$attachName.html} {$form.$attachDesc.html} - -
{$form.$tagElement.html}
+ {$form.$tagElement.label} +
{$form.$tagElement.html}
- {if $tagsetInfo.attachment} - {include file="CRM/common/Tagset.tpl" tagsetType='attachment' tagsetNumber=$index} + {if $tagsetInfo.file} + {include file="CRM/common/Tagset.tpl" tagsetType='file' tableLayout=true tagsetElementName="file_taglist_$index"} {/if} {/section} diff --git a/templates/CRM/common/Tagset.tpl b/templates/CRM/common/Tagset.tpl index e6f8ecc794..6cb324312e 100644 --- a/templates/CRM/common/Tagset.tpl +++ b/templates/CRM/common/Tagset.tpl @@ -28,22 +28,24 @@ {/if} {foreach from=$tagsetInfo.$tagsetType item=tagset} {assign var="elemName" value=$tagset.tagsetElementName} - {assign var="parID" value=$tagset.parentID} - {assign var="skipEntityAction" value=$tagset.skipEntityAction} - {if $tableLayout} - - {$form.$elemName.$parID.label} - - - {$form.$elemName.$parID.html} - - {else} -
-
+ {if empty($tagsetElementName) or $tagsetElementName eq $elemName} + {assign var="parID" value=$tagset.parentID} + {assign var="skipEntityAction" value=$tagset.skipEntityAction} + {if $tableLayout} + {$form.$elemName.$parID.label} - {$form.$elemName.$parID.html} + + + {$form.$elemName.$parID.html} + + {else} +
+
+ {$form.$elemName.$parID.label} + {$form.$elemName.$parID.html} +
-
+ {/if} {/if} {/foreach} -- 2.25.1