Completed
Push — master ( ea7c09...15cf0d )
by Aimeos
06:26
created
client/html/src/Client/Html/Basket/Related/Standard.php 4 patches
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.
Spacing   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
 	 * @since 2014.09
67 67
 	 * @category Developer
68 68
 	 */
69
-	private $subPartNames = array( 'bought' );
69
+	private $subPartNames = array('bought');
70 70
 	private $cache;
71 71
 
72 72
 
@@ -78,42 +78,42 @@  discard block
 block discarded – undo
78 78
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
79 79
 	 * @return string HTML code
80 80
 	 */
81
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
81
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
82 82
 	{
83 83
 		$context = $this->getContext();
84 84
 		$view = $this->getView();
85 85
 
86 86
 		try
87 87
 		{
88
-			$view = $this->setViewParams( $view, $tags, $expire );
88
+			$view = $this->setViewParams($view, $tags, $expire);
89 89
 
90 90
 			$html = '';
91
-			foreach( $this->getSubClients() as $subclient ) {
92
-				$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
91
+			foreach ($this->getSubClients() as $subclient) {
92
+				$html .= $subclient->setView($view)->getBody($uid, $tags, $expire);
93 93
 			}
94 94
 			$view->relatedBody = $html;
95 95
 		}
96
-		catch( \Aimeos\Client\Html\Exception $e )
96
+		catch (\Aimeos\Client\Html\Exception $e)
97 97
 		{
98
-			$error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
99
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
98
+			$error = array($this->getContext()->getI18n()->dt('client', $e->getMessage()));
99
+			$view->relatedErrorList = $view->get('relatedErrorList', array()) + $error;
100 100
 		}
101
-		catch( \Aimeos\Controller\Frontend\Exception $e )
101
+		catch (\Aimeos\Controller\Frontend\Exception $e)
102 102
 		{
103
-			$error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
104
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
103
+			$error = array($this->getContext()->getI18n()->dt('controller/frontend', $e->getMessage()));
104
+			$view->relatedErrorList = $view->get('relatedErrorList', array()) + $error;
105 105
 		}
106
-		catch( \Aimeos\MShop\Exception $e )
106
+		catch (\Aimeos\MShop\Exception $e)
107 107
 		{
108
-			$error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
109
-			$view->relatedErrorList = $view->get( 'relatedErrorList', array() ) + $error;
108
+			$error = array($this->getContext()->getI18n()->dt('mshop', $e->getMessage()));
109
+			$view->relatedErrorList = $view->get('relatedErrorList', array()) + $error;
110 110
 		}
111
-		catch( \Exception $e )
111
+		catch (\Exception $e)
112 112
 		{
113
-			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
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;
115
+			$error = array($context->getI18n()->dt('client', 'A non-recoverable error occured'));
116
+			$view->relatedErrorList = $view->get('relatedErrorList', array()) + $error;
117 117
 		}
118 118
 
119 119
 		/** client/html/basket/related/standard/template-body
@@ -139,7 +139,7 @@  discard block
 block discarded – undo
139 139
 		$tplconf = 'client/html/basket/related/standard/template-body';
140 140
 		$default = 'basket/related/body-default.php';
141 141
 
142
-		return $view->render( $view->config( $tplconf, $default ) );
142
+		return $view->render($view->config($tplconf, $default));
143 143
 	}
144 144
 
145 145
 
@@ -151,21 +151,21 @@  discard block
 block discarded – undo
151 151
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
152 152
 	 * @return string|null String including HTML tags for the header on error
153 153
 	 */
154
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
154
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
155 155
 	{
156 156
 		try
157 157
 		{
158
-			$view = $this->setViewParams( $this->getView(), $tags, $expire );
158
+			$view = $this->setViewParams($this->getView(), $tags, $expire);
159 159
 
160 160
 			$html = '';
161
-			foreach( $this->getSubClients() as $subclient ) {
162
-				$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
161
+			foreach ($this->getSubClients() as $subclient) {
162
+				$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
163 163
 			}
164 164
 			$view->relatedHeader = $html;
165 165
 		}
166
-		catch( \Exception $e )
166
+		catch (\Exception $e)
167 167
 		{
168
-			$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
168
+			$this->getContext()->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
169 169
 			return '';
170 170
 		}
171 171
 
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 		$tplconf = 'client/html/basket/related/standard/template-header';
194 194
 		$default = 'basket/related/header-default.php';
195 195
 
196
-		return $view->render( $view->config( $tplconf, $default ) );
196
+		return $view->render($view->config($tplconf, $default));
197 197
 	}
198 198
 
199 199
 
@@ -204,7 +204,7 @@  discard block
 block discarded – undo
204 204
 	 * @param string|null $name Name of the sub-client (Default if null)
205 205
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
206 206
 	 */
207
-	public function getSubClient( $type, $name = null )
207
+	public function getSubClient($type, $name = null)
208 208
 	{
209 209
 		/** client/html/basket/related/decorators/excludes
210 210
 		 * Excludes decorators added by the "common" option from the basket related html client
@@ -280,7 +280,7 @@  discard block
 block discarded – undo
280 280
 		 * @see client/html/basket/related/decorators/global
281 281
 		 */
282 282
 
283
-		return $this->createSubClient( 'basket/related/' . $type, $name );
283
+		return $this->createSubClient('basket/related/'.$type, $name);
284 284
 	}
285 285
 
286 286
 
@@ -291,7 +291,7 @@  discard block
 block discarded – undo
291 291
 	 */
292 292
 	protected function getSubClientNames()
293 293
 	{
294
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
294
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
295 295
 	}
296 296
 
297 297
 
@@ -303,13 +303,13 @@  discard block
 block discarded – undo
303 303
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
304 304
 	 * @return \Aimeos\MW\View\Iface Modified view object
305 305
 	 */
306
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
306
+	protected function setViewParams(\Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null)
307 307
 	{
308
-		if( !isset( $this->cache ) )
308
+		if (!isset($this->cache))
309 309
 		{
310 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 314
 			$this->cache = $view;
315 315
 		}
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@
 block discarded – undo
110 110
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111 111
 	 * @param array &$tags Result array for the list of tags that are associated to the output
112 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
113
+	 * @return string String including HTML tags for the header on error
114 114
 	 */
115 115
 	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116 116
 	{
Please login to merge, or discard this patch.
Braces   +5 added lines, -10 removed lines patch added patch discarded remove patch
@@ -82,23 +82,19 @@  discard block
 block discarded – undo
82 82
 				$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
83 83
 			}
84 84
 			$view->watchBody = $html;
85
-		}
86
-		catch( \Aimeos\Client\Html\Exception $e )
85
+		} catch( \Aimeos\Client\Html\Exception $e )
87 86
 		{
88 87
 			$error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
89 88
 			$view->watchErrorList = $view->get( 'watchErrorList', array() ) + $error;
90
-		}
91
-		catch( \Aimeos\Controller\Frontend\Exception $e )
89
+		} catch( \Aimeos\Controller\Frontend\Exception $e )
92 90
 		{
93 91
 			$error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
94 92
 			$view->watchErrorList = $view->get( 'watchErrorList', array() ) + $error;
95
-		}
96
-		catch( \Aimeos\MShop\Exception $e )
93
+		} catch( \Aimeos\MShop\Exception $e )
97 94
 		{
98 95
 			$error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
99 96
 			$view->watchErrorList = $view->get( 'watchErrorList', array() ) + $error;
100
-		}
101
-		catch( \Exception $e )
97
+		} catch( \Exception $e )
102 98
 		{
103 99
 			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
104 100
 
@@ -178,8 +174,7 @@  discard block
 block discarded – undo
178 174
 			$default = 'account/watch/header-default.php';
179 175
 
180 176
 			return $view->render( $view->config( $tplconf, $default ) );
181
-		}
182
-		catch( \Exception $e )
177
+		} catch( \Exception $e )
183 178
 		{
184 179
 			$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
185 180
 		}
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Mini/Product/Standard.php 3 patches
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -72,8 +72,8 @@  discard block
 block discarded – undo
72 72
 		$view = $this->setViewParams($this->getView(), $tags, $expire);
73 73
 
74 74
 		$html = '';
75
-		foreach( $this->getSubClients() as $subclient ) {
76
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
75
+		foreach ($this->getSubClients() as $subclient) {
76
+			$html .= $subclient->setView($view)->getBody($uid, $tags, $expire);
77 77
 		}
78 78
 		$view->productBody = $html;
79 79
 
@@ -100,7 +100,7 @@  discard block
 block discarded – undo
100 100
 		$tplconf = 'client/html/basket/mini/product/standard/template-body';
101 101
 		$default = 'basket/mini/product-body-default.php';
102 102
 
103
-		return $view->render( $view->config( $tplconf, $default ) );
103
+		return $view->render($view->config($tplconf, $default));
104 104
 	}
105 105
 
106 106
 
@@ -114,11 +114,11 @@  discard block
 block discarded – undo
114 114
 	 */
115 115
 	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
116 116
 	{
117
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
117
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
118 118
 
119 119
 		$html = '';
120
-		foreach( $this->getSubClients() as $subclient ) {
121
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
120
+		foreach ($this->getSubClients() as $subclient) {
121
+			$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
122 122
 		}
123 123
 		$view->productHeader = $html;
124 124
 
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
 		$tplconf = 'client/html/basket/mini/product/standard/template-header';
147 147
 		$default = 'basket/mini/product-header-default.php';
148 148
 
149
-		return $view->render( $view->config( $tplconf, $default ) );
149
+		return $view->render($view->config($tplconf, $default));
150 150
 	}
151 151
 
152 152
 
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 		 * @see client/html/basket/mini/product/decorators/global
234 234
 		 */
235 235
 
236
-		return $this->createSubClient( 'basket/mini/product/' . $type, $name );
236
+		return $this->createSubClient('basket/mini/product/'.$type, $name);
237 237
 	}
238 238
 
239 239
 
@@ -244,6 +244,6 @@  discard block
 block discarded – undo
244 244
 	 */
245 245
 	protected function getSubClientNames()
246 246
 	{
247
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
247
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
248 248
 	}
249 249
 }
250 250
\ No newline at end of file
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@
 block discarded – undo
110 110
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111 111
 	 * @param array &$tags Result array for the list of tags that are associated to the output
112 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
113
+	 * @return string String including HTML tags for the header on error
114 114
 	 */
115 115
 	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116 116
 	{
Please login to merge, or discard this patch.
Indentation   +225 added lines, -225 removed lines patch added patch discarded remove patch
@@ -19,230 +19,230 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Base
22
+    extends \Aimeos\Client\Html\Base
23 23
 {
24
-	/** client/html/basket/mini/product/standard/subparts
25
-	 * List of HTML sub-clients rendered within the basket mini product 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 2015.09
55
-	 * @category Developer
56
-	 */
57
-	private $subPartPath = 'client/html/basket/mini/product/standard/subparts';
58
-	private $subPartNames = array();
59
-
60
-
61
-	/**
62
-	 * Returns the HTML code for insertion into the body.
63
-	 *
64
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
65
-	 * @param array &$tags Result array for the list of tags that are associated to the output
66
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
67
-	 * @return string HTML code
68
-	 */
69
-	public function getBody($uid = '', array &$tags = array(), &$expire = null)
70
-	{
71
-		$view = $this->setViewParams($this->getView(), $tags, $expire);
72
-
73
-		$html = '';
74
-		foreach( $this->getSubClients() as $subclient ) {
75
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
76
-		}
77
-		$view->productBody = $html;
78
-
79
-		/** client/html/basket/mini/product/standard/template-body
80
-		 * Relative path to the HTML body template of the basket mini product client.
81
-		 *
82
-		 * The template file contains the HTML code and processing instructions
83
-		 * to generate the result shown in the body of the frontend. The
84
-		 * configuration string is the path to the template file relative
85
-		 * to the templates directory (usually in client/html/templates).
86
-		 *
87
-		 * You can overwrite the template file configuration in extensions and
88
-		 * provide alternative templates. These alternative templates should be
89
-		 * named like the default one but with the string "standard" replaced by
90
-		 * an unique name. You may use the name of your project for this. If
91
-		 * you've implemented an alternative client class as well, "standard"
92
-		 * should be replaced by the name of the new class.
93
-		 *
94
-		 * @param string Relative path to the template creating code for the HTML page body
95
-		 * @since 2015.09
96
-		 * @category Developer
97
-		 * @see client/html/basket/mini/product/standard/template-header
98
-		 */
99
-		$tplconf = 'client/html/basket/mini/product/standard/template-body';
100
-		$default = 'basket/mini/product-body-default.php';
101
-
102
-		return $view->render( $view->config( $tplconf, $default ) );
103
-	}
104
-
105
-
106
-	/**
107
-	 * Returns the HTML string for insertion into the header.
108
-	 *
109
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
110
-	 * @param array &$tags Result array for the list of tags that are associated to the output
111
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
112
-	 * @return string|null String including HTML tags for the header on error
113
-	 */
114
-	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
115
-	{
116
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
117
-
118
-		$html = '';
119
-		foreach( $this->getSubClients() as $subclient ) {
120
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
121
-		}
122
-		$view->productHeader = $html;
123
-
124
-		/** client/html/basket/mini/product/standard/template-header
125
-		 * Relative path to the HTML header template of the basket mini product client.
126
-		 *
127
-		 * The template file contains the HTML code and processing instructions
128
-		 * to generate the HTML code that is inserted into the HTML page header
129
-		 * of the rendered page in the frontend. The configuration string is the
130
-		 * path to the template file relative to the templates directory (usually
131
-		 * in client/html/templates).
132
-		 *
133
-		 * You can overwrite the template file configuration in extensions and
134
-		 * provide alternative templates. These alternative templates should be
135
-		 * named like the default one but with the string "standard" replaced by
136
-		 * an unique name. You may use the name of your project for this. If
137
-		 * you've implemented an alternative client class as well, "standard"
138
-		 * should be replaced by the name of the new class.
139
-		 *
140
-		 * @param string Relative path to the template creating code for the HTML page head
141
-		 * @since 2015.09
142
-		 * @category Developer
143
-		 * @see client/html/basket/mini/product/standard/template-body
144
-		 */
145
-		$tplconf = 'client/html/basket/mini/product/standard/template-header';
146
-		$default = 'basket/mini/product-header-default.php';
147
-
148
-		return $view->render( $view->config( $tplconf, $default ) );
149
-	}
150
-
151
-
152
-	/**
153
-	 * Returns the sub-client given by its name.
154
-	 *
155
-	 * @param string $type Name of the client type
156
-	 * @param string|null $name Name of the sub-client (Default if null)
157
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
158
-	 */
159
-	public function getSubClient($type, $name = null)
160
-	{
161
-		/** client/html/basket/mini/product/decorators/excludes
162
-		 * Excludes decorators added by the "common" option from the basket mini product html client
163
-		 *
164
-		 * Decorators extend the functionality of a class by adding new aspects
165
-		 * (e.g. log what is currently done), executing the methods of the underlying
166
-		 * class only in certain conditions (e.g. only for logged in users) or
167
-		 * modify what is returned to the caller.
168
-		 *
169
-		 * This option allows you to remove a decorator added via
170
-		 * "client/html/common/decorators/default" before they are wrapped
171
-		 * around the html client.
172
-		 *
173
-		 *  client/html/basket/mini/product/decorators/excludes = array( 'decorator1' )
174
-		 *
175
-		 * This would remove the decorator named "decorator1" from the list of
176
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
177
-		 * "client/html/common/decorators/default" to the html client.
178
-		 *
179
-		 * @param array List of decorator names
180
-		 * @since 2015.08
181
-		 * @category Developer
182
-		 * @see client/html/common/decorators/default
183
-		 * @see client/html/basket/mini/product/decorators/global
184
-		 * @see client/html/basket/mini/product/decorators/local
185
-		 */
186
-
187
-		/** client/html/basket/mini/product/decorators/global
188
-		 * Adds a list of globally available decorators only to the basket mini product html client
189
-		 *
190
-		 * Decorators extend the functionality of a class by adding new aspects
191
-		 * (e.g. log what is currently done), executing the methods of the underlying
192
-		 * class only in certain conditions (e.g. only for logged in users) or
193
-		 * modify what is returned to the caller.
194
-		 *
195
-		 * This option allows you to wrap global decorators
196
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
197
-		 *
198
-		 *  client/html/basket/mini/product/decorators/global = array( 'decorator1' )
199
-		 *
200
-		 * This would add the decorator named "decorator1" defined by
201
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
202
-		 *
203
-		 * @param array List of decorator names
204
-		 * @since 2015.08
205
-		 * @category Developer
206
-		 * @see client/html/common/decorators/default
207
-		 * @see client/html/basket/mini/product/decorators/excludes
208
-		 * @see client/html/basket/mini/product/decorators/local
209
-		 */
210
-
211
-		/** client/html/basket/mini/product/decorators/local
212
-		 * Adds a list of local decorators only to the basket mini product html client
213
-		 *
214
-		 * Decorators extend the functionality of a class by adding new aspects
215
-		 * (e.g. log what is currently done), executing the methods of the underlying
216
-		 * class only in certain conditions (e.g. only for logged in users) or
217
-		 * modify what is returned to the caller.
218
-		 *
219
-		 * This option allows you to wrap local decorators
220
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
221
-		 *
222
-		 *  client/html/basket/mini/product/decorators/local = array( 'decorator2' )
223
-		 *
224
-		 * This would add the decorator named "decorator2" defined by
225
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
226
-		 *
227
-		 * @param array List of decorator names
228
-		 * @since 2015.08
229
-		 * @category Developer
230
-		 * @see client/html/common/decorators/default
231
-		 * @see client/html/basket/mini/product/decorators/excludes
232
-		 * @see client/html/basket/mini/product/decorators/global
233
-		 */
234
-
235
-		return $this->createSubClient( 'basket/mini/product/' . $type, $name );
236
-	}
237
-
238
-
239
-	/**
240
-	 * Returns the list of sub-client names configured for the client.
241
-	 *
242
-	 * @return array List of HTML client names
243
-	 */
244
-	protected function getSubClientNames()
245
-	{
246
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
247
-	}
24
+    /** client/html/basket/mini/product/standard/subparts
25
+     * List of HTML sub-clients rendered within the basket mini product 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 2015.09
55
+     * @category Developer
56
+     */
57
+    private $subPartPath = 'client/html/basket/mini/product/standard/subparts';
58
+    private $subPartNames = array();
59
+
60
+
61
+    /**
62
+     * Returns the HTML code for insertion into the body.
63
+     *
64
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
65
+     * @param array &$tags Result array for the list of tags that are associated to the output
66
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
67
+     * @return string HTML code
68
+     */
69
+    public function getBody($uid = '', array &$tags = array(), &$expire = null)
70
+    {
71
+        $view = $this->setViewParams($this->getView(), $tags, $expire);
72
+
73
+        $html = '';
74
+        foreach( $this->getSubClients() as $subclient ) {
75
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
76
+        }
77
+        $view->productBody = $html;
78
+
79
+        /** client/html/basket/mini/product/standard/template-body
80
+         * Relative path to the HTML body template of the basket mini product client.
81
+         *
82
+         * The template file contains the HTML code and processing instructions
83
+         * to generate the result shown in the body of the frontend. The
84
+         * configuration string is the path to the template file relative
85
+         * to the templates directory (usually in client/html/templates).
86
+         *
87
+         * You can overwrite the template file configuration in extensions and
88
+         * provide alternative templates. These alternative templates should be
89
+         * named like the default one but with the string "standard" replaced by
90
+         * an unique name. You may use the name of your project for this. If
91
+         * you've implemented an alternative client class as well, "standard"
92
+         * should be replaced by the name of the new class.
93
+         *
94
+         * @param string Relative path to the template creating code for the HTML page body
95
+         * @since 2015.09
96
+         * @category Developer
97
+         * @see client/html/basket/mini/product/standard/template-header
98
+         */
99
+        $tplconf = 'client/html/basket/mini/product/standard/template-body';
100
+        $default = 'basket/mini/product-body-default.php';
101
+
102
+        return $view->render( $view->config( $tplconf, $default ) );
103
+    }
104
+
105
+
106
+    /**
107
+     * Returns the HTML string for insertion into the header.
108
+     *
109
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
110
+     * @param array &$tags Result array for the list of tags that are associated to the output
111
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
112
+     * @return string|null String including HTML tags for the header on error
113
+     */
114
+    public function getHeader($uid = '', array &$tags = array(), &$expire = null)
115
+    {
116
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
117
+
118
+        $html = '';
119
+        foreach( $this->getSubClients() as $subclient ) {
120
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
121
+        }
122
+        $view->productHeader = $html;
123
+
124
+        /** client/html/basket/mini/product/standard/template-header
125
+         * Relative path to the HTML header template of the basket mini product client.
126
+         *
127
+         * The template file contains the HTML code and processing instructions
128
+         * to generate the HTML code that is inserted into the HTML page header
129
+         * of the rendered page in the frontend. The configuration string is the
130
+         * path to the template file relative to the templates directory (usually
131
+         * in client/html/templates).
132
+         *
133
+         * You can overwrite the template file configuration in extensions and
134
+         * provide alternative templates. These alternative templates should be
135
+         * named like the default one but with the string "standard" replaced by
136
+         * an unique name. You may use the name of your project for this. If
137
+         * you've implemented an alternative client class as well, "standard"
138
+         * should be replaced by the name of the new class.
139
+         *
140
+         * @param string Relative path to the template creating code for the HTML page head
141
+         * @since 2015.09
142
+         * @category Developer
143
+         * @see client/html/basket/mini/product/standard/template-body
144
+         */
145
+        $tplconf = 'client/html/basket/mini/product/standard/template-header';
146
+        $default = 'basket/mini/product-header-default.php';
147
+
148
+        return $view->render( $view->config( $tplconf, $default ) );
149
+    }
150
+
151
+
152
+    /**
153
+     * Returns the sub-client given by its name.
154
+     *
155
+     * @param string $type Name of the client type
156
+     * @param string|null $name Name of the sub-client (Default if null)
157
+     * @return \Aimeos\Client\Html\Iface Sub-client object
158
+     */
159
+    public function getSubClient($type, $name = null)
160
+    {
161
+        /** client/html/basket/mini/product/decorators/excludes
162
+         * Excludes decorators added by the "common" option from the basket mini product html client
163
+         *
164
+         * Decorators extend the functionality of a class by adding new aspects
165
+         * (e.g. log what is currently done), executing the methods of the underlying
166
+         * class only in certain conditions (e.g. only for logged in users) or
167
+         * modify what is returned to the caller.
168
+         *
169
+         * This option allows you to remove a decorator added via
170
+         * "client/html/common/decorators/default" before they are wrapped
171
+         * around the html client.
172
+         *
173
+         *  client/html/basket/mini/product/decorators/excludes = array( 'decorator1' )
174
+         *
175
+         * This would remove the decorator named "decorator1" from the list of
176
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
177
+         * "client/html/common/decorators/default" to the html client.
178
+         *
179
+         * @param array List of decorator names
180
+         * @since 2015.08
181
+         * @category Developer
182
+         * @see client/html/common/decorators/default
183
+         * @see client/html/basket/mini/product/decorators/global
184
+         * @see client/html/basket/mini/product/decorators/local
185
+         */
186
+
187
+        /** client/html/basket/mini/product/decorators/global
188
+         * Adds a list of globally available decorators only to the basket mini product html client
189
+         *
190
+         * Decorators extend the functionality of a class by adding new aspects
191
+         * (e.g. log what is currently done), executing the methods of the underlying
192
+         * class only in certain conditions (e.g. only for logged in users) or
193
+         * modify what is returned to the caller.
194
+         *
195
+         * This option allows you to wrap global decorators
196
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
197
+         *
198
+         *  client/html/basket/mini/product/decorators/global = array( 'decorator1' )
199
+         *
200
+         * This would add the decorator named "decorator1" defined by
201
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
202
+         *
203
+         * @param array List of decorator names
204
+         * @since 2015.08
205
+         * @category Developer
206
+         * @see client/html/common/decorators/default
207
+         * @see client/html/basket/mini/product/decorators/excludes
208
+         * @see client/html/basket/mini/product/decorators/local
209
+         */
210
+
211
+        /** client/html/basket/mini/product/decorators/local
212
+         * Adds a list of local decorators only to the basket mini product html client
213
+         *
214
+         * Decorators extend the functionality of a class by adding new aspects
215
+         * (e.g. log what is currently done), executing the methods of the underlying
216
+         * class only in certain conditions (e.g. only for logged in users) or
217
+         * modify what is returned to the caller.
218
+         *
219
+         * This option allows you to wrap local decorators
220
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
221
+         *
222
+         *  client/html/basket/mini/product/decorators/local = array( 'decorator2' )
223
+         *
224
+         * This would add the decorator named "decorator2" defined by
225
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
226
+         *
227
+         * @param array List of decorator names
228
+         * @since 2015.08
229
+         * @category Developer
230
+         * @see client/html/common/decorators/default
231
+         * @see client/html/basket/mini/product/decorators/excludes
232
+         * @see client/html/basket/mini/product/decorators/global
233
+         */
234
+
235
+        return $this->createSubClient( 'basket/mini/product/' . $type, $name );
236
+    }
237
+
238
+
239
+    /**
240
+     * Returns the list of sub-client names configured for the client.
241
+     *
242
+     * @return array List of HTML client names
243
+     */
244
+    protected function getSubClientNames()
245
+    {
246
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
247
+    }
248 248
 }
249 249
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Mini/Factory.php 2 patches
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.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
 	 * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32 32
 	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33 33
 	 */
34
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
34
+	public static function createClient(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null)
35 35
 	{
36 36
 		/** client/html/basket/mini/name
37 37
 		 * Class name of the used basket mini client implementation
@@ -66,22 +66,22 @@  discard block
 block discarded – undo
66 66
 		 * @since 2014.03
67 67
 		 * @category Developer
68 68
 		 */
69
-		if( $name === null ) {
70
-			$name = $context->getConfig()->get( 'client/html/basket/mini/name', 'Standard' );
69
+		if ($name === null) {
70
+			$name = $context->getConfig()->get('client/html/basket/mini/name', 'Standard');
71 71
 		}
72 72
 
73
-		if( ctype_alnum( $name ) === false )
73
+		if (ctype_alnum($name) === false)
74 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 ) );
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 77
 		}
