source: Dev/trunk/classes/pipelineSequencer.php @ 163

Last change on this file since 163 was 163, checked in by fpvanagthoven, 13 years ago
  • Basically alles gefixt om te werken met een local copy van de session, opgeslagen in $_SESSIONlocalSessionCopy?.
  • Flag $_SESSIONupdateNeeded? toegevoegd om aan te geven wanneer er een update uit de database nodig is in plaats van gewoon verder werken met de local copy.
  • '123'/'456' placeholder routine weggehaald uit returnStep.php
  • CreateObject? doet nog niets, maar dat komt volgende week! (AJAX-aangestuurd object creation, met als doel: pipeline editing zonder constante page refreshes).
File size: 6.2 KB
RevLine 
[144]1<?php
2/*
3 * To change this template, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7/**
[151]8 * A visual interface object for editing and viewing a session's pipeline.
[144]9 *
[151]10 * @author Tschipper
[144]11 */
[146]12class PipelineSequencer {
[144]13
14    // properties
[152]15    private $loadedSession;
[144]16    private $selectedStep;
[163]17    private $dbi;
[144]18
[152]19    public function __construct() {
[163]20        $this->dbi = new DatabaseInterface();
[146]21    }
[144]22
[150]23    public function init() {
[153]24        $stringPipeline = "";
[163]25        if (is_array($this->loadedSession->pipeline)) {
26            foreach ($this->loadedSession->pipeline as $object) {
27                $stringPipeline .= "$object->uid,";
28            }
29            $stringPipeline = rtrim($stringPipeline, ",");
30        } else {
[156]31            $stringPipeline = $this->loadedSession->pipeline;
32        }
[144]33        ?>
[154]34        <br /><form name="sequencerForm" action="pipelineEditor.php" method="post">
[151]35            <fieldset id="sequencer">
[152]36                <div class="title">Name: <?php echo $this->loadedSession->title; ?> </div>
[144]37
[154]38                <div id="seqContent"></div>
[153]39
[144]40                <div id="controls">
[156]41                    <input type="submit" id="moveSelectedLeft" name="moveSelectedLeft" value="< Move" class="surveyButton" />
42                    <input type="submit" id="moveSelectedRight" name="moveSelectedRight" value="Move >" class="surveyButton" />
43                    <input type="submit" id="editSelected" name="editSelected" value="Edit step" class="surveyButton" />
44                    <input type="submit" id="deleteSelected" name="deleteSelected" value="Delete step" class="surveyButton" />
45                    <input type="submit" id ="clearPipeline" name="clearPipeline" value="Clear pipeline" class="surveyButton dis" disabled="true"/>
46                    <input type="checkbox" id="confirmClear" name="confirmClear" onChange="IsCheckEnabled(this, document.getElementById('clearPipeline'));" />Really clear?
[144]47                </div>
[154]48                <div id="hiddenInputs">
[153]49                    <input type="hidden" name="selectedStep" id="selectedStepField" value="" />
[155]50                    <!-- <input type="hidden" name="pipelineString" id="pipelineStringField" value="123,456" /> -->
51                    <input type="hidden" name="pipelineString" id="pipelineStringField" value="<?php echo $stringPipeline; ?>" />
[153]52                </div>
[144]53            </fieldset>
54        </form>
55        <?php
56    }
57
[146]58    public function DrawSteps() {
[153]59        // Use AJAX to draw visual representations of step objects in a pipeline
60        // <TODO> Implement parameters such as screen size in the drawing of objects </TODO>
61        ?>
62        <script type="text/javascript">
63            drawSteps();
64        </script>
65
66
67        <?php
[146]68    }
69
[153]70    public function Javascript() {
71        $pipelineString = "ERROR";
[154]72
[153]73        echo "<!--$pipelineString-->";
[150]74        ?>
[152]75        <script type="text/javascript" src="js/sequencerScripts.js"></script>
[153]76        <script type="text/javascript" src="js/jquery.js"></script>
77        <script type="text/javascript">
78            $(document).ready(function() {
79                drawSteps();
80            });
81        </script>
[150]82        <?php
83    }
84
[163]85    public function LoadSession($currentSession) {   // Initialize variables on page load.
[152]86        if (!isset($currentSession)) {
87            redirect("selectSession.php");
[151]88        }
[163]89        if (isset($_SESSION['updateNeeded'])) {    // user has performed an operation that flags session to be reloaded from DB, or is first load of page for that session
90            $sessionResults = $this->dbi->get("Session", array("uid" => $currentSession));
91           
92            if (count($sessionResults) > 0) {
93                $_SESSION['localSessionCopy'] = $sessionResults[0];
94            } else {
95                die("No session with that UID found!");
96            }
[152]97        }
[163]98            var_dump($_SESSION['localSessionCopy']);   
99       
100        if (isset($_SESSION['localSessionCopy']) && !empty($_SESSION['localSessionCopy'])) {
101           
102            $this->loadedSession = $_SESSION['localSessionCopy'];
103            unset($_SESSION['updateNeeded']);
104        }
105       
[151]106    }
107
[154]108    public function HandlePostData() {
109        if (isset($_POST['editSelected'])) {
110            if (isset($_POST['selectedStep']) && !empty($_POST['selectedStep'])) {
111                redirect("editredirect.php");
112            }
113        }
114
115        if (isset($_POST['moveSelectedLeft'])) {
116            if (isset($_POST['selectedStep']) && !empty($_POST['selectedStep'])) {
117                MoveStep($_POST['selectedStep'], -1);
118            }
119        }
120
121        if (isset($_POST['moveSelectedRight'])) {
122            if (isset($_POST['selectedStep']) && !empty($_POST['selectedStep'])) {
123                MoveStep($_POST['selectedStep'], 1);
124            }
125        }
126
127        if (isset($_POST['objectToCreate']) && !empty($_POST['objectToCreate'])) {
128            switch (strtolower($_POST['objectToCreate'])) {
129                case "survey":
130                    redirect("createsurvey.php");
131                    break;
132                case "application":
133                    redirect("createapplication.php");
134                    break;
135                case "dashboard":
136                    redirect("createdashboard.php");
137                    break;
138                default:
139                    // Er is iets fout gegaan, want er is geen valid type meegegeven!
140                    break;
141            }
142        }
143    }
144
145    // Dit is een pure php versie. Deze slaat nog niet op in de Database, en reageert nog niet op
146    public function MoveStep($uid, $direction) {
147        $newSession = $this->loadedSession;
148
149        for ($i = 0; $i < count($newSession->pipeline); $i++) {
150            if ($newSession->pipeline[i]->uid == $uid) {
151                $temp = $newSession->pipeline[i];
152                $newSession->pipeline[i] = $newSession->pipeline[i + $direction];
153                $newSession->pipeline[i + $direction] = $newSession->pipeline[i];
154                break;
155            }
156        }
157
158        $this->loadedSession = $newSession;
159    }
160
[163]161    public function StoreToDb() {
162        if (isset($_SESSION['localSessionCopy']) && !empty($_SESSION['localSessionCopy'])) {
163            $this->dbi->set($_SESSION['localSessionCopy']);
164            unset($_SESSION['updateNeeded']);
165        }
166    }
167
[144]168}
169?>
Note: See TracBrowser for help on using the repository browser.