Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  1. Table of Drag and Drop actions:

Action

Description

Screenshot

Drag and Drop
  1. Click to item

  1. Click to the Drag and Drop item:

    Event: publish_event is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.item.picked_up","item_id":0}
    Response: {"result": "success"}

Screenshot 2024-05-14 at 16.59.42.pngImage Modified

  1. Click and move item

  1. Click and move item to the Drag and Drop zone:

    1. Event: publish_event is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.item.picked_up","item_id":0}
    Response: {"result": "success"}

    2. Event: drop_item is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/drop_item
    Request Method: POST
    Payload: (Form Data)
    {"val":0,"zone":"top"}
    Response:

    Code Block
    {
        "correct": true,
        "grade": 0.4,
        "finished": false,
        "overall_feedback": [
            {
                "message": "Drag the items onto the image above.",
                "message_class": "initial"
            }
        ],
        "feedback": [
            {
                "message": "Correct! This one belongs to The Top Zone.",
                "message_class": null
            }
        ]
    }


    3. Event: publish_event is sent.

    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.feedback.opened","content":"Correct! This one belongs to The Top Zone.","truncated":false}
    Response: {"result": "success"}

Screenshot 2024-05-14 at 17.25.00.pngImage Modified

  1. Close

  1. Close Drag and Drop feedback message:
    Event: publish_event is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.feedback.closed","content":"Correct! This one belongs to The Bottom Zone.","manually":true,"truncated":false}
    Response: {"result": "success"}

Screenshot 2024-05-14 at 17.30.13.pngImage Modified

Close feedback message.

  1. Chose incorrect

  1. Incorrect answer:

    1. Event: publish_event is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.item.picked_up","item_id":4}
    Response: {"result": "success"}

    2. Event: drop_item is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/drop_item
    Request Method: POST
    Payload: (Form Data)
    {"val":4,"zone":"middle"}
    Response:

    Code Block
    {
        "correct": false,
        "grade": 0.6,
        "finished": false,
        "overall_feedback": [
            {
                "message": "Drag the items onto the image above.",
                "message_class": "initial"
            }
        ],
        "feedback": [
            {
                "message": "You silly, there are no zones for this one.",
                "message_class": null
            }
        ]
    }

    3. Event: publish_event is sent.

    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/publish_event
    Request Method: POST
    Payload: (Form Data)
    {"event_type":"edx.drag_and_drop_v2.feedback.opened","content":"You silly, there are no zones for this one.","truncated":false}
    Response: {"result": "success"}

Screenshot 2024-05-14 at 17.39.24.pngImage Modified

Incorrect answer.

  1. Reset

  1. Reset student answer:
    Event: reset is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@drag-and-drop-v2+block@92cea1db16524b0baad9edb5f7e773dc/handler/reset
    Request Method: POST
    Payload: (Form Data)
    {}
    Response:

    Code Block
    {
        "items": {},
        "finished": false,
        "attempts": 0,
        "grade": 1.0,
        "overall_feedback": [
            {
                "message": "Drag the items onto the image above.",
                "message_class": "initial"
            }
        ]
    }

Screenshot 2024-05-14 at 17.47.33.pngImage Modified

  1. Keyboard Help.
    Don’t need requests and responses from server.

Screenshot 2024-05-14 at 17.52.38.pngImage Modified

  1. Library content with offline mode.
    The components from Library behave the same way as the components inherit from capa problem (Checkboxes, Multiple Choice, Numerical Input, Text Input etc.)
    Implementation for text problem and video problem already exist.

  2. Staff Graded Assignment actions table.

Action

Description

Screenshot

  1. Upload assignment

  1. Click to the 'Upload your assignment' button and upload file (picture, audio, video, pdf):

    Event: upload_assignment is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@edx_sga+block@6e0fd8e8cb3b41bfbe8dc10cba835f0c/handler/upload_assignment
    Request Method: POST
    Payload:
    ------WebKitFormBoundaryeJ0dBLCR091snpxM Content-Disposition: form-data; name="assignment"; filename="smile_742751.png" Content-Type: image/png ------WebKitFormBoundaryeJ0dBLCR091snpxM--

    Response:

    Code Block
    {
        "display_name": "Staff Graded Assignment",
        "uploaded": {
            "filename": "smile_742751.png"
        },
        "annotated": null,
        "graded": null,
        "max_score": 100,
        "upload_allowed": true,
        "solution": "<p>Put your question or theme here</p>",
        "base_asset_url": "/asset-v1:f+f+f+type@asset+block@"
    }