78 78
 
79 79
 		$iface = '\\Aimeos\\Client\\Html\\Iface';
80
-		$classname = '\\Aimeos\\Client\\Html\\Basket\\Mini\\' . $name;
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' );
84
+		return self::addClientDecorators($context, $client, $templatePaths, 'basket/mini');
85 85
 	}
86 86
 
87 87
 }
88 88
\ No newline at end of file
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Mini/Standard.php 3 patches
Indentation   +348 added lines, -348 removed lines patch added patch discarded remove patch
@@ -19,353 +19,353 @@
 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/mini/standard/subparts
26
-	 * List of HTML sub-clients rendered within the basket mini 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/mini/standard/subparts';
59
-
60
-	/** client/html/basket/mini/main/name
61
-	 * Name of the main part used by the basket mini client implementation
62
-	 *
63
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Mini\Main\Myname".
64
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
65
-	 *
66
-	 * @param string Last part of the client class name
67
-	 * @since 2014.03
68
-	 * @category Developer
69
-	 */
70
-
71
-	/** client/html/basket/mini/product/name
72
-	 * Name of the product part used by the basket mini client implementation
73
-	 *
74
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Mini\Product\Myname".
75
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
76
-	 *
77
-	 * @param string Last part of the client class name
78
-	 * @since 2015.09
79
-	 * @category Developer
80
-	 */
81
-	private $subPartNames = array( 'main', 'product' );
82
-
83
-	private $cache;
84
-
85
-
86
-	/**
87
-	 * Returns the HTML code for insertion into the body.
88
-	 *
89
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
90
-	 * @param array &$tags Result array for the list of tags that are associated to the output
91
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
92
-	 * @return string HTML code
93
-	 */
94
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
95
-	{
96
-		$context = $this->getContext();
97
-		$site = $context->getLocale()->getSiteId();
98
-		$view = $this->getView();
99
-
100
-		/** client/html/basket/mini
101
-		 * All parameters defined for the small basket component and its subparts
102
-		 *
103
-		 * This returns all settings related to the small basket component.
104
-		 * Please refer to the single settings for details.
105
-		 *
106
-		 * @param array Associative list of name/value settings
107
-		 * @category Developer
108
-		 * @see client/html/basket#mini
109
-		 */
110
-		$config = $context->getConfig()->get( 'client/html/basket/mini', array() );
111
-		$key = $this->getParamHash( array(), $uid . $site . ':basket:mini-body', $config );
112
-
113
-		if( ( $html = $this->getBasketCached( $key ) ) === null )
114
-		{
115
-			try
116
-			{
117
-				$view = $this->setViewParams( $view, $tags, $expire );
118
-
119
-				$output = '';
120
-				foreach( $this->getSubClients() as $subclient ) {
121
-					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
122
-				}
123
-				$view->miniBody = $output;
124
-			}
125
-			catch( \Aimeos\Client\Html\Exception $e )
126
-			{
127
-				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
128
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
129
-			}
130
-			catch( \Aimeos\Controller\Frontend\Exception $e )
131
-			{
132
-				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
133
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
134
-			}
135
-			catch( \Aimeos\MShop\Exception $e )
136
-			{
137
-				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
138
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
139
-			}
140
-			catch( \Exception $e )
141
-			{
142
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
143
-
144
-				$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
145
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
146
-			}
147
-
148
-			/** client/html/basket/mini/standard/template-body
149
-			 * Relative path to the HTML body template of the basket mini client.
150
-			 *
151
-			 * The template file contains the HTML code and processing instructions
152
-			 * to generate the result shown in the body of the frontend. The
153
-			 * configuration string is the path to the template file relative
154
-			 * to the templates directory (usually in client/html/templates).
155
-			 *
156
-			 * You can overwrite the template file configuration in extensions and
157
-			 * provide alternative templates. These alternative templates should be
158
-			 * named like the default one but with the string "standard" replaced by
159
-			 * an unique name. You may use the name of your project for this. If
160
-			 * you've implemented an alternative client class as well, "standard"
161
-			 * should be replaced by the name of the new class.
162
-			 *
163
-			 * @param string Relative path to the template creating code for the HTML page body
164
-			 * @since 2014.03
165
-			 * @category Developer
166
-			 * @see client/html/basket/mini/standard/template-header
167
-			 */
168
-			$tplconf = 'client/html/basket/mini/standard/template-body';
169
-			$default = 'basket/mini/body-default.php';
170
-
171
-			$html = $view->render( $view->config( $tplconf, $default ) );
172
-			$this->setBasketCached( $key, $html );
173
-		}
174
-		else
175
-		{
176
-			$html = $this->modifyBody( $html, $uid );
177
-		}
178
-
179
-		return $html;
180
-	}
181
-
182
-
183
-	/**
184
-	 * Returns the HTML string for insertion into the header.
185
-	 *
186
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
187
-	 * @param array &$tags Result array for the list of tags that are associated to the output
188
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
189
-	 * @return string|null String including HTML tags for the header on error
190
-	 */
191
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
192
-	{
193
-		$context = $this->getContext();
194
-		$site = $context->getLocale()->getSiteId();
195
-		$view = $this->getView();
196
-
197
-		$config = $context->getConfig()->get( 'client/html/basket/mini', array() );
198
-		$key = $this->getParamHash( array(), $uid . $site . ':basket:mini-header', $config );
199
-
200
-		if( ( $html = $this->getBasketCached( $key ) ) === null )
201
-		{
202
-			try
203
-			{
204
-				$view = $this->setViewParams( $this->getView(), $tags, $expire );
205
-
206
-				$output = '';
207
-				foreach( $this->getSubClients() as $subclient ) {
208
-					$output .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
209
-				}
210
-				$view->miniHeader = $output;
211
-
212
-				/** client/html/basket/mini/standard/template-header
213
-				 * Relative path to the HTML header template of the basket mini client.
214
-				 *
215
-				 * The template file contains the HTML code and processing instructions
216
-				 * to generate the HTML code that is inserted into the HTML page header
217
-				 * of the rendered page in the frontend. The configuration string is the
218
-				 * path to the template file relative to the templates directory (usually
219
-				 * in client/html/templates).
220
-				 *
221
-				 * You can overwrite the template file configuration in extensions and
222
-				 * provide alternative templates. These alternative templates should be
223
-				 * named like the default one but with the string "standard" replaced by
224
-				 * an unique name. You may use the name of your project for this. If
225
-				 * you've implemented an alternative client class as well, "standard"
226
-				 * should be replaced by the name of the new class.
227
-				 *
228
-				 * @param string Relative path to the template creating code for the HTML page head
229
-				 * @since 2014.03
230
-				 * @category Developer
231
-				 * @see client/html/basket/mini/standard/template-body
232
-				 */
233
-				$tplconf = 'client/html/basket/mini/standard/template-header';
234
-				$default = 'basket/mini/header-default.php';
235
-
236
-				$html = $view->render( $view->config( $tplconf, $default ) );
237
-				$this->setBasketCached( $key, $html );
238
-			}
239
-			catch( \Exception $e )
240
-			{
241
-				$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
242
-			}
243
-		}
244
-		else
245
-		{
246
-			$html = $this->modifyHeader( $html, $uid );
247
-		}
248
-
249
-		return $html;
250
-	}
251
-
252
-
253
-	/**
254
-	 * Returns the sub-client given by its name.
255
-	 *
256
-	 * @param string $type Name of the client type
257
-	 * @param string|null $name Name of the sub-client (Default if null)
258
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
259
-	 */
260
-	public function getSubClient( $type, $name = null )
261
-	{
262
-		/** client/html/basket/mini/decorators/excludes
263
-		 * Excludes decorators added by the "common" option from the basket mini html client
264
-		 *
265
-		 * Decorators extend the functionality of a class by adding new aspects
266
-		 * (e.g. log what is currently done), executing the methods of the underlying
267
-		 * class only in certain conditions (e.g. only for logged in users) or
268
-		 * modify what is returned to the caller.
269
-		 *
270
-		 * This option allows you to remove a decorator added via
271
-		 * "client/html/common/decorators/default" before they are wrapped
272
-		 * around the html client.
273
-		 *
274
-		 *  client/html/basket/mini/decorators/excludes = array( 'decorator1' )
275
-		 *
276
-		 * This would remove the decorator named "decorator1" from the list of
277
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
278
-		 * "client/html/common/decorators/default" to the html client.
279
-		 *
280
-		 * @param array List of decorator names
281
-		 * @since 2014.05
282
-		 * @category Developer
283
-		 * @see client/html/common/decorators/default
284
-		 * @see client/html/basket/mini/decorators/global
285
-		 * @see client/html/basket/mini/decorators/local
286
-		 */
287
-
288
-		/** client/html/basket/mini/decorators/global
289
-		 * Adds a list of globally available decorators only to the basket mini html client
290
-		 *
291
-		 * Decorators extend the functionality of a class by adding new aspects
292
-		 * (e.g. log what is currently done), executing the methods of the underlying
293
-		 * class only in certain conditions (e.g. only for logged in users) or
294
-		 * modify what is returned to the caller.
295
-		 *
296
-		 * This option allows you to wrap global decorators
297
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
298
-		 *
299
-		 *  client/html/basket/mini/decorators/global = array( 'decorator1' )
300
-		 *
301
-		 * This would add the decorator named "decorator1" defined by
302
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
303
-		 *
304
-		 * @param array List of decorator names
305
-		 * @since 2014.05
306
-		 * @category Developer
307
-		 * @see client/html/common/decorators/default
308
-		 * @see client/html/basket/mini/decorators/excludes
309
-		 * @see client/html/basket/mini/decorators/local
310
-		 */
311
-
312
-		/** client/html/basket/mini/decorators/local
313
-		 * Adds a list of local decorators only to the basket mini html client
314
-		 *
315
-		 * Decorators extend the functionality of a class by adding new aspects
316
-		 * (e.g. log what is currently done), executing the methods of the underlying
317
-		 * class only in certain conditions (e.g. only for logged in users) or
318
-		 * modify what is returned to the caller.
319
-		 *
320
-		 * This option allows you to wrap local decorators
321
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
322
-		 *
323
-		 *  client/html/basket/mini/decorators/local = array( 'decorator2' )
324
-		 *
325
-		 * This would add the decorator named "decorator2" defined by
326
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
327
-		 *
328
-		 * @param array List of decorator names
329
-		 * @since 2014.05
330
-		 * @category Developer
331
-		 * @see client/html/common/decorators/default
332
-		 * @see client/html/basket/mini/decorators/excludes
333
-		 * @see client/html/basket/mini/decorators/global
334
-		 */
335
-
336
-		return $this->createSubClient( 'basket/mini/' . $type, $name );
337
-	}
338
-
339
-
340
-	/**
341
-	 * Returns the list of sub-client names configured for the client.
342
-	 *
343
-	 * @return array List of HTML client names
344
-	 */
345
-	protected function getSubClientNames()
346
-	{
347
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
348
-	}
349
-
350
-
351
-	/**
352
-	 * Sets the necessary parameter values in the view.
353
-	 *
354
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
355
-	 * @param array &$tags Result array for the list of tags that are associated to the output
356
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
357
-	 * @return \Aimeos\MW\View\Iface Modified view object
358
-	 */
359
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
360
-	{
361
-		if( !isset( $this->cache ) )
362
-		{
363
-			$controller = \Aimeos\Controller\Frontend\Factory::createController( $this->getContext(), 'basket' );
364
-			$view->miniBasket = $controller->get();
365
-
366
-			$this->cache = $view;
367
-		}
368
-
369
-		return $this->cache;
370
-	}
25
+    /** client/html/basket/mini/standard/subparts
26
+     * List of HTML sub-clients rendered within the basket mini 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/mini/standard/subparts';
59
+
60
+    /** client/html/basket/mini/main/name
61
+     * Name of the main part used by the basket mini client implementation
62
+     *
63
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Mini\Main\Myname".
64
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
65
+     *
66
+     * @param string Last part of the client class name
67
+     * @since 2014.03
68
+     * @category Developer
69
+     */
70
+
71
+    /** client/html/basket/mini/product/name
72
+     * Name of the product part used by the basket mini client implementation
73
+     *
74
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Basket\Mini\Product\Myname".
75
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
76
+     *
77
+     * @param string Last part of the client class name
78
+     * @since 2015.09
79
+     * @category Developer
80
+     */
81
+    private $subPartNames = array( 'main', 'product' );
82
+
83
+    private $cache;
84
+
85
+
86
+    /**
87
+     * Returns the HTML code for insertion into the body.
88
+     *
89
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
90
+     * @param array &$tags Result array for the list of tags that are associated to the output
91
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
92
+     * @return string HTML code
93
+     */
94
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
95
+    {
96
+        $context = $this->getContext();
97
+        $site = $context->getLocale()->getSiteId();
98
+        $view = $this->getView();
99
+
100
+        /** client/html/basket/mini
101
+         * All parameters defined for the small basket component and its subparts
102
+         *
103
+         * This returns all settings related to the small basket component.
104
+         * Please refer to the single settings for details.
105
+         *
106
+         * @param array Associative list of name/value settings
107
+         * @category Developer
108
+         * @see client/html/basket#mini
109
+         */
110
+        $config = $context->getConfig()->get( 'client/html/basket/mini', array() );
111
+        $key = $this->getParamHash( array(), $uid . $site . ':basket:mini-body', $config );
112
+
113
+        if( ( $html = $this->getBasketCached( $key ) ) === null )
114
+        {
115
+            try
116
+            {
117
+                $view = $this->setViewParams( $view, $tags, $expire );
118
+
119
+                $output = '';
120
+                foreach( $this->getSubClients() as $subclient ) {
121
+                    $output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
122
+                }
123
+                $view->miniBody = $output;
124
+            }
125
+            catch( \Aimeos\Client\Html\Exception $e )
126
+            {
127
+                $error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
128
+                $view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
129
+            }
130
+            catch( \Aimeos\Controller\Frontend\Exception $e )
131
+            {
132
+                $error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
133
+                $view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
134
+            }
135
+            catch( \Aimeos\MShop\Exception $e )
136
+            {
137
+                $error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
138
+                $view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
139
+            }
140
+            catch( \Exception $e )
141
+            {
142
+                $context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
143
+
144
+                $error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
145
+                $view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
146
+            }
147
+
148
+            /** client/html/basket/mini/standard/template-body
149
+             * Relative path to the HTML body template of the basket mini client.
150
+             *
151
+             * The template file contains the HTML code and processing instructions
152
+             * to generate the result shown in the body of the frontend. The
153
+             * configuration string is the path to the template file relative
154
+             * to the templates directory (usually in client/html/templates).
155
+             *
156
+             * You can overwrite the template file configuration in extensions and
157
+             * provide alternative templates. These alternative templates should be
158
+             * named like the default one but with the string "standard" replaced by
159
+             * an unique name. You may use the name of your project for this. If
160
+             * you've implemented an alternative client class as well, "standard"
161
+             * should be replaced by the name of the new class.
162
+             *
163
+             * @param string Relative path to the template creating code for the HTML page body
164
+             * @since 2014.03
165
+             * @category Developer
166
+             * @see client/html/basket/mini/standard/template-header
167
+             */
168
+            $tplconf = 'client/html/basket/mini/standard/template-body';
169
+            $default = 'basket/mini/body-default.php';
170
+
171
+            $html = $view->render( $view->config( $tplconf, $default ) );
172
+            $this->setBasketCached( $key, $html );
173
+        }
174
+        else
175
+        {
176
+            $html = $this->modifyBody( $html, $uid );
177
+        }
178
+
179
+        return $html;
180
+    }
181
+
182
+
183
+    /**
184
+     * Returns the HTML string for insertion into the header.
185
+     *
186
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
187
+     * @param array &$tags Result array for the list of tags that are associated to the output
188
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
189
+     * @return string|null String including HTML tags for the header on error
190
+     */
191
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
192
+    {
193
+        $context = $this->getContext();
194
+        $site = $context->getLocale()->getSiteId();
195
+        $view = $this->getView();
196
+
197
+        $config = $context->getConfig()->get( 'client/html/basket/mini', array() );
198
+        $key = $this->getParamHash( array(), $uid . $site . ':basket:mini-header', $config );
199
+
200
+        if( ( $html = $this->getBasketCached( $key ) ) === null )
201
+        {
202
+            try
203
+            {
204
+                $view = $this->setViewParams( $this->getView(), $tags, $expire );
205
+
206
+                $output = '';
207
+                foreach( $this->getSubClients() as $subclient ) {
208
+                    $output .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
209
+                }
210
+                $view->miniHeader = $output;
211
+
212
+                /** client/html/basket/mini/standard/template-header
213
+                 * Relative path to the HTML header template of the basket mini client.
214
+                 *
215
+                 * The template file contains the HTML code and processing instructions
216
+                 * to generate the HTML code that is inserted into the HTML page header
217
+                 * of the rendered page in the frontend. The configuration string is the
218
+                 * path to the template file relative to the templates directory (usually
219
+                 * in client/html/templates).
220
+                 *
221
+                 * You can overwrite the template file configuration in extensions and
222
+                 * provide alternative templates. These alternative templates should be
223
+                 * named like the default one but with the string "standard" replaced by
224
+                 * an unique name. You may use the name of your project for this. If
225
+                 * you've implemented an alternative client class as well, "standard"
226
+                 * should be replaced by the name of the new class.
227
+                 *
228
+                 * @param string Relative path to the template creating code for the HTML page head
229
+                 * @since 2014.03
230
+                 * @category Developer
231
+                 * @see client/html/basket/mini/standard/template-body
232
+                 */
233
+                $tplconf = 'client/html/basket/mini/standard/template-header';
234
+                $default = 'basket/mini/header-default.php';
235
+
236
+                $html = $view->render( $view->config( $tplconf, $default ) );
237
+                $this->setBasketCached( $key, $html );
238
+            }
239
+            catch( \Exception $e )
240
+            {
241
+                $this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
242
+            }
243
+        }
244
+        else
245
+        {
246
+            $html = $this->modifyHeader( $html, $uid );
247
+        }
248
+
249
+        return $html;
250
+    }
251
+
252
+
253
+    /**
254
+     * Returns the sub-client given by its name.
255
+     *
256
+     * @param string $type Name of the client type
257
+     * @param string|null $name Name of the sub-client (Default if null)
258
+     * @return \Aimeos\Client\Html\Iface Sub-client object
259
+     */
260
+    public function getSubClient( $type, $name = null )
261
+    {
262
+        /** client/html/basket/mini/decorators/excludes
263
+         * Excludes decorators added by the "common" option from the basket mini html client
264
+         *
265
+         * Decorators extend the functionality of a class by adding new aspects
266
+         * (e.g. log what is currently done), executing the methods of the underlying
267
+         * class only in certain conditions (e.g. only for logged in users) or
268
+         * modify what is returned to the caller.
269
+         *
270
+         * This option allows you to remove a decorator added via
271
+         * "client/html/common/decorators/default" before they are wrapped
272
+         * around the html client.
273
+         *
274
+         *  client/html/basket/mini/decorators/excludes = array( 'decorator1' )
275
+         *
276
+         * This would remove the decorator named "decorator1" from the list of
277
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
278
+         * "client/html/common/decorators/default" to the html client.
279
+         *
280
+         * @param array List of decorator names
281
+         * @since 2014.05
282
+         * @category Developer
283
+         * @see client/html/common/decorators/default
284
+         * @see client/html/basket/mini/decorators/global
285
+         * @see client/html/basket/mini/decorators/local
286
+         */
287
+
288
+        /** client/html/basket/mini/decorators/global
289
+         * Adds a list of globally available decorators only to the basket mini html client
290
+         *
291
+         * Decorators extend the functionality of a class by adding new aspects
292
+         * (e.g. log what is currently done), executing the methods of the underlying
293
+         * class only in certain conditions (e.g. only for logged in users) or
294
+         * modify what is returned to the caller.
295
+         *
296
+         * This option allows you to wrap global decorators
297
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
298
+         *
299
+         *  client/html/basket/mini/decorators/global = array( 'decorator1' )
300
+         *
301
+         * This would add the decorator named "decorator1" defined by
302
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
303
+         *
304
+         * @param array List of decorator names
305
+         * @since 2014.05
306
+         * @category Developer
307
+         * @see client/html/common/decorators/default
308
+         * @see client/html/basket/mini/decorators/excludes
309
+         * @see client/html/basket/mini/decorators/local
310
+         */
311
+
312
+        /** client/html/basket/mini/decorators/local
313
+         * Adds a list of local decorators only to the basket mini html client
314
+         *
315
+         * Decorators extend the functionality of a class by adding new aspects
316
+         * (e.g. log what is currently done), executing the methods of the underlying
317
+         * class only in certain conditions (e.g. only for logged in users) or
318
+         * modify what is returned to the caller.
319
+         *
320
+         * This option allows you to wrap local decorators
321
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
322
+         *
323
+         *  client/html/basket/mini/decorators/local = array( 'decorator2' )
324
+         *
325
+         * This would add the decorator named "decorator2" defined by
326
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
327
+         *
328
+         * @param array List of decorator names
329
+         * @since 2014.05
330
+         * @category Developer
331
+         * @see client/html/common/decorators/default
332
+         * @see client/html/basket/mini/decorators/excludes
333
+         * @see client/html/basket/mini/decorators/global
334
+         */
335
+
336
+        return $this->createSubClient( 'basket/mini/' . $type, $name );
337
+    }
338
+
339
+
340
+    /**
341
+     * Returns the list of sub-client names configured for the client.
342
+     *
343
+     * @return array List of HTML client names
344
+     */
345
+    protected function getSubClientNames()
346
+    {
347
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
348
+    }
349
+
350
+
351
+    /**
352
+     * Sets the necessary parameter values in the view.
353
+     *
354
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
355
+     * @param array &$tags Result array for the list of tags that are associated to the output
356
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
357
+     * @return \Aimeos\MW\View\Iface Modified view object
358
+     */
359
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
360
+    {
361
+        if( !isset( $this->cache ) )
362
+        {
363
+            $controller = \Aimeos\Controller\Frontend\Factory::createController( $this->getContext(), 'basket' );
364
+            $view->miniBasket = $controller->get();
365
+
366
+            $this->cache = $view;
367
+        }
368
+
369
+        return $this->cache;
370
+    }
371 371
 }
