protected $is_valid = null;
-
function __construct($data=null, $extra=array(), $label_suffix=null)
{
if ($data !== null) {
return $field_name;
}
- function hasFileField(){
- foreach($this->fields as $field){
- if (is_a($field,'IPF_Form_Field_File')){
+ function hasFileField()
+ {
+ foreach ($this->fields as $field)
+ if (is_a($field,'IPF_Form_Field_File'))
return true;
- }
- }
return false;
}
- function isValid(){
+ function isValid()
+ {
if ($this->is_valid !== null) {
return $this->is_valid;
}
}
}
- if (!count($groups))
- {
- $groups = array(array('fields'=>$this->fields));
+ if (count($groups)) {
+ $render_group_title = $group_title ? true : false;
+ } else {
+ $groups = array(array('fields' => $this->fields));
$render_group_title = false;
}
- else $render_group_title = $group_title ? true : false;
-
- foreach ($groups as $group)
- {
+
+ foreach ($groups as $group) {
if ($render_group_title && array_key_exists('label', $group))
$output[] = sprintf($group_title, $group['label']);
-
+
foreach ($group['fields'] as $name=>$field) {
$bf = new IPF_Form_BoundField($this, $field, $name);
$bf_errors = $bf->errors;
$output[] = $_tmp;
}
}
- return new IPF_Template_SafeString($this->before_render.implode("\n", $output).$this->after_render, true);
+
+ $extra_js = array();
+ foreach ($groups as $group)
+ foreach ($group['fields'] as $name => $field)
+ $extra_js = array_merge($extra_js, $field->widget->extra_js());
+ $output[] = implode("\n", array_unique($extra_js));
+
+ return new IPF_Template_SafeString($this->before_render . implode("\n", $output) . $this->after_render, true);
}
public function render_p()
public function render_table()
{
- return $this->htmlOutput('<tr><th>%2$s</th><td>%1$s%3$s%4$s</td></tr>',
- '<tr><td colspan="2">%s</td></tr>',
- '</td></tr>', '<br /><span class="helptext">%s</span>', false);
+ return $this->htmlOutput(
+ '<tr><th>%2$s</th><td>%1$s%3$s%4$s</td></tr>',
+ '<tr><td colspan="2">%s</td></tr>',
+ '</td></tr>',
+ '<br /><span class="helptext">%s</span>',
+ false);
}
public function render_admin()
{
return $this->htmlOutput(
- '<div class="form-row"><div>%2$s %1$s%3$s%4$s</div></div>',
+ '<div class="form-row"><div>%2$s %1$s%3$s%4$s</div></div>',
'<div>%s</div>',
- '</div>', '<p class="help">%s</p>', true,
- '<div class="form-group-title">%s</div>'
- );
+ '</div>',
+ '<p class="help">%s</p>',
+ true,
+ '<div class="form-group-title">%s</div>');
}
function __get($prop)
return new IPF_Form_BoundField($this, $this->fields[$key], $key);
}
- public function current()
+ public function current()
{
$field = current($this->fields);
$name = key($this->fields);
return new IPF_Form_BoundField($this, $field, $name);
}
- public function key()
+ public function key()
{
return key($this->fields);
}
- public function next()
+ public function next()
{
next($this->fields);
}
- public function rewind()
+ public function rewind()
{
reset($this->fields);
}
- public function valid()
+ public function valid()
{
return (false !== current($this->fields));
}
-
}
function IPF_Form_htmlspecialcharsArray(&$item, $key)
function IPF_Form_renderErrorsAsHTML($errors)
{
- if (count($errors)==0)
- return '';
+ if (count($errors)==0)
+ return '';
$tmp = array();
foreach ($errors as $err) {
$tmp[] = '<li>'.$err.'</li>';
public $theme = 'simple';
public $include_tinymce = true;
- static $js_include = False;
-
public function __construct($attrs=array())
{
$defaults = array('cols' => '70',
}
}
$final_attrs = $this->buildAttrs(array('name' => $name), $extra_attrs);
- $out = '';
- if (!IPF_Form_Widget_HTMLInput::$js_include){
- IPF_Form_Widget_HTMLInput::$js_include = true;
- $out .= '<script language="javascript" type="text/javascript" src="'.IPF::get('tiny_mce_url').'tiny_mce.js"></script>'."\n";
- $out .='<script language="javascript" type="text/javascript">
- function ipf_filebrowser(field_name, url, type, win) {
- var cmsURL = "/admin/filebrowser/";
- tinyMCE.activeEditor.windowManager.open({
- file : cmsURL,
- title : "IPF File Browser",
- width : 800,
- height : 600,
- resizable : "yes",
- inline : "yes",
- close_previous : "no"
- }, {
- window : win,
- input : field_name
- });
- return false;
- }
- tinyMCE.init({
- theme_advanced_buttons1 : "bold, italic, underline, separator, undo, redo, separator, bullist, numlist, outdent, indent, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, link, unlink, forecolor, backcolor, sub, sup, separator, preview",
- theme_advanced_buttons2 : "code, fullscreen, image, charmap, separator, pastetext, pasteword, selectall, removeformat, separator, formatselect, fontselect, fontsizeselect",
- theme_advanced_buttons3 : "tablecontrols",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align: "left",
- extended_valid_elements : "span[class|style],code[class],iframe[src|width|height|name|align|frameborder|scrolling]",
- mode : "specific_textareas",
- editor_selector : "htmlEditor",
- theme : "advanced",
- convert_urls:"false",
- plugins : "inlinepopups, charmap, paste, table, fullscreen, preview, print, advlink, advimage",
- button_tile_map : true,
- fix_list_elements : true,
- gecko_spellcheck : true,
- verify_html : true,
- dialog_type : "modal",
- width : "80%",
- height : "350",
- relative_urls : false,
- remove_script_host : true,
- content_css : "/media/tiny_mce/themes/advanced/skins/default/content.css",
- file_browser_callback : "ipf_filebrowser"
- });
- </script>';
- }
- return new IPF_Template_SafeString(
- $out.sprintf('<textarea%s class="htmlEditor">%s</textarea>',
- IPF_Form_Widget_Attrs($final_attrs),
- htmlspecialchars($value, ENT_COMPAT, 'UTF-8')),
- true);
+ return new IPF_Template_SafeString('<textarea'.IPF_Form_Widget_Attrs($final_attrs).' class="htmlEditor">'.htmlspecialchars($value, ENT_COMPAT, 'UTF-8').'</textarea>', true);
+ }
+
+ public function extra_js()
+ {
+ return array(
+ '<script type="text/javascript" src="'.IPF::get('tiny_mce_url').'tiny_mce.js"></script>',
+ '<script type="text/javascript">
+function ipf_filebrowser(field_name, url, type, win) {
+ var cmsURL = "/admin/filebrowser/";
+ tinyMCE.activeEditor.windowManager.open({
+ file: cmsURL,
+ title: "IPF File Browser",
+ width: 800,
+ height: 600,
+ resizable: "yes",
+ inline: "yes",
+ close_previous: "no"
+ }, {
+ window: win,
+ input: field_name
+ });
+ return false;
+}
+tinyMCE.init({
+ theme_advanced_buttons1: "bold, italic, underline, separator, undo, redo, separator, bullist, numlist, outdent, indent, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, link, unlink, forecolor, backcolor, sub, sup, separator, preview",
+ theme_advanced_buttons2: "code, fullscreen, image, charmap, separator, pastetext, pasteword, selectall, removeformat, separator, formatselect, fontselect, fontsizeselect",
+ theme_advanced_buttons3: "tablecontrols",
+ theme_advanced_toolbar_location: "top",
+ theme_advanced_toolbar_align: "left",
+ extended_valid_elements: "span[class|style],code[class],iframe[src|width|height|name|align|frameborder|scrolling]",
+ mode: "specific_textareas",
+ editor_selector: "htmlEditor",
+ theme: "advanced",
+ convert_urls: "false",
+ plugins: "inlinepopups, charmap, paste, table, fullscreen, preview, print, advlink, advimage",
+ button_tile_map: true,
+ fix_list_elements: true,
+ gecko_spellcheck: true,
+ verify_html: true,
+ dialog_type: "modal",
+ width: "80%",
+ height: "350",
+ relative_urls: false,
+ remove_script_host: true,
+ content_css: "/media/tiny_mce/themes/advanced/skins/default/content.css",
+ file_browser_callback: "ipf_filebrowser"
+});
+</script>',
+ );
}
-}
\ No newline at end of file
+}
+