GithubHelp home page GithubHelp logo

maellak / openeclass Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 53.0 31.34 MB

The Open eClass Platform 3.0 - maellak fork

Home Page: http://www.openeclass.org/

PHP 89.22% CSS 2.19% JavaScript 8.28% Shell 0.01% XSLT 0.29% Ruby 0.01%

openeclass's People

Contributors

a123xxsp avatar afokou avatar axilleas avatar christosku avatar ckaltsidis avatar cmam avatar dnna avatar gfour avatar giannisdag avatar gitter-badger avatar grglaz avatar johnie-z avatar loukas1987 avatar papadakisemmanouel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

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

openeclass's Issues

Δημιουργία σελίδας κατατάξεων (3 άτομα)

Ο καθηγητής θα πρέπει να έχει την επιλογή να δημιουργήσει ένα report κατατάξεων για όλους τους φοιτητές που υπέβαλαν εργασία. Το report θα έχει μια μορφή αντίστοιχη με την παρακάτω και θα ανεβαίνει αυτόματα στα έγγραφα του μαθήματος.
summary_report

GET /courses/:cid/forums

Φέρνει τις περιοχές συζητήσεων που ανήκουν στο μάθημα :cid

Installation error

Στο τέλος της εγκατάστασης εμφανιστηκε το παρακάτω sql error. Ολοκληρώθηκε κανονικά όμως. Το βάζω εδώ να το κοιτάξουμε σε περίπτωση που μας δημιουργήσει πρόβλημα.