372 372
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 	 * @since 2015.09
79 79
 	 * @category Developer
80 80
 	 */
81
-	private $subPartNames = array( 'main', 'product' );
81
+	private $subPartNames = array('main', 'product');
82 82
 
83 83
 	private $cache;
84 84
 
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
92 92
 	 * @return string HTML code
93 93
 	 */
94
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
94
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
95 95
 	{
96 96
 		$context = $this->getContext();
97 97
 		$site = $context->getLocale()->getSiteId();
@@ -107,42 +107,42 @@  discard block
 block discarded – undo
107 107
 		 * @category Developer
108 108
 		 * @see client/html/basket#mini
109 109
 		 */
110
-		$config = $context->getConfig()->get( 'client/html/basket/mini', array() );
111
-		$key = $this->getParamHash( array(), $uid . $site . ':basket:mini-body', $config );
110
+		$config = $context->getConfig()->get('client/html/basket/mini', array());
111
+		$key = $this->getParamHash(array(), $uid.$site.':basket:mini-body', $config);
112 112
 
113
-		if( ( $html = $this->getBasketCached( $key ) ) === null )
113
+		if (($html = $this->getBasketCached($key)) === null)
114 114
 		{
115 115
 			try
116 116
 			{
117
-				$view = $this->setViewParams( $view, $tags, $expire );
117
+				$view = $this->setViewParams($view, $tags, $expire);
118 118
 
119 119
 				$output = '';
120
-				foreach( $this->getSubClients() as $subclient ) {
121
-					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
120
+				foreach ($this->getSubClients() as $subclient) {
121
+					$output .= $subclient->setView($view)->getBody($uid, $tags, $expire);
122 122
 				}
123 123
 				$view->miniBody = $output;
124 124
 			}
125
-			catch( \Aimeos\Client\Html\Exception $e )
125
+			catch (\Aimeos\Client\Html\Exception $e)
126 126
 			{
127
-				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
128
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
127
+				$error = array($context->getI18n()->dt('client', $e->getMessage()));
128
+				$view->miniErrorList = $view->get('miniErrorList', array()) + $error;
129 129
 			}
130
-			catch( \Aimeos\Controller\Frontend\Exception $e )
130
+			catch (\Aimeos\Controller\Frontend\Exception $e)
131 131
 			{
132
-				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
133
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
132
+				$error = array($context->getI18n()->dt('controller/frontend', $e->getMessage()));
133
+				$view->miniErrorList = $view->get('miniErrorList', array()) + $error;
134 134
 			}
135
-			catch( \Aimeos\MShop\Exception $e )
135
+			catch (\Aimeos\MShop\Exception $e)
136 136
 			{
137
-				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
138
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
137
+				$error = array($context->getI18n()->dt('mshop', $e->getMessage()));
138
+				$view->miniErrorList = $view->get('miniErrorList', array()) + $error;
139 139
 			}
140
-			catch( \Exception $e )
140
+			catch (\Exception $e)
141 141
 			{
142
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
142
+				$context->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
143 143
 
144
-				$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
145
-				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
144
+				$error = array($context->getI18n()->dt('client', 'A non-recoverable error occured'));
145
+				$view->miniErrorList = $view->get('miniErrorList', array()) + $error;
146 146
 			}
147 147
 
148 148
 			/** client/html/basket/mini/standard/template-body
@@ -168,12 +168,12 @@  discard block
 block discarded – undo
168 168
 			$tplconf = 'client/html/basket/mini/standard/template-body';
169 169
 			$default = 'basket/mini/body-default.php';
170 170
 
171
-			$html = $view->render( $view->config( $tplconf, $default ) );
172
-			$this->setBasketCached( $key, $html );
171
+			$html = $view->render($view->config($tplconf, $default));
172
+			$this->setBasketCached($key, $html);
173 173
 		}
174 174
 		else
175 175
 		{
176
-			$html = $this->modifyBody( $html, $uid );
176
+			$html = $this->modifyBody($html, $uid);
177 177
 		}
178 178
 
179 179
 		return $html;
@@ -188,24 +188,24 @@  discard block
 block discarded – undo
188 188
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
189 189
 	 * @return string|null String including HTML tags for the header on error
190 190
 	 */
191
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
191
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
192 192
 	{
193 193
 		$context = $this->getContext();
194 194
 		$site = $context->getLocale()->getSiteId();
195 195
 		$view = $this->getView();
196 196
 
197
-		$config = $context->getConfig()->get( 'client/html/basket/mini', array() );
198
-		$key = $this->getParamHash( array(), $uid . $site . ':basket:mini-header', $config );
197
+		$config = $context->getConfig()->get('client/html/basket/mini', array());
198
+		$key = $this->getParamHash(array(), $uid.$site.':basket:mini-header', $config);
199 199
 
200
-		if( ( $html = $this->getBasketCached( $key ) ) === null )
200
+		if (($html = $this->getBasketCached($key)) === null)
201 201
 		{
202 202
 			try
203 203
 			{
204
-				$view = $this->setViewParams( $this->getView(), $tags, $expire );
204
+				$view = $this->setViewParams($this->getView(), $tags, $expire);
205 205
 
206 206
 				$output = '';
207
-				foreach( $this->getSubClients() as $subclient ) {
208
-					$output .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
207
+				foreach ($this->getSubClients() as $subclient) {
208
+					$output .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
209 209
 				}
210 210
 				$view->miniHeader = $output;
211 211
 
@@ -233,17 +233,17 @@  discard block
 block discarded – undo
233 233
 				$tplconf = 'client/html/basket/mini/standard/template-header';
234 234
 				$default = 'basket/mini/header-default.php';
235 235
 
236
-				$html = $view->render( $view->config( $tplconf, $default ) );
237
-				$this->setBasketCached( $key, $html );
236
+				$html = $view->render($view->config($tplconf, $default));
237
+				$this->setBasketCached($key, $html);
238 238
 			}
239
-			catch( \Exception $e )
239
+			catch (\Exception $e)
240 240
 			{
241
-				$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
241
+				$this->getContext()->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
242 242
 			}
243 243
 		}
244 244
 		else
245 245
 		{
246
-			$html = $this->modifyHeader( $html, $uid );
246
+			$html = $this->modifyHeader($html, $uid);
247 247
 		}
248 248
 
249 249
 		return $html;
@@ -257,7 +257,7 @@  discard block
 block discarded – undo
257 257
 	 * @param string|null $name Name of the sub-client (Default if null)
258 258
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
259 259
 	 */
260
-	public function getSubClient( $type, $name = null )
260
+	public function getSubClient($type, $name = null)
261 261
 	{
262 262
 		/** client/html/basket/mini/decorators/excludes
263 263
 		 * Excludes decorators added by the "common" option from the basket mini html client
@@ -333,7 +333,7 @@  discard block
 block discarded – undo
333 333
 		 * @see client/html/basket/mini/decorators/global
334 334
 		 */
335 335
 
336
-		return $this->createSubClient( 'basket/mini/' . $type, $name );
336
+		return $this->createSubClient('basket/mini/'.$type, $name);
337 337
 	}
338 338
 
339 339
 
@@ -344,7 +344,7 @@  discard block
 block discarded – undo
344 344
 	 */
345 345
 	protected function getSubClientNames()
346 346
 	{
347
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
347
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
348 348
 	}
349 349
 
350 350
 
@@ -356,11 +356,11 @@  discard block
 block discarded – undo
356 356
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
357 357
 	 * @return \Aimeos\MW\View\Iface Modified view object
358 358
 	 */
359
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
359
+	protected function setViewParams(\Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null)
360 360
 	{
361
-		if( !isset( $this->cache ) )
361
+		if (!isset($this->cache))
362 362
 		{
363
-			$controller = \Aimeos\Controller\Frontend\Factory::createController( $this->getContext(), 'basket' );
363
+			$controller = \Aimeos\Controller\Frontend\Factory::createController($this->getContext(), 'basket');
364 364
 			$view->miniBasket = $controller->get();
365 365
 
366 366
 			$this->cache = $view;
Please login to merge, or discard this patch.
Braces   +7 added lines, -14 removed lines patch added patch discarded remove patch
@@ -121,23 +121,19 @@  discard block
 block discarded – undo
121 121
 					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
122 122
 				}
123 123
 				$view->miniBody = $output;
124
-			}
125
-			catch( \Aimeos\Client\Html\Exception $e )
124
+			} catch( \Aimeos\Client\Html\Exception $e )
126 125
 			{
127 126
 				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
128 127
 				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
129
-			}
130
-			catch( \Aimeos\Controller\Frontend\Exception $e )
128
+			} catch( \Aimeos\Controller\Frontend\Exception $e )
131 129
 			{
132 130
 				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
133 131
 				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
134
-			}
135
-			catch( \Aimeos\MShop\Exception $e )
132
+			} catch( \Aimeos\MShop\Exception $e )
136 133
 			{
137 134
 				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
138 135
 				$view->miniErrorList = $view->get( 'miniErrorList', array() ) + $error;
139
-			}
140
-			catch( \Exception $e )
136
+			} catch( \Exception $e )
141 137
 			{
142 138
 				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
143 139
 
@@ -170,8 +166,7 @@  discard block
 block discarded – undo
170 166
 
171 167
 			$html = $view->render( $view->config( $tplconf, $default ) );
172 168
 			$this->setBasketCached( $key, $html );
173
-		}
174
-		else
169
+		} else
175 170
 		{
176 171
 			$html = $this->modifyBody( $html, $uid );
177 172
 		}
@@ -235,13 +230,11 @@  discard block
 block discarded – undo
235 230
 
236 231
 				$html = $view->render( $view->config( $tplconf, $default ) );
237 232
 				$this->setBasketCached( $key, $html );
238
-			}
239
-			catch( \Exception $e )
233
+			} catch( \Exception $e )
240 234
 			{
241 235
 				$this->getContext()->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
242 236
 			}
243
-		}
244
-		else
237
+		} else
245 238
 		{
246 239
 			$html = $this->modifyHeader( $html, $uid );
247 240
 		}
Please login to merge, or discard this patch.
client/html/src/Client/Html/Basket/Mini/Main/Standard.php 3 patches
Indentation   +232 added lines, -232 removed lines patch added patch discarded remove patch
@@ -19,259 +19,259 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/basket/mini/main/standard/subparts
26
-	 * List of HTML sub-clients rendered within the basket mini main 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/mini/main/standard/subparts';
59
-	private $subPartNames = array();
60
-	private $cache;
25
+    /** client/html/basket/mini/main/standard/subparts
26
+     * List of HTML sub-clients rendered within the basket mini main 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/mini/main/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->mainBody = $html;
75
+        $html = '';
76
+        foreach( $this->getSubClients() as $subclient ) {
77
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
78
+        }
79
+        $view->mainBody = $html;
80 80
 
81
-		/** client/html/basket/mini/main/standard/template-body
82
-		 * Relative path to the HTML body template of the basket mini main 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
-		 * should be replaced by the name of the new class.
95
-		 *
96
-		 * @param string Relative path to the template creating code for the HTML page body
97
-		 * @since 2014.03
98
-		 * @category Developer
99
-		 * @see client/html/basket/mini/main/standard/template-header
100
-		 */
101
-		$tplconf = 'client/html/basket/mini/main/standard/template-body';
102
-		$default = 'basket/mini/main-body-default.php';
81
+        /** client/html/basket/mini/main/standard/template-body
82
+         * Relative path to the HTML body template of the basket mini main 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
+         * should be replaced by the name of the new class.
95
+         *
96
+         * @param string Relative path to the template creating code for the HTML page body
97
+         * @since 2014.03
98
+         * @category Developer
99
+         * @see client/html/basket/mini/main/standard/template-header
100
+         */
101
+        $tplconf = 'client/html/basket/mini/main/standard/template-body';
102
+        $default = 'basket/mini/main-body-default.php';
103 103
 
104
-		return $view->render( $view->config( $tplconf, $default ) );
105
-	}
104
+        return $view->render( $view->config( $tplconf, $default ) );
105
+    }
106 106
 
107 107
 
108
-	/**
109
-	 * Returns the HTML string for insertion into the header.
110
-	 *
111
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
112
-	 * @param array &$tags Result array for the list of tags that are associated to the output
113
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114
-	 * @return string|null String including HTML tags for the header on error
115
-	 */
116
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
117
-	{
118
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
108
+    /**
109
+     * Returns the HTML string for insertion into the header.
110
+     *
111
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
112
+     * @param array &$tags Result array for the list of tags that are associated to the output
113
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114
+     * @return string|null String including HTML tags for the header on error
115
+     */
116
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
117
+    {
118
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
119 119
 
120
-		$html = '';
121
-		foreach( $this->getSubClients() as $subclient ) {
122
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
123
-		}
124
-		$view->mainHeader = $html;
120
+        $html = '';
121
+        foreach( $this->getSubClients() as $subclient ) {
122
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
123
+        }
124
+        $view->mainHeader = $html;
125 125
 
126
-		/** client/html/basket/mini/main/standard/template-header
127
-		 * Relative path to the HTML header template of the basket mini main client.
128
-		 *
129
-		 * The template file contains the HTML code and processing instructions
130
-		 * to generate the HTML code that is inserted into the HTML page header
131
-		 * of the rendered page in the frontend. The configuration string is the
132
-		 * path to the template file relative to the templates directory (usually
133
-		 * in client/html/templates).
134
-		 *
135
-		 * You can overwrite the template file configuration in extensions and
136
-		 * provide alternative templates. These alternative templates should be
137
-		 * named like the default one but with the string "standard" replaced by
138
-		 * an unique name. You may use the name of your project for this. If
139
-		 * you've implemented an alternative client class as well, "standard"
140
-		 * should be replaced by the name of the new class.
141
-		 *
142
-		 * @param string Relative path to the template creating code for the HTML page head
143
-		 * @since 2014.03
144
-		 * @category Developer
145
-		 * @see client/html/basket/mini/main/standard/template-body
146
-		 */
147
-		$tplconf = 'client/html/basket/mini/main/standard/template-header';
148
-		$default = 'basket/mini/main-header-default.php';
126
+        /** client/html/basket/mini/main/standard/template-header
127
+         * Relative path to the HTML header template of the basket mini main client.
128
+         *
129
+         * The template file contains the HTML code and processing instructions
130
+         * to generate the HTML code that is inserted into the HTML page header
131
+         * of the rendered page in the frontend. The configuration string is the
132
+         * path to the template file relative to the templates directory (usually
133
+         * in client/html/templates).
134
+         *
135
+         * You can overwrite the template file configuration in extensions and
136
+         * provide alternative templates. These alternative templates should be
137
+         * named like the default one but with the string "standard" replaced by
138
+         * an unique name. You may use the name of your project for this. If
139
+         * you've implemented an alternative client class as well, "standard"
140
+         * should be replaced by the name of the new class.
141
+         *
142
+         * @param string Relative path to the template creating code for the HTML page head
143
+         * @since 2014.03
144
+         * @category Developer
145
+         * @see client/html/basket/mini/main/standard/template-body
146
+         */
147
+        $tplconf = 'client/html/basket/mini/main/standard/template-header';
148
+        $default = 'basket/mini/main-header-default.php';
149 149
 
150
-		return $view->render( $view->config( $tplconf, $default ) );
151
-	}
150
+        return $view->render( $view->config( $tplconf, $default ) );
151
+    }
152 152
 
