Skip to content
Snippets Groups Projects
Commit b9a55325 authored by jaapjansma's avatar jaapjansma
Browse files

added possibility for a public link in the data processor field output handler

parent 4f73454d
No related branches found
No related tags found
No related merge requests found
......@@ -62,17 +62,24 @@ class DocumentDownloadLink extends AbstractSimpleFieldOutputHandler {
$documentId = $rawRecord[$this->inputFieldSpec->alias];
$repo = \CRM_Documents_Entity_DocumentRepository::singleton();
$document = $repo->getDocumentById($documentId);
$rawValue = $document->getCurrentVersion()->getAttachment()->url;
$url = $document->getCurrentVersion()->getAttachment()->url;
if ($this->public) {
// Generate a frontend link.
$fileEntityId = $document->getCurrentVersion()->getId();
$fileId = $document->getCurrentVersion()->getAttachment()->fileID;
$fileHash = CRM_Core_BAO_File::generateFileHash($fileEntityId, $fileId);
$url = CRM_Utils_System::url('civicrm/file', "reset=1&id={$fileId}&eid={$fileEntityId}&fcs={$fileHash}", TRUE, NULL, TRUE, TRUE);
}
if ($this->returnUrl) {
$output = new FieldOutput($rawValue);
$output = new FieldOutput($url);
} else {
$output = new HTMLFieldOutput($rawValue);
$output = new HTMLFieldOutput($url);
}
if ($rawValue) {
$output->formattedValue = $document->getCurrentVersion()->getAttachment()->url;
if ($url) {
$output->formattedValue = $url;
if (!$this->returnUrl) {
$output->setHtmlOutput('<a href="' . $document->getCurrentVersion()->getAttachment()->url . '" title="' . $document->getCurrentVersion()->getAttachment()->cleanname . '"><i class="crm-i ' . $document->getIcon() . '">&nbsp;</i>' . $document->getCurrentVersion()->getAttachment()->cleanname . '</a>');
$output->setHtmlOutput('<a href="' . $url . '" title="' . $document->getCurrentVersion()->getAttachment()->cleanname . '"><i class="crm-i ' . $document->getIcon() . '">&nbsp;</i>' . $document->getCurrentVersion()->getAttachment()->cleanname . '</a>');
}
}
return $output;
......@@ -101,12 +108,16 @@ class DocumentDownloadLink extends AbstractSimpleFieldOutputHandler {
public function buildConfigurationForm(\CRM_Core_Form $form, $field=array()) {
parent::buildConfigurationForm($form, $field);
$form->add('checkbox', 'return_url', E::ts('Only return URL'));
$form->add('checkbox', 'public', E::ts('Public link'));
if (isset($field['configuration'])) {
$configuration = $field['configuration'];
$defaults = array();
if (isset($configuration['return_url'])) {
$defaults['return_url'] = $configuration['return_url'];
}
if (isset($configuration['public'])) {
$defaults['public'] = $configuration['public'];
}
$form->setDefaults($defaults);
}
}
......@@ -131,6 +142,7 @@ class DocumentDownloadLink extends AbstractSimpleFieldOutputHandler {
public function processConfiguration($submittedValues) {
$configuration = parent::processConfiguration($submittedValues);
$configuration['return_url'] = isset($submittedValues['return_url']) ? $submittedValues['return_url'] : false;
$configuration['public'] = isset($submittedValues['public']) ? $submittedValues['public'] : false;
return $configuration;
}
......
......@@ -14,8 +14,8 @@
<url desc="Support">http://civicoop.org</url>
<url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
</urls>
<releaseDate>2021-11-10</releaseDate>
<version>1.17-dev</version>
<releaseDate>2021-11-19</releaseDate>
<version>1.17</version>
<develStage>stable</develStage>
<compatibility>
<ver>5.41</ver>
......
{include file="CRM/Dataprocessor/Form/Field/Configuration/SimpleFieldOutputHandler.tpl"}
{crmScope extensionKey='org.civicoop.documents'}
<div class="crm-section">
<div class="label">{$form.public.label}</div>
<div class="content">{$form.public.html}</div>
<div class="clear"></div>
</div>
<div class="crm-section">
<div class="label">{$form.return_url.label}</div>
<div class="content">{$form.return_url.html}</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment