source: Dev/trunk/classes_old/SessionCreationTool.php @ 158

Last change on this file since 158 was 137, checked in by jkraaijeveld, 14 years ago

Added old classes

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