153 153
 
154
-	/**
155
-	 * Returns the sub-client given by its name.
156
-	 *
157
-	 * @param string $type Name of the client type
158
-	 * @param string|null $name Name of the sub-client (Default if null)
159
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
160
-	 */
161
-	public function getSubClient( $type, $name = null )
162
-	{
163
-		/** client/html/basket/mini/main/decorators/excludes
164
-		 * Excludes decorators added by the "common" option from the basket mini main html client
165
-		 *
166
-		 * Decorators extend the functionality of a class by adding new aspects
167
-		 * (e.g. log what is currently done), executing the methods of the underlying
168
-		 * class only in certain conditions (e.g. only for logged in users) or
169
-		 * modify what is returned to the caller.
170
-		 *
171
-		 * This option allows you to remove a decorator added via
172
-		 * "client/html/common/decorators/default" before they are wrapped
173
-		 * around the html client.
174
-		 *
175
-		 *  client/html/basket/mini/main/decorators/excludes = array( 'decorator1' )
176
-		 *
177
-		 * This would remove the decorator named "decorator1" from the list of
178
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
179
-		 * "client/html/common/decorators/default" to the html client.
180
-		 *
181
-		 * @param array List of decorator names
182
-		 * @since 2015.08
183
-		 * @category Developer
184
-		 * @see client/html/common/decorators/default
185
-		 * @see client/html/basket/mini/main/decorators/global
186
-		 * @see client/html/basket/mini/main/decorators/local
187
-		 */
154
+    /**
155
+     * Returns the sub-client given by its name.
156
+     *
157
+     * @param string $type Name of the client type
158
+     * @param string|null $name Name of the sub-client (Default if null)
159
+     * @return \Aimeos\Client\Html\Iface Sub-client object
160
+     */
161
+    public function getSubClient( $type, $name = null )
162
+    {
163
+        /** client/html/basket/mini/main/decorators/excludes
164
+         * Excludes decorators added by the "common" option from the basket mini main html client
165
+         *
166
+         * Decorators extend the functionality of a class by adding new aspects
167
+         * (e.g. log what is currently done), executing the methods of the underlying
168
+         * class only in certain conditions (e.g. only for logged in users) or
169
+         * modify what is returned to the caller.
170
+         *
171
+         * This option allows you to remove a decorator added via
172
+         * "client/html/common/decorators/default" before they are wrapped
173
+         * around the html client.
174
+         *
175
+         *  client/html/basket/mini/main/decorators/excludes = array( 'decorator1' )
176
+         *
177
+         * This would remove the decorator named "decorator1" from the list of
178
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
179
+         * "client/html/common/decorators/default" to the html client.
180
+         *
181
+         * @param array List of decorator names
182
+         * @since 2015.08
183
+         * @category Developer
184
+         * @see client/html/common/decorators/default
185
+         * @see client/html/basket/mini/main/decorators/global
186
+         * @see client/html/basket/mini/main/decorators/local
187
+         */
188 188
 
189
-		/** client/html/basket/mini/main/decorators/global
190
-		 * Adds a list of globally available decorators only to the basket mini main html client
191
-		 *
192
-		 * Decorators extend the functionality of a class by adding new aspects
193
-		 * (e.g. log what is currently done), executing the methods of the underlying
194
-		 * class only in certain conditions (e.g. only for logged in users) or
195
-		 * modify what is returned to the caller.
196
-		 *
197
-		 * This option allows you to wrap global decorators
198
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
199
-		 *
200
-		 *  client/html/basket/mini/main/decorators/global = array( 'decorator1' )
201
-		 *
202
-		 * This would add the decorator named "decorator1" defined by
203
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
204
-		 *
205
-		 * @param array List of decorator names
206
-		 * @since 2015.08
207
-		 * @category Developer
208
-		 * @see client/html/common/decorators/default
209
-		 * @see client/html/basket/mini/main/decorators/excludes
210
-		 * @see client/html/basket/mini/main/decorators/local
211
-		 */
189
+        /** client/html/basket/mini/main/decorators/global
190
+         * Adds a list of globally available decorators only to the basket mini main html client
191
+         *
192
+         * Decorators extend the functionality of a class by adding new aspects
193
+         * (e.g. log what is currently done), executing the methods of the underlying
194
+         * class only in certain conditions (e.g. only for logged in users) or
195
+         * modify what is returned to the caller.
196
+         *
197
+         * This option allows you to wrap global decorators
198
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
199
+         *
200
+         *  client/html/basket/mini/main/decorators/global = array( 'decorator1' )
201
+         *
202
+         * This would add the decorator named "decorator1" defined by
203
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
204
+         *
205
+         * @param array List of decorator names
206
+         * @since 2015.08
207
+         * @category Developer
208
+         * @see client/html/common/decorators/default
209
+         * @see client/html/basket/mini/main/decorators/excludes
210
+         * @see client/html/basket/mini/main/decorators/local
211
+         */
212 212
 
213
-		/** client/html/basket/mini/main/decorators/local
214
-		 * Adds a list of local decorators only to the basket mini main html client
215
-		 *
216
-		 * Decorators extend the functionality of a class by adding new aspects
217
-		 * (e.g. log what is currently done), executing the methods of the underlying
218
-		 * class only in certain conditions (e.g. only for logged in users) or
219
-		 * modify what is returned to the caller.
220
-		 *
221
-		 * This option allows you to wrap local decorators
222
-		 * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
223
-		 *
224
-		 *  client/html/basket/mini/main/decorators/local = array( 'decorator2' )
225
-		 *
226
-		 * This would add the decorator named "decorator2" defined by
227
-		 * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
228
-		 *
229
-		 * @param array List of decorator names
230
-		 * @since 2015.08
231
-		 * @category Developer
232
-		 * @see client/html/common/decorators/default
233
-		 * @see client/html/basket/mini/main/decorators/excludes
234
-		 * @see client/html/basket/mini/main/decorators/global
235
-		 */
236
-		return $this->createSubClient( 'basket/mini/main/' . $type, $name );
237
-	}
213
+        /** client/html/basket/mini/main/decorators/local
214
+         * Adds a list of local decorators only to the basket mini main html client
215
+         *
216
+         * Decorators extend the functionality of a class by adding new aspects
217
+         * (e.g. log what is currently done), executing the methods of the underlying
218
+         * class only in certain conditions (e.g. only for logged in users) or
219
+         * modify what is returned to the caller.
220
+         *
221
+         * This option allows you to wrap local decorators
222
+         * ("\Aimeos\Client\Html\Basket\Decorator\*") around the html client.
223
+         *
224
+         *  client/html/basket/mini/main/decorators/local = array( 'decorator2' )
225
+         *
226
+         * This would add the decorator named "decorator2" defined by
227
+         * "\Aimeos\Client\Html\Basket\Decorator\Decorator2" only to the html client.
228
+         *
229
+         * @param array List of decorator names
230
+         * @since 2015.08
231
+         * @category Developer
232
+         * @see client/html/common/decorators/default
233
+         * @see client/html/basket/mini/main/decorators/excludes
234
+         * @see client/html/basket/mini/main/decorators/global
235
+         */
236
+        return $this->createSubClient( 'basket/mini/main/' . $type, $name );
237
+    }
238 238
 
239 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
-	}
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 249
 
250 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
-			$view->mainPriceItem = $view->miniBasket->getPrice();
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
+            $view->mainPriceItem = $view->miniBasket->getPrice();
264 264
 
265
-			$count = 0;
266
-			foreach( $view->miniBasket->getProducts() as $product ) {
267
-				$count += $product->getQuantity();
268
-			}
265
+            $count = 0;
266
+            foreach( $view->miniBasket->getProducts() as $product ) {
267
+                $count += $product->getQuantity();
268
+            }
269 269
 
270
-			$view->mainQuantity = $count;
270
+            $view->mainQuantity = $count;
271 271
 
272
-			$this->cache = $view;
273
-		}
272
+            $this->cache = $view;
273
+        }
274 274
 
275
-		return $this->cache;
276
-	}
275
+        return $this->cache;
276
+    }
277 277
 }
278 278
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -68,13 +68,13 @@  discard block
 block discarded – undo
68 68
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
69 69
 	 * @return string HTML code
70 70
 	 */
