From 6b48fb846209b34a38ef21e89d2c224532340f6d Mon Sep 17 00:00:00 2001 From: Florian BLOUET Date: Wed, 4 Nov 2015 14:57:14 +0100 Subject: [PATCH] update share modal with new embed code, added embed bundle installation task --- .../Controller/Prod/ShareController.php | 54 ++++++++++- templates/web/prod/Share/record.html.twig | 92 +++++++++++++------ 2 files changed, 117 insertions(+), 29 deletions(-) diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ShareController.php b/lib/Alchemy/Phrasea/Controller/Prod/ShareController.php index acf14b43c5..2cff5fdc5f 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ShareController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ShareController.php @@ -23,14 +23,62 @@ class ShareController extends Controller */ public function shareRecord($base_id, $record_id) { + $outputVars = [ + 'isAvailable' => false, + 'preview' => [ + 'permalinkUrl' => '', + 'permaviewUrl' => '', + 'embedUrl' => '', + 'width' => '', + 'height' => '' + ] + ]; $record = new \record_adapter($this->app, \phrasea::sbasFromBas($this->app, $base_id), $record_id); if (!$this->getAclForUser()->has_access_to_subdef($record, 'preview')) { $this->app->abort(403); } - return $this->renderResponse('prod/Share/record.html.twig', [ - 'record' => $record, - ]); + $preview = $record->get_preview(); + + if ($preview->get_permalink() !== null) { + + + $subdefName = $preview->get_name(); + $subdef = $record->get_subdef($subdefName); + + switch ($record->getType()) { + + case 'flexpaper': + case 'document': + case 'audio': + case 'video': + default: + $token = $preview->get_permalink()->get_token(); + $permalinkUrl = $preview->get_permalink()->get_url(); + $permaviewUrl = $preview->get_permalink()->get_page(); + $previewWidth = $preview->get_width(); + $previewHeight = $preview->get_height(); + break; + } + + + $sbas_id = $record->getDataboxId(); + $baseUrl = $this->app['request']->getSchemeAndHttpHost().$this->app['request']->getBaseUrl(); + $embedUrl = $baseUrl.'/embed/'.$sbas_id.'/'.$record_id.'/'.$subdefName.'/?token='.$token; + + $outputVars = [ + 'isAvailable' => true, + 'preview' => [ + 'permalinkUrl' => $permalinkUrl, + 'permaviewUrl' => $permaviewUrl, + 'embedUrl' => $embedUrl, + 'width' => $previewWidth, + 'height' => $previewHeight + ] + ]; + } + + return $this->renderResponse('prod/Share/record.html.twig', $outputVars); } } diff --git a/templates/web/prod/Share/record.html.twig b/templates/web/prod/Share/record.html.twig index 3a59aca14d..edb8321f03 100644 --- a/templates/web/prod/Share/record.html.twig +++ b/templates/web/prod/Share/record.html.twig @@ -1,43 +1,56 @@ -{% set preview = record.get_preview()%} - -{% if preview is iterable %} -

{{ 'No preview available.' | trans }}

-{% elseif preview.get_permalink() is none %} -

{{ 'No permalink available.' | trans }}

+{% if not isAvailable %} +

{{ 'No permalink available.' | trans }}

{# +

{{ 'No preview available.' | trans }}

#} {% else %} - {% set type = record.get_type() %} - {% set url = preview.get_permalink().get_url() %} - {% set pageurl = preview.get_permalink().get_page() %} - - {% if url is not empty %} + {% if preview.permalinkUrl is not empty %}
-
-

- +

+
+ {% trans %}Send to Twitter{% endtrans %} -

-

- +

+
+ {% trans %}Send to Facebook{% endtrans %}

- - - - - {% if type == 'image' %} +
+ + + +

+ previewLabel    + copyClipboardLabel +

+
+
+ + +

+ previewLabel    + copyClipboardLabel +

+
+
+ {#{% if type == 'image' %}#} {% spaceless %} - {% endspaceless %} - {% endif %} +

+ previewLabel    + copyClipboardLabel +

+
+ {#{% endif %}#}
@@ -48,10 +61,37 @@ function(){$(this).addClass('ui-state-hover');}, function(){$(this).removeClass('ui-state-hover');} ); + + $('#permalinkUrlCopy').on('click', function(event) { + event.preventDefault(); + return copyElContentClipboard('permalinkUrl'); + }); + + $('#permaviewUrlCopy').on('click', function(event) { + event.preventDefault(); + return copyElContentClipboard('permaviewUrl'); + }); + + $('#embedCopy').on('click', function(event) { + event.preventDefault(); + return copyElContentClipboard('embedRecordUrl'); + }); + + var copyElContentClipboard = function(elId) { + var copyEl = document.getElementById(elId); + copyEl.select(); + try { + var successful = document.execCommand('copy'); + var msg = successful ? 'successful' : 'unsuccessful'; + console.log('Copying text command was ' + msg); + } catch (err) { + console.log('unable to copy'); + } + } }); {% else %} -
<{{ 'No URL available' | trans }}
+
{{ 'No URL available' | trans }}
{% endif %} {% endif %}