Completed
Push — master ( 8b8334...2005c2 )
by Aimeos
07:11
created
client/html/src/Client/Html/Factory.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -19,48 +19,48 @@
 block discarded – undo
19 19
  */
20 20
 class Factory
21 21
 {
22
-	/**
23
-	 * Creates a new client object.
24
-	 *
25
-	 * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
26
-	 * @param array List of file system paths where the templates are stored
27
-	 * @param string $type Type of the client, e.g 'account/favorite' for \Aimeos\Client\Html\Account\Favorite\Standard
28
-	 * @param string|null $name Client name (default: "Standard")
29
-	 * @return \Aimeos\Client\Html\Iface HTML client implementing \Aimeos\Client\Html\Iface
30
-	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
31
-	 */
32
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $type, $name = null )
33
-	{
34
-		if( empty( $type ) ) {
35
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Client HTML type is empty' ) );
36
-		}
22
+    /**
23
+     * Creates a new client object.
24
+     *
25
+     * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
26
+     * @param array List of file system paths where the templates are stored
27
+     * @param string $type Type of the client, e.g 'account/favorite' for \Aimeos\Client\Html\Account\Favorite\Standard
28
+     * @param string|null $name Client name (default: "Standard")
29
+     * @return \Aimeos\Client\Html\Iface HTML client implementing \Aimeos\Client\Html\Iface
30
+     * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
31
+     */
32
+    public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $type, $name = null )
33
+    {
34
+        if( empty( $type ) ) {
35
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Client HTML type is empty' ) );
36
+        }
37 37
 
38
-		$parts = explode( '/', $type );
38
+        $parts = explode( '/', $type );
39 39
 
40
-		if( count( $parts ) !== 2 ) {
41
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Client type "%1$s" must consist of two parts separated by "/"', $type ) );
42
-		}
40
+        if( count( $parts ) !== 2 ) {
41
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Client type "%1$s" must consist of two parts separated by "/"', $type ) );
42
+        }
43 43
 
44
-		foreach( $parts as $part )
45
-		{
46
-			if( ctype_alnum( $part ) === false ) {
47
-				throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in client name "%1$s" in "%2$s"', $part, $type ) );
48
-			}
49
-		}
44
+        foreach( $parts as $part )
45
+        {
46
+            if( ctype_alnum( $part ) === false ) {
47
+                throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in client name "%1$s" in "%2$s"', $part, $type ) );
48
+            }
49
+        }
50 50
 
51
-		$factory = '\\Aimeos\\Client\\Html\\' . ucwords( $parts[0] ) . '\\' . ucwords( $parts[1] ) . '\\Factory';
51
+        $factory = '\\Aimeos\\Client\\Html\\' . ucwords( $parts[0] ) . '\\' . ucwords( $parts[1] ) . '\\Factory';
52 52
 
53
-		if( class_exists( $factory ) === false ) {
54
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Class "%1$s" not available', $factory ) );
55
-		}
53
+        if( class_exists( $factory ) === false ) {
54
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Class "%1$s" not available', $factory ) );
55
+        }
56 56
 
57
-		$client = @call_user_func_array( array( $factory, 'createClient' ), array( $context, $templatePaths, $name ) );
57
+        $client = @call_user_func_array( array( $factory, 'createClient' ), array( $context, $templatePaths, $name ) );
58 58
 
59
-		if( $client === false ) {
60
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid factory "%1$s"', $factory ) );
61
-		}
59
+        if( $client === false ) {
60
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid factory "%1$s"', $factory ) );
61
+        }
62 62
 
63
-		return $client;
64
-	}
63
+        return $client;
64
+    }
65 65
 
66 66
 }
