=== GradeBook ===
Contributors: anevo
Tags: gradebook, course management, education, grades, students
Requires at least: 6.0
Tested up to: 6.9
Stable tag: 6.4.1
Requires PHP: 7.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A gradebook plugin for educators to create, maintain, and share grades quickly and efficiently.

== Description ==

GradeBook allows educators to manage courses, students, assignments, and grades directly from the WordPress dashboard.

**Instructor Features:**

* Create, edit, and delete courses
* Add, edit, and remove students (new users or existing WordPress users)
* Create, edit, delete, and reorder assignments
* Edit grade cells inline
* Filter assignments by category and toggle visibility
* Sort by assignment columns
* Export gradebook data to CSV
* View student and assignment statistics with interactive charts

**Student Features:**

* View enrolled courses and grades
* View assignment details including due dates
* View performance statistics with pie charts and line graphs

== Installation ==

1. Upload the `an-gradebook` folder to the `/wp-content/plugins/` directory, or install directly through the WordPress plugin screen.
2. Activate the plugin through the 'Plugins' screen in WordPress.
3. A new menu item labeled "GradeBook" will appear in the admin dashboard.

== Frequently Asked Questions ==

= How are student accounts created? =

When adding a student who is not already a WordPress user, a new user account is created automatically. The username is set to the first initial of their first name concatenated with their last name and a string of digits (all lowercase). A random password is generated.

= Can I add existing WordPress users as students? =

Yes. Enter the user's existing username (user_login) when adding a student. If the username exists in the database, the user is added to the gradebook without changing their credentials.

= How do students view their grades? =

Students log in to WordPress and navigate to the GradeBook menu item. They will see only their own grades for courses they are enrolled in.

== Screenshots ==

1. GradeBook with a few courses.
2. GradeBook with a course selected and corresponding students displayed.
3. Line chart for a particular student.
4. Pie chart for a particular assignment.
5. Add course modal.
6. Student view of GradeBook.
7. Student view of assignment details.

== Changelog ==

= 6.4.1 =
* address security vuls

= 6.4.0 =
* replace backbonejs with react

= 6.3.0 =
* move assets to git version control

= 6.2.0 =
* manual deploy

= 6.1.0 =
* escape perl capture group refs in bump-version.sh
* replace sed with perl in update-readme-changelog.sh
* sed command json parsing issue
* sed command json parsing issue
* add semantic-release

= 4.0.0 =
* Compatibility update for WordPress 6.0+ and PHP 7.4–8.3.
* Security: Added nonce verification to all AJAX endpoints.
* Security: All database queries now use prepared statements.
* Security: All user inputs are sanitized and outputs are escaped.
* Security: Added capability checks to all admin endpoints.
* Database tables now use the WordPress table prefix for multisite compatibility.
* Replaced RequireJS module loading with WordPress script enqueue system.
* Uses WordPress-bundled jQuery, Backbone, and Underscore instead of bundled copies.
* Updated Google Charts integration to modern API.
* Added internationalization (i18n) support.
* Removed hardcoded default password for new student accounts; random passwords are now generated.
* Fixed PHP 8.x deprecation warnings and potential errors.
* Fixed undefined variable bugs in course and student creation.
* Meets WordPress.org plugin directory coding standards.

= 3.5.7 =
* Bug Fix: On course delete, gradebook would empty its views. Reclicking the course rerendered the gradebook correctly.
* Minified the app into two essential files.
* Added a debugging toggle in GradeBook.php.
* Slight change to views. Rounded corners are now sharp.

= 3.5.6 =
* Database upgrade: Users no longer in the database are removed from gradebooks.
* Use RequireJS to manage file loading for the app.
* Bug Fix: Adding a student already in the database using their user_login would show an empty user_login cell until page refresh.

= 3.5.5 =
* Bug fix: Sort on first assignment column broken.
* General file management.

= 3.5.4 =
* New Feature: Choose which assignments are visible to students via the edit assignment modal.

= 3.5.3 =
* Update and clean forms.
* Bug fix: Adding a student to a filtered gradebook caused hidden assignment cells to appear.
* CSV filename is derived from the course name and id.

= 3.5.2 =
* Added details view on student side. Students can now view due dates.

= 3.5.1 =
* Fixed bug on student view where the gradebook would not display.

= 3.5 =
* Updated delete student modal styling.
* Added dropdown tools menu for courses.
* Fixed styling conflict with WordPress #adminmenuback.
* New Feature: Export GradeBook to CSV.

= 3.4 =
* Added support for server requests of type x-http-method-override.
* Restyled using Bootstrap.

= 3.3 =
* Instructors can add existing WordPress users by entering their user_login.

= 3.2 =
* Student view improvements.
* Code maintenance: Split up Gradebook_student.js into models and views.

= 3.1 =
* Code maintenance: Split up GradeBook.php into classes.
* Bug Fix: user_login was incorrectly generated.
* Replaced ID column with Login column in the gradebook.
* Added student menu button for edit, delete, and statistics views.

= 3.0 =
* Feature: Added assignment ordering with shift left/right options.
* Fixed assignment header bugs in Firefox.
* Cleaned up views to properly remove unused views and free memory.
* Database upgrade to handle assignment ordering.

== Upgrade Notice ==

= 6.0.0 =
Breaking change: Legacy database migrations have been removed. If upgrading from a version older than 4.0.0, deactivate the plugin, delete the `an_gradebook_db_version` row from `wp_options`, then reactivate. This performs a fresh database setup. Existing data in pre-4.0 unprefixed tables will not be migrated automatically.

= 4.0.0 =
Major compatibility update. Database tables now use WordPress table prefixes. All AJAX endpoints are secured with nonces. Requires WordPress 6.0+ and PHP 7.4+.

== Credits ==

* Plugin icon: [IconFinder](https://www.iconfinder.com/icons/175285/edit_property_icon#size=256)
