mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-03 18:58:24 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			2.14.1
			...
			integratio
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 57a9f52fa1 | 
@@ -9,6 +9,7 @@ use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluatio
 | 
			
		||||
use Chill\PersonBundle\Entity\SocialWork\Evaluation;
 | 
			
		||||
use GuzzleHttp\Exception\TransferException;
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\HttpFoundation\JsonResponse;
 | 
			
		||||
use Symfony\Component\HttpFoundation\HeaderUtils;
 | 
			
		||||
@@ -60,8 +61,11 @@ class DocGeneratorTemplateController extends AbstractController
 | 
			
		||||
     */
 | 
			
		||||
    public function generateDocFromTemplateAction(
 | 
			
		||||
        \ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlGeneratorInterface $tempUrlGenerator,
 | 
			
		||||
        DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response
 | 
			
		||||
    {
 | 
			
		||||
        DocGeneratorTemplate $template,
 | 
			
		||||
        string $entityClassName,
 | 
			
		||||
        int $entityId,
 | 
			
		||||
        Request $request
 | 
			
		||||
    ): Response {
 | 
			
		||||
        $getUrlGen = $tempUrlGenerator->generate(
 | 
			
		||||
            'GET',
 | 
			
		||||
            $template->getFile());
 | 
			
		||||
@@ -134,7 +138,8 @@ class DocGeneratorTemplateController extends AbstractController
 | 
			
		||||
                $em->flush();
 | 
			
		||||
 | 
			
		||||
                return $this->redirectToRoute('chill_wopi_file_edit', [
 | 
			
		||||
                    'fileId' => $genDocName
 | 
			
		||||
                    'fileId' => $genDocName,
 | 
			
		||||
                    'returnPath' => $request->query->get('returnPath', "/")
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
        } catch (TransferException $e) {
 | 
			
		||||
 
 | 
			
		||||
@@ -109,7 +109,8 @@ export default {
 | 
			
		||||
         this.toggleEditEvaluation();
 | 
			
		||||
      },
 | 
			
		||||
      buildEditLink(storedObject) {
 | 
			
		||||
        return `/wopi/edit/${storedObject.filename}`;
 | 
			
		||||
        return `/fr/chill_wopi/edit/${storedObject.filename}?returnPath=` + encodeURIComponent(
 | 
			
		||||
            window.location.pathname + window.location.search + window.location.hash);
 | 
			
		||||
      },
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								src/Bundle/ChillWopiBundle/chill.webpack.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/Bundle/ChillWopiBundle/chill.webpack.config.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
// this file loads all assets from the Chill person bundle
 | 
			
		||||
module.exports = function(encore, entries)
 | 
			
		||||
{
 | 
			
		||||
    encore.addEntry('page_wopi_editor', __dirname + '/src/Resources/public/page/editor/index.js');
 | 
			
		||||
    //home/julien/dev/département-vendee/chill/vendor/chill-project/chill-bundles/src/Bundle/ChillWopiBundle/src/Resources/public/page/editor/index.js
 | 
			
		||||
};
 | 
			
		||||
@@ -16,6 +16,7 @@ use Chill\WopiBundle\Service\Controller\ResponderInterface;
 | 
			
		||||
use Exception;
 | 
			
		||||
use loophp\psr17\Psr17Interface;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 | 
			
		||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
 | 
			
		||||
use Symfony\Component\Routing\RouterInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
@@ -61,7 +62,7 @@ final class Test
 | 
			
		||||
        $storedObject = $this->storedObjectRepository->findOneBy(['filename' => $fileId]);
 | 
			
		||||
 | 
			
		||||
        if (null === $storedObject) {
 | 
			
		||||
            throw new Exception(sprintf('Unable to find object named %s', $fileId));
 | 
			
		||||
            throw new NotFoundHttpException(sprintf('Unable to find object named %s', $fileId));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ([] === $discoverExtension = $this->wopiDiscovery->discoverMimeType($storedObject->getType())) {
 | 
			
		||||
@@ -86,6 +87,7 @@ final class Test
 | 
			
		||||
                                ],
 | 
			
		||||
                                UrlGeneratorInterface::ABSOLUTE_URL
 | 
			
		||||
                            ),
 | 
			
		||||
                        'closebutton' => 1
 | 
			
		||||
                    ]
 | 
			
		||||
                )
 | 
			
		||||
            );
 | 
			
		||||
@@ -93,7 +95,7 @@ final class Test
 | 
			
		||||
        return $this
 | 
			
		||||
            ->responder
 | 
			
		||||
            ->render(
 | 
			
		||||
                '@Wopi/Editor/page.html.twig',
 | 
			
		||||
                '@ChillWopi/Editor/page.html.twig',
 | 
			
		||||
                $configuration
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,46 @@
 | 
			
		||||
require('./index.scss');
 | 
			
		||||
 | 
			
		||||
window.addEventListener('DOMContentLoaded', function(e) {
 | 
			
		||||
    let frameholder = document.getElementById('frameholder');
 | 
			
		||||
    let office_frame = document.createElement('iframe');
 | 
			
		||||
    office_frame.name = 'office_frame';
 | 
			
		||||
    office_frame.id = 'office_frame';
 | 
			
		||||
 | 
			
		||||
    // The title should be set for accessibility
 | 
			
		||||
    office_frame.title = 'Office Frame';
 | 
			
		||||
 | 
			
		||||
    // This attribute allows true fullscreen mode in slideshow view
 | 
			
		||||
    // when using PowerPoint's 'view' action.
 | 
			
		||||
    office_frame.setAttribute('allowfullscreen', 'true');
 | 
			
		||||
 | 
			
		||||
    // The sandbox attribute is needed to allow automatic redirection to the O365 sign-in page in the business user flow
 | 
			
		||||
    office_frame.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation allow-popups-to-escape-sandbox');
 | 
			
		||||
    frameholder.appendChild(office_frame);
 | 
			
		||||
 | 
			
		||||
    document.getElementById('office_form').submit();
 | 
			
		||||
    console.log(office_frame);
 | 
			
		||||
 | 
			
		||||
    const url = new URL(editor_url);
 | 
			
		||||
    const editor_domain = url.origin;
 | 
			
		||||
 | 
			
		||||
    window.addEventListener("message", function(message) {
 | 
			
		||||
        if (message.origin !== editor_domain) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let data = JSON.parse(message.data);
 | 
			
		||||
 | 
			
		||||
        if ('UI_Close' === data.MessageId) {
 | 
			
		||||
            closeEditor();
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function closeEditor() {
 | 
			
		||||
   let
 | 
			
		||||
       params = new URLSearchParams(window.location.search),
 | 
			
		||||
       returnPath = params.get('returnPath');
 | 
			
		||||
 | 
			
		||||
   window.location.assign(returnPath);
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
body {
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  -ms-content-zooming: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#office_frame {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  border: none;
 | 
			
		||||
  display: block;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,36 @@
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
    #office_frame {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 800px;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        border: none;
 | 
			
		||||
        display: block;
 | 
			
		||||
    }
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<form id="office_form" name="office_form" target="office_frame" action="{{ server }}" method="post">
 | 
			
		||||
    <input name="access_token" value="{{ access_token }}" type="hidden" />
 | 
			
		||||
    <input name="access_token_ttl" value="{{ access_token_ttl }}" type="hidden" />
 | 
			
		||||
</form>
 | 
			
		||||
 | 
			
		||||
<span id="frameholder"></span>
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
    var frameholder = document.getElementById('frameholder');
 | 
			
		||||
    var office_frame = document.createElement('iframe');
 | 
			
		||||
    office_frame.name = 'office_frame';
 | 
			
		||||
    office_frame.id = 'office_frame';
 | 
			
		||||
 | 
			
		||||
    // The title should be set for accessibility
 | 
			
		||||
    office_frame.title = 'Office Frame';
 | 
			
		||||
 | 
			
		||||
    // This attribute allows true fullscreen mode in slideshow view
 | 
			
		||||
    // when using PowerPoint's 'view' action.
 | 
			
		||||
    office_frame.setAttribute('allowfullscreen', 'true');
 | 
			
		||||
 | 
			
		||||
    // The sandbox attribute is needed to allow automatic redirection to the O365 sign-in page in the business user flow
 | 
			
		||||
    office_frame.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation allow-popups-to-escape-sandbox');
 | 
			
		||||
    frameholder.appendChild(office_frame);
 | 
			
		||||
 | 
			
		||||
    document.getElementById('office_form').submit();
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,33 @@
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
    <meta charset="utf-8">
 | 
			
		||||
 | 
			
		||||
    <!-- Enable IE Standards mode -->
 | 
			
		||||
    <meta http-equiv="x-ua-compatible" content="ie=edge">
 | 
			
		||||
 | 
			
		||||
    <title></title>
 | 
			
		||||
    <meta name="description" content="">
 | 
			
		||||
    <meta name="viewport"
 | 
			
		||||
        content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
 | 
			
		||||
 | 
			
		||||
    <link rel="shortcut icon" href="{{ favIconUrl }}" />
 | 
			
		||||
    <script type="text/javascript">
 | 
			
		||||
        const editor_url = "{{ server|escape('js') }}";
 | 
			
		||||
    </script>
 | 
			
		||||
    {{ encore_entry_link_tags('page_wopi_editor') }}
 | 
			
		||||
    {{ encore_entry_script_tags('page_wopi_editor') }}
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
    <form id="office_form" name="office_form" target="office_frame" action="{{ server }}" method="post">
 | 
			
		||||
        <input name="access_token" value="{{ access_token }}" type="hidden" />
 | 
			
		||||
        <input name="access_token_ttl" value="{{ access_token_ttl }}" type="hidden" />
 | 
			
		||||
    </form>
 | 
			
		||||
 | 
			
		||||
    <span id="frameholder"></span>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user