67 67
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Base.php 1 patch
Indentation   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -19,66 +19,66 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 abstract class Base
22
-	extends \Aimeos\Client\Html\Common\Client\Factory\Base
22
+    extends \Aimeos\Client\Html\Common\Client\Factory\Base
23 23
 {
24
-	/**
25
-	 * Removes all cached basket parts from the cache.
26
-	 */
27
-	protected function clearCached()
28
-	{
29
-		$session = $this->getContext()->getSession();
24
+    /**
25
+     * Removes all cached basket parts from the cache.
26
+     */
27
+    protected function clearCached()
28
+    {
29
+        $session = $this->getContext()->getSession();
30 30
 
31
-		foreach( $session->get( 'aimeos/basket/cache', array() ) as $key => $value ) {
32
-			$session->set( $key, null );
33
-		}
34
-	}
31
+        foreach( $session->get( 'aimeos/basket/cache', array() ) as $key => $value ) {
32
+            $session->set( $key, null );
33
+        }
34
+    }
35 35
 
36 36
 
37
-	/**
38
-	 * Returns the basket cache entry from the cache if available.
39
-	 *
40
-	 * @param string $key Path to the requested cache entry
41
-	 * @param mixed $default Value returned if requested key isn't found
42
-	 * @return mixed Value associated to the requested key. If no value for the
43
-	 *	key is found in the cache, the given default value is returned
44
-	 */
45
-	protected function getBasketCached( $key, $default = null )
46
-	{
47
-		return $this->getContext()->getSession()->get( $key, $default );
48
-	}
37
+    /**
38
+     * Returns the basket cache entry from the cache if available.
39
+     *
40
+     * @param string $key Path to the requested cache entry
41
+     * @param mixed $default Value returned if requested key isn't found
42
+     * @return mixed Value associated to the requested key. If no value for the
43
+     *	key is found in the cache, the given default value is returned
44
+     */
45
+    protected function getBasketCached( $key, $default = null )
46
+    {
47
+        return $this->getContext()->getSession()->get( $key, $default );
48
+    }
49 49
 
50 50
 
51
-	/**
52
-	 * Adds or overwrite a cache entry for the given key and value.
53
-	 *
54
-	 * @param string $key Path the cache entry should be stored in
55
-	 * @param mixed $value Value stored in the cache for the path
56
-	 */
57
-	protected function setBasketCached( $key, $value )
58
-	{
59
-		$context = $this->getContext();
51
+    /**
52
+     * Adds or overwrite a cache entry for the given key and value.
53
+     *
54
+     * @param string $key Path the cache entry should be stored in
55
+     * @param mixed $value Value stored in the cache for the path
56
+     */
57
+    protected function setBasketCached( $key, $value )
58
+    {
59
+        $context = $this->getContext();
60 60
 
61
-		/** client/html/basket/cache/enable
62
-		 * Enables or disables caching of the basket content
63
-		 *
64
-		 * For performance reasons, the content of the small baskets is cached
65
-		 * in the session of the customer. The cache is updated each time the
66
-		 * basket content changes either by adding, deleting or editing products.
67
-		 *
68
-		 * To ease development, the caching can be disabled but you shouldn't
69
-		 * disable it in your production environment!
70
-		 *
71
-		 * @param boolean True to enable, false to disable basket content caching
72
-		 * @category Developer
73
-		 * @since 2014.11
74
-		 */
75
-		if( $context->getConfig()->get( 'client/html/basket/cache/enable', true ) != false )
76
-		{
77
-			$session = $context->getSession();
61
+        /** client/html/basket/cache/enable
62
+         * Enables or disables caching of the basket content
63
+         *
64
+         * For performance reasons, the content of the small baskets is cached
65
+         * in the session of the customer. The cache is updated each time the
66
+         * basket content changes either by adding, deleting or editing products.
67
+         *
68
+         * To ease development, the caching can be disabled but you shouldn't
69
+         * disable it in your production environment!
70
+         *
71
+         * @param boolean True to enable, false to disable basket content caching
72
+         * @category Developer
73
+         * @since 2014.11
74
+         */
75
+        if( $context->getConfig()->get( 'client/html/basket/cache/enable', true ) != false )
76
+        {
77
+            $session = $context->getSession();
78 78
 
79
-			$cached = $session->get( 'aimeos/basket/cache', array() ) + array( $key => true );
80
-			$session->set( 'aimeos/basket/cache', $cached );
81
-			$session->set( $key, $value );
82
-		}
83
-	}
79
+            $cached = $session->get( 'aimeos/basket/cache', array() ) + array( $key => true );
80
+            $session->set( 'aimeos/basket/cache', $cached );
81
+            $session->set( $key, $value );
82
+        }
83
+    }
84 84
 }
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Standard/Coupon/Standard.php 1 patch
Indentation   +287 added lines, -287 removed lines patch added patch discarded remove patch
@@ -19,292 +19,292 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Basket\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Basket\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/basket/standard/coupon/standard/subparts
26
-	 * List of HTML sub-clients rendered within the basket standard coupon section
27
-	 *
28
-	 * The output of the frontend is composed of the code generated by the HTML
29
-	 * clients. Each HTML client can consist of serveral (or none) sub-clients
30
-	 * that are responsible for rendering certain sub-parts of the output. The
31
-	 * sub-clients can contain HTML clients themselves and therefore a
32
-	 * hierarchical tree of HTML clients is composed. Each HTML client creates
33
-	 * the output that is placed inside the container of its parent.
34
-	 *
35
-	 * At first, always the HTML code generated by the parent is printed, then
36
-	 * the HTML code of its sub-clients. The order of the HTML sub-clients
37
-	 * determines the order of the output of these sub-clients inside the parent
38
-	 * container. If the configured list of clients is
39
-	 *
40
-	 *  array( "subclient1", "subclient2" )
41
-	 *
42
-	 * you can easily change the order of the output by reordering the subparts:
43
-	 *
44
-	 *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
45
-	 *
46
-	 * You can also remove one or more parts if they shouldn't be rendered:
47
-	 *
48
-	 *  client/html/<clients>/subparts = array( "subclient1" )
49
-	 *
50
-	 * As the clients only generates structural HTML, the layout defined via CSS
51
-	 * should support adding, removing or reordering content by a fluid like
52
-	 * design.
53
-	 *
54
-	 * @param array List of sub-client names
55
-	 * @since 2014.03
56
-	 * @category Developer
57
-	 */
58
-	private $subPartPath = 'client/html/basket/standard/coupon/standard/subparts';
59
-	private $subPartNames = array();
60
-
61
-
62
-	/**
63
-	 * Returns the HTML code for insertion into the body.
64
-	 *
65
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
66
-	 * @param array &$tags Result array for the list of tags that are associated to the output
67
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
68
-	 * @return string HTML code
69
-	 */
70
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
-	{
72
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
73
-
74
-		$html = '';
75
-		foreach( $this->getSubClients() as $subclient ) {
76
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
77
-		}
78
-		$view->couponBody = $html;
79
-
80
-		/** client/html/basket/standard/coupon/standard/template-body
81
-		 * Relative path to the HTML body template of the basket standard coupon client.
82
-		 *
83
-		 * The template file contains the HTML code and processing instructions
84
-		 * to generate the result shown in the body of the frontend. The
85
-		 * configuration string is the path to the template file relative
86
-		 * to the templates directory (usually in client/html/templates).
87
-		 *
88
-		 * You can overwrite the template file configuration in extensions and
89
-		 * provide alternative templates. These alternative templates should be
90
-		 * named like the default one but with the string "standard" replaced by
91
-		 * an unique name. You may use the name of your project for this. If
92
-		 * you've implemented an alternative client class as well, "standard"
93
-		 * should be replaced by the name of the new class.
94
-		 *
95
-		 * @param string Relative path to the template creating code for the HTML page body
96
-		 * @since 2014.03
97
-		 * @category Developer
98
-		 * @see client/html/basket/standard/coupon/standard/template-header
99
-		 */
100
-		$tplconf = 'client/html/basket/standard/coupon/standard/template-body';
101
-		$default = 'basket/standard/coupon-body-default.php';
102
-
103
-		return $view->render( $view->config( $tplconf, $default ) );
104
-	}
105
-
106
-
107
-	/**
108
-	 * Returns the HTML string for insertion into the header.
109
-	 *
110
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111
-	 * @param array &$tags Result array for the list of tags that are associated to the output
112
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
113
-	 * @return string|null String including HTML tags for the header on error
114
-	 */
115
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
-	{
117
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
118
-
119
-		$html = '';
120
-		foreach( $this->getSubClients() as $subclient ) {
121
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
122
-		}
123
-		$view->couponHeader = $html;
124
-
125
-		/** client/html/basket/standard/coupon/standard/template-header
126
-		 * Relative path to the HTML header template of the basket standard coupon client.
127
-		 *
128
-		 * The template file contains the HTML code and processing instructions
129
-		 * to generate the HTML code that is inserted into the HTML page header
130
-		 * of the rendered page in the frontend. The configuration string is the
131
-		 * path to the template file relative to the templates directory (usually
132
-		 * in client/html/templates).
133
-		 *
134
-		 * You can overwrite the template file configuration in extensions and
135
-		 * provide alternative templates. These alternative templates should be
136
-		 * named like the default one but with the string "standard" replaced by
137
-		 * an unique name. You may use the name of your project for this. If
138
-		 * you've implemented an alternative client class as well, "standard"
139
-		 * should be replaced by the name of the new class.
140
-		 *
141
-		 * @param string Relative path to the template creating code for the HTML page head
142
-		 * @since 2014.03
143
-		 * @category Developer
144
-		 * @see client/html/basket/standard/coupon/standard/template-body
145
-		 */
146
-		$tplconf = 'client/html/basket/standard/coupon/standard/template-header';
147
-		$default = 'basket/standard/coupon-header-default.php';
148
-
149
-		return $view->render( $view->config( $tplconf, $default ) );
150
-	}
151
-
152
-
153
-	/**
154
-	 * Returns the sub-client given by its name.
155
-	 *
156
-	 * @param string $type Name of the client type
157
-	 * @param string|null $name Name of the sub-client (Default if null)
158
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
159
-	 */
160
-	public function getSubClient( $type, $name = null )
161
-	{
162
-		/** client/html/basket/standard/coupon/decorators/excludes
163
-		 * Excludes decorators added by the "common" option from the basket standard coupon html client
164
-		 *
165
-		 * Decorators extend the functionality of a class by adding new aspects
166
-		 * (e.g. log what is currently done), executing the methods of the underlying
167
-		 * class only in certain conditions (e.g. only for logged in users) or
168
-		 * modify what is returned to the caller.
169
-		 *
170
-		 * This option allows you to remove a decorator added via
171
-		 * "client/html/common/decorators/default" before they are wrapped
172
-		 * around the html client.
173
-		 *
174
-		 *  client/html/basket/standard/coupon/decorators/excludes = array( 'decorator1' )
175
-		 *
176
-		 * This would remove the decorator named "decorator1" from the list of
177
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
178
-		 * "client/html/common/decorators/default" to the html client.
179
-		 *
180
-		 * @param array List of decorator names
181
-		 * @since 2015.08
182
-		 * @category Developer
183
-		 * @see client/html/common/decorators/default
184
-		 * @see client/html/basket/standard/coupon/decorators/global
185
-		 * @see client/html/basket/standard/coupon/decorators/local
186
-		 */
187
-
188
-		/** client/html/basket/standard/coupon/decorators/global
189
-		 * Adds a list of globally available decorators only to the basket standard coupon html client
190
-		 *
191
-		 * Decorators extend the functionality of a class by adding new aspects
192
-		 * (e.g. log what is currently done), executing the methods of the underlying
193
-		 * class only in certain conditions (e.g. only for logged in users) or
194
-		 * modify what is returned to the caller.
195
-		 *
196
-		 * This option allows you to wrap global decorators
197
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
198
-		 *
199
-		 *  client/html/basket/standard/coupon/decorators/global = array( 'decorator1' )
200
-		 *
201
-		 * This would add the decorator named "decorator1" defined by
202
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
203
-		 *
204
-		 * @param array List of decorator names
205
-		 * @since 2015.08
206
-		 * @category Developer
207
-		 * @see client/html/common/decorators/default
208
-		 * @see client/html/basket/standard/coupon/decorators/excludes
209
-		 * @see client/html/basket/standard/coupon/decorators/local
210
-		 */
211
-
212
-		/** client/html/basket/standard/coupon/decorators/local
213
-		 * Adds a list of local decorators only to the basket standard coupon html client
214
-		 *
215
-		 * Decorators extend the functionality of a class by adding new aspects
216
-		 * (e.g. log what is currently done), executing the methods of the underlying
217
-		 * class only in certain conditions (e.g. only for logged in users) or
218
-		 * modify what is returned to the caller.
219
-		 *
220
-		 * This option allows you to wrap local decorators
221
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
222
-		 *
223
-		 *  client/html/basket/standard/coupon/decorators/local = array( 'decorator2' )
224
-		 *
225
-		 * This would add the decorator named "decorator2" defined by
226
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
227
-		 *
228
-		 * @param array List of decorator names
229
-		 * @since 2015.08
230
-		 * @category Developer
231
-		 * @see client/html/common/decorators/default
232
-		 * @see client/html/basket/standard/coupon/decorators/excludes
233
-		 * @see client/html/basket/standard/coupon/decorators/global
234
-		 */
235
-		return $this->createSubClient( 'basket/standard/coupon/' . $type, $name );
236
-	}
237
-
238
-
239
-	/**
240
-	 * Processes the input, e.g. store given values.
241
-	 * A view must be available and this method doesn't generate any output
242
-	 * besides setting view variables.
243
-	 */
244
-	public function process()
245
-	{
246
-		$view = $this->getView();
247
-		$context = $this->getContext();
248
-
249
-		switch( $view->param( 'b_action' ) )
250
-		{
251
-			case 'coupon-delete':
252
-
253
-				if( ( $coupon = $view->param( 'b_coupon' ) ) != '' )
254
-				{
255
-					$this->clearCached();
256
-					$cntl = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' );
257
-					$cntl->deleteCoupon( $coupon );
258
-				}
259
-
260
-				break;
261
-
262
-			default:
263
-
264
-				if( ( $coupon = $view->param( 'b_coupon' ) ) != '' )
265
-				{
266
-					$this->clearCached();
267
-					$cntl = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' );
268
-
269
-					/** client/html/basket/standard/coupon/allowed
270
-					 * Number of coupon codes a customer is allowed to enter
271
-					 *
272
-					 * This configuration option enables shop owners to limit the number of coupon
273
-					 * codes that can be added by a customer to his current basket. By default, only
274
-					 * one coupon code is allowed per order.
275
-					 *
276
-					 * Coupon codes are valid until a payed order is placed by the customer. The
277
-					 * "count" of the codes is decreased afterwards. If codes are not personalized
278
-					 * the codes can be reused in the next order until their "count" reaches zero.
279
-					 *
280
-					 * @param integer Positive number of coupon codes including zero
281
-					 * @since 2014.05
282
-					 * @category User
283
-					 * @category Developer
284
-					 */
285
-					$allowed = $context->getConfig()->get( 'client/html/basket/standard/coupon/allowed', 1 );
286
-
287
-					if( $allowed <= count( $cntl->get()->getCoupons() ) ) {
288
-						throw new \Aimeos\Client\Html\Exception( sprintf( 'Number of coupon codes exceeds the limit' ) );
289
-					}
290
-
291
-					$cntl->addCoupon( $coupon );
292
-				}
293
-
294
-				break;
295
-		}
296
-
297
-		parent::process();
298
-	}
299
-
300
-
301
-	/**
302
-	 * Returns the list of sub-client names configured for the client.
303
-	 *
304
-	 * @return array List of HTML client names
305
-	 */
306
-	protected function getSubClientNames()
307
-	{
308
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
309
-	}
25
+    /** client/html/basket/standard/coupon/standard/subparts
26
+     * List of HTML sub-clients rendered within the basket standard coupon section
27
+     *
28
+     * The output of the frontend is composed of the code generated by the HTML
29
+     * clients. Each HTML client can consist of serveral (or none) sub-clients
30
+     * that are responsible for rendering certain sub-parts of the output. The
31
+     * sub-clients can contain HTML clients themselves and therefore a
32
+     * hierarchical tree of HTML clients is composed. Each HTML client creates
33
+     * the output that is placed inside the container of its parent.
34
+     *
35
+     * At first, always the HTML code generated by the parent is printed, then
36
+     * the HTML code of its sub-clients. The order of the HTML sub-clients
37
+     * determines the order of the output of these sub-clients inside the parent
38
+     * container. If the configured list of clients is
39
+     *
40
+     *  array( "subclient1", "subclient2" )
41
+     *
42
+     * you can easily change the order of the output by reordering the subparts:
43
+     *
44
+     *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
45
+     *
46
+     * You can also remove one or more parts if they shouldn't be rendered:
47
+     *
48
+     *  client/html/<clients>/subparts = array( "subclient1" )
49
+     *
50
+     * As the clients only generates structural HTML, the layout defined via CSS
51
+     * should support adding, removing or reordering content by a fluid like
52
+     * design.
53
+     *
54
+     * @param array List of sub-client names
55
+     * @since 2014.03
56
+     * @category Developer
57
+     */
58
+    private $subPartPath = 'client/html/basket/standard/coupon/standard/subparts';
59
+    private $subPartNames = array();
60
+
61
+
62
+    /**
63
+     * Returns the HTML code for insertion into the body.
64
+     *
65
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
66
+     * @param array &$tags Result array for the list of tags that are associated to the output
67
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
68
+     * @return string HTML code
69
+     */
70
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
+    {
72
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
73
+
74
+        $html = '';
75
+        foreach( $this->getSubClients() as $subclient ) {
76
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
77
+        }
78
+        $view->couponBody = $html;
79
+
80
+        /** client/html/basket/standard/coupon/standard/template-body
81
+         * Relative path to the HTML body template of the basket standard coupon client.
82
+         *
83
+         * The template file contains the HTML code and processing instructions
84
+         * to generate the result shown in the body of the frontend. The
85
+         * configuration string is the path to the template file relative
86
+         * to the templates directory (usually in client/html/templates).
87
+         *
88
+         * You can overwrite the template file configuration in extensions and
89
+         * provide alternative templates. These alternative templates should be
90
+         * named like the default one but with the string "standard" replaced by
91
+         * an unique name. You may use the name of your project for this. If
92
+         * you've implemented an alternative client class as well, "standard"
93
+         * should be replaced by the name of the new class.
94
+         *
95
+         * @param string Relative path to the template creating code for the HTML page body
96
+         * @since 2014.03
97
+         * @category Developer
98
+         * @see client/html/basket/standard/coupon/standard/template-header
99
+         */
100
+        $tplconf = 'client/html/basket/standard/coupon/standard/template-body';
101
+        $default = 'basket/standard/coupon-body-default.php';
102
+
103
+        return $view->render( $view->config( $tplconf, $default ) );
104
+    }
105
+
106
+
107
+    /**
108
+     * Returns the HTML string for insertion into the header.
109
+     *
110
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111
+     * @param array &$tags Result array for the list of tags that are associated to the output
112
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
113
+     * @return string|null String including HTML tags for the header on error
114
+     */
115
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
+    {
117
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
118
+
119
+        $html = '';
120
+        foreach( $this->getSubClients() as $subclient ) {
121
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
122
+        }
123
+        $view->couponHeader = $html;
124
+
125
+        /** client/html/basket/standard/coupon/standard/template-header
126
+         * Relative path to the HTML header template of the basket standard coupon client.
127
+         *
128
+         * The template file contains the HTML code and processing instructions
129
+         * to generate the HTML code that is inserted into the HTML page header
130
+         * of the rendered page in the frontend. The configuration string is the
131
+         * path to the template file relative to the templates directory (usually
132
+         * in client/html/templates).
133
+         *
134
+         * You can overwrite the template file configuration in extensions and
135
+         * provide alternative templates. These alternative templates should be
136
+         * named like the default one but with the string "standard" replaced by
137
+         * an unique name. You may use the name of your project for this. If
138
+         * you've implemented an alternative client class as well, "standard"
139
+         * should be replaced by the name of the new class.
140
+         *
141
+         * @param string Relative path to the template creating code for the HTML page head
142
+         * @since 2014.03
143
+         * @category Developer
144
+         * @see client/html/basket/standard/coupon/standard/template-body
145
+         */
146
+        $tplconf = 'client/html/basket/standard/coupon/standard/template-header';
147
+        $default = 'basket/standard/coupon-header-default.php';
148
+
149
+        return $view->render( $view->config( $tplconf, $default ) );
150
+    }
151
+
152
+
153
+    /**
154
+     * Returns the sub-client given by its name.
155
+     *
156
+     * @param string $type Name of the client type
157
+     * @param string|null $name Name of the sub-client (Default if null)
158
+     * @return \Aimeos\Client\Html\Iface Sub-client object
159
+     */
160
+    public function getSubClient( $type, $name = null )
161
+    {
162
+        /** client/html/basket/standard/coupon/decorators/excludes
163
+         * Excludes decorators added by the "common" option from the basket standard coupon html client
164
+         *
165
+         * Decorators extend the functionality of a class by adding new aspects
166
+         * (e.g. log what is currently done), executing the methods of the underlying
167
+         * class only in certain conditions (e.g. only for logged in users) or
168
+         * modify what is returned to the caller.
169
+         *
170
+         * This option allows you to remove a decorator added via
171
+         * "client/html/common/decorators/default" before they are wrapped
172
+         * around the html client.
173
+         *
174
+         *  client/html/basket/standard/coupon/decorators/excludes = array( 'decorator1' )
175
+         *
176
+         * This would remove the decorator named "decorator1" from the list of
177
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
178
+         * "client/html/common/decorators/default" to the html client.
179
+         *
180
+         * @param array List of decorator names
181
+         * @since 2015.08
182
+         * @category Developer
183
+         * @see client/html/common/decorators/default
184
+         * @see client/html/basket/standard/coupon/decorators/global
185
+         * @see client/html/basket/standard/coupon/decorators/local
186
+         */
187
+
188
+        /** client/html/basket/standard/coupon/decorators/global
189
+         * Adds a list of globally available decorators only to the basket standard coupon html client
190
+         *
191
+         * Decorators extend the functionality of a class by adding new aspects
192
+         * (e.g. log what is currently done), executing the methods of the underlying
193
+         * class only in certain conditions (e.g. only for logged in users) or
194
+         * modify what is returned to the caller.
195
+         *
196
+         * This option allows you to wrap global decorators
197
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
198
+         *
199
+         *  client/html/basket/standard/coupon/decorators/global = array( 'decorator1' )
200
+         *
201
+         * This would add the decorator named "decorator1" defined by
202
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
203
+         *
204
+         * @param array List of decorator names
205
+         * @since 2015.08
206
+         * @category Developer
207
+         * @see client/html/common/decorators/default
208
+         * @see client/html/basket/standard/coupon/decorators/excludes
209
+         * @see client/html/basket/standard/coupon/decorators/local
210
+         */
211
+
212
+        /** client/html/basket/standard/coupon/decorators/local
213
+         * Adds a list of local decorators only to the basket standard coupon html client
214
+         *
215
+         * Decorators extend the functionality of a class by adding new aspects
216
+         * (e.g. log what is currently done), executing the methods of the underlying
217
+         * class only in certain conditions (e.g. only for logged in users) or
218
+         * modify what is returned to the caller.
219
+         *
220
+         * This option allows you to wrap local decorators
221
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
222
+         *
223
+         *  client/html/basket/standard/coupon/decorators/local = array( 'decorator2' )
224
+         *
225
+         * This would add the decorator named "decorator2" defined by
226
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
227
+         *
228
+         * @param array List of decorator names
229
+         * @since 2015.08
230
+         * @category Developer
231
+         * @see client/html/common/decorators/default
232
+         * @see client/html/basket/standard/coupon/decorators/excludes
233
+         * @see client/html/basket/standard/coupon/decorators/global
234
+         */
235
+        return $this->createSubClient( 'basket/standard/coupon/' . $type, $name );
236
+    }
237
+
238
+
239
+    /**
240
+     * Processes the input, e.g. store given values.
241
+     * A view must be available and this method doesn't generate any output
242
+     * besides setting view variables.
243
+     */
244
+    public function process()
245
+    {
246
+        $view = $this->getView();
247
+        $context = $this->getContext();
248
+
249
+        switch( $view->param( 'b_action' ) )
250
+        {
251
+            case 'coupon-delete':
252
+
253
+                if( ( $coupon = $view->param( 'b_coupon' ) ) != '' )
254
+                {
255
+                    $this->clearCached();
256
+                    $cntl = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' );
257
+                    $cntl->deleteCoupon( $coupon );
258
+                }
259
+
260
+                break;
261
+
262
+            default:
263
+
264
+                if( ( $coupon = $view->param( 'b_coupon' ) ) != '' )
265
+                {
266
+                    $this->clearCached();
267
+                    $cntl = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' );
268
+
269
+                    /** client/html/basket/standard/coupon/allowed
270
+                     * Number of coupon codes a customer is allowed to enter
271
+                     *
272
+                     * This configuration option enables shop owners to limit the number of coupon
273
+                     * codes that can be added by a customer to his current basket. By default, only
274
+                     * one coupon code is allowed per order.
275
+                     *
276
+                     * Coupon codes are valid until a payed order is placed by the customer. The
277
+                     * "count" of the codes is decreased afterwards. If codes are not personalized
278
+                     * the codes can be reused in the next order until their "count" reaches zero.
279
+                     *
280
+                     * @param integer Positive number of coupon codes including zero
281
+                     * @since 2014.05
282
+                     * @category User
283
+                     * @category Developer
284
+                     */
285
+                    $allowed = $context->getConfig()->get( 'client/html/basket/standard/coupon/allowed', 1 );
286
+
287
+                    if( $allowed <= count( $cntl->get()->getCoupons() ) ) {
288
+                        throw new \Aimeos\Client\Html\Exception( sprintf( 'Number of coupon codes exceeds the limit' ) );
289
+                    }
290
+
291
+                    $cntl->addCoupon( $coupon );
292
+                }
293
+
294
+                break;
295
+        }
296
+
297
+        parent::process();
298
+    }
299
+
300
+
301
+    /**
302
+     * Returns the list of sub-client names configured for the client.
303
+     *
304
+     * @return array List of HTML client names
305
+     */
306
+    protected function getSubClientNames()
307
+    {
308
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
309
+    }
310 310
 }
