Merge branch 'master' of github.com:w00d5t0ck/kekrozsak

This commit is contained in:
Polonkai Gergely 2012-08-28 17:31:37 +02:00
commit c1532101ac
11 changed files with 480 additions and 19 deletions

View File

@ -24,6 +24,7 @@ class AppKernel extends Kernel
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new Io\TcpdfBundle\IoTcpdfBundle(),
new FOS\JsRoutingBundle\FOSJsRoutingBundle(),
new Jmikola\JsAssetsHelperBundle\JmikolaJsAssetsHelperBundle(),
// Own bundles
new KekRozsak\FrontBundle\KekRozsakFrontBundle(),
new KekRozsak\SecurityBundle\KekRozsakSecurityBundle(),

View File

@ -0,0 +1,31 @@
<?php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration,
Doctrine\DBAL\Schema\Schema;
/**
* Auto-generated Migration: Please modify to your need!
*/
class Version20120827162130 extends AbstractMigration
{
public function up(Schema $schema)
{
// this up() migration is autogenerated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
$this->addSql("CREATE TABLE blog_posts (id INT AUTO_INCREMENT NOT NULL, group_id INT DEFAULT NULL, created_by_id INT NOT NULL, updated_by_id INT DEFAULT NULL, published TINYINT(1) NOT NULL, title VARCHAR(150) NOT NULL, slug VARCHAR(150) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME DEFAULT NULL, update_reason VARCHAR(255) DEFAULT NULL, content LONGTEXT NOT NULL, INDEX IDX_78B2F932FE54D947 (group_id), INDEX IDX_78B2F932B03A8386 (created_by_id), INDEX IDX_78B2F932896DBBDE (updated_by_id), PRIMARY KEY(id)) ENGINE = InnoDB");
$this->addSql("ALTER TABLE blog_posts ADD CONSTRAINT FK_78B2F932FE54D947 FOREIGN KEY (group_id) REFERENCES groups (id)");
$this->addSql("ALTER TABLE blog_posts ADD CONSTRAINT FK_78B2F932B03A8386 FOREIGN KEY (created_by_id) REFERENCES users (id)");
$this->addSql("ALTER TABLE blog_posts ADD CONSTRAINT FK_78B2F932896DBBDE FOREIGN KEY (updated_by_id) REFERENCES users (id)");
}
public function down(Schema $schema)
{
// this down() migration is autogenerated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
$this->addSql("DROP TABLE blog_posts");
}
}

View File

@ -0,0 +1,14 @@
{% extends 'KekRozsakFrontBundle:Default:main_template.html.twig' %}
{% block content %}
<h3>A keresett oldal nem létezik</h3>
<p>
{% spaceless %}
A keresett oldal nem létezik. Válassz valamit a menüből
{% if app.user %}
vagy kattints a bal felső sarokban a nevedre a további lehetőségekért
{% endif %}
!
{% endspaceless %}
</p>
{% endblock content %}

View File

@ -8,6 +8,9 @@ jms_di_extra:
bundles: [ KekRozsakFrontBundle, KekRozsakSecurityBundle ]
directories: [ "%kernel.root_dir%/../src" ]
jmikola_js_assets_helper:
packages_to_expose: [ KekRozsakFrontBundle ]
framework:
#esi: ~
#translator: { fallback: %locale% }
@ -17,7 +20,10 @@ framework:
form: true
csrf_protection: true
validation: { enable_annotations: true }
templating: { engines: ['twig'] } #assets_version: SomeVersionScheme
templating:
engines: ['twig']
packages:
KekRozsakFrontBundle: ~
default_locale: %locale%
trust_proxy_headers: false # Should Request object should trust proxy headers (X_FORWARDED_FOR/HTTP_CLIENT_IP)
session: ~

View File

@ -1,6 +1,9 @@
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
jmikola_js_assets_helper_routing:
resource: "@JmikolaJsAssetsHelperBundle/Resources/config/routing/routing.xml"
KekRozsakAdminBundle:
resource: "@KekRozsakAdminBundle/Controller/"
type: annotation

View File