71
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
72 72
 	{
73
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
73
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
74 74
 
75 75
 		$html = '';
76
-		foreach( $this->getSubClients() as $subclient ) {
77
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
76
+		foreach ($this->getSubClients() as $subclient) {
77
+			$html .= $subclient->setView($view)->getBody($uid, $tags, $expire);
78 78
 		}
79 79
 		$view->mainBody = $html;
80 80
 
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
 		$tplconf = 'client/html/basket/mini/main/standard/template-body';
102 102
 		$default = 'basket/mini/main-body-default.php';
103 103
 
104
-		return $view->render( $view->config( $tplconf, $default ) );
104
+		return $view->render($view->config($tplconf, $default));
105 105
 	}
106 106
 
107 107
 
@@ -113,13 +113,13 @@  discard block
 block discarded – undo
113 113
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114 114
 	 * @return string|null String including HTML tags for the header on error
115 115
 	 */
116
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
117 117
 	{
118
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
118
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
119 119
 
120 120
 		$html = '';
121
-		foreach( $this->getSubClients() as $subclient ) {
122
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
121
+		foreach ($this->getSubClients() as $subclient) {
122
+			$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
123 123
 		}
124 124
 		$view->mainHeader = $html;
125 125
 
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
 		$tplconf = 'client/html/basket/mini/main/standard/template-header';
148 148
 		$default = 'basket/mini/main-header-default.php';
149 149
 
150
-		return $view->render( $view->config( $tplconf, $default ) );
150
+		return $view->render($view->config($tplconf, $default));
151 151
 	}
152 152
 
153 153
 
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
 	 * @param string|null $name Name of the sub-client (Default if null)
159 159
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
160 160
 	 */
161
-	public function getSubClient( $type, $name = null )
161
+	public function getSubClient($type, $name = null)
162 162
 	{
163 163
 		/** client/html/basket/mini/main/decorators/excludes
164 164
 		 * Excludes decorators added by the "common" option from the basket mini main html client
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 		 * @see client/html/basket/mini/main/decorators/excludes
234 234
 		 * @see client/html/basket/mini/main/decorators/global
235 235
 		 */
236
-		return $this->createSubClient( 'basket/mini/main/' . $type, $name );
236
+		return $this->createSubClient('basket/mini/main/'.$type, $name);
237 237
 	}
238 238
 
239 239
 
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
 	 */
245 245
 	protected function getSubClientNames()
246 246
 	{
247
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
247
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
248 248
 	}
249 249
 
250 250
 
@@ -256,14 +256,14 @@  discard block
 block discarded – undo
256 256
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
257 257
 	 * @return \Aimeos\MW\View\Iface Modified view object
258 258
 	 */
259
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
259
+	protected function setViewParams(\Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null)
260 260
 	{
261
-		if( !isset( $this->cache ) )
261
+		if (!isset($this->cache))
262 262
 		{
263 263
 			$view->mainPriceItem = $view->miniBasket->getPrice();
264 264
 
265 265
 			$count = 0;
266
-			foreach( $view->miniBasket->getProducts() as $product ) {
266
+			foreach ($view->miniBasket->getProducts() as $product) {
267 267
 				$count += $product->getQuantity();
268 268
 			}
269 269
 
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@
 block discarded – undo
110 110
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111 111
 	 * @param array &$tags Result array for the list of tags that are associated to the output
112 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
113
+	 * @return string String including HTML tags for the header on error
114 114
 	 */
115 115
 	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116 116
 	{
Please login to merge, or discard this patch.
client/html/src/Client/Html/Catalog/Stage/Breadcrumb/Standard.php 3 patches
Indentation   +226 added lines, -226 removed lines patch added patch discarded remove patch
@@ -19,231 +19,231 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/catalog/stage/breadcrumb/standard/subparts
26
-	 * List of HTML sub-clients rendered within the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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->breadcrumbBody = $html;
79
-
80
-		/** client/html/catalog/stage/breadcrumb/standard/template-body
81
-		 * Relative path to the HTML body template of the catalog stage breadcrumb 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/catalog/stage/breadcrumb/standard/template-header
99
-		 */
100
-		$tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-body';
101
-		$default = 'catalog/stage/breadcrumb-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->breadcrumbHeader = $html;
124
-
125
-		/** client/html/catalog/stage/breadcrumb/standard/template-header
126
-		 * Relative path to the HTML header template of the catalog stage breadcrumb 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/catalog/stage/breadcrumb/standard/template-body
145
-		 */
146
-		$tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-header';
147
-		$default = 'catalog/stage/breadcrumb-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/catalog/stage/breadcrumb/decorators/excludes
163
-		 * Excludes decorators added by the "common" option from the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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/catalog/stage/breadcrumb/decorators/global
185
-		 * @see client/html/catalog/stage/breadcrumb/decorators/local
186
-		 */
187
-
188
-		/** client/html/catalog/stage/breadcrumb/decorators/global
189
-		 * Adds a list of globally available decorators only to the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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/catalog/stage/breadcrumb/decorators/excludes
209
-		 * @see client/html/catalog/stage/breadcrumb/decorators/local
210
-		 */
211
-
212
-		/** client/html/catalog/stage/breadcrumb/decorators/local
213
-		 * Adds a list of local decorators only to the catalog stage breadcrumb 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\Catalog\Decorator\*") around the html client.
222
-		 *
223
-		 *  client/html/catalog/stage/breadcrumb/decorators/local = array( 'decorator2' )
224
-		 *
225
-		 * This would add the decorator named "decorator2" defined by
226
-		 * "\Aimeos\Client\Html\Catalog\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/catalog/stage/breadcrumb/decorators/excludes
233
-		 * @see client/html/catalog/stage/breadcrumb/decorators/global
234
-		 */
235
-
236
-		return $this->createSubClient( 'catalog/stage/breadcrumb/' . $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
-	}
25
+    /** client/html/catalog/stage/breadcrumb/standard/subparts
26
+     * List of HTML sub-clients rendered within the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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->breadcrumbBody = $html;
79
+
80
+        /** client/html/catalog/stage/breadcrumb/standard/template-body
81
+         * Relative path to the HTML body template of the catalog stage breadcrumb 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/catalog/stage/breadcrumb/standard/template-header
99
+         */
100
+        $tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-body';
101
+        $default = 'catalog/stage/breadcrumb-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->breadcrumbHeader = $html;
124
+
125
+        /** client/html/catalog/stage/breadcrumb/standard/template-header
126
+         * Relative path to the HTML header template of the catalog stage breadcrumb 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/catalog/stage/breadcrumb/standard/template-body
145
+         */
146
+        $tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-header';
147
+        $default = 'catalog/stage/breadcrumb-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/catalog/stage/breadcrumb/decorators/excludes
163
+         * Excludes decorators added by the "common" option from the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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/catalog/stage/breadcrumb/decorators/global
185
+         * @see client/html/catalog/stage/breadcrumb/decorators/local
186
+         */
187
+
188
+        /** client/html/catalog/stage/breadcrumb/decorators/global
189
+         * Adds a list of globally available decorators only to the catalog stage breadcrumb 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/catalog/stage/breadcrumb/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/catalog/stage/breadcrumb/decorators/excludes
209
+         * @see client/html/catalog/stage/breadcrumb/decorators/local
210
+         */
211
+
212
+        /** client/html/catalog/stage/breadcrumb/decorators/local
213
+         * Adds a list of local decorators only to the catalog stage breadcrumb 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\Catalog\Decorator\*") around the html client.
222
+         *
223
+         *  client/html/catalog/stage/breadcrumb/decorators/local = array( 'decorator2' )
224
+         *
225
+         * This would add the decorator named "decorator2" defined by
226
+         * "\Aimeos\Client\Html\Catalog\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/catalog/stage/breadcrumb/decorators/excludes
233
+         * @see client/html/catalog/stage/breadcrumb/decorators/global
234
+         */
235
+
236
+        return $this->createSubClient( 'catalog/stage/breadcrumb/' . $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 249
 }
250 250
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -67,13 +67,13 @@  discard block
 block discarded – undo
67 67
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
68 68
 	 * @return string HTML code
69 69
 	 */
70
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
70
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
71 71
 	{
72
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
72
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
73 73
 
74 74
 		$html = '';
75
-		foreach( $this->getSubClients() as $subclient ) {
76
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
75
+		foreach ($this->getSubClients() as $subclient) {
76
+			$html .= $subclient->setView($view)->getBody($uid, $tags, $expire);
77 77
 		}
78 78
 		$view->breadcrumbBody = $html;
79 79
 
@@ -100,7 +100,7 @@  discard block
 block discarded – undo
100 100
 		$tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-body';
101 101
 		$default = 'catalog/stage/breadcrumb-body-default.php';
102 102
 
103
-		return $view->render( $view->config( $tplconf, $default ) );
103
+		return $view->render($view->config($tplconf, $default));
104 104
 	}
105 105
 
106 106
 
@@ -112,13 +112,13 @@  discard block
 block discarded – undo
112 112
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
113 113
 	 * @return string|null String including HTML tags for the header on error
114 114
 	 */
115
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
115
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
116 116
 	{
117
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
117
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
118 118
 
119 119
 		$html = '';
120
-		foreach( $this->getSubClients() as $subclient ) {
121
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
120
+		foreach ($this->getSubClients() as $subclient) {
121
+			$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
122 122
 		}
123 123
 		$view->breadcrumbHeader = $html;
124 124
 
@@ -146,7 +146,7 @@  discard block
 block discarded – undo
146 146
 		$tplconf = 'client/html/catalog/stage/breadcrumb/standard/template-header';
147 147
 		$default = 'catalog/stage/breadcrumb-header-default.php';
148 148
 
149
-		return $view->render( $view->config( $tplconf, $default ) );
149
+		return $view->render($view->config($tplconf, $default));
150 150
 	}
151 151
 
152 152
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 	 * @param string|null $name Name of the sub-client (Default if null)
158 158
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
159 159
 	 */
160
-	public function getSubClient( $type, $name = null )
160
+	public function getSubClient($type, $name = null)
161 161
 	{
162 162
 		/** client/html/catalog/stage/breadcrumb/decorators/excludes
163 163
 		 * Excludes decorators added by the "common" option from the catalog stage breadcrumb html client
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 		 * @see client/html/catalog/stage/breadcrumb/decorators/global
234 234
 		 */
235 235
 
236
-		return $this->createSubClient( 'catalog/stage/breadcrumb/' . $type, $name );
236
+		return $this->createSubClient('catalog/stage/breadcrumb/'.$type, $name);
237 237
 	}
238 238
 
239 239
 
@@ -244,6 +244,6 @@  discard block
 block discarded – undo
244 244
 	 */
245 245
 	protected function getSubClientNames()
246 246
 	{
247
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
247
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
248 248
 	}
249 249
 }
250 250
\ No newline at end of file
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@
 block discarded – undo
110 110
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111 111
 	 * @param array &$tags Result array for the list of tags that are associated to the output
112 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
113
+	 * @return string String including HTML tags for the header on error
114 114
 	 */
115 115
 	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116 116
 	{
Please login to merge, or discard this patch.
client/html/src/Client/Html/Catalog/Stage/Navigator/Standard.php 3 patches
Indentation   +323 added lines, -323 removed lines patch added patch discarded remove patch
@@ -19,328 +19,328 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Catalog\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Catalog\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/catalog/stage/navigator/standard/subparts
26
-	 * List of HTML sub-clients rendered within the catalog stage navigator 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/catalog/stage/navigator/standard/subparts';
59
-	private $subPartNames = array();
60
-	private $view;
61
-
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 );
74
-
75
-		$html = '';
76
-		foreach( $this->getSubClients() as $subclient ) {
77
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
78
-		}
79
-		$view->navigatorBody = $html;
80
-
81
-		/** client/html/catalog/stage/navigator/standard/template-body
82
-		 * Relative path to the HTML body template of the catalog stage navigator 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
-		 * should be replaced by the name of the new class.
95
-		 *
96
-		 * @param string Relative path to the template creating code for the HTML page body
97
-		 * @since 2014.03
98
-		 * @category Developer
99
-		 * @see client/html/catalog/stage/navigator/standard/template-header
100
-		 */
101
-		$tplconf = 'client/html/catalog/stage/navigator/standard/template-body';
102
-		$default = 'catalog/stage/navigator-body-default.php';
103
-
104
-		return $view->render( $view->config( $tplconf, $default ) );
105
-	}
106
-
107
-
108
-	/**
109
-	 * Returns the HTML string for insertion into the header.
110
-	 *
111
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
112
-	 * @param array &$tags Result array for the list of tags that are associated to the output
113
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114
-	 * @return string|null String including HTML tags for the header on error
115
-	 */
116
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
117
-	{
118
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
119
-
120
-		$html = '';
121
-		foreach( $this->getSubClients() as $subclient ) {
122
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
123
-		}
124
-		$view->navigatorHeader = $html;
125
-
126
-		/** client/html/catalog/stage/navigator/standard/template-header
127
-		 * Relative path to the HTML header template of the catalog stage navigator client.
128
-		 *
129
-		 * The template file contains the HTML code and processing instructions
130
-		 * to generate the HTML code that is inserted into the HTML page header
131
-		 * of the rendered page in the frontend. The configuration string is the
132
-		 * path to the template file relative to the templates directory (usually
133
-		 * in client/html/templates).
134
-		 *
135
-		 * You can overwrite the template file configuration in extensions and
136
-		 * provide alternative templates. These alternative templates should be
137
-		 * named like the default one but with the string "standard" replaced by
138
-		 * an unique name. You may use the name of your project for this. If
139
-		 * you've implemented an alternative client class as well, "standard"
140
-		 * should be replaced by the name of the new class.
141
-		 *
142
-		 * @param string Relative path to the template creating code for the HTML page head
143
-		 * @since 2014.03
144
-		 * @category Developer
145
-		 * @see client/html/catalog/stage/navigator/standard/template-body
146
-		 */
147
-		$tplconf = 'client/html/catalog/stage/navigator/standard/template-header';
148
-		$default = 'catalog/stage/navigator-header-default.php';
149
-
150
-		return $view->render( $view->config( $tplconf, $default ) );
151
-	}
152
-
153
-
154
-	/**
155
-	 * Returns the sub-client given by its name.
156
-	 *
157
-	 * @param string $type Name of the client type
158
-	 * @param string|null $name Name of the sub-client (Default if null)
159
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
160
-	 */
161
-	public function getSubClient( $type, $name = null )
162
-	{
163
-		/** client/html/catalog/stage/navigator/decorators/excludes
164
-		 * Excludes decorators added by the "common" option from the catalog stage navigator html client
165
-		 *
166
-		 * Decorators extend the functionality of a class by adding new aspects
167
-		 * (e.g. log what is currently done), executing the methods of the underlying
168
-		 * class only in certain conditions (e.g. only for logged in users) or
169
-		 * modify what is returned to the caller.
170
-		 *
171
-		 * This option allows you to remove a decorator added via
172
-		 * "client/html/common/decorators/default" before they are wrapped
173
-		 * around the html client.
174
-		 *
175
-		 *  client/html/catalog/stage/navigator/decorators/excludes = array( 'decorator1' )
176
-		 *
177
-		 * This would remove the decorator named "decorator1" from the list of
178
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
179
-		 * "client/html/common/decorators/default" to the html client.
180
-		 *
181
-		 * @param array List of decorator names
182
-		 * @since 2014.05
183
-		 * @category Developer
184
-		 * @see client/html/common/decorators/default
185
-		 * @see client/html/catalog/stage/navigator/decorators/global
186
-		 * @see client/html/catalog/stage/navigator/decorators/local
187
-		 */
188
-
189
-		/** client/html/catalog/stage/navigator/decorators/global
190
-		 * Adds a list of globally available decorators only to the catalog stage navigator html client
191
-		 *
192
-		 * Decorators extend the functionality of a class by adding new aspects
193
-		 * (e.g. log what is currently done), executing the methods of the underlying
194
-		 * class only in certain conditions (e.g. only for logged in users) or
195
-		 * modify what is returned to the caller.
196
-		 *
197
-		 * This option allows you to wrap global decorators
198
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
199
-		 *
200
-		 *  client/html/catalog/stage/navigator/decorators/global = array( 'decorator1' )
201
-		 *
202
-		 * This would add the decorator named "decorator1" defined by
203
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
204
-		 *
205
-		 * @param array List of decorator names
206
-		 * @since 2014.05
207
-		 * @category Developer
208
-		 * @see client/html/common/decorators/default
209
-		 * @see client/html/catalog/stage/navigator/decorators/excludes
210
-		 * @see client/html/catalog/stage/navigator/decorators/local
211
-		 */
212
-
213
-		/** client/html/catalog/stage/navigator/decorators/local
214
-		 * Adds a list of local decorators only to the catalog stage navigator html client
215
-		 *
216
-		 * Decorators extend the functionality of a class by adding new aspects
217
-		 * (e.g. log what is currently done), executing the methods of the underlying
218
-		 * class only in certain conditions (e.g. only for logged in users) or
219
-		 * modify what is returned to the caller.
220
-		 *
221
-		 * This option allows you to wrap local decorators
222
-		 * ("\Aimeos\Client\Html\Catalog\Decorator\*") around the html client.
223
-		 *
224
-		 *  client/html/catalog/stage/navigator/decorators/local = array( 'decorator2' )
225
-		 *
226
-		 * This would add the decorator named "decorator2" defined by
227
-		 * "\Aimeos\Client\Html\Catalog\Decorator\Decorator2" only to the html client.
228
-		 *
229
-		 * @param array List of decorator names
230
-		 * @since 2014.05
231
-		 * @category Developer
232
-		 * @see client/html/common/decorators/default
233
-		 * @see client/html/catalog/stage/navigator/decorators/excludes
234
-		 * @see client/html/catalog/stage/navigator/decorators/global
235
-		 */
236
-
237
-		return $this->createSubClient( 'catalog/stage/navigator/' . $type, $name );
238
-	}
239
-
240
-
241
-	/**
242
-	 * Modifies the cached body content to replace content based on sessions or cookies.
243
-	 *
244
-	 * @param string $content Cached content
245
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
246
-	 * @return string Modified body content
247
-	 */
248
-	public function modifyBody( $content, $uid )
249
-	{
250
-		return $this->replaceSection( $content, $this->getBody( $uid ), 'catalog.stage.navigator' );
251
-	}
252
-
253
-
254
-	/**
255
-	 * Modifies the cached header content to replace content based on sessions or cookies.
256
-	 *
257
-	 * @param string $content Cached content
258
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
259
-	 * @return string Modified body content
260
-	 */
261
-	public function modifyHeader( $content, $uid )
262
-	{
263
-		return $this->replaceSection( $content, $this->getHeader( $uid ), 'catalog.stage.navigator' );
264
-	}
265
-
266
-
267
-	/**
268
-	 * Returns the list of sub-client names configured for the client.
269
-	 *
270
-	 * @return array List of HTML client names
271
-	 */
272
-	protected function getSubClientNames()
273
-	{
274
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
275
-	}
276
-
277
-
278
-	/**
279
-	 * Sets the necessary parameter values in the view.
280
-	 *
281
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
282
-	 * @param array &$tags Result array for the list of tags that are associated to the output
283
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
284
-	 * @return \Aimeos\MW\View\Iface Modified view object
285
-	 */
286
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
287
-	{
288
-		if( !isset( $this->view ) )
289
-		{
290
-			if( ( $pos = $view->param( 'l_pos' ) ) !== null && ( $pid = $view->param( 'd_prodid' ) ) !== null )
291
-			{
292
-				if( $pos < 1 ) {
293
-					$start = 0; $size = 2;
294
-				} else {
295
-					$start = $pos - 1; $size = 3;
296
-				}
297
-
298
-				$context = $this->getContext();
299
-				$site = $context->getLocale()->getSite()->getCode();
300
-				$params = $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
301
-
302
-				$filter = $this->getProductListFilterByParam( $params );
303
-				$filter->setSlice( $start, $size );
304
-				$total = null;
305
-
306
-				$controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
307
-				$products = $controller->getIndexItems( $filter, array( 'text' ), $total );
308
-
309
-				if( ( $count = count( $products ) ) > 1 )
310
-				{
311
-					$enc = $view->encoder();
312
-					$listPos = array_search( $pid, array_keys( $products ) );
313
-
314
-					$target = $view->config( 'client/html/catalog/detail/url/target' );
315
-					$controller = $view->config( 'client/html/catalog/detail/url/controller', 'catalog' );
316
-					$action = $view->config( 'client/html/catalog/detail/url/action', 'detail' );
317
-					$config = $view->config( 'client/html/catalog/detail/url/config', array() );
318
-
319
-					if( $listPos > 0 && ( $product = reset( $products ) ) !== false )
320
-					{
321
-						$param = array(
322
-							'd_prodid' => $product->getId(),
323
-							'd_name' => $enc->url( $product->getName( 'url ' ) ),
324
-							'l_pos' => $pos - 1
325
-						);
326
-						$view->navigationPrev = $view->url( $target, $controller, $action, $param, array(), $config );
327
-					}
328
-
329
-					if( $listPos < $count - 1 && ( $product = end( $products ) ) !== false )
330
-					{
331
-						$param = array(
332
-							'd_prodid' => $product->getId(),
333
-							'd_name' => $enc->url( $product->getName( 'url' ) ),
334
-							'l_pos' => $pos + 1
335
-						);
336
-						$view->navigationNext = $view->url( $target, $controller, $action, $param, array(), $config );
337
-					}
338
-				}
339
-			}
340
-
341
-			$this->view = $view;
342
-		}
343
-
344
-		return $this->view;
345
-	}
25
+    /** client/html/catalog/stage/navigator/standard/subparts
26
+     * List of HTML sub-clients rendered within the catalog stage navigator 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/catalog/stage/navigator/standard/subparts';
59
+    private $subPartNames = array();
60
+    private $view;
61
+
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 );
74
+
75
+        $html = '';
76
+        foreach( $this->getSubClients() as $subclient ) {
77
+            $html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
78
+        }
79
+        $view->navigatorBody = $html;
80
+
81
+        /** client/html/catalog/stage/navigator/standard/template-body
82
+         * Relative path to the HTML body template of the catalog stage navigator 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
+         * should be replaced by the name of the new class.
95
+         *
96
+         * @param string Relative path to the template creating code for the HTML page body
97
+         * @since 2014.03
98
+         * @category Developer
99
+         * @see client/html/catalog/stage/navigator/standard/template-header
100
+         */
101
+        $tplconf = 'client/html/catalog/stage/navigator/standard/template-body';
102
+        $default = 'catalog/stage/navigator-body-default.php';
103
+
104
+        return $view->render( $view->config( $tplconf, $default ) );
105
+    }
106
+
107
+
108
+    /**
109
+     * Returns the HTML string for insertion into the header.
110
+     *
111
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
112
+     * @param array &$tags Result array for the list of tags that are associated to the output
113
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114
+     * @return string|null String including HTML tags for the header on error
115
+     */
116
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
117
+    {
118
+        $view = $this->setViewParams( $this->getView(), $tags, $expire );
119
+
120
+        $html = '';
121
+        foreach( $this->getSubClients() as $subclient ) {
122
+            $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
123
+        }
124
+        $view->navigatorHeader = $html;
125
+
126
+        /** client/html/catalog/stage/navigator/standard/template-header
127
+         * Relative path to the HTML header template of the catalog stage navigator client.
128
+         *
129
+         * The template file contains the HTML code and processing instructions
130
+         * to generate the HTML code that is inserted into the HTML page header
131
+         * of the rendered page in the frontend. The configuration string is the
132
+         * path to the template file relative to the templates directory (usually
133
+         * in client/html/templates).
134
+         *
135
+         * You can overwrite the template file configuration in extensions and
136
+         * provide alternative templates. These alternative templates should be
137
+         * named like the default one but with the string "standard" replaced by
138
+         * an unique name. You may use the name of your project for this. If
139
+         * you've implemented an alternative client class as well, "standard"
140
+         * should be replaced by the name of the new class.
141
+         *
142
+         * @param string Relative path to the template creating code for the HTML page head
143
+         * @since 2014.03
144
+         * @category Developer
145
+         * @see client/html/catalog/stage/navigator/standard/template-body
146
+         */
147
+        $tplconf = 'client/html/catalog/stage/navigator/standard/template-header';
148
+        $default = 'catalog/stage/navigator-header-default.php';
149
+
150
+        return $view->render( $view->config( $tplconf, $default ) );
151
+    }
152
+
153
+
154
+    /**
155
+     * Returns the sub-client given by its name.
156
+     *
157
+     * @param string $type Name of the client type
158
+     * @param string|null $name Name of the sub-client (Default if null)
159
+     * @return \Aimeos\Client\Html\Iface Sub-client object
160
+     */
161
+    public function getSubClient( $type, $name = null )
162
+    {
163
+        /** client/html/catalog/stage/navigator/decorators/excludes
164
+         * Excludes decorators added by the "common" option from the catalog stage navigator html client
165
+         *
166
+         * Decorators extend the functionality of a class by adding new aspects
167
+         * (e.g. log what is currently done), executing the methods of the underlying
168
+         * class only in certain conditions (e.g. only for logged in users) or
169
+         * modify what is returned to the caller.
170
+         *
171
+         * This option allows you to remove a decorator added via
172
+         * "client/html/common/decorators/default" before they are wrapped
173
+         * around the html client.
174
+         *
175
+         *  client/html/catalog/stage/navigator/decorators/excludes = array( 'decorator1' )
176
+         *
177
+         * This would remove the decorator named "decorator1" from the list of
178
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
179
+         * "client/html/common/decorators/default" to the html client.
180
+         *
181
+         * @param array List of decorator names
182
+         * @since 2014.05
183
+         * @category Developer
184
+         * @see client/html/common/decorators/default
185
+         * @see client/html/catalog/stage/navigator/decorators/global
186
+         * @see client/html/catalog/stage/navigator/decorators/local
187
+         */
188
+
189
+        /** client/html/catalog/stage/navigator/decorators/global
190
+         * Adds a list of globally available decorators only to the catalog stage navigator html client
191
+         *
192
+         * Decorators extend the functionality of a class by adding new aspects
193
+         * (e.g. log what is currently done), executing the methods of the underlying
194
+         * class only in certain conditions (e.g. only for logged in users) or
195
+         * modify what is returned to the caller.
196
+         *
197
+         * This option allows you to wrap global decorators
198
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
199
+         *
200
+         *  client/html/catalog/stage/navigator/decorators/global = array( 'decorator1' )
201
+         *
202
+         * This would add the decorator named "decorator1" defined by
203
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
204
+         *
205
+         * @param array List of decorator names
206
+         * @since 2014.05
207
+         * @category Developer
208
+         * @see client/html/common/decorators/default
209
+         * @see client/html/catalog/stage/navigator/decorators/excludes
210
+         * @see client/html/catalog/stage/navigator/decorators/local
211
+         */
212
+
213
+        /** client/html/catalog/stage/navigator/decorators/local
214
+         * Adds a list of local decorators only to the catalog stage navigator html client
215
+         *
216
+         * Decorators extend the functionality of a class by adding new aspects
217
+         * (e.g. log what is currently done), executing the methods of the underlying
218
+         * class only in certain conditions (e.g. only for logged in users) or
219
+         * modify what is returned to the caller.
220
+         *
221
+         * This option allows you to wrap local decorators
222
+         * ("\Aimeos\Client\Html\Catalog\Decorator\*") around the html client.
223
+         *
224
+         *  client/html/catalog/stage/navigator/decorators/local = array( 'decorator2' )
225
+         *
226
+         * This would add the decorator named "decorator2" defined by
227
+         * "\Aimeos\Client\Html\Catalog\Decorator\Decorator2" only to the html client.
228
+         *
229
+         * @param array List of decorator names
230
+         * @since 2014.05
231
+         * @category Developer
232
+         * @see client/html/common/decorators/default
233
+         * @see client/html/catalog/stage/navigator/decorators/excludes
234
+         * @see client/html/catalog/stage/navigator/decorators/global
235
+         */
236
+
237
+        return $this->createSubClient( 'catalog/stage/navigator/' . $type, $name );
238
+    }
239
+
240
+
241
+    /**
242
+     * Modifies the cached body content to replace content based on sessions or cookies.
243
+     *
244
+     * @param string $content Cached content
245
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
246
+     * @return string Modified body content
247
+     */
248
+    public function modifyBody( $content, $uid )
249
+    {
250
+        return $this->replaceSection( $content, $this->getBody( $uid ), 'catalog.stage.navigator' );
251
+    }
252
+
253
+
254
+    /**
255
+     * Modifies the cached header content to replace content based on sessions or cookies.
256
+     *
257
+     * @param string $content Cached content
258
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
259
+     * @return string Modified body content
260
+     */
261
+    public function modifyHeader( $content, $uid )
262
+    {
263
+        return $this->replaceSection( $content, $this->getHeader( $uid ), 'catalog.stage.navigator' );
264
+    }
265
+
266
+
267
+    /**
268
+     * Returns the list of sub-client names configured for the client.
269
+     *
270
+     * @return array List of HTML client names
271
+     */
272
+    protected function getSubClientNames()
273
+    {
274
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
275
+    }
276
+
277
+
278
+    /**
279
+     * Sets the necessary parameter values in the view.
280
+     *
281
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
282
+     * @param array &$tags Result array for the list of tags that are associated to the output
283
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
284
+     * @return \Aimeos\MW\View\Iface Modified view object
285
+     */
286
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
287
+    {
288
+        if( !isset( $this->view ) )
289
+        {
290
+            if( ( $pos = $view->param( 'l_pos' ) ) !== null && ( $pid = $view->param( 'd_prodid' ) ) !== null )
291
+            {
292
+                if( $pos < 1 ) {
293
+                    $start = 0; $size = 2;
294
+                } else {
295
+                    $start = $pos - 1; $size = 3;
296
+                }
297
+
298
+                $context = $this->getContext();
299
+                $site = $context->getLocale()->getSite()->getCode();
300
+                $params = $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
301
+
302
+                $filter = $this->getProductListFilterByParam( $params );
303
+                $filter->setSlice( $start, $size );
304
+                $total = null;
305
+
306
+                $controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
307
+                $products = $controller->getIndexItems( $filter, array( 'text' ), $total );
308
+
309
+                if( ( $count = count( $products ) ) > 1 )
310
+                {
311
+                    $enc = $view->encoder();
312
+                    $listPos = array_search( $pid, array_keys( $products ) );
313
+
314
+                    $target = $view->config( 'client/html/catalog/detail/url/target' );
315
+                    $controller = $view->config( 'client/html/catalog/detail/url/controller', 'catalog' );
316
+                    $action = $view->config( 'client/html/catalog/detail/url/action', 'detail' );
317
+                    $config = $view->config( 'client/html/catalog/detail/url/config', array() );
318
+
319
+                    if( $listPos > 0 && ( $product = reset( $products ) ) !== false )
320
+                    {
321
+                        $param = array(
322
+                            'd_prodid' => $product->getId(),
323
+                            'd_name' => $enc->url( $product->getName( 'url ' ) ),
324
+                            'l_pos' => $pos - 1
325
+                        );
326
+                        $view->navigationPrev = $view->url( $target, $controller, $action, $param, array(), $config );
327
+                    }
328
+
329
+                    if( $listPos < $count - 1 && ( $product = end( $products ) ) !== false )
330
+                    {
331
+                        $param = array(
332
+                            'd_prodid' => $product->getId(),
333
+                            'd_name' => $enc->url( $product->getName( 'url' ) ),
334
+                            'l_pos' => $pos + 1
335
+                        );
336
+                        $view->navigationNext = $view->url( $target, $controller, $action, $param, array(), $config );
337
+                    }
338
+                }
339
+            }
340
+
341
+            $this->view = $view;
342
+        }
343
+
344
+        return $this->view;
345
+    }
346 346
 }
347 347
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -68,13 +68,13 @@  discard block
 block discarded – undo
68 68
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
69 69
 	 * @return string HTML code
70 70
 	 */
71
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
71
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
72 72
 	{
73
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
73
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
74 74
 
75 75
 		$html = '';
76
-		foreach( $this->getSubClients() as $subclient ) {
77
-			$html .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
76
+		foreach ($this->getSubClients() as $subclient) {
77
+			$html .= $subclient->setView($view)->getBody($uid, $tags, $expire);
78 78
 		}
79 79
 		$view->navigatorBody = $html;
80 80
 
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
 		$tplconf = 'client/html/catalog/stage/navigator/standard/template-body';
102 102
 		$default = 'catalog/stage/navigator-body-default.php';
103 103
 
104
-		return $view->render( $view->config( $tplconf, $default ) );
104
+		return $view->render($view->config($tplconf, $default));
105 105
 	}
106 106
 
107 107
 
@@ -113,13 +113,13 @@  discard block
 block discarded – undo
113 113
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
114 114
 	 * @return string|null String including HTML tags for the header on error
115 115
 	 */
116
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
117 117
 	{
118
-		$view = $this->setViewParams( $this->getView(), $tags, $expire );
118
+		$view = $this->setViewParams($this->getView(), $tags, $expire);
119 119
 
120 120
 		$html = '';
121
-		foreach( $this->getSubClients() as $subclient ) {
122
-			$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
121
+		foreach ($this->getSubClients() as $subclient) {
122
+			$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
123 123
 		}
124 124
 		$view->navigatorHeader = $html;
125 125
 
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
 		$tplconf = 'client/html/catalog/stage/navigator/standard/template-header';
148 148
 		$default = 'catalog/stage/navigator-header-default.php';
149 149
 
150
-		return $view->render( $view->config( $tplconf, $default ) );
150
+		return $view->render($view->config($tplconf, $default));
151 151
 	}
152 152
 
153 153
 
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
 	 * @param string|null $name Name of the sub-client (Default if null)
159 159
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
160 160
 	 */
161
-	public function getSubClient( $type, $name = null )
161
+	public function getSubClient($type, $name = null)
162 162
 	{
163 163
 		/** client/html/catalog/stage/navigator/decorators/excludes
164 164
 		 * Excludes decorators added by the "common" option from the catalog stage navigator html client
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
 		 * @see client/html/catalog/stage/navigator/decorators/global
235 235
 		 */
236 236
 
237
-		return $this->createSubClient( 'catalog/stage/navigator/' . $type, $name );
237
+		return $this->createSubClient('catalog/stage/navigator/'.$type, $name);
238 238
 	}
239 239
 
240 240
 
@@ -245,9 +245,9 @@  discard block
 block discarded – undo
245 245
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
246 246
 	 * @return string Modified body content
247 247
 	 */
248
-	public function modifyBody( $content, $uid )
248
+	public function modifyBody($content, $uid)
249 249
 	{
250
-		return $this->replaceSection( $content, $this->getBody( $uid ), 'catalog.stage.navigator' );
250
+		return $this->replaceSection($content, $this->getBody($uid), 'catalog.stage.navigator');
251 251
 	}
252 252
 
253 253
 
@@ -258,9 +258,9 @@  discard block
 block discarded – undo
258 258
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
259 259
 	 * @return string Modified body content
260 260
 	 */
261
-	public function modifyHeader( $content, $uid )
261
+	public function modifyHeader($content, $uid)
262 262
 	{
263
-		return $this->replaceSection( $content, $this->getHeader( $uid ), 'catalog.stage.navigator' );
263
+		return $this->replaceSection($content, $this->getHeader($uid), 'catalog.stage.navigator');
264 264
 	}
265 265
 
266 266
 
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
 	 */
272 272
 	protected function getSubClientNames()
273 273
 	{
274
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
274
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
275 275
 	}
276 276
 
277 277
 
@@ -283,13 +283,13 @@  discard block
 block discarded – undo
283 283
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
284 284
 	 * @return \Aimeos\MW\View\Iface Modified view object
285 285
 	 */
286
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
286
+	protected function setViewParams(\Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null)
287 287
 	{
288
-		if( !isset( $this->view ) )
288
+		if (!isset($this->view))
289 289
 		{
290
-			if( ( $pos = $view->param( 'l_pos' ) ) !== null && ( $pid = $view->param( 'd_prodid' ) ) !== null )
290
+			if (($pos = $view->param('l_pos')) !== null && ($pid = $view->param('d_prodid')) !== null)
291 291
 			{
292
-				if( $pos < 1 ) {
292
+				if ($pos < 1) {
293 293
 					$start = 0; $size = 2;
294 294
 				} else {
295 295
 					$start = $pos - 1; $size = 3;
@@ -297,43 +297,43 @@  discard block
 block discarded – undo
297 297
 
298 298
 				$context = $this->getContext();
299 299
 				$site = $context->getLocale()->getSite()->getCode();
300
-				$params = $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
300
+				$params = $context->getSession()->get('aimeos/catalog/lists/params/last/'.$site, array());
301 301
 
302
-				$filter = $this->getProductListFilterByParam( $params );
303
-				$filter->setSlice( $start, $size );
302
+				$filter = $this->getProductListFilterByParam($params);
303
+				$filter->setSlice($start, $size);
304 304
 				$total = null;
305 305
 
306
-				$controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
307
-				$products = $controller->getIndexItems( $filter, array( 'text' ), $total );
306
+				$controller = \Aimeos\Controller\Frontend\Factory::createController($context, 'catalog');
307
+				$products = $controller->getIndexItems($filter, array('text'), $total);
308 308
 
309
-				if( ( $count = count( $products ) ) > 1 )
309
+				if (($count = count($products)) > 1)
310 310
 				{
311 311
 					$enc = $view->encoder();
312
-					$listPos = array_search( $pid, array_keys( $products ) );
312
+					$listPos = array_search($pid, array_keys($products));
313 313
 
314
-					$target = $view->config( 'client/html/catalog/detail/url/target' );
315
-					$controller = $view->config( 'client/html/catalog/detail/url/controller', 'catalog' );
316
-					$action = $view->config( 'client/html/catalog/detail/url/action', 'detail' );
317
-					$config = $view->config( 'client/html/catalog/detail/url/config', array() );
314
+					$target = $view->config('client/html/catalog/detail/url/target');
315
+					$controller = $view->config('client/html/catalog/detail/url/controller', 'catalog');
316
+					$action = $view->config('client/html/catalog/detail/url/action', 'detail');
317
+					$config = $view->config('client/html/catalog/detail/url/config', array());
318 318
 
319
-					if( $listPos > 0 && ( $product = reset( $products ) ) !== false )
319
+					if ($listPos > 0 && ($product = reset($products)) !== false)
320 320
 					{
321 321
 						$param = array(
322 322
 							'd_prodid' => $product->getId(),
323
-							'd_name' => $enc->url( $product->getName( 'url ' ) ),
323
+							'd_name' => $enc->url($product->getName('url ')),
324 324
 							'l_pos' => $pos - 1
325 325
 						);
326
-						$view->navigationPrev = $view->url( $target, $controller, $action, $param, array(), $config );
326
+						$view->navigationPrev = $view->url($target, $controller, $action, $param, array(), $config);
327 327
 					}
328 328
 
329
-					if( $listPos < $count - 1 && ( $product = end( $products ) ) !== false )
329
+					if ($listPos < $count - 1 && ($product = end($products)) !== false)
330 330
 					{
331 331
 						$param = array(
332 332
 							'd_prodid' => $product->getId(),
333
-							'd_name' => $enc->url( $product->getName( 'url' ) ),
333
+							'd_name' => $enc->url($product->getName('url')),
334 334
 							'l_pos' => $pos + 1
335 335
 						);
336
-						$view->navigationNext = $view->url( $target, $controller, $action, $param, array(), $config );
336
+						$view->navigationNext = $view->url($target, $controller, $action, $param, array(), $config);
337 337
 					}
338 338
 				}
339 339
 			}
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@
 block discarded – undo
110 110
 	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
111 111
 	 * @param array &$tags Result array for the list of tags that are associated to the output
112 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
113
+	 * @return string String including HTML tags for the header on error
114 114
 	 */
115 115
 	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
116 116
 	{
Please login to merge, or discard this patch.
client/html/src/Client/Html/Catalog/Stage/Factory.php 2 patches
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 stage 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/catalog/stage/name
37
-		 * Class name of the used catalog stage 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\Catalog\Stage\Standard
47
-		 *
48
-		 * and you want to replace it with your own version named
49
-		 *
50
-		 *  \Aimeos\Client\Html\Catalog\Stage\Mystage
51
-		 *
52
-		 * then you have to set the this configuration option:
53
-		 *
54
-		 *  client/html/catalog/stage/name = Mystage
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 "MyStage"!
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/catalog/stage/name', 'Standard' );
71
-		}
25
+    /**
26
+     * Creates a stage 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/catalog/stage/name
37
+         * Class name of the used catalog stage 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\Catalog\Stage\Standard
47
+         *
48
+         * and you want to replace it with your own version named
49
+         *
50
+         *  \Aimeos\Client\Html\Catalog\Stage\Mystage
51
+         *
52
+         * then you have to set the this configuration option:
53
+         *
54
+         *  client/html/catalog/stage/name = Mystage
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 "MyStage"!
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/catalog/stage/name', 'Standard' );
71
+        }
72 72
 
73
-		if( ctype_alnum( $name ) === false )
74
-		{
75
-			$classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Catalog\\Stage\\' . $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\\Catalog\\Stage\\' . $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\\Catalog\\Stage\\' . $name;
79
+        $iface = '\\Aimeos\\Client\\Html\\Iface';
80
+        $classname = '\\Aimeos\\Client\\Html\\Catalog\\Stage\\' . $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, 'catalog/stage' );
85
-	}
84
+        return self::addClientDecorators( $context, $client, $templatePaths, 'catalog/stage' );
85
+    }
86 86
 }
87 87
 
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
 	 * @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
32 32
 	 * @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
33 33
 	 */
34
-	public static function createClient( \Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null )
34
+	public static function createClient(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null)
35 35
 	{
36 36
 		/** client/html/catalog/stage/name
37 37
 		 * Class name of the used catalog stage client implementation
@@ -66,22 +66,22 @@  discard block
 block discarded – undo
66 66
 		 * @since 2014.03
67 67
 		 * @category Developer
68 68
 		 */
69
-		if( $name === null ) {
70
-			$name = $context->getConfig()->get( 'client/html/catalog/stage/name', 'Standard' );
69
+		if ($name === null) {
70
+			$name = $context->getConfig()->get('client/html/catalog/stage/name', 'Standard');
71 71
 		}
72 72
 
73
-		if( ctype_alnum( $name ) === false )
73
+		if (ctype_alnum($name) === false)
74 74
 		{
75
-			$classname = is_string( $name ) ? '\\Aimeos\\Client\\Html\\Catalog\\Stage\\' . $name : '<not a string>';
76
-			throw new \Aimeos\Client\Html\Exception( sprintf( 'Invalid characters in class name "%1$s"', $classname ) );
75
+			$classname = is_string($name) ? '\\Aimeos\\Client\\Html\\Catalog\\Stage\\'.$name : '<not a string>';
76
+			throw new \Aimeos\Client\Html\Exception(sprintf('Invalid characters in class name "%1$s"', $classname));
77 77
 		}
78 78
 
79 79
 		$iface = '\\Aimeos\\Client\\Html\\Iface';
80
-		$classname = '\\Aimeos\\Client\\Html\\Catalog\\Stage\\' . $name;
80
+		$classname = '\\Aimeos\\Client\\Html\\Catalog\\Stage\\'.$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, 'catalog/stage' );
84
+		return self::addClientDecorators($context, $client, $templatePaths, 'catalog/stage');
85 85
 	}
86 86
 }
87 87
 
Please login to merge, or discard this patch.
client/html/src/Client/Html/Catalog/Stage/Standard.php 3 patches
Spacing   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 	 * @since 2014.09
90 90
 	 * @category Developer
91 91
 	 */
92
-	private $subPartNames = array( 'image', 'breadcrumb', 'navigator' );
92
+	private $subPartNames = array('image', 'breadcrumb', 'navigator');
93 93
 
94 94
 	private $tags = array();
95 95
 	private $expire;
@@ -104,9 +104,9 @@  discard block
 block discarded – undo
104 104
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
105 105
 	 * @return string HTML code
106 106
 	 */
107
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
107
+	public function getBody($uid = '', array &$tags = array(), &$expire = null)
108 108
 	{
109
-		$prefixes = array( 'f' );
109
+		$prefixes = array('f');
110 110
 		$context = $this->getContext();
111 111
 
112 112
 		/** client/html/catalog/stage
@@ -121,41 +121,41 @@  discard block
 block discarded – undo
121 121
 		 */
122 122
 		$confkey = 'client/html/catalog/stage';
123 123
 
124
-		if( $context->getUserId() != null || ( $html = $this->getCached( 'body', $uid, $prefixes, $confkey ) ) === null )
124
+		if ($context->getUserId() != null || ($html = $this->getCached('body', $uid, $prefixes, $confkey)) === null)
125 125
 		{
126 126
 			$view = $this->getView();
127 127
 
128 128
 			try
129 129
 			{
130
-				$view = $this->setViewParams( $view, $tags, $expire );
130
+				$view = $this->setViewParams($view, $tags, $expire);
131 131
 
132 132
 				$output = '';
133
-				foreach( $this->getSubClients() as $subclient ) {
134
-					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
133
+				foreach ($this->getSubClients() as $subclient) {
134
+					$output .= $subclient->setView($view)->getBody($uid, $tags, $expire);
135 135
 				}
136 136
 				$view->stageBody = $output;
137 137
 			}
138
-			catch( \Aimeos\Client\Html\Exception $e )
138
+			catch (\Aimeos\Client\Html\Exception $e)
139 139
 			{
140
-				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
141
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
140
+				$error = array($context->getI18n()->dt('client', $e->getMessage()));
141
+				$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
142 142
 			}
143
-			catch( \Aimeos\Controller\Frontend\Exception $e )
143
+			catch (\Aimeos\Controller\Frontend\Exception $e)
144 144
 			{
145
-				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
146
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
145
+				$error = array($context->getI18n()->dt('controller/frontend', $e->getMessage()));
146
+				$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
147 147
 			}
148
-			catch( \Aimeos\MShop\Exception $e )
148
+			catch (\Aimeos\MShop\Exception $e)
149 149
 			{
150
-				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
151
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
150
+				$error = array($context->getI18n()->dt('mshop', $e->getMessage()));
151
+				$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
152 152
 			}
153
-			catch( \Exception $e )
153
+			catch (\Exception $e)
154 154
 			{
155
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
155
+				$context->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
156 156
 
157
-				$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
158
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
157
+				$error = array($context->getI18n()->dt('client', 'A non-recoverable error occured'));
158
+				$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
159 159
 			}
160 160
 
161 161
 			/** client/html/catalog/stage/standard/template-body
@@ -181,13 +181,13 @@  discard block
 block discarded – undo
181 181
 			$tplconf = 'client/html/catalog/stage/standard/template-body';
182 182
 			$default = 'catalog/stage/body-default.php';
183 183
 
184
-			$html = $view->render( $view->config( $tplconf, $default ) );
184
+			$html = $view->render($view->config($tplconf, $default));
185 185
 
186
-			$this->setCached( 'body', $uid, $prefixes, $confkey, $html, $tags, $expire );
186
+			$this->setCached('body', $uid, $prefixes, $confkey, $html, $tags, $expire);
187 187
 		}
188 188
 		else
189 189
 		{
190
-			$html = $this->modifyBody( $html, $uid );
190
+			$html = $this->modifyBody($html, $uid);
191 191
 		}
192 192
 
193 193
 		return $html;
@@ -202,29 +202,29 @@  discard block
 block discarded – undo
202 202
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
203 203
 	 * @return string|null String including HTML tags for the header on error
204 204
 	 */
205
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
205
+	public function getHeader($uid = '', array &$tags = array(), &$expire = null)
206 206
 	{
207
-		$prefixes = array( 'f' );
207
+		$prefixes = array('f');
208 208
 		$context = $this->getContext();
209 209
 		$confkey = 'client/html/catalog/stage';
210 210
 
211
-		if( $context->getUserId() != null || ( $html = $this->getCached( 'header', $uid, $prefixes, $confkey ) ) === null )
211
+		if ($context->getUserId() != null || ($html = $this->getCached('header', $uid, $prefixes, $confkey)) === null)
212 212
 		{
213 213
 			$view = $this->getView();
214 214
 
215 215
 			try
216 216
 			{
217
-				$view = $this->setViewParams( $view, $tags, $expire );
217
+				$view = $this->setViewParams($view, $tags, $expire);
218 218
 
219 219
 				$html = '';
220
-				foreach( $this->getSubClients() as $subclient ) {
221
-					$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
220
+				foreach ($this->getSubClients() as $subclient) {
221
+					$html .= $subclient->setView($view)->getHeader($uid, $tags, $expire);
222 222
 				}
223 223
 				$view->stageHeader = $html;
224 224
 			}
225
-			catch( \Exception $e )
225
+			catch (\Exception $e)
226 226
 			{
227
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
227
+				$context->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
228 228
 			}
229 229
 
230 230
 			/** client/html/catalog/stage/standard/template-header
@@ -251,13 +251,13 @@  discard block
 block discarded – undo
251 251
 			$tplconf = 'client/html/catalog/stage/standard/template-header';
252 252
 			$default = 'catalog/stage/header-default.php';
253 253
 
254
-			$html = $view->render( $view->config( $tplconf, $default ) );
254
+			$html = $view->render($view->config($tplconf, $default));
255 255
 
256
-			$this->setCached( 'header', $uid, $prefixes, $confkey, $html, $tags, $expire );
256
+			$this->setCached('header', $uid, $prefixes, $confkey, $html, $tags, $expire);
257 257
 		}
258 258
 		else
259 259
 		{
260
-			$html = $this->modifyHeader( $html, $uid );
260
+			$html = $this->modifyHeader($html, $uid);
261 261
 		}
262 262
 
263 263
 		return $html;
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
 	 * @param string|null $name Name of the sub-client (Default if null)
272 272
 	 * @return \Aimeos\Client\Html\Iface Sub-client object
273 273
 	 */
274
-	public function getSubClient( $type, $name = null )
274
+	public function getSubClient($type, $name = null)
275 275
 	{
276 276
 		/** client/html/catalog/stage/decorators/excludes
277 277
 		 * Excludes decorators added by the "common" option from the catalog stage html client
@@ -346,7 +346,7 @@  discard block
 block discarded – undo
346 346
 		 * @see client/html/catalog/stage/decorators/excludes
347 347
 		 * @see client/html/catalog/stage/decorators/global
348 348
 		 */
349
-		return $this->createSubClient( 'catalog/stage/' . $type, $name );
349
+		return $this->createSubClient('catalog/stage/'.$type, $name);
350 350
 	}
351 351
 
352 352
 
@@ -363,28 +363,28 @@  discard block
 block discarded – undo
363 363
 		{
364 364
 			parent::process();
365 365
 		}
366
-		catch( \Aimeos\Client\Html\Exception $e )
366
+		catch (\Aimeos\Client\Html\Exception $e)
367 367
 		{
368
-			$error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
369
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
368
+			$error = array($this->getContext()->getI18n()->dt('client', $e->getMessage()));
369
+			$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
370 370
 		}
371
-		catch( \Aimeos\Controller\Frontend\Exception $e )
371
+		catch (\Aimeos\Controller\Frontend\Exception $e)
372 372
 		{
373
-			$error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
374
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
373
+			$error = array($this->getContext()->getI18n()->dt('controller/frontend', $e->getMessage()));
374
+			$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
375 375
 		}
376
-		catch( \Aimeos\MShop\Exception $e )
376
+		catch (\Aimeos\MShop\Exception $e)
377 377
 		{
378
-			$error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
379
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
378
+			$error = array($this->getContext()->getI18n()->dt('mshop', $e->getMessage()));
379
+			$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
380 380
 		}
381
-		catch( \Exception $e )
381
+		catch (\Exception $e)
382 382
 		{
383 383
 			$context = $this->getContext();
384
-			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
384
+			$context->getLogger()->log($e->getMessage().PHP_EOL.$e->getTraceAsString());
385 385
 
386
-			$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
387
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
386
+			$error = array($context->getI18n()->dt('client', 'A non-recoverable error occured'));
387
+			$view->stageErrorList = $view->get('stageErrorList', array()) + $error;
388 388
 		}
389 389
 	}
390 390
 
@@ -396,15 +396,15 @@  discard block
 block discarded – undo
396 396
 	 * @param array $prefixes List of prefixes the parameters must start with
397 397
 	 * @return array Associative list of parameters used by the html client
398 398
 	 */
399
-	protected function getClientParams( array $params, array $prefixes = array( 'f', 'l', 'd', 'a' ) )
399
+	protected function getClientParams(array $params, array $prefixes = array('f', 'l', 'd', 'a'))
400 400
 	{
401
-		$list = parent::getClientParams( $params, array_merge( $prefixes, array( 'l', 'd' ) ) );
401
+		$list = parent::getClientParams($params, array_merge($prefixes, array('l', 'd')));
402 402
 
403
-		if( isset( $list['l_pos'] ) && isset( $list['d_prodid'] ) )
403
+		if (isset($list['l_pos']) && isset($list['d_prodid']))
404 404
 		{
405 405
 			$context = $this->getContext();
406 406
 			$site = $context->getLocale()->getSite()->getCode();
407
-			$list += (array) $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
407
+			$list += (array) $context->getSession()->get('aimeos/catalog/lists/params/last/'.$site, array());
408 408
 		}
409 409
 
410 410
 		return $list;
@@ -418,7 +418,7 @@  discard block
 block discarded – undo
418 418
 	 */
419 419
 	protected function getSubClientNames()
420 420
 	{
421
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
421
+		return $this->getContext()->getConfig()->get($this->subPartPath, $this->subPartNames);
422 422
 	}
423 423
 
424 424
 
@@ -430,26 +430,26 @@  discard block
 block discarded – undo
430 430
 	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
431 431
 	 * @return \Aimeos\MW\View\Iface Modified view object
432 432
 	 */
433
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
433
+	protected function setViewParams(\Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null)
434 434
 	{
435
-		if( !isset( $this->cache ) )
435
+		if (!isset($this->cache))
436 436
 		{
437
-			$params = $this->getClientParams( $view->param(), array( 'f' ) );
437
+			$params = $this->getClientParams($view->param(), array('f'));
438 438
 
439
-			if( isset( $params['f_catid'] ) && $params['f_catid'] != '' )
439
+			if (isset($params['f_catid']) && $params['f_catid'] != '')
440 440
 			{
441 441
 				$context = $this->getContext();
442 442
 				$config = $context->getConfig();
443
-				$controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
443
+				$controller = \Aimeos\Controller\Frontend\Factory::createController($context, 'catalog');
444 444
 
445
-				$default = array( 'attribute', 'media', 'text' );
445
+				$default = array('attribute', 'media', 'text');
446 446
 
447 447
 				/** client/html/catalog/domains
448 448
 				 * A list of domain names whose items should be available in the catalog view templates
449 449
 				 *
450 450
 				 * @see client/html/catalog/stage/domains
451 451
 				 */
452
-				$domains = $config->get( 'client/html/catalog/domains', $default );
452
+				$domains = $config->get('client/html/catalog/domains', $default);
453 453
 
454 454
 				/** client/html/catalog/stage/standard/domains
455 455
 				 * A list of domain names whose items should be available in the catalog stage view template
@@ -472,15 +472,15 @@  discard block
 block discarded – undo
472 472
 				 * @see client/html/catalog/detail/domains
473 473
 				 * @see client/html/catalog/lists/domains
474 474
 				 */
475
-				$domains = $config->get( 'client/html/catalog/stage/standard/domains', $domains );
476
-				$stageCatPath = $controller->getCatalogPath( $params['f_catid'], $domains );
475
+				$domains = $config->get('client/html/catalog/stage/standard/domains', $domains);
476
+				$stageCatPath = $controller->getCatalogPath($params['f_catid'], $domains);
477 477
 
478
-				if( ( $categoryItem = end( $stageCatPath ) ) !== false ) {
478
+				if (($categoryItem = end($stageCatPath)) !== false) {
479 479
 					$view->stageCurrentCatItem = $categoryItem;
480 480
 				}
481 481
 
482
-				$this->addMetaItem( $stageCatPath, 'catalog', $this->expire, $this->tags );
483
-				$this->addMetaList( array_keys( $stageCatPath ), 'catalog', $this->expire );
482
+				$this->addMetaItem($stageCatPath, 'catalog', $this->expire, $this->tags);
483
+				$this->addMetaList(array_keys($stageCatPath), 'catalog', $this->expire);
484 484
 
485 485
 				$view->stageCatPath = $stageCatPath;
486 486
 			}
@@ -490,8 +490,8 @@  discard block
 block discarded – undo
490 490
 			$this->cache = $view;
491 491
 		}
492 492
 
493
-		$expire = $this->expires( $this->expire, $expire );
494
-		$tags = array_merge( $tags, $this->tags );
493
+		$expire = $this->expires($this->expire, $expire);
494
+		$tags = array_merge($tags, $this->tags);
495 495
 
496 496
 		return $this->cache;
497 497
 	}
Please login to merge, or discard this patch.
Braces   +11 added lines, -22 removed lines patch added patch discarded remove patch
@@ -211,23 +211,19 @@  discard block
 block discarded – undo
211 211
 					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
212 212
 				}
213 213
 				$view->detailBody = $output;
214
-			}
215
-			catch( \Aimeos\Client\Html\Exception $e )
214
+			} catch( \Aimeos\Client\Html\Exception $e )
216 215
 			{
217 216
 				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
218 217
 				$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
219
-			}
220
-			catch( \Aimeos\Controller\Frontend\Exception $e )
218
+			} catch( \Aimeos\Controller\Frontend\Exception $e )
221 219
 			{
222 220
 				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
223 221
 				$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
224
-			}
225
-			catch( \Aimeos\MShop\Exception $e )
222
+			} catch( \Aimeos\MShop\Exception $e )
226 223
 			{
227 224
 				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
228 225
 				$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
229
-			}
230
-			catch( \Exception $e )
226
+			} catch( \Exception $e )
231 227
 			{
232 228
 				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
233 229
 
@@ -261,8 +257,7 @@  discard block
 block discarded – undo
261 257
 			$html = $view->render( $view->config( $tplconf, $default ) );
262 258
 
263 259
 			$this->setCached( 'body', $uid, $prefixes, $confkey, $html, $tags, $expire );
264
-		}
265
-		else
260
+		} else
266 261
 		{
267 262
 			$html = $this->modifyBody( $html, $uid );
268 263
 		}
@@ -299,8 +294,7 @@  discard block
 block discarded – undo
299 294
 					$output .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
300 295
 				}
301 296
 				$view->detailHeader = $output;
302
-			}
303
-			catch( \Exception $e )
297
+			} catch( \Exception $e )
304 298
 			{
305 299
 				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
306 300
 			}
@@ -332,8 +326,7 @@  discard block
 block discarded – undo
332 326
 			$html = $view->render( $view->config( $tplconf, $default ) );
333 327
 
334 328
 			$this->setCached( 'header', $uid, $prefixes, $confkey, $html, $tags, $expire );
335
-		}
336
-		else
329
+		} else
337 330
 		{
338 331
 			$html = $this->modifyHeader( $html, $uid );
339 332
 		}
@@ -446,23 +439,19 @@  discard block
 block discarded – undo
446 439
 			$context->getSession()->set( 'aimeos/catalog/detail/params/last' . $site, $params );
447 440
 
448 441
 			parent::process();
449
-		}
450
-		catch( \Aimeos\Client\Html\Exception $e )
442
+		} catch( \Aimeos\Client\Html\Exception $e )
451 443
 		{
452 444
 			$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
453 445
 			$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
454
-		}
455
-		catch( \Aimeos\Controller\Frontend\Exception $e )
446
+		} catch( \Aimeos\Controller\Frontend\Exception $e )
456 447
 		{
457 448
 			$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
458 449
 			$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
459
-		}
460
-		catch( \Aimeos\MShop\Exception $e )
450
+		} catch( \Aimeos\MShop\Exception $e )
461 451
 		{
462 452
 			$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
463 453
 			$view->detailErrorList = $view->get( 'detailErrorList', array() ) + $error;
464
-		}
465
-		catch( \Exception $e )
454
+		} catch( \Exception $e )
466 455
 		{
467 456
 			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
468 457
 
Please login to merge, or discard this patch.
Indentation   +475 added lines, -475 removed lines patch added patch discarded remove patch
@@ -19,480 +19,480 @@
 block discarded – undo
19 19
  * @subpackage Html
20 20
  */
21 21
 class Standard
22
-	extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
-	implements \Aimeos\Client\Html\Common\Client\Factory\Iface
22
+    extends \Aimeos\Client\Html\Common\Client\Factory\Base
23
+    implements \Aimeos\Client\Html\Common\Client\Factory\Iface
24 24
 {
25
-	/** client/html/catalog/stage/standard/subparts
26
-	 * List of HTML sub-clients rendered within the catalog stage 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/catalog/stage/standard/subparts';
59
-
60
-	/** client/html/catalog/stage/image/name
61
-	 * Name of the image part used by the catalog stage client implementation
62
-	 *
63
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Image\Myname".
64
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
65
-	 *
66
-	 * @param string Last part of the client class name
67
-	 * @since 2014.03
68
-	 * @category Developer
69
-	 */
70
-
71
-	/** client/html/catalog/stage/breadcrumb/name
72
-	 * Name of the breadcrumb part used by the catalog stage client implementation
73
-	 *
74
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Breadcrumb\Myname".
75
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
76
-	 *
77
-	 * @param string Last part of the client class name
78
-	 * @since 2014.03
79
-	 * @category Developer
80
-	 */
81
-
82
-	/** client/html/catalog/stage/navigator/name
83
-	 * Name of the navigator part used by the catalog stage client implementation
84
-	 *
85
-	 * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Breadcrumb\Myname".
86
-	 * The name is case-sensitive and you should avoid camel case names like "MyName".
87
-	 *
88
-	 * @param string Last part of the client class name
89
-	 * @since 2014.09
90
-	 * @category Developer
91
-	 */
92
-	private $subPartNames = array( 'image', 'breadcrumb', 'navigator' );
93
-
94
-	private $tags = array();
95
-	private $expire;
96
-	private $cache;
97
-
98
-
99
-	/**
100
-	 * Returns the HTML code for insertion into the body.
101
-	 *
102
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
103
-	 * @param array &$tags Result array for the list of tags that are associated to the output
104
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
105
-	 * @return string HTML code
106
-	 */
107
-	public function getBody( $uid = '', array &$tags = array(), &$expire = null )
108
-	{
109
-		$prefixes = array( 'f' );
110
-		$context = $this->getContext();
111
-
112
-		/** client/html/catalog/stage
113
-		 * All parameters defined for the catalog stage component and its subparts
114
-		 *
115
-		 * This returns all settings related to the stage component.
116
-		 * Please refer to the single settings for details.
117
-		 *
118
-		 * @param array Associative list of name/value settings
119
-		 * @category Developer
120
-		 * @see client/html/catalog#stage
121
-		 */
122
-		$confkey = 'client/html/catalog/stage';
123
-
124
-		if( $context->getUserId() != null || ( $html = $this->getCached( 'body', $uid, $prefixes, $confkey ) ) === null )
125
-		{
126
-			$view = $this->getView();
127
-
128
-			try
129
-			{
130
-				$view = $this->setViewParams( $view, $tags, $expire );
131
-
132
-				$output = '';
133
-				foreach( $this->getSubClients() as $subclient ) {
134
-					$output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
135
-				}
136
-				$view->stageBody = $output;
137
-			}
138
-			catch( \Aimeos\Client\Html\Exception $e )
139
-			{
140
-				$error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
141
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
142
-			}
143
-			catch( \Aimeos\Controller\Frontend\Exception $e )
144
-			{
145
-				$error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
146
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
147
-			}
148
-			catch( \Aimeos\MShop\Exception $e )
149
-			{
150
-				$error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
151
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
152
-			}
153
-			catch( \Exception $e )
154
-			{
155
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
156
-
157
-				$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
158
-				$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
159
-			}
160
-
161
-			/** client/html/catalog/stage/standard/template-body
162
-			 * Relative path to the HTML body template of the catalog stage client.
163
-			 *
164
-			 * The template file contains the HTML code and processing instructions
165
-			 * to generate the result shown in the body of the frontend. The
166
-			 * configuration string is the path to the template file relative
167
-			 * to the templates directory (usually in client/html/templates).
168
-			 *
169
-			 * You can overwrite the template file configuration in extensions and
170
-			 * provide alternative templates. These alternative templates should be
171
-			 * named like the default one but with the string "standard" replaced by
172
-			 * an unique name. You may use the name of your project for this. If
173
-			 * you've implemented an alternative client class as well, "standard"
174
-			 * should be replaced by the name of the new class.
175
-			 *
176
-			 * @param string Relative path to the template creating code for the HTML page body
177
-			 * @since 2014.03
178
-			 * @category Developer
179
-			 * @see client/html/catalog/stage/standard/template-header
180
-			 */
181
-			$tplconf = 'client/html/catalog/stage/standard/template-body';
182
-			$default = 'catalog/stage/body-default.php';
183
-
184
-			$html = $view->render( $view->config( $tplconf, $default ) );
185
-
186
-			$this->setCached( 'body', $uid, $prefixes, $confkey, $html, $tags, $expire );
187
-		}
188
-		else
189
-		{
190
-			$html = $this->modifyBody( $html, $uid );
191
-		}
192
-
193
-		return $html;
194
-	}
195
-
196
-
197
-	/**
198
-	 * Returns the HTML string for insertion into the header.
199
-	 *
200
-	 * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
201
-	 * @param array &$tags Result array for the list of tags that are associated to the output
202
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
203
-	 * @return string String including HTML tags for the header on error
204
-	 */
205
-	public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
206
-	{
207
-		$prefixes = array( 'f' );
208
-		$context = $this->getContext();
209
-		$confkey = 'client/html/catalog/stage';
210
-
211
-		if( $context->getUserId() != null || ( $html = $this->getCached( 'header', $uid, $prefixes, $confkey ) ) === null )
212
-		{
213
-			$view = $this->getView();
214
-
215
-			try
216
-			{
217
-				$view = $this->setViewParams( $view, $tags, $expire );
218
-
219
-				$html = '';
220
-				foreach( $this->getSubClients() as $subclient ) {
221
-					$html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
222
-				}
223
-				$view->stageHeader = $html;
224
-			}
225
-			catch( \Exception $e )
226
-			{
227
-				$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
228
-			}
229
-
230
-			/** client/html/catalog/stage/standard/template-header
231
-			 * Relative path to the HTML header template of the catalog stage client.
232
-			 *
233
-			 * The template file contains the HTML code and processing instructions
234
-			 * to generate the HTML code that is inserted into the HTML page header
235
-			 * of the rendered page in the frontend. The configuration string is the
236
-			 * path to the template file relative to the templates directory (usually
237
-			 * in client/html/templates).
238
-			 *
239
-			 * You can overwrite the template file configuration in extensions and
240
-			 * provide alternative templates. These alternative templates should be
241
-			 * named like the default one but with the string "standard" replaced by
242
-			 * an unique name. You may use the name of your project for this. If
243
-			 * you've implemented an alternative client class as well, "standard"
244
-			 * should be replaced by the name of the new class.
245
-			 *
246
-			 * @param string Relative path to the template creating code for the HTML page head
247
-			 * @since 2014.03
248
-			 * @category Developer
249
-			 * @see client/html/catalog/stage/standard/template-body
250
-			 */
251
-			$tplconf = 'client/html/catalog/stage/standard/template-header';
252
-			$default = 'catalog/stage/header-default.php';
253
-
254
-			$html = $view->render( $view->config( $tplconf, $default ) );
255
-
256
-			$this->setCached( 'header', $uid, $prefixes, $confkey, $html, $tags, $expire );
257
-		}
258
-		else
259
-		{
260
-			$html = $this->modifyHeader( $html, $uid );
261
-		}
262
-
263
-		return $html;
264
-	}
265
-
266
-
267
-	/**
268
-	 * Returns the sub-client given by its name.
269
-	 *
270
-	 * @param string $type Name of the client type
271
-	 * @param string|null $name Name of the sub-client (Default if null)
272
-	 * @return \Aimeos\Client\Html\Iface Sub-client object
273
-	 */
274
-	public function getSubClient( $type, $name = null )
275
-	{
276
-		/** client/html/catalog/stage/decorators/excludes
277
-		 * Excludes decorators added by the "common" option from the catalog stage html client
278
-		 *
279
-		 * Decorators extend the functionality of a class by adding new aspects
280
-		 * (e.g. log what is currently done), executing the methods of the underlying
281
-		 * class only in certain conditions (e.g. only for logged in users) or
282
-		 * modify what is returned to the caller.
283
-		 *
284
-		 * This option allows you to remove a decorator added via
285
-		 * "client/html/common/decorators/default" before they are wrapped
286
-		 * around the html client.
287
-		 *
288
-		 *  client/html/catalog/stage/decorators/excludes = array( 'decorator1' )
289
-		 *
290
-		 * This would remove the decorator named "decorator1" from the list of
291
-		 * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
292
-		 * "client/html/common/decorators/default" to the html client.
293
-		 *
294
-		 * @param array List of decorator names
295
-		 * @since 2014.05
296
-		 * @category Developer
297
-		 * @see client/html/common/decorators/default
298
-		 * @see client/html/catalog/stage/decorators/global
299
-		 * @see client/html/catalog/stage/decorators/local
300
-		 */
301
-
302
-		/** client/html/catalog/stage/decorators/global
303
-		 * Adds a list of globally available decorators only to the catalog stage html client
304
-		 *
305
-		 * Decorators extend the functionality of a class by adding new aspects
306
-		 * (e.g. log what is currently done), executing the methods of the underlying
307
-		 * class only in certain conditions (e.g. only for logged in users) or
308
-		 * modify what is returned to the caller.
309
-		 *
310
-		 * This option allows you to wrap global decorators
311
-		 * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
312
-		 *
313
-		 *  client/html/catalog/stage/decorators/global = array( 'decorator1' )
314
-		 *
315
-		 * This would add the decorator named "decorator1" defined by
316
-		 * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
317
-		 *
318
-		 * @param array List of decorator names
319
-		 * @since 2014.05
320
-		 * @category Developer
321
-		 * @see client/html/common/decorators/default
322
-		 * @see client/html/catalog/stage/decorators/excludes
323
-		 * @see client/html/catalog/stage/decorators/local
324
-		 */
325
-
326
-		/** client/html/catalog/stage/decorators/local
327
-		 * Adds a list of local decorators only to the catalog stage html client
328
-		 *
329
-		 * Decorators extend the functionality of a class by adding new aspects
330
-		 * (e.g. log what is currently done), executing the methods of the underlying
331
-		 * class only in certain conditions (e.g. only for logged in users) or
332
-		 * modify what is returned to the caller.
333
-		 *
334
-		 * This option allows you to wrap local decorators
335
-		 * ("\Aimeos\Client\Html\Catalog\Decorator\*") around the html client.
336
-		 *
337
-		 *  client/html/catalog/stage/decorators/local = array( 'decorator2' )
338
-		 *
339
-		 * This would add the decorator named "decorator2" defined by
340
-		 * "\Aimeos\Client\Html\Catalog\Decorator\Decorator2" only to the html client.
341
-		 *
342
-		 * @param array List of decorator names
343
-		 * @since 2014.05
344
-		 * @category Developer
345
-		 * @see client/html/common/decorators/default
346
-		 * @see client/html/catalog/stage/decorators/excludes
347
-		 * @see client/html/catalog/stage/decorators/global
348
-		 */
349
-		return $this->createSubClient( 'catalog/stage/' . $type, $name );
350
-	}
351
-
352
-
353
-	/**
354
-	 * Processes the input, e.g. store given values.
355
-	 * A view must be available and this method doesn't generate any output
356
-	 * besides setting view variables.
357
-	 */
358
-	public function process()
359
-	{
360
-		$view = $this->getView();
361
-
362
-		try
363
-		{
364
-			parent::process();
365
-		}
366
-		catch( \Aimeos\Client\Html\Exception $e )
367
-		{
368
-			$error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
369
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
370
-		}
371
-		catch( \Aimeos\Controller\Frontend\Exception $e )
372
-		{
373
-			$error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
374
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
375
-		}
376
-		catch( \Aimeos\MShop\Exception $e )
377
-		{
378
-			$error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
379
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
380
-		}
381
-		catch( \Exception $e )
382
-		{
383
-			$context = $this->getContext();
384
-			$context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
385
-
386
-			$error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
387
-			$view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
388
-		}
389
-	}
390
-
391
-
392
-	/**
393
-	 * Returns the parameters used by the html client.
394
-	 *
395
-	 * @param array $params Associative list of all parameters
396
-	 * @param string[] $prefixes List of prefixes the parameters must start with
397
-	 * @return array Associative list of parameters used by the html client
398
-	 */
399
-	protected function getClientParams( array $params, array $prefixes = array( 'f', 'l', 'd', 'a' ) )
400
-	{
401
-		$list = parent::getClientParams( $params, array_merge( $prefixes, array( 'l', 'd' ) ) );
402
-
403
-		if( isset( $list['l_pos'] ) && isset( $list['d_prodid'] ) )
404
-		{
405
-			$context = $this->getContext();
406
-			$site = $context->getLocale()->getSite()->getCode();
407
-			$list += (array) $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
408
-		}
409
-
410
-		return $list;
411
-	}
412
-
413
-
414
-	/**
415
-	 * Returns the list of sub-client names configured for the client.
416
-	 *
417
-	 * @return array List of HTML client names
418
-	 */
419
-	protected function getSubClientNames()
420
-	{
421
-		return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
422
-	}
423
-
424
-
425
-	/**
426
-	 * Sets the necessary parameter values in the view.
427
-	 *
428
-	 * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
429
-	 * @param array &$tags Result array for the list of tags that are associated to the output
430
-	 * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
431
-	 * @return \Aimeos\MW\View\Iface Modified view object
432
-	 */
433
-	protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
434
-	{
435
-		if( !isset( $this->cache ) )
436
-		{
437
-			$params = $this->getClientParams( $view->param(), array( 'f' ) );
438
-
439
-			if( isset( $params['f_catid'] ) && $params['f_catid'] != '' )
440
-			{
441
-				$context = $this->getContext();
442
-				$config = $context->getConfig();
443
-				$controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
444
-
445
-				$default = array( 'attribute', 'media', 'text' );
446
-
447
-				/** client/html/catalog/domains
448
-				 * A list of domain names whose items should be available in the catalog view templates
449
-				 *
450
-				 * @see client/html/catalog/stage/domains
451
-				 */
452
-				$domains = $config->get( 'client/html/catalog/domains', $default );
453
-
454
-				/** client/html/catalog/stage/standard/domains
455
-				 * A list of domain names whose items should be available in the catalog stage view template
456
-				 *
457
-				 * The templates rendering the catalog stage section use the texts and
458
-				 * maybe images and attributes associated to the categories. You can
459
-				 * configure your own list of domains (attribute, media, price, product,
460
-				 * text, etc. are domains) whose items are fetched from the storage.
461
-				 * Please keep in mind that the more domains you add to the configuration,
462
-				 * the more time is required for fetching the content!
463
-				 *
464
-				 * This configuration option overwrites the "client/html/catalog/domains"
465
-				 * option that allows to configure the domain names of the items fetched
466
-				 * for all catalog related data.
467
-				 *
468
-				 * @param array List of domain names
469
-				 * @since 2014.03
470
-				 * @category Developer
471
-				 * @see client/html/catalog/domains
472
-				 * @see client/html/catalog/detail/domains
473
-				 * @see client/html/catalog/lists/domains
474
-				 */
475
-				$domains = $config->get( 'client/html/catalog/stage/standard/domains', $domains );
476
-				$stageCatPath = $controller->getCatalogPath( $params['f_catid'], $domains );
477
-
478
-				if( ( $categoryItem = end( $stageCatPath ) ) !== false ) {
479
-					$view->stageCurrentCatItem = $categoryItem;
480
-				}
481
-
482
-				$this->addMetaItem( $stageCatPath, 'catalog', $this->expire, $this->tags );
483
-				$this->addMetaList( array_keys( $stageCatPath ), 'catalog', $this->expire );
484
-
485
-				$view->stageCatPath = $stageCatPath;
486
-			}
487
-
488
-			$view->stageParams = $params;
489
-
490
-			$this->cache = $view;
491
-		}
492
-
493
-		$expire = $this->expires( $this->expire, $expire );
494
-		$tags = array_merge( $tags, $this->tags );
495
-
496
-		return $this->cache;
497
-	}
25
+    /** client/html/catalog/stage/standard/subparts
26
+     * List of HTML sub-clients rendered within the catalog stage 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/catalog/stage/standard/subparts';
59
+
60
+    /** client/html/catalog/stage/image/name
61
+     * Name of the image part used by the catalog stage client implementation
62
+     *
63
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Image\Myname".
64
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
65
+     *
66
+     * @param string Last part of the client class name
67
+     * @since 2014.03
68
+     * @category Developer
69
+     */
70
+
71
+    /** client/html/catalog/stage/breadcrumb/name
72
+     * Name of the breadcrumb part used by the catalog stage client implementation
73
+     *
74
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Breadcrumb\Myname".
75
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
76
+     *
77
+     * @param string Last part of the client class name
78
+     * @since 2014.03
79
+     * @category Developer
80
+     */
81
+
82
+    /** client/html/catalog/stage/navigator/name
83
+     * Name of the navigator part used by the catalog stage client implementation
84
+     *
85
+     * Use "Myname" if your class is named "\Aimeos\Client\Html\Catalog\Stage\Breadcrumb\Myname".
86
+     * The name is case-sensitive and you should avoid camel case names like "MyName".
87
+     *
88
+     * @param string Last part of the client class name
89
+     * @since 2014.09
90
+     * @category Developer
91
+     */
92
+    private $subPartNames = array( 'image', 'breadcrumb', 'navigator' );
93
+
94
+    private $tags = array();
95
+    private $expire;
96
+    private $cache;
97
+
98
+
99
+    /**
100
+     * Returns the HTML code for insertion into the body.
101
+     *
102
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
103
+     * @param array &$tags Result array for the list of tags that are associated to the output
104
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
105
+     * @return string HTML code
106
+     */
107
+    public function getBody( $uid = '', array &$tags = array(), &$expire = null )
108
+    {
109
+        $prefixes = array( 'f' );
110
+        $context = $this->getContext();
111
+
112
+        /** client/html/catalog/stage
113
+         * All parameters defined for the catalog stage component and its subparts
114
+         *
115
+         * This returns all settings related to the stage component.
116
+         * Please refer to the single settings for details.
117
+         *
118
+         * @param array Associative list of name/value settings
119
+         * @category Developer
120
+         * @see client/html/catalog#stage
121
+         */
122
+        $confkey = 'client/html/catalog/stage';
123
+
124
+        if( $context->getUserId() != null || ( $html = $this->getCached( 'body', $uid, $prefixes, $confkey ) ) === null )
125
+        {
126
+            $view = $this->getView();
127
+
128
+            try
129
+            {
130
+                $view = $this->setViewParams( $view, $tags, $expire );
131
+
132
+                $output = '';
133
+                foreach( $this->getSubClients() as $subclient ) {
134
+                    $output .= $subclient->setView( $view )->getBody( $uid, $tags, $expire );
135
+                }
136
+                $view->stageBody = $output;
137
+            }
138
+            catch( \Aimeos\Client\Html\Exception $e )
139
+            {
140
+                $error = array( $context->getI18n()->dt( 'client', $e->getMessage() ) );
141
+                $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
142
+            }
143
+            catch( \Aimeos\Controller\Frontend\Exception $e )
144
+            {
145
+                $error = array( $context->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
146
+                $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
147
+            }
148
+            catch( \Aimeos\MShop\Exception $e )
149
+            {
150
+                $error = array( $context->getI18n()->dt( 'mshop', $e->getMessage() ) );
151
+                $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
152
+            }
153
+            catch( \Exception $e )
154
+            {
155
+                $context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
156
+
157
+                $error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
158
+                $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
159
+            }
160
+
161
+            /** client/html/catalog/stage/standard/template-body
162
+             * Relative path to the HTML body template of the catalog stage client.
163
+             *
164
+             * The template file contains the HTML code and processing instructions
165
+             * to generate the result shown in the body of the frontend. The
166
+             * configuration string is the path to the template file relative
167
+             * to the templates directory (usually in client/html/templates).
168
+             *
169
+             * You can overwrite the template file configuration in extensions and
170
+             * provide alternative templates. These alternative templates should be
171
+             * named like the default one but with the string "standard" replaced by
172
+             * an unique name. You may use the name of your project for this. If
173
+             * you've implemented an alternative client class as well, "standard"
174
+             * should be replaced by the name of the new class.
175
+             *
176
+             * @param string Relative path to the template creating code for the HTML page body
177
+             * @since 2014.03
178
+             * @category Developer
179
+             * @see client/html/catalog/stage/standard/template-header
180
+             */
181
+            $tplconf = 'client/html/catalog/stage/standard/template-body';
182
+            $default = 'catalog/stage/body-default.php';
183
+
184
+            $html = $view->render( $view->config( $tplconf, $default ) );
185
+
186
+            $this->setCached( 'body', $uid, $prefixes, $confkey, $html, $tags, $expire );
187
+        }
188
+        else
189
+        {
190
+            $html = $this->modifyBody( $html, $uid );
191
+        }
192
+
193
+        return $html;
194
+    }
195
+
196
+
197
+    /**
198
+     * Returns the HTML string for insertion into the header.
199
+     *
200
+     * @param string $uid Unique identifier for the output if the content is placed more than once on the same page
201
+     * @param array &$tags Result array for the list of tags that are associated to the output
202
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
203
+     * @return string String including HTML tags for the header on error
204
+     */
205
+    public function getHeader( $uid = '', array &$tags = array(), &$expire = null )
206
+    {
207
+        $prefixes = array( 'f' );
208
+        $context = $this->getContext();
209
+        $confkey = 'client/html/catalog/stage';
210
+
211
+        if( $context->getUserId() != null || ( $html = $this->getCached( 'header', $uid, $prefixes, $confkey ) ) === null )
212
+        {
213
+            $view = $this->getView();
214
+
215
+            try
216
+            {
217
+                $view = $this->setViewParams( $view, $tags, $expire );
218
+
219
+                $html = '';
220
+                foreach( $this->getSubClients() as $subclient ) {
221
+                    $html .= $subclient->setView( $view )->getHeader( $uid, $tags, $expire );
222
+                }
223
+                $view->stageHeader = $html;
224
+            }
225
+            catch( \Exception $e )
226
+            {
227
+                $context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
228
+            }
229
+
230
+            /** client/html/catalog/stage/standard/template-header
231
+             * Relative path to the HTML header template of the catalog stage client.
232
+             *
233
+             * The template file contains the HTML code and processing instructions
234
+             * to generate the HTML code that is inserted into the HTML page header
235
+             * of the rendered page in the frontend. The configuration string is the
236
+             * path to the template file relative to the templates directory (usually
237
+             * in client/html/templates).
238
+             *
239
+             * You can overwrite the template file configuration in extensions and
240
+             * provide alternative templates. These alternative templates should be
241
+             * named like the default one but with the string "standard" replaced by
242
+             * an unique name. You may use the name of your project for this. If
243
+             * you've implemented an alternative client class as well, "standard"
244
+             * should be replaced by the name of the new class.
245
+             *
246
+             * @param string Relative path to the template creating code for the HTML page head
247
+             * @since 2014.03
248
+             * @category Developer
249
+             * @see client/html/catalog/stage/standard/template-body
250
+             */
251
+            $tplconf = 'client/html/catalog/stage/standard/template-header';
252
+            $default = 'catalog/stage/header-default.php';
253
+
254
+            $html = $view->render( $view->config( $tplconf, $default ) );
255
+
256
+            $this->setCached( 'header', $uid, $prefixes, $confkey, $html, $tags, $expire );
257
+        }
258
+        else
259
+        {
260
+            $html = $this->modifyHeader( $html, $uid );
261
+        }
262
+
263
+        return $html;
264
+    }
265
+
266
+
267
+    /**
268
+     * Returns the sub-client given by its name.
269
+     *
270
+     * @param string $type Name of the client type
271
+     * @param string|null $name Name of the sub-client (Default if null)
272
+     * @return \Aimeos\Client\Html\Iface Sub-client object
273
+     */
274
+    public function getSubClient( $type, $name = null )
275
+    {
276
+        /** client/html/catalog/stage/decorators/excludes
277
+         * Excludes decorators added by the "common" option from the catalog stage html client
278
+         *
279
+         * Decorators extend the functionality of a class by adding new aspects
280
+         * (e.g. log what is currently done), executing the methods of the underlying
281
+         * class only in certain conditions (e.g. only for logged in users) or
282
+         * modify what is returned to the caller.
283
+         *
284
+         * This option allows you to remove a decorator added via
285
+         * "client/html/common/decorators/default" before they are wrapped
286
+         * around the html client.
287
+         *
288
+         *  client/html/catalog/stage/decorators/excludes = array( 'decorator1' )
289
+         *
290
+         * This would remove the decorator named "decorator1" from the list of
291
+         * common decorators ("\Aimeos\Client\Html\Common\Decorator\*") added via
292
+         * "client/html/common/decorators/default" to the html client.
293
+         *
294
+         * @param array List of decorator names
295
+         * @since 2014.05
296
+         * @category Developer
297
+         * @see client/html/common/decorators/default
298
+         * @see client/html/catalog/stage/decorators/global
299
+         * @see client/html/catalog/stage/decorators/local
300
+         */
301
+
302
+        /** client/html/catalog/stage/decorators/global
303
+         * Adds a list of globally available decorators only to the catalog stage html client
304
+         *
305
+         * Decorators extend the functionality of a class by adding new aspects
306
+         * (e.g. log what is currently done), executing the methods of the underlying
307
+         * class only in certain conditions (e.g. only for logged in users) or
308
+         * modify what is returned to the caller.
309
+         *
310
+         * This option allows you to wrap global decorators
311
+         * ("\Aimeos\Client\Html\Common\Decorator\*") around the html client.
312
+         *
313
+         *  client/html/catalog/stage/decorators/global = array( 'decorator1' )
314
+         *
315
+         * This would add the decorator named "decorator1" defined by
316
+         * "\Aimeos\Client\Html\Common\Decorator\Decorator1" only to the html client.
317
+         *
318
+         * @param array List of decorator names
319
+         * @since 2014.05
320
+         * @category Developer
321
+         * @see client/html/common/decorators/default
322
+         * @see client/html/catalog/stage/decorators/excludes
323
+         * @see client/html/catalog/stage/decorators/local
324
+         */
325
+
326
+        /** client/html/catalog/stage/decorators/local
327
+         * Adds a list of local decorators only to the catalog stage html client
328
+         *
329
+         * Decorators extend the functionality of a class by adding new aspects
330
+         * (e.g. log what is currently done), executing the methods of the underlying
331
+         * class only in certain conditions (e.g. only for logged in users) or
332
+         * modify what is returned to the caller.
333
+         *
334
+         * This option allows you to wrap local decorators
335
+         * ("\Aimeos\Client\Html\Catalog\Decorator\*") around the html client.
336
+         *
337
+         *  client/html/catalog/stage/decorators/local = array( 'decorator2' )
338
+         *
339
+         * This would add the decorator named "decorator2" defined by
340
+         * "\Aimeos\Client\Html\Catalog\Decorator\Decorator2" only to the html client.
341
+         *
342
+         * @param array List of decorator names
343
+         * @since 2014.05
344
+         * @category Developer
345
+         * @see client/html/common/decorators/default
346
+         * @see client/html/catalog/stage/decorators/excludes
347
+         * @see client/html/catalog/stage/decorators/global
348
+         */
349
+        return $this->createSubClient( 'catalog/stage/' . $type, $name );
350
+    }
351
+
352
+
353
+    /**
354
+     * Processes the input, e.g. store given values.
355
+     * A view must be available and this method doesn't generate any output
356
+     * besides setting view variables.
357
+     */
358
+    public function process()
359
+    {
360
+        $view = $this->getView();
361
+
362
+        try
363
+        {
364
+            parent::process();
365
+        }
366
+        catch( \Aimeos\Client\Html\Exception $e )
367
+        {
368
+            $error = array( $this->getContext()->getI18n()->dt( 'client', $e->getMessage() ) );
369
+            $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
370
+        }
371
+        catch( \Aimeos\Controller\Frontend\Exception $e )
372
+        {
373
+            $error = array( $this->getContext()->getI18n()->dt( 'controller/frontend', $e->getMessage() ) );
374
+            $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
375
+        }
376
+        catch( \Aimeos\MShop\Exception $e )
377
+        {
378
+            $error = array( $this->getContext()->getI18n()->dt( 'mshop', $e->getMessage() ) );
379
+            $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
380
+        }
381
+        catch( \Exception $e )
382
+        {
383
+            $context = $this->getContext();
384
+            $context->getLogger()->log( $e->getMessage() . PHP_EOL . $e->getTraceAsString() );
385
+
386
+            $error = array( $context->getI18n()->dt( 'client', 'A non-recoverable error occured' ) );
387
+            $view->stageErrorList = $view->get( 'stageErrorList', array() ) + $error;
388
+        }
389
+    }
390
+
391
+
392
+    /**
393
+     * Returns the parameters used by the html client.
394
+     *
395
+     * @param array $params Associative list of all parameters
396
+     * @param string[] $prefixes List of prefixes the parameters must start with
397
+     * @return array Associative list of parameters used by the html client
398
+     */
399
+    protected function getClientParams( array $params, array $prefixes = array( 'f', 'l', 'd', 'a' ) )
400
+    {
401
+        $list = parent::getClientParams( $params, array_merge( $prefixes, array( 'l', 'd' ) ) );
402
+
403
+        if( isset( $list['l_pos'] ) && isset( $list['d_prodid'] ) )
404
+        {
405
+            $context = $this->getContext();
406
+            $site = $context->getLocale()->getSite()->getCode();
407
+            $list += (array) $context->getSession()->get( 'aimeos/catalog/lists/params/last/' . $site, array() );
408
+        }
409
+
410
+        return $list;
411
+    }
412
+
413
+
414
+    /**
415
+     * Returns the list of sub-client names configured for the client.
416
+     *
417
+     * @return array List of HTML client names
418
+     */
419
+    protected function getSubClientNames()
420
+    {
421
+        return $this->getContext()->getConfig()->get( $this->subPartPath, $this->subPartNames );
422
+    }
423
+
424
+
425
+    /**
426
+     * Sets the necessary parameter values in the view.
427
+     *
428
+     * @param \Aimeos\MW\View\Iface $view The view object which generates the HTML output
429
+     * @param array &$tags Result array for the list of tags that are associated to the output
430
+     * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
431
+     * @return \Aimeos\MW\View\Iface Modified view object
432
+     */
433
+    protected function setViewParams( \Aimeos\MW\View\Iface $view, array &$tags = array(), &$expire = null )
434
+    {
435
+        if( !isset( $this->cache ) )
436
+        {
437
+            $params = $this->getClientParams( $view->param(), array( 'f' ) );
438
+
439
+            if( isset( $params['f_catid'] ) && $params['f_catid'] != '' )
440
+            {
441
+                $context = $this->getContext();
442
+                $config = $context->getConfig();
443
+                $controller = \Aimeos\Controller\Frontend\Factory::createController( $context, 'catalog' );
444
+
445
+                $default = array( 'attribute', 'media', 'text' );
446
+
447
+                /** client/html/catalog/domains
448
+                 * A list of domain names whose items should be available in the catalog view templates
449
+                 *
450
+                 * @see client/html/catalog/stage/domains
451
+                 */
452
+                $domains = $config->get( 'client/html/catalog/domains', $default );
453
+
454
+                /** client/html/catalog/stage/standard/domains
455
+                 * A list of domain names whose items should be available in the catalog stage view template
456
+                 *
457
+                 * The templates rendering the catalog stage section use the texts and
458
+                 * maybe images and attributes associated to the categories. You can
459
+                 * configure your own list of domains (attribute, media, price, product,
460
+                 * text, etc. are domains) whose items are fetched from the storage.
461
+                 * Please keep in mind that the more domains you add to the configuration,
462
+                 * the more time is required for fetching the content!
463
+                 *
464
+                 * This configuration option overwrites the "client/html/catalog/domains"
465
+                 * option that allows to configure the domain names of the items fetched
466
+                 * for all catalog related data.
467
+                 *
468
+                 * @param array List of domain names
469
+                 * @since 2014.03
470
+                 * @category Developer
471
+                 * @see client/html/catalog/domains
472
+                 * @see client/html/catalog/detail/domains
473
+                 * @see client/html/catalog/lists/domains
474
+                 */
475
+                $domains = $config->get( 'client/html/catalog/stage/standard/domains', $domains );
476
+                $stageCatPath = $controller->getCatalogPath( $params['f_catid'], $domains );
477
+
478
+                if( ( $categoryItem = end( $stageCatPath ) ) !== false ) {
479
+                    $view->stageCurrentCatItem = $categoryItem;
480
+                }
481
+
482
+                $this->addMetaItem( $stageCatPath, 'catalog', $this->expire, $this->tags );
483
+                $this->addMetaList( array_keys( $stageCatPath ), 'catalog', $this->expire );
484
+
485
+                $view->stageCatPath = $stageCatPath;
486
+            }
487
+
488
+            $view->stageParams = $params;
489
+
490
+            $this->cache = $view;
491
+        }
492
+
493
+        $expire = $this->expires( $this->expire, $expire );
494
+        $tags = array_merge( $tags, $this->tags );
495
+
496
+        return $this->cache;
497
+    }
498 498
 }
Please login to merge, or discard this patch.