311 311
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Standard/Detail/Standard.php 1 patch
Indentation   +240 added lines, -240 removed lines patch added patch discarded remove patch
@@ -19,268 +19,268 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Common\Summary\Detail\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Summary\Detail\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/basket/standard/detail/standard/subparts
26
-	 * List of HTML sub-clients rendered within the basket standard detail section
27
-	 *
28
-	 * The output of the frontend is composed of the code generated by the HTML
29
-	 * clients. Each HTML client can consist of serveral (or none) sub-clients
30
-	 * that are responsible for rendering certain sub-parts of the output. The
31
-	 * sub-clients can contain HTML clients themselves and therefore a
32
-	 * hierarchical tree of HTML clients is composed. Each HTML client creates
33
-	 * the output that is placed inside the container of its parent.
34
-	 *
35
-	 * At first, always the HTML code generated by the parent is printed, then
36
-	 * the HTML code of its sub-clients. The order of the HTML sub-clients
37
-	 * determines the order of the output of these sub-clients inside the parent
38
-	 * container. If the configured list of clients is
39
-	 *
40
-	 *  array( "subclient1", "subclient2" )
41
-	 *
42
-	 * you can easily change the order of the output by reordering the subparts:
43
-	 *
44
-	 *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
45
-	 *
46
-	 * You can also remove one or more parts if they shouldn't be rendered:
47
-	 *
48
-	 *  client/html/<clients>/subparts = array( "subclient1" )
49
-	 *
50
-	 * As the clients only generates structural HTML, the layout defined via CSS
51
-	 * should support adding, removing or reordering content by a fluid like
52
-	 * design.
53
-	 *
54
-	 * @param array List of sub-client names
55
-	 * @since 2015.11
56
-	 * @category Developer
57
-	 */
58
-	private $subPartPath = 'client/html/basket/standard/detail/standard/subparts';
59
-	private $subPartNames = array();
60
-	private $cache;
25
+    /** client/html/basket/standard/detail/standard/subparts
26
+     * List of HTML sub-clients rendered within the basket standard detail section
27
+     *
28
+     * The output of the frontend is composed of the code generated by the HTML
29
+     * clients. Each HTML client can consist of serveral (or none) sub-clients
30
+     * that are responsible for rendering certain sub-parts of the output. The
31
+     * sub-clients can contain HTML clients themselves and therefore a
32
+     * hierarchical tree of HTML clients is composed. Each HTML client creates
33
+     * the output that is placed inside the container of its parent.
34
+     *
35
+     * At first, always the HTML code generated by the parent is printed, then
36
+     * the HTML code of its sub-clients. The order of the HTML sub-clients
37
+     * determines the order of the output of these sub-clients inside the parent
38
+     * container. If the configured list of clients is
39
+     *
40
+     *  array( "subclient1", "subclient2" )
41
+     *
42
+     * you can easily change the order of the output by reordering the subparts:
43
+     *
44
+     *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
45
+     *
46
+     * You can also remove one or more parts if they shouldn't be rendered:
47
+     *
48
+     *  client/html/<clients>/subparts = array( "subclient1" )
49
+     *
50
+     * As the clients only generates structural HTML, the layout defined via CSS
51
+     * should support adding, removing or reordering content by a fluid like
52
+     * design.
53
+     *
54
+     * @param array List of sub-client names
55
+     * @since 2015.11
56
+     * @category Developer
57
+     */
58
+    private $subPartPath = 'client/html/basket/standard/detail/standard/subparts';
59
+    private $subPartNames = array();
60
+    private $cache;
61 61
 
62 62
 
63
-	/**
64
-	 * Returns the HTML code for insertion into the body.
65
-	 *
66
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
67
-	 * @param array &$tags Result array for the list of tags that are associated to the output
68
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
69
-	 * @return string HTML code
70
-	 */
71
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
72
-	{
73
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
63
+    /**
64
+     * Returns the HTML code for insertion into the body.
65
+     *
66
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
67
+     * @param array &$tags Result array for the list of tags that are associated to the output
68
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
69
+     * @return string HTML code
70
+     */
71
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
72
+    {
73
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
74 74
 
75
-		$html = '';
76
-		foreach( $this->getSubClients() as $subclient ) {
77
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
78
-		}
79
-		$view->detailBody = $html;
75
+        $html = '';
76
+        foreach( $this->getSubClients() as $subclient ) {
77
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
78
+        }
79
+        $view->detailBody = $html;
80 80
 
81
-		/** client/html/basket/standard/detail/standard/template-body
82
-		 * Relative path to the HTML body template of the basket standard detail client.
83
-		 *
84
-		 * The template file contains the HTML code and processing instructions
85
-		 * to generate the result shown in the body of the frontend. The
86
-		 * configuration string is the path to the template file relative
87
-		 * to the templates directory (usually in client/html/templates).
88
-		 *
89
-		 * You can overwrite the template file configuration in extensions and
90
-		 * provide alternative templates. These alternative templates should be
91
-		 * named like the default one but with the string "standard" replaced by
92
-		 * an unique name. You may use the name of your project for this. If
93
-		 * you've implemented an alternative client class as well, "standard"
94
-		 * (second one) should be replaced by the name of the new class in lower
95
-		 * case.
96
-		 *
97
-		 * @param string Relative path to the template creating code for the HTML page body
98
-		 * @since 2015.11
99
-		 * @category Developer
100
-		 * @see client/html/basket/standard/detail/standard/template-header
101
-		 */
102
-		$tplconf = 'client/html/basket/standard/detail/standard/template-body';
103
-		$default = 'common/summary/detail-body-default.php';
81
+        /** client/html/basket/standard/detail/standard/template-body
82
+         * Relative path to the HTML body template of the basket standard detail client.
83
+         *
84
+         * The template file contains the HTML code and processing instructions
85
+         * to generate the result shown in the body of the frontend. The
86
+         * configuration string is the path to the template file relative
87
+         * to the templates directory (usually in client/html/templates).
88
+         *
89
+         * You can overwrite the template file configuration in extensions and
90
+         * provide alternative templates. These alternative templates should be
91
+         * named like the default one but with the string "standard" replaced by
92
+         * an unique name. You may use the name of your project for this. If
93
+         * you've implemented an alternative client class as well, "standard"
94
+         * (second one) should be replaced by the name of the new class in lower
95
+         * case.
96
+         *
97
+         * @param string Relative path to the template creating code for the HTML page body
98
+         * @since 2015.11
99
+         * @category Developer
100
+         * @see client/html/basket/standard/detail/standard/template-header
101
+         */
102
+        $tplconf = 'client/html/basket/standard/detail/standard/template-body';
103
+        $default = 'common/summary/detail-body-default.php';
104 104
 
105
-		return $view->render( $view->config( $tplconf, $default ) );
106
-	}
105
+        return $view->render( $view->config( $tplconf, $default ) );
106
+    }
107 107
 
108 108
 
109
-	/**
110
-	 * Returns the HTML string for insertion into the header.
111
-	 *
112
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
113
-	 * @param array &$tags Result array for the list of tags that are associated to the output
114
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
115
-	 * @return string|null String including HTML tags for the header on error
116
-	 */
117
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
118
-	{
119
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
109
+    /**
110
+     * Returns the HTML string for insertion into the header.
111
+     *
112
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
113
+     * @param array &$tags Result array for the list of tags that are associated to the output
114
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
115
+     * @return string|null String including HTML tags for the header on error
116
+     */
117
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
118
+    {
119
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
120 120
 
121
-		$html = '';
122
-		foreach( $this->getSubClients() as $subclient ) {
123
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
124
-		}
125
-		$view->detailHeader = $html;
121
+        $html = '';
122
+        foreach( $this->getSubClients() as $subclient ) {
123
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
124
+        }
125
+        $view->detailHeader = $html;
126 126
 
127
-		/** client/html/basket/standard/detail/standard/template-header
128
-		 * Relative path to the HTML header template of the basket standard detail client.
129
-		 *
130
-		 * The template file contains the HTML code and processing instructions
131
-		 * to generate the HTML code that is inserted into the HTML page header
132
-		 * of the rendered page in the frontend. The configuration string is the
133
-		 * path to the template file relative to the templates directory (usually
134
-		 * in client/html/templates).
135
-		 *
136
-		 * You can overwrite the template file configuration in extensions and
137
-		 * provide alternative templates. These alternative templates should be
138
-		 * named like the default one but with the string "standard" replaced by
139
-		 * an unique name. You may use the name of your project for this. If
140
-		 * you've implemented an alternative client class as well, "standard"
141
-		 * (second one) should be replaced by the name of the new class in lower
142
-		 * case.
143
-		 *
144
-		 * @param string Relative path to the template creating code for the HTML page head
145
-		 * @since 2015.11
146
-		 * @category Developer
147
-		 * @see client/html/basket/standard/detail/standard/template-body
148
-		 */
149
-		$tplconf = 'client/html/basket/standard/detail/standard/template-header';
150
-		$default = 'common/summary/detail-header-default.php';
127
+        /** client/html/basket/standard/detail/standard/template-header
128
+         * Relative path to the HTML header template of the basket standard detail client.
129
+         *
130
+         * The template file contains the HTML code and processing instructions
131
+         * to generate the HTML code that is inserted into the HTML page header
132
+         * of the rendered page in the frontend. The configuration string is the
133
+         * path to the template file relative to the templates directory (usually
134
+         * in client/html/templates).
135
+         *
136
+         * You can overwrite the template file configuration in extensions and
137
+         * provide alternative templates. These alternative templates should be
138
+         * named like the default one but with the string "standard" replaced by
139
+         * an unique name. You may use the name of your project for this. If
140
+         * you've implemented an alternative client class as well, "standard"
141
+         * (second one) should be replaced by the name of the new class in lower
142
+         * case.
143
+         *
144
+         * @param string Relative path to the template creating code for the HTML page head
145
+         * @since 2015.11
146
+         * @category Developer
147
+         * @see client/html/basket/standard/detail/standard/template-body
148
+         */
149
+        $tplconf = 'client/html/basket/standard/detail/standard/template-header';
150
+        $default = 'common/summary/detail-header-default.php';
151 151
 
152
-		return $view->render( $view->config( $tplconf, $default ) );
153
-	}
152
+        return $view->render( $view->config( $tplconf, $default ) );
153
+    }
154 154
 
155 155
 
