public function SmilesWidget($element_id, $smiles_per_row = 4) { parent::__construct(); $vb = new ViewBuilder("form/smilesWidget.html"); // Genera l'HTML delle righe degli smiles qui $smiles_table = ""; $c = 0; foreach (Smiles::GetList() as $smile => $image) { if ($c == 0) { $smiles_table .= "<tr>"; } $smiles_table .= sprintf('<td onclick="javascript:Text.AppendTo(\'%s\', \'%s\');" data-hide="smiles-list-%s"> <img src="/images/smiles/%s" alt="%s" /> </td>', $element_id, $smile, $this->widget_id, $image, $smile); // Dividi gli smiles in righe $c = ($c + 1) % $smiles_per_row; if ($c == 0) { $smiles_table .= "</tr>"; } } $vb->addValue("widget_id", $this->widget_id); $vb->addValue("smiles_table", $smiles_table); $vb->addValue("element_id", $element_id); $this->html = $vb->render(); }
public function BbButtonWidget($element_id, $features = "code|quote|g|c|s") { parent::__construct(); $vb = new ViewBuilder("form/bbButtonWidget.html"); $features = explode("|", $features); foreach ($features as $feature) { $vb->addValue($feature, true); } $vb->addValue("widget_id", $this->widget_id); $vb->addValue("element_id", $element_id); $this->html = $vb->render(); }
function testPaginationView() { // 10 elementi, 10 per pagina (una sola pagina, quindi paginatore e' vuoto) $p = new Pagination(10, 10, 1); $view = new ViewBuilder("pagination/default.html", array('current_page' => 1, 'pages' => array(array('page' => 1, 'link' => '1')))); $this->assertTrue("" == $p->getNavigator("default.html", "#PAGE#")); // 11 elementi, 10 per pagina (pagina 1) $p = new Pagination(11, 10, 1); $view = new ViewBuilder("pagination/default.html", array('current_page' => 1, 'pages' => array(array('page' => 1, 'link' => '1'), array('page' => 2, 'link' => '2')))); $this->assertTrue($view->render() == $p->getNavigator("default.html", "#PAGE#")); // 11 elementi, 10 per pagina (pagina 2) $p = new Pagination(11, 10, 2); $view = new ViewBuilder("pagination/default.html", array('current_page' => 2, 'pages' => array(array('page' => 1, 'link' => '1'), array('page' => 2, 'link' => '2')))); $this->assertTrue($view->render() == $p->getNavigator("default.html", "#PAGE#")); }
public function getNavigator($view = "default.html", $page_link = "javascript:goToPage(#PAGE#);") { $num_pages = self::getPagesCount(); // Non renderizzare il paginatore se c'e' una sola pagina if ($num_pages > 1) { $builder = new ViewBuilder("pagination/" . $view); $array = array('current_page' => self::getCurrentPage(), 'pages' => array()); for ($i = 1; $i <= $num_pages; $i++) { $array['pages'][] = array('page' => $i, 'link' => str_replace("#PAGE#", $i, $page_link)); } $builder->setValues($array); return $builder->render(); } else { return ""; } }
function renderPollResults() { $view_builder = new ViewBuilder("forum/poll_results.html"); $view_builder->setValues($this->getPollData()); return $view_builder->render(); }
public function render() { $vb = new ViewBuilder("form/form.html"); // Calcola i campi di validazione // da passare alla view $all_rules = array(); for ($i = 0; $i < count($this->fields); $i++) { if (!isset($this->fields[$i]['value'])) { $this->fields[$i]['value'] = ""; } if (!isset($this->fields[$i]['label'])) { $this->fields[$i]['label'] = ""; } if (!isset($this->fields[$i]['send'])) { $this->fields[$i]['send'] = true; } $attributes = ""; // Attributi' da aggiungere ad ogni campo $attributes .= ' data-reset-value="' . $this->fields[$i]['value'] . '"'; // valore di default $attributes .= ' data-formfield '; $attributes .= ' id="' . $this->getDOMId($this->fields[$i]["id"]) . '" '; $attributes .= ' name="' . $this->fields[$i]["id"] . '" '; if (!$this->fields[$i]['send']) { $attributes .= ' data-dontsend="true" '; } // Attributi specificati dall'utente if (isset($this->fields[$i]['attrs'])) { $attributes .= ' ' . $this->fields[$i]['attrs'] . ' '; } if (isset($this->fields[$i]['validation'])) { // Una sola regola (stringa)? if (!is_array($this->fields[$i]['validation'])) { // Wrappa $this->fields[$i]['validation'] = array($this->fields[$i]['validation']); } $rules = array(); foreach ($this->fields[$i]['validation'] as $validation_rule) { $parts = explode(",", $validation_rule); // Trim for ($j = 0; $j < count($parts); $j++) { $parts[$j] = trim($parts[$j]); } // Le regole di validazione devono includere l'ID dell'elemento // siccome non vogliamo fare ripetizioni, (l'ID e' gia' conosciuto) // lo aggiungiamo dinamicamente // "[if:FIELDNAME=VALUE,]REQUIREMENT,fieldname[,fieldname2[,fieldname3,date_flag]],error message" if (count($parts) >= 2) { $id_offset = 1; if (strpos($parts[0], "if:") === 0) { $id_offset = 2; } array_splice($parts, $id_offset, 0, array($this->fields[$i]['id'])); } $rules[] = join(",", $parts); } // Le regole verranno aggiunte assieme al campo tramite data-validate $attributes .= ' data-validate="' . join("|", $rules) . '" '; // Tieni traccia di tutte le regole per l'auto validazione lato server // ignorando le regole per i campi che non verranno inviati if ($this->fields[$i]['send']) { $all_rules = array_merge($all_rules, $rules); } } // Ogni elemento ha questi tag aggiuntivi $this->fields[$i]['formbuilder_attrs'] = $attributes; } // Esporta tutti i membri di questa classe alla view $members = array(); foreach ($this as $key => $value) { $members[$key] = $value; } $vb->setValues($members); // Calcola alcuni campi $vb->addValue("control_buttons_count", count($this->control_buttons)); $vb->addValue("widgets_count", count($this->widgets)); // Imposta l'auto validazione se necessario if ($this->serverside_autovalidate) { $av = new AutoValidator($this->form_id); $av->setRules($all_rules); $vb->addValue("av_token_id", AutoValidator::TOKEN_ID); $vb->addValue("av_token", $av->getToken()); } return $vb->render(); }
public function render($view_file, $values = array()) { // TODO: vedere se costruire un'oggetto comporta un rallentamento troppo grande // oppure se bisognerebbe trovare una soluzione piu' veloce $view_builder = new ViewBuilder($view_file); $view_builder->setValues(array_merge($this->values, $values)); return $view_builder->render(); }