GoreBlogBundle
A Symfony2 blog bundle (work in progres), (*1)
This bundle is not complete : the blog misses a lot of functionalities, and many bug remain., (*2)
I put it in GitHub / Packagist in order to use & test it in parallele of the dev.
You can check the progress on my developper blog that I just initiated at the same time as the bundle : http://www.petegore.fr, (*3)
Thanks for your comprehension :), (*4)
Uses
GoreBlodBundle uses different existing bundles like :
* FOSUserBundle : user management
* HWIOAuthBundle : connection with Twitter, Fb, etc...
* StofDoctrineExtensionsBundle : to user Doctrine extensions such as Sluggable
* StfalconTinymceBundle : to load TinyMCE as text editor for articles, (*5)
All these bundles will be installed at the same time as the BlogBundle., (*6)
Installation
Requiring the main bundle
Add the following requirements to your composer.json :, (*7)
# composer.json
"require": {
...
"petegore/blog-bundle": "dev-master"
},
And then run the update composer command :
``` bash
$ php composer.phar update, (*8)
## Enabling the bundles
``` php
# app/AppKernel.php
$bundles = array(
...
/** Blog and associated bundles **/
new Gore\BlogBundle\GoreBlogBundle(),
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
new FOS\UserBundle\FOSUserBundle(),
new Stfalcon\Bundle\TinymceBundle\StfalconTinymceBundle(),
new HWI\Bundle\OAuthBundle\HWIOAuthBundle(),
);
Creating the main route
Add main blog route and FOSUserBundle routes :, (*9)
``` yaml, (*10)
app/config/routing.yml
ROUTING FOR HWIOAUTHBUNDLE : LET BEFORE THE OTHER ROUTES
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect, (*11)
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login, (*12)
ROUTING FOR BLOGBUNDLE
blog:
resource: "@GoreBlogBundle/Resources/config/routing/routing.yml"
prefix: /, (*13)
ROUTING FOR FOSUSERBUNDLE
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml", (*14)
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile, (*15)
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register, (*16)
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting, (*17)
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile, (*18)
logout:
pattern: /logout, (*19)
## Create the security.yml file
app/config/security.yml
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512, (*20)
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN]
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
## Updating the database schema
Update your database schema bu running update
``` bash
$ php app/console doctrine:schema:update --force
Create your own admin user
By running the commands (for example) :
``` bash
$ php app/console fos:user:create admin admin@mywebsite.com admin
$ php app/console fos:user:promote admin ROLE_ADMIN, (*21)
## Updating the assets
Run assets:install in order to install the public resources :
``` bash
$ php app/console assets:install web/
Creating a pictures folder
Create a folder to store articles pictures into your web/ folder.
For example : "web/pictures"
Note : the article creation process will create subfolders based on year and month., (*22)
Set the minimal configuration
You only have to define the pictures folder into the YAML config file :, (*23)
``` yaml, (*24)
app/config/config.yml
Blog configuration
gore_blog:
pictures_folder: pictures/
# will be completer later, (*25)
FOSUserBundle
fos_user:
db_driver: orm
firewall_name: main
user_class: Gore\BlogBundle\Entity\User, (*26)
Doctrine extensions bundle
stof_doctrine_extensions:
default_locale: %locale%
orm:
default:
sluggable: true, (*27)
Text editor and syntax highlighter
stfalcon_tinymce:
tinymce_jquery: true
selector: ".tinymce"
language: %locale%
external_plugins:
sh4tinymce:
url: "asset[bundles/goreblog/lib/tinymce-plugin/sh4tinymce/plugin.js]"
theme:
simple: ~
advanced:
plugins:
- "advlist autolink lists link image charmap print preview hr anchor pagebreak"
- "searchreplace wordcount visualblocks visualchars code fullscreen"
- "insertdatetime media nonbreaking save table contextmenu directionality"
- "emoticons template paste textcolor"
toolbar1: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
toolbar2: "print preview media | forecolor backcolor emoticons | stfalcon | example", (*28)
## Customizing the blog
Here is an example of the complete configuration you car put on the blog :
``` yaml
gore_blog:
pictures_folder: pictures/
blog_title: Chroniques d'un devweb
main_articles_to_show: 2
small_articles_to_show: 3
social_networks_urls:
email: test@myblog.com
twitter : http://twitter.com/mypseudoontwitter
### etc... many social networks are availables
@TOFINISH, (*29)