Code Monkey home page Code Monkey logo

mevsortabletreebundle's Introduction

Packagist

mevSortableTreeBundle

Offers a sortable feature for your Symfony2/3 admin tree listing

screenshot

Install requirements

SonataAdminBundle
- the SonataAdminBundle provides a installation article here:
http://symfony.com/doc/current/cmf/tutorial/sonata-admin.html

StofDoctrineExtensionsBundle
- then you need install StofDoctrineExtensionsBundle
https://symfony.com/doc/master/bundles/StofDoctrineExtensionsBundle/index.html

Enable Tree Extension
- nested behavior will implement the standard Nested-Set behavior on your Entity
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md

Install

composer require mikeevstropov/sortable-tree-bundle

Configuration

Enable the mevTreeSortableBehaviorBundle to your kernel:

// app/AppKernel.php

class AppKernel extends Kernel
{
	public function registerBundles()
	{
		$bundles = [
			// ...
			new Mev\SortableTreeBundle\MevSortableTreeBundle(),
		];
		// ...
	}
}

Create new routes and field action in Admin Class:

// src/AppBundle/Admin/CategoryAdmin.php

// ...

use Sonata\AdminBundle\Route\RouteCollection;

class CategoryAdmin extends AbstractAdmin
{
	// ...
	protected function configureRoutes(RouteCollection $collection)
	{
		$collection->add('tree_up', $this->getRouterIdParameter().'/treeup/{page_id}');
		$collection->add('tree_down', $this->getRouterIdParameter().'/treedown/{page_id}');
    }

	protected function configureListFields(ListMapper $listMapper)
	{
		// ...
		$listMapper->add('_action', null, array(
			'actions' => array(
				'edit' => array(
					'template' => 'MevSortableTreeBundle:Default:tree_up_down.html.twig'
				)
			)
		));
	}
}

Configure sort the list of models by root and lft fields:

// src/AppBundle/Admin/CategoryAdmin.php

// ...

class CategoryAdmin extends AbstractAdmin
{
	// ...
	public function createQuery($context = 'list')
	{
		$proxyQuery = parent::createQuery('list');
		// Default Alias is "o"
		$proxyQuery->addOrderBy('o.root', 'ASC');
		$proxyQuery->addOrderBy('o.lft', 'ASC');
    
		return $proxyQuery;
	}
	// ...
}

That's it!

ToDo

  • Sortable behaveor for root elements (but, you can hide root element)

mevsortabletreebundle's People

Contributors

mikeevstropov avatar

Watchers

James Cloos avatar Andrew Red avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.