Screenshot 2024-05-16 at 11.57.59.pngImage Added

  1. Grade Submissions

  1. Press GRADE SUBMISSIONS button (it works only for the staff or course instructor)
    Event: get_staff_grading_data is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@edx_sga+block@6e0fd8e8cb3b41bfbe8dc10cba835f0c/handler/get_staff_grading_data
    Request Method: GET
    Preview:

    Code Block
    0: {module_id: 64, student_id: "d7f90c9b193a3e02ddb7bd53ebcf2339",…}
    annotated: ""
    approved: false
    comment: ""
    filename: "smile_742751.png"
    finalized: false
    fullname: ""
    may_grade: true
    module_id: 64
    needs_approval: false
    score: null
    student_id: "d7f90c9b193a3e02ddb7bd53ebcf2339"
    submission_id: "f99d6ea6-1b3f-4c7b-9ec0-d5dfc64f3f11"
    timestamp: "2024-05-16T09:05:13.228339"
    username: "kyrylo"
    display_name: "Staff Graded Assignment"
    max_score: 100
    

    Response:Screenshot 2024-05-16 at 12.18.12.pngImage Added

    Code Block
    {
        "assignments": [
            {
                "module_id": 64,
                "student_id": "d7f90c9b193a3e02ddb7bd53ebcf2339",
                "submission_id": "f99d6ea6-1b3f-4c7b-9ec0-d5dfc64f3f11",
                "username": "kyrylo",
                "fullname": "",
                "filename": "smile_742751.png",
                "timestamp": "2024-05-16T09:05:13.228339",
                "score": null,
                "approved": false,
                "needs_approval": false,
                "may_grade": true,
                "annotated": "",
                "comment": "",
                "finalized": false
            }
        ],
        "max_score": 100,
        "display_name": "Staff Graded Assignment"
    }

Screenshot 2024-05-16 at 12.18.12.pngImage Added

Screenshot 2024-05-16 at 12.18.48.pngImage Added

  1. Submit file

  1. Submit uploaded file:
    Event: finalize_uploaded_assignment is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@edx_sga+block@6e0fd8e8cb3b41bfbe8dc10cba835f0c/handler/finalize_uploaded_assignment
    Request Method: POST
    Payload: None
    Response:

    Code Block
    {
        "display_name": "Staff Graded Assignment",
        "uploaded": {
            "filename": "smile_742751.png"
        },
        "annotated": null,
        "graded": null,
        "max_score": 100,
        "upload_allowed": false,
        "solution": "<p>Put your question or theme here</p>",
        "base_asset_url": "/asset-v1:f+f+f+type@asset+block@"
    }
    

Screenshot 2024-05-16 at 12.22.11.pngImage Added

  1. Enter Grade

  1. Enter Grade in staff modal window and submit:
    Event: enter_grade is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@edx_sga+block@6e0fd8e8cb3b41bfbe8dc10cba835f0c/handler/enter_grade
    Request Method: POST
    Payload:

    Code Block
    module_id=65&submission_id=ed9dbcb2-8a3f-4463-b026-ab28f21c13fb&grade=88&comment=Grate+job!

    Response:

    Code Block
    {
        "assignments": [
            {
                "module_id": 65,
                "student_id": "d7f90c9b193a3e02ddb7bd53ebcf2339",
                "submission_id": "ed9dbcb2-8a3f-4463-b026-ab28f21c13fb",
                "username": "kyrylo",
                "fullname": "",
                "filename": "smile_742751.png",
                "timestamp": "2024-05-16T09:28:19.683966",
                "score": 88,
                "approved": true,
                "needs_approval": false,
                "may_grade": true,
                "annotated": "",
                "comment": "Grate job!",
                "finalized": true
            }
        ],
        "max_score": 100,
        "display_name": "Staff Graded Assignment"
    }

Screenshot 2024-05-16 at 12.32.01.pngImage Added