156
-	/**
157
-	 * Returns the sub-client given by its name.
158
-	 *
159
-	 * @param string $type Name of the client type
160
-	 * @param string|null $name Name of the sub-client (Default if null)
161
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
162
-	 */
163
-	public function getSubClient( $type, $name = null )
164
-	{
165
-		/** client/html/basket/standard/detail/decorators/excludes
166
-		 * Excludes decorators added by the "common" option from the basket standard detail html client
167
-		 *
168
-		 * Decorators extend the functionality of a class by adding new aspects
169
-		 * (e.g. log what is currently done), executing the methods of the underlying
170
-		 * class only in certain conditions (e.g. only for logged in users) or
171
-		 * modify what is returned to the caller.
172
-		 *
173
-		 * This option allows you to remove a decorator added via
174
-		 * "client/html/common/decorators/default" before they are wrapped
175
-		 * around the html client.
176
-		 *
177
-		 *  client/html/basket/standard/detail/decorators/excludes = array( 'decorator1' )
178
-		 *
179
-		 * This would remove the decorator named "decorator1" from the list of
180
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
181
-		 * "client/html/common/decorators/default" to the html client.
182
-		 *
183
-		 * @param array List of decorator names
184
-		 * @since 2015.08
185
-		 * @category Developer
186
-		 * @see client/html/common/decorators/default
187
-		 * @see client/html/basket/standard/detail/decorators/global
188
-		 * @see client/html/basket/standard/detail/decorators/local
189
-		 */
156
+    /**
157
+     * Returns the sub-client given by its name.
158
+     *
159
+     * @param string $type Name of the client type
160
+     * @param string|null $name Name of the sub-client (Default if null)
161
+     * @return \Aimeos\Client\Html\Iface Sub-client object
162
+     */
163
+    public function getSubClient( $type, $name = null )
164
+    {
165
+        /** client/html/basket/standard/detail/decorators/excludes
166
+         * Excludes decorators added by the "common" option from the basket standard detail html client
167
+         *
168
+         * Decorators extend the functionality of a class by adding new aspects
169
+         * (e.g. log what is currently done), executing the methods of the underlying
170
+         * class only in certain conditions (e.g. only for logged in users) or
171
+         * modify what is returned to the caller.
172
+         *
173
+         * This option allows you to remove a decorator added via
174
+         * "client/html/common/decorators/default" before they are wrapped
175
+         * around the html client.
176
+         *
177
+         *  client/html/basket/standard/detail/decorators/excludes = array( 'decorator1' )
178
+         *
179
+         * This would remove the decorator named "decorator1" from the list of
180
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
181
+         * "client/html/common/decorators/default" to the html client.
182
+         *
183
+         * @param array List of decorator names
184
+         * @since 2015.08
185
+         * @category Developer
186
+         * @see client/html/common/decorators/default
187
+         * @see client/html/basket/standard/detail/decorators/global
188
+         * @see client/html/basket/standard/detail/decorators/local
189
+         */
190 190
 
191
-		/** client/html/basket/standard/detail/decorators/global
192
-		 * Adds a list of globally available decorators only to the basket standard detail html client
193
-		 *
194
-		 * Decorators extend the functionality of a class by adding new aspects
195
-		 * (e.g. log what is currently done), executing the methods of the underlying
196
-		 * class only in certain conditions (e.g. only for logged in users) or
197
-		 * modify what is returned to the caller.
198
-		 *
199
-		 * This option allows you to wrap global decorators
200
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
201
-		 *
202
-		 *  client/html/basket/standard/detail/decorators/global = array( 'decorator1' )
203
-		 *
204
-		 * This would add the decorator named "decorator1" defined by
205
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
206
-		 *
207
-		 * @param array List of decorator names
208
-		 * @since 2015.08
209
-		 * @category Developer
210
-		 * @see client/html/common/decorators/default
211
-		 * @see client/html/basket/standard/detail/decorators/excludes
212
-		 * @see client/html/basket/standard/detail/decorators/local
213
-		 */
191
+        /** client/html/basket/standard/detail/decorators/global
192
+         * Adds a list of globally available decorators only to the basket standard detail html client
193
+         *
194
+         * Decorators extend the functionality of a class by adding new aspects
195
+         * (e.g. log what is currently done), executing the methods of the underlying
196
+         * class only in certain conditions (e.g. only for logged in users) or
197
+         * modify what is returned to the caller.
198
+         *
199
+         * This option allows you to wrap global decorators
200
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
201
+         *
202
+         *  client/html/basket/standard/detail/decorators/global = array( 'decorator1' )
203
+         *
204
+         * This would add the decorator named "decorator1" defined by
205
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
206
+         *
207
+         * @param array List of decorator names
208
+         * @since 2015.08
209
+         * @category Developer
210
+         * @see client/html/common/decorators/default
211
+         * @see client/html/basket/standard/detail/decorators/excludes
212
+         * @see client/html/basket/standard/detail/decorators/local
213
+         */
214 214
 
215
-		/** client/html/basket/standard/detail/decorators/local
216
-		 * Adds a list of local decorators only to the basket standard detail html client
217
-		 *
218
-		 * Decorators extend the functionality of a class by adding new aspects
219
-		 * (e.g. log what is currently done), executing the methods of the underlying
220
-		 * class only in certain conditions (e.g. only for logged in users) or
221
-		 * modify what is returned to the caller.
222
-		 *
223
-		 * This option allows you to wrap local decorators
224
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
225
-		 *
226
-		 *  client/html/basket/standard/detail/decorators/local = array( 'decorator2' )
227
-		 *
228
-		 * This would add the decorator named "decorator2" defined by
229
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
230
-		 *
231
-		 * @param array List of decorator names
232
-		 * @since 2015.08
233
-		 * @category Developer
234
-		 * @see client/html/common/decorators/default
235
-		 * @see client/html/basket/standard/detail/decorators/excludes
236
-		 * @see client/html/basket/standard/detail/decorators/global
237
-		 */
238
-		return $this->createSubClient( 'basket/standard/detail/' . $type, $name );
239
-	}
215
+        /** client/html/basket/standard/detail/decorators/local
216
+         * Adds a list of local decorators only to the basket standard detail html client
217
+         *
218
+         * Decorators extend the functionality of a class by adding new aspects
219
+         * (e.g. log what is currently done), executing the methods of the underlying
220
+         * class only in certain conditions (e.g. only for logged in users) or
221
+         * modify what is returned to the caller.
222
+         *
223
+         * This option allows you to wrap local decorators
224
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
225
+         *
226
+         *  client/html/basket/standard/detail/decorators/local = array( 'decorator2' )
227
+         *
228
+         * This would add the decorator named "decorator2" defined by
229
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
230
+         *
231
+         * @param array List of decorator names
232
+         * @since 2015.08
233
+         * @category Developer
234
+         * @see client/html/common/decorators/default
235
+         * @see client/html/basket/standard/detail/decorators/excludes
236
+         * @see client/html/basket/standard/detail/decorators/global
237
+         */
238
+        return $this->createSubClient( 'basket/standard/detail/' . $type, $name );
239
+    }
240 240
 
241 241
 
242
-	/**
243
-	 * Returns the list of sub-client names configured for the client.
244
-	 *
245
-	 * @return array List of HTML client names
246
-	 */
247
-	protected function getSubClientNames()
248
-	{
249
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
250
-	}
242
+    /**
243
+     * Returns the list of sub-client names configured for the client.
244
+     *
245
+     * @return array List of HTML client names
246
+     */
247
+    protected function getSubClientNames()
248
+    {
249
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
250
+    }
251 251
 
252 252
 
253
-	/**
254
-	 * Sets the necessary parameter values in the view.
255
-	 *
256
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
257
-	 * @param array &$tags Result array for the list of tags that are associated to the output
258
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
259
-	 * @return \Aimeos\MW\View\Iface Modified view object
260
-	 */
261
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
262
-	{
263
-		$view = parent::setViewParams( $view );
253
+    /**
254
+     * Sets the necessary parameter values in the view.
255
+     *
256
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
257
+     * @param array &$tags Result array for the list of tags that are associated to the output
258
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
259
+     * @return \Aimeos\MW\View\Iface Modified view object
260
+     */
261
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
262
+    {
263
+        $view = parent::setViewParams( $view );
264 264
 
265
-		if( !isset( $this->cache ) )
266
-		{
267
-			$basket = $view->standardBasket;
265
+        if( !isset( $this->cache ) )
266
+        {
267
+            $basket = $view->standardBasket;
268 268
 
269
-			$target = $view->config( 'client/html/checkout/standard/url/target' );
270
-			$cntl = $view->config( 'client/html/checkout/standard/url/controller', 'checkout' );
271
-			$action = $view->config( 'client/html/checkout/standard/url/action', 'index' );
272
-			$config = $view->config( 'client/html/checkout/standard/url/config', array() );
269
+            $target = $view->config( 'client/html/checkout/standard/url/target' );
270
+            $cntl = $view->config( 'client/html/checkout/standard/url/controller', 'checkout' );
271
+            $action = $view->config( 'client/html/checkout/standard/url/action', 'index' );
272
+            $config = $view->config( 'client/html/checkout/standard/url/config', array() );
273 273
 
274
-			$view->summaryParams = $view->get( 'standardParams', array() );
275
-			$view->summaryUrlServicePayment = $view->url( $target, $cntl, $action, array( 'c_step' => 'payment' ), array(), $config );
276
-			$view->summaryUrlServiceDelivery = $view->url( $target, $cntl, $action, array( 'c_step' => 'delivery' ), array(), $config );
277
-			$view->summaryTaxRates = $this->getTaxRates( $basket );
278
-			$view->summaryEnableModify = true;
279
-			$view->summaryBasket = $basket;
274
+            $view->summaryParams = $view->get( 'standardParams', array() );
275
+            $view->summaryUrlServicePayment = $view->url( $target, $cntl, $action, array( 'c_step' => 'payment' ), array(), $config );
276
+            $view->summaryUrlServiceDelivery = $view->url( $target, $cntl, $action, array( 'c_step' => 'delivery' ), array(), $config );
277
+            $view->summaryTaxRates = $this->getTaxRates( $basket );
278
+            $view->summaryEnableModify = true;
279
+            $view->summaryBasket = $basket;
280 280
 
281
-			$this->cache = $view;
282
-		}
281
+            $this->cache = $view;
282
+        }
283 283
 
284
-		return $this->cache;
285
-	}
284
+        return $this->cache;
285
+    }
286 286
 }
287 287
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Standard/Factory.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -19,69 +19,69 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Factory
22
-	extends \Aimeos\Client\Html\Common\Factory\Base
23
-	implements \Aimeos\Client\Html\Common\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Factory\Base
23
+    implements \Aimeos\Client\Html\Common\Factory\Iface
24 24
 {
25
-	/**
26
-	 * Creates a standard basket client object.
27
-	 *
28
-	 * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
29
-	 * @param array $templatePaths List of file system paths where the templates are stored
30
-	 * @param string|null $name Client name (default: "Standard")
31
-	 * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32
-	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33
-	 */
34
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
35
-	{
36
-		/** client/html/basket/standard/name
37
-		 * Class name of the used basket standard client implementation
38
-		 *
39
-		 * Each default HTML client can be replace by an alternative imlementation.
40
-		 * To use this implementation, you have to set the last part of the class
41
-		 * name as configuration value so the client factory knows which class it
42
-		 * has to instantiate.
43
-		 *
44
-		 * For example, if the name of the default class is
45
-		 *
46
-		 *  \Aimeos\Client\Html\Basket\Standard\Standard
47
-		 *
48
-		 * and you want to replace it with your own version named
49
-		 *
50
-		 *  \Aimeos\Client\Html\Basket\Standard\Mybasket
51
-		 *
52
-		 * then you have to set the this configuration option:
53
-		 *
54
-		 *  client/html/basket/standard/name = Mybasket
55
-		 *
56
-		 * The value is the last part of your own class name and it's case sensitive,
57
-		 * so take care that the configuration value is exactly named like the last
58
-		 * part of the class name.
59
-		 *
60
-		 * The allowed characters of the class name are A-Z, a-z and 0-9. No other
61
-		 * characters are possible! You should always start the last part of the class
62
-		 * name with an upper case character and continue only with lower case characters
63
-		 * or numbers. Avoid chamel case names like "MyBasket"!
64
-		 *
65
-		 * @param string Last part of the class name
66
-		 * @since 2014.03
67
-		 * @category Developer
68
-		 */
69
-		if( $name === null ) {
70
-			$name = $context->getConfig()->get( 'client/html/basket/standard/name', 'Standard' );
71
-		}
25
+    /**
26
+     * Creates a standard basket client object.
27
+     *
28
+     * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
29
+     * @param array $templatePaths List of file system paths where the templates are stored
30
+     * @param string|null $name Client name (default: "Standard")
31
+     * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32
+     * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33
+     */
34
+    public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
35
+    {
36
+        /** client/html/basket/standard/name
37
+         * Class name of the used basket standard client implementation
38
+         *
39
+         * Each default HTML client can be replace by an alternative imlementation.
40
+         * To use this implementation, you have to set the last part of the class
41
+         * name as configuration value so the client factory knows which class it
42
+         * has to instantiate.
43
+         *
44
+         * For example, if the name of the default class is
45
+         *
46
+         *  \Aimeos\Client\Html\Basket\Standard\Standard
47
+         *
48
+         * and you want to replace it with your own version named
49
+         *
50
+         *  \Aimeos\Client\Html\Basket\Standard\Mybasket
51
+         *
52
+         * then you have to set the this configuration option:
53
+         *
54
+         *  client/html/basket/standard/name = Mybasket
55
+         *
56
+         * The value is the last part of your own class name and it's case sensitive,
57
+         * so take care that the configuration value is exactly named like the last
58
+         * part of the class name.
59
+         *
60
+         * The allowed characters of the class name are A-Z, a-z and 0-9. No other
61
+         * characters are possible! You should always start the last part of the class
62
+         * name with an upper case character and continue only with lower case characters
63
+         * or numbers. Avoid chamel case names like "MyBasket"!
64
+         *
65
+         * @param string Last part of the class name
66
+         * @since 2014.03
67
+         * @category Developer
68
+         */
69
+        if( $name === null ) {
70
+            $name = $context->getConfig()->get( 'client/html/basket/standard/name', 'Standard' );
71
+        }
72 72
 
73
-		if( ctype_alnum( $name ) === false )
74
-		{
75
-			$classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Standard\\' . $name : '<not a string>';
76
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
77
-		}
73
+        if( ctype_alnum( $name ) === false )
74
+        {
75
+            $classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Standard\\' . $name : '<not a string>';
76
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
77
+        }
78 78
 
79
-		$iface = '\\Aimeos\\Client\\Html\\Iface';
80
-		$classname = '\\Aimeos\\Client\\Html\\Basket\\Standard\\' . $name;
79
+        $iface = '\\Aimeos\\Client\\Html\\Iface';
80
+        $classname = '\\Aimeos\\Client\\Html\\Basket\\Standard\\' . $name;
81 81
 
82
-		$client = self::createClientBase( $context, $classname, $iface, $templatePaths );
82
+        $client = self::createClientBase( $context, $classname, $iface, $templatePaths );
83 83
 
84
-		return self::addClientDecorators( $context, $client, $templatePaths, 'basket/standard' );
85
-	}
84
+        return self::addClientDecorators( $context, $client, $templatePaths, 'basket/standard' );
85
+    }
86 86
 }
87 87
 
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Related/Bought/Standard.php 1 patch
Indentation   +375 added lines, -375 removed lines patch added patch discarded remove patch
@@ -18,380 +18,380 @@
 block discarded – undo
18 18
  * @subpackage Html
19 19
  */
20 20
 class Standard
