GithubHelp home page GithubHelp logo

brails4's People

Contributors

aag1091 avatar abhishekbose87 avatar anilmaurya avatar anujaware avatar gautamrege avatar narutosanjiv avatar nitinzd avatar rahul100885 avatar sameer-tilak avatar sanghapal avatar spatil avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brails4's Issues

Seed file for levels, topic & contents

Seed with Fake data.

  • Seed levels
  • Seed topics inside the levels
  • Seed contents inside each topic
  • Seed multiple questions for each content
  • Seed multiple options for each question.

Admin panel: should be able to do basic CRUD for levels, topics & contents

Create new Level (similar to Table of contents).

  • Should name of level and nested Topic names
  • Add more topics should show only name of topic.

Edit Level

  • Should be able to edit level name and only all topic names.

Create and Edit content

First select level and topic and then create content.

  • Show the topic summary here for editing. This is because while adding new content, the topic summary may be changed.
  • Should create only 1 content on a page at a time.
  • Show button to delete the content. Ask for confirmation warning.

Admin Panel: Add questions & options

Select content for adding questions.

  • Add a questions name
  • Add 3 multiple choice options only.
  • Mark only 1 option as correct!
  • Add the "Add more questions" link

Accessible audio player

The current audio player on the site is enabled using the Media Element gem (http://mediaelementjs.com/). This player allows playback of audio files. One is supposed to be able to carry out the following actions on it:

  1. Play/Pause
  2. Stop
  3. Fast-forward and rewind
  4. Adjust volume.
    Although the functionality is available to sighted user, the same can't be carried out by screen reader users. Only play/pause button is focusable by keyboard and screen reader. The player needs to be accessible providing all the media player functionalities as it does for its visual perception. For a player to be accessible, screen reader user should be able to carry out all the above 4 operations and not just one.

To achieve this, following steps are involved:

  1. Keep visible player as it is for sighted users.
  2. Bring up another Accessible UI with play/pause, stop, rewind, forward, decrease volume and increase volume buttons
  3. Keep the Accessible UI hidden for sighted users.
  4. Keep the visible player hidden for screen reader user.

How to go about it?

  1. Get the Accessible UI for player in place ensuring that it makes necessary API calls from Media Element gem.
    Here, we need to come up with another set of buttons namely
  2. Play/Pause (toggle button)
  3. Stop
  4. Increase volume
  5. Decrease volume
  6. Rewind (jump by5 seconds)
  7. Fast-forward (jump by5 seconds)
    We should ensure that all the above buttons carry out the corresponding operations. One need not bother about the visual aspect or design of these buttons as they are going to be hidden for the sighted user anyways.
  8. Now, with both current player and the Accessible UI player in place, enable Accessibility.
    Here, using WCAG and WAI-ARIA standards, accessibility needs to be ensured so that
    a. current player stays visible to sighted user but doesn't appear focusable for screen reader user
    b. Accessible player becomes hidden for sighted users but comes within focus for screen reader users.

Content Preview is important

Before content, questions, transcript and the audio file is published, the admin should able to preview it.

  1. He should be able to listen to the audio.
  2. He should be able to read the summary
  3. He should be able to read the transcript.
  4. He should be able to see the questions.
  5. He should NOT be able to take the test!

Audit Action

Use mongoid-history or equivalent.

We need to track some actions of the users so that we can show how active the user is on brails.org.

  • Login
  • Took a test
  • Question attempted.
  • Completed content (all questions answered correctly)
  • Completed topic (all content completed)
  • Completed level (all topics completed)

We track a question attempt to enable gamification at a later stage. The number of attempts the user has taken to get all the answers correct will determine his score! This scoring algorithm can decided later in #5

Gamification

  1. Every time user logs in, the user gains 1 point.
  2. Every time user "starts a topic", the user gains 1 point.
  3. Every time the user plays a video, the user gains 1 point.
  4. Every time the user takes a test, the user gains 5 points.
  5. Every time the user gets the answer right, the user gains 10 points.
  6. Every time the user gets the answer wrong, the user LOSES 3 points.
  7. For every bonus round the user attempts, the user gets 50 points once for each bonus round
  8. Every time the user gets the bonus answer correct, he gets 20 points
  9. Every time the user gets the answer wrong, the user LOSES 5 points.

Users get these badges:
Novice: between 0 - 50 points
Student: 50 - 250 points
Professional: 250 - 1000 points

Expert: + 1000 points

Implement authorization

Use cancancan gem.

  • Add Roles: Student and Admin
  • Remove mongoid simple roles gem.

Ability

  • Admin can manage all levels, topics and content.
  • Student can take test.
  • Student can update their profile
  • Student can share their score (?? to be decided)

Taking a Test

User should be able to take a test in a wizard format.

  • Only ONE question should be randomly shown from a select set of questions for that content.
  • The user should see only questions that the user has not answered correctly. That means if the question is answered incorrectly, then it could be shown again.
  • Once the question is answered correctly, transition to another question. If the question is answered incorrectly, flash a message and remain on the same same page.
  • Flash message MUST be accessible.
  • The user should not see questions that they have already answered correctly.
  • After ALL the questions have been answered correctly, say 'Well Done!" or something. (show JS accessible balloons!! ๐Ÿ’ƒ )
  • Wizard transition
  • Question selection at random
  • Saving the answer
  • Validating the answers
  • Accessible Flash message about right / wrong answer.
  • Message after all questions have been answered correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.