Screenshot 2024-05-16 at 12.32.38.pngImage Added

  1. Upload annotated file

  1. Upload annotated file (for staff or instructor)
    Event: staff_upload_annotated is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@edx_sga+block@6e0fd8e8cb3b41bfbe8dc10cba835f0c/handler/staff_upload_annotated?module_id=65
    Request Method: POST
    Payload: (Form Data)

    Code Block
    ------WebKitFormBoundaryySobLAprYkZiMA9Q
    Content-Disposition: form-data; name="annotated"; filename="sad_725099.png"
    Content-Type: image/png
    
    
    ------WebKitFormBoundaryySobLAprYkZiMA9Q--

    Response:

    Code Block
    {
        "assignments": [
            {
                "module_id": 65,
                "student_id": "d7f90c9b193a3e02ddb7bd53ebcf2339",
                "submission_id": "ed9dbcb2-8a3f-4463-b026-ab28f21c13fb",
                "username": "kyrylo",
                "fullname": "",
                "filename": "smile_742751.png",
                "timestamp": "2024-05-16T09:28:19.683966",
                "score": 88,
                "approved": true,
                "needs_approval": false,
                "may_grade": true,
                "annotated": "sad_725099.png",
                "comment": "Grate job!",
                "finalized": true
            }
        ],
        "max_score": 100,
        "display_name": "Staff Graded Assignment"
    }

Screenshot 2024-05-16 at 12.40.45.pngImage Added

  1. Annotatable problem table.
    Requests and responses to the server almost completely correspond to those described in the capa problem article. The only difference is in the Payload of the the request problem_check.

Action

Description

Screenshot

Submit

Submit answer and annotation:

Event: problem_check is sent.
Request URL:
http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@problem+block@273825134dcc433abbb012fa5e660d4d/handler/xmodule_handler/problem_check
Request Method: POST
Payload: (Form Data)

Code Block
input_273825134dcc433abbb012fa5e660d4d_2_1_comment=Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Ut+sodales+laoreet+est%2C+egestas+gravida+felis+egestas+nec.+Aenean+at+volutpat+erat.+Cras+commodo+viverra+nibh+in+aliquam.&input_273825134dcc433abbb012fa5e660d4d_2_1=%7B%22options%22%3A%5B1%5D%2C%22comment%22%3A%22Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Ut+sodales+laoreet+est%2C+egestas+gravida+felis+egestas+nec.+Aenean+at+volutpat+erat.+Cras+commodo+viverra+nibh+in+aliquam.%22%7D

Response:

