1 <?php
 2 /**
 3  * @package    FrameworkOnFramework
 4  * @subpackage form
 5  * @copyright   Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
 6  * @license    GNU General Public License version 2 or later; see LICENSE.txt
 7  */
 8 // Protect from unauthorized access
 9 defined('FOF_INCLUDED') or die;
10 
11 JFormHelper::loadFieldClass('editor');
12 
13 /**
14  * Form Field class for the FOF framework
15  * An editarea field for content creation and formatted HTML display
16  *
17  * @package  FrameworkOnFramework
18  * @since    2.0
19  */
20 class FOFFormFieldEditor extends JFormFieldEditor implements FOFFormField
21 {
22     protected $static;
23 
24     protected $repeatable;
25 
26     /** @var   FOFTable  The item being rendered in a repeatable form field */
27     public $item;
28 
29     /** @var int A monotonically increasing number, denoting the row number in a repeatable view */
30     public $rowid;
31 
32     /**
33      * Method to get certain otherwise inaccessible properties from the form field object.
34      *
35      * @param   string  $name  The property name for which to the the value.
36      *
37      * @return  mixed  The property value or null.
38      *
39      * @since   2.0
40      */
41     public function __get($name)
42     {
43         switch ($name)
44         {
45             case 'static':
46                 if (empty($this->static))
47                 {
48                     $this->static = $this->getStatic();
49                 }
50 
51                 return $this->static;
52                 break;
53 
54             case 'repeatable':
55                 if (empty($this->repeatable))
56                 {
57                     $this->repeatable = $this->getRepeatable();
58                 }
59 
60                 return $this->repeatable;
61                 break;
62 
63             default:
64                 return parent::__get($name);
65         }
66     }
67 
68     /**
69      * Get the rendering of this field type for static display, e.g. in a single
70      * item view (typically a "read" task).
71      *
72      * @since 2.0
73      *
74      * @return  string  The field HTML
75      */
76     public function getStatic()
77     {
78         $class = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
79 
80         return '<div id="' . $this->id . '" ' . $class . '>' . $this->value . '</div>';
81     }
82 
83     /**
84      * Get the rendering of this field type for a repeatable (grid) display,
85      * e.g. in a view listing many item (typically a "browse" task)
86      *
87      * @since 2.0
88      *
89      * @return  string  The field HTML
90      */
91     public function getRepeatable()
92     {
93         $class = $this->element['class'] ? (string) $this->element['class'] : '';
94 
95         return '<div class="' . $this->id . ' ' . $class . '">' . $this->value . '</div>';
96     }
97 }
98