public function postSetting(Request $request, SkinHandler $skinHandler) { $validation = Validator::make($request->all(), ['skinId' => 'required', 'instanceId' => 'required']); if ($validation->fails()) { throw new InvalidArgumentException(); } $skinInstanceId = $request->get('instanceId'); $skinId = $request->get('skinId'); $mode = $request->get('mode', 'desktop'); $config = $request->except('instanceId', 'skinId', 'mode', '_token'); $skin = $skinHandler->get($skinId, $config); $skinHandler->assign($skinInstanceId, $skin, $mode); return Presenter::makeApi(['type' => 'success', 'message' => '저장되었습니다.', 'skinId' => $skinId, 'skinTitle' => $skin->getTitle()]); }
public function postSetting(Request $request, SkinHandler $skinHandler) { $validation = Validator::make($request->all(), ['skinId' => 'required', 'instanceId' => 'required']); if ($validation->fails()) { throw new InvalidArgumentException(); } $skinInstanceId = $request->get('instanceId'); $skinId = $request->get('skinId'); $config = $request->except('instanceId', 'skinId', '_token'); $skin = $skinHandler->get($skinId); // 각 스킨에게 config값을 전처리 할 기회를 준다. $config = $skin->updateSetting($config); $skin->setting($config); $skinHandler->saveConfig($skinInstanceId, $skin); return XePresenter::makeApi(['type' => 'success', 'message' => '저장되었습니다.', 'skinId' => $skinId, 'skinTitle' => $skin->getTitle()]); }
public function testMergeKey() { $d = SkinHandler::INSTANCE_DELIMITER; $this->assertEquals("a{$d}b", $this->handler->mergeKey('a', 'b')); $this->assertEquals("a", $this->handler->mergeKey('a')); $this->assertEquals("a{$d}b", $this->handler->mergeKey(['a', 'b'])); $this->assertEquals("a{$d}b{$d}c", $this->handler->mergeKey(['a', 'b'], 'c')); $this->assertEquals("a{$d}c", $this->handler->mergeKey(['a', null], 'c')); }
/** * setup by code * * @param Request $request * @param WidgetParser $widgetParser * @param WidgetHandler $widgetHandler * @param SkinHandler $skinHandler * * @return mixed */ public function setup(Request $request, WidgetParser $widgetParser, WidgetHandler $widgetHandler, SkinHandler $skinHandler) { $this->validate($request, ['code' => 'required']); $code = $request->get('code'); $inputs = $widgetParser->parseCode($code); $widget = array_get($inputs, '@attributes.id'); $title = array_get($inputs, '@attributes.title', ''); // widget list $widgetList = $widgetHandler->getAll(); $widgets = []; $widgets[''] = '위젯을 선택하세요'; foreach ($widgetList as $id => $class) { $widgets[$id] = $class::getTitle(); } // skin list $skins = $skinHandler->getList($widget); // widget form $widgetForm = $widgetHandler->setup($widget, $inputs); // skin form $skinConfig = array_get($inputs, 'skin'); if ($skinConfig && array_has($skinConfig, '@attributes.id')) { $skin = array_get($skinConfig, '@attributes.id'); $skin = $skinHandler->get($skin); $skinForm = $skin->renderSetting($skinConfig); } else { $skinConfig = null; } return apiRender('widget.setup', compact('widgets', 'widget', 'title', 'skins', 'skin', 'widgetSelector', 'skinSelector', 'widgetForm', 'skinForm')); }