Code Block
{
    "success": "correct",
    "contents": "\n\n\n\n<h3 class=\"hd hd-3 problem-header\" id=\"273825134dcc433abbb012fa5e660d4d-problem-title\" aria-describedby=\"block-v1:f+f+f+type@problem+block@273825134dcc433abbb012fa5e660d4d-problem-progress\" tabindex=\"-1\">\n  Blank Problem\n</h3>\n\n<div class=\"problem-progress\" id=\"block-v1:f+f+f+type@problem+block@273825134dcc433abbb012fa5e660d4d-problem-progress\"></div>\n\n<div class=\"problem\">\n  <div>\n    <div class=\"wrapper-problem-response\" tabindex=\"-1\" aria-label=\"Question 1\" role=\"group\"><div class=\"annotation-input\">\n<div class=\"script_placeholder\" data-src=\"/static/js/capa/annotationinput.js\"/>\n\n<div class=\"annotation-header\">\n    Annotation Exercise\n\n        <a class=\"annotation-return\" href=\"javascript:void(0)\">Return to Annotation</a><br/>\n</div>\n<div class=\"annotation-body\">\n\n    <div class=\"block block-highlight\">PLACEHOLDER: Text of annotation</div>\n    <div class=\"block block-comment\">PLACEHOLDER: Text of question</div>\n\n    <div class=\"block\">PLACEHOLDER: Type your response below:</div>\n    <textarea class=\"comment\" id=\"input_273825134dcc433abbb012fa5e660d4d_2_1_comment\" name=\"input_273825134dcc433abbb012fa5e660d4d_2_1_comment\" aria-describedby=\"answer_273825134dcc433abbb012fa5e660d4d_2_1\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sodales laoreet est, egestas gravida felis egestas nec. Aenean at volutpat erat. Cras commodo viverra nibh in aliquam.</textarea>\n\n    <div class=\"block\" id=\"label_273825134dcc433abbb012fa5e660d4d_2_1\">PLACEHOLDER: In your response to this question, which tag below do you choose?</div>\n    <ul class=\"tags\">\n        <li>\n\n            <span class=\"tag             \" data-id=\"0\">\n                PLACEHOLDER: Incorrect answer (to make this option a correct or partially correct answer, change choice=\"incorrect\" to choice=\"correct\" or choice=\"partially-correct\")\n            </span>\n        </li>\n        <li>\n                <span class=\"tag-status correct\" aria-describedby=\"input_273825134dcc433abbb012fa5e660d4d_2_1_comment\">\n                    \n\n<span class=\"status correct\" data-tooltip=\"This answer is correct.\">\n  <span class=\"sr\">correct</span><span class=\"status-icon\" aria-hidden=\"true\"/>\n</span>\n\n                </span>\n\n            <span class=\"tag                 selected             \" data-id=\"1\">\n                PLACEHOLDER: Correct answer (to make this option an incorrect or partially correct answer, change choice=\"correct\" to choice=\"incorrect\" or choice=\"partially-correct\")\n            </span>\n        </li>\n        <li>\n\n            <span class=\"tag             \" data-id=\"2\">\n                PLACEHOLDER: Partially correct answer (to make this option a correct or partially correct answer, change choice=\"partially-correct\" to choice=\"correct\" or choice=\"incorrect\")\n            \n            </span>\n        </li>\n    </ul>\n\n        <input type=\"hidden\" class=\"value\" name=\"input_273825134dcc433abbb012fa5e660d4d_2_1\" id=\"input_273825134dcc433abbb012fa5e660d4d_2_1\" value=\"{&quot;options&quot;:[1],&quot;comment&quot;:&quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sodales laoreet est, egestas gravida felis egestas nec. Aenean at volutpat erat. Cras commodo viverra nibh in aliquam.&quot;}\"/>\n\n    \n\n<span class=\"status correct\" id=\"status_273825134dcc433abbb012fa5e660d4d_2_1\" data-tooltip=\"This answer is correct.\">\n  <span class=\"sr\">correct</span><span class=\"status-icon\" aria-hidden=\"true\"/>\n</span>\n\n\n    <p id=\"answer_273825134dcc433abbb012fa5e660d4d_2_1\" class=\"answer answer-annotation\"/>\n</div>\n</div></div>\n    <div class=\"solution-span\">\n <span id=\"solution_273825134dcc433abbb012fa5e660d4d_solution_1\"/>\n</div></div>\n  <div class=\"action\">\n    <input type=\"hidden\" name=\"problem_id\" value=\"Blank Problem\" />\n\n    <div class=\"problem-action-buttons-wrapper\">\n      <span class=\"problem-action-button-wrapper\">\n          <button type=\"button\" class=\"show problem-action-btn btn-link btn-small\" aria-describedby=\"273825134dcc433abbb012fa5e660d4d-problem-title\"><span class=\"show-label\">Show answer</span></button>\n      </span>\n    </div>\n    <div class=\"submit-attempt-container\">\n      <button type=\"button\" class=\"submit btn-brand\" data-submitting=\"Submitting\" data-value=\"Submit\" data-should-enable-submit-button=\"True\" aria-describedby=\"submission_feedback_273825134dcc433abbb012fa5e660d4d\" >\n          <span class=\"submit-label\">Submit</span>\n      </button>\n\n      <div class=\"submission-feedback \" id=\"submission_feedback_273825134dcc433abbb012fa5e660d4d\">\n        <span class=\"sr\">Some problems have options such as save, reset, hints, or show answer. These options follow the Submit button.</span>\n      </div>\n    </div>\n  </div>\n    \n\n\n<div class=\"notification warning notification-gentle-alert\n      is-hidden\"\n     tabindex=\"-1\">\n    <span class=\"icon fa fa-exclamation-circle\" aria-hidden=\"true\"></span>\n    <span class=\"notification-message\" aria-describedby=\"273825134dcc433abbb012fa5e660d4d-problem-title\">\n    </span>\n    <div class=\"notification-btn-wrapper\">\n        <button type=\"button\" class=\"btn btn-default btn-small notification-btn review-btn sr\">Review</button>\n    </div>\n</div>\n\n            \n\n\n<div class=\"notification success notification-submit\n      \"\n     tabindex=\"-1\">\n    <span class=\"icon fa fa-check\" aria-hidden=\"true\"></span>\n    <span class=\"notification-message\" aria-describedby=\"273825134dcc433abbb012fa5e660d4d-problem-title\">Correct (2/2 points)\n    </span>\n    <div class=\"notification-btn-wrapper\">\n        <button type=\"button\" class=\"btn btn-default btn-small notification-btn review-btn sr\">Review</button>\n    </div>\n</div>\n\n    \n\n\n<div class=\"notification warning notification-save\n      is-hidden\"\n     tabindex=\"-1\">\n    <span class=\"icon fa fa-save\" aria-hidden=\"true\"></span>\n    <span class=\"notification-message\" aria-describedby=\"273825134dcc433abbb012fa5e660d4d-problem-title\">None\n    </span>\n    <div class=\"notification-btn-wrapper\">\n        <button type=\"button\" class=\"btn btn-default btn-small notification-btn review-btn sr\">Review</button>\n    </div>\n</div>\n\n    \n    \n\n\n<div class=\"notification general notification-show-answer\n      is-hidden\"\n     tabindex=\"-1\">\n    <span class=\"icon fa fa-info-circle\" aria-hidden=\"true\"></span>\n    <span class=\"notification-message\" aria-describedby=\"273825134dcc433abbb012fa5e660d4d-problem-title\">Answers are displayed within the problem\n    </span>\n    <div class=\"notification-btn-wrapper\">\n        <button type=\"button\" class=\"btn btn-default btn-small notification-btn review-btn sr\">Review</button>\n    </div>\n</div>\n\n</div>\n\n<script>\n    function emit_event(message) {\n        parent.postMessage(message, '*');\n    }\n</script>\n",
    "progress_changed": true,
    "current_score": 2,
    "total_possible": 2,
    "attempts_used": 1
}