@ -27,6 +27,7 @@
"doctrine/doctrine-migrations-bundle": "dev-master",
"egeloen/ckeditor-bundle": "dev-master",
"friendsofsymfony/jsrouting-bundle": "dev-master",
"jmikola/js-assets-helper-bundle": "dev-master",
"gergelypolonkai/tcpdfbundle": "dev-master"
},
"scripts": {

View File

@ -0,0 +1,57 @@
<?php
namespace KekRozsak\FrontBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Route("/blog")
*/
class BlogController extends Controller
{
/**
* @Route("/", name="KekRozsakFrontBundle_blogList")
* @Template()
*/
public function listAction()
{
$query = $this
->getDoctrine()
->getEntityManager()
->createQuery('
SELECT
p
FROM
KekRozsakFrontBundle:BlogPost p
LEFT JOIN
p.group g
LEFT JOIN
g.members m
WHERE
(
(
p.group IS NULL
OR m.user = :user
)
AND p.published = true
)
OR p.createdBy = :user
');
$query->
setParameter(
'user',
$this
->get('security.context')
->getToken()
->getUser()
->getId()
);
$blogPosts = $query->getResult();
return array(
'posts' => $blogPosts,
);
}
}

View File

@ -1,15 +1,347 @@
<?php
/*
* id
* title
* slug
* createdBy
* createdAt
* updatedBy
* updatedAt
* updateReason
* lead(?)
* content
* public
* Group (can be NULL)
namespace KekRozsak\FrontBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use KekRozsak\SecurityBundle\Entity\User;
/**
* @ORM\Entity
* @ORM\Table(name="blog_posts")
*/
class BlogPost
{
/**
* The ID of the BlogPost
*
* var integer $id
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* True if the BlogPost is published. If not, only the author and the
* administrators can see it.
*
* @var boolean $published
*
* @ORM\Column(type="boolean", nullable=false)
*/
protected $published;
/**
* Set published
*
* @param boolean $published
* @return BlogPost
*/
public function setPublished($published)
{
// TODO: Check if parameter is boolean!
$this->published = $published;
return $this;
}
/**
* Get published
*
* @return boolean
*/
public function isPublished()
{
return $this->published;
}
/**
* The Group which this BlogPost is associated with
*
* @var KekRozsak\FrontBundle\Entity\Group $group
*
* @ORM\ManyToOne(targetEntity="KekRozsak\FrontBundle\Entity\Group")
* @ORM\JoinColumn(name="group_id", nullable=true)
*/
protected $group;
/**
* Set group
*
* @param KekRozsak\FrontBundle\Entity\Group $group
* @return BlogPost
*/
public function setGroup(Group $group)
{
$this->group = $group;
return $this;
}
/**
* Get group
*
* @return KekRozsak\FrontBundle\Entity\Group
*/
public function getGroup()
{
return $this->group;
}
/**
* The title of the BlogPost
*
* @var strinct $title
*
* @ORM\Column(type="string", length=150, nullable=false)
*/
protected $title;
/**
* Set title
*
* @param string $title
* @return BlogPost
*/
public function setTitle($title)
{
// TODO: Check if not null nor empty!
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* The slugified title of the BlogPost
*
* @var string $slug
*
* @ORM\Column(type="string", length=150, nullable=false)
*/
protected $slug;
/**
* Set slug
*
* @param string $slug
* @return BlogPost
*/
public function setSlug($slug)
{
// TODO: Check if not null nor empty!
$this->slug = $slug;
return $this;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* The User who created this BlogPost
*
* @var KekRozsak\SecurityBundle\Entity\User $createdBy
*
* @ORM\ManyToOne(targetEntity="KekRozsak\SecurityBundle\Entity\User")
* @ORM\JoinColumn(name="created_by_id", nullable=false)
*/
protected $createdBy;
/**
* Set createdBy
*
* @param KekRozsak\SecurityBundle\Entity\User $createdBy
* @return BlogPost
*/
public function setCreatedBy(User $createdBy)
{
// TODO: Check if not null!
$this->createdBy = $createdBy;
return $this;
}
/**
* Get createdBy
*
* @return KekRozsak\SecurityBundle\Entity\User
*/
public function getCreatedBy()
{
return $this->createdBy();
}
/**
* The timestamp when this BlogPost was created
*
* @var DateTime $createdAt
*
* @ORM\Column(type="datetime", name="created_at", nullable=false)
*/
protected $createdAt;
/**
* Set createdAt
*
* @param DateTime $createdAt
* @return BlogPost
*/
public function setCreatedAt(\DateTime $createdAt)
{
// TODO: Check if not null!
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* The User who last updated this BlogPost, or NULL if it is unmodified
*
* @var KekRozsak\SecurityBundle\Entity\User $updatedBy
*
* @ORM\ManyToOne(targetEntity="KekRozsak\SecurityBundle\Entity\User")
* @ORM\JoinColumn(name="updated_by_id", nullable=true)
*/
protected $updatedBy;
/**
* Set updatedBy
*
* @param KekRozsak\SecurityBundle\Entity\User $updatedBy
* @return BlogPost
*/
public function setUpdatedBy(User $updatedBy)
{
$this->updatedBy = $updatedBy;
return $this;
}
/**
* Get updatedBy
*
* @return KekRozsak\SecurityBundle\Entity\User
*/
public function getUpdatedBy()
{
return $this->updatedBy;
}
/**
* The timestamp when this BlogPost was last modified, or null if it is not
* modified
*
* @var DateTime $updatedAt
*
* @ORM\Column(type="datetime", name="updated_at", nullable=true)
*/
protected $updatedAt;
/**
* Set updatedAt
*
* @param DateTime $updatedAt
* @return BlogPost
*/
public function setUpdatedAt(\DateTime $updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* The reason of the last update, or null if the object is not modified
*
* @var string $updateReason
*
* @ORM\Column(type="string", length=255, name="update_reason", nullable=true)
*/
protected $updateReason;
/**
* Set updateReason
*
* @param string $updateReason
* @return BlogPost
*/
public function setUpdateReason($updateReason)
{
if (trim($updateReason) == '') {
$updateReason = null;
}
$this->updateReason = $updateReason;
return $this;
}
/**
* Get updateReason
*
* @return string
*/
public function getUpdateReason()
{
return $this->updateReason;
}
/**
* The content of this BlogPost
*
* @var string $content
*
* @ORM\Column(type="text", nullable=false)
*/
protected $content;
/**
* Set content
*
* @param string $content
* @return BlogPost
*/
public function setContent($content)
{
// TODO: Check if not null nor empty!
$this->content = $content;
return $this;
}
/**
* Get content
*
* @return string
*/
public function getContent()
{
return $this->content;
}
}

View File

@ -25,7 +25,7 @@ function favouriteOn()
url: url
}).done(function() {
elem.find('img').attr('alt', '[Kedvenc]');
elem.find('img').attr('src', webRoot + '/bundles/kekrozsakfront/images/penta-yellow-24.png');
elem.find('img').attr('src', AssetsHelper.getURL('bundles/kekrozsakfront/images/penta-yellow-24.png'));
elem.removeClass('favourite-topic-button');
elem.addClass('unfavourite-topic-button');
elem.attr('id', 'unfavourite-topic-button-' + topicSlug);
@ -60,7 +60,7 @@ function favouriteOff()
url: url
}).done(function() {
elem.find('img').attr('alt', '[Nem kedvenc]');
elem.find('img').attr('src', webRoot + '/bundles/kekrozsakfront/images/penta-blue-24.png');
elem.find('img').attr('src', AssetsHelper.getUrl('/bundles/kekrozsakfront/images/penta-blue-24.png'));
elem.removeClass('unfavourite-topic-button');
elem.addClass('favourite-topic-button');
elem.attr('id', 'favourite-topic-button-' + topicSlug);

View File

@ -0,0 +1,17 @@
{# vim: ft=htmljinja
#}
{% extends 'KekRozsakFrontBundle:Default:main_template.html.twig' %}
{% block content %}
<h3>Blog</h3>
{% for post in posts %}
<h4>{{ post.title }}</h4>
{{ post.createdAt|date('Y-m-d H:i') }}<br />
{% if not post.published %}
inaktív<br />
{% endif %}
{{ post.content }}
<hr />
{% else %}
Nincs bejegyzés.
{% endfor %}
{% endblock %}

View File

@ -17,12 +17,11 @@
<script type="text/javascript" src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script type="text/javascript" src="{{ path('fos_js_routing_js', {callback: 'fos.Router.setData'}) }}"></script>
<script type="text/javascript" src="{{ asset('js/jquery-form/jquery.form.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/jmikolajsassetshelper/js/asset_helper.js') }}"></script>
<script type="text/javascript" src="{{ path('jmikola_js_assets_helper_js') }}"></script>
{% javascripts 'bundles/kekrozsakfront/js/*' output='js/kekrozsak.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
<script type="text/javascript">
var webRoot = '{{ asset('') }}';
</script>
{% block additional_js %}{% endblock %}
</head>
<body>