SlideShare a Scribd company logo
1 of 35
Download to read offline
Extension for symfony
                      geared towards content
                      based web applications.

Sympal Introduction     www.symfony-project.com   www.sensiolabs.com
The Idea
   • Sympal was born out of years of building
     content based web applications using various
     frameworks and tools in different languages.
   • The name was born from wanting the
     functionality Drupal provides but in a good
     way, like in symfony
           (Drupal - bad code) + symfony = Sympal



Sympal Introduction   www.symfony-project.com          www.sensiolabs.com
Multiple Plugins
   • Core Plugins
                 •    sfSympalPlugin
                 •    sfSympalMenuPlugin
                 •    sfSympalPluginManagerPlugin
                 •    sfSympalUserPlugin
                 •    sfSympalPagesPlugin
                 •    sfFormExtraPlugin
                 •    sfTaskExtraPlugin

   • Addon Plugins
                 • sfSympalBlogPlugin
                 • sfSympalCommentsPlugin
                 • ...More coming soon. Develop a new sympal addon!


Sympal Introduction         www.symfony-project.com    www.sensiolabs.com
What does it add?
   •     Extra tasks
   •     Extra functions in your base sfActions
   •     Better integrated support for e-mail sending
   •     Easy interactive installation
   •     Addon plugins that can be one click installed
   •     Menus/sitemap, admin bar, editor menu, etc.
   •     Custom content types
   •     Custom content slot types
   •     Lots more tools
Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Additional Tasks


        $ ./symfony list sympal

        Available tasks for the quot;sympalquot; namespace:
         :install       Install the sympal plugin content management framework.
         :plugin-download Download a sympal plugin to an existing sympal installation
         :plugin-generate Generate the skeleton for a sympal plugin
         :plugin-install Install a sympal plugin to an existing sympal installation
         :plugin-uninstall Uninstall a sympal plugin to an existing sympal installation




Sympal Introduction     www.symfony-project.com               www.sensiolabs.com
Generate Sympal Plugin
                  Generate a new Sympal plugin from the command line

                      $ ./symfony sympal:plugin-generate Event --content-type=Event

                       This command will create a new plugin named sfSympalEventPlugin
                       Are you sure you want to proceed? (y/N)


                                  sfSympalEventPlugin
                                   config/
                                     doctrine/
                                       schema.yml
                                     routing.yml
                                     sfSympalEventPluginConfiguration.class.php
                                   data/
                                     fixtures/
                                       install.yml
                                   lib/

Sympal Introduction          www.symfony-project.com              www.sensiolabs.com
Install Sympal Plugin




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Default Sympal Plugin Install
   • Adds new menu item
   • Adds new content type
   • Adds sample content record




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Download Sympal Plugin
   • You can download and install new sympal
     plugins from the web interface or from the
     command line




Sympal Introduction    www.symfony-project.com   www.sensiolabs.com
Install Sympal Blog
   • One click install a blog
   • Downloads from svn or pear and runs
     installation




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Install Sympal Blog




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Add Sympal Comments to Blog
   • The sfSympalBlogPlugin was built to work
     with sfSympalCommentsPlugin so all we need
     to do is install it to add comments to our
     blog.




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Events
   • Events are implemented in Sympal so you can
     easily custom admin menus, the editor
     toolbar, etc.
         – sympal.load_admin_bar
         – sympal.load_settings
         – sympal.load_tools




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Events
            Hook in to the sympal events so you can customize and add things for your needs

 class sfSympalSamplePluginConfiguration extends sfPluginConfiguration
 {
   public static
     $dependencies = array(
        'sfSympalPlugin'
     );

     public function initialize()
     {
       $this->dispatcher->connect('sympal.load_admin_bar', array($this, 'loadAdminBar'));
     }

     public function loadAdminBar(sfEvent $event)
     {
       $menu = $event['menu'];

         $administration = $menu->getChild('Administration');
         $administration->addChild('New Item', '@new_item_route');
     }
 }
