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

Last change on this file since 173 was 169, checked in by fpvanagthoven, 13 years ago

Enkele bugfixes in sequencerScripts.js

  • updateSequencer werkt nu ook als er meer objecten in seqContent staan dan de bedoeling is (bijvoorbeeld na een deleteStep)
  • updateSequencer "remove text node" operatie aangepast om alleen te triggeren als er een even aantal childNodes in seqContent zitten. Bij goede werking kan dit nooit. Voorheen verwijderde hij ook goeie div's als die toevallig de eerste childNode waren.

->>>>>Toekomstige aanpassing: checken of seqContent.childNodes[0] ook daadwerkelijk een text node is. Internet deed het niet toen ik deze code schreef, dus kon hier de syntax niet voor opzoeken.
deleteStep toegevoegd.

Met andere woorden: alle functies van de sequencer werken nu!

File size: 6.5 KB
Line 
1<?php
2/*
3 * To change this template, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7/**
8 * A visual interface object for editing and viewing a session's pipeline.
9 *
10 * @author Tschipper
11 */
12class PipelineSequencer {
13
14    // properties
15    private $loadedSession;
16    private $selectedStep;
17    private $dbi;
18
19    public function __construct() {
20        $this->dbi = new DatabaseInterface();
21    }
22
23    public function init() {
24        $stringPipeline = "";
25        $stringPipelineType = "";
26        $stringPipelineUpdated = "";
27        $numberOfSteps = 0;
28
29        if (is_array($this->loadedSession->pipeline)) {
30            foreach ($this->loadedSession->pipeline as $object) {
31                $stringPipeline .= "$object->uid,";
32                $stringPipelineType .= get_class($object) . ",";
33                $stringPipelineUpdated .= "0,";
34                $numberOfSteps++;
35            }
36        } else {
37            $stringPipeline = $this->loadedSession->pipeline;
38            $stringPipelineType = $_POST['pipelineTypes'];
39            $stringPipelineUpdated = $_POST['pipelineUpdatedField'];
40        }
41        ?>
42        <br /><form name="sequencerForm" action="pipelineEditor.php" method="post">
43            <fieldset id="sequencer">
44                <div class="fieldsetTitle">Name: <?php echo $this->loadedSession->title; ?> </div>
45
46                <div id="seqContent">
47                    <div id="seqContentWrapper"></div>
48                </div>
49
50                <div id="controls">
51                    <input type="button" id="moveSelectedL" value="< Move" class="surveyButton"  onClick="moveStep(-1);" />
52                    <input type="button" id="moveSelectedR" value="Move >" class="surveyButton"  onClick="moveStep(1);" />
53                    <input type="button" id="editSelected" value="Edit step" class="surveyButton" onClick="editStep();" />
54                    <input type="button" id="deleteSelected" value="Delete step" class="surveyButton" onClick="deleteStep();" />
55                    <input type="submit" id ="clearPipeline" name="clearPipeline" value="Clear pipeline" class="surveyButton dis" disabled="true"/>
56                    <input type="checkbox" id="confirmClear" name="confirmClear" onChange="IsCheckEnabled(this, document.getElementById('clearPipeline'));" />Really clear?
57                    <input type="button" value="debug_save" onClick="savePipeline(true);" />
58                </div>
59                <div id="hiddenInputs">
60                    <input type="hidden" name="selectedStep" id="selectedStepField" value="" />
61                    <input type="hidden" name="pipelineString" id="pipelineStringField" value="<?php echo $stringPipeline; ?>" />
62                    <input type="hidden" name="pipelineTypes" id="pipelineTypeField" value="<?php echo $stringPipelineType; ?>" />
63                    <input type="hidden" name="pipelineUpDated" id="pipelineUpdatedField" value="<?php echo $stringPipelineUpdated; ?>" />
64                    <input type="hidden" name="numSteps" id="numSteps" value="<?php echo $numberOfSteps; ?>" />
65                    <input type="hidden" name="session" id="sessionField" value="<?php echo $this->loadedSession->uid; ?>" />
66                </div>
67            </fieldset>
68        </form>
69        <?php
70    }
71
72   
73
74    public function Javascript() {
75        ?>
76        <script type="text/javascript" src="js/sequencerScripts.js"></script>
77        <script type="text/javascript" src="js/jquery.js"></script>
78        <script type="text/javascript">
79            $(document).ready(function() {
80                updateSequencer(true);      // true means it is the first refresh of the page.
81            });
82        </script>
83        <?php
84    }
85
86    public function LoadSession($currentSession) {   // Initialize variables on page load.
87        if (!isset($currentSession)) {
88            redirect("selectSession.php");
89        }
90        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
91            $sessionResults = $this->dbi->get("Session", array("uid" => $currentSession));
92
93            if (count($sessionResults) > 0) {
94                $_SESSION['localSessionCopy'] = $sessionResults[0];
95                unset($_SESSION['updateNeeded']);
96            } else {
97                die("No session with that UID found!");
98            }
99        }
100
101        if (isset($_SESSION['localSessionCopy']) && !empty($_SESSION['localSessionCopy'])) {
102
103            $this->loadedSession = $_SESSION['localSessionCopy'];
104            unset($_SESSION['updateNeeded']);
105        }
106    }
107
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                $this->MoveStep($_POST['selectedStep'], -1);
118            }
119        }
120
121        if (isset($_POST['moveSelectedRight'])) {
122            if (isset($_POST['selectedStep']) && !empty($_POST['selectedStep'])) {
123                $this->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] = $temp;
154                break;
155            }
156        }
157
158        $this->loadedSession = $newSession;
159        redirect("pipelineEditor.php");
160    }
161
162}
163?>
Note: See TracBrowser for help on using the repository browser.