21
-	extends \Aimeos\Client\Html\Basket\Base
22
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
21
+    extends \Aimeos\Client\Html\Basket\Base
22
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
23 23
 {
24
-	/** client/html/basket/related/bought/standard/subparts
25
-	 * List of HTML sub-clients rendered within the basket related bought section
26
-	 *
27
-	 * The output of the frontend is composed of the code generated by the HTML
28
-	 * clients. Each HTML client can consist of serveral (or none) sub-clients
29
-	 * that are responsible for rendering certain sub-parts of the output. The
30
-	 * sub-clients can contain HTML clients themselves and therefore a
31
-	 * hierarchical tree of HTML clients is composed. Each HTML client creates
32
-	 * the output that is placed inside the container of its parent.
33
-	 *
34
-	 * At first, always the HTML code generated by the parent is printed, then
35
-	 * the HTML code of its sub-clients. The order of the HTML sub-clients
36
-	 * determines the order of the output of these sub-clients inside the parent
37
-	 * container. If the configured list of clients is
38
-	 *
39
-	 *  array( "subclient1", "subclient2" )
40
-	 *
41
-	 * you can easily change the order of the output by reordering the subparts:
42
-	 *
43
-	 *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
44
-	 *
45
-	 * You can also remove one or more parts if they shouldn't be rendered:
46
-	 *
47
-	 *  client/html/<clients>/subparts = array( "subclient1" )
48
-	 *
49
-	 * As the clients only generates structural HTML, the layout defined via CSS
50
-	 * should support adding, removing or reordering content by a fluid like
51
-	 * design.
52
-	 *
53
-	 * @param array List of sub-client names
54
-	 * @since 2014.03
55
-	 * @category Developer
56
-	 */
57
-	private $subPartPath = 'client/html/basket/related/bought/standard/subparts';
58
-	private $subPartNames = array();
59
-	private $cache;
60
-
61
-
62
-	/**
63
-	 * Returns the HTML code for insertion into the body.
64
-	 *
65
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
66
-	 * @param array &$tags Result array for the list of tags that are associated to the output
67
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
68
-	 * @return string HTML code
69
-	 */
70
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
-	{
72
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
73
-
74
-		$html = '';
75
-		foreach( $this->getSubClients() as $subclient ) {
76
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
77
-		}
78
-		$view->boughtBody = $html;
79
-
80
-		/** client/html/basket/related/bought/standard/template-body
81
-		 * Relative path to the HTML body template of the basket related bought client.
82
-		 *
83
-		 * The template file contains the HTML code and processing instructions
84
-		 * to generate the result shown in the body of the frontend. The
85
-		 * configuration string is the path to the template file relative
86
-		 * to the templates directory (usually in client/html/templates).
87
-		 *
88
-		 * You can overwrite the template file configuration in extensions and
89
-		 * provide alternative templates. These alternative templates should be
90
-		 * named like the default one but with the string "standard" replaced by
91
-		 * an unique name. You may use the name of your project for this. If
92
-		 * you've implemented an alternative client class as well, "standard"
93
-		 * should be replaced by the name of the new class.
94
-		 *
95
-		 * @param string Relative path to the template creating code for the HTML page body
96
-		 * @since 2014.03
97
-		 * @category Developer
98
-		 * @see client/html/basket/related/bought/standard/template-header
99
-		 */
100
-		$tplconf = 'client/html/basket/related/bought/standard/template-body';
101
-		$default = 'basket/related/bought-body-default.php';
102
-
103
-		return $view->render( $view->config( $tplconf, $default ) );
104
-	}
105
-
106
-
107
-	/**
108
-	 * Returns the HTML string for insertion into the header.
109
-	 *
110
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111
-	 * @param array &$tags Result array for the list of tags that are associated to the output
112
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
113
-	 * @return string|null String including HTML tags for the header on error
114
-	 */
115
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
-	{
117
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
118
-
119
-		$html = '';
120
-		foreach( $this->getSubClients() as $subclient ) {
121
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
122
-		}
123
-		$view->boughtHeader = $html;
124
-
125
-		/** client/html/basket/related/bought/standard/template-header
126
-		 * Relative path to the HTML header template of the basket related bought client.
127
-		 *
128
-		 * The template file contains the HTML code and processing instructions
129
-		 * to generate the HTML code that is inserted into the HTML page header
130
-		 * of the rendered page in the frontend. The configuration string is the
131
-		 * path to the template file relative to the templates directory (usually
132
-		 * in client/html/templates).
133
-		 *
134
-		 * You can overwrite the template file configuration in extensions and
135
-		 * provide alternative templates. These alternative templates should be
136
-		 * named like the default one but with the string "standard" replaced by
137
-		 * an unique name. You may use the name of your project for this. If
138
-		 * you've implemented an alternative client class as well, "standard"
139
-		 * should be replaced by the name of the new class.
140
-		 *
141
-		 * @param string Relative path to the template creating code for the HTML page head
142
-		 * @since 2014.03
143
-		 * @category Developer
144
-		 * @see client/html/basket/related/bought/standard/template-body
145
-		 */
146
-		$tplconf = 'client/html/basket/related/bought/standard/template-header';
147
-		$default = 'basket/related/bought-header-default.php';
148
-
149
-		return $view->render( $view->config( $tplconf, $default ) );
150
-	}
151
-
152
-
153
-	/**
154
-	 * Returns the sub-client given by its name.
155
-	 *
156
-	 * @param string $type Name of the client type
157
-	 * @param string|null $name Name of the sub-client (Default if null)
158
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
159
-	 */
160
-	public function getSubClient( $type, $name = null )
161
-	{
162
-		/** client/html/basket/related/bought/decorators/excludes
163
-		 * Excludes decorators added by the "common" option from the basket related bought html client
164
-		 *
165
-		 * Decorators extend the functionality of a class by adding new aspects
166
-		 * (e.g. log what is currently done), executing the methods of the underlying
167
-		 * class only in certain conditions (e.g. only for logged in users) or
168
-		 * modify what is returned to the caller.
169
-		 *
170
-		 * This option allows you to remove a decorator added via
171
-		 * "client/html/common/decorators/default" before they are wrapped
172
-		 * around the html client.
173
-		 *
174
-		 *  client/html/basket/related/bought/decorators/excludes = array( 'decorator1' )
175
-		 *
176
-		 * This would remove the decorator named "decorator1" from the list of
177
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
178
-		 * "client/html/common/decorators/default" to the html client.
179
-		 *
180
-		 * @param array List of decorator names
181
-		 * @since 2014.05
182
-		 * @category Developer
183
-		 * @see client/html/common/decorators/default
184
-		 * @see client/html/basket/related/bought/decorators/global
185
-		 * @see client/html/basket/related/bought/decorators/local
186
-		 */
187
-
188
-		/** client/html/basket/related/bought/decorators/global
189
-		 * Adds a list of globally available decorators only to the basket related bought html client
190
-		 *
191
-		 * Decorators extend the functionality of a class by adding new aspects
192
-		 * (e.g. log what is currently done), executing the methods of the underlying
193
-		 * class only in certain conditions (e.g. only for logged in users) or
194
-		 * modify what is returned to the caller.
195
-		 *
196
-		 * This option allows you to wrap global decorators
197
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
198
-		 *
199
-		 *  client/html/basket/related/bought/decorators/global = array( 'decorator1' )
200
-		 *
201
-		 * This would add the decorator named "decorator1" defined by
202
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
203
-		 *
204
-		 * @param array List of decorator names
205
-		 * @since 2014.05
206
-		 * @category Developer
207
-		 * @see client/html/common/decorators/default
208
-		 * @see client/html/basket/related/bought/decorators/excludes
209
-		 * @see client/html/basket/related/bought/decorators/local
210
-		 */
211
-
212
-		/** client/html/basket/related/bought/decorators/local
213
-		 * Adds a list of local decorators only to the basket related bought html client
214
-		 *
215
-		 * Decorators extend the functionality of a class by adding new aspects
216
-		 * (e.g. log what is currently done), executing the methods of the underlying
217
-		 * class only in certain conditions (e.g. only for logged in users) or
218
-		 * modify what is returned to the caller.
219
-		 *
220
-		 * This option allows you to wrap local decorators
221
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
222
-		 *
223
-		 *  client/html/basket/related/bought/decorators/local = array( 'decorator2' )
224
-		 *
225
-		 * This would add the decorator named "decorator2" defined by
226
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
227
-		 *
228
-		 * @param array List of decorator names
229
-		 * @since 2014.05
230
-		 * @category Developer
231
-		 * @see client/html/common/decorators/default
232
-		 * @see client/html/basket/related/bought/decorators/excludes
233
-		 * @see client/html/basket/related/bought/decorators/global
234
-		 */
235
-
236
-		return $this->createSubClient( 'basket/related/bought/' . $type, $name );
237
-	}
238
-
239
-
240
-	/**
241
-	 * Returns the list of sub-client names configured for the client.
242
-	 *
243
-	 * @return array List of HTML client names
244
-	 */
245
-	protected function getSubClientNames()
246
-	{
247
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
248
-	}
249
-
250
-
251
-	/**
252
-	 * Sets the necessary parameter values in the view.
253
-	 *
254
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
255
-	 * @param array &$tags Result array for the list of tags that are associated to the output
256
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
257
-	 * @return \Aimeos\MW\View\Iface Modified view object
258
-	 */
259
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
260
-	{
261
-		if( !isset( $this->cache ) )
262
-		{
263
-			if( isset( $view->relatedBasket ) )
264
-			{
265
-				$refIds = $items = array();
266
-				$context = $this->getContext();
267
-
268
-				$prodIds = $this->getProductIdsFromBasket( $view->relatedBasket );
269
-
270
-				foreach( $this->getListItems( $prodIds ) as $listItem )
271
-				{
272
-					$refId = $listItem->getRefId();
273
-
274
-					if( !isset( $prodIds[$refId] ) ) {
275
-						$refIds[$refId] = $refId;
276
-					}
277
-				}
278
-
279
-				$products = $this->getProductItems( $refIds );
280
-
281
-				foreach( $refIds as $id )
282
-				{
283
-					if( isset( $products[$id] ) ) {
284
-						$items[$id] = $products[$id];
285
-					}
286
-				}
287
-
288
-				/** client/html/basket/related/bought/standard/limit
289
-				 * Number of items in the list of bought together products
290
-				 *
291
-				 * This option limits the number of suggested products in the
292
-				 * list of bought together products. The suggested items are
293
-				 * calculated using the products that are in the current basket
294
-				 * of the customer.
295
-				 *
296
-				 * Note: You need to start the job controller for calculating
297
-				 * the bought together products regularly to get up to date
298
-				 * product suggestions.
299
-				 *
300
-				 * @param integer Number of products
301
-				 * @since 2014.09
302
-				 */
303
-				$size = $context->getConfig()->get( 'client/html/basket/related/bought/standard/limit', 6 );
304
-
305
-
306
-				$view->boughtItems = array_slice( $items, 0, $size, true );
307
-			}
308
-
309
-			$this->cache = $view;
310
-		}
311
-
312
-		return $this->cache;
313
-	}
314
-
315
-
316
-	/**
317
-	 * Returns the list items of type "bought-together" associated to the given product IDs.
318
-	 *
319
-	 * @param string[] $prodIds List of product IDs
320
-	 * @return \Aimeos\MShop\Product\Item\Lists\Iface[] List of product list items
321
-	 */
322
-	protected function getListItems( array $prodIds )
323
-	{
324
-		$typeItem = $this->getTypeItem( 'product/lists/type', 'product', 'bought-together' );
325
-		$manager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'product/lists' );
326
-
327
-		$search = $manager->createSearch( true );
328
-		$expr = array(
329
-				$search->compare( '==', 'product.lists.parentid', $prodIds ),
330
-				$search->compare( '==', 'product.lists.typeid', $typeItem->getId() ),
331
-				$search->compare( '==', 'product.lists.domain', 'product' ),
332
-				$search->getConditions(),
333
-		);
334
-		$search->setConditions( $search->combine( '&&', $expr ) );
335
-		$search->setSortations( array( $search->sort( '+', 'product.lists.position' ) ) );
336
-
337
-		return $manager->searchItems( $search );
338
-	}
339
-
340
-
341
-	/**
342
-	 * Returns the IDs of the products in the current basket.
343
-	 *
344
-	 * @param \Aimeos\MShop\Order\Item\Base\Iface $basket Basket object
345
-	 * @return string[] List of product IDs
346
-	 */
347
-	protected function getProductIdsFromBasket( \Aimeos\MShop\Order\Item\Base\Iface $basket )
348
-	{
349
-		$list = array();
350
-
351
-		foreach( $basket->getProducts() as $orderProduct )
352
-		{
353
-			$list[ $orderProduct->getProductId() ] = true;
354
-
355
-			foreach( $orderProduct->getProducts() as $subProduct ) {
356
-				$list[ $subProduct->getProductId() ] = true;
357
-			}
358
-		}
359
-
360
-		return array_keys( $list );
361
-	}
362
-
363
-
364
-	/**
365
-	 * Returns the product items for the given IDs.
366
-	 *
367
-	 * @param string[] $ids List of product IDs
368
-	 * @return \Aimeos\MShop\Product\Item\Iface[] List of product items
369
-	 */
370
-	protected function getProductItems( array $ids )
371
-	{
372
-		$context = $this->getContext();
373
-		$config = $context->getConfig();
374
-
375
-		/** client/html/basket/related/bought/standard/domains
376
-		 * The list of domain names whose items should be available in the template for the products
377
-		 *
378
-		 * The templates rendering product details usually add the images,
379
-		 * prices and texts, etc. associated to the product
380
-		 * item. If you want to display additional or less content, you can
381
-		 * configure your own list of domains (attribute, media, price, product,
382
-		 * text, etc. are domains) whose items are fetched from the storage.
383
-		 * Please keep in mind that the more domains you add to the configuration,
384
-		 * the more time is required for fetching the content!
385
-		 *
386
-		 * @param array List of domain names
387
-		 * @since 2014.09
388
-		 * @category Developer
389
-		 */
390
-		$domains = array( 'text', 'price', 'media' );
391
-		$domains = $config->get( 'client/html/basket/related/bought/standard/domains', $domains );
392
-
393
-		$controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
394
-
395
-		return $controller->getProductItems( $ids, $domains );
396
-	}
24
+    /** client/html/basket/related/bought/standard/subparts
25
+     * List of HTML sub-clients rendered within the basket related bought section
26
+     *
27
+     * The output of the frontend is composed of the code generated by the HTML
28
+     * clients. Each HTML client can consist of serveral (or none) sub-clients
29
+     * that are responsible for rendering certain sub-parts of the output. The
30
+     * sub-clients can contain HTML clients themselves and therefore a
31
+     * hierarchical tree of HTML clients is composed. Each HTML client creates
32
+     * the output that is placed inside the container of its parent.
33
+     *
34
+     * At first, always the HTML code generated by the parent is printed, then
35
+     * the HTML code of its sub-clients. The order of the HTML sub-clients
36
+     * determines the order of the output of these sub-clients inside the parent
37
+     * container. If the configured list of clients is
38
+     *
39
+     *  array( "subclient1", "subclient2" )
40
+     *
41
+     * you can easily change the order of the output by reordering the subparts:
42
+     *
43
+     *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
44
+     *
45
+     * You can also remove one or more parts if they shouldn't be rendered:
46
+     *
47
+     *  client/html/<clients>/subparts = array( "subclient1" )
48
+     *
49
+     * As the clients only generates structural HTML, the layout defined via CSS
50
+     * should support adding, removing or reordering content by a fluid like
51
+     * design.
52
+     *
53
+     * @param array List of sub-client names
54
+     * @since 2014.03
55
+     * @category Developer
56
+     */
57
+    private $subPartPath = 'client/html/basket/related/bought/standard/subparts';
58
+    private $subPartNames = array();
59
+    private $cache;
60
+
61
+
62
+    /**
63
+     * Returns the HTML code for insertion into the body.
64
+     *
65
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
66
+     * @param array &$tags Result array for the list of tags that are associated to the output
67
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
68
+     * @return string HTML code
69
+     */
70
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
+    {
72
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
73
+
74
+        $html = '';
75
+        foreach( $this->getSubClients() as $subclient ) {
76
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
77
+        }
78
+        $view->boughtBody = $html;
79
+
80
+        /** client/html/basket/related/bought/standard/template-body
81
+         * Relative path to the HTML body template of the basket related bought client.
82
+         *
83
+         * The template file contains the HTML code and processing instructions
84
+         * to generate the result shown in the body of the frontend. The
85
+         * configuration string is the path to the template file relative
86
+         * to the templates directory (usually in client/html/templates).
87
+         *
88
+         * You can overwrite the template file configuration in extensions and
89
+         * provide alternative templates. These alternative templates should be
90
+         * named like the default one but with the string "standard" replaced by
91
+         * an unique name. You may use the name of your project for this. If
92
+         * you've implemented an alternative client class as well, "standard"
93
+         * should be replaced by the name of the new class.
94
+         *
95
+         * @param string Relative path to the template creating code for the HTML page body
96
+         * @since 2014.03
97
+         * @category Developer
98
+         * @see client/html/basket/related/bought/standard/template-header
99
+         */
100
+        $tplconf = 'client/html/basket/related/bought/standard/template-body';
101
+        $default = 'basket/related/bought-body-default.php';
102
+
103
+        return $view->render( $view->config( $tplconf, $default ) );
104
+    }
105
+
106
+
107
+    /**
108
+     * Returns the HTML string for insertion into the header.
109
+     *
110
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111
+     * @param array &$tags Result array for the list of tags that are associated to the output
112
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
113
+     * @return string|null String including HTML tags for the header on error
114
+     */
115
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
+    {
117
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
118
+
119
+        $html = '';
120
+        foreach( $this->getSubClients() as $subclient ) {
121
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
122
+        }
123
+        $view->boughtHeader = $html;
124
+
125
+        /** client/html/basket/related/bought/standard/template-header
126
+         * Relative path to the HTML header template of the basket related bought client.
127
+         *
128
+         * The template file contains the HTML code and processing instructions
129
+         * to generate the HTML code that is inserted into the HTML page header
130
+         * of the rendered page in the frontend. The configuration string is the
131
+         * path to the template file relative to the templates directory (usually
132
+         * in client/html/templates).
133
+         *
134
+         * You can overwrite the template file configuration in extensions and
135
+         * provide alternative templates. These alternative templates should be
136
+         * named like the default one but with the string "standard" replaced by
137
+         * an unique name. You may use the name of your project for this. If
138
+         * you've implemented an alternative client class as well, "standard"
139
+         * should be replaced by the name of the new class.
140
+         *
141
+         * @param string Relative path to the template creating code for the HTML page head
142
+         * @since 2014.03
143
+         * @category Developer
144
+         * @see client/html/basket/related/bought/standard/template-body
145
+         */
146
+        $tplconf = 'client/html/basket/related/bought/standard/template-header';
147
+        $default = 'basket/related/bought-header-default.php';
148
+
149
+        return $view->render( $view->config( $tplconf, $default ) );
150
+    }
151
+
152
+
153
+    /**
154
+     * Returns the sub-client given by its name.
155
+     *
156
+     * @param string $type Name of the client type
157
+     * @param string|null $name Name of the sub-client (Default if null)
158
+     * @return \Aimeos\Client\Html\Iface Sub-client object
159
+     */
160
+    public function getSubClient( $type, $name = null )
161
+    {
162
+        /** client/html/basket/related/bought/decorators/excludes
163
+         * Excludes decorators added by the "common" option from the basket related bought html client
164
+         *
165
+         * Decorators extend the functionality of a class by adding new aspects
166
+         * (e.g. log what is currently done), executing the methods of the underlying
167
+         * class only in certain conditions (e.g. only for logged in users) or
168
+         * modify what is returned to the caller.
169
+         *
170
+         * This option allows you to remove a decorator added via
171
+         * "client/html/common/decorators/default" before they are wrapped
172
+         * around the html client.
173
+         *
174
+         *  client/html/basket/related/bought/decorators/excludes = array( 'decorator1' )
175
+         *
176
+         * This would remove the decorator named "decorator1" from the list of
177
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
178
+         * "client/html/common/decorators/default" to the html client.
179
+         *
180
+         * @param array List of decorator names
181
+         * @since 2014.05
182
+         * @category Developer
183
+         * @see client/html/common/decorators/default
184
+         * @see client/html/basket/related/bought/decorators/global
185
+         * @see client/html/basket/related/bought/decorators/local
186
+         */
187
+
188
+        /** client/html/basket/related/bought/decorators/global
189
+         * Adds a list of globally available decorators only to the basket related bought html client
190
+         *
191
+         * Decorators extend the functionality of a class by adding new aspects
192
+         * (e.g. log what is currently done), executing the methods of the underlying
193
+         * class only in certain conditions (e.g. only for logged in users) or
194
+         * modify what is returned to the caller.
195
+         *
196
+         * This option allows you to wrap global decorators
197
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
198
+         *
199
+         *  client/html/basket/related/bought/decorators/global = array( 'decorator1' )
200
+         *
201
+         * This would add the decorator named "decorator1" defined by
202
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
203
+         *
204
+         * @param array List of decorator names
205
+         * @since 2014.05
206
+         * @category Developer
207
+         * @see client/html/common/decorators/default
208
+         * @see client/html/basket/related/bought/decorators/excludes
209
+         * @see client/html/basket/related/bought/decorators/local
210
+         */
211
+
212
+        /** client/html/basket/related/bought/decorators/local
213
+         * Adds a list of local decorators only to the basket related bought html client
214
+         *
215
+         * Decorators extend the functionality of a class by adding new aspects
216
+         * (e.g. log what is currently done), executing the methods of the underlying
217
+         * class only in certain conditions (e.g. only for logged in users) or
218
+         * modify what is returned to the caller.
219
+         *
220
+         * This option allows you to wrap local decorators
221
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
222
+         *
223
+         *  client/html/basket/related/bought/decorators/local = array( 'decorator2' )
224
+         *
225
+         * This would add the decorator named "decorator2" defined by
226
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
227
+         *
228
+         * @param array List of decorator names
229
+         * @since 2014.05
230
+         * @category Developer
231
+         * @see client/html/common/decorators/default
232
+         * @see client/html/basket/related/bought/decorators/excludes
233
+         * @see client/html/basket/related/bought/decorators/global
234
+         */
235
+
236
+        return $this->createSubClient( 'basket/related/bought/' . $type, $name );
237
+    }
238
+
239
+
240
+    /**
241
+     * Returns the list of sub-client names configured for the client.
242
+     *
243
+     * @return array List of HTML client names
244
+     */
245
+    protected function getSubClientNames()
246
+    {
247
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
248
+    }
249
+
250
+
251
+    /**
252
+     * Sets the necessary parameter values in the view.
253
+     *
254
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
255
+     * @param array &$tags Result array for the list of tags that are associated to the output
256
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
257
+     * @return \Aimeos\MW\View\Iface Modified view object
258
+     */
259
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
260
+    {
261
+        if( !isset( $this->cache ) )
262
+        {
263
+            if( isset( $view->relatedBasket ) )
264
+            {
265
+                $refIds = $items = array();
266
+                $context = $this->getContext();
267
+
268
+                $prodIds = $this->getProductIdsFromBasket( $view->relatedBasket );
269
+
270
+                foreach( $this->getListItems( $prodIds ) as $listItem )
271
+                {
272
+                    $refId = $listItem->getRefId();
273
+
274
+                    if( !isset( $prodIds[$refId] ) ) {
275
+                        $refIds[$refId] = $refId;
276
+                    }
277
+                }
278
+
279
+                $products = $this->getProductItems( $refIds );
280
+
281
+                foreach( $refIds as $id )
282
+                {
283
+                    if( isset( $products[$id] ) ) {
284
+                        $items[$id] = $products[$id];
285
+                    }
286
+                }
287
+
288
+                /** client/html/basket/related/bought/standard/limit
289
+                 * Number of items in the list of bought together products
290
+                 *
291
+                 * This option limits the number of suggested products in the
292
+                 * list of bought together products. The suggested items are
293
+                 * calculated using the products that are in the current basket
294
+                 * of the customer.
295
+                 *
296
+                 * Note: You need to start the job controller for calculating
297
+                 * the bought together products regularly to get up to date
298
+                 * product suggestions.
299
+                 *
300
+                 * @param integer Number of products
301
+                 * @since 2014.09
302
+                 */
303
+                $size = $context->getConfig()->get( 'client/html/basket/related/bought/standard/limit', 6 );
304
+
305
+
306
+                $view->boughtItems = array_slice( $items, 0, $size, true );
307
+            }
308
+
309
+            $this->cache = $view;
310
+        }
311
+
312
+        return $this->cache;
313
+    }
314
+
315
+
316
+    /**
317
+     * Returns the list items of type "bought-together" associated to the given product IDs.
318
+     *
319
+     * @param string[] $prodIds List of product IDs
320
+     * @return \Aimeos\MShop\Product\Item\Lists\Iface[] List of product list items
321
+     */
322
+    protected function getListItems( array $prodIds )
323
+    {
324
+        $typeItem = $this->getTypeItem( 'product/lists/type', 'product', 'bought-together' );
325
+        $manager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'product/lists' );
326
+
327
+        $search = $manager->createSearch( true );
328
+        $expr = array(
329
+                $search->compare( '==', 'product.lists.parentid', $prodIds ),
330
+                $search->compare( '==', 'product.lists.typeid', $typeItem->getId() ),
331
+                $search->compare( '==', 'product.lists.domain', 'product' ),
332
+                $search->getConditions(),
333
+        );
334
+        $search->setConditions( $search->combine( '&&', $expr ) );
335
+        $search->setSortations( array( $search->sort( '+', 'product.lists.position' ) ) );
336
+
337
+        return $manager->searchItems( $search );
338
+    }
339
+
340
+
341
+    /**
342
+     * Returns the IDs of the products in the current basket.
343
+     *
344
+     * @param \Aimeos\MShop\Order\Item\Base\Iface $basket Basket object
345
+     * @return string[] List of product IDs
346
+     */
347
+    protected function getProductIdsFromBasket( \Aimeos\MShop\Order\Item\Base\Iface $basket )
348
+    {
349
+        $list = array();
350
+
351
+        foreach( $basket->getProducts() as $orderProduct )
352
+        {
353
+            $list[ $orderProduct->getProductId() ] = true;
354
+
355
+            foreach( $orderProduct->getProducts() as $subProduct ) {
356
+                $list[ $subProduct->getProductId() ] = true;
357
+            }
358
+        }
359
+
360
+        return array_keys( $list );
361
+    }
362
+
363
+
364
+    /**
365
+     * Returns the product items for the given IDs.
366
+     *
367
+     * @param string[] $ids List of product IDs
368
+     * @return \Aimeos\MShop\Product\Item\Iface[] List of product items
369
+     */
370
+    protected function getProductItems( array $ids )
371
+    {
372
+        $context = $this->getContext();
373
+        $config = $context->getConfig();
374
+
375
+        /** client/html/basket/related/bought/standard/domains
376
+         * The list of domain names whose items should be available in the template for the products
377
+         *
378
+         * The templates rendering product details usually add the images,
379
+         * prices and texts, etc. associated to the product
380
+         * item. If you want to display additional or less content, you can
381
+         * configure your own list of domains (attribute, media, price, product,
382
+         * text, etc. are domains) whose items are fetched from the storage.
383
+         * Please keep in mind that the more domains you add to the configuration,
384
+         * the more time is required for fetching the content!
385
+         *
386
+         * @param array List of domain names
387
+         * @since 2014.09
388
+         * @category Developer
389
+         */
390
+        $domains = array( 'text', 'price', 'media' );
391
+        $domains = $config->get( 'client/html/basket/related/bought/standard/domains', $domains );
392
+
393
+        $controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
394
+
395
+        return $controller->getProductItems( $ids, $domains );
396
+    }
397 397
 }
