Exemplo n.º 1
0
 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()]);
 }
Exemplo n.º 2
0
 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()]);
 }
Exemplo n.º 3
0
 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'));
 }