mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-13 04:53:26 +00:00
Rebased, fixed minor bugs
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
namespace Alchemy\Phrasea\Controller\Client;
|
||||
|
||||
use Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
|
||||
use Alchemy\Phrasea\Exception\SessionNotFound;
|
||||
use Entities\UserQuery;
|
||||
@@ -538,8 +539,10 @@ class Root implements ControllerProviderInterface
|
||||
*/
|
||||
private function getPublicationStartPage(Application $app)
|
||||
{
|
||||
$aggregate = Aggregate::createFromUser($app['EM'], $app['authentication']->getUser());
|
||||
|
||||
return $app['twig']->render('client/home_inter_pub_basket.html.twig', array(
|
||||
'feeds' => $app['EM']->getRepository('Entities\Feed')->getAllforUser($app['authentication']->getUser()),
|
||||
'feeds' => $aggregate,
|
||||
'image_size' => (int) $app['authentication']->getUser()->getPrefs('images_size')
|
||||
));
|
||||
}
|
||||
|
@@ -187,7 +187,7 @@ class Feed implements ControllerProviderInterface
|
||||
|
||||
$controllers->post('/entry/{id}/delete/', function(Application $app, Request $request, $id) {
|
||||
$datas = array('error' => true, 'message' => '');
|
||||
|
||||
|
||||
$entry = $app['EM']->getRepository('Entities\FeedEntry')->find($id);
|
||||
|
||||
if (null === $entry) {
|
||||
|
@@ -80,24 +80,7 @@ class Aggregate implements FeedInterface
|
||||
|
||||
public function getEntries($offset_start = 0, $how_many = null)
|
||||
{
|
||||
$count = 0;
|
||||
$added = 0;
|
||||
|
||||
$collection = array();
|
||||
foreach ($this->feeds as $feed) {
|
||||
foreach ($feed->getEntries() as $entry) {
|
||||
if ($count >= $offset_start) {
|
||||
$collection[] = $entry;
|
||||
$added++;
|
||||
}
|
||||
$count++;
|
||||
if (null !== $how_many && $added == $how_many) {
|
||||
return $collection;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $collection;
|
||||
return $this->em->getRepository('Entities\FeedEntry')->findByFeeds($this->feeds, $offset_start, $how_many);
|
||||
}
|
||||
|
||||
public function getSubtitle()
|
||||
@@ -112,9 +95,7 @@ class Aggregate implements FeedInterface
|
||||
|
||||
public function getIconUrl()
|
||||
{
|
||||
$url = '/skins/icons/rss32.gif';
|
||||
|
||||
return $url;
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getCreatedOn()
|
||||
|
@@ -1,108 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Alchemy\Phrasea\Feed;
|
||||
|
||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||
use Alchemy\Phrasea\Feed\Aggregate;
|
||||
use Entities\AggregateToken;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
||||
|
||||
class AggregateLinkGenerator
|
||||
{
|
||||
const FORMAT_ATOM = 'atom';
|
||||
const FORMAT_RSS = 'rss';
|
||||
|
||||
private $em;
|
||||
private $generator;
|
||||
private $random;
|
||||
|
||||
public function __construct(UrlGenerator $generator, EntityManager $em, \random $random)
|
||||
{
|
||||
$this->generator = $generator;
|
||||
$this->em = $em;
|
||||
$this->random = $random;
|
||||
}
|
||||
|
||||
public function generate(Aggregate $aggregate, \User_Adapter $user, $format, $page = null, $renew = false)
|
||||
{
|
||||
switch ($format) {
|
||||
case self::FORMAT_ATOM:
|
||||
$params = array('token' => $this->getAggregateToken($user, $renew)->getValue(),
|
||||
'format' => 'atom');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $aggregate->getTitle(), 'Atom'),
|
||||
'application/atom+xml'
|
||||
);
|
||||
break;
|
||||
case self::FORMAT_RSS:
|
||||
$params = array('token' => $this->getAggregateToken($user, $renew)->getValue(),
|
||||
'format' => 'rss');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $aggregate->getTitle(), 'RSS'),
|
||||
'application/rss+xml'
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
||||
}
|
||||
}
|
||||
|
||||
public function generatePublic(Aggregate $aggregate, $format, $page = null)
|
||||
{
|
||||
switch ($format) {
|
||||
case self::FORMAT_ATOM:
|
||||
$params = array('format' => 'atom');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $aggregate->getTitle(), 'Atom'),
|
||||
'application/atom+xml'
|
||||
);
|
||||
break;
|
||||
case self::FORMAT_RSS:
|
||||
$params = array('format' => 'rss');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user_aggregated', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $aggregate->getTitle(), 'RSS'),
|
||||
'application/rss+xml'
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
||||
}
|
||||
}
|
||||
|
||||
private function getAggregateToken(\User_Adapter $user, $renew = false)
|
||||
{
|
||||
$token = $this->em
|
||||
->getRepository('Entities\AggregateToken')
|
||||
->findByUser($user);
|
||||
|
||||
if (null === $token || true === $renew) {
|
||||
if (null === $token) {
|
||||
$token = new AggregateToken();
|
||||
$token->setUsrId($user->get_id());
|
||||
}
|
||||
|
||||
$token->setValue($this->random->generatePassword(12, \random::LETTERS_AND_NUMBERS));
|
||||
$this->em->persist($token);
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
}
|
@@ -1,68 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Phraseanet
|
||||
*
|
||||
* (c) 2005-2013 Alchemy
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Alchemy\Phrasea\Feed;
|
||||
|
||||
class FeedLink implements FeedLinkInterface
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $mimetype;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $title;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $uri;
|
||||
|
||||
/**
|
||||
* @param string $uri
|
||||
* @param string $title
|
||||
* @param string $mimetype
|
||||
*
|
||||
* @return FeedLink
|
||||
*/
|
||||
public function __construct($uri, $title, $mimetype)
|
||||
{
|
||||
$this->mimetype = $mimetype;
|
||||
$this->uri = $uri;
|
||||
$this->title = $title;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMimetype()
|
||||
{
|
||||
return $this->mimetype;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getURI()
|
||||
{
|
||||
return $this->uri;
|
||||
}
|
||||
}
|
@@ -1,116 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Alchemy\Phrasea\Feed;
|
||||
|
||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Entities\Feed;
|
||||
use Entities\FeedToken;
|
||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
||||
|
||||
class LinkGenerator
|
||||
{
|
||||
const FORMAT_ATOM = 'atom';
|
||||
const FORMAT_RSS = 'rss';
|
||||
|
||||
private $em;
|
||||
private $generator;
|
||||
private $random;
|
||||
|
||||
public function __construct(UrlGenerator $generator, EntityManager $em, \random $random)
|
||||
{
|
||||
$this->generator = $generator;
|
||||
$this->em = $em;
|
||||
$this->random = $random;
|
||||
}
|
||||
|
||||
public function generate(Feed $feed, \User_Adapter $user, $format, $page = null, $renew = false)
|
||||
{
|
||||
switch ($format) {
|
||||
case self::FORMAT_ATOM:
|
||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
'id' => $feed->getId(),
|
||||
'format' => 'atom');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $feed->getTitle(), 'Atom'),
|
||||
'application/atom+xml'
|
||||
);
|
||||
break;
|
||||
case self::FORMAT_RSS:
|
||||
$params = array('token' => $this->getFeedToken($feed, $user, $renew)->getValue(),
|
||||
'id' => $feed->getId(),
|
||||
'format' => 'rss');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_user', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $feed->getTitle(), 'RSS'),
|
||||
'application/rss+xml'
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
||||
}
|
||||
}
|
||||
|
||||
public function generatePublic(Feed $feed, $format, $page = null)
|
||||
{
|
||||
switch ($format) {
|
||||
case self::FORMAT_ATOM:
|
||||
$params = array('id' => $feed->getId(),
|
||||
'format' => 'atom');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_public', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $feed->getTitle(), 'Atom'),
|
||||
'application/atom+xml'
|
||||
);
|
||||
break;
|
||||
case self::FORMAT_RSS:
|
||||
$params = array('id' => $feed->getId(),
|
||||
'format' => 'rss');
|
||||
if (null !== $page) {
|
||||
$params['page'] = $page;
|
||||
}
|
||||
return new FeedLink(
|
||||
$this->generator->generate('feed_public', $params, UrlGenerator::ABSOLUTE_URL),
|
||||
sprintf('%s - %s', $feed->getTitle(), 'RSS'),
|
||||
'application/rss+xml'
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidArgumentException(sprintf('Format %s is not recognized.', $format));
|
||||
}
|
||||
}
|
||||
|
||||
private function getFeedToken(Feed $feed, \User_Adapter $user, $renew = false)
|
||||
{
|
||||
$token = $this->em
|
||||
->getRepository('Entities\FeedToken')
|
||||
->findByFeedAndUser($feed, $user);
|
||||
|
||||
if (null === $token || true === $renew) {
|
||||
if (null === $token) {
|
||||
$token = new FeedToken();
|
||||
$token->setFeed($feed);
|
||||
$token->setUsrId($user->get_id());
|
||||
$feed->addToken($token);
|
||||
|
||||
$this->em->persist($feed);
|
||||
}
|
||||
|
||||
$token->setValue($this->random->generatePassword(12, \random::LETTERS_AND_NUMBERS));
|
||||
$this->em->persist($token);
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Phraseanet
|
||||
*
|
||||
* (c) 2005-2013 Alchemy
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Alchemy\Phrasea\Feed;
|
||||
|
||||
interface FeedLinkInterface
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getMimetype();
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTitle();
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getURI();
|
||||
}
|
@@ -32,7 +32,7 @@ class SessionRepository extends EntityRepository
|
||||
}
|
||||
|
||||
$dql .= ' OR f.public = true
|
||||
ORDER BY f.created_on DESC';
|
||||
ORDER BY f.updated_on DESC';
|
||||
|
||||
$query = $this->_em->createQuery($dql);
|
||||
$feeds = $query->getResult();
|
||||
@@ -44,7 +44,7 @@ class SessionRepository extends EntityRepository
|
||||
{
|
||||
$dql = 'SELECT f FROM Entities\Feed f
|
||||
WHERE f.public = true
|
||||
ORDER BY f.created_on DESC';
|
||||
ORDER BY f.updated_on DESC';
|
||||
|
||||
$query = $this->_em->createQuery($dql);
|
||||
$feeds = $query->getResult();
|
||||
|
@@ -38,7 +38,7 @@ class UserSettingRepository extends EntityRepository
|
||||
public function findByFeeds($feeds, $offset_start = null, $how_many = null)
|
||||
{
|
||||
$dql = 'SELECT f FROM Entities\FeedEntry f
|
||||
WHERE f.feed IN (:feeds)';
|
||||
WHERE f.feed IN (:feeds) order by f.updated_on DESC';
|
||||
|
||||
$query = $this->_em->createQuery($dql);
|
||||
$query->setParameter('feeds', $feeds);
|
||||
|
@@ -185,19 +185,19 @@ class record_preview extends record_adapter
|
||||
foreach ($entry->getItems() as $element) {
|
||||
$i ++;
|
||||
if ($first) {
|
||||
$sbas_id = $element->getRecord()->get_sbas_id();
|
||||
$record_id = $element->getRecord()->get_record_id();
|
||||
$this->original_item = $element;
|
||||
$sbas_id = $element->getRecord($this->app)->get_sbas_id();
|
||||
$record_id = $element->getRecord($this->app)->get_record_id();
|
||||
$this->name = $entry->getTitle();
|
||||
$this->original_item = $element;
|
||||
$number = $element->getOrd();
|
||||
}
|
||||
$first = false;
|
||||
|
||||
if ($element->getOrd() == $pos) {
|
||||
$sbas_id = $element->getRecord()->get_sbas_id();
|
||||
$record_id = $element->getRecord()->get_record_id();
|
||||
$this->original_item = $element;
|
||||
$sbas_id = $element->getRecord($this->app)->get_sbas_id();
|
||||
$record_id = $element->getRecord($this->app)->get_record_id();
|
||||
$this->name = $entry->getTitle();
|
||||
$this->original_item = $element;
|
||||
$number = $element->getOrd();
|
||||
}
|
||||
}
|
||||
|
@@ -29,7 +29,7 @@
|
||||
{% for item in feed_entry.getItems() %}
|
||||
<li class="image_box" id="item_{{item.getId()}}">
|
||||
<a href="{{ path('lightbox_ajax_load_feeditem', { 'entry_id' : feed_entry.getId(), 'item_id' : item.getId()}) }}">
|
||||
{{thumbnail.format(item.getRecord().get_thumbnail(), 80, 80, '', true, false)}}
|
||||
{{thumbnail.format(item.getRecord(app).get_thumbnail(), 80, 80, '', true, false)}}
|
||||
</a>
|
||||
<input type="hidden" class="display_id" name="display_id" value="{{item.getOrd()}}" />
|
||||
</li>
|
||||
|
@@ -15,7 +15,7 @@
|
||||
<div data-role="page">
|
||||
<div data-role="header">
|
||||
<a href="{{ path('lightbox_feed_entry', { 'entry_id' : feed_element.getEntry().getId() }) }}" data-rel="back" data-icon="arrow-l">Back</a>
|
||||
<h1>{{feed_element.getOrd()}} - {{record.getTitle()}}</h1>
|
||||
<h1>{{feed_element.getOrd()}} - {{record.get_title()}}</h1>
|
||||
<a rel="external" href="{{ path('lightbox') }}" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
|
@@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<div style="width:100%;position:relative;float:left;" id="PUBLICONT{{ entry.getId() }}">
|
||||
{% for item in entry.getItems() %}
|
||||
{% set record = item.getRecord() %}
|
||||
{% set record = item.getRecord(app) %}
|
||||
{% set thumbnail = record.get_thumbnail() %}
|
||||
{% set docType = record.get_type() %}
|
||||
{% set duration = "" %}
|
||||
|
@@ -10,7 +10,7 @@
|
||||
<form name="download_form" class="download_form" style="display:none;">
|
||||
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
||||
</form>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord().get_sbas_id(), 'record_id' : element.getRecord().get_record_id() }) }}" class="previewTips"></div>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord(app).get_sbas_id(), 'record_id' : element.getRecord(app).get_record_id() }) }}" class="previewTips"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -10,7 +10,7 @@
|
||||
<form name="download_form" class="download_form" style="display:none;">
|
||||
<input type="hidden" name="basrec" value="{{element.getRecord(app).get_serialize_key()}}"/>
|
||||
</form>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord().get_sbas_id(), 'record_id' : element.getRecord().get_record_id() }) }}" class="previewTips"></div>
|
||||
<div tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : element.getRecord(app).get_sbas_id(), 'record_id' : element.getRecord(app).get_record_id() }) }}" class="previewTips"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -18,7 +18,7 @@
|
||||
<div class="PNB10 record_list" style="overflow:auto;">
|
||||
{% for content in entry.getItems() %}
|
||||
<div class="sortable" style="position:relative;float:left;">
|
||||
{{ _self.format_diapo(content.getRecord()) }}
|
||||
{{ _self.format_diapo(content.getRecord(app)) }}
|
||||
<form>
|
||||
<input type="hidden" name="item_id" value="{{content.getId()}}" />
|
||||
</form>
|
||||
|
@@ -7,7 +7,11 @@
|
||||
<td>
|
||||
<h1 class="title">
|
||||
{% if feed.isAggregated() %}
|
||||
<img style="height:16px;" src="{{ entry.getFeed().getIconUrl() }}" />
|
||||
<img style="height:16px;" src="{% if entry.getFeed().getIconUrl() == false %}
|
||||
/skins/icons/rss32.gif
|
||||
{% else %}
|
||||
/custom/feed_{{ entry.getFeed().getId() }}.jpg
|
||||
{% endif %}"/>
|
||||
{% endif %}
|
||||
{{ entry.getTitle() }}
|
||||
{% set author = entry.getAuthorName() %}
|
||||
@@ -47,14 +51,18 @@
|
||||
{% trans %}
|
||||
dans {{feed_name}}
|
||||
{% endtrans %}
|
||||
<img style="height:16px;" src="{{ entry.getFeed().getIconUrl() }}" />
|
||||
<img style="height:16px;" src="{% if entry.getFeed().getIconUrl() == false %}
|
||||
/skins/icons/rss32.gif
|
||||
{% else %}
|
||||
/custom/feed_{{ entry.getFeed().getId() }}.jpg
|
||||
{% endif %}"/>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<p>{{ entry.getSubtitle()|nl2br|raw }}</p>
|
||||
<div class="contents selectable">
|
||||
{% for item in entry.getItems() %}
|
||||
{% set record = item.getRecord() %}
|
||||
{% set record = item.getRecord(app) %}
|
||||
{% set prefix = 'PUBLI_' ~ item.getId() %}
|
||||
{{record_format.block(record, false, null, prefix, entry.getId())}}
|
||||
{% endfor %}
|
||||
|
@@ -6,7 +6,11 @@
|
||||
<tr>
|
||||
<td style="width:600px;">
|
||||
<h1>
|
||||
<img src="{{feed.getIconUrl()}}" style="height:32px;"/>
|
||||
<img src="{% if feed.getIconUrl() == false %}
|
||||
/skins/icons/rss32.gif
|
||||
{% else %}
|
||||
/custom/feed_{{ feed.getId() }}.jpg
|
||||
{% endif %}" style="height:32px;"/>
|
||||
{% if feed.isAggregated %}
|
||||
{% trans 'Toutes les publications' %}
|
||||
<a class="feed_reload ajax_answers no_scroll" href="{{ path('prod_feeds') }}" >
|
||||
@@ -36,7 +40,11 @@
|
||||
{% for aval_feed in feeds %}
|
||||
<li>
|
||||
<a class="ajax_answers" href="{{ path('prod_feeds_feed', { 'id' : aval_feed.getId() }) }}">
|
||||
<img src="{{aval_feed.getIconUrl()}}" style="height:16px;"/> {{ aval_feed.getTitle() }}
|
||||
<img src="{% if aval_feed.getIconUrl() == false %}
|
||||
/skins/icons/rss32.gif
|
||||
{% else %}
|
||||
/custom/feed_{{ aval_feed.getId() }}.jpg
|
||||
{% endif %}" style="height:16px;"/> {{ aval_feed.getTitle() }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<div id="PREVIEWCURRENTCONT" class="PNB10">
|
||||
<ul>
|
||||
{% for child in record.get_container().get_content() %}
|
||||
{% for child in record.get_container() %}
|
||||
|
||||
{% set thumbnail = child.get_record().get_thumbnail() %}
|
||||
{% set thumbnail = child.getRecord(app).get_thumbnail() %}
|
||||
{% if thumbnail.is_paysage() %}
|
||||
{% set style = 'width:65px;top:' %}
|
||||
{% set top = ((66 - (65 / (thumbnail.get_width() / thumbnail.get_height()))) / 2)|round %}
|
||||
@@ -14,16 +14,16 @@
|
||||
|
||||
{% set tooltip = '' %}
|
||||
{% if app['phraseanet.registry'].get('GV_rollover_reg_preview') %}
|
||||
{% set tooltip = 'tooltipsrc="' ~ path('prod_tooltip_preview', { 'sbas_id' : child.get_record().get_sbas_id(), 'record_id' : child.get_record().get_record_id() }) ~ '"' %}
|
||||
{% set tooltip = 'tooltipsrc="' ~ path('prod_tooltip_preview', { 'sbas_id' : child.getRecord(app).get_sbas_id(), 'record_id' : child.get_record().get_record_id() }) ~ '"' %}
|
||||
{% endif %}
|
||||
|
||||
{% set class = '' %}
|
||||
{% if record.get_number() == child.get_ord() %}
|
||||
{% if record.get_number() == child.getOrd() %}
|
||||
{% set class = ' selected' %}
|
||||
{% endif %}
|
||||
|
||||
<li class="{{class}} prevTrainCurrent">
|
||||
<img {{tooltip|raw}} jsargs="FEED|{{child.get_ord()}}|{{record.get_container().get_id()}}"
|
||||
<img {{tooltip|raw}} jsargs="FEED|{{child.get_ord()}}|{{record.get_container().getId()}}"
|
||||
class="openPreview prevRegToolTip" return(false);" src="{{thumbnail.get_url()}}"
|
||||
style="{{style}}margin:7px;position:relative;"/></li>
|
||||
{% endfor %}
|
||||
|
@@ -9,19 +9,19 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
{
|
||||
public function testDatafilesRouteAuthenticated()
|
||||
{
|
||||
$crawler = self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/');
|
||||
$crawler = self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/');
|
||||
$response = self::$DI['client']->getResponse();
|
||||
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
$content_disposition = explode(';', $response->headers->get('content-disposition'));
|
||||
$this->assertEquals('inline', $content_disposition[0]);
|
||||
$this->assertEquals(self::$DI['record_1']->get_preview()->get_mime(), $response->headers->get('content-type'));
|
||||
$this->assertEquals(self::$DI['record_1']->get_preview()->get_size(), $response->headers->get('content-length'));
|
||||
$this->assertEquals(self::$DI['record_24']->get_preview()->get_mime(), $response->headers->get('content-type'));
|
||||
$this->assertEquals(self::$DI['record_24']->get_preview()->get_size(), $response->headers->get('content-length'));
|
||||
}
|
||||
|
||||
public function testDatafilesNonExistentSubdef()
|
||||
{
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/asubdefthatdoesnotexists/');
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/asubdefthatdoesnotexists/');
|
||||
|
||||
$this->assertNotFoundResponse(self::$DI['client']->getResponse());
|
||||
}
|
||||
@@ -56,7 +56,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
public function testDatafilesRouteNotAuthenticated()
|
||||
{
|
||||
self::$DI['app']['authentication']->closeAccount();
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/');
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/');
|
||||
|
||||
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
||||
}
|
||||
@@ -64,7 +64,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
public function testDatafilesRouteNotAuthenticatedUnknownSubdef()
|
||||
{
|
||||
self::$DI['app']['authentication']->closeAccount();
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/notfoundreview/');
|
||||
self::$DI['client']->request('GET', '/datafiles/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/notfoundreview/');
|
||||
|
||||
$this->assertForbiddenResponse(self::$DI['client']->getResponse());
|
||||
}
|
||||
@@ -105,7 +105,7 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
{
|
||||
$this->assertTrue(self::$DI['app']['authentication']->isAuthenticated());
|
||||
$token = "unexisting_token";
|
||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . "/" . self::$DI['record_1']->get_record_id() . '/caption/?token='.$token;
|
||||
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . "/" . self::$DI['record_24']->get_record_id() . '/caption/?token='.$token;
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
$response = self::$DI['client']->getResponse();
|
||||
@@ -158,8 +158,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
|
||||
protected function get_a_caption(array $headers = array())
|
||||
{
|
||||
$token = self::$DI['record_1']->get_thumbnail()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . "/" . self::$DI['record_1']->get_record_id() . '/caption/?token='.$token;
|
||||
$token = self::$DI['record_24']->get_thumbnail()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . "/" . self::$DI['record_24']->get_record_id() . '/caption/?token='.$token;
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
$response = self::$DI['client']->getResponse();
|
||||
@@ -168,15 +168,15 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
$this->assertEquals($value, $response->headers->get($name));
|
||||
}
|
||||
|
||||
$caption = self::$DI['record_1']->get_caption()->serialize(\caption_record::SERIALIZE_JSON);
|
||||
$caption = self::$DI['record_24']->get_caption()->serialize(\caption_record::SERIALIZE_JSON);
|
||||
$this->assertEquals($caption, $response->getContent());
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
}
|
||||
|
||||
protected function get_a_permalinkBCcompatibility(array $headers = array())
|
||||
{
|
||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/' . $token . '/preview/';
|
||||
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/' . $token . '/preview/';
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
$response = self::$DI['client']->getResponse();
|
||||
@@ -191,8 +191,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
|
||||
protected function get_a_permaviewBCcompatibility(array $headers = array())
|
||||
{
|
||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/' . $token . '/preview/';
|
||||
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/whateverIwannt/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/' . $token . '/preview/';
|
||||
|
||||
$url = $url . 'view/';
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
@@ -207,8 +207,8 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
|
||||
protected function get_a_permalink(array $headers = array())
|
||||
{
|
||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/whateverIwannt.jpg?token=' . $token . '';
|
||||
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/whateverIwannt.jpg?token=' . $token . '';
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
$response = self::$DI['client']->getResponse();
|
||||
@@ -217,14 +217,18 @@ class ApplicationOverviewTest extends \PhraseanetWebTestCaseAuthenticatedAbstrac
|
||||
$this->assertEquals($value, $response->headers->get($name));
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
$this->assertEquals(rtrim(self::$DI['app']['phraseanet.configuration']['main']['servername'], '/') . "/permalink/v1/1/". self::$DI['record_1']->get_record_id()."/caption/?token=".$token, $response->headers->get("Link"));
|
||||
=======
|
||||
$this->assertEquals($response->headers->get("Link"), "/permalink/v1/1/". self::$DI['record_24']->get_record_id()."/caption/?token=".$token);
|
||||
>>>>>>> Rebased, fixed minor bugs
|
||||
$this->assertEquals(200, $response->getStatusCode());
|
||||
}
|
||||
|
||||
protected function get_a_permaview(array $headers = array())
|
||||
{
|
||||
$token = self::$DI['record_1']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/preview/?token=' . $token . '';
|
||||
$token = self::$DI['record_24']->get_preview()->get_permalink()->get_token();
|
||||
$url = '/permalink/v1/' . self::$DI['record_24']->get_sbas_id() . '/' . self::$DI['record_24']->get_record_id() . '/preview/?token=' . $token . '';
|
||||
|
||||
$crawler = self::$DI['client']->request('GET', $url);
|
||||
$response = self::$DI['client']->getResponse();
|
||||
|
@@ -13,12 +13,12 @@ class FeedServiceProviderTest extends ServiceProviderTestCase
|
||||
array(
|
||||
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
||||
'feed.user-link-generator',
|
||||
'Alchemy\Phrasea\Feed\LinkGenerator'
|
||||
'Alchemy\Phrasea\Feed\Link\FeedLinkGenerator'
|
||||
),
|
||||
array(
|
||||
'Alchemy\Phrasea\Core\Provider\FeedServiceProvider',
|
||||
'feed.aggregate-link-generator',
|
||||
'Alchemy\Phrasea\Feed\AggregateLinkGenerator'
|
||||
'Alchemy\Phrasea\Feed\Link\AggregateLinkGenerator'
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@@ -1,194 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Alchemy\Tests\Phrasea\Feed;
|
||||
|
||||
use Alchemy\Phrasea\Feed\LinkGenerator;
|
||||
use Symfony\Component\Routing\Generator\UrlGenerator;
|
||||
|
||||
class LinkGeneratorTest extends \PhraseanetPHPUnitAbstract
|
||||
{
|
||||
/**
|
||||
* @dataProvider provideGenerationData
|
||||
*/
|
||||
public function testGenerate($expected, $format, $feed, $user, $page, $renew, $alreadyCreated)
|
||||
{
|
||||
self::$DI['app']['EM']->persist($feed);
|
||||
self::$DI['app']['EM']->flush();
|
||||
|
||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
if ($alreadyCreated) {
|
||||
$token = $this->insertOneFeedToken($feed, $user);
|
||||
$tokenValue = $token->getValue();
|
||||
}
|
||||
|
||||
$capture = null;
|
||||
$generator->expects($this->once())
|
||||
->method('generate')
|
||||
->with('feed_user', $this->isType('array'), UrlGenerator::ABSOLUTE_URL)
|
||||
->will($this->returnCallback(function ($name, $data, $option) use (&$capture, $expected) {
|
||||
$capture = $data;
|
||||
|
||||
return $expected;
|
||||
}));
|
||||
|
||||
$random = self::$DI['app']['tokens'];
|
||||
|
||||
$linkGenerator = new LinkGenerator($generator, self::$DI['app']['EM'], $random);
|
||||
|
||||
$link = $linkGenerator->generate($feed, $user, $format, $page, $renew);
|
||||
|
||||
$this->assertSame($expected, $link->getUri());
|
||||
if ($format == "atom") {
|
||||
$this->assertSame("application/atom+xml", $link->getMimetype());
|
||||
$this->assertSame("Title - Atom", $link->getTitle());
|
||||
}
|
||||
elseif ($format == "rss") {
|
||||
$this->assertSame("application/rss+xml", $link->getMimetype());
|
||||
$this->assertSame("Title - RSS", $link->getTitle());
|
||||
}
|
||||
|
||||
if ($alreadyCreated) {
|
||||
if ($renew) {
|
||||
$this->assertEquals($feed->getId(), $capture['id']);
|
||||
$this->assertEquals($format, $capture['format']);
|
||||
$this->assertNotEquals($tokenValue, $capture['token']);
|
||||
if (null !== $page) {
|
||||
$this->assertEquals($page, $capture['page']);
|
||||
}
|
||||
|
||||
$this->assertCount(0, self::$DI['app']['EM']
|
||||
->getRepository("Entities\FeedToken")
|
||||
->findBy(array('value' => $tokenValue)));
|
||||
$this->assertCount(1, self::$DI['app']['EM']
|
||||
->getRepository("Entities\FeedToken")
|
||||
->findBy(array('value' => $capture['token'])));
|
||||
} else {
|
||||
$expectedParams = array(
|
||||
'token' => $tokenValue,
|
||||
'id' => $feed->getId(),
|
||||
'format' => $format,
|
||||
);
|
||||
|
||||
if ($page !== null) {
|
||||
$expectedParams['page'] = $page;
|
||||
}
|
||||
|
||||
$this->assertEquals($expectedParams, $capture);
|
||||
|
||||
$this->assertCount(1, self::$DI['app']['EM']
|
||||
->getRepository("Entities\FeedToken")
|
||||
->findBy(array('value' => $tokenValue)));
|
||||
}
|
||||
} else {
|
||||
if (null !== $page) {
|
||||
$this->assertEquals($page, $capture['page']);
|
||||
}
|
||||
$this->assertEquals($feed->getId(), $capture['id']);
|
||||
$this->assertEquals($format, $capture['format']);
|
||||
$this->assertEquals(12, strlen($capture['token']));
|
||||
|
||||
$this->assertCount(1, self::$DI['app']['EM']
|
||||
->getRepository("Entities\FeedToken")
|
||||
->findBy(array('value' => $capture['token'])));
|
||||
}
|
||||
$token = self::$DI['app']['EM']
|
||||
->getRepository('Entities\FeedToken')
|
||||
->findByFeedAndUser($feed, $user);
|
||||
self::$DI['app']['EM']->remove($token);
|
||||
self::$DI['app']['EM']->flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideGenerationDataPublic
|
||||
*/
|
||||
public function testGeneratePublic($expected, $format, $feed, $page)
|
||||
{
|
||||
self::$DI['app']['EM']->persist($feed);
|
||||
self::$DI['app']['EM']->flush();
|
||||
|
||||
$generator = $this->getMockBuilder('Symfony\Component\Routing\Generator\UrlGenerator')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$capture = null;
|
||||
$generator->expects($this->once())
|
||||
->method('generate')
|
||||
->with('feed_public', $this->isType('array'), UrlGenerator::ABSOLUTE_URL)
|
||||
->will($this->returnCallback(function ($name, $data, $option) use (&$capture, $expected) {
|
||||
$capture = $data;
|
||||
|
||||
return $expected;
|
||||
}));
|
||||
|
||||
$random = self::$DI['app']['tokens'];
|
||||
|
||||
$linkGenerator = new LinkGenerator($generator, self::$DI['app']['EM'], $random);
|
||||
|
||||
$link = $linkGenerator->generatePublic($feed, $format, $page);
|
||||
|
||||
$this->assertSame($expected, $link->getUri());
|
||||
if ($format == "atom") {
|
||||
$this->assertSame("application/atom+xml", $link->getMimetype());
|
||||
$this->assertSame("Title - Atom", $link->getTitle());
|
||||
}
|
||||
elseif ($format == "rss") {
|
||||
$this->assertSame("application/rss+xml", $link->getMimetype());
|
||||
$this->assertSame("Title - RSS", $link->getTitle());
|
||||
}
|
||||
|
||||
if (null !== $page) {
|
||||
$this->assertEquals($page, $capture['page']);
|
||||
}
|
||||
$this->assertEquals($feed->getId(), $capture['id']);
|
||||
$this->assertEquals($format, $capture['format']);
|
||||
}
|
||||
|
||||
public function provideGenerationData()
|
||||
{
|
||||
$user = $this->getMockBuilder('User_Adapter')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$user->expects($this->any())
|
||||
->method('get_id')
|
||||
->will($this->returnValue(42));
|
||||
|
||||
$feed = new \Entities\Feed();
|
||||
$feed->setTitle('Title');
|
||||
|
||||
return array(
|
||||
array('doliprane', 'atom', $feed, $user, null, false, false),
|
||||
array('doliprane', 'atom', $feed, $user, null, false, true),
|
||||
array('doliprane', 'atom', $feed, $user, null, true, false),
|
||||
array('doliprane', 'atom', $feed, $user, null, true, true),
|
||||
array('doliprane', 'atom', $feed, $user, 1, false, false),
|
||||
array('doliprane', 'atom', $feed, $user, 1, false, true),
|
||||
array('doliprane', 'atom', $feed, $user, 1, true, false),
|
||||
array('doliprane', 'atom', $feed, $user, 1, true, true),
|
||||
array('doliprane', 'rss', $feed, $user, null, false, false),
|
||||
array('doliprane', 'rss', $feed, $user, null, false, true),
|
||||
array('doliprane', 'rss', $feed, $user, null, true, false),
|
||||
array('doliprane', 'rss', $feed, $user, null, true, true),
|
||||
array('doliprane', 'rss', $feed, $user, 1, false, false),
|
||||
array('doliprane', 'rss', $feed, $user, 1, false, true),
|
||||
array('doliprane', 'rss', $feed, $user, 1, true, false),
|
||||
array('doliprane', 'rss', $feed, $user, 1, true, true),
|
||||
);
|
||||
}
|
||||
|
||||
public function provideGenerationDataPublic()
|
||||
{
|
||||
$feed = new \Entities\Feed();
|
||||
$feed->setTitle('Title');
|
||||
|
||||
return array(
|
||||
array('doliprane', 'atom', $feed, null),
|
||||
array('doliprane', 'atom', $feed, 1),
|
||||
array('doliprane', 'rss', $feed, null),
|
||||
array('doliprane', 'rss', $feed, 1)
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user