Example #1
0
    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#"));
 }
Example #4
0
 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 "";
     }
 }
Example #5
0
 function renderPollResults()
 {
     $view_builder = new ViewBuilder("forum/poll_results.html");
     $view_builder->setValues($this->getPollData());
     return $view_builder->render();
 }
Example #6
0
 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();
 }
 protected function buildView($parsed)
 {
     $builder = new ViewBuilder();
     return $builder->build($parsed);
 }
Example #8
0
 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();
 }