2017 © Pedro Peláez
 

symfony-bundle configuration-panel

This is a Symfony Bundle that adds configuration panel to your sonata admin.

image

kunicmarko/configuration-panel

This is a Symfony Bundle that adds configuration panel to your sonata admin.

  • Wednesday, August 16, 2017
  • by kunicmarko20
  • Repository
  • 1 Watchers
  • 0 Stars
  • 36 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Sonata Configuration Panel

ABANDONED, Please use SimpleConfigurationBundle

This bundle adds configuration panel to your sonata admin, also you can easily extend bundle and add your own types., (*1)

This bundle depends on SonataAdminBundle, (*2)

Dashboard, (*3)

Documentation

Installation

1. Add to composer.json to the require key, (*4)

composer require kunicmarko/configuration-panel

2. Register the bundle in app/AppKernel.php, (*5)

$bundles = array(
    // ...
    new KunicMarko\SonataConfigurationPanelBundle\ConfigurationPanelBundle(),
);

If you are not using auto_mapping add it to your orm mappings, (*6)

# app/config/config.yml
   orm:
        entity_managers:
            default:
                mappings:
                    AppBundle: ~
                    ...
                    ConfigurationPanelBundle: ~

3. Update database, (*7)

app/console doctrine:schema:update --force

4. Clear cache, (*8)

app/console cache:clear

How to use

In your twig template you can call it like :, (*9)

{{ configuration.getAll() }}
{{ configuration.getValueFor(name) }}

if you want to use it in controller you can do :, (*10)

$this->get('configuration_panel.global.service')->getAll()
$this->get('configuration_panel.global.service')->getValueFor()

Add new type

If you want to add new types, you can do it like this, (*11)

# app/config/config.yml

configuration_panel:
    types: 
        newtype: YourBundle\Entity\NewType

Creating new Type

Your new type has to extend AbstractConfiguration, you also have to specify template used for sonata list (it can be sonata template, or your own created), and how should field be rendered in form., (*12)

1. New type without new column, (*13)

namespace YourBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use KunicMarko\SonataConfigurationPanelBundle\Entity\AbstractConfiguration;
use Sonata\AdminBundle\Form\FormMapper;
use Symfony\Component\Form\Extension\Core\Type\TextType;

/**
*
* @ORM\Entity(repositoryClass="KunicMarko\SonataConfigurationPanelBundle\Repository\ConfigurationRepository")
*
*/
class NewType extends AbstractConfiguration
{
    /**
     * {@inheritDoc}
     */
    public function getTemplate()
    {
        return 'SonataAdminBundle:CRUD:list_string.html.twig';
    }

    /**
     * {@inheritDoc}
     */
    public function generateFormField(FormMapper $formMapper)
    {
        $formMapper->add('value', TextType::class, ['required' => false]);
    }
}

2. New type with new column, (*14)

As you can see from example code below, we added new $date field, the one thing that is necessary is to overwrite getValue() method with delegating to your getter for new field as shown below., (*15)


namespace YourBundle\Entity; use Doctrine\ORM\Mapping as ORM; use KunicMarko\SonataConfigurationPanelBundle\Entity\AbstractConfiguration; use Sonata\AdminBundle\Form\FormMapper; use Symfony\Component\Form\Extension\Core\Type\DateType; /** * * @ORM\Entity(repositoryClass="KunicMarko\SonataConfigurationPanelBundle\Repository\ConfigurationRepository") * */ class NewType extends AbstractConfiguration { /** * @var \DateTime * * @ORM\Column(name="date", type="date", nullable=true) */ private $date; /** * Set date * * @param \DateTime $date * * @return DateType */ public function setDate($date) { $this->date = $date; return $this; } /** * Get date * * @return \DateTime */ public function getDate() { return $this->date; } /** * Get date * * @return \DateTime */ public function getValue() { return $this->getDate(); } /** * {@inheritDoc} */ public function getTemplate() { //return 'SonataAdminBundle:CRUD:list_string.html.twig'; can also be used return 'ConfigurationPanelBundle:CRUD:list_field_date.html.twig'; } /** * {@inheritDoc} */ public function generateFormField(FormMapper $formMapper) { $formMapper->add('date', DateType::class, ['required' => false]); } }

Do not forget to update database after adding new field :, (*16)

app/console doctrine:schema:update --force

Roles and Categories

This bundle was made as help to developers so only ROLE_SUPER_ADMIN can create and delete items, regular admins can only edit. ( You can create keys and allow other admins to just edit them ). There are 2 categories when creating item, Meta and General, only ROLE_SUPER_ADMIN can see and edit items that are in META category while normal admins can only edit and see General items., (*17)

Additional stuff

When including this bundle you get access to some twig filters I needed., (*18)

Elapsed

In twig you can use |elapsed filter and you will get human readable time, it works with timestamps or DateTime objects., (*19)

{{ var|elapsed }}

#outputs "time" ago, 5 days ago, 5 minutes ago, just now, 1 month ago, etc.

The Versions

16/08 2017

dev-master

9999999-dev https://github.com/kunicmarko20/configuration-panel

This is a Symfony Bundle that adds configuration panel to your sonata admin.

  Sources   Download

MIT

The Requires

 

bundle symfony sonata sonata admin symfony configuration panel

12/04 2017

2.0.0

2.0.0.0 https://github.com/kunicmarko20/configuration-panel

This is a Symfony Bundle that adds configuration panel to your sonata admin.

  Sources   Download

MIT

The Requires

 

bundle symfony sonata sonata admin symfony configuration panel

19/12 2016

v1.0.1

1.0.1.0 https://github.com/kunicmarko20/configuration-panel

This is a Symfony Bundle that adds configuration panel to your sonata admin.

  Sources   Download

MIT

The Requires

 

bundle symfony sonata sonata admin symfony configuration panel