Sympal Introduction      www.symfony-project.com              www.sensiolabs.com
Sympal Inline Editing
   • Edit content inline
     Posted by <?php echo get_sympal_column_content_slot($content, 'created_by', 'render_blog_post_author') ?> on

       <h2><?php echo get_sympal_column_content_slot($content, 'title') ?></h2>




                                      <?php echo get_sympal_column_content_slot($content, 'date_published') ?>
Sympal Introduction        www.symfony-project.com                         www.sensiolabs.com
Sympal Inline Editing
   • Edit content properties/columns
   • Edit arbitrary content slots
   • Select content slots type




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Rich Text Editing
   • Easily upload photos to your content
   • Create rich content with the YUI Rich Text
     editor




Sympal Introduction     www.symfony-project.com   www.sensiolabs.com
Sympal Rich Text Editing




Sympal Introduction     www.symfony-project.com   www.sensiolabs.com
Sympal Content Form
   • If you don’t want to edit content inline you
     can always edit from a backend form




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Content Types
   • Sympal core only provides one content type
     and it is a basic CMS page with a title and a
     body

   • You can easily add new content types to
     sympal for your project. i.e. Article, Event,
     etc.




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Content Slot Types
   • Sympal providers four different built in
     content types.
         – Text - Single one line input text box
         – MultiLineText - Multi line input text box
         – RichText - YUI rich text editor
         – Markdown - Same as MultiLineText but rendered
           with Markdown




Sympal Introduction      www.symfony-project.com   www.sensiolabs.com
Sympal Configuration
   • Everything in sympal is configurable via web
     interface or yaml.

                      all:
                        sympal_settings:
                           recaptcha_public_key: 6Ld2DgQAAAAAAApXLteupHPcbSxbSHkhNTuYLChX
                           recaptcha_private_key: 6Ld2DgQAAAAAANIbaXJsFEBOyg56CL_ljy3APlPb
                           language_codes: [en, fr, es]
                           disallow_php_in_content: false
                           default_layout: sympal
                           rows_per_page: 10
                           I18n:
                             enabled: true
                             ContentSlot: true
                             MenuItem: true
                           sympal_plugin_svn_sources: [quot;http://svn.symfony-project.com/pluginsquot;]
                           markdown_styled_boxes: [quote, tip, caution, note]




Sympal Introduction            www.symfony-project.com                www.sensiolabs.com
Sympal Configuration
   • Change configuration from sympal in
     browser




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Sites
   • With sympal you can easily manage multiple
     sites from one installation.
   • A sympal site is bound to a symfony
     application




                 require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

                 $configuration = ProjectConfiguration::getApplicationConfiguration('sympal', 'prod', false);
                 sfContext::createInstance($configuration)->dispatch();



Sympal Introduction           www.symfony-project.com                       www.sensiolabs.com
Sympal Breadcrumbs
   • Since sympal manages your sitemap we can
     easily generate breadcrumbs from your
     current position.

     <?php echo get_sympal_breadcrumbs($menuItem) ?>




   • Of course if you want to generate
     breadcrumbs manually you can do so
      <?php echo get_sympal_breadcrumbs(array(
        'Home' => '@homepage',
        'About' => '@about',
        'Jonathan H. Wage' => null
      )) ?>

Sympal Introduction        www.symfony-project.com     www.sensiolabs.com
Sympal Menus
   • Working with menus in sympal,
     are...well...simple :) and very efficient




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Sympal Menus
   • Menus only ever require one query no matter
     how many menus you have and how many
     times you call/render them in one page
               </p>
               <?php echo get_sympal_menu('footer') ?>
              </div>
              <!-- end footer -->




Sympal Introduction          www.symfony-project.com     www.sensiolabs.com
Sympal Sub-menus
   • You can easily retrieve a sub menu for a
     menu item by simply passing it to the
     get_sympal_menu() method.
   • In this example we get the sub menu for the
     current menu item.


    <?php $subMenu = get_sympal_menu($currentMenuItem) ?>