Screenshot 2024-05-16 at 14.56.34.pngImage Added

  1. Poll offline mode table

Action

Description

Screenshot

  1. Submit

Submit student response:

  1. Vote:
    Event: vote is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@poll+block@d15a5fab48ad444db05ba5170758fa4c/handler/vote
    Request Method: POST
    Payload: (Form Data) {"choice":"R"}
    Response:

    Code Block
    {
        "success": true,
        "errors": [],
        "can_vote": false,
        "submissions_count": 1,
        "max_submissions": 1
    }
       
  2. Get results:
    Event: get_results is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@poll+block@d15a5fab48ad444db05ba5170758fa4c/handler/get_results
    Request Method: POST
    Payload: (Form Data) {}
    Response:

    Code Block
    {
        "question": "<p>What is your favorite color?</p>",
        "tally": [
            {
                "count": 1,
                "answer": "<p>Red</p>",
                "img": null,
                "img_alt": null,
                "key": "R",
                "first": true,
                "choice": true,
                "last": false,
                "percent": 100,
                "leader": true
            },
            {
                "count": 0,
                "answer": "<p>Blue</p>",
                "img": null,
                "img_alt": null,
                "key": "B",
                "first": false,
                "choice": false,
                "last": false,
                "percent": 0,
                "leader": false
            },
            {
                "count": 0,
                "answer": "<p>Green</p>",
                "img": null,
                "img_alt": null,
                "key": "G",
                "first": false,
                "choice": false,
                "last": false,
                "percent": 0,
                "leader": false
            },
            {
                "count": 0,
                "answer": "<p>Other</p>",
                "img": null,
                "img_alt": null,
                "key": "O",
                "first": false,
                "choice": false,
                "last": true,
                "percent": 0,
                "leader": false
            }
        ],
        "total": 1,
        "feedback": "",
        "plural": false,
        "display_name": "Poll",
        "any_img": false,
        "block_id": "d15a5fab48ad444db05ba5170758fa4c"
    }

Screenshot 2024-05-16 at 15.57.33.pngImage Added

  1. View results

  1. View results.
    The same as Get results event in the answer submission.

  1. Export results to CSV

  1. Export results to CSV
    Event: csv_export is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@poll+block@d15a5fab48ad444db05ba5170758fa4c/handler/csv_export
    Request Method: POST
    Payload: (Form Data) {}
    Response:

Code Block
{
    "export_pending": false,
    "last_export_result": {
        "error": null,
        "report_filename": "poll-data-export-2024-05-16-125901.csv",
        "start_timestamp": 1715864341.7679486,
        "generation_time_s": 0.017258167266845703
    },
    "download_url": "/media/grades/bc464e2fcc7196b8bee26353b5b3742bd111e17d/poll-data-export-2024-05-16-125901.csv"
}