398 398
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Related/Factory.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -18,69 +18,69 @@
 block discarded – undo
18 18
  * @subpackage Html
19 19
  */
20 20
 class Factory
21
-	extends \Aimeos\Client\Html\Common\Factory\Base
22
-	implements \Aimeos\Client\Html\Common\Factory\Iface
21
+    extends \Aimeos\Client\Html\Common\Factory\Base
22
+    implements \Aimeos\Client\Html\Common\Factory\Iface
23 23
 {
24
-	/**
25
-	 * Creates a related basket client object.
26
-	 *
27
-	 * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
28
-	 * @param array $templatePaths List of file system paths where the templates are stored
29
-	 * @param string|null $name Client name (default: "Standard")
30
-	 * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
31
-	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
32
-	 */
33
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
34
-	{
35
-		/** client/html/basket/related/name
36
-		 * Class name of the used basket related client implementation
37
-		 *
38
-		 * Each default HTML client can be replace by an alternative imlementation.
39
-		 * To use this implementation, you have to set the last part of the class
40
-		 * name as configuration value so the client factory knows which class it
41
-		 * has to instantiate.
42
-		 *
43
-		 * For example, if the name of the default class is
44
-		 *
45
-		 *  \Aimeos\Client\Html\Basket\Related\Standard
46
-		 *
47
-		 * and you want to replace it with your own version named
48
-		 *
49
-		 *  \Aimeos\Client\Html\Basket\Related\Mybasket
50
-		 *
51
-		 * then you have to set the this configuration option:
52
-		 *
53
-		 *  client/html/basket/related/name = Mybasket
54
-		 *
55
-		 * The value is the last part of your own class name and it's case sensitive,
56
-		 * so take care that the configuration value is exactly named like the last
57
-		 * part of the class name.
58
-		 *
59
-		 * The allowed characters of the class name are A-Z, a-z and 0-9. No other
60
-		 * characters are possible! You should always start the last part of the class
61
-		 * name with an upper case character and continue only with lower case characters
62
-		 * or numbers. Avoid chamel case names like "MyBasket"!
63
-		 *
64
-		 * @param string Last part of the class name
65
-		 * @since 2014.03
66
-		 * @category Developer
67
-		 */
68
-		if( $name === null ) {
69
-			$name = $context->getConfig()->get( 'client/html/basket/related/name', 'Standard' );
70
-		}
24
+    /**
25
+     * Creates a related basket client object.
26
+     *
27
+     * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
28
+     * @param array $templatePaths List of file system paths where the templates are stored
29
+     * @param string|null $name Client name (default: "Standard")
30
+     * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
31
+     * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
32
+     */
33
+    public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
34
+    {
35
+        /** client/html/basket/related/name
36
+         * Class name of the used basket related client implementation
37
+         *
38
+         * Each default HTML client can be replace by an alternative imlementation.
39
+         * To use this implementation, you have to set the last part of the class
40
+         * name as configuration value so the client factory knows which class it
41
+         * has to instantiate.
42
+         *
43
+         * For example, if the name of the default class is
44
+         *
45
+         *  \Aimeos\Client\Html\Basket\Related\Standard
46
+         *
47
+         * and you want to replace it with your own version named
48
+         *
49
+         *  \Aimeos\Client\Html\Basket\Related\Mybasket
50
+         *
51
+         * then you have to set the this configuration option:
52
+         *
53
+         *  client/html/basket/related/name = Mybasket
54
+         *
55
+         * The value is the last part of your own class name and it's case sensitive,
56
+         * so take care that the configuration value is exactly named like the last
57
+         * part of the class name.
58
+         *
59
+         * The allowed characters of the class name are A-Z, a-z and 0-9. No other
60
+         * characters are possible! You should always start the last part of the class
61
+         * name with an upper case character and continue only with lower case characters
62
+         * or numbers. Avoid chamel case names like "MyBasket"!
63
+         *
64
+         * @param string Last part of the class name
65
+         * @since 2014.03
66
+         * @category Developer
67
+         */
68
+        if( $name === null ) {
69
+            $name = $context->getConfig()->get( 'client/html/basket/related/name', 'Standard' );
70
+        }
71 71
 
72
-		if( ctype_alnum( $name ) === false )
73
-		{
74
-			$classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Related\\' . $name : '<not a string>';
75
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
76
-		}
72
+        if( ctype_alnum( $name ) === false )
73
+        {
74
+            $classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Related\\' . $name : '<not a string>';
75
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
76
+        }
77 77
 
78
-		$iface = '\\Aimeos\\Client\\Html\\Iface';
79
-		$classname = '\\Aimeos\\Client\\Html\\Basket\\Related\\' . $name;
78
+        $iface = '\\Aimeos\\Client\\Html\\Iface';
79
+        $classname = '\\Aimeos\\Client\\Html\\Basket\\Related\\' . $name;
80 80
 
81
-		$client = self::createClientBase( $context, $classname, $iface, $templatePaths );
81
+        $client = self::createClientBase( $context, $classname, $iface, $templatePaths );
82 82
 
83
-		return self::addClientDecorators( $context, $client, $templatePaths, 'basket/related' );
84
-	}
83
+        return self::addClientDecorators( $context, $client, $templatePaths, 'basket/related' );
84
+    }
85 85
 }
