/** * Build a form tag with a unique request token * * @param array Named tag parameters including 'action' and 'task' values which will be put into hidden fields * @param string Form content * @return string HTML code for the form */ public function request_form($attrib, $content = '') { $hidden = new html_hiddenfield(); if ($attrib['task']) { $hidden->add(array('name' => '_task', 'value' => $attrib['task'])); } if ($attrib['action']) { $hidden->add(array('name' => '_action', 'value' => $attrib['action'])); } unset($attrib['task'], $attrib['request']); $attrib['action'] = './'; // we already have a <form> tag if ($attrib['form']) { if ($this->framed || !empty($_REQUEST['_framed'])) { $hidden->add(array('name' => '_framed', 'value' => '1')); } return $hidden->show() . $content; } else { return $this->form_tag($attrib, $hidden->show() . $content); } }
function filter_form($attrib) { if (!$attrib['id']) { $attrib['id'] = 'rcmfilterform'; } $fid = rcube_utils::get_input_value('_fid', rcube_utils::INPUT_GPC); $scr = isset($this->form) ? $this->form : $this->script[$fid]; $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $this->rc->task)); $hiddenfields->add(array('name' => '_action', 'value' => 'plugin.managesieve-save')); $hiddenfields->add(array('name' => '_framed', 'value' => $_POST['_framed'] || $_GET['_framed'] ? 1 : 0)); $hiddenfields->add(array('name' => '_fid', 'value' => $fid)); $out = '<form name="filterform" action="./" method="post">' . "\n"; $out .= $hiddenfields->show(); // 'any' flag if (sizeof($scr['tests']) == 1 && $scr['tests'][0]['test'] == 'true' && !$scr['tests'][0]['not']) { $any = true; } // filter name input $field_id = '_name'; $input_name = new html_inputfield(array('name' => '_name', 'id' => $field_id, 'size' => 30, 'class' => $this->errors['name'] ? 'error' : '')); if ($this->errors['name']) { $this->add_tip($field_id, $this->errors['name'], true); } if (isset($scr)) { $input_name = $input_name->show($scr['name']); } else { $input_name = $input_name->show(); } $out .= sprintf("\n<label for=\"%s\"><b>%s:</b></label> %s\n", $field_id, rcube::Q($this->plugin->gettext('filtername')), $input_name); // filter set selector if ($this->rc->task == 'mail') { $out .= sprintf("\n <label for=\"%s\"><b>%s:</b></label> %s\n", $field_id, rcube::Q($this->plugin->gettext('filterset')), $this->filtersets_list(array('id' => 'sievescriptname'), true)); } $out .= '<br /><br /><fieldset><legend>' . rcube::Q($this->plugin->gettext('messagesrules')) . "</legend>\n"; // any, allof, anyof radio buttons $field_id = '_allof'; $input_join = new html_radiobutton(array('name' => '_join', 'id' => $field_id, 'value' => 'allof', 'onclick' => 'rule_join_radio(\'allof\')', 'class' => 'radio')); if (isset($scr) && !$any) { $input_join = $input_join->show($scr['join'] ? 'allof' : ''); } else { $input_join = $input_join->show(); } $out .= sprintf("%s<label for=\"%s\">%s</label> \n", $input_join, $field_id, rcube::Q($this->plugin->gettext('filterallof'))); $field_id = '_anyof'; $input_join = new html_radiobutton(array('name' => '_join', 'id' => $field_id, 'value' => 'anyof', 'onclick' => 'rule_join_radio(\'anyof\')', 'class' => 'radio')); if (isset($scr) && !$any) { $input_join = $input_join->show($scr['join'] ? '' : 'anyof'); } else { $input_join = $input_join->show('anyof'); } // default $out .= sprintf("%s<label for=\"%s\">%s</label>\n", $input_join, $field_id, rcube::Q($this->plugin->gettext('filteranyof'))); $field_id = '_any'; $input_join = new html_radiobutton(array('name' => '_join', 'id' => $field_id, 'value' => 'any', 'onclick' => 'rule_join_radio(\'any\')', 'class' => 'radio')); $input_join = $input_join->show($any ? 'any' : ''); $out .= sprintf("%s<label for=\"%s\">%s</label>\n", $input_join, $field_id, rcube::Q($this->plugin->gettext('filterany'))); $rows_num = isset($scr) ? sizeof($scr['tests']) : 1; $out .= '<div id="rules"' . ($any ? ' style="display: none"' : '') . '>'; for ($x = 0; $x < $rows_num; $x++) { $out .= $this->rule_div($fid, $x); } $out .= "</div>\n"; $out .= "</fieldset>\n"; // actions $out .= '<fieldset><legend>' . rcube::Q($this->plugin->gettext('messagesactions')) . "</legend>\n"; $rows_num = isset($scr) ? sizeof($scr['actions']) : 1; $out .= '<div id="actions">'; for ($x = 0; $x < $rows_num; $x++) { $out .= $this->action_div($fid, $x); } $out .= "</div>\n"; $out .= "</fieldset>\n"; $this->print_tips(); if ($scr['disabled']) { $this->rc->output->set_env('rule_disabled', true); } $this->rc->output->add_label('managesieve.ruledeleteconfirm', 'managesieve.actiondeleteconfirm'); $this->rc->output->add_gui_object('sieveform', 'filterform'); return $out; }