mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-22 23:56:29 +00:00
article view, fav list, archive list
This commit is contained in:
parent
9d50517cea
commit
bd9f08157c
7 changed files with 232 additions and 29 deletions
|
@ -29,6 +29,21 @@ framework:
|
|||
twig:
|
||||
debug: "%kernel.debug%"
|
||||
strict_variables: "%kernel.debug%"
|
||||
globals:
|
||||
share_twitter: %share_twitter%
|
||||
share_mail: %share_mail%
|
||||
share_shaarli: %share_shaarli%
|
||||
shaarli_url: %shaarli_url%
|
||||
share_diaspora: %share_diaspora%
|
||||
diaspora_url: %diaspora_url%
|
||||
flattr: %flattr%
|
||||
flattrable: 1
|
||||
flattred: 2
|
||||
carrot: %carrot%
|
||||
show_printlink: %show_printlink%
|
||||
export_epub: %export_epub%
|
||||
export_mobi: %export_mobi%
|
||||
export_pdf: %export_pdf%
|
||||
|
||||
# Assetic Configuration
|
||||
assetic:
|
||||
|
|
|
@ -11,7 +11,7 @@ class EntryController extends Controller
|
|||
/**
|
||||
* @Route("/unread", name="unread")
|
||||
*/
|
||||
public function unreadAction()
|
||||
public function showUnreadAction()
|
||||
{
|
||||
$repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries');
|
||||
$entries = $repository->findUnreadByUser(1);
|
||||
|
@ -22,4 +22,49 @@ class EntryController extends Controller
|
|||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/archive", name="archive")
|
||||
*/
|
||||
public function showArchiveAction()
|
||||
{
|
||||
$repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries');
|
||||
$entries = $repository->findArchiveByUser(1);
|
||||
|
||||
return $this->render(
|
||||
'WallabagBundle:Entry:entries.html.twig',
|
||||
array('entries' => $entries)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/starred", name="starred")
|
||||
*/
|
||||
public function showStarredAction()
|
||||
{
|
||||
$repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries');
|
||||
$entries = $repository->findStarredByUser(1);
|
||||
|
||||
return $this->render(
|
||||
'WallabagBundle:Entry:entries.html.twig',
|
||||
array('entries' => $entries)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/view/{id}", requirements={"id" = "\d+"}, name="view")
|
||||
*/
|
||||
public function viewAction($id)
|
||||
{
|
||||
$repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries');
|
||||
$entry = $repository->find($id);
|
||||
|
||||
return $this->render(
|
||||
'WallabagBundle:Entry:entry.html.twig',
|
||||
array('entry' => $entry)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,14 +13,6 @@ use Doctrine\ORM\EntityRepository;
|
|||
*/
|
||||
class EntriesRepository extends EntityRepository
|
||||
{
|
||||
/* public function findUnreadByUser($userId)
|
||||
{
|
||||
return $this->createQueryBuilder('e')
|
||||
->where('e.is_read = 0')
|
||||
->andWhere('e.user_id = :userId')
|
||||
->setParameter('userId', $userId)
|
||||
->getQuery();
|
||||
}*/
|
||||
public function findUnreadByUser($userId)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('e')
|
||||
|
@ -32,4 +24,28 @@ class EntriesRepository extends EntityRepository
|
|||
|
||||
return $qb;
|
||||
}
|
||||
|
||||
public function findArchiveByUser($userId)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('e')
|
||||
->select('e')
|
||||
->where('e.isRead = 1')
|
||||
->andWhere('e.userId =:userId')->setParameter('userId', $userId)
|
||||
->getQuery()
|
||||
->getResult(Query::HYDRATE_ARRAY);
|
||||
|
||||
return $qb;
|
||||
}
|
||||
|
||||
public function findStarredByUser($userId)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('e')
|
||||
->select('e')
|
||||
->where('e.isFav = 1')
|
||||
->andWhere('e.userId =:userId')->setParameter('userId', $userId)
|
||||
->getQuery()
|
||||
->getResult(Query::HYDRATE_ARRAY);
|
||||
|
||||
return $qb;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,12 +2,18 @@
|
|||
|
||||
{% block title "Unread" %}
|
||||
|
||||
{% block content_header '' %}
|
||||
{% block menu %}
|
||||
{% include "WallabagBundle::_menu.html.twig" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% if entries is empty %}
|
||||
<div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
|
||||
{% else %}
|
||||
{% for entry in entries %}
|
||||
<div id="entry-{{ entry.id|e }}" class="entrie">
|
||||
<h2><a href="index.php?view=view&id={{ entry.id|e }}">{{ entry.title|raw }}</a></h2>
|
||||
<h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
|
||||
{% if entry.content| readingTime > 0 %}
|
||||
<div class="estimatedTime"><span class="tool reading-time">{% trans %}estimated reading time :{% endtrans %} {{ entry.content| readingTime }} min</span></div>
|
||||
{% else %}
|
||||
|
@ -23,4 +29,5 @@
|
|||
<p>{{ entry.content|striptags|slice(0, 300) }}...</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
104
src/WallabagBundle/Resources/views/Entry/entry.html.twig
Normal file
104
src/WallabagBundle/Resources/views/Entry/entry.html.twig
Normal file
|
@ -0,0 +1,104 @@
|
|||
{% extends "WallabagBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ entry.title|raw }} ({{ entry.url | e | domainName }}){% endblock %}
|
||||
|
||||
{% block menu %}
|
||||
{% include "WallabagBundle::_menu.html.twig" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="article_toolbar">
|
||||
<ul class="links">
|
||||
<li class="topPosF"><a href="#top" title="{% trans %}Back to top{% endtrans %}" class="tool top icon icon-arrow-up-thick"><span>{% trans %}Back to top{% endtrans %}</span></a></li>
|
||||
<li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.url | e | domainName }}</span></a></li>
|
||||
<li><a title="{% trans %}Mark as read{% endtrans %}" class="tool icon icon-check {% if entry.isRead == 0 %}archive-off{% else %}archive{% endif %}" href="javascript: void(null);" id="markAsRead"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
|
||||
<li><a title="{% trans %}Favorite{% endtrans %}" class="tool icon icon-star {% if entry.isFav == 0 %}fav-off{% else %}fav{% endif %}" href="javascript: void(null);" id="setFav"><span>{% trans %}Toggle favorite{% endtrans %}</span></a></li>
|
||||
<li><a title="{% trans %}Delete{% endtrans %}" class="tool delete icon icon-trash" href="./?action=delete&id={{ entry.id|e }}"><span>{% trans %}Delete{% endtrans %}</span></a></li>
|
||||
{% if share_twitter %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="{% trans %}Tweet{% endtrans %}"><span>{% trans %}Tweet{% endtrans %}</span></a></li>{% endif %}
|
||||
{% if share_mail %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{% trans %}Email{% endtrans %}"><span>{% trans %}Email{% endtrans %}</span></a></li>{% endif %}
|
||||
{% if share_shaarli %}<li><a href="{{ shaarli_url }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="{% trans %}shaarli{% endtrans %}"><span>{% trans %}shaarli{% endtrans %}</span></a></li>{% endif %}
|
||||
{% if share_diaspora %}<li><a href="{{ diaspora_url }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="{% trans %}diaspora{% endtrans %}"><span>{% trans %}diaspora{% endtrans %}</span></a></li>{% endif %}
|
||||
{# {% if flattr %}{% if flattr.status == flattrable %}<li><a href="http://flattr.com/submit/auto?url={{ entry.url }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans %}flattr{% endtrans %}"><span>{% trans %}flattr{% endtrans %}</span></a></li>{% elseif flattr.status == flattred %}<li><a href="{{ flattr.flattrItemURL }}" class="tool flattr icon icon-flattr" target="_blank" title="{% trans %}flattr{% endtrans %}><span>{% trans %}flattr{% endtrans %}</span> ({{ flattr.numFlattrs }})</a></li>{% endif %}{% endif %} #}
|
||||
{% if carrot %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="{% trans %}carrot{% endtrans %}"><span>Carrot</span></a></li>{% endif %}
|
||||
{% if show_printlink %}<li><a title="{% trans %}Print{% endtrans %}" class="tool icon icon-print" href="javascript: window.print();"><span>{% trans %}Print{% endtrans %}</span></a></li>{% endif %}
|
||||
{% if export_epub %}<li><a href="./?epub&method=id&value={{ entry.id|e }}" title="Generate ePub file">EPUB</a></li>{% endif %}
|
||||
{% if export_mobi %}<li><a href="./?mobi&method=id&value={{ entry.id|e }}" title="Generate Mobi file">MOBI</a></li>{% endif %}
|
||||
{% if export_pdf %}<li><a href="./?pdf&method=id&value={{ entry.id|e }}" title="Generate PDF file">PDF</a></li>{% endif %}
|
||||
<li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{% trans %}Does this article appear wrong?{% endtrans %}" class="tool bad-display icon icon-delete"><span>{% trans %}Does this article appear wrong?{% endtrans %}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="article">
|
||||
<header class="mbm">
|
||||
<h1>{{ entry.title|raw }}</h1>
|
||||
</header>
|
||||
<aside class="tags">
|
||||
tags: {# {% for tag in tags %}<a href="./?view=tag&id={{ tag.id }}">{{ tag.value }}</a> {% endfor %}<a href="./?view=edit-tags&id={{ entry.id|e }}" title="{% trans %}Edit tags{% endtrans %}">✎</a> #}
|
||||
</aside>
|
||||
<article>
|
||||
{{ entry.content | raw }}
|
||||
</article>
|
||||
</div>
|
||||
<script src="{{ asset('themes/_global/js/restoreScroll.js')}}"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
// toggle read property of current article
|
||||
$('#markAsRead').click(function(){
|
||||
$("body").css("cursor", "wait");
|
||||
$.ajax( { url: './?action=toggle_archive&id={{ entry.id|e }}' }).done(
|
||||
function( data ) {
|
||||
if ( data == '1' ) {
|
||||
if ( $('#markAsRead').hasClass("archive-off") ) {
|
||||
$('#markAsRead').removeClass("archive-off");
|
||||
$('#markAsRead').addClass("archive");
|
||||
}
|
||||
else {
|
||||
$('#markAsRead').removeClass("archive");
|
||||
$('#markAsRead').addClass("archive-off");
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert('Error! Pls check if you are logged in.');
|
||||
}
|
||||
});
|
||||
$("body").css("cursor", "auto");
|
||||
});
|
||||
|
||||
// toggle favorite property of current article
|
||||
$('#setFav').click(function(){
|
||||
$("body").css("cursor", "wait");
|
||||
$.ajax( { url: './?action=toggle_fav&id={{ entry.id|e }}' }).done(
|
||||
function( data ) {
|
||||
if ( data == '1' ) {
|
||||
if ( $('#setFav').hasClass("fav-off") ) {
|
||||
$('#setFav').removeClass("fav-off");
|
||||
$('#setFav').addClass("fav");
|
||||
}
|
||||
else {
|
||||
$('#setFav').removeClass("fav");
|
||||
$('#setFav').addClass("fav-off");
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert('Error! Pls check if you are logged in.');
|
||||
}
|
||||
});
|
||||
$("body").css("cursor", "auto");
|
||||
});
|
||||
|
||||
$(window).scroll(function(e){
|
||||
var scrollTop = $(window).scrollTop();
|
||||
var docHeight = $(document).height();
|
||||
var scrollPercent = (scrollTop) / (docHeight);
|
||||
var scrollPercentRounded = Math.round(scrollPercent*100)/100;
|
||||
savePercent({{ entry.id|e }}, scrollPercentRounded);
|
||||
});
|
||||
|
||||
retrievePercent({{ entry.id|e }});
|
||||
|
||||
$(window).resize(function(){
|
||||
retrievePercent({{ entry.id|e }});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
17
src/WallabagBundle/Resources/views/_menu.html.twig
Normal file
17
src/WallabagBundle/Resources/views/_menu.html.twig
Normal file
|
@ -0,0 +1,17 @@
|
|||
<button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
|
||||
<ul id="links" class="links">
|
||||
<li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
|
||||
<li><a href="{{ path('archive') }}"}>{% trans %}archive{% endtrans %}</a></li>
|
||||
<li><a href="./?view=tags">{% trans %}tags{% endtrans %}</a></li>
|
||||
<li style="position: relative;"><a href="javascript: void(null);" id="bagit">{% trans %}save a link{% endtrans %}</a>
|
||||
|
||||
</li>
|
||||
<li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
|
||||
|
||||
</li>
|
||||
<li><a href="./?view=config">{% trans %}config{% endtrans %}</a></li>
|
||||
<li><a href="./?view=about">{% trans %}about{% endtrans %}</a></li>
|
||||
<li><a class="icon icon-power" href="./?logout" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
|
||||
</ul>
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
<header class="w600p center mbm">
|
||||
<h1>
|
||||
{% block logo %}<img width="100" height="100" src="{{ asset('themes/baggy/img/logo-other_themes.png') }}" alt="wallabag logo" />{% endblock %}
|
||||
|
||||
{% block logo %}<img width="100" height="100" src="{{ asset('themes/baggy/img/logo-w.png') }}" alt="wallabag logo" />{% endblock %}
|
||||
</h1>
|
||||
</header>
|
||||
|
|
Loading…
Reference in a new issue