public function testGroupHiddens() { $form = new HTML_QuickForm2('testGroupHiddens', 'post', null, false); $hidden = $form->addHidden('aHiddenElement'); $renderer = HTML_QuickForm2_Renderer::factory('stub'); $renderer->setOption('group_hiddens', false); $form->render($renderer); $this->assertEquals(array(), $renderer->getHidden()); $renderer->setOption('group_hiddens', true); $form->render($renderer); $this->assertEquals(array($hidden->__toString()), $renderer->getHidden()); }
{ return '<div class="form-actions">' . $submit . '</div>'; } require_once 'HTML/QuickForm2/Renderer.php'; $renderer = HTML_QuickForm2_Renderer::factory('callback'); $renderer->setCallbackForId($submit->getId(), 'renderSubmit'); $renderer->setOption(array('errors_prefix' => 'El formulario contiene errores:', 'required_note' => '<span class="required">*</span> denota campos requeridos')); //////////////////////////////////////////////////////////// include_once 'header.php'; echo '<div class="page-header">'; echo ' <img class="pull-right" src="img/logo_sumar_small.png">'; echo ' <h1>Búsqueda de notas</h1>'; echo '</div>'; // Output javascript libraries, needed by hierselect //echo $renderer->getJavascriptBuilder()->getLibraries(true, true); $form->render($renderer); echo '<div class="noprint">'; echo $renderer; echo '</div>'; if (isset($_GET['btnSubmit']) and $_GET['btnSubmit'] != '') { $q = isset($_GET['texto']) ? strtr($_GET['texto'], $normalizeChars) : ''; $sql_where = ''; $sql_data = array(); //$new_row = $_GET['new_row']; // $fecha_desde = get_date($new_row['fecha1_desde']) . ' 00:00:00'; // $fecha_hasta = get_date($new_row['fecha1_hasta']) . ' 23:59:59'; // $sql_data = array($fecha_desde, $fecha_hasta); if (!empty($_GET['zona'])) { $sql_where .= " and lower(m.zona) like '%' || lower(?) || '%' "; $sql_data[] = $_GET['zona']; }
$form->addElement('checkbox', 'unmaintained')->setLabel('Is this package unmaintained ?'); $packages = package::listAllwithReleases(); $rows = array(0 => ''); foreach ($packages as $id => $info) { if ($id == $_GET['id']) { continue; } $rows[$id] = $info['name']; } $form->addElement('select', 'newpk_id')->setLabel('Superseeded by:')->loadOptions($rows); $form->addElement('text', 'new_channel', array('maxlength' => 255, 'placeholder' => 'pear.phpunit.de'))->setLabel('Moved to channel:'); $form->addElement('text', 'new_package', array('maxlength' => 255, 'placeholder' => 'PHPUnit')); $form->addElement('submit', 'submit')->setLabel('Save Changes'); $csrf_token_value = create_csrf_token($csrf_token_name); $form->addElement('hidden', $csrf_token_name)->setValue($csrf_token_value); print $form->render($renderer); ?> <table class="form-holder" cellspacing="1"> <caption class="form-caption">Manage Releases</caption> <tr> <th class="form-label_top">Version</th> <th class="form-label_top">Release Date</th> <th class="form-label_top">Actions</th> </tr> <?php foreach ($row['releases'] as $version => $release) { echo "<tr>\n"; echo ' <td class="form-input">' . htmlspecialchars($version) . "</td>\n";
/** * edit edits the given entry * * @param int $cid entry-id for calendar * @return string html-string */ private function edit($cid) { // check rights if (Rights::check_rights($cid, 'calendar')) { // smarty-templates $sD = new JudoIntranetSmarty(); // get calendar-object $calendar = new Calendar($cid); // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.CalendarView#page#caption#edit') . ": \"{$cid}\" (" . $calendar->get_name() . ")"); // get rights $cRights = $calendar->get_rights()->get_rights(); // check public access $kPublicAccess = array_search(0, $cRights); $publicAccess = false; if ($kPublicAccess !== false) { $publicAccess = true; unset($cRights[$kPublicAccess]); } // prepare return $return = ''; $form = new HTML_QuickForm2('edit_calendar_entry', 'post', array('name' => 'edit_calendar_entry', 'action' => 'calendar.php?id=edit&cid=' . $cid)); $now_year = (int) date('Y'); $year_min = $now_year; $year_max = $now_year + 3; // get datasource $datasource = array('date' => $calendar->get_date(), 'name' => $calendar->get_name(), 'shortname' => $calendar->get_shortname(), 'type' => $calendar->return_type(), 'entry_content' => $calendar->get_content(), 'rights' => $cRights); // add public access if ($publicAccess) { $datasource['public'] = 1; } $form->addDataSource(new HTML_QuickForm2_DataSource_Array($datasource)); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.CalendarView#entry#form#requiredNote')); // elements // date $date = $form->addElement('text', 'date', array()); $date->setLabel(parent::lang('class.CalendarView#entry#form#date') . ':'); // rule $date->addRule('required', parent::lang('class.CalendarView#entry#rule#required.date')); $date->addRule('callback', parent::lang('class.CalendarView#entry#rule#check.date'), array($this, 'callback_check_date')); // add jquery-datepicker // smarty $sD->assign('elementid', 'date-0'); $sD->assign('dateFormat', 'yy-mm-dd'); $sD->assign('dateValue', $calendar->get_date()); $this->add_jquery($sD->fetch('smarty.js-datepicker.tpl')); // name $name = $form->addElement('text', 'name'); $name->setLabel(parent::lang('class.CalendarView#entry#form#name') . ':'); $name->addRule('required', parent::lang('class.CalendarView#entry#rule#required.name')); $name->addRule('regex', parent::lang('class.CalendarView#entry#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('name.desc') . ']', $_SESSION['GC']->get_config('name.regexp')); // shortname $shortname = $form->addElement('text', 'shortname'); $shortname->setLabel(parent::lang('class.CalendarView#entry#form#shortname') . ':'); $shortname->addRule('regex', parent::lang('class.CalendarView#entry#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('name.desc') . ']', $_SESSION['GC']->get_config('name.regexp')); // type $options = array_merge(array(0 => '--'), Calendar::return_types()); $type = $form->addElement('select', 'type'); $type->setLabel(parent::lang('class.CalendarView#entry#form#type') . ':'); $type->loadOptions($options); $type->addRule('required', parent::lang('class.CalendarView#entry#rule#required.type')); $type->addRule('callback', parent::lang('class.CalendarView#entry#rule#check.select'), array($this, 'callback_check_select')); // entry_content $content = $form->addElement('textarea', 'entry_content'); $content->setLabel(parent::lang('class.CalendarView#entry#form#entry_content') . ':'); $content->addRule('regex', parent::lang('class.CalendarView#entry#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('textarea.desc') . ']', $_SESSION['GC']->get_config('textarea.regexp')); // select rights $options = $_SESSION['user']->return_all_groups('sort'); $rights = $form->addElement('select', 'rights', array('multiple' => 'multiple', 'size' => 5)); $rights->setLabel(parent::lang('class.CalendarView#entry#form#rights') . ':'); $rights->loadOptions($options); // checkbox public $rights = $form->addElement('checkbox', 'public'); $rights->setLabel(parent::lang('class.CalendarView#entry#form#public') . ':'); // submit-button $form->addElement('submit', 'submit', array('value' => parent::lang('class.CalendarView#entry#form#submitButton'))); // validate if ($form->validate()) { // create calendar-object $data = $form->getValue(); // check $data['rights'] if (!isset($data['rights'])) { $data['rights'] = array(); } // merge with own groups, add admin $data['rights'] = array_merge($data['rights'], $_SESSION['user']->get_groups(), array(1)); // add public access $kPublicAccess = array_search(0, $data['rights']); if ($kPublicAccess === false && isset($data['public']) && $data['public'] == 1) { $data['rights'][] = 0; } elseif ($kPublicAccess !== false && !isset($data['public'])) { unset($data['rights'][$kPublicAccess]); } $calendar_new = array('date' => $data['date'], 'name' => $data['name'], 'shortname' => $data['shortname'], 'type' => $data['type'], 'content' => $data['entry_content'], 'rights' => $data['rights'], 'valid' => 1); // update calendar $calendar->update($calendar_new); // put entry to output // smarty-template $sCD = new JudoIntranetSmarty(); // write entry try { $calendar->write_db('update'); // smarty $sCD->assign('data', $calendar->details_to_html()); return $sCD->fetch('smarty.calendar.details.tpl'); } catch (Exception $e) { $GLOBALS['Error']->handle_error($e); return $GLOBALS['Error']->to_html($e); } } else { return $form->render($renderer); } } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
public function render(\HTML_QuickForm2_Renderer $renderer) { $this->_initValues(); return parent::render($renderer); }
/** * edit edits the entry * * @return string html-string */ private function edit() { // smarty-templates $sD = new JudoIntranetSmarty(); // check rights if (Rights::check_rights($this->get('cid'), 'calendar')) { // check cid and pid given if ($this->get('cid') !== false && $this->get('pid') !== false) { // check cid and pid exists if (Calendar::check_id($this->get('cid')) && Preset::check_preset($this->get('pid'), 'calendar')) { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.AnnouncementView#page#caption#edit')); // prepare return $return = ''; // get preset $preset = new Preset($this->get('pid'), 'calendar', $this->get('cid')); // get fields $fields = $preset->get_fields(); // formular $form = new HTML_QuickForm2('edit_announcement', 'post', array('name' => 'edit_announcement', 'action' => 'announcement.php?id=edit&cid=' . $this->get('cid') . '&pid=' . $this->get('pid'))); // values $datasource = array(); foreach ($fields as $field) { // read values $field->read_value(); // check type if ($field->get_type() == 'text') { // check defaults $datasource['calendar-' . $field->get_id()]['manual'] = ''; $datasource['calendar-' . $field->get_id()]['defaults'] = 0; if ($field->get_value() == '') { $datasource['calendar-' . $field->get_id()]['defaults'] = 'd' . $field->get_defaults(); } else { $datasource['calendar-' . $field->get_id()]['manual'] = $field->get_value(); } } elseif ($field->get_type() == 'dbhierselect') { // explode value list($v_first, $v_second) = explode('|', $field->get_value(), 2); // set values $datasource['calendar-' . $field->get_id()][0] = $v_first; $datasource['calendar-' . $field->get_id()][1] = $v_second; } elseif ($field->get_type() == 'dbselect') { // check multiple if (strpos($field->get_value(), '|') !== false) { // separate value $values = explode('|', $field->get_value()); foreach ($values as $i => $value) { $datasource['calendar-' . $field->get_id()][$i] = $value; } } else { $datasource['calendar-' . $field->get_id()] = $field->get_value(); } } else { $datasource['calendar-' . $field->get_id()] = $field->get_value(); } } $form->addDataSource(new HTML_QuickForm2_DataSource_Array($datasource)); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.AnnouncementView#entry#form#requiredNote')); // generate field-quickform and add to form foreach ($fields as $field) { // generate quickform $field_id = $field->read_quickform(array(), true); // check $field_id if ($field_id != '' && $field->get_type() == 'date') { // smarty $sD->assign('elementid', $field_id . '-0'); $sD->assign('dateFormat', 'yy-mm-dd'); $sD->assign('dateValue', $field->get_value()); $this->add_jquery($sD->fetch('smarty.js-datepicker.tpl')); } // add to form $form->appendChild($field->get_quickform()); } // submit-button $form->addSubmit('submit', array('value' => parent::lang('class.AnnouncementView#edit#form#submitButton'))); // validate if ($form->validate()) { // get calendar $calendar = new Calendar($this->get('cid')); // prepare marker-array $announcement = array('version' => date('dmy')); // get data $data = $form->getValue(); // insert values foreach ($fields as $field) { // values to db $field->value($data[$field->get_table() . '-' . $field->get_id()]); $field->write_db('update'); } // add calendar-fields to array $calendar->add_marks($announcement); // add field-names and -values to array $preset->add_marks($announcement); // get field name and value $values = array(); foreach ($fields as $field) { $values[] = $field->value_to_html(); } // smarty $sAe = new JudoIntranetSmarty(); $sAe->assign('a', $announcement); for ($i = 0; $i < count($values); $i++) { if (preg_match('/\\{\\$a\\..*\\}/U', $values[$i]['value'])) { $values[$i]['value'] = $sAe->fetch('string:' . $values[$i]['value']); } } $sAe->assign('v', $values); return $sAe->fetch('smarty.announcement.edit.tpl'); } else { return $form->render($renderer); } } else { // error $errno = $GLOBALS['Error']->error_raised('WrongParams', 'entry:cid_or_pid', 'cid_or_pid'); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // error $errno = $GLOBALS['Error']->error_raised('MissingParams', 'entry:cid_or_pid', 'cid_or_pid'); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * correct handles the corrections of the protocol * * @param int $pid entry-id for protocol * @return string html of the correction page */ private function correct($pid) { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.ProtocolView#page#caption#correct')); // get protocol object $protocol = new Protocol($pid); $correctable = $protocol->get_correctable(false); // js tiny_mce $tmce = array('element' => 'protocol-0', 'css' => 'templates/protocols/tmce_' . $protocol->get_preset()->get_path() . '.css', 'transitem' => parent::lang('class.ProtocolView#new_entry#tmce#item'), 'transdecision' => parent::lang('class.ProtocolView#new_entry#tmce#decision')); // smarty $this->tpl->assign('tmce', $tmce); // check rights if (Rights::check_rights($pid, 'protocol', true) && (in_array($_SESSION['user']->get_id(), $correctable['correctors']) || $_SESSION['user']->get_userinfo('name') == $protocol->get_owner())) { // check owner if ($_SESSION['user']->get_userinfo('name') == $protocol->get_owner()) { // smarty $sPCo = new JudoIntranetSmarty(); // check action if ($this->get('action') == 'diff' && $this->get('uid') !== false) { // diff correction of $uid // get correction $correction = new ProtocolCorrection($protocol, $this->get('uid')); // clean protocols for diff $diffBase = html_entity_decode(preg_replace('/<.*>/U', '', $protocol->get_protocol())); $diffNew = html_entity_decode(preg_replace('/<.*>/U', '', $correction->get_protocol())); // smarty $sJsDL = new JudoIntranetSmarty(); // activate difflib js-files $this->tpl->assign('jsdifflib', true); // set values for difflib $difflib = array('protDiffBase' => 'protDiffBase-0', 'protDiffNew' => 'protDiffNew-0', 'protDiffOut' => 'diffOut', 'protDiffBaseCaption' => parent::lang('class.ProtocolView#correct#diff#baseCaption'), 'protDiffNewCaption' => parent::lang('class.ProtocolView#correct#diff#newCaption')); // add difflib values to js-template $sJsDL->assign('dl', $difflib); $this->add_jquery($sJsDL->fetch('smarty.js-jsdifflib.tpl')); // add diffOut to template $sPCo->assign('diffOut', 'diffOut'); // build form $form = new HTML_QuickForm2('diffCorrection', 'post', array('name' => 'diffCorrection', 'action' => 'protocol.php?id=correct&pid=' . $pid . '&action=diff&uid=' . $this->get('uid'))); $datasource = array('protocol' => $protocol->get_protocol(), 'protDiffBase' => $diffBase, 'protDiffNew' => $diffNew); // add datasource $form->addDataSource(new HTML_QuickForm2_DataSource_Array($datasource)); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.ProtocolView#entry#form#requiredNote')); // elements // protocol text $protocolTA = $form->addElement('textarea', 'protocol'); $protocolTA->setLabel(parent::lang('class.ProtocolView#entry#form#protocol') . ':'); $protocolTA->addRule('regex', parent::lang('class.ProtocolView#entry#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('textarea.desc') . ']', $_SESSION['GC']->get_config('textarea.regexp')); // checkbox to mark correction as finished $finished = $form->addElement('checkbox', 'finished'); $finished->setLabel(parent::lang('class.ProtocolView#entry#form#finished') . ':'); // hidden textareas for texts to diff $protocolBase = $form->addElement('textarea', 'protDiffBase'); $protocolNew = $form->addElement('textarea', 'protDiffNew'); // submit-button $form->addElement('submit', 'submit', array('value' => parent::lang('class.ProtocolView#entry#form#submitButton'))); // add form to template $sPCo->assign('c', true); $sPCo->assign('form', $form->render($renderer)); // validate if ($form->validate()) { // get form data $data = $form->getValue(); // check finished if (!isset($data['finished'])) { $data['finished'] = 0; } $correctionUpdate = array('finished' => $data['finished']); $protocolUpdate = array('protocol' => $data['protocol']); // update $protocol->update($protocolUpdate); $correction->update($correctionUpdate); $protocol->writeDb('update'); $correction->writeDb('update'); // message $message = array('message' => parent::lang('class.ProtocolView#correct#message#corrected'), 'href' => 'protocol.php?id=correct&pid=' . $pid . '&action=diff&uid=' . $this->get('uid'), 'title' => parent::lang('class.ProtocolView#correct#message#back'), 'text' => parent::lang('class.ProtocolView#correct#message#back')); // assign to template $sPCo->assign('c', false); $sPCo->assign('message', $message); } } else { // list all corrections // get corrections $corrections = ProtocolCorrection::listCorrections($pid); // put information together $list = array(); $user = new User(); foreach ($corrections as $correction) { // change user $user->change_user($correction['uid'], false, 'id'); // fill list $img = false; if ($correction['finished'] == 1) { $img = array('src' => 'img/done.png', 'alt' => parent::lang('class.ProtocolView#correct#difflist#imgDone'), 'title' => parent::lang('class.ProtocolView#correct#difflist#imgDone')); } $list[] = array('href' => 'protocol.php?id=correct&pid=' . $pid . '&action=diff&uid=' . $correction['uid'], 'title' => parent::lang('class.ProtocolView#correct#difflist#correctedBy') . ': ' . $user->get_userinfo('name'), 'text' => $user->get_userinfo('name') . ' (' . date('d.m.Y', strtotime($correction['modified'])) . ')', 'img' => $img); } // smarty $sPCo->assign('caption', parent::lang('class.ProtocolView#correct#difflist#caption')); $sPCo->assign('list', $list); } // return return $sPCo->fetch('smarty.protocolcorrection.owner.tpl'); } else { // get ProtocolCorretion object $correction = new ProtocolCorrection($protocol); // formular $form = new HTML_QuickForm2('correctProtocol', 'post', array('name' => 'correctProtocol', 'action' => 'protocol.php?id=correct&pid=' . $pid)); $datasource = array('protocol' => $correction->get_protocol()); // add datasource $form->addDataSource(new HTML_QuickForm2_DataSource_Array($datasource)); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.ProtocolView#entry#form#requiredNote')); // elements // protocol text $protocolTA = $form->addElement('textarea', 'protocol'); $protocolTA->setLabel(parent::lang('class.ProtocolView#entry#form#protocol') . ':'); $protocolTA->addRule('regex', parent::lang('class.ProtocolView#entry#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('textarea.desc') . ']', $_SESSION['GC']->get_config('textarea.regexp')); // submit-button $form->addElement('submit', 'submit', array('value' => parent::lang('class.ProtocolView#entry#form#submitButton'))); // validate if ($form->validate()) { // get form data $data = $form->getValue(); $correctionUpdate = array('protocol' => $data['protocol'], 'modified' => date('U'), 'pid' => $pid); // update protocol $correction->update($correctionUpdate); // write to db $action = 'new'; if (ProtocolCorrection::hasCorrected($pid) === true) { $action = 'update'; } $correction->writeDb($action); return parent::lang('class.ProtocolView#correct#message#done'); } else { return $form->render($renderer); } } } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
public function testRenderWithStyle() { $form = new HTML_QuickForm2('arrayStyle'); $text1 = $form->addText('foo', array('id' => 'testArrayWithStyle')); $text2 = $form->addText('bar', array('id' => 'testArrayWithoutStyle')); $renderer = HTML_Quickform2_Renderer::factory('array')->setStyleForId('testArrayWithStyle', 'weird'); $array = $form->render($renderer)->toArray(); $this->assertEquals('weird', $array['elements'][0]['style']); $this->assertArrayNotHasKey('style', $array['elements'][1]); }
public function testRenderGroupedHiddens() { $form = new HTML_QuickForm2('groupedHiddens'); $hidden1 = $form->addHidden('hidden1'); $hidden2 = $form->addHidden('hidden2'); $renderer = HTML_Quickform2_Renderer::factory('callback')->setOption('group_hiddens', false); $html = $form->render($renderer)->__toString(); $this->assertContains('<div style="display: none;">' . $hidden1->__toString() . '</div>', $html); $this->assertContains('<div style="display: none;">' . $hidden2->__toString() . '</div>', $html); $renderer->setOption('group_hiddens', true); $html = $form->render($renderer)->__toString(); // why not ? // $this->assertNotContains('<div style="display: none;">', $html); $this->assertContains($hidden1->__toString() . $hidden2->__toString(), $html); }
public function render(HTML_QuickForm2_Renderer $renderer) { if (method_exists($renderer->getJavascriptBuilder(), 'addValidateJs')) { $renderer->getJavascriptBuilder()->addValidateJs('errorElement: "span"'); } Am_Di::getInstance()->hook->call(Am_Event::FORM_BEFORE_RENDER, array('form' => $this)); return parent::render($renderer); }
public function render(HTML_QuickForm2_Renderer $renderer) { if (method_exists($renderer->getJavascriptBuilder(), 'addValidateJs')) { $renderer->getJavascriptBuilder()->addValidateJs('errorElement: "span"'); } return parent::render($renderer); }
/** * take creates the form to take an inventoryitem from somebody else * * @param int $did entry-id for the inventoryitem * @return string html-string with the form */ private function take($did) { // check rights if (Rights::check_rights($did, 'inventory')) { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.InventoryView#page#caption#take')); // get db-object $db = Db::newDb(); // get inventory-object $inventory = new Inventory($did); // check owned if ($inventory->get_owned() == 'given') { // smarty-template $sT = new JudoIntranetSmarty(); // prepare return $return = ''; // get preset $preset = $inventory->get_preset(); // get fields $fields = $preset->get_fields(); // add headline $sT->assign('caption', parent::lang('class.InventoryView#take#page#headline') . ': ' . $inventory->get_name() . ' (' . $inventory->get_inventory_no() . ')'); // add take from $movements = Inventory::movement_last_row($db, $inventory->get_id(), 'user_id', 2); $user = new User(); $user->change_user($movements[1], false, 'id'); $sT->assign('takefrom', parent::lang('class.InventoryView#take#page#TakeFrom') . ': ' . $user->get_userinfo('name')); // add accessory info $sT->assign('accessoryinfo', parent::lang('class.InventoryView#take#page#accessory.required')); // formular $form = new HTML_QuickForm2('inventory_take', 'post', array('name' => 'inventory_take', 'action' => 'inventory.php?id=take&did=' . $this->get('did'))); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.InventoryView#entry#form#requiredNote')); // generate field-quickform and add to form foreach ($fields as $field) { // check if given if ($inventory->movement_last_accessories($field) === true || $field->get_type() == 'text') { // generate quickform $field->read_quickform(); } else { // generate quickform $field->read_quickform(array('disabled' => 'disabled')); } // add to form $form->appendChild($field->get_quickform()); } // submit-button $form->addSubmit('submit', array('value' => parent::lang('class.InventoryView#take#form#submitButton'))); // validate if ($form->validate()) { // values $values = $form->getValue(); // write to db $insert_id = $this->movement_to_db('taken', $inventory->get_id(), $_SESSION['user']->userid()); // accessory to db $this->values_to_db($insert_id, $fields, $values); // headline $sT->assign('action', $inventory->get_name() . ' (' . $inventory->get_inventory_no() . ') ' . parent::lang('class.InventoryView#take#page#headline.taken')); // accessory $sT->assign('accessoryaction', parent::lang('class.InventoryView#take#page#accessory.taken')); // walk through fields $data = array(); foreach ($fields as $field) { // check value if (isset($values['inventory-' . $field->get_id()])) { $field_value = $values['inventory-' . $field->get_id()]; } else { $field_value = 0; } // return field and value as HTML $field->value($field_value); $data[] = $field->value_to_html(); } $sT->assign('form', ''); $sT->assign('data', $data); } else { $sT->assign('form', $form->render($renderer)); } // return return $sT->fetch('smarty.inventory.takegive.tpl'); } else { // error $errno = $GLOBALS['Error']->error_raised('NotGivenTo', $this->get('id'), $did); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', $this->get('id'), $did); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * new_row inserts a new row in $table * * @param string $table table to insert row * @return string HTML-string for the form or message */ private function new_row($table) { // prepare return $return = ''; // get url-parameters $link = ''; if ($table == 'defaults') { $link = 'administration.php?id=' . $this->get('id'); } else { $link = 'administration.php?id=' . $this->get('id') . '&field=' . $table; } // get db-object $db = Db::newDb(); // prepare statement $sql = "SELECT * FROM {$table}"; // execute $result = $db->query($sql); // table info $tinfo = $result->fetch_fields(); // prepare form $form = new HTML_QuickForm2('new_' . $table, 'post', array('name' => 'new_' . $table, 'action' => $link . '&action=new')); // add datasource (valid = 1) $datasource['valid'] = 1; $form->addDataSource(new HTML_QuickForm2_DataSource_Array($datasource)); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.AdministrationView#new_row#form#requiredNote')); // get values and fields $i = 0; $fields = array(); foreach ($tinfo as $col) { // check translation $translated_col = ''; if (parent::lang('class.AdministrationView#tableRows#name#' . $col->name) != "class.AdministrationView#tableRows#name#{$col->name} not translated") { $translated_col = parent::lang('class.AdministrationView#tableRows#name#' . $col->name); } else { $translated_col = $col->name; } // check id if ($col->name != 'id') { // col->type // 252 = text, 253 = varchar; 1 = tinyint(boolean); 3 = int // add field $field = null; // check category if ($col->name == 'category') { // get options $cat_sql = "SELECT id,name FROM category WHERE valid=1"; $cat_result = $db->query($cat_sql); $options = array('--'); while (list($id, $name) = $cat_result->fetch_array(MYSQL_NUM)) { $options[$id] = $name; } // select $field = $form->addElement('select', $col->name, array()); $field->setLabel($translated_col . ':'); // load options $field->loadOptions($options); // add rules if ($table == 'defaults') { $field->addRule('required', parent::lang('class.AdministrationView#new_row#rule#requiredSelect')); $field->addRule('callback', parent::lang('class.AdministrationView#new_row#rule#checkSelect'), array($this, 'callback_check_select')); } } else { // check type if ($col->type == 252) { // textarea $field = $form->addElement('textarea', $col->name, array()); $field->setLabel($translated_col . ':'); // add rules $field->addRule('regex', parent::lang('class.AdministrationView#new_row#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('textarea.desc') . ']', $_SESSION['GC']->get_config('textarea.regexp')); // required if ($table == 'defaults') { $field->addRule('required', parent::lang('class.AdministrationView#new_row#rule#required')); } } elseif ($col->type == 253 || $col->type == 3) { // input $field = $form->addElement('text', $col->name, array()); $field->setLabel($translated_col . ':'); // add rules $field->addRule('regex', parent::lang('class.AdministrationView#new_row#rule#regexp.allowedChars') . ' [' . $_SESSION['GC']->get_config('textarea.desc') . ']', $_SESSION['GC']->get_config('textarea.regexp')); // required if ($table == 'defaults') { $field->addRule('required', parent::lang('class.AdministrationView#new_row#rule#required')); } } elseif ($col->type == 1) { // input $field = $form->addElement('checkbox', $col->name, array()); $field->setLabel($translated_col . ':'); } } } // increment field-counter $i++; } // submit-button $form->addSubmit('submit', array('value' => parent::lang('class.AdministrationView#new_row#form#submitButton'))); // validate if ($form->validate()) { // set output $return .= $this->p('class="edit_caption"', parent::lang('class.AdministrationView#new_row#caption#done')); // get data $data = $form->getValue(); // prepare statement $sql = "INSERT INTO {$table} "; $sql_field = "(id,"; $sql_value = " VALUES (NULL,"; foreach ($data as $field => $value) { // check translation $translated_field = ''; if (parent::lang('class.AdministrationView#tableRows#name#' . $field) != "class.AdministrationView#tableRows#name#{$field} not translated") { $translated_field = parent::lang('class.AdministrationView#tableRows#name#' . $field); } else { $translated_field = $field; } // check field if (substr($field, 0, 5) != '_qf__' && $field != 'submit') { // add fields to sql $sql_field .= "{$field},"; $sql_value .= "'{$value}',"; // add fields to output $return .= $this->p('', "{$translated_field} = '" . nl2br(htmlentities(utf8_decode($value))) . "'"); } } $sql_field = substr($sql_field, 0, -1) . ")"; $sql_value = substr($sql_value, 0, -1) . ")"; $sql .= $sql_field . $sql_value; // execute $result = $db->query($sql); // add table content $return .= $this->list_table_content($table, $this->get('page')); } else { $return .= $this->p('', parent::lang('class.AdministrationView#new_row#caption#edit')); $return .= $form->render($renderer); } // return return $return; }
protected function renderForm(HTML_QuickForm2 $form) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> /* Set up custom font and form width */ body { margin-left: 10px; font-family: Arial,sans-serif; font-size: small; } .quickform { min-width: 500px; max-width: 600px; width: 560px; } .quickform input.bigred {font-weight: bold; background: #FF6666;} .quickform input.flat {border-style: solid; border-width: 2px; border-color: #000000;} /* Use default styles included with the package */ <?php if ('@data_dir@' != '@' . 'data_dir@') { $filename = '@data_dir@/HTML_QuickForm2/quickform.css'; } else { $filename = dirname(dirname(dirname(__FILE__))) . '/data/quickform.css'; } readfile($filename); ?> </style> <title>HTML_QuickForm2 simple controller example</title> </head> <body> <?php $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setTemplateForId('tabs', '<div style="float: right;">{content}</div>'); echo $form->render($renderer); ?> </body> </html> <?php }
/** * user controles the actions for usersettings * * @return string the html-string of usersettings-page */ private function user() { // smarty-template $sUserPasswd = new JudoIntranetSmarty(); // prepare return $return = ''; // check login if ($_SESSION['user']->get_loggedin()) { // smarty $sUserPasswd->assign('pagecaption', parent::lang('class.MainView#user#caption#general') . ' ' . $_SESSION['user']->get_userinfo('name')); // check action if ($this->get('action') == 'passwd') { // smarty $sUserPasswd->assign('section', parent::lang('class.MainView#user#caption#passwd')); // prepare form $form = new HTML_QuickForm2('passwd', 'post', array('name' => 'passwd', 'action' => 'index.php?id=user&action=passwd')); // add elementgroup $passwd = $form->addElement('group', 'password', array()); // add fields $passwd1 = $passwd->addElement('password', 'password1', array()); $passwd2 = $passwd->addElement('password', 'password2', array()); // add label $passwd->setLabel(parent::lang('class.MainView#user#passwd#label') . ':'); // submit-button $form->addSubmit('submit', array('value' => parent::lang('class.MainView#user#passwd#submitButton'))); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.MainView#user#form#requiredNote')); // add rules $passwd->addRule('required', parent::lang('class.MainView#user#rule#required')); $passwd->addRule('callback', parent::lang('class.MainView#user#rule#checkPasswd'), array($this, 'callback_check_passwd')); // validate if ($form->validate()) { // get values $data = $form->getValue(); // get db-object $db = Db::newDb(); // prepare sql-statement $sql = "UPDATE user\n\t\t\t\t\t\t\tSET password='******'password']['password1']) . "'\n\t\t\t\t\t\t\tWHERE id=" . $_SESSION['user']->get_id(); // execute statement $result = $db->query($sql); // smarty message $sUserPasswd->assign('message', parent::lang('class.MainView#user#validate#passwdChanged')); } else { // smarty form and return $sUserPasswd->assign('form', $form->render($renderer)); } return $sUserPasswd->fetch('smarty.user.passwd.tpl'); } else { return 'default content'; } } else { // not authorized $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
protected function renderForm(HTML_QuickForm2 $form) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> /* Set up custom font and form width */ body { margin-left: 10px; font-family: Arial,sans-serif; font-size: small; } .quickform { min-width: 500px; max-width: 600px; width: 560px; } .separator { float: left; margin: 0.7em 0 0 0.1em; } /* Use default styles included with the package */ <?php if ('@data_dir@' != '@' . 'data_dir@') { $filename = '@data_dir@/HTML_QuickForm2/quickform.css'; } else { $filename = dirname(dirname(dirname(__FILE__))) . '/data/quickform.css'; } readfile($filename); ?> </style> <title>HTML_QuickForm2 basic elements example</title> </head> <body> <?php $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setElementTemplateForGroupId('nameGrp', 'html_quickform2_element', '<div class="element<qf:error> error</qf:error>"><qf:error><span class="error">{error}</span><br /></qf:error>{element}<br /><label for="{id}"><qf:required><span class="required">* </span></qf:required>{label}</label></div>'); $renderer->setTemplateForId('nameGrp', '<div class="row"><p class="label"><qf:required><span class="required">*</span></qf:required><qf:label><label>{label}</label></qf:label></p>{content}</div>'); echo $form->render($renderer); ?> </body> </html> <?php }