Przeglądaj źródła

Moved to separate action.

xaav 14 lat temu
rodzic
commit
1634df3e6d

+ 37 - 6
src/Packagist/WebBundle/Controller/WebController.php

@@ -12,6 +12,7 @@
 
 namespace Packagist\WebBundle\Controller;
 
+use Packagist\WebBundle\Form\ConfirmPackageType;
 use Packagist\WebBundle\Form\ConfirmForm;
 use Packagist\WebBundle\Form\ConfirmFormType;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@@ -55,17 +56,44 @@ class WebController extends Controller
     public function submitPackageAction()
     {
         $package = new Package;
-        $form = $this->get('form.factory')->create(new PackageType, $package);
+        $form = $this->createForm(new PackageType, $package);
 
         $request = $this->getRequest();
         if ($request->getMethod() == 'POST') {
             $form->bindRequest($request);
+            if($form->isValid()) {
+                $this->get('session')->set('repository', $package->getRepository());
 
-            $provider = $this->get('packagist.repository_provider');
-            $repository = $provider->getRepository($package->getRepository());
-            $composerFile = $repository->getComposerInformation('master');
+                return new RedirectResponse($this->generateUrl('confirm'));
+            }
+        }
+
+        return array('form' => $form->createView(), 'page' => 'submit');
+    }
+
+    /**
+     * @Template()
+     * @Route("/submit/confirm", name="confirm")
+     */
+    public function confirmPackageAction()
+    {
+        if(!$repository = $this->get('session')->get('repository')) {
+
+            return new RedirectResponse($this->generateUrl('submit'));
+        }
+
+        $em = $this->getDoctrine()->getEntityManager();
+
+        $package = $em
+            ->getRepository('PackagistWebBundle:Package')
+            ->createFromRepository($this->get('packagist.repository_provider'), $repository);
+
+        $form = $this->createForm(new ConfirmPackageType, $package);
+
+        $request = $this->getRequest();
+        if($request->getMethod() == 'POST') {
+            $form->bindRequest($request);
 
-            $package->setName($composerFile['name']);
             if ($form->isValid()) {
                 $user = $this->getUser();
                 $package->addMaintainers($user);
@@ -74,11 +102,14 @@ class WebController extends Controller
                 $em->persist($package);
                 $em->flush();
 
+                $this->get('session')->remove('repository');
+
                 return new RedirectResponse($this->generateUrl('home'));
             }
         }
 
-        return array('form' => $form->createView(), 'page' => 'submit');
+        return array('form' => $form->createView(), 'package' => $package, 'page' => 'confirm');
+
     }
 
     /**

+ 15 - 0
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -12,6 +12,8 @@
 
 namespace Packagist\WebBundle\Entity;
 
+use Packagist\WebBundle\Repository\RepositoryProviderInterface;
+
 use Doctrine\ORM\EntityRepository;
 
 /**
@@ -29,4 +31,17 @@ class PackageRepository extends EntityRepository
             ->setParameters(array(new \DateTime('-1hour')));
         return $qb->getQuery()->getResult();
     }
+
+    public function createFromRepository(RepositoryProviderInterface $provider, $repository)
+    {
+        $package = new Package;
+
+        $repo = $provider->getRepository($repository);
+        $composerFile = $repo->getComposerInformation('master');
+
+        $package->setName($composerFile['name']);
+        $package->setRepository($repository);
+
+        return $package;
+    }
 }

+ 13 - 0
src/Packagist/WebBundle/Form/ConfirmPackageType.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Packagist\WebBundle\Form;
+
+use Symfony\Component\Form\FormBuilder;
+
+class ConfirmPackageType extends PackageType
+{
+    public function buildForm(FormBuilder $builder, array $options)
+    {
+        $builder->add('repository', 'hidden');
+    }
+}

+ 0 - 22
src/Packagist/WebBundle/Resources/public/js/submitPackage.js

@@ -1,22 +0,0 @@
-$(document).ready(function() {
-    
-    $('#submit').click(function(){
-        var repo_name = $('#package_repository').val();
-        $('#form').hide();
-    	showLoader();
-        $.getJSON(window.base + '/name', { url: repo_name }, function(data) {
-            $('#package_name').html(data);
-            $('#repo_name').html(repo_name);
-            hideLoader();
-            $('#confirmation_panel').show();
-        });
-        return false;
-    });
-    
-    $('#confirm').click(function(){
-    	$('#confirmation_panel').hide();
-    	showLoader();
-    	
-    	return true;
-    });
-});

+ 17 - 0
src/Packagist/WebBundle/Resources/views/Web/confirmPackage.html.twig

@@ -0,0 +1,17 @@
+{% extends "PackagistWebBundle::layout.html.twig" %}
+
+{% block scripts %}
+    <script src="{{ asset('bundles/packagistweb/js/submitPackage.js')}}"></script>
+{% endblock %}
+
+{% block content %}
+    <h1>Submit package</h1>
+    <form action="" method="POST" {{ form_enctype(form) }}>
+        <div id="form">
+            {{ form_widget(form) }}
+            Package Name: {{ package.name }}
+            Package Repository {{ package.repository }}
+            <input id="submit" type="submit" value="Submit" />
+        </div>
+    </form>
+{% endblock %}

+ 0 - 6
src/Packagist/WebBundle/Resources/views/Web/submitPackage.html.twig

@@ -17,11 +17,5 @@
             {{ form_rest(form) }}
             <input id="submit" type="submit" value="Submit" />
         </div>
-        <div id="confirmation_panel" style="display:none;">
-            <em>Please confirm:</em><br />
-            Package name:<span id="package_name"></span> <br />
-            Repository:<span id="repo_name"></span><br />
-            <input id="confirm" type="submit" value="Submit" />
-        </div>
     </form>
 {% endblock %}