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

Last change on this file since 85 was 83, checked in by basvannuland, 14 years ago

start with answer saving

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