X-Git-Url: https://git.rapsys.eu/.gitweb.cgi/packbundle/blobdiff_plain/f86a3843cac9cddecd718697c8ce401fa6637dc3..13cd82c5bac6da8f00d01709d5f1d6925aa8a887:/README.md?ds=inline

diff --git a/README.md b/README.md
index 3f3ab87..9550e6b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,15 @@
+Contribute
+==========
+
+You may buy me a Beer, a Tea or help with Server fees with a paypal donation to
+the address <paypal@rapsys.eu>.
+
+Don't forget to show your love for this project, feel free to report bugs to
+the author, issues which are security relevant should be disclosed privately
+first.
+
+Patches are welcomed and grant credit when requested.
+
 Installation
 ============
 
@@ -8,27 +20,34 @@ Add bundle custom repository to your project's `composer.json` file:
 
 ```json
 {
-    ...,
-    "repositories": [
-	    {
-		    "type": "package",
-		    "package": {
-			    "name": "rapsys/packbundle",
-			    "version": "dev-master",
-			    "source": {
-				    "type": "git",
-				    "url": "https://git.rapsys.eu/packbundle",
-				    "reference": "master"
-			    },
-			    "autoload": {
-				    "psr-4": {
-					    "Rapsys\\PackBundle\\": ""
-				    }
-			    }
-		    }
-	    }
-    ],
-    ...
+	...,
+	"repositories": [
+		{
+			"type": "package",
+			"package": {
+				"name": "rapsys/packbundle",
+				"version": "dev-master",
+				"source": {
+					"type": "git",
+					"url": "https://git.rapsys.eu/packbundle",
+					"reference": "master"
+				},
+				"autoload": {
+					"psr-4": {
+						"Rapsys\\PackBundle\\": ""
+					}
+				},
+				"require": {
+					"symfony/asset": "^4.0|^5.0",
+					"symfony/flex": "^1.0",
+					"symfony/framework-bundle": "^4.0|^5.0",
+					"symfony/process": "^4.0|^5.0",
+					"symfony/twig-bundle": "^4.0|^5.0"
+				}
+			}
+		}
+	],
+	...
 }
 ```
 
@@ -66,48 +85,111 @@ in the `app/AppKernel.php` file of your project:
 // ...
 class AppKernel extends Kernel
 {
-    public function registerBundles()
-    {
-        $bundles = array(
-            // ...
-            new Rapsys\PackBundle\RapsysPackBundle(),
-        );
+	public function registerBundles()
+	{
+		$bundles = array(
+			// ...
+			new Rapsys\PackBundle\RapsysPackBundle(),
+		);
 
-        // ...
-    }
+		// ...
+	}
 
-    // ...
+	// ...
 }
 ```
 
 ### Step 3: Configure the Bundle
 
-Verify that you have the configuration file `config/packages/rapsys_pack.yaml`
-with the following content:
+Setup configuration file `config/packages/rapsys_pack.yaml` with the following
+content available in `Resources/config/packages/rapsys_pack.yaml`:
 
 ```yaml
 #Services configuration
 services:
+    #Replace assets.packages definition
+    assets.packages:
+        class: 'Symfony\Component\Asset\Packages'
+        arguments: [ '@rapsys_pack.path_package' ]
+    #Replace assets.context definition
+    assets.context:
+        class: 'Rapsys\PackBundle\Context\RequestStackContext'
+        arguments: [ '@request_stack', '%asset.request_context.base_path%', '%asset.request_context.secure%' ]
     #Register assets pack package
-    assets.pack_package:
-        class: Rapsys\PackBundle\Asset\PathPackage
+    rapsys_pack.path_package:
+        class: 'Rapsys\PackBundle\Package\PathPackage'
         arguments: [ '/', '@assets.empty_version_strategy', '@assets.context' ]
+        public: true
     #Register twig pack extension
