isicsPropelNestedSetPositionPlugin - 0.9.5

A simple way to handle Propel nested set objects position.

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


« Back to the Plugins Home

Signin


Forgot your password?
Create an account

Tools

Stats

advanced search
Information Readme Dependencies Releases Changelog Contribute
Show source | Show as Markdown

isicsPropelNestedSetPosition plugin

This plugins adds a widget and a valitor for easily handle your Propel nested set objects position.

Installation

  • Requirements:

    • sfPropelPlugin (Propel 1.3): native nested set support
  • Install the plugin

      symfony plugin-install http://plugins.symfony-project.com/isicsPropelNestedSetPositionPlugin
    
  • Clear the cache

      symfony cache:clear
    

Usage

In your sfFormPropel class:

  • use the widget isicsWigetFormPropelNestedSetPosition:

      $this->setWidgets(array(
        'position' => new isicsWigetFormPropelNestedSetPosition(array('node' => $this->object))
      ));
    
  • use the validator isicsValidatorPropelNestedSetPosition:

      $this->setValidators(array(
        'position' => new isicsValidatorPropelNestedSetPosition(array('node' => $this->object, 'max_depth' => 3))
      ));
    

    max_depth option is optionnal.

  • customize the doSave() method:

      public function doSave($con = null)
      {
        if (!is_null($position = $this->getValue('position')))
        {
          $this->object->$position['method']($position['related_node']);
        }
    
        parent::doSave($con);
      }
    
  • I18N: by default, methods translations have to be in "messages" catalogue. You can specify any catalogue in app.yml:

      isics_widget_form_propel_nested_set_position:
        i18n_catalogue: my_catalogue
    
  • By default, a new node is added as last child of root. You're also able to define another default method and related node:

      $this->setWidgets(array(
        'position' => new isicsWigetFormPropelNestedSetPosition(array(
          'node'                 => $this->object,
          'default_method'       => 'insertAsFirstChildOf',
          'default_related_node' => my_parent_node->getId()
        ))
      ));
    

ROADMAP

  • Write unit tests