In file C:\xampp\htdocs\openeclass\install\install_db.php on line 684
Error: Unable to execute statement with error: "You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to
use near ' `attempt_status` tinyint(4) NOT NULL DEFAULT 1, ' at line 9" (SQLSTATE=1064 ERROR=42000)
[Statement='CREATE TABLE IF NOT EXISTS `exercise_user_record` ( `eurid` INT(11) NOT NULL AUTO_INCREMENT
PRIMARY KEY, `eid` INT(11) NOT NULL DEFAULT 0, `uid` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0,
`record_start_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `record_end_date` DATETIME DEFAULT NULL,
`total_score` INT(11) NOT NULL DEFAULT 0, `total_weighting` INT(11) DEFAULT 0, `attempt` INT(11) NOT NULL DEFAULT 0),
`attempt_status` tinyint(4) NOT NULL DEFAULT 1, `secs_remaining` INT(11) NOT NULL DEFAULT '0')
DEFAULT CHARACTER SET=utf8' Elapsed=0.00097599999999998] 

Δυνατότητα ορισμού τελεστών ελέγχου ανα σενάριο (2 άτομα)

Αυτή τη στιγμή το expected output που ορίζει ο καθηγητής πρέπει να είναι απολύτως ίδιο με αυτό που επιστρέφει το πρόγραμμα που ανέβασε ο φοιτητής αλλιώς το σενάριο θεωρούμε ότι απέτυχε.

Αυτό θα θέλαμε να γίνει πιο παραμετροποιήσιμο, επιτρέποντας στον καθηγητή να ορίζει και τον τελεστή ελέγχου όταν δημιουργεί ένα σενάριο (πχ. =, !=, >, >=, <, <=, contains, !contains, startsWith, endsWith, κτλ.). Στο UI αυτό μπορεί να αναπαρασταθεί ως ένα select element με όλους τους πιθανούς τελεστές ως επιλογές.

Για την υλοποίηση των ελέγχων προτείνεται η χρήστη της βιβλιοθήκης https://github.com/beberlei/assert που επιτρέπει τη δημιουργία πολλαπλών και σύνθετων assertions.

Λίστα μαθημάτων

Θα επιτρέπει στον χρήστη να δει τα διαθέσιμα μαθήματα, να φιλτράρει με βάση αυτά που είναι εγγεγγραμμένος και αν η πολιτική των μαθημάτων το επιτρέπει να εγγραφεί και να διαγραφεί από μαθήματα.

  • Όταν ο φοιτητής επιλέξει ένα μάθημα, σκέφτομαι να μπορεί να δει τις ανακοινώσεις και τα έγγραφα αυτού του μαθήματος.

Λίστα posts ενός forum

Αυτή η οθόνη θα εμφανίζει τα posts ενός forum (που ανήκει σε κάποιο μάθημα)

"Τοίχος" ανακοινώσεων

Η πρώτη σελίδα που θα βλέπει ο χρήστης μόλις αυθεντικοποιηθεί. Θα έχει τις ανακοινώσεις από όλα τα μαθήματα που είναι εγγεγραμμένος. Στην αρχική έκδοση δεν θα υπάρχει διαχωρισμός αναγνωσμένων και μη-αναγνωσμέων. Η ανακοίνωση μπορεί να περιέχει και link προς το μάθημα (θα το δούμε στη φάση design με τους εκπαιδευόμενους).

POST /announcements/:aid/read

Αυτό το call θα μαρκάρει ένα announcement ώς read. Αυτό θα γίνεται μέσω ενός νέου πίνακα announcements_users όπου θα κρατάμε announcement id (ann_id), user_id και timestamp του πότε διαβάστηκε.

Το GET announcements θα τροποποιηθεί κατάλληλα ώστε να αξιοποιεί αυτό τον πίνακα και να επιστρέφει ένα attribute του αν διαβάστηκε ή όχι. (δεν είναι μέρους αυτού του task)

Δυνατότητα χρήσης άλλων εναλλακτικών υπηρεσίων αντί του hackerearth (2 άτομα)

Ο κώδικας που αναπτύχθηκε για τον κριτή είναι άμεσα συνδεδμένος με τη χρήση της υπηρεσίας hackerearth για το compilation/execution. Αυτό θα πρέπει να αλλάξει και ο κώδικας που αφορά το συγκεκριμένο μέρος να γίνει modular ώστε να μπορούν εύκολα να προσθαφαιρούνται άλλες αντίστοιχες υπηρεσίες.

Μια πιθανή αντίστοιχη υπηρεσία είναι το http://compileonline.com/

Λίστα εγγράφων

Εμφανίζει στον χρήστη τα έγγραφα που έχουν αναρτηθεί σε ένα μάθημα χρησιμοποιώντας τον πόρο που δημιούργησε η ομάδα server. Θα υποστηρίζει τη δυνατότητα εμφάνισης κάποιων τύπων εγγράφων (πχ. pdf) απευθείας μέσα από την εφαρμογή στον κατάλληλο viewer.

GET /courses/:cid/forums/:fid/topics

Φέρνει τα posts που ανήκουν στην περιοχή συζητήσεων με id :did που ανήκει στο μάθημα :cid

GET /checknet

Ο Απόστολος ζήτησε να στέλνουμε ένα άσσο κάτι σαν ping για να ελέγχει εάν έχει net το κινητό.

Δημιουργία topic σε forum

Σε αυτή την οθόνη ο χρήστης θα μπορεί να γράψει ένα νέο topic σε forum (ας μη βάλουμε replies προς το παρόν)

Προσθήκη weight ανά σενάριο (2 άτομα)

Η βαθμολογία αυτή τη στιγμή βγαίνει βάσει των σεναρίων που πέρασαν/τον συνολικό αριθμό σεναρίων. Για να είναι πιο customizable θα πρέπει κατά τη δημιουργία ενός σεναρίου να μπορεί να οριστεί ένα βάρος σε μια κλίμακα 1-10 και ο βαθμός να προκύπτει λαμβάνοντας υπόψη τα βάρη κάθε σεναρίου.

Clean up gitignore

@dnna

Οκ, πιστεύω να έκανα σωστά τη μετατροπή :p
Επίσης έκανα sync με upstream. Το θέμα είναι ότι αν δουλέψουν την επομενη φορα από το master θα εχουν εξαφανιστει τα μαθηματα, καθως ο φακελος courses σβήστηκε.

Αυτό είναι το commit, ελπίζω να μην έχει σβηστεί κάτι άλλο. Το student_view.php δεν ξερω πως δημιουργηθηκε, δεν το εχουν ουτε στο .hgignore.

GET /announcements

Αυτός ο πορος θα αφορά τις ανακοινώσεις από όλα τα μαθήματα στα οποία είναι εγγεγραμμένος ο φοιτητής (θα κάνει δηλαδή aggregation). Θα υποστηρίζει μόνο μέθοδο GET.

Όταν υποβάλεται μια εργασία με αυτόματο κριτή δε θα πρέπει να εμφανίζονται δυο flash messages (1 άτομο)

Όταν μια εργασία διορθώνεται με τη βοήθεια αυτόματου κριτή, εμφανίζονται δύο flash messages ως εξής (και όπως φαίνεται αναλυτικότερα στο συννημένο screenshot):

  1. H βαθμολογία σας κατοχυρώθηκε με επιτυχία
  2. Το ανέβασμα της εργασίας σας ολοκληρώθηκε με επιτυχία !

Αυτά θα πρέπει να συγχωνευτούν σε ένα, ιδανικά με διαφορετικό κείμενο όταν γίνεται αυτόματη διόρθωση μέσω κριτή.

doubleflashmessages

GET /login/status

Αυτό το call θα δέχεται το access_token και θα επιστρέφει απλά true αν ο χρήστης είναι logged-in ή EXPIRED αν το access_token έχει λήξει.

Προσθήκη εργαλείου αυτοαξιολόγησης (3 άτομα)

Το συγκεκριμένο θα αφορά ένα νέο αυτόνομο εργαλείο ανεξάρτητο από τον κριτή (αν και θα μοιράζεται κώδικα). Μέσα από το εργαλείο κάθε φοιτητής θα μπορεί να δημιουργεί “Σενάρια Αυτοαξιολόγησης” (ΣΑ). Κάθε ΣΑ περιέχει σενάρια με input και expected output αντίστοιχα με τον τρόπο που τα ορίζει ο καθηγητής κατά τη δημιουργία εργασίας.

Στη συνέχεια θα μπορεί να ανεβάζει αρχεία σε ένα ΣΑ και να λαμβάνει ένα αντίστοιχο report με αυτό των εργασιών. Η ιδέα είναι το εργαλείο να διδάσκει τον φοιτητή πως μπορεί να δοκιμάσει τον κώδικα του και τι θα πρέπει να ελέγχει για να καλύψει τα διάφορα ενδεχόμενα edge-cases.

Δημιουργία online code editor (2 άτομα)

Απλός code editor με syntax highlighting και δυνατότητα ανεβάσματος εργασίας χωρίς να χρειάζεται τοπική έκδοση του αρχείου στον υπολογιστή του φοιτητή

GET /courses/:cid/documents

Αυτός ο πόρος θα αφορά τα έγγραφα που έχουν αναρτηθεί σ ένα μάθημα (παρουσιάσεις, σημειώσεις κτλ.). Θα υποστηρίζει μόνο μέθοδο GET. Επιπλέον θα επιτρέπει το "κατέβασμα" ενός εγγράφου μέσα από URL του τύπου /courses/:cid/documents/:did

πιθανό πρόβλημα στο Δημιουργία report αποτελεσμάτων (3 άτομα) #69

Επειδή ασχολούμαστε τώρα με issue 70, το οποίο κάνουμε χρησιμοποιώντας σαν βάση τον κώδικα για το issue 69, θεωρώ ότι ενδεχομένως να υπάρχει ένα πρόβλημα στο issue 69. Συγκεκριμένα, στην γραμμη 80 του work_result_rpt
function get_assignment_submit_details($sid) {
return Database::get()->querySingle("SELECT * FROM assignment_submit WHERE id = ?d",$sid);
}
τραβάει το assignment_submit_details με βάση τον κωδικό του assignment μόνο, ενώ θα έπρεπε να ελέγχει και το uid. Αν υποβληθούν παραπάνω από μία submits θα υπάρχει προβλημα

GET /enrolled_courses

Αυτός ο πόρος θα αφορά τα μαθήματα στα οποία έχει εγγραφεί ο φοιτητής. Θα υποστηρίζει μεθόδους GET, POST, DELETE. Η εγγραφή/διαγραφή θα γίνεται μέσα από URL του τύπου /enrolled_courses/:cid

GET /courses

Αυτός ο πόρος θα αφορά τα μαθήματα που έχουν καταχωρηθεί στο openclass. Θα υποστηρίζει μεθόδους GET. Αυτός ο πόρος δεν απαιτεί αυθεντικοποίηση (όπως και στο κανονικό openclass).

Προσθήκη κατάταξης, βάρους και τελεστή στο report αποτελεσμάτων (1 άτομο)

Δεδομένου ότι τα σχετικά features έχουν τελειώσει, θα ήταν καλό το report αποτελεσμάτων να περιλαμβάνει όλες τις σχετικές πληροφορίες.

Σχετικά issues:
#67
#70 (αν είναι δύσκολο μπορεί να φύγει εντελώς το πεδίο από το report αποτελεσμάτων)
#75

GET /notifications

Αυτός ο πόρος θα επιστρέφει τις ανακοινώσεις στα ίδια πλαίσια με το GET /announcements, αλλά επιπρόσθετα θα εμφανίζει και αναρτήσεις εγγράφων, ασκήσεων και εργασιών.

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.