-    rapsys_pack.twig.pack_extension:
-        class: Rapsys\PackBundle\Twig\PackExtension
-        arguments: [ '@file_locator', '@service_container', '@assets.pack_package' ]
-        tags: [ twig.extension ]
+    rapsys_pack.pack_extension:
+        class: 'Rapsys\PackBundle\Extension\PackExtension'
+        arguments: [ '@service_container', '@rapsys_pack.intl_util', '@file_locator', '@rapsys_pack.path_package', '@rapsys_pack.slugger_util' ]
+        tags: [ 'twig.extension' ]
+    #Register intl util service
+    rapsys_pack.intl_util:
+        class: 'Rapsys\PackBundle\Util\IntlUtil'
+        public: true
+    #Register facebook event subscriber
+    Rapsys\PackBundle\Subscriber\FacebookSubscriber:
+        arguments: [ '@router', '%rapsys_air.locales%' ]
+        tags: [ 'kernel.event_subscriber' ]
+    #Register intl util class alias
+    Rapsys\PackBundle\Util\IntlUtil:
+        alias: 'rapsys_pack.intl_util'
+    #Register facebook util service
+    rapsys_pack.facebook_util:
+        class: 'Rapsys\PackBundle\Util\FacebookUtil'
+        arguments: [ '@router', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+        public: true
+    #Register facebook util class alias
+    Rapsys\PackBundle\Util\FacebookUtil:
+        alias: 'rapsys_pack.facebook_util'
+    #Register image util service
+    rapsys_pack.image_util:
+        class: 'Rapsys\PackBundle\Util\ImageUtil'
+        arguments: [ '@router', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+        public: true
+    #Register image util class alias
+    Rapsys\PackBundle\Util\ImageUtil:
+        alias: 'rapsys_pack.image_util'
+    #Register map util service
+    rapsys_pack.map_util:
+        class: 'Rapsys\PackBundle\Util\MapUtil'
+        arguments: [ '@router', '@rapsys_pack.slugger_util' ]
+        public: true
+    #Register map util class alias
+    Rapsys\PackBundle\Util\MapUtil:
+        alias: 'rapsys_pack.map_util'
+    #Register slugger util service
+    rapsys_pack.slugger_util:
+        class: 'Rapsys\PackBundle\Util\SluggerUtil'
+        arguments: [ '%kernel.secret%' ]
+        public: true
+    #Register slugger util class alias
+    Rapsys\PackBundle\Util\SluggerUtil:
+        alias: 'rapsys_pack.slugger_util'
+    #Register image controller
+    Rapsys\PackBundle\Controller\ImageController:
+        arguments: [ '@service_container', '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+        tags: [ 'controller.service_arguments' ]
+    #Register map controller
+    Rapsys\PackBundle\Controller\MapController:
+        arguments: [ '@service_container', '@rapsys_pack.map_util', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+        tags: [ 'controller.service_arguments' ]
+    Rapsys\PackBundle\Form\CaptchaType:
+        arguments: [ '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '@translator' ]
+        tags: [ 'form.type' ]
 ```
 
-Open a command console, enter your project directory and execute the
-following command to see default bundle configuration:
+Open a command console, enter your project directory and execute the following
+command to see default bundle configuration:
 
 ```console
 $ php bin/console config:dump-reference RapsysPackBundle
 ```
 
-Open a command console, enter your project directory and execute the
-following command to see current bundle configuration:
+Open a command console, enter your project directory and execute the following
+command to see current bundle configuration:
 
 ```console
 $ php bin/console debug:config RapsysPackBundle
@@ -115,7 +197,8 @@ $ php bin/console debug:config RapsysPackBundle
 
 ### Step 4: Use the twig extension in your Template
 
-You can use a template like this to generate your first `rapsys_pack` enabled template:
+You can use a template like this to generate your first `rapsys_pack` enabled
+template:
 
 ```twig
 <!DOCTYPE html>
@@ -169,15 +252,14 @@ You can create you own mypackfilter class which call a mypack binary:
 ```php
 <?php
 
-namespace Rapsys\PackBundle\Twig\Filter;
+namespace Rapsys\PackBundle\Filter;
 
-use Rapsys\PackBundle\Twig\Filter\FilterInterface;
 use Twig\Error\Error;
 
 //This class will be defined in the parameter rapsys_pack.filters.(css|img|js).[x].class string
 class MyPackFilter implements FilterInterface {
-	//The constructor arguments ... will be replaced defined in the parameter rapsys_pack.filters.(css|img|js).[x].args array
-	public function __construct($fileName, $line, $bin = 'mypack', ...) {
+	//The constructor arguments ... will be replaced with values defined in the parameter rapsys_pack.filters.(css|img|js).[x].args array
+	public function __construct(string $fileName, int $line, string $bin = 'mypack', ...) {
 		//Set fileName
 		$this->fileName = $fileName;
 
@@ -200,7 +282,7 @@ class MyPackFilter implements FilterInterface {
 	}
 
 	//Pass merge of all inputs in content
-	public function process($content) {
+	public function process(string $content): string {
 		//Create descriptors
 		$descriptorSpec = array(
 			0 => array('pipe', 'r'),
@@ -211,7 +293,7 @@ class MyPackFilter implements FilterInterface {
 		//Open process
 		if (is_resource($proc = proc_open($this->bin, $descriptorSpec, $pipes))) {
 			//Set stderr as non blocking
-			stream_set_blocking($pipes[2], 0);
+			stream_set_blocking($pipes[2], false);
 
 			//Send content to stdin
 			fwrite($pipes[0], $content);
@@ -247,4 +329,4 @@ class MyPackFilter implements FilterInterface {
 }
 ```
 
-The class is required to get it's arguments through constructor and have a process method.
+The class must implements FilterInterface and get it's arguments through constructor.