Example #1
0
    }
}
if ($is_editor) {
    load_js('tools.js');
    global $themeimg, $m;
    $head_content .= "\n    <script type='text/javascript'>\n    function check_weights() {\n        /* function to check weight validity */\n        if(\$('#hidden-opt').is(':visible') && \$('#auto_judge').is(':checked')) {\n            var weights = document.getElementsByClassName('auto_judge_weight');\n            var weight_sum = 0;\n            var max_grade = parseFloat(document.getElementById('max_grade').value);\n            max_grade = Math.round(max_grade * 1000) / 1000;\n\n            for (i = 0; i < weights.length; i++) {\n                // match ints or floats\n                w = weights[i].value.match(/^\\d+\\.\\d+\$|^\\d+\$/);\n                if(w != null) {\n                    w = parseFloat(w);\n                    if(w >= 0  && w <= max_grade)  // 0->max_grade allowed\n                    {\n                        /* allow 3 decimal digits */\n                        weight_sum += w;\n                        continue;\n                    }\n                    else{\n                        alert('Weights must be between 1 and max_grade!');\n                        return false;\n                    }\n                }\n                else {\n                    alert('Only numbers as weights!');\n                    return false;\n                }\n            }\n            diff = Math.round((max_grade - weight_sum) * 1000) / 1000;\n            if (diff >= 0 && diff <= 0.001) {\n                return true;\n            }\n            else {\n                alert('Weights do not sum up to ' + max_grade +\n                    '!\\n(Remember, 3 decimal digits precision)');\n                return false;\n            }\n        }\n        else\n            return true;\n    }\n    function updateWeightsSum() {\n        var weights = document.getElementsByClassName('auto_judge_weight');\n        var weight_sum = 0;\n        var max_grade = parseFloat(document.getElementById('max_grade').value);\n        max_grade = Math.round(max_grade * 1000) / 1000;\n\n        for (i = 0; i < weights.length; i++) {\n            // match ints or floats\n            w = weights[i].value.match(/^\\d+\\.\\d+\$|^\\d+\$/);\n            if(w != null) {\n                w = parseFloat(w);\n                if(w >= 0  && w <= max_grade)  // 0->max_grade allowed\n                {\n                    /* allow 3 decimal digits */\n                    weight_sum += w;\n                    continue;\n                }\n                else{\n                    \$('#weights-sum').html('-');\n                    \$('#weights-sum').css('color', 'red');\n                    return;\n                }\n            }\n            else {\n                \$('#weights-sum').html('-');\n                \$('#weights-sum').css('color', 'red');\n                return;\n            }\n        }\n        \$('#weights-sum').html(weight_sum);\n        diff = Math.round((max_grade - weight_sum) * 1000) / 1000;\n        if (diff >= 0 && diff <= 0.001) {\n            \$('#weights-sum').css('color', 'green');\n        } else {\n            \$('#weights-sum').css('color', 'red');\n        }\n    }\n    \$(document).ready(function() {\n        updateWeightsSum();\n        \$('.auto_judge_weight').change(updateWeightsSum);\n        \$('#max_grade').change(updateWeightsSum);\n    });\n\n    \$(function() {\n        \$('input[name=group_submissions]').click(changeAssignLabel);\n        \$('input[id=assign_button_some]').click(ajaxAssignees);\n        \$('input[id=assign_button_all]').click(hideAssignees);\n        \$('input[name=auto_judge]').click(changeAutojudgeScenariosVisibility);\n        \$(document).ready(function() { changeAutojudgeScenariosVisibility.apply(\$('input[name=auto_judge]')); });\n\n        function hideAssignees()\n        {\n            \$('#assignees_tbl').addClass('hide');\n            \$('#assignee_box').find('option').remove();\n        }\n        function changeAssignLabel()\n        {\n            var assign_to_specific = \$('input:radio[name=assign_to_specific]:checked').val();\n            if(assign_to_specific==1){\n               ajaxAssignees();\n            }\n            if (this.id=='group_button') {\n               \$('#assign_button_all_text').text('{$m['WorkToAllGroups']}');\n               \$('#assign_button_some_text').text('{$m['WorkToGroup']}');\n               \$('#assignees').text('{$langGroups}');\n            } else {\n               \$('#assign_button_all_text').text('{$m['WorkToAllUsers']}');\n               \$('#assign_button_some_text').text('{$m['WorkToUser']}');\n               \$('#assignees').text('{$langStudents}');\n            }\n        }\n        function ajaxAssignees()\n        {\n            \$('#assignees_tbl').removeClass('hide');\n            var type = \$('input:radio[name=group_submissions]:checked').val();\n            \$.post('{$works_url['url']}',\n            {\n              assign_type: type\n            },\n            function(data,status){\n                var index;\n                var parsed_data = JSON.parse(data);\n                var select_content = '';\n                if(type==0){\n                    for (index = 0; index < parsed_data.length; ++index) {\n                        select_content += '<option value=\"' + parsed_data[index]['id'] + '\">' + parsed_data[index]['surname'] + ' ' + parsed_data[index]['givenname'] + '<\\/option>';\n                    }\n                } else {\n                    for (index = 0; index < parsed_data.length; ++index) {\n                        select_content += '<option value=\"' + parsed_data[index]['id'] + '\">' + parsed_data[index]['name'] + '<\\/option>';\n                    }\n                }\n                \$('#assignee_box').find('option').remove();\n                \$('#assign_box').find('option').remove().end().append(select_content);\n            });\n        }\n\n        function changeAutojudgeScenariosVisibility() {\n            if(\$(this).is(':checked')) {\n                \$(this).parent().parent().find('table').show();\n                \$('#lang').parent().parent().show();\n            } else {\n                \$(this).parent().parent().find('table').hide();\n                \$('#lang').parent().parent().hide();\n            }\n        }\n        \$('#autojudge_new_scenario').click(function(e) {\n            var rows = \$(this).parent().parent().parent().find('tr').size()-1;\n            // Clone the first line\n            var newLine = \$(this).parent().parent().parent().find('tr:first').clone();\n            // Replace 0 wth the line number\n            newLine.html(newLine.html().replace(/auto_judge_scenarios\\[0\\]/g, 'auto_judge_scenarios['+rows+']'));\n            // Initialize the remove event and show the button\n            newLine.find('.autojudge_remove_scenario').show();\n            newLine.find('.autojudge_remove_scenario').click(removeRow);\n            // Clear out any potential content\n            newLine.find('input').val('');\n            // Insert it just before the final line\n            newLine.insertBefore(\$(this).parent().parent().parent().find('tr:last'));\n            // Add the event handler\n            newLine.find('.auto_judge_weight').change(updateWeightsSum);\n            e.preventDefault();\n            return false;\n        });\n        // Remove row\n        function removeRow(e) {\n            \$(this).parent().parent().remove();\n            e.preventDefault();\n            return false;\n        }\n        \$('.autojudge_remove_scenario').click(removeRow);\n        \$(document).on('change', 'select.auto_judge_assertion', function(e) {\n            e.preventDefault();\n            var value = \$(this).val();\n\n            // Change selected attr.\n            \$(this).find('option').each(function() {\n                if (\$(this).attr('selected') == 'selected') {\n                    \$(this).removeAttr('selected');\n                } else if (\$(this).attr('value') == value) {\n                    \$(this).attr('selected', true);\n                }\n            });\n            var row       = \$(this).parent().parent();\n            var tableBody = \$(this).parent().parent().parent();\n            var indexNum  = row.index() + 1;\n\n            if (value === 'eq' ||\n                value === 'same' ||\n                value === 'notEq' ||\n                value === 'notSame' ||\n                value === 'startsWith' ||\n                value === 'endsWith' ||\n                value === 'contains'\n            ) {\n                tableBody.find('tr:nth-child('+indexNum+')').find('input.auto_judge_output').removeAttr('disabled');\n            } else {\n                tableBody.find('tr:nth-child('+indexNum+')').find('input.auto_judge_output').val('');\n                tableBody.find('tr:nth-child('+indexNum+')').find('input.auto_judge_output').attr('disabled', 'disabled');\n            }\n            return false;\n        });\n    });\n\n    </script>";
    $email_notify = isset($_POST['email']) && $_POST['email'];
    if (isset($_POST['grade_comments'])) {
        $work_title = Database::get()->querySingle("SELECT title FROM assignment WHERE id = ?d", intval($_POST['assignment']))->title;
        $pageName = $work_title;
        $navigation[] = $works_url;
        submit_grade_comments($_POST['assignment'], $_POST['submission'], $_POST['grade'], $_POST['comments'], $email_notify, null);
    } elseif (isset($_GET['add'])) {
        $pageName = $langNewAssign;
        $navigation[] = $works_url;
        new_assignment();
    } elseif (isset($_POST['assign_type'])) {
        if ($_POST['assign_type']) {
            $data = Database::get()->queryArray("SELECT name,id FROM `group` WHERE course_id = ?d", $course_id);
        } else {
            $data = Database::get()->queryArray("SELECT user.id AS id, surname, givenname\n                                    FROM user, course_user\n                                    WHERE user.id = course_user.user_id\n                                    AND course_user.course_id = ?d AND course_user.status = 5\n                                    AND user.id", $course_id);
        }
        echo json_encode($data);
        exit;
    } elseif (isset($_POST['new_assign'])) {
        add_assignment();
    } elseif (isset($_GET['as_id'])) {
        $as_id = intval($_GET['as_id']);
        $id = intval($_GET['id']);
        if (delete_user_assignment($as_id)) {
            Session::Messages($langDeleted, 'alert-success');
Example #2
0
<?php

require_once dirname(__FILE__) . "/includes/functions.php";
page_head("Pridanie zadania");
page_nav();
get_topright_form();
if (!isset($_SESSION["loggedUser"]) || $_SESSION["loggedUser"] == null) {
    dieWithError("err-not-logged-in");
}
if (get_class($_SESSION["loggedUser"]) == "Team") {
    dieWithError("err-add-assignment-rights");
}
if ($conn = db_connect()) {
    $id = new_assignment($conn, $_SESSION["loggedUser"]->getId());
    $assignment = new Assignment($conn, $id);
    if (isset($_POST['skName']) && $_POST['skName'] != $assignment->getSkName()) {
        $assignment->setSkName($conn, $_POST['skName']);
    }
    if (isset($_POST['engName']) && $_POST['engName'] != $assignment->getEngName()) {
        $assignment->setEngName($conn, $_POST['engName']);
    }
    if (isset($_POST['skTextPopis']) && $_POST['skTextPopis'] != $assignment->getSkTxt()) {
        $assignment->setSkTxt($conn, $_POST['skTextPopis']);
    }
    if (isset($_POST['engTextPopis']) && $_POST['engTextPopis'] != $assignment->getEngTxt()) {
        $assignment->setEngTxt($conn, $_POST['engTextPopis']);
    }
    if (isset($_POST['textVideo']) && $_POST['textVideo'] != "") {
        $assignment->uploadVideo($conn, $_POST['textVideo']);
    }
    if (isset($_FILES['uploadedFiles'])) {