source: Dev/trunk/classes/SessionCreationTool.php @ 69

Last change on this file since 69 was 69, checked in by fpvanagthoven, 14 years ago

You can now delete anywhere from pipeline.

File size: 11.8 KB
Line 
1<?php
2
3/**
4 * Description of SessionCreationTool
5 *
6 * @author fpvanagthoven
7 */
8class SessionCreationTool {
9
10    private $session;
11    private $surveys;
12
13    public function __construct($session = null) {
14        $this->session = $session;
15
16        $this->init();
17
18        $this->javascript();
19        var_dump($session);
20        var_dump($_POST);
21        ?>
22
23        <div class="creation">
24            <form id="sessionCreationForm" action="" onsubmit="submitPipeline()" method="post">
25                <?php
26                $this->title();
27                $this->description();
28                $this->pipeline();
29                $this->surveysApplications();
30
31                $this->makeSessionButton();
32                ?>
33            </form>
34        </div>
35        <?php
36        $this->populatePipeline();
37    }
38
39    private function init() {
40        $this->surveys = Loader::loadSurveys();
41    }
42
43    private function javascript() {
44        ?>
45        <script type="text/javascript" src="js/creation.js"></script>
46        <script type="text/javascript">
47            var pipelineCount = 0;
48                                                                                                                                                                                                                                                                             
49            // =============================================================
50                                                                                                                                                                                                                                                                                                   
51            function addSurvey(surveyID) {
52                pipelineCount++;
53                                                                                                                                                                       
54                var pipeline = document.getElementById("pipeline");
55                var surveysList = document.getElementById("surveysList");
56                                                                                                                                                                                               
57                var entry = document.createElement("option");
58                                                                                                                                       
59                if (surveyID != null)
60                {
61                    entry.setAttribute("value", surveyID);
62                    entry.innerHTML = pipelineCount + ". " + surveysList.options.namedItem(surveyID).innerHTML;
63                }
64                else
65                {
66                    entry.setAttribute("value", surveysList.options[surveysList.selectedIndex].value);
67                                                                                                                                   
68                    entry.innerHTML = pipelineCount + ". " + surveysList.options[surveysList.selectedIndex].innerHTML;
69                                                                                                                                   
70                }
71                entry.style.backgroundColor = "#0090ac";
72                entry.name = pipelineCount + "s";
73                entry.entryType = "s";
74                                                                                                                                                                                       
75                pipeline.appendChild(entry);
76            }
77                                                                                                                                                                           
78            function addDashboard() {
79                pipelineCount++;
80                var pipeline = document.getElementById("pipeline");
81                                                                                                                                                                               
82                var entry = document.createElement("option");
83                entry.setAttribute("value", "dashboard");
84                entry.style.backgroundColor = "#555";
85                entry.style.color = "white";
86                entry.innerHTML = pipelineCount + ". " + "Dashboard";
87                entry.name = pipelineCount + "d";
88                entry.entryType = "d";
89                                                                                                                                                                               
90                pipeline.appendChild(entry);
91            }
92                           
93            function removeFromPipeline() {
94                var pipeline = document.getElementById("pipeline");
95                if (pipeline.selectedIndex != null)
96                {
97                    var index = pipeline.selectedIndex;
98                    pipeline.remove(index);
99                   
100                    for(var i = index; i < pipeline.length; i++)
101                        {
102                            var entry = pipeline.options[i];
103                            entry.name = "" + (i+1) + entry.entryType;
104                            var htmlStr = entry.innerHTML;
105                            var dotIndex = htmlStr.indexOf('.');
106                            entry.innerHTML = (i+1) + htmlStr.substr(dotIndex);
107                        }
108                    pipelineCount--;
109                }
110            }
111                                                                                                                                                                                             
112            function submitPipeline()
113            {
114                var form = document.getElementById("sessionCreationForm");
115                                                                                                                                                               
116                var pipeline = document.getElementById("pipeline").options;
117                                                                                                                                                                       
118                                                                                                                                                                       
119                for (var i = 0; i < pipeline.length; i++)
120                {
121                    var pipelineElem = document.createElement("input");
122                    pipelineElem.name = pipeline[i].name;
123                    pipelineElem.value = pipeline[i].value;
124                    pipelineElem.type = "hidden";
125                                                                                                                                                                   
126                    form.appendChild(pipelineElem);
127                }
128                                                                                                                                                       
129                var count = document.createElement("input");
130                count.name = "pipelineCount";
131                count.value = pipelineCount;
132                count.type = "hidden";
133                                                                                                                                                       
134                form.appendChild(count);
135            }
136        </script>
137        <?php
138    }
139
140    private function title() {
141        if (isset($this->session->title))
142            $value = $this->session->title;
143        else
144            $value = 'Untitled Session';
145        ?>
146        <input type="text" id="sessionTitle" class="titleBox" name="sessionTitle" value="<?php echo $value; ?>" onblur="handleBlur(this)" onfocus="handleFocus(this)" />
147        <?php
148    }
149
150    private function description() {
151        if (isset($this->session->description))
152            $value = $this->session->description;
153        else
154            $value = 'Write a description for this session here.';
155        ?>
156        <textarea id="sessionDescription" class="descriptionBox" name="sessionDescription" onblur="handleBlur(this)" onfocus="handleFocus(this)"><?php echo $value; ?></textarea>
157        <?php
158    }
159
160    private function pipeline() {
161        ?>
162        <div id="pipelineWrapper">
163            <h2 class="pipelineHead">Pipeline</h2>
164            <?php $this->pipelineSelect(); ?>
165            <div id="pipelineOptions">
166                <?php
167                $this->addDashboardToPipelineButton();
168                $this->removeFromPipelineButton();
169                ?>
170            </div>
171        </div>
172        <?php
173    }
174
175    private function surveysApplications() {
176        ?>
177        <div id="surveysApplicationsWrapper">
178            <div id="surveysForPipelineWrapper">
179                <h2 class="pipelineHead">Surveys</h2>
180                <?php
181                $this->surveysSelect();
182                $this->addSurveyToPipelineButton();
183                ?>
184            </div>
185            <div id="applicationsForPipelineWrapper">
186                <h2 class="pipelineHead">Applications</h2>
187                <?php
188                $this->applicationsSelect();
189                $this->addApplicationToPipelineButton();
190                ?>
191            </div>
192        </div>
193        <?php
194    }
195
196    private function pipelineSelect() {
197        ?>
198        <select id="pipeline" size="1000"></select>
199        <?php
200    }
201
202    private function surveysSelect() {
203        ?>
204        <select id="surveysList" size="5" class="width100p">
205            <?php
206            foreach ($this->surveys as $survey) {
207                ?>
208                <option name="<?php echo $survey->id; ?>" value="<?php echo $survey->id; ?>">
209                    <?php echo $survey->title; ?>
210                </option>
211                <?php
212            }
213            ?>
214        </select>
215        <?php
216    }
217
218    private function applicationsSelect() {
219        ?>
220        <select id="applicationsList" size="5" class="width100p">
221        </select>
222        <?php
223    }
224
225    private function addSurveyToPipelineButton() {
226        ?>
227        <input type="button" id="surveyToPipeline" class="surveyButton pipelineButton leftAlign leftPadding1" value="<=====" onclick="addSurvey()"/>
228        <?php
229    }
230
231    private function addApplicationToPipelineButton() {
232        ?>
233        <input type="button" class="surveyButton pipelineButton leftAlign leftPadding1" value="<=====" />
234        <?php
235    }
236
237    private function addDashboardToPipelineButton() {
238        ?>
239        <input type="button" class="surveyButton pipelineButton leftAlign leftPadding1" value="+ Dashboard" onclick="addDashboard()"/>
240        <?php
241    }
242
243    private function removeFromPipelineButton() {
244        ?>
245        <input type="button" class="surveyButton" value="x" onclick="removeFromPipeline()"/>
246        <?php
247    }
248
249    private function makeSessionButton() {
250        ?>
251        <input type="submit" id="makeSessionButton" class="topRight surveyButton" value="Make session" />
252        <?php
253    }
254
255    private function populatePipeline() {
256
257        if (isset($this->session)) {
258            for ($i = 1; $i < $this->session->count + 1; $i++) {
259                if (isset($this->session->pipeline[$i . 's'])) {
260                    ?>
261                    <script type="text/javascript">
262                        addSurvey(<?php echo "'" . $this->session->pipeline[$i . 's'] . "'"; ?>);
263                    </script>
264                    <?php
265                } else if (isset($this->session->pipeline[$i . 'd'])) {
266                    ?>
267                    <script type="text/javascript">
268                        addDashboard();
269                    </script>
270                    <?php
271                }
272            }
273        }
274    }
275
276}
277?>
Note: See TracBrowser for help on using the repository browser.