Ja va el càlcul.
authorviric@mandarina
Thu, 25 Dec 2008 21:39:19 +0000
changeset 1 f08a11b5d207
parent 0 3773f4677c40
child 2 7c6c888b2fed
Ja va el càlcul.
controllers/opiniarbo.php
views/arbo.php
views/arbo_end.php
views/arbo_start.php
--- a/controllers/opiniarbo.php	Thu Dec 25 11:25:58 2008 +0000
+++ b/controllers/opiniarbo.php	Thu Dec 25 21:39:19 2008 +0000
@@ -2,13 +2,124 @@
 
 class Opiniarbo extends Controller {
 
-	function index()
+	function Opiniarbo()
     {
+        parent::Controller();
+		$this->load->library('form_validation');
         $this->load->library('aulib');
 		$this->load->library('parser');
 		$this->load->helper('form');
+		$this->load->model('opiniarbo_model');
+    }
 
-        $data['logindata'] = $this->aulib->getLoginLink();
-        $this->parser->parse('arbo', $data);
+	function index()
+    {
+        $mainassert = $this->uri->segment(3, -1);
+        $parserdata['logindata'] = $this->aulib->getLoginLink();
+        if ($mainassert == -1)
+        {
+            // Managing heads
+            $this->form_validation->set_rules('text', 'Aserta teksto', 'required|min_length[1]');
+            $this->form_validation->set_rules('value', 'Valoro', 'callback__value_check');
+            $this->form_validation->set_rules('context', 'Context', 'required|min_length[0]');
+
+            if ($this->form_validation->run())
+            {
+                $dbdata['assert'] = $this->input->post('text');
+                $dbdata['value'] = $this->input->post('value')/20.+0.5;
+                $dbdata['context'] = $this->input->post('context');
+                $this->opiniarbo_model->insert_assertion($this->aulib->getSessionId(),
+                    $dbdata);
+                $this->opiniarbo_model->recalculate();
+            }
+            $parserdata['asserts'] = $this->opiniarbo_model->get_my_heads($this->aulib->getSessionId());
+            foreach($parserdata['asserts'] as &$row)
+            {
+                if ($row->value != NULL)
+                    $row->value = ($row->value - 0.5) * 20;
+                if ($row->calc_value != NULL)
+                    $row->calc_value = $row->calc_value * 10;
+            }
+            $this->parser->parse('arbo_heads', $parserdata);
+        }
+        else
+        {
+            // Assert chosen
+            $parserdata['mainassert'] = $mainassert;
+
+            $this->form_validation->set_rules('text', 'Aserta teksto', 'required|min_length[1]');
+            $this->form_validation->set_rules('value', 'Valoro', 'callback__value_check');
+            $this->form_validation->set_rules('influence', 'Influo', 'callback__influence_check');
+            $this->form_validation->set_rules('context', 'Context', 'required|min_length[0]');
+
+            if ($this->form_validation->run())
+            {
+                $dbdata['assert'] = $this->input->post('text');
+                $dbdata['value'] = $this->input->post('value')/20. + 0.5;
+                $dbdata['influence'] = $this->input->post('influence')/10.;
+                $dbdata['context'] = $this->input->post('context');
+                $dbdata['parent'] = $mainassert;
+                $this->opiniarbo_model->insert_assertion($this->aulib->getSessionId(),
+                    $dbdata);
+                $this->opiniarbo_model->recalculate();
+            }
+            $assertdata = $this->opiniarbo_model->get_assert($mainassert, $this->aulib->getSessionId());
+            $parserdata['maintext'] = $assertdata['assert'];
+            $parserdata['mainvalue'] = $assertdata['value'];
+            if ($parserdata['mainvalue'] != NULL)
+                $parserdata['mainvalue'] = ($parserdata['mainvalue'] - 0.5)*20;
+            $parserdata['maininfluence'] = $assertdata['influence'];
+            if ($parserdata['maininfluence'] != NULL)
+                $parserdata['maininfluence'] = $parserdata['maininfluence'] * 10;
+            $parserdata['maincontext'] = $assertdata['context'];
+            $parserdata['maincalc_value'] = $assertdata['calc_value'];
+            if ($parserdata['maincalc_value'] != NULL)
+                $parserdata['maincalc_value'] = ($parserdata['maincalc_value'] - 0.5)*20;
+
+            $parserdata['subasserts'] = $this->opiniarbo_model->get_subasserts($mainassert, $this->aulib->getSessionId());
+            foreach($parserdata['subasserts'] as &$row)
+            {
+                if ($row['value'] != NULL)
+                    $row['value'] = ($row['value'] - 0.5) * 20;
+                if ($row['influence'] != NULL)
+                    $row['influence'] = $row['influence'] * 10;
+                if ($row['calc_value'] != NULL)
+                    $row['calc_value'] = ($row['calc_value'] - 0.5)*20;
+            }
+
+            $parserdata['preasserts'] = $this->opiniarbo_model->get_preasserts($mainassert, $this->aulib->getSessionId());
+            foreach($parserdata['preasserts'] as &$row)
+            {
+                if ($row['value'] != NULL)
+                    $row['value'] = ($row['value'] - 0.5) * 20;
+                if ($row['influence'] != NULL)
+                    $row['influence'] = $row['influence'] * 10;
+                if ($row['calc_value'] != NULL)
+                    $row['calc_value'] = ($row['calc_value'] - 0.5)*20;
+            }
+            $this->parser->parse('arbo', $parserdata);
+        }
+    }
+
+    function recalculate()
+    {
+        $this->opiniarbo_model->recalculate();
+        echo "OK";
+    }
+    
+    function _value_check($str)
+    {
+        if (strlen($str) > 0 &&  $str <= 10.0 && $str >= -10.0)
+            return TRUE;
+        $this->form_validation->set_message("_value_check", "Skribu valoron inter -10 kaj 10");
+        return FALSE;
+    }
+
+    function _influence_check($str)
+    {
+        if (strlen($str) > 0 &&  $str <= 10.0 && $str >= -10.0)
+            return TRUE;
+        $this->form_validation->set_message("_influence_check", "Skribu influon inter -10 kaj 10");
+        return FALSE;
     }
 }
