mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 17:28:23 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			v3.8.2
			...
			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