Completed
Push — master ( 78cdeb...4a813f )
by Aimeos
10:16
created

JqadmController::getHtml()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 8
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
/**
4
 * @license LGPLv3, http://www.gnu.org/copyleft/lgpl.html
5
 * @copyright Aimeos (aimeos.org), 2015-2016
6
 * @package flow
7
 * @subpackage Controller
8
 */
9
10
11
namespace Aimeos\Shop\Controller;
12
13
use Neos\Flow\Annotations as Flow;
14
15
16
/**
17
 * Controller for JQuery based adminisration interface.
18
 * @package flow
19
 * @subpackage Controller
20
 */
21
class JqadmController extends \Neos\Flow\Mvc\Controller\ActionController
22
{
23
	/**
24
	 * @var \Aimeos\Shop\Base\Aimeos
25
	 * @Flow\Inject
26
	 */
27
	protected $aimeos;
28
29
	/**
30
	 * @var \Aimeos\Shop\Base\Context
31
	 * @Flow\Inject
32
	 */
33
	protected $context;
34
35
	/**
36
	 * @var \Aimeos\Shop\Base\I18n
37
	 * @Flow\Inject
38
	 */
39
	protected $i18n;
40
41
	/**
42
	 * @var \Aimeos\Shop\Base\Locale
43
	 * @Flow\Inject
44
	 */
45
	protected $locale;
46
47
	/**
48
	 * @var \Aimeos\Shop\Base\View
49
	 * @Flow\Inject
50
	 */
51
	protected $viewbase;
52
53
54
	/**
55
	 * Returns the JS file content
56
	 *
57
	 * @return \Neos\Flow\Http\Response Response object
58
	 */
59
	public function fileAction()
60
	{
61
		$files = array();
62
		$aimeos = $this->aimeos->get();
63
		$type = $this->request->getArgument( 'type' );
64
65
		foreach( $aimeos->getCustomPaths( 'admin/jqadm' ) as $base => $paths )
66
		{
67
			foreach( $paths as $path )
68
			{
69
				$jsbAbsPath = $base . '/' . $path;
70
				$jsb2 = new \Aimeos\MW\Jsb2\Standard( $jsbAbsPath, dirname( $jsbAbsPath ) );
71
				$files = array_merge( $files, $jsb2->getFiles( $type ) );
72
			}
73
		}
74
75
		foreach( $files as $file )
76
		{
77
			if( ( $content = file_get_contents( $file ) ) !== false ) {
78
				$this->response->appendContent( $content );
79
			}
80
		}
81
82
		if( $type === 'js' ) {
83
			$this->response->setHeader( 'Content-Type', 'application/javascript' );
84
		} elseif( $type === 'css' ) {
85
			$this->response->setHeader( 'Content-Type', 'text/css' );
86
		}
87
	}
88
89
90
	/**
91
	 * Returns the HTML code for a copy of a resource object
92
	 *
93
	 * @param string Resource location, e.g. "product"
94
	 * @param string $sitecode Unique site code
95
	 * @param integer $id Unique resource ID
96
	 * @return string Generated output
97
	 */
98
	public function copyAction( $site = 'default', $resource, $id )
99
	{
100
		$cntl = $this->createClient( $site, $resource );
101
		return $this->getHtml( $cntl->copy( $id ) );
102
	}
103
104
105
	/**
106
	 * Returns the HTML code for a new resource object
107
	 *
108
	 * @param string Resource location, e.g. "product"
109
	 * @param string $sitecode Unique site code
110
	 * @return string Generated output
111
	 */
112
	public function createAction( $site = 'default', $resource )
113
	{
114
		$cntl = $this->createClient( $site, $resource );
115
		return $this->getHtml( $cntl->create() );
116
	}
117
118
119
	/**
120
	 * Deletes the resource object or a list of resource objects
121
	 *
122
	 * @param string Resource location, e.g. "product"
123
	 * @param string $sitecode Unique site code
124
	 * @param integer $id Unique resource ID
125
	 * @return string Generated output
126
	 */
127
	public function deleteAction( $site = 'default', $resource, $id )
128
	{
129
		$cntl = $this->createClient( $site, $resource );
130
		return $this->getHtml( $cntl->delete( $id ) . $cntl->search() );
131
	}
132
133
134
	/**
135
	 * Returns the HTML code for the requested resource object
136
	 *
137
	 * @param string Resource location, e.g. "product"
138
	 * @param string $sitecode Unique site code
139
	 * @param integer $id Unique resource ID
140
	 * @return string Generated output
141
	 */
142
	public function getAction( $site = 'default', $resource, $id )
143
	{
144
		$cntl = $this->createClient( $site, $resource );
145
		return $this->getHtml( $cntl->get( $id ) );
146
	}
147
148
149
	/**
150
	 * Saves a new resource object
151
	 *
152
	 * @param string Resource location, e.g. "product"
153
	 * @param string $sitecode Unique site code
154
	 * @return string Generated output
155
	 */
156
	public function saveAction( $site = 'default', $resource )
157
	{
158
		$cntl = $this->createClient( $site, $resource );
159
		return $this->getHtml( ( $cntl->save() ? : $cntl->search() ) );
160
	}
161
162
163
	/**
164
	 * Returns the HTML code for a list of resource objects
165
	 *
166
	 * @param string Resource location, e.g. "product"
167
	 * @param string $sitecode Unique site code
168
	 * @return string Generated output
169
	 */
170
	public function searchAction( $site = 'default', $resource )
171
	{
172
		$cntl = $this->createClient( $site, $resource );
173
		return $this->getHtml( $cntl->search() );
174
	}
175
176
177
	/**
178
	 * Returns the resource controller
179
	 *
180
	 * @param string $sitecode Unique site code
181
	 * @return \Aimeos\MShop\Context\Item\Iface Context item
182
	 */
183
	protected function createClient( $sitecode, $resource )
184
	{
185
		$lang = ( $this->request->hasArgument( 'lang' ) ? $this->request->getArgument( 'lang' ) : 'en' );
186
		$templatePaths = $this->aimeos->get()->getCustomPaths( 'admin/jqadm/templates' );
187
188
		$context = $this->context->get( null, 'backend' );
189
		$context->setI18n( $this->i18n->get( array( $lang, 'en' ) ) );
190
		$context->setLocale( $this->locale->getBackend( $context, $sitecode ) );
191
		$context->setView( $this->viewbase->create( $context, $this->uriBuilder, $templatePaths, $this->request, $lang ) );
192
193
		return \Aimeos\Admin\JQAdm\Factory::createClient( $context, $templatePaths, $resource );
194
	}
195
196
197
	/**
198
	 * Returns the generated view including the HTML code
199
	 *
200
	 * @param string $content Content from admin client
201
	 */
202
	protected function getHtml( $content )
203
	{
204
		$version = $this->aimeos->getVersion();
205
		$extnames = implode( ',' $this->aimeos->get()->getExtensions() );
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected T_VARIABLE, expecting ',' or ')'
Loading history...
206
		$content = str_replace( ['{type}', '{version}', '{extensions}'], ['Flow', $version, $extnames], $content );
207
208
		$this->view->assign( 'content', $content );
209
		return $this->view->render( 'index' );
210
	}
211
}
212