class EntryController extends Controller
{
+ /**
+ * @param Entry $entry
+ */
+ private function updateEntry(Entry $entry)
+ {
+ try {
+ $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
+ $em = $this->getDoctrine()->getManager();
+ $em->persist($entry);
+ $em->flush();
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ return true;
+ }
+
/**
* @param Request $request
*
$form->handleRequest($request);
if ($form->isValid()) {
- $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
-
- $em = $this->getDoctrine()->getManager();
- $em->persist($entry);
- $em->flush();
-
+ $this->updateEntry($entry);
$this->get('session')->getFlashBag()->add(
'notice',
'Entry saved'
));
}
+ /**
+ * @param Request $request
+ *
+ * @Route("/bookmarklet", name="bookmarklet")
+ *
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ public function addEntryViaBookmarklet(Request $request)
+ {
+ $entry = new Entry($this->getUser());
+ $entry->setUrl($request->get('url'));
+ $this->updateEntry($entry);
+
+ return $this->redirect($this->generateUrl('homepage'));
+ }
+
/**
* @param Request $request
*
--- /dev/null
+<a id="bookmarklet" ondragend="this.click();" href="javascript:var url=location.href||url;var wllbg=window.open('{{ url('bookmarklet') }}?url=' + encodeURI(url),'_blank');wllbg.close();void(0);">{% trans %}bag it!{% endtrans %}</a>
</ul>
<h3>{% trans %}Bookmarklet{% endtrans %}</h3>
<p>
- {% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %} {% trans %}bag it!{% endtrans %}
- </p>
+ {% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %}
+ {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
{% endblock %}
</div>
</li>
<li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
+ <li><a href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
<li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li>
<li><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
</ul>
<div id="set4" class="col s12">
- {% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %} {% trans %}bag it!{% endtrans %}
+ {% trans %}Drag & drop this link to your bookmarks bar:{% endtrans %}
+ {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %}
</div>
</div>
$this->assertCount(1, $crawler->filter('button[type=submit]'));
}
+ public function testPostNewViaBookmarklet()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/');
+
+ $this->assertCount(4, $crawler->filter('div[class=entry]'));
+
+ // Good URL
+ $crawler = $client->request('GET', '/bookmarklet', array('url' => $this->url));
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+ $crawler = $client->followRedirect();
+ $crawler = $client->request('GET', '/');
+ $this->assertCount(5, $crawler->filter('div[class=entry]'));
+
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+ $entry = $em
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findOneByUrl($this->url);
+ $em->remove($entry);
+ $em->flush();
+ }
+
public function testPostNewEmpty()
{
$this->logInAs('admin');