--- a/views/arbo.php	Thu Dec 25 11:25:58 2008 +0000
+++ b/views/arbo.php	Thu Dec 25 21:39:19 2008 +0000
@@ -2,6 +2,7 @@
 <head>
 <title>Opiniarbo</title>
 <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
+<meta http-equiv="cache-control" content="no-cache">
 
 <style type="text/css">
 
@@ -52,18 +53,22 @@
 
 <h2>Antaŭasertoj</h2>
 
+<td><?php echo anchor('opiniarbo/index/', 'Ĉiuj bazaj asertoj'); ?>
+
 <table border=1>
 <tr>
+<th>Id
 <th>Valoro
 <th>Influo
 <th>Kalkulita
 <th>Teksto
 {preasserts}
 <tr>
+<td>{id}
 <td>{value}
 <td>{influence}
-<td>{calculation}
-<td>{text}
+<td>{calc_value}
+<td><?php echo anchor('opiniarbo/index/{id}', '{assert}'); ?>
 {/preasserts}
 </table>
 
@@ -71,40 +76,42 @@
 
 <table border=1>
 <tr>
+<th>Id
 <th>Valoro
 <th>Influo
 <th>Kalkulita
 <th>Aserto
-{preasserts}
 <tr>
-<td>{value}
-<td>{influence}
-<td>{calculation}
-<td>{assert}
-{/preasserts}
+<td>{mainassert}
+<td>{mainvalue}
+<td>{maininfluence}
+<td>{maincalc_value}
+<td>{maintext}
 </table>
 
 <h3>Kunteksto</h3>
-<p>{context}</p>
+<p>{maincontext}</p>
 
 <h2>Subasertoj</h2>
 
 <table border=1>
 <tr>
+<th>Id
 <th>Valoro
 <th>Influo
 <th>Kalkulita
 <th>Aserto
 <th>Ŝanĝi
 {subasserts}
-<?php form_open('opiniarbo/index'); ?>
+<?php form_open('opiniarbo/index/{mainassert}'); ?>
 <input type="hidden" name="mainassert" id="mainassert" value="{parent}">
 <input type="hidden" name="id" id="id" value="{id}">
 <tr>
+<td>{id}
 <td><input type="text" name="value" id="value" value="{value}" maxlength="5" size="3" />
 <td><input type="text" name="influence" id="influence" value="{influence}" maxlength="5" size="3" />
-<td>{calculation}
-<td>{assert}
+<td>{calc_value}
+<td><?php echo anchor('opiniarbo/index/{id}', '{assert}'); ?>
 <td><input type="submit" name="modify" value="Ŝanĝi"/>
 </form>
 {/subasserts}
@@ -112,7 +119,9 @@
 
 <h2>Nova subaserto</h2>
 
-<?php form_open('opiniarbo/index'); ?>
+<?php echo validation_errors(); ?>
+
+<?php echo form_open('opiniarbo/index/{mainassert}'); ?>
 <input type="hidden" name="mainassert" id="mainassert" value="{parent}">
 <ul>
 <li>Aserto: <input type="text" name="text" id="text" maxlength="500" size="100" />
@@ -123,7 +132,7 @@
 <h3>Kunteksto</h3>
 <p><textarea rows="10" cols="50" name="context" id="context"></textarea></p>
 
-<p><input type="submit" name="modify" value="Ŝanĝi"/></p>
+<p><input type="submit" name="modify" value="Aldoni"/></p>
 </form>
 
 <p><br />Page rendered in {elapsed_time} seconds</p>
--- a/views/arbo_end.php	Thu Dec 25 11:25:58 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<p><br />Page rendered in {elapsed_time} seconds</p>
-
-</body>
-</html>
--- a/views/arbo_start.php	Thu Dec 25 11:25:58 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-<html>
-<head>
-<title>Opiniarbo</title>
-
-<style type="text/css">
-
-body {
- background-color: #fff;
- margin: 40px;
- font-family: Lucida Grande, Verdana, Sans-serif;
- font-size: 14px;
- color: #4F5155;
-}
-
-a {
- color: #003399;
- background-color: transparent;
- font-weight: normal;
-}
-
-h1 {
- color: #444;
- background-color: transparent;
- border-bottom: 1px solid #D0D0D0;
- font-size: 16px;
- font-weight: bold;
- margin: 24px 0 2px 0;
- padding: 5px 0 6px 0;
-}
-
-code {
- font-family: Monaco, Verdana, Sans-serif;
- font-size: 12px;
- background-color: #f9f9f9;
- border: 1px solid #D0D0D0;
- color: #002166;
- display: block;
- margin: 14px 0 14px 0;
- padding: 12px 10px 12px 10px;
-}
-
-</style>
-</head>
-<body>
-
-<h1>Opiniarbo</h1>
-
-<h2>Uzantoj</h2>