Screenshot 2024-05-16 at 16.00.44.pngImage Added

  1. Download CSV

  1. Download CSV
    Doesn’t work for now (Quince release, tutor local installation)
    The link to download the CSV file is not generated with error: local.edly.io refused to connect.

  1. Survey offline mode table.

Action

Description

Screenshot

  1. Submit

Submit student answer:

  1. Vote:
    Event: vote is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@survey+block@f2768608de5a45b0952fa73efa1e1e5e/handler/vote
    Request Method: POST
    Payload: (Form Data) {"enjoy":"Y","recommend":"N","learn":"M"}
    Response:

    Code Block
    {
        "success": true,
        "errors": [],
        "can_vote": false,
        "submissions_count": 1,
        "max_submissions": 1
    }
  2. Get results:
    Event: get_results is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@survey+block@f2768608de5a45b0952fa73efa1e1e5e/handler/get_results
    Request Method: POST
    Payload: (Form Data) {}
    Response:

    Code Block
    {
        "answers": [
            {
                "key": "Y",
                "label": "Yes"
            },
            {
                "key": "N",
                "label": "No"
            },
            {
                "key": "M",
                "label": "Maybe"
            }
        ],
        "tally": [
            {
                "label": "<p>Are you enjoying the course?</p>",
                "img": null,
                "img_alt": null,
                "answers": [
                    {
                        "count": 1,
                        "choice": true,
                        "key": "Y",
                        "top": true,
                        "percent": 100
                    },
                    {
                        "count": 0,
                        "choice": false,
                        "key": "N",
                        "top": false,
                        "percent": 0
                    },
                    {
                        "count": 0,
                        "choice": false,
                        "key": "M",
                        "top": false,
                        "percent": 0
                    }
                ],
                "key": "enjoy",
                "choice": false
            },
            {
                "label": "<p>Would you recommend this course to your friends?</p>",
                "img": null,
                "img_alt": null,
                "answers": [
                    {
                        "count": 0,
                        "choice": false,
                        "key": "Y",
                        "top": false,
                        "percent": 0
                    },
                    {
                        "count": 1,
                        "choice": true,
                        "key": "N",
                        "top": true,
                        "percent": 100
                    },
                    {
                        "count": 0,
                        "choice": false,
                        "key": "M",
                        "top": false,
                        "percent": 0
                    }
                ],
                "key": "recommend",
                "choice": false
            },
            {
                "label": "<p>Do you think you will learn a lot?</p>",
                "img": null,
                "img_alt": null,
                "answers": [
                    {
                        "count": 0,
                        "choice": false,
                        "key": "Y",
                        "top": false,
                        "percent": 0
                    },
                    {
                        "count": 0,
                        "choice": false,
                        "key": "N",
                        "top": false,
                        "percent": 0
                    },
                    {
                        "count": 1,
                        "choice": true,
                        "key": "M",
                        "top": true,
                        "percent": 100
                    }
                ],
                "key": "learn",
                "choice": false
            }
        ],
        "total": 1,
        "feedback": "",
        "plural": false,
        "block_name": "Poll",
        "block_id": "f2768608de5a45b0952fa73efa1e1e5e"
    }

Screenshot 2024-05-16 at 16.19.50.pngImage Added

  1. View results

  1. View results.
    The same as Get results event in the answer submission.

  1. Export results to CSV

  1. Export results to CSV
    Event: csv_export is sent.
    Request URL:
    http://local.edly.io:8000/courses/course-v1:f+f+f/xblock/block-v1:f+f+f+type@survey+block@f2768608de5a45b0952fa73efa1e1e5e/handler/csv_export
    Request Method: POST
    Payload: (Form Data) {}
    Response:

    Code Block
    {
        "export_pending": false,
        "last_export_result": {
            "error": null,
            "report_filename": "survey-data-export-2024-05-16-132114.csv",
            "start_timestamp": 1715865674.623029,
            "generation_time_s": 0.01493692398071289
        },
        "download_url": "/media/grades/bc464e2fcc7196b8bee26353b5b3742bd111e17d/survey-data-export-2024-05-16-132114.csv"
    }

  1. Download CSV

  1. Download CSV
    Doesn’t work for now (Quince release, tutor local installation)
    The link to download the CSV file is not generated with error: local.edly.io refused to connect.

  1. Done xBlock offline mode table.

Action

Description

Screenshot

