public function postContent(Request $request)
 {
     $content = new Content();
     $content->user_id = \Auth::user()->id;
     $content->slug = $request->input('title');
     $content->fill($request->all());
     $content->save();
     $template = Template::find($request->input('template_id'));
     // make directory for content
     $contentDir = base_path() . $this->contentDir;
     if (!\File::exists($contentDir)) {
         \File::makeDirectory($contentDir, 755);
     }
     $contentDir = $contentDir . $content->id;
     \File::makeDirectory($contentDir, 755);
     $templateDir = base_path() . $this->templateDir . $template->slug;
     \File::copyDirectory($templateDir, $contentDir);
     return response()->json($content->id, 200);
 }
Exemple #2
0
 /**
  * Save map
  * 
  * @return \Illuminate\Http\JsonResponse
  */
 public function save()
 {
     $input = \Input::except('_token');
     // Validate map content
     if (empty($input['id'])) {
         // Pre validate
         $input['seo_slug'] = empty($input['seo_slug']) ? str_slug($input['title']) : $input['seo_slug'];
         // Create validator
         $validator = \Validator::make($input, ['title' => 'required|max:255', 'seo_slug' => 'unique:contents' . (!empty($input['id']) ? ',seo_slug,' . $input['id'] : '')]);
         // When validation fails
         if ($validator->fails()) {
             return response()->json(['errors' => $validator->messages()]);
         }
     }
     // Load content
     if (empty($input['id'])) {
         $content = new Content();
         $content->user_id = \Auth::user()->id;
         $content->fill($input);
         $content->save();
         $map = new Map();
         $map->user_id = \Auth::user()->id;
         $map->content()->associate($content);
     } else {
         $map = Map::find($input['id']);
     }
     // Save changes
     $input['center'] = implode(' ', $input['center']);
     $map->fill($input);
     $map->save();
     // Response
     if (isset($input['close'])) {
         return response()->json(['success' => 'Map saved', 'redirect' => url('/admin/maps/list')]);
     } else {
         return response()->json(['success' => 'Map saved', 'redirect' => url('/admin/maps/form/' . $map->id)]);
     }
 }
 /**
  * Save map
  * 
  * @return \Illuminate\Http\JsonResponse
  */
 public function save()
 {
     $input = \Input::except('_token');
     $rules = [];
     // Validate map content
     if (empty($input['id'])) {
         // Pre validate
         $input['seo_slug'] = empty($input['seo_slug']) ? str_slug($input['title']) : $input['seo_slug'];
         // Validate required params
         $rules = ['title' => 'required|max:255', 'seo_slug' => 'unique:contents' . (!empty($input['id']) ? ',seo_slug,' . $input['id'] : '')];
     }
     // Validate required params
     switch ($input['type']) {
         case 'bing':
             $rules['bing_key'] = 'required';
             break;
         case 'wms':
             $rules['wms_url'] = 'required';
             $rules['wms_layers'] = 'required';
             break;
         case 'wfs':
             $rules['wfs_url'] = 'required';
             $rules['wfs_typename'] = 'required';
             break;
         case 'gpx':
             if (empty($input['id'])) {
                 $rules['gpx_filename_0'] = 'required';
             }
             break;
         case 'kml':
             if (empty($input['id'])) {
                 $rules['kml_filename_0'] = 'required';
             }
             break;
         case 'postgis':
             $rules['postgis_host'] = 'required';
             $rules['postgis_port'] = 'required';
             $rules['postgis_user'] = '******';
             $rules['postgis_schema'] = 'required';
             $rules['postgis_table'] = 'required';
             $rules['postgis_field'] = 'required';
             $input['postgis_attributes'] = empty($input['postgis_attributes']) ? '*' : $input['postgis_attributes'];
             break;
         case 'geojson':
             $rules['geojson_attributes'] = 'required';
             break;
         case 'shapefile':
             if (empty($input['id'])) {
                 $rules['shapefile_filename_0'] = 'required';
             }
             break;
         case 'group':
         default:
     }
     // When validation fails
     $validator = \Validator::make($input, $rules);
     if ($validator->fails()) {
         return response()->json(['errors' => $validator->messages()]);
     }
     // Load layer
     if (empty($input['id'])) {
         $content = new Content();
         $content->user_id = \Auth::user()->id;
         $content->fill($input);
         $content->save();
         $layer = new Layer();
         $layer->user_id = \Auth::user()->id;
         $layer->content()->associate($content);
     } else {
         $layer = Layer::find($input['id']);
     }
     // Validate permission
     if (!$layer->isUserAllowed(\Auth::user())) {
         return response('', 401)->json(['success' => false]);
     }
     // Save changes
     $layer->fill($input);
     $layer->save();
     // Process files
     $layer->saveStyleIcon(\Request::file('ol_style_static_icon_0'));
     $layer->saveGPXFile(\Request::file('gpx_filename_0'));
     $layer->saveKMLFile(\Request::file('kml_filename_0'));
     $layer->saveShapeFile(\Request::file('shapefile_filename_0'));
     if ($layer->type === 'postgis') {
         try {
             $layer->savePostgisFile();
         } catch (\PDOException $e) {
             return response()->json(['errors' => ['postgis_error' => [$e->getMessage()]]]);
         } catch (\Exception $e) {
             return response()->json(['errors' => ['postgis_error' => [$e->getMessage()]]]);
         }
     }
     if ($layer->type === 'geojson') {
         $layer->saveGeoJSONFile();
     }
     // Response with redirect
     $redirect = url('/admin/layers/list');
     if (!isset($input['close'])) {
         $redirect = url('/admin/layers/form/' . $layer->id);
         if (empty($input['id'])) {
             $redirect .= '#features';
         }
     }
     return response()->json(['success' => 'Layer saved', 'redirect' => $redirect]);
 }