Merge branch 'master' of localhost:gergelypolonkaiweb
This commit is contained in:
commit
fade19d16c
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,7 +13,6 @@ web/bundles/*
|
|||||||
app/config/parameters.ini
|
app/config/parameters.ini
|
||||||
|
|
||||||
# Composer related files
|
# Composer related files
|
||||||
composer.lock
|
|
||||||
vendor/composer/installed.json
|
vendor/composer/installed.json
|
||||||
|
|
||||||
# Assetic-generated .js and .css files
|
# Assetic-generated .js and .css files
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"repositories": [
|
"repositories": [
|
||||||
{
|
{
|
||||||
"type": "vcs",
|
"type": "vcs",
|
||||||
"url": "https://github.com/w00d5t0ck/IoTcpdfBundle"
|
"url": "https://github.com/gergelypolonkai/IoTcpdfBundle"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
@ -45,9 +45,6 @@
|
|||||||
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
|
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"config": {
|
|
||||||
"bin-dir": "bin"
|
|
||||||
},
|
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"extra": {
|
"extra": {
|
||||||
"symfony-app-dir": "app",
|
"symfony-app-dir": "app",
|
||||||
|
1726
composer.lock
generated
Normal file
1726
composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -55,7 +55,7 @@ class AdminController extends Controller
|
|||||||
* @Route("/blog/post/{id}", name="GergelyPolonkaiFrontBundle_adminEditBlogPost", defaults={"id": null})
|
* @Route("/blog/post/{id}", name="GergelyPolonkaiFrontBundle_adminEditBlogPost", defaults={"id": null})
|
||||||
* @Template
|
* @Template
|
||||||
*/
|
*/
|
||||||
public function newBlogPostAction($id = null)
|
public function editBlogPostAction($id = null)
|
||||||
{
|
{
|
||||||
if (is_numeric($id)) {
|
if (is_numeric($id)) {
|
||||||
$post = $this->getDoctrine()->getRepository('GergelyPolonkaiFrontBundle:Post')->findOneById($id);
|
$post = $this->getDoctrine()->getRepository('GergelyPolonkaiFrontBundle:Post')->findOneById($id);
|
||||||
@ -73,8 +73,8 @@ class AdminController extends Controller
|
|||||||
if ($request->getMethod() === 'POST') {
|
if ($request->getMethod() === 'POST') {
|
||||||
$form->bind($request);
|
$form->bind($request);
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
if (($tags = $form->get('tags')->getData()) != '') {
|
|
||||||
$tagManager = $this->get('fpn_tag.tag_manager');
|
$tagManager = $this->get('fpn_tag.tag_manager');
|
||||||
|
if (($tags = $form->get('tags')->getData()) != '') {
|
||||||
$tagNames = $tagManager->splitTagNames($tags);
|
$tagNames = $tagManager->splitTagNames($tags);
|
||||||
$tagList = $tagManager->loadOrCreateTags($tagNames);
|
$tagList = $tagManager->loadOrCreateTags($tagNames);
|
||||||
$tagManager->addTags($tagList, $post);
|
$tagManager->addTags($tagList, $post);
|
||||||
|
@ -4,9 +4,11 @@ namespace GergelyPolonkai\FrontBundle\Controller;
|
|||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
||||||
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||||
use Doctrine\ORM\Tools\Pagination\Paginator;
|
use Doctrine\ORM\Tools\Pagination\Paginator;
|
||||||
|
|
||||||
use GergelyPolonkai\FrontBundle\Entity\Post;
|
use GergelyPolonkai\FrontBundle\Entity\Post;
|
||||||
|
use GergelyPolonkai\FrontBundle\Entity\Tag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of BlogController
|
* Description of BlogController
|
||||||
@ -17,6 +19,9 @@ use GergelyPolonkai\FrontBundle\Entity\Post;
|
|||||||
*/
|
*/
|
||||||
class BlogController extends Controller
|
class BlogController extends Controller
|
||||||
{
|
{
|
||||||
|
// TODO: Make this a config parameter
|
||||||
|
private $postsPerPage = 10;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route("/", name="GergelyPolonkaiFrontBundle_blogListing")
|
* @Route("/", name="GergelyPolonkaiFrontBundle_blogListing")
|
||||||
* @Route("/page/{cPage}", name="GergelyPolonkaiFrontBundle_blogListingPage", requirements={"cPage": "\d+"})
|
* @Route("/page/{cPage}", name="GergelyPolonkaiFrontBundle_blogListingPage", requirements={"cPage": "\d+"})
|
||||||
@ -24,16 +29,14 @@ class BlogController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function listAction($cPage = 1)
|
public function listAction($cPage = 1)
|
||||||
{
|
{
|
||||||
// TODO: Make this a config parameter
|
|
||||||
$postsPerPage = 10;
|
|
||||||
--$cPage;
|
--$cPage;
|
||||||
|
|
||||||
$query = $this
|
$query = $this
|
||||||
->getDoctrine()
|
->getDoctrine()
|
||||||
->getEntityManager()
|
->getEntityManager()
|
||||||
->createQuery("SELECT p FROM GergelyPolonkaiFrontBundle:Post p WHERE p.draft = FALSE ORDER BY p.createdAt DESC")
|
->createQuery("SELECT p FROM GergelyPolonkaiFrontBundle:Post p WHERE p.draft = FALSE ORDER BY p.createdAt DESC")
|
||||||
->setFirstResult($cPage * $postsPerPage)
|
->setFirstResult($cPage * $this->postsPerPage)
|
||||||
->setMaxResults($postsPerPage);
|
->setMaxResults($this->postsPerPage);
|
||||||
|
|
||||||
$paginator = new Paginator($query, $fetchJoinCollection = true);
|
$paginator = new Paginator($query, $fetchJoinCollection = true);
|
||||||
$tagManager = $this->get('fpn_tag.tag_manager');
|
$tagManager = $this->get('fpn_tag.tag_manager');
|
||||||
@ -42,13 +45,13 @@ class BlogController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$count = $paginator->count();
|
$count = $paginator->count();
|
||||||
$pageCount = ceil($count / $postsPerPage);
|
$pageCount = ceil($count / $this->postsPerPage);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'cpage' => $cPage,
|
'cpage' => $cPage,
|
||||||
'count' => $pageCount,
|
'count' => $pageCount,
|
||||||
'posts' => $paginator,
|
'posts' => $paginator,
|
||||||
'perPage' => $postsPerPage,
|
'perPage' => $this->postsPerPage,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,4 +96,43 @@ class BlogController extends Controller
|
|||||||
'posts' => $posts,
|
'posts' => $posts,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Route("/tag/{name}/", name="GergelyPolonkaiFrontBundle_blogTagList")
|
||||||
|
* @Route("/tag/{name}/page/{cPage}", name="GergelyPolonkaiFrontBundle_blogListingPage", requirements={"cPage": "\d+"})
|
||||||
|
* @Template("GergelyPolonkaiFrontBundle:Blog:list.html.twig")
|
||||||
|
* @ParamConverter("tag")
|
||||||
|
*/
|
||||||
|
public function tagListAction(Tag $tag, $cPage = 1)
|
||||||
|
{
|
||||||
|
$tagRepository = $this->getDoctrine()->getRepository('GergelyPolonkaiFrontBundle:Tag');
|
||||||
|
|
||||||
|
$ids = $tagRepository->getResourceIdsForTag('gergelypolonkaifront_post', $tag->getName());
|
||||||
|
|
||||||
|
--$cPage;
|
||||||
|
|
||||||
|
$query = $this
|
||||||
|
->getDoctrine()
|
||||||
|
->getEntityManager()
|
||||||
|
->createQuery("SELECT p FROM GergelyPolonkaiFrontBundle:Post p WHERE p.draft = FALSE AND p.id IN (:idList) ORDER BY p.createdAt DESC")
|
||||||
|
->setParameter('idList', $ids)
|
||||||
|
->setFirstResult($cPage * $this->postsPerPage)
|
||||||
|
->setMaxResults($this->postsPerPage);
|
||||||
|
|
||||||
|
$paginator = new Paginator($query, $fetchJoinCollection = true);
|
||||||
|
$tagManager = $this->get('fpn_tag.tag_manager');
|
||||||
|
foreach ($paginator as $post) {
|
||||||
|
$tagManager->loadTagging($post);
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = $paginator->count();
|
||||||
|
$pageCount = ceil($count / $this->postsPerPage);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'cpage' => $cPage,
|
||||||
|
'count' => $pageCount,
|
||||||
|
'posts' => $paginator,
|
||||||
|
'perPage' => $this->postsPerPage,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ use FPN\TagBundle\Entity\Tag as BaseTag;
|
|||||||
*
|
*
|
||||||
* @author polesz
|
* @author polesz
|
||||||
*
|
*
|
||||||
* @ORM\Entity
|
* @ORM\Entity(repositoryClass="DoctrineExtensions\Taggable\Entity\TagRepository")
|
||||||
* @ORM\Table(name="tags")
|
* @ORM\Table(name="tags")
|
||||||
*/
|
*/
|
||||||
class Tag extends BaseTag
|
class Tag extends BaseTag
|
||||||
|
@ -166,3 +166,32 @@ dd p {
|
|||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tag-cloud a {
|
||||||
|
color: #b3b3b3;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size0 {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size1 {
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size2 {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size3 {
|
||||||
|
font-size: 110%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size4 {
|
||||||
|
font-size: 130%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tag-cloud .size5 {
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
@ -26,6 +26,9 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ block('paginator') }}
|
{{ block('paginator') }}
|
||||||
|
{% if posts|length == 0 %}
|
||||||
|
No posts found.
|
||||||
|
{% endif %}
|
||||||
{% for post in posts %}
|
{% for post in posts %}
|
||||||
{% include 'GergelyPolonkaiFrontBundle:Blog:postViewer.html.twig' with {'post': post, 'title_links': true} %}
|
{% include 'GergelyPolonkaiFrontBundle:Blog:postViewer.html.twig' with {'post': post, 'title_links': true} %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{% if post.tags|length > 0 %}
|
{% if post.tags|length > 0 %}
|
||||||
<p class="article-tags">Tags:
|
<p class="article-tags">Tags:
|
||||||
{% for tag in post.tags %}
|
{% for tag in post.tags %}
|
||||||
{{ tag.name }}
|
<a href="{{ path('GergelyPolonkaiFrontBundle_blogTagList', { name: tag.name }) }}">{{ tag.name }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -34,6 +34,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<div id="content-padding"></div>
|
<div id="content-padding"></div>
|
||||||
|
{% if tagCloud|length > 0 %}
|
||||||
|
<div id="tag-cloud">
|
||||||
|
{% for cloudItem in tagCloud %}
|
||||||
|
<a href="{{ path('GergelyPolonkaiFrontBundle_blogTagList', { name: cloudItem.name }) }}" class="size{{ cloudItem.size }}">{{ cloudItem.name }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div id="menu">
|
<div id="menu">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ path('GergelyPolonkaiFrontBundle_about') }}">About me</a></li>
|
<li><a href="{{ path('GergelyPolonkaiFrontBundle_about') }}">About me</a></li>
|
||||||
|
50
src/GergelyPolonkai/FrontBundle/Twig/TagCloud.php
Normal file
50
src/GergelyPolonkai/FrontBundle/Twig/TagCloud.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
namespace GergelyPolonkai\FrontBundle\Twig;
|
||||||
|
|
||||||
|
use Symfony\Bridge\Doctrine\RegistryInterface;
|
||||||
|
use JMS\DiExtraBundle\Annotation as DI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description of tagCloud
|
||||||
|
*
|
||||||
|
* @author polesz
|
||||||
|
*
|
||||||
|
* @DI\Service
|
||||||
|
* @DI\Tag("twig.extension")
|
||||||
|
*/
|
||||||
|
class TagCloud extends \Twig_Extension
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Symfony\Bridge\Doctrine\RegistryInterface $doctrine
|
||||||
|
*/
|
||||||
|
private $doctrine;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @DI\InjectParams()
|
||||||
|
*/
|
||||||
|
public function __construct(RegistryInterface $doctrine) {
|
||||||
|
$this->doctrine = $doctrine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getGlobals()
|
||||||
|
{
|
||||||
|
$tagCloudQuery = $this->doctrine->getEntityManager()->createQuery('SELECT t, count(tg) ct FROM GergelyPolonkaiFrontBundle:Tag t LEFT JOIN t.tagging tg GROUP BY t.id ORDER BY t.name');
|
||||||
|
$tagCloudList = $tagCloudQuery->getResult();
|
||||||
|
$tagCloud = array();
|
||||||
|
foreach ($tagCloudList as $cloudElement) {
|
||||||
|
$tag = $cloudElement[0];
|
||||||
|
$tagCount = $cloudElement['ct'];
|
||||||
|
$size = ($tagCount == 0) ? 0 : floor(log($tagCount, 10));
|
||||||
|
if ($size > 5) $size = 5;
|
||||||
|
$tagCloud[] = array('name' => $tag->getName(), 'size' => $size);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'tagCloud' => $tagCloud,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return 'gergelypolonkaifront_tagcloud';
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user