Complete

  1. Mark as complete
    Event: toggle_button is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@done+block@b945afa1f8b547a1ad2090ee370b979b/handler/toggle_button
    Request Method: POST
    Payload: (Form Data) {"done":true}
    Response: {"state": true}

  2. Unmark
    Event: toggle_button is sent.
    Request URL:
    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@done+block@b945afa1f8b547a1ad2090ee370b979b/handler/toggle_button
    Request Method: POST
    Payload: (Form Data) {"done":false}
    Response: {"state": false}

Screenshot 2024-05-16 at 17.11.30.pngImage Added

Screenshot 2024-05-16 at 17.14.18.pngImage Added

  1. Word cloud xBlock offline mode table.

Action

Description

Screenshot

Save

Press save button

Event: submit is sent.
Request URL:
http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@word_cloud+block@d81b6465f3b54c0eb3be0e873f311fda/handler/xmodule_handler/submit
Request Method: POST
Payload: (Form Data)

Code Block
student_words%5B%5D=hello&student_words%5B%5D=world&student_words%5B%5D=how+&student_words%5B%5D=are&student_words%5B%5D=you

Response:

Code Block
{
    "status": "success",
    "submitted": true,
    "display_student_percents": true,
    "student_words": {
        "hello": 1,
        "world": 1,
        "how": 1,
        "are": 1,
        "you": 1
    },
    "total_count": 5,
    "top_words": [
        {
            "text": "are",
            "size": 1,
            "percent": 20
        },
        {
            "text": "hello",
            "size": 1,
            "percent": 20
        },
        {
            "text": "how",
            "size": 1,
            "percent": 20
        },
        {
            "text": "world",
            "size": 1,
            "percent": 20
        },
        {
            "text": "you",
            "size": 1,
            "percent": 20
        }
    ]
}

Screenshot 2024-05-16 at 17.33.44.pngImage Added

  1. Recommender xBlock offline mode table.

Action

Description

Screenshot

  1. Show and hide related resources

  1. Show related resources

    Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.hideShow&event=%7B%22status%22%3A%22show%22%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view
    

    Response: success

  2. Hide related resources
    Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.hideShow&event=%7B%22status%22%3A%22hide%22%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view

    Response: success

Screenshot 2024-05-16 at 17.56.50.pngImage Added

  1. Upload resources

Press upload resources button

  1. Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.importResource&event=%7B%22status%22%3A%22Entering+import+resource+mode%22%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view

    Response: success

  2. Event: import_resources is sent.
    Request URL:

    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@recommender+block@9a9fb119dccc4387be5ecbf06b985167/handler/import_resources
    Request Method: POST
    Payload: (Form Data)

    Code Block
    ------WebKitFormBoundarykH70x9xJEoEtPkxb
    Content-Disposition: form-data; name="file"; filename="resource (3).json"
    Content-Type: application/json
    
    
    ------WebKitFormBoundarykH70x9xJEoEtPkxb--

Screenshot 2024-05-16 at 18.07.20.pngImage Added

  1. Download resources

Press button Download resources

  1. Event: export_resources is sent.
    Request URL:

    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@recommender+block@9a9fb119dccc4387be5ecbf06b985167/handler/export_resources
    Request Method: POST
    Payload: (Form Data) {}

    Response:

    Code Block
    {
        "export": {
            "recommendations": {},
            "removed_recommendations": {},
            "endorsed_recommendation_ids": [],
            "endorsed_recommendation_reasons": [],
            "flagged_accum_resources": {}
        }
    }
  2. Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.exportResource&event=%7B%22status%22%3A%22Export+resources%22%2C%22information%22%3A%7B%22export%22%3A%7B%22recommendations%22%3A%7B%7D%2C%22removed_recommendations%22%3A%7B%7D%2C%22endorsed_recommendation_ids%22%3A%5B%5D%2C%22endorsed_recommendation_reasons%22%3A%5B%5D%2C%22flagged_accum_resources%22%3A%7B%7D%7D%7D%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view
    

    Response: success

Screenshot 2024-05-16 at 18.08.11.pngImage Added

  1. Add new resource