86 86
 
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Related/Standard.php 1 patch
Indentation   +272 added lines, -272 removed lines patch added patch discarded remove patch
@@ -18,302 +18,302 @@
 block discarded – undo
18 18
  * @subpackage Html
19 19
  */
20 20
 class Standard
21
-	extends \Aimeos\Client\Html\Basket\Base
22
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
21
+    extends \Aimeos\Client\Html\Basket\Base
22
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
23 23
 {
24
-	/** client/html/basket/related/standard/subparts
25
-	 * List of HTML sub-clients rendered within the basket related section
26
-	 *
27
-	 * The output of the frontend is composed of the code generated by the HTML
28
-	 * clients. Each HTML client can consist of serveral (or none) sub-clients
29
-	 * that are responsible for rendering certain sub-parts of the output. The
30
-	 * sub-clients can contain HTML clients themselves and therefore a
31
-	 * hierarchical tree of HTML clients is composed. Each HTML client creates
32
-	 * the output that is placed inside the container of its parent.
33
-	 *
34
-	 * At first, always the HTML code generated by the parent is printed, then
35
-	 * the HTML code of its sub-clients. The order of the HTML sub-clients
36
-	 * determines the order of the output of these sub-clients inside the parent
37
-	 * container. If the configured list of clients is
38
-	 *
39
-	 *  array( "subclient1", "subclient2" )
40
-	 *
41
-	 * you can easily change the order of the output by reordering the subparts:
42
-	 *
43
-	 *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
44
-	 *
45
-	 * You can also remove one or more parts if they shouldn't be rendered:
46
-	 *
47
-	 *  client/html/<clients>/subparts = array( "subclient1" )
48
-	 *
49
-	 * As the clients only generates structural HTML, the layout defined via CSS
50
-	 * should support adding, removing or reordering content by a fluid like
51
-	 * design.
52
-	 *
53
-	 * @param array List of sub-client names
54
-	 * @since 2014.03
55
-	 * @category Developer
56
-	 */
57
-	private $subPartPath = 'client/html/basket/related/standard/subparts';
24
+    /** client/html/basket/related/standard/subparts
25
+     * List of HTML sub-clients rendered within the basket related section
26
+     *
27
+     * The output of the frontend is composed of the code generated by the HTML
28
+     * clients. Each HTML client can consist of serveral (or none) sub-clients
29
+     * that are responsible for rendering certain sub-parts of the output. The
30
+     * sub-clients can contain HTML clients themselves and therefore a
31
+     * hierarchical tree of HTML clients is composed. Each HTML client creates
32
+     * the output that is placed inside the container of its parent.
33
+     *
34
+     * At first, always the HTML code generated by the parent is printed, then
35
+     * the HTML code of its sub-clients. The order of the HTML sub-clients
36
+     * determines the order of the output of these sub-clients inside the parent
37
+     * container. If the configured list of clients is
38
+     *
39
+     *  array( "subclient1", "subclient2" )
40
+     *
41
+     * you can easily change the order of the output by reordering the subparts:
42
+     *
43
+     *  client/html/<clients>/subparts = array( "subclient1", "subclient2" )
44
+     *
45
+     * You can also remove one or more parts if they shouldn't be rendered:
46
+     *
47
+     *  client/html/<clients>/subparts = array( "subclient1" )
48
+     *
49
+     * As the clients only generates structural HTML, the layout defined via CSS
50
+     * should support adding, removing or reordering content by a fluid like
51
+     * design.
52
+     *
53
+     * @param array List of sub-client names
54
+     * @since 2014.03
55
+     * @category Developer
56
+     */
57
+    private $subPartPath = 'client/html/basket/related/standard/subparts';
58 58
 
59
-	/** client/html/basket/related/bought/name
60
-	 * Name of the bought together part used by the basket related client implementation
61
-	 *
62
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Related\Bought\Myname".
63
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
64
-	 *
65
-	 * @param string Last part of the client class name
66
-	 * @since 2014.09
67
-	 * @category Developer
68
-	 */
69
-	private $subPartNames = array( 'bought' );
70
-	private $cache;
59
+    /** client/html/basket/related/bought/name
60
+     * Name of the bought together part used by the basket related client implementation
61
+     *
62
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Related\Bought\Myname".
63
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
64
+     *
65
+     * @param string Last part of the client class name
66
+     * @since 2014.09
67
+     * @category Developer
68
+     */
69
+    private $subPartNames = array( 'bought' );
70
+    private $cache;
71 71
 
72 72
 
73
-	/**
74
-	 * Returns the HTML code for insertion into the body.
75
-	 *
76
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
77
-	 * @param array &$tags Result array for the list of tags that are associated to the output
78
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
79
-	 * @return string HTML code
80
-	 */
81
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
82
-	{
83
-		$context = $this->getContext();
84
-		$view = $this->getView();
73
+    /**
74
+     * Returns the HTML code for insertion into the body.
75
+     *
76
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
77
+     * @param array &$tags Result array for the list of tags that are associated to the output
78
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
79
+     * @return string HTML code
80
+     */
81
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
82
+    {
83
+        $context = $this->getContext();
84
+        $view = $this->getView();
85 85
 
86
-		try
87
-		{
88
-			$view = $this->setViewParams( $view, $tags, $expire );
86
+        try
87
+        {
88
+            $view = $this->setViewParams( $view, $tags, $expire );
89 89
 
90
-			$html = '';
91
-			foreach( $this->getSubClients() as $subclient ) {
92
-				$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
93
-			}
94
-			$view->relatedBody = $html;
95
-		}
96
-		catch( \Aimeos\Client\Html\Exception $e )
97
-		{
98
-			$error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
99
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
100
-		}
101
-		catch( \Aimeos\Controller\Frontend\Exception $e )
102
-		{
103
-			$error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
104
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
105
-		}
106
-		catch( \Aimeos\MShop\Exception $e )
107
-		{
108
-			$error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
109
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
110
-		}
111
-		catch( \Exception $e )
112
-		{
113
-			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
90
+            $html = '';
91
+            foreach( $this->getSubClients() as $subclient ) {
92
+                $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
93
+            }
94
+            $view->relatedBody = $html;
95
+        }
96
+        catch( \Aimeos\Client\Html\Exception $e )
97
+        {
98
+            $error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
99
+            $view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
100
+        }
101
+        catch( \Aimeos\Controller\Frontend\Exception $e )
102
+        {
103
+            $error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
104
+            $view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
105
+        }
106
+        catch( \Aimeos\MShop\Exception $e )
107
+        {
108
+            $error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
109
+            $view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
110
+        }
111
+        catch( \Exception $e )
112
+        {
113
+            $context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
114 114
 
115
-			$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
116
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
117
-		}
115
+            $error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
116
+            $view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
117
+        }
118 118
 
119
-		/** client/html/basket/related/standard/template-body
120
-		 * Relative path to the HTML body template of the basket related client.
121
-		 *
122
-		 * The template file contains the HTML code and processing instructions
123
-		 * to generate the result shown in the body of the frontend. The
124
-		 * configuration string is the path to the template file relative
125
-		 * to the templates directory (usually in client/html/templates).
126
-		 *
127
-		 * You can overwrite the template file configuration in extensions and
128
-		 * provide alternative templates. These alternative templates should be
129
-		 * named like the default one but with the string "standard" replaced by
130
-		 * an unique name. You may use the name of your project for this. If
131
-		 * you've implemented an alternative client class as well, "standard"
132
-		 * should be replaced by the name of the new class.
133
-		 *
134
-		 * @param string Relative path to the template creating code for the HTML page body
135
-		 * @since 2014.03
136
-		 * @category Developer
137
-		 * @see client/html/basket/related/standard/template-header
138
-		 */
139
-		$tplconf = 'client/html/basket/related/standard/template-body';
140
-		$default = 'basket/related/body-default.php';
119
+        /** client/html/basket/related/standard/template-body
120
+         * Relative path to the HTML body template of the basket related client.
121
+         *
122
+         * The template file contains the HTML code and processing instructions
123
+         * to generate the result shown in the body of the frontend. The
124
+         * configuration string is the path to the template file relative
125
+         * to the templates directory (usually in client/html/templates).
126
+         *
127
+         * You can overwrite the template file configuration in extensions and
128
+         * provide alternative templates. These alternative templates should be
129
+         * named like the default one but with the string "standard" replaced by
130
+         * an unique name. You may use the name of your project for this. If
131
+         * you've implemented an alternative client class as well, "standard"
132
+         * should be replaced by the name of the new class.
133
+         *
134
+         * @param string Relative path to the template creating code for the HTML page body
135
+         * @since 2014.03
136
+         * @category Developer
137
+         * @see client/html/basket/related/standard/template-header
138
+         */
139
+        $tplconf = 'client/html/basket/related/standard/template-body';
140
+        $default = 'basket/related/body-default.php';
141 141
 
142
-		return $view->render( $view->config( $tplconf, $default ) );
143
-	}
142
+        return $view->render( $view->config( $tplconf, $default ) );
143
+    }
144 144
 
145 145
 
146
-	/**
147
-	 * Returns the HTML string for insertion into the header.
148
-	 *
149
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
150
-	 * @param array &$tags Result array for the list of tags that are associated to the output
151
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
152
-	 * @return string|null String including HTML tags for the header on error
153
-	 */
154
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
155
-	{
156
-		try
157
-		{
158
-			$view = $this->setViewParams( $this->getView(), $tags, $expire );
146
+    /**
147
+     * Returns the HTML string for insertion into the header.
148
+     *
149
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
150
+     * @param array &$tags Result array for the list of tags that are associated to the output
151
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
152
+     * @return string|null String including HTML tags for the header on error
153
+     */
154
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
155
+    {
156
+        try
157
+        {
158
+            $view = $this->setViewParams( $this->getView(), $tags, $expire );
159 159
 
160
-			$html = '';
161
-			foreach( $this->getSubClients() as $subclient ) {
162
-				$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
163
-			}
164
-			$view->relatedHeader = $html;
165
-		}
166
-		catch( \Exception $e )
167
-		{
168
-			$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
169
-			return '';
170
-		}
160
+            $html = '';
161
+            foreach( $this->getSubClients() as $subclient ) {
162
+                $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
163
+            }
164
+            $view->relatedHeader = $html;
165
+        }
166
+        catch( \Exception $e )
167
+        {
168
+            $this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
169
+            return '';
170
+        }
171 171
 
172
-		/** client/html/basket/related/standard/template-header
173
-		 * Relative path to the HTML header template of the basket related client.
174
-		 *
175
-		 * The template file contains the HTML code and processing instructions
176
-		 * to generate the HTML code that is inserted into the HTML page header
177
-		 * of the rendered page in the frontend. The configuration string is the
178
-		 * path to the template file relative to the templates directory (usually
179
-		 * in client/html/templates).
180
-		 *
181
-		 * You can overwrite the template file configuration in extensions and
182
-		 * provide alternative templates. These alternative templates should be
183
-		 * named like the default one but with the string "standard" replaced by
184
-		 * an unique name. You may use the name of your project for this. If
185
-		 * you've implemented an alternative client class as well, "standard"
186
-		 * should be replaced by the name of the new class.
187
-		 *
188
-		 * @param string Relative path to the template creating code for the HTML page head
189
-		 * @since 2014.03
190
-		 * @category Developer
191
-		 * @see client/html/basket/related/standard/template-body
192
-		 */
193
-		$tplconf = 'client/html/basket/related/standard/template-header';
194
-		$default = 'basket/related/header-default.php';
172
+        /** client/html/basket/related/standard/template-header
173
+         * Relative path to the HTML header template of the basket related client.
174
+         *
175
+         * The template file contains the HTML code and processing instructions
176
+         * to generate the HTML code that is inserted into the HTML page header
177
+         * of the rendered page in the frontend. The configuration string is the
178
+         * path to the template file relative to the templates directory (usually
179
+         * in client/html/templates).
180
+         *
181
+         * You can overwrite the template file configuration in extensions and
182
+         * provide alternative templates. These alternative templates should be
183
+         * named like the default one but with the string "standard" replaced by
184
+         * an unique name. You may use the name of your project for this. If
185
+         * you've implemented an alternative client class as well, "standard"
186
+         * should be replaced by the name of the new class.
187
+         *
188
+         * @param string Relative path to the template creating code for the HTML page head
189
+         * @since 2014.03
190
+         * @category Developer
191
+         * @see client/html/basket/related/standard/template-body
192
+         */
193
+        $tplconf = 'client/html/basket/related/standard/template-header';
194
+        $default = 'basket/related/header-default.php';
195 195
 
196
-		return $view->render( $view->config( $tplconf, $default ) );
197
-	}
196
+        return $view->render( $view->config( $tplconf, $default ) );
197
+    }
198 198
 
199 199
 
200
-	/**
201
-	 * Returns the sub-client given by its name.
202
-	 *
203
-	 * @param string $type Name of the client type
204
-	 * @param string|null $name Name of the sub-client (Default if null)
205
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
206
-	 */
207
-	public function getSubClient( $type, $name = null )
208
-	{
209
-		/** client/html/basket/related/decorators/excludes
210
-		 * Excludes decorators added by the "common" option from the basket related html client
211
-		 *
212
-		 * Decorators extend the functionality of a class by adding new aspects
213
-		 * (e.g. log what is currently done), executing the methods of the underlying
214
-		 * class only in certain conditions (e.g. only for logged in users) or
215
-		 * modify what is returned to the caller.
216
-		 *
217
-		 * This option allows you to remove a decorator added via
218
-		 * "client/html/common/decorators/default" before they are wrapped
219
-		 * around the html client.
220
-		 *
221
-		 *  client/html/basket/related/decorators/excludes = array( 'decorator1' )
222
-		 *
223
-		 * This would remove the decorator named "decorator1" from the list of
224
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
225
-		 * "client/html/common/decorators/default" to the html client.
226
-		 *
227
-		 * @param array List of decorator names
228
-		 * @since 2014.05
229
-		 * @category Developer
230
-		 * @see client/html/common/decorators/default
231
-		 * @see client/html/basket/related/decorators/global
232
-		 * @see client/html/basket/related/decorators/local
233
-		 */
200
+    /**
201
+     * Returns the sub-client given by its name.
202
+     *
203
+     * @param string $type Name of the client type
204
+     * @param string|null $name Name of the sub-client (Default if null)
205
+     * @return \Aimeos\Client\Html\Iface Sub-client object
206
+     */
207
+    public function getSubClient( $type, $name = null )
208
+    {
209
+        /** client/html/basket/related/decorators/excludes
210
+         * Excludes decorators added by the "common" option from the basket related html client
211
+         *
212
+         * Decorators extend the functionality of a class by adding new aspects
213
+         * (e.g. log what is currently done), executing the methods of the underlying
214
+         * class only in certain conditions (e.g. only for logged in users) or
215
+         * modify what is returned to the caller.
216
+         *
217
+         * This option allows you to remove a decorator added via
218
+         * "client/html/common/decorators/default" before they are wrapped
219
+         * around the html client.
220
+         *
221
+         *  client/html/basket/related/decorators/excludes = array( 'decorator1' )
222
+         *
223
+         * This would remove the decorator named "decorator1" from the list of
224
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
225
+         * "client/html/common/decorators/default" to the html client.
226
+         *
227
+         * @param array List of decorator names
228
+         * @since 2014.05
229
+         * @category Developer
230
+         * @see client/html/common/decorators/default
231
+         * @see client/html/basket/related/decorators/global
232
+         * @see client/html/basket/related/decorators/local
233
+         */
234 234
 
235
-		/** client/html/basket/related/decorators/global
236
-		 * Adds a list of globally available decorators only to the basket related html client
237
-		 *
238
-		 * Decorators extend the functionality of a class by adding new aspects
239
-		 * (e.g. log what is currently done), executing the methods of the underlying
240
-		 * class only in certain conditions (e.g. only for logged in users) or
241
-		 * modify what is returned to the caller.
242
-		 *
243
-		 * This option allows you to wrap global decorators
244
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
245
-		 *
246
-		 *  client/html/basket/related/decorators/global = array( 'decorator1' )
247
-		 *
248
-		 * This would add the decorator named "decorator1" defined by
249
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
250
-		 *
251
-		 * @param array List of decorator names
252
-		 * @since 2014.05
253
-		 * @category Developer
254
-		 * @see client/html/common/decorators/default
255
-		 * @see client/html/basket/related/decorators/excludes
256
-		 * @see client/html/basket/related/decorators/local
257
-		 */
235
+        /** client/html/basket/related/decorators/global
236
+         * Adds a list of globally available decorators only to the basket related html client
237
+         *
238
+         * Decorators extend the functionality of a class by adding new aspects
239
+         * (e.g. log what is currently done), executing the methods of the underlying
240
+         * class only in certain conditions (e.g. only for logged in users) or
241
+         * modify what is returned to the caller.
242
+         *
243
+         * This option allows you to wrap global decorators
244
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
245
+         *
246
+         *  client/html/basket/related/decorators/global = array( 'decorator1' )
247
+         *
248
+         * This would add the decorator named "decorator1" defined by
249
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
250
+         *
251
+         * @param array List of decorator names
252
+         * @since 2014.05
253
+         * @category Developer
254
+         * @see client/html/common/decorators/default
255
+         * @see client/html/basket/related/decorators/excludes
256
+         * @see client/html/basket/related/decorators/local
257
+         */
258 258
 
259
-		/** client/html/basket/related/decorators/local
260
-		 * Adds a list of local decorators only to the basket related html client
261
-		 *
262
-		 * Decorators extend the functionality of a class by adding new aspects
263
-		 * (e.g. log what is currently done), executing the methods of the underlying
264
-		 * class only in certain conditions (e.g. only for logged in users) or
265
-		 * modify what is returned to the caller.
266
-		 *
267
-		 * This option allows you to wrap local decorators
268
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
269
-		 *
270
-		 *  client/html/basket/related/decorators/local = array( 'decorator2' )
271
-		 *
272
-		 * This would add the decorator named "decorator2" defined by
273
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
274
-		 *
275
-		 * @param array List of decorator names
276
-		 * @since 2014.05
277
-		 * @category Developer
278
-		 * @see client/html/common/decorators/default
279
-		 * @see client/html/basket/related/decorators/excludes
280
-		 * @see client/html/basket/related/decorators/global
281
-		 */
259
+        /** client/html/basket/related/decorators/local
260
+         * Adds a list of local decorators only to the basket related html client
261
+         *
262
+         * Decorators extend the functionality of a class by adding new aspects
263
+         * (e.g. log what is currently done), executing the methods of the underlying
264
+         * class only in certain conditions (e.g. only for logged in users) or
265
+         * modify what is returned to the caller.
266
+         *
267
+         * This option allows you to wrap local decorators
268
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
269
+         *
270
+         *  client/html/basket/related/decorators/local = array( 'decorator2' )
271
+         *
272
+         * This would add the decorator named "decorator2" defined by
273
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
274
+         *
275
+         * @param array List of decorator names
276
+         * @since 2014.05
277
+         * @category Developer
278
+         * @see client/html/common/decorators/default
279
+         * @see client/html/basket/related/decorators/excludes
280
+         * @see client/html/basket/related/decorators/global
281
+         */
282 282
 
283
-		return $this->createSubClient( 'basket/related/' . $type, $name );
284
-	}
283
+        return $this->createSubClient( 'basket/related/' . $type, $name );
284
+    }
285 285
 
286 286
 
287
-	/**
288
-	 * Returns the list of sub-client names configured for the client.
289
-	 *
290
-	 * @return array List of HTML client names
291
-	 */
292
-	protected function getSubClientNames()
293
-	{
294
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
295
-	}
287
+    /**
288
+     * Returns the list of sub-client names configured for the client.
289
+     *
290
+     * @return array List of HTML client names
291
+     */
292
+    protected function getSubClientNames()
293
+    {
294
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
295
+    }
296 296
 
297 297
 
298
-	/**
299
-	 * Sets the necessary parameter values in the view.
300
-	 *
301
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
302
-	 * @param array &$tags Result array for the list of tags that are associated to the output
303
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
304
-	 * @return \Aimeos\MW\View\Iface Modified view object
305
-	 */
306
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
307
-	{
308
-		if( !isset( $this->cache ) )
309
-		{
310
-			$context = $this->getContext();
298
+    /**
299
+     * Sets the necessary parameter values in the view.
300
+     *
301
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
302
+     * @param array &$tags Result array for the list of tags that are associated to the output
303
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
304
+     * @return \Aimeos\MW\View\Iface Modified view object
305
+     */
306
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
307
+    {
308
+        if( !isset( $this->cache ) )
309
+        {
310
+            $context = $this->getContext();
311 311
 
312
-			$view->relatedBasket = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' )->get();
312
+            $view->relatedBasket = \Aimeos\Controller\Frontend\Factory::createController( $context, 'basket' )->get();
313 313
 
314
-			$this->cache = $view;
315
-		}
314
+            $this->cache = $view;
315
+        }
316 316
 
317
-		return $this->cache;
318
-	}
317
+        return $this->cache;
318
+    }
319 319
 }
