Ignore:
Timestamp:
07/21/11 15:11:57 (14 years ago)
Author:
fpvanagthoven
Message:

All gets rebuilt except for answers and answer type

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/classes/SurveyCreationTool.php

    r29 r30  
    1616        $this->timeStamp = $timeStamp;
    1717
    18         SurveyCreationTool::javascript();
     18        if( isset($this->survey->id))
     19            SurveyCreationTool::javascript($this->survey->id);
     20        else
     21            SurveyCreationTool::javascript();
    1922        ?>
    2023
     
    3033    }
    3134
    32     private static function javascript() {
     35    private static function javascript($id = null) {
    3336        ?>
    3437        <script type="text/javascript">
    3538            /* autosave every 3 minutes */
    36         setTimeout("save()", 180000);
    37                                                    
    38         var questionCount = 1;         
    39                                                                                                                                                                                            
    40         function getNewQuestion()
    41         {
    42                        
    43             var questionDiv = document.createElement("div");
    44             var htmlStr =
    45                 "<div id='question" + questionCount + "' class='question'>" +
    46                 "<table class='questionTable'>" +
    47                 "<th>Question " + questionCount + "</th>" +
    48                 "<tr><td><label for='questionTitle'>Title</label></td>" +
    49                 "<td><input type='text' class='questionTitle' name='questionTitle" + questionCount + "' onfocus='handleFocus(this)' size='30' value='' /></td></tr>" +
    50                 "<tr><td><label for='questionDescription'>Description</label></td>" +
    51                 "<td><input type='text' class='questionDescription' name='questionDescription" + questionCount + "' onfocus='handleFocus(this)' size='60' value='Write a question description here.' /></td>" +
    52                 "<tr><td><label for='questionType'>Answer type</label></td>" +
    53                 "<td><select id='" + questionCount + "' name='questionType" + questionCount + "' onchange='handleType(this)'><br />"+
    54                 "<option value='text' selected='selected'>Text</option>" +
    55                 "<option value='int'>Integer</option>" +
    56                 "<option value='mc'>Multiple choice</option>" +
    57                 "<option value='checkboxes'>Checkboxes</option>" +
    58                 "<option value='scale'>Scale</option>" +
    59                 "</select></td></tr>" +
    60                 "</table>" +
    61                 "<div id='answersDiv" + questionCount + "' class='answersDiv'></div>" +
    62                 "</div>";
     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                                   
     55                var questionDiv = document.createElement("div");
     56                var htmlStr =
     57                    "<div id='question" + questionCount + "' class='question'>" +
     58                    "<table class='questionTable'>" +
     59                    "<th>Question " + questionCount + "</th>" +
     60                    "<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>" +
     62                    "<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>" +
     64                    "<tr><td><label for='questionType'>Answer type</label></td>" +
     65                    "<td><select id='" + questionCount + "' name='questionType" + questionCount + "' onchange='handleType(this)'><br />"+
     66                    "<option value='text' selected='selected'>Text</option>" +
     67                    "<option value='int'>Integer</option>" +
     68                    "<option value='mc'>Multiple choice</option>" +
     69                    "<option value='checkboxes'>Checkboxes</option>" +
     70                    "<option value='scale'>Scale</option>" +
     71                    "</select></td></tr>" +
     72                    "</table>" +
     73                    "<div id='answersDiv" + questionCount + "' class='answersDiv'></div>" +
     74                    "</div>";
     75                                                                                                                                                                                                               
     76                questionDiv.innerHTML = htmlStr;
     77                                                                                                                                                                                                               
     78                return questionDiv;
     79            }
     80                                                                                                                                                                                                                   
     81            function handleFocus(input)
     82            {
     83                if (input.clicked == null)
     84                {
     85                    input.value = "";
     86                    input.style.color = "black";   
     87                    input.clicked = true;
     88                }
     89            }
     90                                                                                                                                                                                                                                                   
     91            function handleBlur(input)
     92            {       
     93                var surveyTitle = document.getElementById('surveyTitle');
     94                var surveyDescription = document.getElementById('surveyDescription');
     95                                                                                                                                                                                                                                   
     96                if (input.value == "")
     97                {
     98                    input.style.color = "gray";
     99                    input.clicked = null;
     100                                                                                                                                                                                                                                                           
     101                    if (input == surveyTitle)
     102                    {
     103                        input.value = "Untitled Survey";
     104                    }
     105                    else if (input == surveyDescription)
     106                    {
     107                        input.value = "Write a helpful description for this survey here.";
     108                    }
     109                }                           
     110            }
     111                                                                                                                                                                                                   
     112            function handleType(select)
     113            {
     114                var type = select.valueOf().value;
     115                var answersDiv = document.getElementById("answersDiv" +  select.id);
     116                answersDiv.answerCount = 1;
     117                answersDiv.clicked = null;
     118                                                                                                                                                       
     119                switch (type) {
     120                    case 'mc':
     121                        answersDiv.innerHTML = "";
     122                        addOption(select.id);
    63123                                                                                                                                                                                       
    64             questionDiv.innerHTML = htmlStr;
    65                                                                                                                                                                                        
    66             return questionDiv;
    67         }
    68                                                                                                                                                                                            
    69         function handleFocus(input)
    70         {
    71             if (input.clicked == null)
    72             {
    73                 input.value = "";
    74                 input.style.color = "black";   
    75                 input.clicked = true;
    76             }
    77         }
    78                                                                                                                                                                                                                            
    79         function handleBlur(input)
    80         {       
    81             var surveyTitle = document.getElementById('surveyTitle');
    82             var surveyDescription = document.getElementById('surveyDescription');
    83                                                                                                                                                                                                            
    84             if (input.value == "")
    85             {
    86                 input.style.color = "gray";
    87                 input.clicked = null;
    88                                                                                                                                                                                                                                    
    89                 if (input == surveyTitle)
    90                 {
    91                     input.value = "Untitled Survey";
    92                 }
    93                 else if (input == surveyDescription)
    94                 {
    95                     input.value = "Write a helpful description for this survey here.";
    96                 }
    97             }                           
    98         }
     124                        break;
     125                    case 'text':
     126                        answersDiv.innerHTML = "";
     127                        break;
     128                    case 'int':   
     129                        answersDiv.innerHTML = "";
     130                        //min max
     131                        minMax(select.id);
     132                        break;
     133                    case 'checkboxes':
     134                        answersDiv.innerHTML = ""; 
     135                        addOption(select.id);
     136                        break;
     137                    case 'scale':
     138                        answersDiv.innerHTML = "";
     139                        //what scale (min max incr)
     140                        minMaxIncr(select.id);
     141                        break;
     142                    default:
     143                        break;
     144                }
     145
     146            }
     147                                                                                                                                                                                   
    99148                                                                                                                                                                           
    100         function handleType(select)
    101         {
    102             var type = select.valueOf().value;
    103             var answersDiv = document.getElementById("answersDiv" +  select.id);
    104             answersDiv.answerCount = 1;
    105             answersDiv.clicked = null;
    106                                                                                                                                
    107             switch (type) {
    108                 case 'mc':
    109                     answersDiv.innerHTML = "";
    110                     addOption(select.id);
    111                                                                                                                                                                
    112                     break;
    113                 case 'text':
    114                     answersDiv.innerHTML = "";
    115                     break;
    116                 case 'int':   
    117                     answersDiv.innerHTML = "";
    118                     //min max
    119                     minMax(select.id);
    120                     break;
    121                 case 'checkboxes':
    122                     answersDiv.innerHTML = ""; 
    123                     addOption(select.id);
    124                     break;
    125                 case 'scale':
    126                     answersDiv.innerHTML = "";
    127                     //what scale (min max incr)
    128                     minMaxIncr(select.id);
    129                     break;
    130                 default:
    131                     break;
    132             }
    133 
    134         }
    135                                                                                                                                                            
    136                                                                                                                                                    
    137         function addOption(questionNumber)
    138         {       
    139             var answersDiv = document.getElementById("answersDiv" + questionNumber);
    140             var answerCount = answersDiv.answerCount;
    141             var answerDiv = document.createElement("div");
    142             answerDiv.className = "answerDiv";
     149            function addOption(questionNumber)
     150            {       
     151                var answersDiv = document.getElementById("answersDiv" + questionNumber);
     152                var answerCount = answersDiv.answerCount;
     153                var answerDiv = document.createElement("div");
     154                answerDiv.className = "answerDiv";
     155                                                                                                                                                                               
     156                var htmlStr = "<input type='text' name='q" +
     157                    questionNumber + "ans" + answerCount + "' value='Option " + answerCount + "' />";
    143158                                                                                                                                                       
    144             var htmlStr = "<input type='text' name='q" +
    145                 questionNumber + "ans" + answerCount + "' value='Option " + answerCount + "' />";
    146                                                                                                                                
    147             if (answersDiv.clicked == null)
    148             {
    149                 htmlStr += "<input type='button' id='addOpt'"
    150                     + " class='surveyButton' onclick='addOption(" + questionNumber + ")' value='Add Option' />" +
    151                     "<input type='button' class='surveyButton' onclick='removeOption(" + questionNumber + ")' value='x' />";
    152                                                                                                    
    153                 answersDiv.clicked = true;
    154             }
    155                                                                                                                                                                
    156             answerDiv.innerHTML = htmlStr;
    157                                                                                                
    158             answerDiv.prev = answersDiv.lastAnswer; //singly linked list
    159             answersDiv.lastAnswer = answerDiv;
    160                                                                                                                                                                
    161             answersDiv.appendChild(answerDiv);
    162             answersDiv.answerCount++;
    163         }
    164                                                                                            
    165         function removeOption(questionNumber)
    166         {
    167             var answersDiv = document.getElementById("answersDiv" + questionNumber);
    168                                                                                                
    169             if (answersDiv.lastAnswer.prev != null)
    170             {
    171                 answersDiv.removeChild(answersDiv.lastAnswer);
    172                 answersDiv.lastAnswer = answersDiv.lastAnswer.prev;
    173                 answersDiv.answerCount--;
    174             }
    175         }
     159                if (answersDiv.clicked == null)
     160                {
     161                    htmlStr += "<input type='button' id='addOpt'"
     162                        + " class='surveyButton' onclick='addOption(" + questionNumber + ")' value='Add Option' />" +
     163                        "<input type='button' class='surveyButton' onclick='removeOption(" + questionNumber + ")' value='x' />";
     164                                                                                                                           
     165                    answersDiv.clicked = true;
     166                }
     167                                                                                                                                                                                       
     168                answerDiv.innerHTML = htmlStr;
     169                                                                                                                       
     170                answerDiv.prev = answersDiv.lastAnswer; //singly linked list
     171                answersDiv.lastAnswer = answerDiv;
     172                                                                                                                                                                                       
     173                answersDiv.appendChild(answerDiv);
     174                answersDiv.answerCount++;
     175            }
    176176                                                                                                                   
    177         function minMax(questionNumber)
    178         {
    179             var answersDiv = document.getElementById("answersDiv" + questionNumber);
     177            function removeOption(questionNumber)
     178            {
     179                var answersDiv = document.getElementById("answersDiv" + questionNumber);
    180180                                                                                                                       
    181             var answerDiv = document.createElement("div");
    182                                                                                        
    183             answerDiv.className = "answerDiv";
    184             answerDiv.innerHTML = "<label for='min'>Min</label><input type='text' name='q" + questionNumber + "ans1' />" +
    185                 "<label for='max'>Max</label><input type='text' name='q" + questionNumber + "ans2' />";
    186                                                                                                                    
    187             answersDiv.appendChild(answerDiv);
    188         } 
    189                                                                                                                    
    190         function minMaxIncr(questionNumber)
    191         {
    192             var answersDiv = document.getElementById("answersDiv" + questionNumber);
    193                                                                                                                        
    194             var answerDiv = document.createElement("div");
    195             answerDiv.className = "answerDiv";
    196             answerDiv.innerHTML = "<label>Left label</label><input type='text' name='q" + questionNumber + "ans1' />" +
    197                 "<label>Right label</label><input type='text' name='q" + questionNumber + "ans2' />" +
    198                 "<label>Scale count</label><input type='text' name='q" + questionNumber + "ans3' />" +
    199                 "<div id='inputCheckFeedback'" + questionNumber + "";
    200                                                                                                                    
    201             answersDiv.appendChild(answerDiv);
    202         }         
    203                                                                                                                                                                          
    204                                                                                                                                                                                  
    205         function addQuestion(title, description)
    206         {
    207             var questionsDiv = document.getElementById('questionsDiv');
    208             var newQuestion = getNewQuestion(title, description);
     181                if (answersDiv.lastAnswer.prev != null)
     182                {
     183                    answersDiv.removeChild(answersDiv.lastAnswer);
     184                    answersDiv.lastAnswer = answersDiv.lastAnswer.prev;
     185                    answersDiv.answerCount--;
     186                }
     187            }
     188                                                                                                                                           
     189            function minMax(questionNumber)
     190            {
     191                var answersDiv = document.getElementById("answersDiv" + questionNumber);
     192                                                                                                                                               
     193                var answerDiv = document.createElement("div");
    209194                                                                                                               
    210 
    211             newQuestion.prev = document.lastQuestion;
    212             document.lastQuestion = newQuestion;
    213 
    214             questionsDiv.appendChild(newQuestion);
    215             questionCount++;
    216         }
    217                                                                                                            
    218         function removeLastQuestion()
    219         {
    220             var questionsDiv = document.getElementById('questionsDiv');
    221                                                                                                                
    222             if (document.lastQuestion.prev != null)
    223             {
    224                 questionsDiv.removeChild(document.lastQuestion);
    225                 document.lastQuestion = document.lastQuestion.prev;
    226                 questionCount--; 
    227             }
    228             else
    229             {
    230                 // do nothing
    231             }               
    232         }
    233                                                                                      
    234         function save(surveyID)
    235         {
    236             var form = document.getElementById('survey');
    237             var questionsDiv = document.getElementById('questionsDiv');
    238             form.action = "surveycreation.php";
    239                                                        
    240             /* extra time stamp */
    241             var date = new Date();
    242             var minutes = date.getUTCMinutes();
    243             if (minutes < 10)
    244                 minutes = "0" + minutes;
    245             var timeStamp = date.getHours() + ":" + minutes;
    246             var timeStampInput = document.createElement("input");
    247             timeStampInput.name = "timeStamp";
    248             timeStampInput.value = timeStamp;
    249             timeStampInput.type = "hidden";
    250            
    251             var surveyIDInput = document.createElement("input");
    252             surveyIDInput.name = "surveyID";
    253             surveyIDInput.value = surveyID;
    254             surveyIDInput.type = "hidden";
    255                                      
    256             questionsDiv.appendChild(timeStampInput);
    257             questionsDiv.appendChild(surveyIDInput);
    258             form.submit();
    259         }
    260                                                                                                                    
    261                                                                                                                                                                                                                                                                                                    
     195                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                                                                                                                                           
     199                answersDiv.appendChild(answerDiv);
     200            } 
     201                                                                                                                                           
     202            function minMaxIncr(questionNumber)
     203            {
     204                var answersDiv = document.getElementById("answersDiv" + questionNumber);
     205                                                                                                                                               
     206                var answerDiv = document.createElement("div");
     207                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                                                                                                                                           
     213                answersDiv.appendChild(answerDiv);
     214            }         
     215                                                                                                                                                                                                 
     216                                                                                                                                                                                                         
     217            function addQuestion(title, description)
     218            {
     219                var questionsDiv = document.getElementById('questionsDiv');
     220                var newQuestion = getNewQuestion(title, description);
     221                                                                                                                                       
     222
     223                newQuestion.prev = document.lastQuestion;
     224                document.lastQuestion = newQuestion;
     225
     226                questionsDiv.appendChild(newQuestion);
     227                questionCount++;
     228            }
     229                                                                                                                                   
     230            function removeLastQuestion()
     231            {
     232                var questionsDiv = document.getElementById('questionsDiv');
     233                                                                                                                                       
     234                if (document.lastQuestion.prev != null)
     235                {
     236                    questionsDiv.removeChild(document.lastQuestion);
     237                    document.lastQuestion = document.lastQuestion.prev;
     238                    questionCount--; 
     239                }
     240                else
     241                {
     242                    // do nothing
     243                }               
     244            }
     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                                                                                                                                                                                                                                                                                                                           
    262274        </script>
    263275        <?php
     
    310322        <div id='questionsDiv'>
    311323        </div>
    312 
    313         <script type="text/javascript"> addQuestion(); </script>
    314         <?php
     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        }
    315337    }
    316338
Note: See TracChangeset for help on using the changeset viewer.