Sympal Introduction   www.symfony-project.com               www.sensiolabs.com
Sympal Routing
   • Multiple urls for content
   • Specify one url as primary
   • Change urls without affecting seo and
     creating 404s
   • Custom urls for individual content or content
     types




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com
Security
   • Sympal implements your basic security model
     using users, groups and permissions.
   • All content and menus can be restricted for
     certain users, groups, permissions, etc.
   • Menus can require auth, no auth, etc.




Sympal Introduction   www.symfony-project.com              www.sensiolabs.com
Sympal E-Mail
   • You can easily send and manage your
     application e-mails with sympal.
                      $variables = array(
                         'forgot_password' => $forgotPassword,
                         'email_address' => $this->form->user->email_address,
                         'user' => $this->form->user
                      );
                      $this->sendEmail('sympal_forgot_password/send_request', $variables);



   • First argument can be path to partial or
     component
   • Second argument is array of variables for e-
     mail

Sympal Introduction    www.symfony-project.com                       www.sensiolabs.com
Sympal E-Mail
   • In a sympal e-mail template the subject is
     the first line and body is everything else.
                      Forgot Password Request for <?php echo $user->getUsername() ?>

                      Hello <?php echo $user->getName() ?>,<br/><br/>

                      This e-mail is being sent because you requested information on how to reset your
                      password.<br/><br/>

                      You can change your password by clicking the below link which is only valid for
                      24 hours:<br/><br/>

                      <?php echo link_to('Click to change password', '@sympal_forgot_password_change?
                      unique_key='.$forgot_password->unique_key) ?>



   • This is so the subject and body of your e-
     mails are managed in one place.

Sympal Introduction           www.symfony-project.com                       www.sensiolabs.com
Sympal Action Confirmations
   • Often you want to confirm an action in
     symfony. A delete, or some intense
     operation. Usually this is only possible client
     side. Until now!
      public function executeDelete(sfWebRequest $request)
      {
        $this->askConfirmation('Please Confirm', 'Are you sure you wish to delete this record?');

          $user = $this->getRoute()->getObject();
          $user->delete();

          $this->getUser()->setFlash('notice', 'User was deleted successfully!');
          $this->redirect('@homepage');
      }



   • Clicking yes will re-send action with
     confirmation and continue execution.

Sympal Introduction          www.symfony-project.com                       www.sensiolabs.com
New Menu Manager




                      Makes use of YUI tree and menus to manage your
                      menus. Current system is un-finished and uses jQuery.


Sympal Introduction   www.symfony-project.com              www.sensiolabs.com
More to come
   •     More YUI in the interface
   •     General cleanup and enhancing of interface
   •     Add more Sympal addon plugins
   •     Fix bugs
   •     Create documentation




Sympal Introduction   www.symfony-project.com   www.sensiolabs.com

More Related Content

What's hot

Laravel and artisan cli
Laravel and artisan cliLaravel and artisan cli
Laravel and artisan cliSayed Ahmed
 
Xke - Introduction to Apache Camel
Xke - Introduction to Apache CamelXke - Introduction to Apache Camel
Xke - Introduction to Apache CamelAlexis Kinsella
 
Outside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecJoseph Wilk
 
Rails Engine :: modularize you app
Rails Engine :: modularize you appRails Engine :: modularize you app
Rails Engine :: modularize you appMuntasim Ahmed
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber railsninad23p
 
Serverless in production, an experience report (London DevOps)
Serverless in production, an experience report (London DevOps)Serverless in production, an experience report (London DevOps)
Serverless in production, an experience report (London DevOps)Yan Cui
 
Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Vikas Chauhan
 
Cucumber: How I Slice It
Cucumber: How I Slice ItCucumber: How I Slice It
Cucumber: How I Slice Itlinoj
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 Enrico Teotti
 
Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform AtlantaJesus Manuel Olivas
 
Cucumber Ru09 Web
Cucumber Ru09 WebCucumber Ru09 Web
Cucumber Ru09 WebJoseph Wilk
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatternsChul Ju Hong
 
Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-publicChul Ju Hong
 
The Themer's Guide to WP-CLI
The Themer's Guide to WP-CLIThe Themer's Guide to WP-CLI
The Themer's Guide to WP-CLIEdmund Turbin
 
6applets And Graphics
6applets And Graphics6applets And Graphics
6applets And GraphicsAdil Jafri
 

What's hot (19)

Laravel and artisan cli
Laravel and artisan cliLaravel and artisan cli
Laravel and artisan cli
 
Xke - Introduction to Apache Camel
Xke - Introduction to Apache CamelXke - Introduction to Apache Camel
Xke - Introduction to Apache Camel
 
Outside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and Rspec
 
Intro to Laravel 4
Intro to Laravel 4Intro to Laravel 4
Intro to Laravel 4
 
Rails Engine :: modularize you app
Rails Engine :: modularize you appRails Engine :: modularize you app
Rails Engine :: modularize you app
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber rails
 
Serverless in production, an experience report (London DevOps)
Serverless in production, an experience report (London DevOps)Serverless in production, an experience report (London DevOps)
Serverless in production, an experience report (London DevOps)
 
Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1
 
Combres
CombresCombres
Combres
 
Cucumber: How I Slice It
Cucumber: How I Slice ItCucumber: How I Slice It
Cucumber: How I Slice It
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2
 
Intro to Laravel
Intro to LaravelIntro to Laravel
Intro to Laravel
 
Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform Atlanta
 
Cucumber Ru09 Web
Cucumber Ru09 WebCucumber Ru09 Web
Cucumber Ru09 Web
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatterns
 
Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-public
 
The Themer's Guide to WP-CLI
The Themer's Guide to WP-CLIThe Themer's Guide to WP-CLI
The Themer's Guide to WP-CLI
 
6applets And Graphics
6applets And Graphics6applets And Graphics
6applets And Graphics
 

Viewers also liked

Doctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperDoctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperJonathan Wage
 
Symfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODMSymfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODMJonathan Wage
 
ZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODMZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODMJonathan Wage
 
My first zf presentation part two
My first zf presentation part twoMy first zf presentation part two
My first zf presentation part twoisaaczfoster
 
Doctrine in the Real World
Doctrine in the Real WorldDoctrine in the Real World
Doctrine in the Real WorldJonathan Wage
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the TrenchesJonathan Wage
 

Viewers also liked (6)

Doctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperDoctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document Mapper
 
Symfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODMSymfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODM
 
ZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODMZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODM
 
My first zf presentation part two
My first zf presentation part twoMy first zf presentation part two
My first zf presentation part two
 
Doctrine in the Real World
Doctrine in the Real WorldDoctrine in the Real World
Doctrine in the Real World
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the Trenches
 

Similar to Sympal - Symfony CMS Preview

Sympal The Flexible Symfony Cms
Sympal The Flexible Symfony CmsSympal The Flexible Symfony Cms
Sympal The Flexible Symfony Cmsnarkoza
 
Create a Symfony Application from a Drupal Perspective
Create a Symfony Application from a Drupal PerspectiveCreate a Symfony Application from a Drupal Perspective
Create a Symfony Application from a Drupal PerspectiveAcquia
 
CPAN Dependency Heaven
CPAN Dependency HeavenCPAN Dependency Heaven
CPAN Dependency HeavenOpusVL
 
Write Plugins for symfony (Symfony Camp 2007)
Write Plugins for symfony (Symfony Camp 2007)Write Plugins for symfony (Symfony Camp 2007)
Write Plugins for symfony (Symfony Camp 2007)Fabien Potencier
 
Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"Fwdays
 
Sympal - The Flexible Symfony Cms
Sympal - The Flexible Symfony CmsSympal - The Flexible Symfony Cms
Sympal - The Flexible Symfony CmsJonathan Wage
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your OwnLambert Beekhuis
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Yury Pliashkou
 
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...Les-Tilleuls.coop
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Symfony workshop introductory slides
Symfony workshop introductory slidesSymfony workshop introductory slides
Symfony workshop introductory slidesStefan Koopmanschap
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.FormsBrad Pillow
 
Installing symfony within netbeans and WAMP
Installing symfony within netbeans and WAMPInstalling symfony within netbeans and WAMP
Installing symfony within netbeans and WAMPRiyad Bin Zaman
 
Serverless Beyond Functions - CTO Club Made in JLM
Serverless Beyond Functions - CTO Club Made in JLMServerless Beyond Functions - CTO Club Made in JLM
Serverless Beyond Functions - CTO Club Made in JLMBoaz Ziniman
 
Sap sapscripts tips and tricks
Sap sapscripts tips and tricksSap sapscripts tips and tricks
Sap sapscripts tips and tricksKranthi Kumar
 
Migration of a legacy project to Symfony
Migration of a legacy project to SymfonyMigration of a legacy project to Symfony
Migration of a legacy project to SymfonyPixel Federation
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseRalf Sternberg
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Symfony2 for Midgard Developers
Symfony2 for Midgard DevelopersSymfony2 for Midgard Developers
Symfony2 for Midgard DevelopersHenri Bergius
 

Similar to Sympal - Symfony CMS Preview (20)

Sympal The Flexible Symfony Cms
Sympal The Flexible Symfony CmsSympal The Flexible Symfony Cms
Sympal The Flexible Symfony Cms
 
Create a Symfony Application from a Drupal Perspective
Create a Symfony Application from a Drupal PerspectiveCreate a Symfony Application from a Drupal Perspective
Create a Symfony Application from a Drupal Perspective
 
CPAN Dependency Heaven
CPAN Dependency HeavenCPAN Dependency Heaven
CPAN Dependency Heaven
 
Write Plugins for symfony (Symfony Camp 2007)
Write Plugins for symfony (Symfony Camp 2007)Write Plugins for symfony (Symfony Camp 2007)
Write Plugins for symfony (Symfony Camp 2007)
 
Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"
 
Sympal - The Flexible Symfony Cms
Sympal - The Flexible Symfony CmsSympal - The Flexible Symfony Cms
Sympal - The Flexible Symfony Cms
 
Plugins And Making Your Own
Plugins And Making Your OwnPlugins And Making Your Own
Plugins And Making Your Own
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
 
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...
Progressively enhance your Symfony 4 app using Vue, API Platform, Mercure and...
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Symfony workshop introductory slides
Symfony workshop introductory slidesSymfony workshop introductory slides
Symfony workshop introductory slides
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.Forms
 
Installing symfony within netbeans and WAMP
Installing symfony within netbeans and WAMPInstalling symfony within netbeans and WAMP
Installing symfony within netbeans and WAMP
 
Serverless Beyond Functions - CTO Club Made in JLM
Serverless Beyond Functions - CTO Club Made in JLMServerless Beyond Functions - CTO Club Made in JLM
Serverless Beyond Functions - CTO Club Made in JLM
 
Sap sapscripts tips and tricks
Sap sapscripts tips and tricksSap sapscripts tips and tricks
Sap sapscripts tips and tricks
 
Migration of a legacy project to Symfony
Migration of a legacy project to SymfonyMigration of a legacy project to Symfony
Migration of a legacy project to Symfony
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Symfony2 for Midgard Developers
Symfony2 for Midgard DevelopersSymfony2 for Midgard Developers
Symfony2 for Midgard Developers
 
Magento Meetup New Delhi- Console
Magento Meetup New Delhi- ConsoleMagento Meetup New Delhi- Console
Magento Meetup New Delhi- Console
 

More from Jonathan Wage

Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
OpenSky Infrastructure
OpenSky InfrastructureOpenSky Infrastructure
OpenSky InfrastructureJonathan Wage
 
Doctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisDoctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisJonathan Wage
 
ZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine ProjectZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine ProjectJonathan Wage
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationSymfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationJonathan Wage
 
Doctrine 2 - Enterprise Persistence Layer For PHP
Doctrine 2 - Enterprise Persistence Layer For PHPDoctrine 2 - Enterprise Persistence Layer For PHP
Doctrine 2 - Enterprise Persistence Layer For PHPJonathan Wage
 
Introduction To Doctrine 2
Introduction To Doctrine 2Introduction To Doctrine 2
Introduction To Doctrine 2Jonathan Wage
 
Doctrine 2 - Not The Same Old Php Orm
Doctrine 2 - Not The Same Old Php OrmDoctrine 2 - Not The Same Old Php Orm
Doctrine 2 - Not The Same Old Php OrmJonathan Wage
 
Doctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPDoctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPJonathan Wage
 
Symfony 1.3 + Doctrine 1.2
Symfony 1.3 + Doctrine 1.2Symfony 1.3 + Doctrine 1.2
Symfony 1.3 + Doctrine 1.2Jonathan Wage
 
Sympal - The flexible Symfony CMS
Sympal - The flexible Symfony CMSSympal - The flexible Symfony CMS
Sympal - The flexible Symfony CMSJonathan Wage
 
What's new in Doctrine
What's new in DoctrineWhat's new in Doctrine
What's new in DoctrineJonathan Wage
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperJonathan Wage
 
What's New In Doctrine
What's New In DoctrineWhat's New In Doctrine
What's New In DoctrineJonathan Wage
 

More from Jonathan Wage (16)

Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
OpenSky Infrastructure
OpenSky InfrastructureOpenSky Infrastructure
OpenSky Infrastructure
 
Doctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisDoctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 Paris
 
ZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine ProjectZendCon2010 The Doctrine Project
ZendCon2010 The Doctrine Project
 
Libertyvasion2010
Libertyvasion2010Libertyvasion2010
Libertyvasion2010
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationSymfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 Integration
 
Doctrine 2 - Enterprise Persistence Layer For PHP
Doctrine 2 - Enterprise Persistence Layer For PHPDoctrine 2 - Enterprise Persistence Layer For PHP
Doctrine 2 - Enterprise Persistence Layer For PHP
 
Introduction To Doctrine 2
Introduction To Doctrine 2Introduction To Doctrine 2
Introduction To Doctrine 2
 
Doctrine 2 - Not The Same Old Php Orm
Doctrine 2 - Not The Same Old Php OrmDoctrine 2 - Not The Same Old Php Orm
Doctrine 2 - Not The Same Old Php Orm
 
Doctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPDoctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHP
 
Symfony 1.3 + Doctrine 1.2
Symfony 1.3 + Doctrine 1.2Symfony 1.3 + Doctrine 1.2
Symfony 1.3 + Doctrine 1.2
 
Sympal - The flexible Symfony CMS
Sympal - The flexible Symfony CMSSympal - The flexible Symfony CMS
Sympal - The flexible Symfony CMS
 
What's new in Doctrine
What's new in DoctrineWhat's new in Doctrine
What's new in Doctrine
 
What Is Doctrine?
What Is Doctrine?What Is Doctrine?
What Is Doctrine?
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational Mapper
 
What's New In Doctrine
What's New In DoctrineWhat's New In Doctrine
What's New In Doctrine
 

Sympal - Symfony CMS Preview

  • 1. Extension for symfony geared towards content based web applications. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 2. The Idea • Sympal was born out of years of building content based web applications using various frameworks and tools in different languages. • The name was born from wanting the functionality Drupal provides but in a good way, like in symfony (Drupal - bad code) + symfony = Sympal Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 3. Multiple Plugins • Core Plugins • sfSympalPlugin • sfSympalMenuPlugin • sfSympalPluginManagerPlugin • sfSympalUserPlugin • sfSympalPagesPlugin • sfFormExtraPlugin • sfTaskExtraPlugin • Addon Plugins • sfSympalBlogPlugin • sfSympalCommentsPlugin • ...More coming soon. Develop a new sympal addon! Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 4. What does it add? • Extra tasks • Extra functions in your base sfActions • Better integrated support for e-mail sending • Easy interactive installation • Addon plugins that can be one click installed • Menus/sitemap, admin bar, editor menu, etc. • Custom content types • Custom content slot types • Lots more tools Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 5. Additional Tasks $ ./symfony list sympal Available tasks for the quot;sympalquot; namespace: :install Install the sympal plugin content management framework. :plugin-download Download a sympal plugin to an existing sympal installation :plugin-generate Generate the skeleton for a sympal plugin :plugin-install Install a sympal plugin to an existing sympal installation :plugin-uninstall Uninstall a sympal plugin to an existing sympal installation Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 6. Generate Sympal Plugin Generate a new Sympal plugin from the command line $ ./symfony sympal:plugin-generate Event --content-type=Event This command will create a new plugin named sfSympalEventPlugin Are you sure you want to proceed? (y/N) sfSympalEventPlugin config/ doctrine/ schema.yml routing.yml sfSympalEventPluginConfiguration.class.php data/ fixtures/ install.yml lib/ Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 7. Install Sympal Plugin Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 8. Default Sympal Plugin Install • Adds new menu item • Adds new content type • Adds sample content record Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 9. Download Sympal Plugin • You can download and install new sympal plugins from the web interface or from the command line Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 10. Install Sympal Blog • One click install a blog • Downloads from svn or pear and runs installation Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 11. Install Sympal Blog Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 12. Add Sympal Comments to Blog • The sfSympalBlogPlugin was built to work with sfSympalCommentsPlugin so all we need to do is install it to add comments to our blog. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 13. Sympal Events • Events are implemented in Sympal so you can easily custom admin menus, the editor toolbar, etc. – sympal.load_admin_bar – sympal.load_settings – sympal.load_tools Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 14. Sympal Events Hook in to the sympal events so you can customize and add things for your needs class sfSympalSamplePluginConfiguration extends sfPluginConfiguration { public static $dependencies = array( 'sfSympalPlugin' ); public function initialize() { $this->dispatcher->connect('sympal.load_admin_bar', array($this, 'loadAdminBar')); } public function loadAdminBar(sfEvent $event) { $menu = $event['menu']; $administration = $menu->getChild('Administration'); $administration->addChild('New Item', '@new_item_route'); } } Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 15. Sympal Inline Editing • Edit content inline Posted by <?php echo get_sympal_column_content_slot($content, 'created_by', 'render_blog_post_author') ?> on <h2><?php echo get_sympal_column_content_slot($content, 'title') ?></h2> <?php echo get_sympal_column_content_slot($content, 'date_published') ?> Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 16. Sympal Inline Editing • Edit content properties/columns • Edit arbitrary content slots • Select content slots type Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 17. Sympal Rich Text Editing • Easily upload photos to your content • Create rich content with the YUI Rich Text editor Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 18. Sympal Rich Text Editing Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 19. Sympal Content Form • If you don’t want to edit content inline you can always edit from a backend form Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 20. Sympal Content Types • Sympal core only provides one content type and it is a basic CMS page with a title and a body • You can easily add new content types to sympal for your project. i.e. Article, Event, etc. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 21. Sympal Content Slot Types • Sympal providers four different built in content types. – Text - Single one line input text box – MultiLineText - Multi line input text box – RichText - YUI rich text editor – Markdown - Same as MultiLineText but rendered with Markdown Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 22. Sympal Configuration • Everything in sympal is configurable via web interface or yaml. all: sympal_settings: recaptcha_public_key: 6Ld2DgQAAAAAAApXLteupHPcbSxbSHkhNTuYLChX recaptcha_private_key: 6Ld2DgQAAAAAANIbaXJsFEBOyg56CL_ljy3APlPb language_codes: [en, fr, es] disallow_php_in_content: false default_layout: sympal rows_per_page: 10 I18n: enabled: true ContentSlot: true MenuItem: true sympal_plugin_svn_sources: [quot;http://svn.symfony-project.com/pluginsquot;] markdown_styled_boxes: [quote, tip, caution, note] Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 23. Sympal Configuration • Change configuration from sympal in browser Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 24. Sympal Sites • With sympal you can easily manage multiple sites from one installation. • A sympal site is bound to a symfony application require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('sympal', 'prod', false); sfContext::createInstance($configuration)->dispatch(); Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 25. Sympal Breadcrumbs • Since sympal manages your sitemap we can easily generate breadcrumbs from your current position. <?php echo get_sympal_breadcrumbs($menuItem) ?> • Of course if you want to generate breadcrumbs manually you can do so <?php echo get_sympal_breadcrumbs(array( 'Home' => '@homepage', 'About' => '@about', 'Jonathan H. Wage' => null )) ?> Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 26. Sympal Menus • Working with menus in sympal, are...well...simple :) and very efficient Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 27. Sympal Menus • Menus only ever require one query no matter how many menus you have and how many times you call/render them in one page </p> <?php echo get_sympal_menu('footer') ?> </div> <!-- end footer --> Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 28. Sympal Sub-menus • You can easily retrieve a sub menu for a menu item by simply passing it to the get_sympal_menu() method. • In this example we get the sub menu for the current menu item. <?php $subMenu = get_sympal_menu($currentMenuItem) ?> Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 29. Sympal Routing • Multiple urls for content • Specify one url as primary • Change urls without affecting seo and creating 404s • Custom urls for individual content or content types Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 30. Security • Sympal implements your basic security model using users, groups and permissions. • All content and menus can be restricted for certain users, groups, permissions, etc. • Menus can require auth, no auth, etc. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 31. Sympal E-Mail • You can easily send and manage your application e-mails with sympal. $variables = array( 'forgot_password' => $forgotPassword, 'email_address' => $this->form->user->email_address, 'user' => $this->form->user ); $this->sendEmail('sympal_forgot_password/send_request', $variables); • First argument can be path to partial or component • Second argument is array of variables for e- mail Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 32. Sympal E-Mail • In a sympal e-mail template the subject is the first line and body is everything else. Forgot Password Request for <?php echo $user->getUsername() ?> Hello <?php echo $user->getName() ?>,<br/><br/> This e-mail is being sent because you requested information on how to reset your password.<br/><br/> You can change your password by clicking the below link which is only valid for 24 hours:<br/><br/> <?php echo link_to('Click to change password', '@sympal_forgot_password_change? unique_key='.$forgot_password->unique_key) ?> • This is so the subject and body of your e- mails are managed in one place. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 33. Sympal Action Confirmations • Often you want to confirm an action in symfony. A delete, or some intense operation. Usually this is only possible client side. Until now! public function executeDelete(sfWebRequest $request) { $this->askConfirmation('Please Confirm', 'Are you sure you wish to delete this record?'); $user = $this->getRoute()->getObject(); $user->delete(); $this->getUser()->setFlash('notice', 'User was deleted successfully!'); $this->redirect('@homepage'); } • Clicking yes will re-send action with confirmation and continue execution. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 34. New Menu Manager Makes use of YUI tree and menus to manage your menus. Current system is un-finished and uses jQuery. Sympal Introduction www.symfony-project.com www.sensiolabs.com
  • 35. More to come • More YUI in the interface • General cleanup and enhancing of interface • Add more Sympal addon plugins • Fix bugs • Create documentation Sympal Introduction www.symfony-project.com www.sensiolabs.com