Press button Add new resource

  1. Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.addResource&event=%7B%22status%22%3A%22Entering+add+resource+mode%22%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view
    

    Response: success

  2. Event: event is sent.
    Request URL:

    http://local.overhang.io:8000/event
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.addResource&event=%7B%22status%22%3A%22Add+new+resource%22%2C%22information%22%3A%7B%22url%22%3A%22https%3A%2F%2Fwww.lipsum.com%2F%22%2C%22title%22%3A%22What+is+Lorem+Ipsum%3F%22%2C%22descriptionText%22%3A%22Lorem+Ipsum+is+simply+dummy+text+of+the+printing+and+typesetting+industry.+Lorem+Ipsum+has+been+the+industry's+standard+dummy+text+ever+since+the+1500s%2C+when+an+unknown+printer+took+a+galley+of+type+and+scrambled+it+to+make+a+type+specimen+book.+It+has+survived+not+only+five+centuries%2C+but+also+the+leap+into+electronic+typesetting%2C+remaining+essentially+unchanged.+It+was+popularised+in+the+1960s+with+the+release+of+Letraset+sheets+containing+Lorem+Ipsum+passages%2C+and+more+recently+with+desktop+publishing+software+like+Aldus+PageMaker+including+versions+of+Lorem+Ipsum.%22%2C%22description%22%3A%22C%3A%5C%5Cfakepath%5C%5Csad_725099.png%22%7D%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view
    

    Response: success

  3. Event: upload_screenshot is sent.
    Request URL:

    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@recommender+block@9a9fb119dccc4387be5ecbf06b985167/handler/upload_screenshot
    Request Method: POST
    Payload: (Form Data)

    Code Block
    event_type=mit.recommender.addResource&event=%7B%22status%22%3A%22Add+new+resource%22%2C%22information%22%3A%7B%22url%22%3A%22https%3A%2F%2Fwww.lipsum.com%2F%22%2C%22title%22%3A%22What+is+Lorem+Ipsum%3F%22%2C%22descriptionText%22%3A%22Lorem+Ipsum+is+simply+dummy+text+of+the+printing+and+typesetting+industry.+Lorem+Ipsum+has+been+the+industry's+standard+dummy+text+ever+since+the+1500s%2C+when+an+unknown+printer+took+a+galley+of+type+and+scrambled+it+to+make+a+type+specimen+book.+It+has+survived+not+only+five+centuries%2C+but+also+the+leap+into+electronic+typesetting%2C+remaining+essentially+unchanged.+It+was+popularised+in+the+1960s+with+the+release+of+Letraset+sheets+containing+Lorem+Ipsum+passages%2C+and+more+recently+with+desktop+publishing+software+like+Aldus+PageMaker+including+versions+of+Lorem+Ipsum.%22%2C%22description%22%3A%22C%3A%5C%5Cfakepath%5C%5Csad_725099.png%22%7D%2C%22element%22%3A%22block-v1%3Ad%2Bd%2Bd%2Btype%40recommender%2Bblock%409a9fb119dccc4387be5ecbf06b985167%22%7D&courserun_key=course-v1%3Ad%2Bd%2Bd&page=http%3A%2F%2Flocal.overhang.io%3A8000%2Fxblock%2Fblock-v1%3Ad%2Bd%2Bd%2Btype%40vertical%2Bblock%400603289c7f49411d8e4ab4a07de014ca%3Fshow_title%3D0%26show_bookmark_button%3D0%26recheck_access%3D1%26view%3Dstudent_view
    

    Response: {"file_name": "fs://6e0ac0d5e8b61274199e225a229209fa.png"}

  4. Event: add_resource is sent.
    Request URL:

    http://local.overhang.io:8000/courses/course-v1:d+d+d/xblock/block-v1:d+d+d+type@recommender+block@9a9fb119dccc4387be5ecbf06b985167/handler/add_resource
    Request Method: POST
    Payload: (Form Data)

    Code Block
    {"url":"https://www.lipsum.com/","title":"What is Lorem Ipsum?","descriptionText":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.","description":"fs://6e0ac0d5e8b61274199e225a229209fa.png"}

    Response:

    Code Block
    {
        "url": "https://www.lipsum.com/",
        "title": "What is Lorem Ipsum?",
        "description": "/static/djpyfs/block--v1-_d-.d-.d-.type_64_recommender-.block_64_9a9fb119dccc4387be5ecbf06b985167/fs/NONE.NONE/6e0ac0d5e8b61274199e225a229209fa.png",
        "descriptionText": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.",
        "id": "https://www.lipsum.com/",
        "upvotes": 0,
        "downvotes": 0
    }

Screenshot 2024-05-16 at 18.21.57.pngImage Added

  1. Requirements for the offline ORA xblock running