public function update(Request $request)
 {
     $extensionClass = ExtensionsFacade::extensionClass($request->input('extension'));
     if (empty($extensionClass) || !class_exists($extensionClass)) {
         abort(404);
     }
     $extension = new $extensionClass();
     if (!$extension->isEditable()) {
         abort(404);
     }
     $redirect = redirect(adminUrl('extensions/{name}/edit', ['name' => $extension->getName()]));
     $data = [];
     foreach ($extension->fields() as $field) {
         $data[$field] = $request->input($field, '');
     }
     $validator = Validator::make($data, $extension->validationRules());
     if ($validator->fails()) {
         return $redirect->withInput()->withErrors($validator);
     }
     $translatable = $extension->isTranslatable();
     $localizedData = [];
     if ($translatable) {
         $this->validateMultipleLocaleData($request, $extension->localizedFields(), $extension->localizedValidationRules(), $localizedData, $successes, $fails, $old);
         if (count($successes) <= 0 && count($fails) > 0) {
             return $redirect->withInput()->withErrors($fails[0]);
         }
     }
     $save = $extension->save($data, $localizedData);
     if ($save !== true) {
         return $redirect->withInput()->withErrors($save);
     }
     return $redirect;
 }