320 320
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Mini/Factory.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -19,69 +19,69 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Factory
22
-	extends \Aimeos\Client\Html\Common\Factory\Base
23
-	implements \Aimeos\Client\Html\Common\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Factory\Base
23
+    implements \Aimeos\Client\Html\Common\Factory\Iface
24 24
 {
25
-	/**
26
-	 * Creates a mini basket client object.
27
-	 *
28
-	 * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
29
-	 * @param array $templatePaths List of file system paths where the templates are stored
30
-	 * @param string|null $name Client name (default: "Standard")
31
-	 * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32
-	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33
-	 */
34
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
35
-	{
36
-		/** client/html/basket/mini/name
37
-		 * Class name of the used basket mini client implementation
38
-		 *
39
-		 * Each default HTML client can be replace by an alternative imlementation.
40
-		 * To use this implementation, you have to set the last part of the class
41
-		 * name as configuration value so the client factory knows which class it
42
-		 * has to instantiate.
43
-		 *
44
-		 * For example, if the name of the default class is
45
-		 *
46
-		 *  \Aimeos\Client\Html\Basket\Mini\Standard
47
-		 *
48
-		 * and you want to replace it with your own version named
49
-		 *
50
-		 *  \Aimeos\Client\Html\Basket\Mini\Mybasket
51
-		 *
52
-		 * then you have to set the this configuration option:
53
-		 *
54
-		 *  client/html/basket/mini/name = Mybasket
55
-		 *
56
-		 * The value is the last part of your own class name and it's case sensitive,
57
-		 * so take care that the configuration value is exactly named like the last
58
-		 * part of the class name.
59
-		 *
60
-		 * The allowed characters of the class name are A-Z, a-z and 0-9. No other
61
-		 * characters are possible! You should always start the last part of the class
62
-		 * name with an upper case character and continue only with lower case characters
63
-		 * or numbers. Avoid chamel case names like "MyBasket"!
64
-		 *
65
-		 * @param string Last part of the class name
66
-		 * @since 2014.03
67
-		 * @category Developer
68
-		 */
69
-		if( $name === null ) {
70
-			$name = $context->getConfig()->get( 'client/html/basket/mini/name', 'Standard' );
71
-		}
25
+    /**
26
+     * Creates a mini basket client object.
27
+     *
28
+     * @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
29
+     * @param array $templatePaths List of file system paths where the templates are stored
30
+     * @param string|null $name Client name (default: "Standard")
31
+     * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32
+     * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33
+     */
34
+    public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
35
+    {
36
+        /** client/html/basket/mini/name
37
+         * Class name of the used basket mini client implementation
38
+         *
39
+         * Each default HTML client can be replace by an alternative imlementation.
40
+         * To use this implementation, you have to set the last part of the class
41
+         * name as configuration value so the client factory knows which class it
42
+         * has to instantiate.
43
+         *
44
+         * For example, if the name of the default class is
45
+         *
46
+         *  \Aimeos\Client\Html\Basket\Mini\Standard
47
+         *
48
+         * and you want to replace it with your own version named
49
+         *
50
+         *  \Aimeos\Client\Html\Basket\Mini\Mybasket
51
+         *
52
+         * then you have to set the this configuration option:
53
+         *
54
+         *  client/html/basket/mini/name = Mybasket
55
+         *
56
+         * The value is the last part of your own class name and it's case sensitive,
57
+         * so take care that the configuration value is exactly named like the last
58
+         * part of the class name.
59
+         *
60
+         * The allowed characters of the class name are A-Z, a-z and 0-9. No other
61
+         * characters are possible! You should always start the last part of the class
62
+         * name with an upper case character and continue only with lower case characters
63
+         * or numbers. Avoid chamel case names like "MyBasket"!
64
+         *
65
+         * @param string Last part of the class name
66
+         * @since 2014.03
67
+         * @category Developer
68
+         */
69
+        if( $name === null ) {
70
+            $name = $context->getConfig()->get( 'client/html/basket/mini/name', 'Standard' );
71
+        }
72 72
 
73
-		if( ctype_alnum( $name ) === false )
74
-		{
75
-			$classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Mini\\' . $name : '<not a string>';
76
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
77
-		}
73
+        if( ctype_alnum( $name ) === false )
74
+        {
75
+            $classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Basket\\Mini\\' . $name : '<not a string>';
76
+            throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
77
+        }
78 78
 
79
-		$iface = '\\Aimeos\\Client\\Html\\Iface';
80
-		$classname = '\\Aimeos\\Client\\Html\\Basket\\Mini\\' . $name;
79
+        $iface = '\\Aimeos\\Client\\Html\\Iface';
80
+        $classname = '\\Aimeos\\Client\\Html\\Basket\\Mini\\' . $name;
81 81
 
82
-		$client = self::createClientBase( $context, $classname, $iface, $templatePaths );
82
+        $client = self::createClientBase( $context, $classname, $iface, $templatePaths );
83 83
 
84
-		return self::addClientDecorators( $context, $client, $templatePaths, 'basket/mini' );
85
-	}
84
+        return self::addClientDecorators( $context, $client, $templatePaths, 'basket/mini' );
85
+    }
86 86
 
87 87
 }
88 88
\ No newline at end of file
Please login to merge, or discard this patch.