protected function actionEdit()
    {
        $mm = new MessageModel($_GET['id'], $this->dao);
        $row = $this->dao->messageById($_GET['id']);
        $tm = new TemplateModel($this->dao->templateBody($row['template']));
        $ref = Reference::decode(stripslashes($_GET['field']));
        $area = ContentAreaBase::createContentArea($tm->namedNode($ref->name));
        $result = $area->display($ref, $mm->messageAreas());
        $html = <<<END
<html>
<body>{$result}</body>
</html>
END;
        ob_end_clean();
        echo $html;
        exit;
    }
 /**
  * Merge all the content areas at a specific level.
  *
  * @param DOMNodeList $nodes          content area nodes
  * @param array       $areas          the content area values for the current level
  * @param bool        $edit           whether the merge should include edit buttons
  * @param string|null $repeatName     name of repeatable or hideable area
  * @param int|null    $repeatInstance the repeat or hideable instance
  */
 private function mergeNodesAtLevel(DOMNodeList $nodes, array $areas, $edit, $repeatName = null, $repeatInstance = null)
 {
     ++$this->depth;
     foreach ($nodes as $node) {
         $area = ContentAreaBase::createContentArea($node);
         $area->edit = $edit;
         if ($repeatName) {
             $area->reference = new Reference($repeatName, $repeatInstance, $area->name);
         }
         if (isset($areas[$area->name])) {
             $area->merge($areas[$area->name], $this);
         } else {
             $area->merge(null, $this);
         }
     }
     --$this->depth;
 }
    /**
     * @test
     */
    public function createsRepeatContentArea()
    {
        $html = <<<'END'
<html>
    <body>
        <div data-repeatable="repeat1">
            <div data-edit="article" data-type="textarea"></div>
        </div>
    </body>
</html>
END;
        $tm = new TemplateModel();
        $tm->loadHtml($html);
        $node = $tm->namedNode('repeat1');
        $area = ContentAreaBase::createContentArea($node);
        $this->assertInstanceOf('phpList\\plugin\\ContentAreas\\ContentAreaRepeat', $area);
        $this->assertEquals('repeat1', $area->name);
        $this->assertEquals('repeat1', $area->reference);
    }