Changes in Dev/trunk/classes/SurveyCreationTool.php [30:20]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk/classes/SurveyCreationTool.php
r30 r20 9 9 class SurveyCreationTool { 10 10 11 private $survey; 12 private $timeStamp; 13 14 public function __construct($survey = null, $timeStamp = null) { 15 $this->survey = $survey; 16 $this->timeStamp = $timeStamp; 17 18 if( isset($this->survey->id)) 19 SurveyCreationTool::javascript($this->survey->id); 20 else 21 SurveyCreationTool::javascript(); 22 ?> 23 24 <div id="surveyCreation"><form id="survey" action="submitsurvey.php" method="post"> 11 public function __construct() { 12 SurveyCreationTool::javascript(); 13 ?> 14 15 <div id="surveyCreation"><form action="submitsurvey.php" method="post"> 25 16 <?php 26 $this->surveyHead(); 27 $this->questionCreationForm(); 17 SurveyCreationTool::titleBox(); 18 SurveyCreationTool::descriptionBox(); 19 SurveyCreationTool::questionCreationForm(); 28 20 SurveyCreationTool::addQuestionButton(); 29 21 SurveyCreationTool::removeLastQuestionButton(); … … 33 25 } 34 26 35 private static function javascript( $id = null) {27 private static function javascript() { 36 28 ?> 37 29 <script type="text/javascript"> 38 /* autosave every 3 minutes */ 39 setTimeout("save('<?php echo $id; ?>')", 180000); 40 41 var questionCount = 1; 42 43 function getNewQuestion(title, description) 44 { 45 if (title != null) 46 var title = title; 47 else 48 var title = 'Untitled Question'; 49 50 if (description != null) 51 var description = description; 52 else 53 var description = 'Write a question description here.'; 54 30 var questionCount = 1; 31 32 function getNewQuestion() 33 { 55 34 var questionDiv = document.createElement("div"); 56 35 var htmlStr = … … 59 38 "<th>Question " + questionCount + "</th>" + 60 39 "<tr><td><label for='questionTitle'>Title</label></td>" + 61 "<td><input type='text' class='questionTitle' name='questionTitle" + questionCount + "' onfocus='handleFocus(this)' size='30' value='" + title + "' /></td></tr>" +40 "<td><input type='text' class='questionTitle' name='questionTitle" + questionCount + "' size='30' value='Untitled Question' /></td></tr>" + 62 41 "<tr><td><label for='questionDescription'>Description</label></td>" + 63 "<td><input type='text' class='questionDescription' name='questionDescription" + questionCount + "' onfocus='handleFocus(this)' size='60' value='" + description + "' /></td>" +42 "<td><input type='text' class='questionDescription' name='questionDescription" + questionCount + "' size='60' value='Write a question description here.' /></td>" + 64 43 "<tr><td><label for='questionType'>Answer type</label></td>" + 65 44 "<td><select id='" + questionCount + "' name='questionType" + questionCount + "' onchange='handleType(this)'><br />"+ … … 71 50 "</select></td></tr>" + 72 51 "</table>" + 73 "<div id='answersDiv" + questionCount + "' class='answersDiv'></div>" +52 "<div id='answersDiv" + questionCount + "'></div>" + 74 53 "</div>"; 75 54 76 55 questionDiv.innerHTML = htmlStr; 77 56 78 57 return questionDiv; 79 58 } 80 59 81 60 function handleFocus(input) 82 61 { … … 88 67 } 89 68 } 90 69 91 70 function handleBlur(input) 92 71 { 93 72 var surveyTitle = document.getElementById('surveyTitle'); 94 73 var surveyDescription = document.getElementById('surveyDescription'); 95 74 96 75 if (input.value == "") 97 76 { 98 77 input.style.color = "gray"; 99 78 input.clicked = null; 100 79 101 80 if (input == surveyTitle) 102 81 { … … 109 88 } 110 89 } 111 90 112 91 function handleType(select) 113 92 { … … 116 95 answersDiv.answerCount = 1; 117 96 answersDiv.clicked = null; 118 97 119 98 switch (type) { 120 99 case 'mc': 121 100 answersDiv.innerHTML = ""; 122 101 addOption(select.id); 123 102 124 103 break; 125 104 case 'text': … … 145 124 146 125 } 147 148 126 127 149 128 function addOption(questionNumber) 150 129 { … … 153 132 var answerDiv = document.createElement("div"); 154 133 answerDiv.className = "answerDiv"; 155 134 156 135 var htmlStr = "<input type='text' name='q" + 157 136 questionNumber + "ans" + answerCount + "' value='Option " + answerCount + "' />"; 158 137 159 138 if (answersDiv.clicked == null) 160 139 { … … 162 141 + " class='surveyButton' onclick='addOption(" + questionNumber + ")' value='Add Option' />" + 163 142 "<input type='button' class='surveyButton' onclick='removeOption(" + questionNumber + ")' value='x' />"; 164 143 165 144 answersDiv.clicked = true; 166 145 } 167 146 168 147 answerDiv.innerHTML = htmlStr; 169 148 170 149 answerDiv.prev = answersDiv.lastAnswer; //singly linked list 171 150 answersDiv.lastAnswer = answerDiv; 172 151 173 152 answersDiv.appendChild(answerDiv); 174 153 answersDiv.answerCount++; 175 154 } 176 155 177 156 function removeOption(questionNumber) 178 157 { 179 158 var answersDiv = document.getElementById("answersDiv" + questionNumber); 180 159 181 160 if (answersDiv.lastAnswer.prev != null) 182 161 { … … 186 165 } 187 166 } 188 167 189 168 function minMax(questionNumber) 190 169 { 191 170 var answersDiv = document.getElementById("answersDiv" + questionNumber); 192 171 193 172 var answerDiv = document.createElement("div"); 194 195 173 answerDiv.className = "answerDiv"; 196 answerDiv.innerHTML = "<label for='min'>Min</label><input type='text' name=' q" + questionNumber + "ans1' />" +197 "<label for='max'>Max</label><input type='text' name=' q" + questionNumber + "ans2' />";198 174 answerDiv.innerHTML = "<label for='min'>Min</label><input type='text' name='min" + questionNumber + "' />" + 175 "<label for='max'>Max</label><input type='text' name='max" + questionNumber + "' />"; 176 199 177 answersDiv.appendChild(answerDiv); 200 178 } 201 179 202 180 function minMaxIncr(questionNumber) 203 181 { 204 var answersDiv = document.getElementById("answersDiv" + questionNumber); 205 182 minMax(questionNumber); 183 var answersDiv = document.getElementById("answersDiv" + questionNumber); 184 206 185 var answerDiv = document.createElement("div"); 207 186 answerDiv.className = "answerDiv"; 208 answerDiv.innerHTML = "<label>Left label</label><input type='text' name='q" + questionNumber + "ans1' />" + 209 "<label>Right label</label><input type='text' name='q" + questionNumber + "ans2' />" + 210 "<label>Scale count</label><input type='text' name='q" + questionNumber + "ans3' />" + 211 "<div id='inputCheckFeedback'" + questionNumber + ""; 212 187 answerDiv.innerHTML = "<label for='incr'>Increment by</label><input type='text' name='incr" + questionNumber + "' />"; 188 213 189 answersDiv.appendChild(answerDiv); 214 190 } 215 216 217 function addQuestion( title, description)191 192 193 function addQuestion() 218 194 { 219 195 var questionsDiv = document.getElementById('questionsDiv'); 220 var newQuestion = getNewQuestion( title, description);221 196 var newQuestion = getNewQuestion(); 197 222 198 223 199 newQuestion.prev = document.lastQuestion; … … 227 203 questionCount++; 228 204 } 229 205 230 206 function removeLastQuestion() 231 207 { 232 208 var questionsDiv = document.getElementById('questionsDiv'); 233 209 234 210 if (document.lastQuestion.prev != null) 235 211 { … … 243 219 } 244 220 } 245 246 function save(surveyID) 247 { 248 var form = document.getElementById('survey'); 249 var questionsDiv = document.getElementById('questionsDiv'); 250 form.action = "surveycreation.php"; 251 252 /* extra time stamp */ 253 var date = new Date(); 254 var minutes = date.getUTCMinutes(); 255 if (minutes < 10) 256 minutes = "0" + minutes; 257 var timeStamp = date.getHours() + ":" + minutes; 258 var timeStampInput = document.createElement("input"); 259 timeStampInput.name = "timeStamp"; 260 timeStampInput.value = timeStamp; 261 timeStampInput.type = "hidden"; 262 263 var surveyIDInput = document.createElement("input"); 264 surveyIDInput.name = "surveyID"; 265 surveyIDInput.value = surveyID; 266 surveyIDInput.type = "hidden"; 267 268 questionsDiv.appendChild(timeStampInput); 269 questionsDiv.appendChild(surveyIDInput); 270 form.submit(); 271 } 272 273 221 222 223 274 224 </script> 275 225 <?php 276 226 } 277 227 278 private function surveyHead() { 279 ?><div id="surveyHead"> 280 <?php 281 $this->titleBox(); 282 $this->saveSurvey(); 283 $this->descriptionBox(); 284 ?></div> 285 <?php 286 } 287 288 private function titleBox() { 289 if (isset($this->survey->title)) 290 $value = $this->survey->title; 291 else 292 $value = 'Untitled Survey'; 293 ?> 294 <input type="text" id="surveyTitle" name="surveyTitle" value="<?php echo $value ?>" onblur="handleBlur(this)" onfocus="handleFocus(this)" /> 295 <?php 296 } 297 298 private function saveSurvey() { 299 if (isset($this->timeStamp)) 300 echo "<div id='timeStamp'>Last saved " . $this->timeStamp . '</div>'; 301 if (isset($this->survey->id)) 302 $id = $this->survey->id; 303 else 304 $id = null; 305 ?> 306 <input id="surveySaveButton" type="button" onclick="save('<?php echo $id; ?>')" class='surveyButton' value='Save' /> 307 <?php 308 } 309 310 private function descriptionBox() { 311 if (isset($this->survey->description)) 312 $value = $this->survey->description; 313 else 314 $value = 'Write a helpful description for this survey here.'; 315 ?> 316 <textarea id="surveyDescription" name="surveyDescription" onblur="handleBlur(this)" onfocus="handleFocus(this)"><?php echo $value; ?></textarea> 317 <?php 318 } 319 320 private function questionCreationForm() { 228 private static function titleBox() { 229 ?> 230 <input type="text" id="surveyTitle" name="surveyTitle" value="Untitled Survey" size="30" onblur="handleBlur(this)" onfocus="handleFocus(this)" /> 231 <?php 232 } 233 234 private static function descriptionBox() { 235 ?> 236 <textarea id="surveyDescription" rows="3" cols="80" name="surveyDescription" onblur="handleBlur(this)" onfocus="handleFocus(this)">Write a helpful description for this survey here.</textarea> 237 <?php 238 } 239 240 private static function questionCreationForm() { 321 241 ?> 322 242 <div id='questionsDiv'> 323 243 </div> 324 <?php 325 if (isset($this->survey)) { 326 foreach ($this->survey->questions as $question) { 327 ?> 328 <script type="text/javascript"> addQuestion('<?php echo $question->title; ?>', '<?php echo $question->description; ?>'); 329 </script> 330 <?php 331 } 332 } else { 333 ?> 334 <script type="text/javascript"> addQuestion();</script> 335 <?php 336 } 244 <script type="text/javascript"> addQuestion(); </script> 245 <?php 337 246 } 338 247
Note: See TracChangeset
for help on using the changeset viewer.