*** Changelog *** 2021.11.24 - version 3.14.0 * New: Answer feedback improvements * Add answer feedback editor settings [#4344](https://github.com/Automattic/sensei/pull/4344) * Update answer feedback display to use new options [#4349](https://github.com/Automattic/sensei/pull/4349) * Revitalisation of Answer Feedback [#4313](https://github.com/Automattic/sensei/pull/4313) * Update grading screen with answer feedback changes [#4427](https://github.com/Automattic/sensei/pull/4427) * Refine answer feedback blocks [#4354](https://github.com/Automattic/sensei/pull/4354) * Re-style answer feedback frontend [#4408](https://github.com/Automattic/sensei/pull/4408) * Fix: Remove pagination from legacy course results page [#4328](https://github.com/Automattic/sensei/pull/4328) * Fix: Update Quiz title when parent Lesson title is updated. #4292 [#4331](https://github.com/Automattic/sensei/pull/4331) * Fix: Add is_array check to avoid warnings [#4340](https://github.com/Automattic/sensei/pull/4340) * Tweak: Remove experimental rest api [#4191](https://github.com/Automattic/sensei/pull/4191) * Tweak: Remove old WP version checks [#4194](https://github.com/Automattic/sensei/pull/4194) * Fix: Do not show "View results" in course summary if course is not complete [#4330](https://github.com/Automattic/sensei/pull/4330) * Fix: Omit className attribute from quiz structure sync [#4347](https://github.com/Automattic/sensei/pull/4347) * Fix: Fix is_sensei() false positives [#4343](https://github.com/Automattic/sensei/pull/4343) * Fix: Fix PHPCS issues [#4352](https://github.com/Automattic/sensei/pull/4352) * Fix: Fix random order for new questions with multiple choice [#4356](https://github.com/Automattic/sensei/pull/4356) * Fix: Fix custom URL slug for course results link [#4358](https://github.com/Automattic/sensei/pull/4358) * Tweak: Add a custom appender in course outline block [#4350](https://github.com/Automattic/sensei/pull/4350) * Fix: Use flexbox to display the analysis page correctly on wide and narrow screens [#4360](https://github.com/Automattic/sensei/pull/4360) * Fix: Fix random order for new questions with multiple choice [#4364](https://github.com/Automattic/sensei/pull/4364) * Fix: $taxonomies can be null, don't always treat it as an array [#4329](https://github.com/Automattic/sensei/pull/4329) * Fix: Fix single page blocks script loading on the front-end [#4402](https://github.com/Automattic/sensei/pull/4402) * Fix: Fix PHP linter throws an error when the project folder has spaces [#4403](https://github.com/Automattic/sensei/pull/4403) * Tweak: Add course ID class to lesson pages [#4388](https://github.com/Automattic/sensei/pull/4388) * Tweak: Update README.md to link to senseilms.com [#4418](https://github.com/Automattic/sensei/pull/4418) * Fix: Load less User data for Teacher metabox [#4417](https://github.com/Automattic/sensei/pull/4417) * Tweak: Add quiz block in the lessons when the block is not there [#4420](https://github.com/Automattic/sensei/pull/4420) * Tweak: Update readme.txt with new description content [#4423](https://github.com/Automattic/sensei/pull/4423) * Fix: Fix missing space for 'Extensions' heading [#4424](https://github.com/Automattic/sensei/pull/4424) * Tweak: Improve performance on course ordering [#4422](https://github.com/Automattic/sensei/pull/4422) * Fix: Fix course complete emails not being sent [#4425](https://github.com/Automattic/sensei/pull/4425) 2021.10.12 - version 3.13.3 * New: Additional hooks for course expiration * Add clock notice type [#4302](https://github.com/Automattic/sensei/pull/4302) * Add filters to show enrollment actions and view results block [#4318](https://github.com/Automattic/sensei/pull/4318) * Add filters to extend learner courses page [#4319](https://github.com/Automattic/sensei/pull/4319) * Update learner courses priorities [#4322](https://github.com/Automattic/sensei/pull/4322) * Tweak: Add Sensei icon to admin notices [#4314](https://github.com/Automattic/sensei/pull/4314) * Tweak: Allow expansion of manual enrollments [#4317](https://github.com/Automattic/sensei/pull/4317) * Tweak: Update Sensei LMS icon in WordPress admin sidebar [#4310](https://github.com/Automattic/sensei/pull/4310) * Fix: Fix learner management alignment [#4333](https://github.com/Automattic/sensei/pull/4333) * Fix: Allow sorting of lessons with other fields [#4323](https://github.com/Automattic/sensei/pull/4323) * Fix: Fix notice of blocks state (have or not Sensei blocks) in dynamic lesson [#4309](https://github.com/Automattic/sensei/pull/4309) * Fix: Update sample course [#4308](https://github.com/Automattic/sensei/pull/4308) * Fix: Learner Courses block styling issues [#4298](https://github.com/Automattic/sensei/pull/4298) 2021.10.01 - version 3.13.2 * Fix: Handle extensions fetch error [#4324](https://github.com/Automattic/sensei/pull/4324) 2021.08.26 - version 3.13.1 * New: Add filters to customize the My Courses and Course Completed page content [#4286](https://github.com/Automattic/sensei/pull/4286), [#4290](https://github.com/Automattic/sensei/pull/4290) * New: Add "Find More Courses" block variation [#4293](https://github.com/Automattic/sensei/pull/4293) * Tweak: Rename Take Course block to Course Sign Up [#4288](https://github.com/Automattic/sensei/pull/4288) * Tweak: Update Learner Courses block styles [#4291](https://github.com/Automattic/sensei/pull/4291) * Tweak: Clarify editor notice when adding first Sensei block or removing last Sensei block [#4276](https://github.com/Automattic/sensei/pull/4276) * Fix: "No lessons message" on Order Lessons page when lessons exist [#4269](https://github.com/Automattic/sensei/pull/4269) πŸ‘ @timwiel * Fix: Custom color selector in Learner Courses block [#4289](https://github.com/Automattic/sensei/pull/4289) 2021.08.12 - version 3.13.0 * New: Course Completed Page * Add Course Completed page [#4254](https://github.com/Automattic/sensei/pull/4254), [#4280](https://github.com/Automattic/sensei/pull/4280) * Add Course Completed Actions block [#4266](https://github.com/Automattic/sensei/pull/4266) * Add Course Results block [#4267](https://github.com/Automattic/sensei/pull/4267), [#4273](https://github.com/Automattic/sensei/pull/4273), [#4279](https://github.com/Automattic/sensei/pull/4279) * Update View Results button link [#4270](https://github.com/Automattic/sensei/pull/4270) * Add default blocks to Course Completed page [#4281](https://github.com/Automattic/sensei/pull/4281) * Fix: Use new filter for block categories in WordPress 5.8 [#4264](https://github.com/Automattic/sensei/pull/4264) 2021.07.19 - version 3.12.0 * New: Add grid view to Learner Courses block and update list view [#4243](https://github.com/Automattic/sensei/pull/4243) * New: PHP 8 compatibility [#4244](https://github.com/Automattic/sensei/pull/4244) * Tweak: Don't set minimum width for course progress bar on front end [#4247](https://github.com/Automattic/sensei/pull/4247) * Tweak: Add notice when adding first Sensei block or removing last block for a course or lesson [#4246](https://github.com/Automattic/sensei/pull/4246) * Fix: Caching course structure order [#4326](https://github.com/Automattic/sensei/pull/4236) * Fix: Use standard way of getting quiz ID on grading page [#4240](https://github.com/Automattic/sensei/pull/4240) 2021.06.23 - version 3.11.1 * Tweak: Update SenseiLMS.com notices integration [#4233](https://github.com/Automattic/sensei/pull/4233) 2021.05.10 - version 3.11.0 * New: Extensions Page Redesign * Add counter to Extensions menu to display the number of available plugin updates [#4156](https://github.com/Automattic/sensei/pull/4156) * Add missing WooCommerce.com connection notice [#4161](https://github.com/Automattic/sensei/pull/4161) * Add extensions page structure [#4162](https://github.com/Automattic/sensei/pull/4162) * Improve extensions page responsive styles [#4163](https://github.com/Automattic/sensei/pull/4163) * Add filters to the Extensions page [#4164](https://github.com/Automattic/sensei/pull/4164) * Add extensions update banner [#4167](https://github.com/Automattic/sensei/pull/4167) * Add extension card logic [#4180](https://github.com/Automattic/sensei/pull/4180) * Integrate extensions page with real data [#4183](https://github.com/Automattic/sensei/pull/4183) * Tweak extensions page design [#4185](https://github.com/Automattic/sensei/pull/4185) * Create Extensions page dynamically [#4197](https://github.com/Automattic/sensei/pull/4197) * Minor tweaks to copy on Extensions page [#4199](https://github.com/Automattic/sensei/pull/4199) * Add images to extensions page [#4201](https://github.com/Automattic/sensei/pull/4201) * Add extension update endpoint [#4203](https://github.com/Automattic/sensei/pull/4203) * Get extensions layout from SenseiLMS.com [#4204](https://github.com/Automattic/sensei/pull/4204) * Enable updating plugins on Extensions page [#4205](https://github.com/Automattic/sensei/pull/4205) * Add changelog links to extensions with update available [#4210](https://github.com/Automattic/sensei/pull/4210) * Handle connecting to WooCommerce.com from Extensions page [#4213](https://github.com/Automattic/sensei/pull/4213) * Enable installing plugins on Extensions page [#4214](https://github.com/Automattic/sensei/pull/4214) * Handle activating / installing WooCommerce from the Extensions page [#4215](https://github.com/Automattic/sensei/pull/4215) * Preload extensions data [#4217](https://github.com/Automattic/sensei/pull/4217) * Simplify ExtensionActions component styles [#4219](https://github.com/Automattic/sensei/pull/4219) * Add space between featured cards [#4221](https://github.com/Automattic/sensei/pull/4221) * Log when extensions are installed or updated on the Extensions page [#4222](https://github.com/Automattic/sensei/pull/4222) * Update extensions error message to be formatted [#4225](https://github.com/Automattic/sensei/pull/4225) * New: Add Lesson Properties block [#4196](https://github.com/Automattic/sensei/pull/4196) * Tweak: Ignore "Course Archive Image" setting when rendering featured image in Learner Courses block [#4184](https://github.com/Automattic/sensei/pull/4184) * Tweak: Remove WooCommerce Components dependency [#4189](https://github.com/Automattic/sensei/pull/4189) * Tweak: Deprecate experimental REST API [#4190](https://github.com/Automattic/sensei/pull/4190) * Tweak: Filter arguments when duplicating a Sensei post [#4198](https://github.com/Automattic/sensei/pull/4198) * Fix: Fix sporadic unit test failure [#4195](https://github.com/Automattic/sensei/pull/4195) 2021.04.14 - version 3.10.0 * New: Learner Courses block (My Courses) [#4126](https://github.com/Automattic/sensei/pull/4126) * New: Add View Results block [#4155](https://github.com/Automattic/sensei/pull/4155) * New: Add blocks to My Courses page on setup [#4137](https://github.com/Automattic/sensei/pull/4137) * New: Add learner messages button block [#4134](https://github.com/Automattic/sensei/pull/4134) * Tweak: Improve conditional content description [#4115](https://github.com/Automattic/sensei/pull/4115) * Tweak: Print the first lesson in a prerequisite chain [#4114](https://github.com/Automattic/sensei/pull/4114) * Tweak: Remove Gutenberg compatibility assets [#4132](https://github.com/Automattic/sensei/pull/4132) * Tweak: Show teacher's questions only when using category questions [#4148](https://github.com/Automattic/sensei/pull/4148) 2021.03.31 - version 3.9.1 * New: Show validation in single question editor [#4087](https://github.com/Automattic/sensei/pull/4087) * New: Log template overrides [#4113](https://github.com/Automattic/sensei/pull/4113) * Tweak: Add input as answer when unfocusing gap fill question [#4119](https://github.com/Automattic/sensei/pull/4119) * Tweak: Round course progress percentage to nearest integer [#4131](https://github.com/Automattic/sensei/pull/4131) * Tweak: Add points suffix to question grade controls [#4120](https://github.com/Automattic/sensei/pull/4120) * Tweak: Remove placeholder text from category question selector [#4144](https://github.com/Automattic/sensei/pull/4144) * Tweak: Make invalid category question save message more descriptive [#4145](https://github.com/Automattic/sensei/pull/4145) * Tweak: Add Sensei version to extension messages transient [#4143](https://github.com/Automattic/sensei/pull/4143) * Fix: Enable updateSelection to prevent block crashes [#4125](https://github.com/Automattic/sensei/pull/4125) * Fix: Create module taxonomy before cleaning data [#4128](https://github.com/Automattic/sensei/pull/4128) * Fix: Enable legacy quiz meta boxes if the Classic Editor plugin is activated [#4147](https://github.com/Automattic/sensei/pull/4147) * Fix: Error when manually adding course outline block [#4141](https://github.com/Automattic/sensei/pull/4141) 2021.03.25 - version 3.9.0 * New: Quiz Block * Add Quiz and Question blocks [#3936](https://github.com/Automattic/sensei/pull/3936) * Prepare structure store for quiz block [#3950](https://github.com/Automattic/sensei/pull/3950) * Add quiz block structure store and sync [#3958](https://github.com/Automattic/sensei/pull/3958) * Add Quiz block settings [#3987](https://github.com/Automattic/sensei/pull/3987) * Normalize quiz options attribute coming from the REST API [#3996](https://github.com/Automattic/sensei/pull/3996) * Add Quiz block to block template and ensure only one Quiz block can be added to a lesson [#3983](https://github.com/Automattic/sensei/pull/3983) * Update block descriptions and quiz settings helper text [#4000](https://github.com/Automattic/sensei/pull/4000) * Add existing questions modal [#4003](https://github.com/Automattic/sensei/pull/4003) * Handle adding existing questions to quiz [#4014](https://github.com/Automattic/sensei/pull/4014) * Add icon for quiz block [#4017](https://github.com/Automattic/sensei/pull/4017) * Handling saving quiz [#4011](https://github.com/Automattic/sensei/pull/4011) * Add the quiz block when the quiz is enabled for lesson [#4018](https://github.com/Automattic/sensei/pull/4018) * Unescape question category term names in existing question modal [#4041](https://github.com/Automattic/sensei/pull/4041) * Fix question type dropdown in existing question modal for teachers [#4040](https://github.com/Automattic/sensei/pull/4040) * Fix resetting the "Number of Questions" quiz setting [#4037](https://github.com/Automattic/sensei/pull/4037) * Implement saving for single question block editor [#4032](https://github.com/Automattic/sensei/pull/4032) * Update inserter for quiz block [#4038](https://github.com/Automattic/sensei/pull/4038) * Handle quiz status based on block presence and question count [#4033](https://github.com/Automattic/sensei/pull/4033) * Migrate question media [#4035](https://github.com/Automattic/sensei/pull/4035), [#4064](https://github.com/Automattic/sensei/pull/4064) * Disable block based question editor when question category is used in any quiz [#4054](https://github.com/Automattic/sensei/pull/4054) * Fix existing questions not loading in WP 5.7 [#4069](https://github.com/Automattic/sensei/pull/4069) * Limit "Number of Questions" setting to number of questions in quiz [#4063](https://github.com/Automattic/sensei/pull/4063) * Fix editor undo for auto-inserted blocks & quiz block [#4074](https://github.com/Automattic/sensei/pull/4074) * Fix existing questions modal auto-closing after block insertion [#4084](https://github.com/Automattic/sensei/pull/4084) * Avoid overriding non-editable question [#4086](https://github.com/Automattic/sensei/pull/4086), [#4093](https://github.com/Automattic/sensei/pull/4093) * Add quiz block validation [#4077](https://github.com/Automattic/sensei/pull/4077) * Include category questions when calculating the upper limit of the "Number of Questions" setting [#4090](https://github.com/Automattic/sensei/pull/4090) * Fix questions not loading for teachers [#4094](https://github.com/Automattic/sensei/pull/4094) * Fix draft question block focus and visibility [#4091](https://github.com/Automattic/sensei/pull/4091) * Fix error with quiz appender [#4096](https://github.com/Automattic/sensei/pull/4096), [#4098](https://github.com/Automattic/sensei/pull/4098) * Fix page jump when clicking the quiz appender [#4100](https://github.com/Automattic/sensei/pull/4100) * Fix minor quiz block issues [#4103](https://github.com/Automattic/sensei/pull/4103) * Only include questions in the existing questions modal that haven't already been added to the quiz [#4109](https://github.com/Automattic/sensei/pull/4109) * New: Question Block * Add question type selector [#3940](https://github.com/Automattic/sensei/pull/3940) * Add question numbering [#3941](https://github.com/Automattic/sensei/pull/3941) * Add Single Line and Multi Line answer boxes [#3963](https://github.com/Automattic/sensei/pull/3963) * Add Gap Fill question block [#3974](https://github.com/Automattic/sensei/pull/3974) * Add Multiple Choice and True/False question blocks [#3967](https://github.com/Automattic/sensei/pull/3967) * Add File Upload question block [#3975](https://github.com/Automattic/sensei/pull/3975) * Improve question block navigation [#3976](https://github.com/Automattic/sensei/pull/3976) * Add common Question block settings [#3979](https://github.com/Automattic/sensei/pull/3979) * Update default answers for multiple choice question [#3992](https://github.com/Automattic/sensei/pull/3992) * Ensure question block types are the same as the types in the question bank [#3997](https://github.com/Automattic/sensei/pull/3997) * Remove Question Categories section from question block settings [#4008](https://github.com/Automattic/sensei/pull/4008) * Add points assignment to question block toolbar [#3999](https://github.com/Automattic/sensei/pull/3999) * Add shared question notice [#4001](https://github.com/Automattic/sensei/pull/4001) * Adjust question block controls [#4012](https://github.com/Automattic/sensei/pull/4012) * Synchronize question API and block attribute schema [#4029](https://github.com/Automattic/sensei/pull/4029) * Minor tweaks to question blocks [#4031](https://github.com/Automattic/sensei/pull/4031) * Add read-only question blocks [#4061](https://github.com/Automattic/sensei/pull/4061) * Fix React warning about null `textarea` [#4070](https://github.com/Automattic/sensei/pull/4070) * Don't add question block when it already exists (auto-draft) [#4071](https://github.com/Automattic/sensei/pull/4071) * Changes for question type extensibility [#4066](https://github.com/Automattic/sensei/pull/4066) * Change gap fill before/after to plain text input [#4082](https://github.com/Automattic/sensei/pull/4082) * Update question block validation visuals [#4104](https://github.com/Automattic/sensei/pull/4104) * New: Category Question block * Add settings and basic UI to category question block [#4080](https://github.com/Automattic/sensei/pull/4080) * Remove category question feature flag [#4088](https://github.com/Automattic/sensei/pull/4088) * New: REST API * Add API endpoint for fetching a quiz [#3959](https://github.com/Automattic/sensei/pull/3959) * Expand multiple_question post type in quiz REST API [#3966](https://github.com/Automattic/sensei/pull/3966) * Add API endpoints for questions [#3993](https://github.com/Automattic/sensei/pull/3993) * Implement saving quiz and questions via the REST API [#3972](https://github.com/Automattic/sensei/pull/3972) * Retrieve individual question options from REST API [#4013](https://github.com/Automattic/sensei/pull/4013) * Add editable flag to question REST API responses [#4036](https://github.com/Automattic/sensei/pull/4036) * Add lesson quiz question protection to REST API [#4039](https://github.com/Automattic/sensei/pull/4039) * Add multiple/category questions to REST API [#4072](https://github.com/Automattic/sensei/pull/4072) * New: Add filter to allow for changing uploaded file prefix [#3986](https://github.com/Automattic/sensei/pull/3986) * New: Display enrollment provider exceptions in the logs [#3989](https://github.com/Automattic/sensei/pull/3989) * New: Add filter to disable block based quiz editor [#4009](https://github.com/Automattic/sensei/pull/4009) * New: Log the quiz editor being used on a site [#4022](https://github.com/Automattic/sensei/pull/4022) * New: Log legacy flags in system usage tracking [#4056](https://github.com/Automattic/sensei/pull/4056) * New: Log sensei_plugin_update event on plugin update [#4058](https://github.com/Automattic/sensei/pull/4058) * New: Add single question block editor [#4025](https://github.com/Automattic/sensei/pull/4025) * New: Filter the block templates [#4026](https://github.com/Automattic/sensei/pull/4026) * New: Only use block based editor in question bank if enabled [#4055](https://github.com/Automattic/sensei/pull/4055) * New: Fix previous questions that have changed teachers [#4030](https://github.com/Automattic/sensei/pull/4030) * Tweak: Generalize lesson block inserters [#3952](https://github.com/Automattic/sensei/pull/3952) * Tweak: Clean up course outline hooks [#3953](https://github.com/Automattic/sensei/pull/3953) * Tweak: Flatten structure for course outline schema references in the REST API [#4015](https://github.com/Automattic/sensei/pull/4015) * Tweak: Change question author when possible on teacher change [#4024](https://github.com/Automattic/sensei/pull/4024) * Tweak: Use block button styles for quiz actions [#4023](https://github.com/Automattic/sensei/pull/4023) * Tweak: Allow draft questions if they are not in a quiz [#4076](https://github.com/Automattic/sensei/pull/4076) * Tweak: Update lessons in sample course [#4083](https://github.com/Automattic/sensei/pull/4083) * Tweak: Preload course and quiz structure [#3995](https://github.com/Automattic/sensei/pull/3995) * Tweak: Remove abandoned `multiple_question` posts [#4060](https://github.com/Automattic/sensei/pull/4060) * Tweak: Add Sensei blocks to the top of the block inserter [#4112](https://github.com/Automattic/sensei/pull/4112) * Tweak: Prevent enrolment calculations on each update [#4121](https://github.com/Automattic/sensei/pull/4121) * Fix: Infinite loop when saving course structure [#4027](https://github.com/Automattic/sensei/pull/4027) * Fix: Fatal error when `post_password_required` is called early [#4006](https://github.com/Automattic/sensei/pull/4006) * Fix: Prevent teachers from being able to add other teachers' questions [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Don't show breadcrumb to teachers on Grading page for courses or lessons they don't own [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Check if the user can edit a course before adding a lesson to it [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Validate question owner before adding a question [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Only show courses belonging to the current teacher on the Analysis page [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Quiz nonce checks [#4085](https://github.com/Automattic/sensei/pull/4085) * Fix: Email not sending when a learner starts a course [#4089](https://github.com/Automattic/sensei/pull/4089) 2021.02.17 - version 3.8.1 * Fix: Fix lesson module metabox saving with Yoast installed [#3982](https://github.com/Automattic/sensei/pull/3982) * Fix: Fix course lessons in modules not appearing on analysis screen [#3971](https://github.com/Automattic/sensei/pull/3971) * Fix: Allow template field to be edited by teachers [#3985](https://github.com/Automattic/sensei/pull/3985) * Fix: Add post type and access checks to main view on learner management [#3984](https://github.com/Automattic/sensei/pull/3984) πŸ‘ foobar7 * Fix: Check for edit access for course in bulk learner management [#3984](https://github.com/Automattic/sensei/pull/3984) πŸ‘ foobar7 * Fix: Make sure users who aren't participants can't see private messages [#3984](https://github.com/Automattic/sensei/pull/3984) πŸ‘ foobar7 * Fix: Escape HTML in gap fill editor preview [#3984](https://github.com/Automattic/sensei/pull/3984) πŸ‘ foobar7 * Fix: Hide REST API lesson content and remove lesson and question feeds [#3984](https://github.com/Automattic/sensei/pull/3984) 2021.02.09 - version 3.8.0 * New: Conditional Content block * Add Restricted Course Content block [#3849](https://github.com/Automattic/sensei/pull/3849) * Rename Restricted Content block to Conditional Content [#3939](https://github.com/Automattic/sensei/pull/3939) * New: Lesson Actions block * Isolate course blocks [#3885](https://github.com/Automattic/sensei/pull/3885) * Add basic setup for lesson actions block [#3886](https://github.com/Automattic/sensei/pull/3886) * Add Lesson Actions block settings [#3887](https://github.com/Automattic/sensei/pull/3887) * Fix button alignment in lesson actions block [#3895](https://github.com/Automattic/sensei/pull/3895) * Style selected state of buttons in editor for the lesson actions block [#3903](https://github.com/Automattic/sensei/pull/3903) * Fix issues with selecting different buttons in the lesson actions block [#3907](https://github.com/Automattic/sensei/pull/3907) * Add Sensei LMS block category for lessons [#3908](https://github.com/Automattic/sensei/pull/3908) * Add `View quiz` button to lesson actions block [#3910](https://github.com/Automattic/sensei/pull/3910) * Fix alignment of buttons in Lesson Actions block [#3913](https://github.com/Automattic/sensei/pull/3913) * Disable Complete Lesson button in editor for an in-progress lesson if passmark must be achieved [#3914](https://github.com/Automattic/sensei/pull/3914) * Add shared block foundation [#3917](https://github.com/Automattic/sensei/pull/3917) * Display Lesson Actions block in the frontend [#3929](https://github.com/Automattic/sensei/pull/3929) * Fix opacity of disabled buttons in Lesson Actions block [#3932](https://github.com/Automattic/sensei/pull/3932) * Handle lesson hooks for lessons which contain a block [#3935](https://github.com/Automattic/sensei/pull/3935) * Add block template to the lesson editor [#3937](https://github.com/Automattic/sensei/pull/3937) * Fully hide inactive buttons in Lesson Actions block and add state separator [#3943](https://github.com/Automattic/sensei/pull/3943) * Update block descriptions for Lesson Actions blocks [#3944](https://github.com/Automattic/sensei/pull/3944) * Show View Quiz button in Lesson Actions block even after quiz is completed [#3946](https://github.com/Automattic/sensei/pull/3946) * Update Reset Lesson block description [#3948](https://github.com/Automattic/sensei/pull/3948) * Use quiz state to determine if complete lesson is allowed [#3949](https://github.com/Automattic/sensei/pull/3949) * Fix: Don't initialize lesson blocks if they don't exist on the page [#3960](https://github.com/Automattic/sensei/pull/3960) * Fix Lesson Actions styles [#3961](https://github.com/Automattic/sensei/pull/3961) * New: Add toolbar dropdown component for use with blocks [#3904](https://github.com/Automattic/sensei/pull/3904) * New: Log when lessons are updated [#3920](https://github.com/Automattic/sensei/pull/3920) * Tweak: Use Sensei_Notices in Take Course block [#3901](https://github.com/Automattic/sensei/pull/3901) * Tweak: Update question field names [#3905](https://github.com/Automattic/sensei/pull/3905) * Tweak: Update text in Lesson Actions and Restricted Course Content blocks [#3927](https://github.com/Automattic/sensei/pull/3927) * Tweak: Update blocks architecture [#3928](https://github.com/Automattic/sensei/pull/3928) * Tweak: Add icons for Conditional Content and Lesson Actions blocks [#3954](https://github.com/Automattic/sensei/pull/3954) * Fix: Enable translating blocks [#3919](https://github.com/Automattic/sensei/pull/3919) * Fix: Do not allow duplicate notices to be displayed [#3923](https://github.com/Automattic/sensei/pull/3923) * Fix: Fix lesson order being changed when saving lesson [#3951](https://github.com/Automattic/sensei/pull/3951) πŸ‘ @hansschuijff * Fix: Fix block translations [#3962](https://github.com/Automattic/sensei/pull/3962) 2021.01.21 - version 3.7.0 * New: Add filter to only allow some mime types to quiz file upload answers [#3828](https://github.com/Automattic/sensei/pull/3828) * New: Remove REST API Test Harness code [#3475](https://github.com/Automattic/sensei/pull/3475) * New: Show admin notice if Sensei hasn't been built correctly [#3775](https://github.com/Automattic/sensei/pull/3775) πŸ‘ @merkushin * New: Log course completion rate [#3777](https://github.com/Automattic/sensei/pull/3777) * New: Add Remove Progress button in Learner Management for lessons [#3857](https://github.com/Automattic/sensei/pull/3857) * New: Add basic integrations with Site Health [#3834](https://github.com/Automattic/sensei/pull/3834) * New: Add Tools page and deprecate Data Updates page [#3842](https://github.com/Automattic/sensei/pull/3842) * New: Add course enrollment debugger to Tools menu [#3843](https://github.com/Automattic/sensei/pull/3843) * New: Add hook to filter meta keys when duplicating courses [#3830](https://github.com/Automattic/sensei/pull/3830) * New: Add comment table indexes on upgrade [#3861](https://github.com/Automattic/sensei/pull/3861) * New: Add notice to install WooCommerce Paid Courses [#3876](https://github.com/Automattic/sensei/pull/3876), [#3884](https://github.com/Automattic/sensei/pull/3884) * Tweak: Enable translating more Sensei content using Polylang and WPML [#3840](https://github.com/Automattic/sensei/pull/3840) * Tweak: Ensure all data is removed when uninstalling the plugin [#3864](https://github.com/Automattic/sensei/pull/3864) * Tweak: Minor tool fixes and additions [#3896](https://github.com/Automattic/sensei/pull/3896) * Tweak: Rename `Grading Notes` to `Answer Feedback` in grading tool [#3897](https://github.com/Automattic/sensei/pull/3897) * Fix: Fix empty Courses page on multi-site install [#3827](https://github.com/Automattic/sensei/pull/3827) * Fix: Fix linter issues [#3833](https://github.com/Automattic/sensei/pull/3833) * Fix: Fix some columns not showing in courses, lessons and questions lists [#3273](https://github.com/Automattic/sensei/pull/3273) πŸ‘ @hansschuijff * Fix: Prevent double form submission [#3838](https://github.com/Automattic/sensei/pull/3838) * Fix: Fix teacher/admin module slug conflicts in course outline block [#3846](https://github.com/Automattic/sensei/pull/3846) * Fix: Fix some colors not being applied on front end for course blocks [#3844](https://github.com/Automattic/sensei/pull/3844) * Fix: Fix teacher change issue on saving block editor meta boxes [#3829](https://github.com/Automattic/sensei/pull/3829) * Fix: Remove duplicate progress entries after inserting a new one [#3855](https://github.com/Automattic/sensei/pull/3855) * Fix: Fix module renaming in course outline block [#3862](https://github.com/Automattic/sensei/pull/3862) * Fix: Teachers should only be able to access their own courses [#3873](https://github.com/Automattic/sensei/pull/3873) * Fix: Fix order that lessons in a module are retrieved in [#3879](https://github.com/Automattic/sensei/pull/3879) * Fix: Always use numeric grade when grading manually [#3755](https://github.com/Automattic/sensei/pull/3755) * Fix: Hide Modules metabox after changing course teacher to prevent module conflicts [#3869](https://github.com/Automattic/sensei/pull/3869) 2021.01.06 - version 3.6.1 * Fix: Fix not being able to save course when Yoast SEO is activated [#3866](https://github.com/Automattic/sensei/pull/3866) * Fix: Ensure exit survey is displayed after deactivating Sensei with WooCommerce Paid Courses [#3871](https://github.com/Automattic/sensei/pull/3871) 2020.12.10 - version 3.6.0 * New: Course Outline block * Add "Edit lesson" link to lesson block settings [#3637](https://github.com/Automattic/sensei/pull/3637) * Add "Not Started" option to module block status setting [#3678](https://github.com/Automattic/sensei/pull/3678) * Add Edit Lesson button to course outline block toolbar [#3708](https://github.com/Automattic/sensei/pull/3708) * Add ability to expand/collapse modules [#3628](https://github.com/Automattic/sensei/pull/3628) * Add chevron to lesson block [#3679](https://github.com/Automattic/sensei/pull/3679) * Add course outline block icons [#3630](https://github.com/Automattic/sensei/pull/3630) * Add course outline empty state [#3594](https://github.com/Automattic/sensei/pull/3594) * Add course structure API integration [#3600](https://github.com/Automattic/sensei/pull/3600) * Add endpoints for getting and saving course structure [#3593](https://github.com/Automattic/sensei/pull/3593) * Add font size setting to lesson block [#3634](https://github.com/Automattic/sensei/pull/3634) * Add lesson block color customization [#3620](https://github.com/Automattic/sensei/pull/3620) * Add lesson block status setting [#3643](https://github.com/Automattic/sensei/pull/3643) * Add module block status setting [#3613](https://github.com/Automattic/sensei/pull/3613) * Add outline and module block styles [#3650](https://github.com/Automattic/sensei/pull/3650) * Add saving of course structure [#3602](https://github.com/Automattic/sensei/pull/3602) * Add setting to course outline block that disables module animation [#3641](https://github.com/Automattic/sensei/pull/3641) * Add support for course outline block to importer [#3698](https://github.com/Automattic/sensei/pull/3698) * Add support for inner block attributes [#3615](https://github.com/Automattic/sensei/pull/3615) * Add transform that enables grouping selected lessons into a module [#3651](https://github.com/Automattic/sensei/pull/3651) * Allow for different context when getting course structure [#3621](https://github.com/Automattic/sensei/pull/3621) * Allow line wrapping for module, lesson titles [#3692](https://github.com/Automattic/sensei/pull/3692) * Create quiz when saving new lesson in course outline block [#3629](https://github.com/Automattic/sensei/pull/3629) * Display all lessons and modules in preview mode in the outline block [#3699](https://github.com/Automattic/sensei/pull/3699) * Don't show Edit Lesson link in toolbar for empty lessons [#3720](https://github.com/Automattic/sensei/pull/3720) * Escape outline block HTML [#3681](https://github.com/Automattic/sensei/pull/3681) * Extract inner block attributes on server-side [#3625](https://github.com/Automattic/sensei/pull/3625) * Fix Course Outline block for WordPress 5.3 [#3623](https://github.com/Automattic/sensei/pull/3623) * Fix PHP notice when saving new lesson in course outline block [#3660](https://github.com/Automattic/sensei/pull/3660) * Fix SVG usage and replace collapsible module icon with SVG image [#3683](https://github.com/Automattic/sensei/pull/3683) * Fix lesson link style [#3687](https://github.com/Automattic/sensei/pull/3687) * Fix module and lesson text colors in course outline block on WordPress 5.4 [#3799](https://github.com/Automattic/sensei/pull/3799) * Fix module and lesson title styles [#3797](https://github.com/Automattic/sensei/pull/3797) * Fix module status on frontend [#3644](https://github.com/Automattic/sensei/pull/3644) * Fix placeholder icon and buttons for WordPress 5.3 [#3669](https://github.com/Automattic/sensei/pull/3669) * Fix some issues with saving the course structure [#3648](https://github.com/Automattic/sensei/pull/3648) * Refactor outline block files [#3697](https://github.com/Automattic/sensei/pull/3697) * Refine display of post status in the lesson block [#3680](https://github.com/Automattic/sensei/pull/3680) * Remove inserter from module block and adjust how empty lesson block is added [#3684](https://github.com/Automattic/sensei/pull/3684) * Remove module animation setting and replace with collapsible modules setting [#3675](https://github.com/Automattic/sensei/pull/3675) * Set a default value for `outlineClassName` in the module block [#3806](https://github.com/Automattic/sensei/pull/3806) * Show draft status in lesson block [#3653](https://github.com/Automattic/sensei/pull/3653) * Standardize module style and border settings in course outline and module blocks [#3749](https://github.com/Automattic/sensei/pull/3749) * Update lesson block status setting [#3663](https://github.com/Automattic/sensei/pull/3663) * Update placeholder text for course outline block module description, and course and lesson title [#3642](https://github.com/Automattic/sensei/pull/3642) * Update text in block settings and reorder the panels in the lesson block [#3657](https://github.com/Automattic/sensei/pull/3657) * Use block.json for metadata shared between JS and PHP [#3635](https://github.com/Automattic/sensei/pull/3635) * Use outline block style if no style is set in the module block [#3803](https://github.com/Automattic/sensei/pull/3803) * Add a message for course outline block without published content [#3721](https://github.com/Automattic/sensei/pull/3721) * Add course outline basic setup [#3560](https://github.com/Automattic/sensei/pull/3560) * Add lesson preview badge to the course outline [#3732](https://github.com/Automattic/sensei/pull/3732) * Base for course outline content [#3584](https://github.com/Automattic/sensei/pull/3584) * Change course outline styling to distinguish lessons that belong to a module and lessons that do not [#3726](https://github.com/Automattic/sensei/pull/3726) * Change outline block error messages [#3707](https://github.com/Automattic/sensei/pull/3707) * Focus the module title input when adding a new module [#3676](https://github.com/Automattic/sensei/pull/3676) * Hide module description on the front end when there is no description [#3710](https://github.com/Automattic/sensei/pull/3710) * Hide modules and lessons meta boxes in course editor when outline block is present [#3649](https://github.com/Automattic/sensei/pull/3649) * Make it easier to select the course outline block in the editor [#3756](https://github.com/Automattic/sensei/pull/3756) * Refactor modules collapsing script to use domReady [#3722](https://github.com/Automattic/sensei/pull/3722) * Add module link to the course outline block when the module has a description [#3723](https://github.com/Automattic/sensei/pull/3723) * Fix collapsible modules not working when animation is disabled [#3665](https://github.com/Automattic/sensei/pull/3665) * Improve animation for expanding and collapsing modules [#3646](https://github.com/Automattic/sensei/pull/3646) * Add support for default theme colors to Course Outline block [#3741](https://github.com/Automattic/sensei/pull/3741) * Add support for default theme colors to the module border color setting [#3805](https://github.com/Automattic/sensei/pull/3805) * Make border rules for "Minimal" module style less specific to allow overrides [#3802](https://github.com/Automattic/sensei/pull/3802) * Fix race condition when saving [#3800](https://github.com/Automattic/sensei/pull/3800) * Fix how "Edit Lesson" link displays in WordPress 5.4 [#3816](https://github.com/Automattic/sensei/pull/3816) * Fix undo in module block [#3820](https://github.com/Automattic/sensei/pull/3820) * New: Take Course block * Add Take Course block [#3703](https://github.com/Automattic/sensei/pull/3703) * Add `wp-block-button` class to button block [#3795](https://github.com/Automattic/sensei/pull/3795) * Add render callback filter for Take Course block [#3762](https://github.com/Automattic/sensei/pull/3762) * Fix issue with cleared alignment in Take Course block [#3764](https://github.com/Automattic/sensei/pull/3764) * Minor improvements to Take Course block [#3761](https://github.com/Automattic/sensei/pull/3761) * Fix error being logged to the console for the Take Course block [#3770](https://github.com/Automattic/sensei/pull/3770) * New: Contact Teacher block * Add Contact Teacher block [#3702](https://github.com/Automattic/sensei/pull/3702) * Move private message form to Contact Teacher block [#3717](https://github.com/Automattic/sensei/pull/3717) * Change Contact Teacher button default style [#3787](https://github.com/Automattic/sensei/pull/3787) * New: Course Progress block * Introduce course progress block [#3689](https://github.com/Automattic/sensei/pull/3689) * Add course progress block color settings [#3695](https://github.com/Automattic/sensei/pull/3695) * Add progress bar border radius and height settings to course progress block [#3733](https://github.com/Automattic/sensei/pull/3733) * Fix alignment of progress bar settings in WordPress 5.4 [#3807](https://github.com/Automattic/sensei/pull/3807) * Integrate course progress in the frontend [#3731](https://github.com/Automattic/sensei/pull/3731) * Integrate module and lesson status with course progress block [#3712](https://github.com/Automattic/sensei/pull/3712) * Refinements to course progress block [#3735](https://github.com/Automattic/sensei/pull/3735) * Update the description for the course progress block [#3730](https://github.com/Automattic/sensei/pull/3730) * Update default border radius in the course progress block [#3781](https://github.com/Automattic/sensei/pull/3781) * New: Add base button block [#3686](https://github.com/Automattic/sensei/pull/3686) * New: Add block icons [#3750](https://github.com/Automattic/sensei/pull/3750) * New: Add filter to disable single course template [#3706](https://github.com/Automattic/sensei/pull/3706) * New: Enforce minimum PHP version of 7.0 [#3592](https://github.com/Automattic/sensei/pull/3592) * New: Ensure sensei_course_start hook works without custom template for single course [#3765](https://github.com/Automattic/sensei/pull/3765) * New: Handle block based and legacy single course frontend rendering [#3647](https://github.com/Automattic/sensei/pull/3647) * New: Improve base button extendability [#3748](https://github.com/Automattic/sensei/pull/3748) * New: Remove underline from `ins` element in button block [#3780](https://github.com/Automattic/sensei/pull/3780) * New: Tweak block descriptions [#3792](https://github.com/Automattic/sensei/pull/3792) * New: Update block category icon [#3798](https://github.com/Automattic/sensei/pull/3798) * New: Add block checks to the `course_update` event log [#3727](https://github.com/Automattic/sensei/pull/3727) * New: Add filter for customizing block arguments [#3782](https://github.com/Automattic/sensei/pull/3782) * New: Add new blocks to the course block template [#3734](https://github.com/Automattic/sensei/pull/3734) * New: Add spacing between course blocks [#3757](https://github.com/Automattic/sensei/pull/3757) * New: Fix message alignment in Twenty Twenty theme [#3766](https://github.com/Automattic/sensei/pull/3766) * New: Hide course video meta box for courses using Sensei blocks [#3779](https://github.com/Automattic/sensei/pull/3779) * New: Log when a course is updated [#3652](https://github.com/Automattic/sensei/pull/3652) * New: Move Contact Teacher below Take Course in the course block template [#3804](https://github.com/Automattic/sensei/pull/3804) * New: Remove optional templates feature flag [#3791](https://github.com/Automattic/sensei/pull/3791) * New: Remove the temporary feature flag for the course blocks [#3754](https://github.com/Automattic/sensei/pull/3754) * New: Standardize button styles [#3788](https://github.com/Automattic/sensei/pull/3788) * New: Update alignment component used in button blocks [#3783](https://github.com/Automattic/sensei/pull/3783) * New: Add validation to post object before logging course update event [#3709](https://github.com/Automattic/sensei/pull/3709) * New: Ensure Lessons and Modules meta boxes are displayed for legacy courses [#3661](https://github.com/Automattic/sensei/pull/3661) * New: Add isPreview flag to button blocks [#3811](https://github.com/Automattic/sensei/pull/3811) * New: Don't show "Course Video" metabox when any Sensei block is added to the course page [#3818](https://github.com/Automattic/sensei/pull/3818) * New: Use Sensei logo in block inserter [#3823](https://github.com/Automattic/sensei/pull/3823) * Tweak: Center text within Setup Wizard buttons [#3575](https://github.com/Automattic/sensei/pull/3575) * Tweak: Make detail fields required on exit survey [#3786](https://github.com/Automattic/sensei/pull/3786) * Tweak: Update sample course to include blocks [#3808](https://github.com/Automattic/sensei/pull/3808), [#3831](https://github.com/Automattic/sensei/pull/3831) * Tweak: Refactor "Order Lessons" page to use the Sensei_Course_Structure class [#3664](https://github.com/Automattic/sensei/pull/3664) * Tweak: Refactor "Order Modules" page to use the Sensei_Course_Structure class [#3672](https://github.com/Automattic/sensei/pull/3672) * Fix: Ensure analysis export works with RTL languages [#3751](https://github.com/Automattic/sensei/pull/3751) * Fix: Ensure learners who have already viewed a quiz see the latest updates the next time they view it [#2887](https://github.com/Automattic/sensei/pull/2887) πŸ‘ @JuanchoPestana * Fix: Remove wrapper elements from templates [#3772](https://github.com/Automattic/sensei/pull/3772) * Fix: Strip HTML from plugin installation error message [#3753](https://github.com/Automattic/sensei/pull/3753) * Fix: Fix incorrect rounding of maximum file size for file upload questions [#3673](https://github.com/Automattic/sensei/pull/3673) 2020.10.29 - version 3.5.3 * Fix: Visibility of quiz passmark percentage field [#3715](https://github.com/Automattic/sensei/pull/3715) * Fix: PHP notices on taxonomy pages for unsupported themes [#3704](https://github.com/Automattic/sensei/pull/3704) * New: Exit survey when the plugin is deactivated [#3729](https://github.com/Automattic/sensei/pull/3729) 2020.09.30 - version 3.5.2 * Fix: Fix course being duplicated when lesson has no quiz and teacher is updated [#3654](https://github.com/Automattic/sensei/pull/3654) * Fix: Fix resetting a learner's lesson progress removes learner from list [#3626](https://github.com/Automattic/sensei/pull/3626) * Fix: Target the correct element when resetting input fields in quiz questions [#3604](https://github.com/Automattic/sensei/pull/3604) * Fix: Close unordered list element in sensei_course_categories shortcode [#3622](https://github.com/Automattic/sensei/pull/3622) * Fix: Fix PHP notice when viewing course category page on unsupported themes [#3608](https://github.com/Automattic/sensei/pull/3608) * Fix: Multiple choice question is correct only when all right answers are checked [#3617](https://github.com/Automattic/sensei/pull/3617) * Fix: Fix fatal error on activating Discount Rules for WooCommerce plugin [#3616](https://github.com/Automattic/sensei/pull/3616) * Fix: Don't overwrite lesson meta with defaults on update [#3589](https://github.com/Automattic/sensei/pull/3589) * Fix: Fix deprecated function call [#3633](https://github.com/Automattic/sensei/pull/3633) * Fix: Exclude right/wrong prefix in exported answers' escaped values [#3640](https://github.com/Automattic/sensei/pull/3640) * Fix: Fix quiz settings [#3632](https://github.com/Automattic/sensei/pull/3632) * New: Include category in heading for sensei_courses shortcode when filtering by category [#3627](https://github.com/Automattic/sensei/pull/3627) * New: Use archive-lesson template on lesson archive page [#3614](https://github.com/Automattic/sensei/pull/3614) * New: Add filter login required [#3631](https://github.com/Automattic/sensei/pull/3631) * New: Sort course filter on Lessons page in alphabetical order [#3605](https://github.com/Automattic/sensei/pull/3605) * New: Show scheduled lessons in Prerequisite dropdown [#3609](https://github.com/Automattic/sensei/pull/3609) 2020.09.10 - version 3.5.1 * Tweak: Update usage tracking for sample courses * Add sample_course property to publish event [#3596](https://github.com/Automattic/sensei/pull/3596) * Include flag for sample data on import events [#3588](https://github.com/Automattic/sensei/pull/3588) * Tweak: Only add "first" and "last" CSS classes for grid layouts on course archive page [#3467](https://github.com/Automattic/sensei/pull/3467) 2020.08.27 - version 3.5.0 * New: Exporter * Add error handling to exporter [#3541](https://github.com/Automattic/sensei/pull/3541) * Export multiple choice answers in correct order [#3558](https://github.com/Automattic/sensei/pull/3558) * Fix "Randomise answer order" checkbox being exported incorrectly [#3550](https://github.com/Automattic/sensei/pull/3550) * Fix incorrect handling of media when exporting questions [#3551](https://github.com/Automattic/sensei/pull/3551) * Add content types to export page [#3412](https://github.com/Automattic/sensei/pull/3412) * Add export page [#3409](https://github.com/Automattic/sensei/pull/3409) * Add exporter REST API and job [#3442](https://github.com/Automattic/sensei/pull/3442) * Add progress and results pages [#3413](https://github.com/Automattic/sensei/pull/3413) * Change export progress Cancel link to button [#3516](https://github.com/Automattic/sensei/pull/3516) * Export courses CSV [#3462](https://github.com/Automattic/sensei/pull/3462) * Export lessons CSV [#3513](https://github.com/Automattic/sensei/pull/3513) * Export list of lessons in courses CSV and remove Course column from lessons CSV [#3531](https://github.com/Automattic/sensei/pull/3531) * Export questions CSV [#3506](https://github.com/Automattic/sensei/pull/3506) * Export the correct order when lessons belong to modules [#3537](https://github.com/Automattic/sensei/pull/3537) * Fix reordering of checkboxes in export page on Safari [#3518](https://github.com/Automattic/sensei/pull/3518) * Log when an export job completes [#3526](https://github.com/Automattic/sensei/pull/3526) * Log when the Export submenu is clicked [#3528](https://github.com/Automattic/sensei/pull/3528) * Log when users click the Continue button in exporter [#3527](https://github.com/Automattic/sensei/pull/3527) * Make the error more descriptive when the attachment fetch request fails [#3559](https://github.com/Automattic/sensei/pull/3559) * Merge data port model with import model [#3521](https://github.com/Automattic/sensei/pull/3521) * Package exported CSVs into a ZIP file when possible [#3519](https://github.com/Automattic/sensei/pull/3519) * Remove data port task clean_up methods [#3525](https://github.com/Automattic/sensei/pull/3525) * Reverse the exported value of course notifications [#3543](https://github.com/Automattic/sensei/pull/3543) * Update copy used in exporter [#3529](https://github.com/Automattic/sensei/pull/3529) * Fixes: Importer * Run import job batches in polling requests [#3455](https://github.com/Automattic/sensei/pull/3455) * Use Lessons column in courses CSV to associate courses with lessons when importing [#3536](https://github.com/Automattic/sensei/pull/3536) * Fix division by zero when there are no associated import tasks [#3557](https://github.com/Automattic/sensei/pull/3557) * Fix duplicate content sometimes being imported [#3538](https://github.com/Automattic/sensei/pull/3538) * Fix: Error in setup wizard when navigating to a previous step [#3533](https://github.com/Automattic/sensei/pull/3533) * New: Add sample course installation to the Setup Wizard [#3507](https://github.com/Automattic/sensei/pull/3507) * Tweak: Redirect to sample course after importing it [#3545](https://github.com/Automattic/sensei/pull/3545) * New: Use preloading for initial requests in importer and setup wizard [#3446](https://github.com/Automattic/sensei/pull/3446) * Tweak: Show courses with any status in Course Prerequisite dropdown [#3555](https://github.com/Automattic/sensei/pull/3555) 2020.08.11 - version 3.4.1 * Fix: Question editor compatibility with WordPress 5.5 [#3510](https://github.com/Automattic/sensei/pull/3510) * Fix: Trigger setting updated events only when changed [#3503](https://github.com/Automattic/sensei/pull/3503) 2020.08.06 - version 3.4.0 * New: Remove / Restore Enrollments * Add meta handler for removing and restoring a learner's enrollment [#3402](https://github.com/Automattic/sensei/pull/3402) * Change learner management actions from buttons to links [#3404](https://github.com/Automattic/sensei/pull/3404) * Implement enrollment actions in Learner Management [#3410](https://github.com/Automattic/sensei/pull/3410) * Update text in confirmation dialogs when removing or restoring enrollments [#3456](https://github.com/Automattic/sensei/pull/3456) * Vertically align column data in Learner Management tables [#3476](https://github.com/Automattic/sensei/pull/3476) * Add the ability to remove and restore enrollments in bulk learner management [#3473](https://github.com/Automattic/sensei/pull/3473) * Update learner management enrollment notices to be more generic [#3466](https://github.com/Automattic/sensei/pull/3466) * Log enrollment and progress actions in Learner Management [#3465](https://github.com/Automattic/sensei/pull/3465) 2020.07.30 - version 3.3.1 * Fix: Setup wizard and importer in WordPress 5.0 - 5.3 [#3482](https://github.com/Automattic/sensei/pull/3482) 2020.07.23 - version 3.3.0 * New: Importer * Add byte order mark removal [#3365](https://github.com/Automattic/sensei/pull/3365) * Add delimiter detection [#3364](https://github.com/Automattic/sensei/pull/3364) * Add import attachments validation [#3358](https://github.com/Automattic/sensei/pull/3358) * Add "Import content" option to the setup wizard [#3340](https://github.com/Automattic/sensei/pull/3340), [#3350](https://github.com/Automattic/sensei/pull/3350) * Add passmark range validation [#3342](https://github.com/Automattic/sensei/pull/3342) * Add title and link to the import logs [#3403](https://github.com/Automattic/sensei/pull/3403) * Display importer failures and partial imports in their own sections on the Done page [#3379](https://github.com/Automattic/sensei/pull/3379) * Hide import counters when nothing is imported [#3396](https://github.com/Automattic/sensei/pull/3396) * Log when Sensei LMS > Import is clicked [#3348](https://github.com/Automattic/sensei/pull/3348) * Log when the Continue button is clicked on the Import Content page [#3366](https://github.com/Automattic/sensei/pull/3366) * Tweaks to importer Done step [#3407](https://github.com/Automattic/sensei/pull/3407) * Add Import base UI [#3191](https://github.com/Automattic/sensei/pull/3191) * Add a class to read a CSV file [#3256](https://github.com/Automattic/sensei/pull/3256) * Add a class which manages data port jobs [#3107](https://github.com/Automattic/sensei/pull/3107) * Add base data port model class and foundation for questions model [#3259](https://github.com/Automattic/sensei/pull/3259) * Add create user utility [#3221](https://github.com/Automattic/sensei/pull/3221) * Add data port base class [#3099](https://github.com/Automattic/sensei/pull/3099) * Add data port logs REST API endpoint [#3325](https://github.com/Automattic/sensei/pull/3325) * Add documentation link to first step of importer [#3452](https://github.com/Automattic/sensei/pull/3452) * Add endpoint to start a data port job [#3213](https://github.com/Automattic/sensei/pull/3213) * Add garbage collection to data port manager [#3242](https://github.com/Automattic/sensei/pull/3242) * Add importer UI data manager [#3306](https://github.com/Automattic/sensei/pull/3306) * Add importer done page [#3305](https://github.com/Automattic/sensei/pull/3305) * Add importer progress step [#3315](https://github.com/Automattic/sensei/pull/3315) * Add page for uploading CSV import files [#3211](https://github.com/Automattic/sensei/pull/3211) * Add results to import job [#3328](https://github.com/Automattic/sensei/pull/3328) * Add sample data for importer [#3450](https://github.com/Automattic/sensei/pull/3450) * Add string utilities for data port [#3289](https://github.com/Automattic/sensei/pull/3289) * Add support for translating strings in JavaScript files in Importer [#3319](https://github.com/Automattic/sensei/pull/3319) * Add utilities to add an attachment to a post [#3286](https://github.com/Automattic/sensei/pull/3286) * Add warnings in cases where the email will be ignored [#3451](https://github.com/Automattic/sensei/pull/3451) * Adjust Import submenu position [#3408](https://github.com/Automattic/sensei/pull/3408) * Check post type when translating import ID [#3444](https://github.com/Automattic/sensei/pull/3444) * Fix CSS for upload button [#3243](https://github.com/Automattic/sensei/pull/3243) * Fix more issues with question import and deal with empty categories [#3391](https://github.com/Automattic/sensei/pull/3391) * Fix passmark issues [#3432](https://github.com/Automattic/sensei/pull/3432) * Fix question import issues [#3387](https://github.com/Automattic/sensei/pull/3387) * Implement course import task [#3247](https://github.com/Automattic/sensei/pull/3247) * Implement question import task [#3281](https://github.com/Automattic/sensei/pull/3281) * Add helper to allow for warnings during import [#3351](https://github.com/Automattic/sensei/pull/3351) * Add taxonomy utility [#3225](https://github.com/Automattic/sensei/pull/3225) * Attempt to convert encoding to UTF-8 [#3346](https://github.com/Automattic/sensei/pull/3346) * Cast boolean-like strings to boolean [#3341](https://github.com/Automattic/sensei/pull/3341) * Delete existing files immediately on upload attempt [#3222](https://github.com/Automattic/sensei/pull/3222) * Delete uploaded files [#3336](https://github.com/Automattic/sensei/pull/3336) * Fix delete icon shrinking with long filenames [#3374](https://github.com/Automattic/sensei/pull/3374) * Fix reducer mutation [#3343](https://github.com/Automattic/sensei/pull/3343) * Link prerequisites for courses and lessons [#3338](https://github.com/Automattic/sensei/pull/3338) * Log file upload errors [#3367](https://github.com/Automattic/sensei/pull/3367) * Log notices instead of failing imports entirely [#3360](https://github.com/Automattic/sensei/pull/3360) * Log warnings and errors [#3381](https://github.com/Automattic/sensei/pull/3381) * Add data validation and default handling in base model [#3284](https://github.com/Automattic/sensei/pull/3284) * Include log information in Import command [#3317](https://github.com/Automattic/sensei/pull/3317) * Log when an import job completes [#3377](https://github.com/Automattic/sensei/pull/3377) * No longer match files with just the same parent post [#3393](https://github.com/Automattic/sensei/pull/3393) * Order import logs by content type and then by line number [#3445](https://github.com/Automattic/sensei/pull/3445) * REST API: Add Importer base endpoints [#3188](https://github.com/Automattic/sensei/pull/3188) * REST API: Add file upload/delete for importer [#3199](https://github.com/Automattic/sensei/pull/3199) * Refactor attachment utilities to support different types of attachments [#3290](https://github.com/Automattic/sensei/pull/3290) * Remove file source URL from imported media description [#3384](https://github.com/Automattic/sensei/pull/3384) * Remove unnecessary component button styles in Importer [#3316](https://github.com/Automattic/sensei/pull/3316) * Update Importer REST API with `{job_id}` prefix to most endpoints [#3324](https://github.com/Automattic/sensei/pull/3324) * Update importer visuals [#3406](https://github.com/Automattic/sensei/pull/3406) * Consolidate process_line to parent file process class [#3291](https://github.com/Automattic/sensei/pull/3291) * Add lesson length validation [#3438](https://github.com/Automattic/sensei/pull/3438) * Add number of questions validation [#3449](https://github.com/Automattic/sensei/pull/3449) * Add validation to multiple choice questions without a right answer [#3397](https://github.com/Automattic/sensei/pull/3397) * Defer warnings until post is created and add warnings on sanitization [#3443](https://github.com/Automattic/sensei/pull/3443) * Fix 404 error when importing more content [#3419](https://github.com/Automattic/sensei/pull/3419) * Fix error message overflowing parent container on import upload screen [#3344](https://github.com/Automattic/sensei/pull/3344) * Fix import CSV with HTML content [#3430](https://github.com/Automattic/sensei/pull/3430) * Fix title in the import logs [#3423](https://github.com/Automattic/sensei/pull/3423) * Fix validation for question type method [#3425](https://github.com/Automattic/sensei/pull/3425) * Update default right answer to true [#3424](https://github.com/Automattic/sensei/pull/3424) * New: Add filter to customize the query arguments used to fetch the courses a learner is enrolled in [#3347](https://github.com/Automattic/sensei/pull/3347), [#3369](https://github.com/Automattic/sensei/pull/3369) * New: Log when paid extensions are selected to be installed in setup wizard [#3398](https://github.com/Automattic/sensei/pull/3398) * New: Log `sensei_plugin_install` on WCCOM plugin activation [#3373](https://github.com/Automattic/sensei/pull/3373) * Tweak: Make usage tracking pixel calls non-blocking [#3378](https://github.com/Automattic/sensei/pull/3378) * Tweak: Add random string to uploaded files for file upload questions [#3359](https://github.com/Automattic/sensei/pull/3359) * Fix: Add CSS classes for completed and preview lessons not in a module [#3333](https://github.com/Automattic/sensei/pull/3333) * Fix: Setup Wizard features step not being saved when nothing is selected [#3361](https://github.com/Automattic/sensei/pull/3361) * Fix linter issues with full-screen setup wizard code [#3418](https://github.com/Automattic/sensei/pull/3418) 2020.06.30 - version 3.2.0 * New: Add paid extensions to the setup wizard [#3297](https://github.com/Automattic/sensei/pull/3297), [#3309](https://github.com/Automattic/sensei/pull/3309), [#3323](https://github.com/Automattic/sensei/pull/3323), [#3322](https://github.com/Automattic/sensei/pull/3322), [#3326](https://github.com/Automattic/sensei/pull/3326), [#3329](https://github.com/Automattic/sensei/pull/3329), [#3332](https://github.com/Automattic/sensei/pull/3332), [#3331](https://github.com/Automattic/sensei/pull/3331), [#3330](https://github.com/Automattic/sensei/pull/3330) * New: Enable admins and lesson author to view quiz for lesson with an unmet prerequisite [#3080](https://github.com/Automattic/sensei/pull/3080) πŸ‘ @JuanchoPestana * New: Deprecate sensei_the_excerpt function [#3248](https://github.com/Automattic/sensei/pull/3248) πŸ‘ @truongwp * Tweak: Add "Educate students" option to Purpose step of setup wizard [#3311](https://github.com/Automattic/sensei/pull/3311) * Tweak: Setup Wizard: Allow purpose options to be translated [#3320](https://github.com/Automattic/sensei/pull/3320) * Tweak: Add "sensei" CSS class to all Sensei LMS pages [#3275](https://github.com/Automattic/sensei/pull/3275) πŸ‘ @hansschuijff * Tweak: Use semantic heading structure on course results page [#3271](https://github.com/Automattic/sensei/pull/3271) πŸ‘ @hansschuijff * Tweak: Add missing taxonomy labels [#3276](https://github.com/Automattic/sensei/pull/3276) πŸ‘ @hansschuijff * Tweak: Fail gracefully if no extensions found in the setup wizard [#3283](https://github.com/Automattic/sensei/pull/3283) * Fix: Fix incorrect parameter being passed to has_term function [#3274](https://github.com/Automattic/sensei/pull/3274) πŸ‘ @hansschuijff 2020.06.05 - version 3.1.1 * Fix: Clear setup wizard user data option on uninstall [#3263](https://github.com/Automattic/sensei/pull/3263) * Fix: Mark setup wizard as completed at the "Ready" step [#3265](https://github.com/Automattic/sensei/pull/3265) 2020.06.04 - version 3.1.0 * New: Setup wizard for new users - [#3066](https://github.com/Automattic/sensei/pull/3066), [#3085](https://github.com/Automattic/sensei/pull/3085), [#3093](https://github.com/Automattic/sensei/pull/3093), [#3082](https://github.com/Automattic/sensei/pull/3082), [#3101](https://github.com/Automattic/sensei/pull/3101), [#3103](https://github.com/Automattic/sensei/pull/3103), [#3096](https://github.com/Automattic/sensei/pull/3096), [#3117](https://github.com/Automattic/sensei/pull/3117), [#3118](https://github.com/Automattic/sensei/pull/3118), [#3119](https://github.com/Automattic/sensei/pull/3119), [#3102](https://github.com/Automattic/sensei/pull/3102), [#3157](https://github.com/Automattic/sensei/pull/3157), [#3106](https://github.com/Automattic/sensei/pull/3106), [#3121](https://github.com/Automattic/sensei/pull/3121), [#3172](https://github.com/Automattic/sensei/pull/3172), [#3175](https://github.com/Automattic/sensei/pull/3175), [#3174](https://github.com/Automattic/sensei/pull/3174), [#3176](https://github.com/Automattic/sensei/pull/3176), [#3189](https://github.com/Automattic/sensei/pull/3189), [#3184](https://github.com/Automattic/sensei/pull/3184), [#3156](https://github.com/Automattic/sensei/pull/3156), [#3181](https://github.com/Automattic/sensei/pull/3181), [#3190](https://github.com/Automattic/sensei/pull/3190), [#3239](https://github.com/Automattic/sensei/pull/3239), [#3227](https://github.com/Automattic/sensei/pull/3227), [#3198](https://github.com/Automattic/sensei/pull/3198), [#3241](https://github.com/Automattic/sensei/pull/3241), [#3194](https://github.com/Automattic/sensei/pull/3194), [#3250](https://github.com/Automattic/sensei/pull/3250), [#3246](https://github.com/Automattic/sensei/pull/3246), [#3258](https://github.com/Automattic/sensei/pull/3258) * New: Filter for enabling/disabling enrolment related background jobs [#3182](https://github.com/Automattic/sensei/pull/3182) * New: Add "Date Completed" field to the Learner Management page [#3064](https://github.com/Automattic/sensei/pull/3064) πŸ‘ @timwiel * Tweak: Add Sensei and WCPC version directly in usage stats [#3094](https://github.com/Automattic/sensei/pull/3094) * Tweak: Remove old setup notices in favour of the new wizard [#3155](https://github.com/Automattic/sensei/pull/3155) * Tweak: Remove mailing list signup modal in favour of the setup wizard [#3167](https://github.com/Automattic/sensei/pull/3167) * Tweak: Include email classes in autoloader [#3098](https://github.com/Automattic/sensei/pull/3098) * Tweak: Remove mass database invalidation of enrolment results on course recalculation [#3183](https://github.com/Automattic/sensei/pull/3183) * Tweak: Send usage tracking data as soon as the user opts in [#3220](https://github.com/Automattic/sensei/pull/3220) * Tweak: Remove "Most Used" course modules [#3224](https://github.com/Automattic/sensei/pull/3224) * Tweak: Bump minimum WordPress version to 5.0 [#3244](https://github.com/Automattic/sensei/pull/3244) * Tweak: Change "Lessons" to "Lesson" if there is only a single lesson in a course [#3145](https://github.com/Automattic/sensei/pull/3145) πŸ‘ @truongwp * Tweak: Fix translatable string [#3185](https://github.com/Automattic/sensei/pull/3185) πŸ‘ @truongwp * Fix: Update meta box header when question type of new question is changed [#3008](https://github.com/Automattic/sensei/pull/3008) * Fix: PHP notice for logged out user when viewing quiz of free preview lesson [#2980](https://github.com/Automattic/sensei/pull/2980) * Fix: PHP warning on single course page [#3136](https://github.com/Automattic/sensei/pull/3136) * Fix: Course dropdown width on the lessons page [#3223](https://github.com/Automattic/sensei/pull/3136) 2020.04.29 - version 3.0.1 * Tweak: Prevent some queries from running unnecessarily [#3022](https://github.com/Automattic/sensei/pull/3022) * Fix: Skip enrollment checking completely for guests [#3086](https://github.com/Automattic/sensei/pull/3086) 2020.04.27 - version 3.0.0 * New: Add Recalculate Enrolment data update [#2998](https://github.com/Automattic/sensei/pull/2998) * New: Add a filter for the course archive page URL [#2899](https://github.com/Automattic/sensei/pull/2899) * New: Add course enrollment indicator to learner management [#2838](https://github.com/Automattic/sensei/pull/2838) * New: Add course enrolment recalculation scheduler [#2874](https://github.com/Automattic/sensei/pull/2874) * New: Add learner management filter for manually enrolled users [#2987](https://github.com/Automattic/sensei/pull/2987), [#2996](https://github.com/Automattic/sensei/pull/2996) * New: Add manual enrollment provider [#2848](https://github.com/Automattic/sensei/pull/2848) * New: Add missing deprecation notices [#2974](https://github.com/Automattic/sensei/pull/2974) * New: Enable filtering by "Enrolled Learners" and "Unenrolled Learners" in Learner Management [#2981](https://github.com/Automattic/sensei/pull/2981), [#2988](https://github.com/Automattic/sensei/pull/2988) * New: Allow frontend enrolment form to be handled by other providers [#2973](https://github.com/Automattic/sensei/pull/2973) * New: Block access to module when not signed up [#2952](https://github.com/Automattic/sensei/pull/2952) * New: Block frontend manual enrollment if there is a handling provider [#2862](https://github.com/Automattic/sensei/pull/2862) * New: Courses must be published to have enrolment [#2877](https://github.com/Automattic/sensei/pull/2877) * New: Create generic enrolment job scheduler and introduce course recalculation [#2909](https://github.com/Automattic/sensei/pull/2909) * New: Defer triggering recalculation until the end of the request [#2905](https://github.com/Automattic/sensei/pull/2905), [#2914](https://github.com/Automattic/sensei/pull/2914) * New: Deprecate Sensei_Utils::user_started_course [#2984](https://github.com/Automattic/sensei/pull/2984) * New: Deprecate filters used by legacy WCPC memberships [#2979](https://github.com/Automattic/sensei/pull/2979) * New: Filter defer enrolment check behavior [#2942](https://github.com/Automattic/sensei/pull/2942) * New: Introduce enrolment manager [#2844](https://github.com/Automattic/sensei/pull/2844) * New: Introduce provider state storage and stored status providers [#2888](https://github.com/Automattic/sensei/pull/2888) * New: Manually enrol student on frontend when they sign up for course [#2854](https://github.com/Automattic/sensei/pull/2854) * New: Pass the comment ID to the `sensei_is_legacy_enrolled` filter [#2872](https://github.com/Automattic/sensei/pull/2872) * New: Recalculate course enrolment when moving from published to not published [#2990](https://github.com/Automattic/sensei/pull/2990) * New: Recalculate when any provider version changes [#2916](https://github.com/Automattic/sensei/pull/2916) * New: Refactor so that providers are instantiated by their handler [#2875](https://github.com/Automattic/sensei/pull/2875) * New: Remove deprecated functionality for 3.0 [#2969](https://github.com/Automattic/sensei/pull/2969) * New: Remove enrolments on user deletion [#2898](https://github.com/Automattic/sensei/pull/2898) * New: Remove the taxonomy sensei_learner terms and new user meta on uninstall [#2897](https://github.com/Automattic/sensei/pull/2897) * New: Deprecate Sensei_Lesson::user_not_taking_course_message [#2953](https://github.com/Automattic/sensei/pull/2953), [#2978](https://github.com/Automattic/sensei/pull/2978) * New: Remove user meta on uninstall [#2907](https://github.com/Automattic/sensei/pull/2907) * New: Run plugin update checker and tasks on every request [#2967](https://github.com/Automattic/sensei/pull/2967) * New: Split course progress from course enrolment [#2799](https://github.com/Automattic/sensei/pull/2799) * New: Split scheduler to seperate classes for easier testing [#2991](https://github.com/Automattic/sensei/pull/2991) * New: Switch to storing enrolment results in user meta [#2903](https://github.com/Automattic/sensei/pull/2903) * New: Update enrolled courses queries to use learner term [#2946](https://github.com/Automattic/sensei/pull/2946) * New: Use Action Scheduler for enrolment async jobs when available [#2930](https://github.com/Automattic/sensei/pull/2930) * New: Add filter to bypass enrolment functionality [#3011](https://github.com/Automattic/sensei/pull/3011) * New: Allow providers to provide debug information [#3020](https://github.com/Automattic/sensei/pull/3020) * New: Fire actions on enrolment status change and manual enrolment status change [#3035](https://github.com/Automattic/sensei/pull/3035) * New: Add a filter for the batch size of the learner calculation job [#3054](https://github.com/Automattic/sensei/pull/3054) * New: Introduce a provider journal store [#3027](https://github.com/Automattic/sensei/pull/3027) * New: Add multisite support for enrolment data [#3072](https://github.com/Automattic/sensei/pull/3072) * New: Delete provider journal data on uninstall [#3073](https://github.com/Automattic/sensei/pull/3073) * Tweak: Append post status to prerequisite lesson on Lessons page [#2853](https://github.com/Automattic/sensei/pull/2853) πŸ‘ @JuanchoPestana * Tweak: Change user_started_course in quiz and email code [#2968](https://github.com/Automattic/sensei/pull/2968) * Tweak: Add support for enrolments in bulk learner management [#2965](https://github.com/Automattic/sensei/pull/2965) * Tweak: Move enrolment files to own directory [#2881](https://github.com/Automattic/sensei/pull/2881) * Tweak: Replace usages of Sensei_Utils::user_started_course in course methods [#2962](https://github.com/Automattic/sensei/pull/2962) * Tweak: Replace usages of Sensei_Utils::user_started_course in templates [#2951](https://github.com/Automattic/sensei/pull/2951) * Tweak: Rename "Remove progress" bulk learner action [#2985](https://github.com/Automattic/sensei/pull/2985) * Tweak: Update usage tracking for enrolment count [#2958](https://github.com/Automattic/sensei/pull/2958) * Tweak: Hide "Manually Enrolled Learners" filter when not needed [#3014](https://github.com/Automattic/sensei/pull/3014) * Tweak: Remove logging functionality from provider state [#3021](https://github.com/Automattic/sensei/pull/3021) * Tweak: Refactor removal of Sensei comments from total counts [#3009](https://github.com/Automattic/sensei/pull/3009) * Tweak: Switch to using a handler when a learner starts taking a course [#3000](https://github.com/Automattic/sensei/pull/3000) * Tweak: Allow for not storing enrolment results when they don't provide enrolment [#3028](https://github.com/Automattic/sensei/pull/3028) * Tweak: Update course calculation job to paginate using last calculated user ID [#3029](https://github.com/Automattic/sensei/pull/3029) * Tweak: Don't manually enrol learners who don't have course progress [#3030](https://github.com/Automattic/sensei/pull/3030) * Tweak: Ensure courses share the same provider state meta per learner [#3033](https://github.com/Automattic/sensei/pull/3033) * Tweak: Replace "student" with "learner" in methods and frontend hook [#3038](https://github.com/Automattic/sensei/pull/3038) * Tweak: Use `time` instead of `microtime` function when logging enrolment results [#3034](https://github.com/Automattic/sensei/pull/3034) * Tweak: Switch to using a filter when storing enrolment results [#3031](https://github.com/Automattic/sensei/pull/3031) * Tweak: Use new strategy for looping through last user ID for learner calculation job [#3055](https://github.com/Automattic/sensei/pull/3055) * Tweak: Use a less filtered method for checking if user has started course [#3065](https://github.com/Automattic/sensei/pull/3065) * Tweak: Block enrolment checking and display notice with WCPC v1 [#3070](https://github.com/Automattic/sensei/pull/3070) * Fix: Add clear background to TinyMCE buttons [#2833](https://github.com/Automattic/sensei/pull/2833) πŸ‘ @JuanchoPestana * Fix: Add missing question ID to hidden question field [#2871](https://github.com/Automattic/sensei/pull/2871) πŸ‘ @traed * Fix: Add module admin scripts on course edit page [#2918](https://github.com/Automattic/sensei/pull/2918) * Fix: Check sensei_user_can_register_for_course filter when My Courses Page is not set [#2865](https://github.com/Automattic/sensei/pull/2865) πŸ‘ @JuanchoPestana * Fix: Enable teachers to remove / reset progress and edit the start date for a learner [#2922](https://github.com/Automattic/sensei/pull/2922) * Fix: Fix PHP 7.4 issues [#2876](https://github.com/Automattic/sensei/pull/2876) * Fix: Fix bulk editing lessons [#2917](https://github.com/Automattic/sensei/pull/2917) * Fix: Fix display of "Next Lesson" button in notice [#2949](https://github.com/Automattic/sensei/pull/2949) * Fix: Improve theme support for TwentyTwenty [#2902](https://github.com/Automattic/sensei/pull/2902) * Fix: Only enqueue user-dashboard.js where required [#2882](https://github.com/Automattic/sensei/pull/2882) πŸ‘ @coleshaw * Fix: Fix PHP notices when viewing course archive page on certain themes [#2911](https://github.com/Automattic/sensei/pull/2911) * Fix: Fix JS error on Lessons page [#2910](https://github.com/Automattic/sensei/pull/2910) * Fix: Set lesson status to ungraded after reset [#2919](https://github.com/Automattic/sensei/pull/2919) * Fix: Limit triggering of sensei_single_title in single quiz the_title hook for quiz posts [#2920](https://github.com/Automattic/sensei/pull/2920) * Fix: Ensure lesson comments are not displayed if user isn't allowed to view lesson [#2840](https://github.com/Automattic/sensei/pull/2840) πŸ‘ @JuanchoPestana * Fix: Fix lesson order for courses that are duplicated with lessons [#2883](https://github.com/Automattic/sensei/pull/2883) * Fix: Fix video playback for question media attachments [#2886](https://github.com/Automattic/sensei/pull/2886) * Fix: Add fail-safes on update version check [#3019](https://github.com/Automattic/sensei/pull/3019) * Fix: Fix comment template not displaying for messages [#3024](https://github.com/Automattic/sensei/pull/3024) 2020.01.23 - version 2.4.0 * New: Replace Twitter button with Create Course button after activation - #2850 * Fix: PHP warning for multiple choice questions - #2843 * Fix: Default settings cleared after clicking "Install Sensei LMS Pages" button - #2847 * Fix: Add transparent background to TinyMCE editor buttons for multi line questions (@JuanchoPestana) - #2855 2020.01.14 - version 2.3.0 * New: Configure Renovate - #2805 * New: Remove Sensei_WP_Cli class - #2814 * New: Upgrade WPCS to 2.2 - #2793 * New: Add REST endpoint for messages - #2809 * New: Initial setup needed for blocks - #2810 * Tweak: Optimize JS script file loading - #2815 * Fix: Auto-grading of manually graded questions - #2816 * Fix: Add closing span tag in gap fill question template (@traed) - #2824 * Fix: Duplicated course maintaining original prerequisites - #2821 * Fix: Lesson order when duplicating course with lessons - #2827 2019.10.23 - version 2.2.1 * New: Allow HTML in question titles - #2780 * Tweak: Optimize loading of teacher dropdown on Courses page (@mostafaabd) - #2750 * Tweak: Update extension parameters passed to Google Analytics - #2783 * Tweak: Move upsell higher in ReadMe - #2782 * Fix: No longer flush rewrite rules on course and lesson save - #2718 * Fix: Fix layout issue with Academia theme - #2773 * Fix: Remove default wrapper around single post renderer on unsupported theme - #2786 * Fix: Do not limit message comments on single post comment feeds - #2776 2019.09.03 - version 2.2.0 * New: Add `sensei_course_meta_before_save` and `sensei_course_meta_default_save` hooks for saving course meta - #2761 * New: Add `sensei_course_show_lessons` filter to conditionally hide lessons on single course page - #2763 * New: Add `sensei_modules_title` filter for modifying the module title HTML - #2737 * New: Remove ability to add a course from the lesson page - #2758 * New: Deprecate `Sensei_Lesson::lesson_save_course` function - #2769 * New: Deprecate `Sensei_Lesson::lesson_add_course` function - #2760 * New: Add support for custom fields on REST API requests - #2747 * Tweak: Log product count when a course is published - #2755 * Tweak: Update layout of course meta on relevant pages - #2751 * Fix: Items not showing up on plugin activation via WP CLI (@kakoma) - #2766 * Fix: Ensure WooCommerce notices are displayed for unsupported themes - #2756 * Fix: Clean up modules when course teacher is changed - #2472 * Fix: Conflict with WP Ultimate Recipe plugin - #2749 * Fix: Show draft, private, future lessons on the Order Lessons page (@mostafaabd) - #2746, #2371 * Fix: PHP notice when trashing / restoring a course (@mostafaabd) - #2721 * Fix: Alignment issue on single course page when lesson has a featured image (@mostafaabd) - #2719 2019.06.26 - version 2.1.2 * Fix: Modules not displaying in WP admin - #2742 * Fix: Multiple correct answers being removed from question editor - #2743 * Fix: Filtering of allowed CSS attributes for bulk learner actions - #2744 2019.06.25 - version 2.1.1 * New: Bump minimum supported WordPress version to 4.9 - #2725 * Tweak: Rename event logging JS file to match file naming standards - #2730 * Tweak: Fix PHPCS issues with undefined variables - #2731 * Tweak: Remove unused variables from codebase - #2732 * Tweak: Fix PHPCS issues with global variable overrides - #2733 * Fix: Remove global cache flush - #2682 * Fix: Don't call non-static method statically - #2729 * Fix: PHP fatal error on WordPress versions < 5.0 - #2736 2019.06.17 - version 2.1.0 * New: Add "Edit Course" button when in classic editor - #2514 * New: Add `sensei_complete_lesson_redirect_url` filter for disabling the redirect after completing a lesson - #2510 * New: Add event logging to the WordPress dashboard - #2672, #2673, #2675, #2686, #2696, #2695, #2700, #2697, #2702, #2684, #2687, #2707, #2706, #2709, #2715 * Tweak: Make queries on Analysis page more performant - #2359 * Tweak: Ensure module status does not overlap module name - #2699, #2713 * Tweak: Allow more HTML elements in Sensei notices - #2712 * Tweak: Adjust alignment of value inside progress bar - #2701 * Tweak: Adjust vertical gap for quiz tabs - #2523 * Tweak: Update lesson preview checkbox text - #2711 * Fix: Enable teachers to save course settings in the block editor - #2658 * Fix: Don't prefill fields with empty characters on the registration form - #2622 * Fix: Add label and description for a message that is related to a quiz - #2521 * Fix: PHP notice on the Order Courses page when there are no courses - #2689 * Fix: PHP notice on the Grading page when there are no submitted quizzes - #2691 * Fix: Fix SSI directive error on the quiz page - #2704 * Fix: Hide private messages from comment feed - #2726 2019.05.01 - version 2.0.1 * New: Rename plugin to Sensei LMS - #2511, #2516 * New: Deprecate `manage_sensei_page_sensei_learners_sortable_columns` in favour of `manage_sensei-lms_page_sensei_learners_sortable_columns` - #2516 * New: Deprecate `manage_sensei_page_sensei_grading_sortable_columns` in favour of `manage_sensei-lms_page_sensei_grading_sortable_columns` - #2516 * New: Deprecate `manage_sensei_page_sensei_analysis_sortable_columns` in favour of `manage_sensei-lms_page_sensei_analysis_sortable_columns` - #2516 * Tweak: Change text domain from `sensei` to `sensei-lms` - #2511 * Tweak: Update footer text in `templates/emails/footer.php` - #2516 * Fix: Allow "Learner Admin" link to be translated - #2516 2019.04.02 - version 2.0.0 * New: Extract all WooCommerce integration functionality * New: Add dependency check for minimum PHP version (5.6) * New: Email signup modal appears on initial activation * New: Sensei Extensions page * New: Filter `sensei_lesson_course_create_form_top` was added * New: Filter `sensei_lesson_course_create_form_bottom` was added * New: Action `sensei_lesson_course_created` was added * New: Filter `sensei_course_content_has_access` was added * New: Filter `sensei_output_course_enrolment_actions` was added * New: Filter `sensei_lesson_show_course_signup_notice` was added * New: Filter `sensei_lesson_course_signup_notice_message` was added * New: Filter `sensei_lesson_course_signup_notice_level` was added * New: Filter `sensei_quiz_course_signup_notice_message` was added * New: Action `sensei_course_meta_inside_before` was added * New: Action `sensei_course_meta_inside_after` was added * New: Filter `sensei_shortcode_classes` was added * New: Filter `sensei_widget_course_component_components_list` was added * New: Filter `sensei_widget_course_component_get_courses_{$component} ` was added * New: Filter `sensei_widget_course_component_no_courses_message_{$component}` was added * New: Run plugin updates when needed - #2497 * New: Sensei_Main::sensei_woocommerce_email_course_details has been deprecated in favour of Sensei_WC::email_course_details * New: Sensei_Main::sensei_woocommerce_reactivate_subscription has been deprecated in favour of Sensei_WC::reactivate_subscription * New: Sensei_Main::sensei_woocommerce_subscription_ended has been deprecated in favour of Sensei_WC::end_subscription * New: Sensei_Main::sensei_woocommerce_complete_order has been deprecated in favour of Sensei_WC::complete_order * New: Sensei_Main::sensei_woocommerce_cancel_order has been deprecated in favour of Sensei_WC::cancel_order * New: Sensei_Main::sensei_activate_subscription has been deprecated in favour of Sensei_WC::activate_subscription * New: Sensei_Main::woocommerce_course_update has been deprecated in favour of Sensei_WC::course_update * New: Sensei_Main::sensei_get_woocommerce_product_object has been deprecated in favour of Sensei_WC::get_product_object * New: Sensei_Main::disable_guest_checkout has been deprecated in favour of Sensei_WC::disable_guest_checkout * New: Sensei_Main::virtual_order_payment_complete has been deprecated in favour of Sensei_WC::virtual_order_payment_complete * New: Sensei_Main::check_user_permissions has been deprecated with no replacement * New: Sensei_Utils::sensei_is_woocommerce_present has been deprecated in favour of Sensei_WC::is_woocommerce_present * New: Sensei_Utils::sensei_is_woocommerce_activated has been deprecated in favour of Sensei_WC::is_woocommerce_active * New: Sensei_Utils::sensei_customer_bought_product has been deprecated in favour of Sensei_WC::has_customer_bought_product * New: Sensei_Frontend::activate_purchased_courses has been deprecated in favour of \Sensei_WC_Paid_Courses\Courses::activate_purchased_courses * New: Sensei_Frontend::activate_purchased_single_course has been deprecated in favour of \Sensei_WC_Paid_Courses\Courses::activate_purchased_single_course * New: Sensei_Frontend::sensei_woocommerce_in_cart_message has been deprecated in favour of Sensei_WC::course_in_cart_message * New: Sensei_Course::get_product_courses has been deprecated in favour of Sensei_WC_Paid_Courses\Courses::get_product_courses * New: Sensei_Course::get_product_courses_query_args has been deprecated in favour of Sensei_WC_Paid_Courses\Courses::get_product_courses_query_args * New: Sensei_WC_Utils::wc_version_less_than has been deprecated in favour of version_compare( WC()->version, $str, '<' ) * New: Sensei_WC_Utils::is_product_variation has been deprecated in favour of $product->is_type( 'variation' ) * New: Sensei_WC_Utils::get_order_id has been deprecated in favour of $order->get_id() * New: Sensei_WC_Utils::get_product has been deprecated in favour of wc_get_product * New: Sensei_WC_Utils::get_parent_product has been deprecated in favour of wc_get_product * New: Sensei_WC_Utils::get_formatted_variation has been deprecated in favour of wc_get_formatted_variation * New: Sensei_WC_Utils::get_product_variation_data has been deprecated in favour of \Sensei_WC_Utils::get_variation_data * New: Sensei_WC_Utils::get_product_from_item has been deprecated in favour of $item->get_product() * New: Sensei_WC_Utils::get_checkout_url has been deprecated in favour of wc_get_checkout_url * New: sensei_wc_add_to_cart has been deprecated in favour of Sensei_WC::the_add_to_cart_button_html * New: sensei_check_if_product_is_in_cart has been deprecated in favour of Sensei_WC::is_product_in_cart * New: sensei_simple_course_price has been deprecated in favour of Sensei_WC_Paid_Courses\Frontend\Courses::output_course_price * New: is_woocommerce_active has been deprecated with no replacement. * New: sensei_check_woocommerce_version has been deprecated with no replacement * New: The `newcourses` shortcode has been deprecated * New: The `featuredcourses` shortcode has been deprecated * New: The `freecourses` shortcode has been deprecated * New: The `paidcourses` shortcode has been deprecated * New: The `usercourses` shortcode has been deprecated * New: The `allcourses` shortcode has been deprecated * New: The `sensei_show_delete_course_button` hook has been deprecated and will be removed in Sensei 4.0 * New: The `sensei_merge_courses_with_parent_product` hook has been deprecated in favour of `sensei_wc_paid_courses_merge_courses_with_parent_product` * Tweak: Access Permissions setting only controls Lesson content * Tweak: Change text domain from `woothemes-sensei` to `sensei` * Tweak: In `templates/content-course.php`, call Sensei_Course::get_course_loop_content_class instead of WooThemes_Sensei_Course::get_course_loop_content_class * Tweak: In `templates/single-quiz/question-type-*.php`, call Sensei_Question::get_template_data instead of WooThemes_Sensei_Question::get_template_data * Tweak: Update version numbers and add `ABSPATH` checks in templates - #2488 * Fix: Conflict with Jetpack shortcodes module causing Sensei videos to not display * Fix: Bug causing the Lesson order to change on Lesson update * Fix: Completed modules being displayed as "In Progress" * Fix: Fix permalink/rewrite rule issue on plugin activation - #2492 * Fix: Allow for late additions to data updates - #2490 * Fix: Fix issues with coding standards 2019.03.27 - version 1.12.3 * New: Restrict future updates for sites running a version of PHP less than 5.6 - #2502 * Fix: Conflict with Jetpack shortcodes module and Sensei videos - #2426 * Fix: Change progress status to "Completed" in modules (@tonytettinger) - #2342 * Fix: Lesson order changes when lesson is updated using Classic Editor - #2471 * Fix: Update version number on plugin update - #2503 2018.11.29 - version 1.12.2 * New: Add usage tracking for course enrolments * Fix: PHP warnings when ordering courses, modules or lessons * Fix: PHP warnings on Sensei Analysis page * Fix: PHP warning on Course Results page * Fix: Add missing translations on Messages screen * Fix: Enable translating "more" text on Bulk Learner Actions screen * Fix: Show post content for paid courses on single course page * Fix: Show course categories in WordPress 5.0 * Fix: Coding standard and security violations * Fix: Use updated lesson data when updating quiz * Tweak: Removed underscores from filenames 2018.11.01 - version 1.12.1 * Fix: Comments not displaying on Lesson page on unsupported themes * Fix: I18n problems * Fix: AJAX requests sent too frequently * Fix: Comments displaying where they shouldn't on some unsupported themes 2018.10.22 - version 1.12.0 * New: Better support for non-Sensei themes * New: Redirect to next lesson after completing a lesson * New: Show comments for preview lessons * New: Add `sensei_course_image_html`Β filter to enable altering HTML output of a course image * Tweak: Start lesson when student first views lesson page * Tweak: Remove _Single Course page displays_ setting * Tweak: Minify sensei.css * Tweak: Upgrade Select2 to latest version * Fix: Bulk Learner Actions showing all users in the network * Fix: JavaScript error on Lessons page 2018.06.13 - version 1.11.0 * Fix: Fix display of all other lessons after module is removed * Fix: Fix when force completing lessons with quizzes with questions * Fix: Course score based on quizzes that have graded questions * Tweak: Improve performance of fetching the learner count for usage tracking * Tweak: Use domain as value of Tracks userid parameter * Tweak: Delete user's messages when the user is deleted * Tweak: Update URL and Twitter account in tweet that can be sent after activating * New: Add filter for successful payment statuses - sensei_wc_order_statuses * New: Add (Free) Preview label to lesson title * New: Add usage tracking for quiz settings * New: Add stats for number of quizzes and quiz questions * New: Add email column to Analysis screen 2018.04.11 - version 1.10.1 * Fix: Fix error in data updates when there are no quizzes * Tweak: Add setting for data deletion 2018.04.04 - version 1.10.0 * Fix: Fixes associating courses after purchase of a variable subscription product * Fix: Allow certain HTML tags on quiz correct answer result * Fix: ​Fix number parameter not working for [sensei_user_courses] shortcode * Fix: Ensure answers to true / false questions are translated for students * Fix: Fix PHP notices when viewing or adding a lesson and there are no courses * Fix: Fix PHP 7.2.x warnings * Fix: Fix get_class warning on PHP 7.2.x * Fix: Check if WC_VERSION constant is defined before using it * Fix: Fix CSS class name translation * Fix: Hardcode DAY_IN_SECONDS to avoid continuous sending of data on old WP installations * Fix: Fix PHP notices when purchasing non-course product as a guest * Tweak: Remove WooThemes branding on settings page * Tweak: On single course page, link to module only if we should * Tweak: Conditionally link to module in lesson breadcrumb * Tweak: Exclude modules from course navigation when not appropriate * Tweak: Send usage data immediately when enabled through opt-in dialog * Tweak: Clean up extended settings in Gutenberg Lesson editor * New: Delete plugin data on uninstall * New: Add revisions support to courses, lessons and questions * New: Add sensei_start_course_redirect_url filter when starting course * New: Add usage tracking for active and completed courses * New: Show lesson tags in Gutenberg editor * New: Add usage tracking for system info 2018.02.06 - version 1.9.20 * New: Course navigation moves between both lessons and modules * New: Page template for modules * New: Filters for customizing quiz answer text and CSS class names * New: Usage tracking * Tweak: Remove Sensei Welcome screen * Tweak: Remove theme check notice * Fix: Tabbed navigation for `sensei_user_courses` shortcode * Fix: Setting course start date for all students * Fix: Only authorized users can view messages * Fix: Only users with appropriate permissions can duplicate courses and lessons 2017.11.07 - version 1.9.19 * Fix: Fix JS bugs introduced by minification process * Add: ESLint support 2017.11.01 - version 1.9.18 * Fix: Can't preview draft lessons in draft course * Fix: Show Draft Lessons when Previewing course draft * Fix: Issue with lesson excerpts * Fix: Incorrect heading structure, Use h1s for headings on Module, Course and Lesson Order - Add: sensei_learner_admin_get_row_data Filter. Managing table columns on Managing learners * Fix: Learner Profiles: display correct url pattern when wp in custom folder. Learner Profiles Settings showing wrong learner URL Pattern when WP installation in custom location * Fix: Ordering courses using "menu_order" and Courses > Order Courses doesn't work. WC: Don't construct WC_Orders * Fix: Replace 'new WC_Order' with wc_get_order() function. * Fix: Course not showing in My Courses if order is manually Completed * Fix: Simplify CSS for displaying answer feedback - Change purchase button text when a course is free. Change "purchase this course" for free products. Change "purchase this course" for free products * Fix: Link course to a single variation of a variable WooCommerce product. * Fix: Removed learner from Course comeback if see course single page * Fix: Scheduled lessons not added to course page. Scheduled lessons should be added to course page * Fix: Always show answers filter doesn't work for zero grade questions * Fix: Single quotes in video embed HTML breaks on save * Fix: WP_Query not getting reset on My Courses page. Reset postdata after resetting $wp_query * Fix: Messaging issue on preview lessons. Correct the phrasing for lesson previews on Purchasable courses. - Add: Learner Bulk Actions: Make Learner search more flexible. - Add: filter sensei_send_message_link * Fix: Learner Profiles can handle email-like usernames. * Fix: Lesson: Allow Completing if Quiz has no questions * Fix: "Complete Lesson" button missing * Fix: Videos visible when prerequisites have not been completed * Fix: Modification to users displayed in Analysis? * Fix: some of the columns to be sortable for Learners in Analysis overview * Fix: Weird html in shortcodes. Fixes excerpts in template to properly nest within paragraphs. * Fix: New lesson: cannot assign to a module unless a draft is saved first. Lesson Admin: Populate modules on course change * Fix: Pagination not working on course archive front page * Fix: Featured course filter gives 404 on home page * Fix: Multi Line Quiz responses displayed as HTML if saved and resumed * Fix: Can't delete answer feedback * Fix: Courses page sorting dropdown problems * Fix: Autocomplete processing virtual orders not working * Fix: "Free" Course filter displays courses linked to product variations * Fix: Menu should not collapse when navigated to Messages * Fix: Quiz Multiline as HTML is saved for teacher as plaintext- * Fix: Sensei/WC Variable product: Start courses only when their variation is purchased * Fix: issue preventing course author from syncing with lesson author * Fix: Update name of WooThemes Updater plugin in notices * Fix: Course Admin: Show the add lesson link even when the course has lessons * Fix: Unpublished products should never be purchasable1 * Fix: issue with slashes in gap fill question answers * Fix: Lock down wp-admin access when editing post_type quiz. - Add: My Courses: Convert Tabs to filters * Fix: My Courses Pagination broken * Fix: Remove "All" filtering from settings * Fix: Preserve lesson order w/ modules when changing course author * And many more fixes and improvements 2017.09.07 - version 1.9.17 * Fix Add learner to course and complete course sends two duplicate emails * Fix Modules: WooCommerce 2.6.x Select2 compatibility fix * Fix Incorrect heading structure: Use proper headings hierarchy for settings and data updates * Fix Usernames with a . or @ don't work for loading user profiles (Get learner profiles by login, not slug) * Fix Fatal Jetpack removing module taxonomy * Add bulk recalculate completion * Fix Modules: Teachers should only view their own modules * Fix: Lesson image does not display on single course page [Pri] Low [Type] Bug * Add User Courses Shortcode: Filter for conditionally displaying toggles * Fix Memberships: Query all restricted content * Fix Lesson image does not respect size setting * Fix Remove trailing whitespaces from translatable strings [Pri] Low [Type] Bug * Fix Unable to add Existing Questions to Quiz with Search Filter (PHP 7.1.4) 2017.07.10 - version 1.9.16 * Fix - Prevent multiple emails being sent to learners already started on a course. * Fix - Course content disappears * Fix - Prevent certain scenarios where course start date was resetting when visiting my-courses * Fix - Don't send confusing registration emails to users * Fix - Learner Profile White screen * Fix - Prevent users from buying duplicate courses * Admins can now edit learner course start dates 2017.06.20 - version 1.9.15 * Improve handling of get_bloginfo( β€˜admin_email’ ) #1809 * Fix With [sensei_courses] short code on product page, up-sells disappear #1800 * Fix Users not being added to purchased courses again #1808 1810 * Fix Select2 (Can’t add course when editing Module) * Better 2017 Theme Support * Even Better Memberships Integration * Other small bugfixes and improvements 2017.04.25 - version 1.9.14 * Fix minor syntax in course categories widget #1786 * Add filter for permitted data update functions #1783 * WC 3.0 Compat: Fix admin course notices #1788 * WC 3.0 Compat: Ignore orphaned product variations #1789 * Make sure sensei_message save hook runs after CPT is registered #1770. Fixes Compatibility issue with Safe Redirect Manager * Fix non-localization friendly quiz title #1768 * use $wpdb->users and $wpdb->comments instead of $wpdb->prefix on Bulk Learner Action Query 2017.04.07 - version 1.9.13 * Add Experimental Course Admin REST API (disabled by default) * Add Allow user to change question points text formatting * Add support for `source` tag for videos * Allow admin to reset quiz for single student * Warn users when admin_email not a wp admin email * Fix random HTML rendering into REST endpoints for course shortcodes * Fix Fatal error when viewing Sensei course in combination with the Products Bundle plugin * Fix Module description not displayed on course page * Fix Login form sanitizes password * Fix Teacher not able to see the graded quizzes * Fix Single Course Page: Displaying "Lessons" header when there are no lessons * Fix issue when username is an email, but user has different email [Pri] Normal [Type] Enhancement * Fix WC >= 2.7-beta and WC 3.0 Compat in Lesson Admin * Fix WC 3.0 Select2 conflict by Upgrading to Select2 v4 * Fix Allow Memberships cache control on start_courses_associated_with_membership * Fix 'reset' learner bulk action not resetting all courses * Add filter for learner profile permalink * Fix empty CSV analysis export for learners * Various fixes and improvements 2017.03.01 - version 1.9.12 * Bulk Learner Actions - Initial version. You can now assign, unassign and reset multiple users on (multiple) courses. * Compatibility with Woocommerce 2.7 * Initial support for the new user defined locale settings on wp 4.7 * Fix - Jetpack Compat: Add Beautiful Math Support on quiz feedback * Fix - Correctly display answer feedback on quizzes * Fix - Cancelled trial subscriptions do not retain course access after trial expires. * Fix - Purchased course doesn’t show on learner profile * Fix - Error when updating course as a teacher in WP 4.7 * Bugfixes, improvements 2017.01.10 - version 1.9.11 * Improved WC Memberships integration. Added option to "Auto-start" courses belonging to memberships when activated * Improved robustness of quiz save/submit when using random questions * Added option to disable HTML sanitization on video embeds to support legacy video providers * Fix - Logged out users get correct message on courses protected by memberships * Fix - Course results title displayed * Fix - Only consider published lessons for completion percentages * Fix - Get rid several division by zero warnings * Fix - Display Course prerequisite message * Fix - Ensure a teacher cannot change the product associated with a course * Fix - correctly assign free subscription courses 2016.12.20 - version 1.9.10 * WordPress 4.7 Compatibility release 2016.10.19 - version 1.9.9 * Hotfix - Address possible fatal on older PHP versions 2016.10.18 - version 1.9.8 * Fix - Removed HTML output on lesson complete message * Fix - The video HTML tag now works properly in the video embed field * Fix - Deleted/non-existant courses showing in course order list * Fix - Completed lessons showing 'in progress' label * Fix - Missing link in log in message * Fix - Conflict with Heroic Knowledge Base * Fix - HTML showing in grading for uploaded files * Fix - Lessons show 'please complete the previous course' * Fix - Conflict with Jetpack: iframe video embeds converting to shortcodes * Fix - Parse errors on PHP <5.3 * Fix - typo in sensei_has_user_completed_prerequisite_lesson * Fix - Conflict with Wishlist Member 2016.09.29 - version 1.9.7 * Improve Module taxonomy labels * Fix - Lesson doesn't appear on Course archive until ordering is resaved * Fix - Errors when duplicating course with lessons * Fix - Add modules-frontend.css to sensei_disable_styles filter * Fix - Grade unanswered questions too * Fix - Paypal "Cancel and return" causing a fatal error * Fix - Do not create duplicate membership rules on save * Fix - Random users not being assigned to courses after purchase * Fix - "Quiz saved" notice not appearing * Various security fixes 2016.05.05 - version 1.9.6 * Fix - Fixed an issue prevent Modern Tribe's The Event Calendar from functioning properly. * Fix - Ensure the question grade is shown inline with questions. * Fix - Prevent a PHP notice when calling question results. * Fix - Prevent a situation where quiz answers are revealed prior to submission. * Fix - Use the course ID when building the permalink for the start course form. 2016.04.26 - version 1.9.5 * Fix - The purchase course button wasn't showing up on some courses. * Fix - Ensure courses are activated when order status is processing or completed. * Fix - Ensure course linked to a subscription is activated immediately after purchase. * Fix - Ensure the [sensei_course_page] shortcode displays lessons in modules. * Fix - Fixed a few potential fatal errors when adding a learner to a course. * Fix - Fixed the learner profile url when WordPress is installed in a separate folder. * Fix - Ensure purchased courses don't display a price on the My Courses page. * Fix - Remove link from lesson image on single lesson page. * Fix - Ensure is_sensei() returns true on module archive pages. * Fix - Ensure comments display on lessons for registered learners, if enabled. * Fix - Ensure quiz shows correct message when submitted for manual grading. * Fix - Ensure links in results page link to lesson pages. * Fix - Ensure module is not removed from course when editing module via quick edit. * Fix - Ensure quick editing a lesson does not remove any of its settings. * Fix - Fixed input ids on multiple choice questions. * Fix - Show appropriate message in Learner Management when a search returns no results. * Fix - Ensure lesson/course completion emails are not sent to learners before completion. * Fix - Prevent questions being deleted from original lesson, when deleting them from a duplicated lesson. * Fix - When updating a lesson slug, ensure the corresponding quiz slug is also updated. * Fix - When a lesson is permanently deleted, also delete the corresponding quiz. * Fix - Ensure deleted lessons are not displayed on the course page. * Fix - Course archive page now works if set as front page. * Fix - Fixed up some formatting issues on the module archive page. * Fix - When learner does not achieve the passmark, ensure the required passmark is displayed. * Fix - Ensure correct/incorrect answers are indicated, according to https://docs.woothemes.com/document/sensei-quiz-settings-flowchart/ * Tweak - Removed empty span tag from single course page. * Tweak - Added some new hooks to the [sensei_user_courses] shortcode. * Tweak - Removed two redundant settings from the WooCommerce settings section. * Tweak - Course archive page now displays the number of courses per page as specified in Settings > Reading (Blog pages show at most...) * Tweak - Improved the login message when a guest visitor views a course page. * Tweak - Changed heading tags in admin pages to conform to WordPress standards. * Tweak - Moved arrows after the text in course/lesson/quiz navigation. * Tweak - Improved string formatting for a few strings to make translation easier. * New - Added "menu_order" as an orderby parameter on [sensei_courses] to order courses as specified in Courses > Order Courses 2016.04.04 - version 1.9.4 * Fix - Ensure current quiz grade is displayed when submitting autograded quizzes. * Fix - Ensure grading notes are always displayed when quiz is manually graded. * Fix - Prevent fatal error when adding learner to a course. * Fix - Prevent Uncaught ReferenceError when removing learner from a course. * Fix - Ensure questions don't change after submission when using a subset of questions in a quiz. * Fix - Fixed label text on search button in Learner Management. * Fix - Fixed incorrect WC order status. * Fix - Fixed an issue with is_course_purchasable() * New - Added support for WP QuickLaTeX plugin. * New - Added new 'sensei_courses_shortcode_course_data' filter in courses. * New - Added a 'sensei_load_default_supported_theme_wrappers' filter to allow disabling custom theme wrappers. * Tweak - Updated support link in Plugins page. 2016.03.03 - version 1.9.3 * Fix - Message titles now link to the individual messages. * Fix - Make sure Sensei does not affect the display of blog posts. * Fix - Fixed a few php warnings. * Fix - Courses linked to product variations can now be purchased. * Fix - Make "Free Preview" translation ready. * Fix - Make sure lessons can't be viewed until the prerequisite is complete. * Fix - Fixed the course component widget for active and completed courses. * Fix - Ensure courses can't be accessed if linked to a subscription that is on-hold, cancelled, or expired. * Tweak - Improved appearance of tabs when using [sensei_user_courses] * New - Added 'Configure', 'Docs', and 'Support' links to Sensei on Plugins page. 2016.02.11 - version 1.9.2 * Fix - Access permissions restored to the way it worked in version 1.8.8, totally removing the no-permissions templates. * Fix - Using $wpdb to prefix mysql queries, missed one instance in version 1.9.1 * Fix - Use the correct wc statuses when checking if an order is acceptable. * Fix - Ensure wc_get_product is wrapped inside a is WooCommerce active check to ensure the function exists. * Fix - Avoid checking if a user is on a course if the user is not logged in, removing an error notice. * Fix - ensure the take course button shows up for logged in user on the no-permissions template. * Fix - Boolean questions should not have default values. * Fix - Fix up the course component widget. * Fix - Add the missing preview label for preview lessons that appear in modules on a single course. * Fix - Remove users saved data from lesson when they are removed. * Fix - Hide complete lesson button on lesson when the current user is not taking the lessons course. * Fix - Hide preview if user is already taking course. * Fix - Creating sensei pages now updated correctly within settings. * Tweak - Hide add to cart if the course is already in cart. * Tweak - Get user saved answers to return null of none was saved as false values could also be answer values. * Tweak - Function sensei_can_user_view_lesson will now also work from the quiz template context. * Tweak - Fix up the frontend notification system to use the notification functionality built into Sensei. * New - Introduce a new function for checking if a course is purchasable. 2016.02.07 - version 1.9.1 * Fix - Use strtolower function on hosts that do not support mb_stringtolower. * Fix - Use $wpdb prefix for mysql queries where it wasn't added. * Fix - Avoid division by zero error. * Fix - Do not hide embedded videos for admins and when a lesson is in preview mode. * Fix - The Woocommerce class should only be added to no-permissions template. * Fix - Ensure we check for is_object before trying to access the object property. * Fix - Add strings manually to allow for easier translation. * Fix - Fatal error on certain hosts by providing a direct path to woocommerce hooks loading file. * Fix - Fix the no permissions template when displaying a single course should also show lessons and possible modules. * Fix - Fix the preview lesson to ensure the message shown is the same as it was in 1.8.8 * Fix - Modules status was now shows the correct status message and css class. * Fix - Boolean question type html shows both false and true option correctly. * Fix - Update POT file to ensure no error are present. * Fix - Single course full or excerpt settings now show up exactly as it was set. * Fix - Hide view quiz button from users not taking the lesson * Fix - Hide login message from users who are already logged in * Fix - WooCommerce bug where users couldn't purchases a course * Fix - Ensure that users manually added to a paid course still have access. * Tweak - Remove the delete course button from my-course while still allowing developers to show it with a filter. 2016.01.02 - version 1.9 For a list of files changed please see: https://github.com/woothemes/sensei/compare/version/1.8.9-beta-1...master#files_bucket * New - Templates system completely overhauled. The templates now contain almost no logic, just hooks and html. Most functionality is hooked in which allows for even more customization and easier update fixes. It is also easier to read. This also includes the use of more functions to enforce greater code reuse. * New - Shortcode all the things. We've heard you here and we've added more shortcodes so can worry less about templates. the new shortcodes are on our support documentation. The old shortcodes works fine. * New - Course Archives template now overtakes the selected page giving you a new filterable list of courses. * New - A Next lesson button for easier flow while students progress through a course. * New - Custom round function that can be filtered, for developers to choose the decimals. * New - Sensei() now officialy replaces $woothemes_sensei, which will be deprecated soon. * New - php classes are now auto loaded when needed instead of loading all classes for every request. * New - New filters for all sensei core post type for easier customization. * New - Allow for zero graded questions, so you can ask things questions just for fun :) * New - Option to send email to teacher when a learner completes a lesson * New - Course management metabox to Edit Course screen so you can jump to learner management and grading directly. * New - Renamed frontend.css to sensei.scss to avoid conflict and confusion with other plugins and themes. * New - Course in progress icon change so that it doesn't look like it's loading all the time. * New - Admin WordPress notice styles to align with core. * New - Support for Twentysixteen WordPress default theme * Fix - Integration support for WooCommerce subscriptions extension. * Fix - File upload popup didn't work on the single question edit screen. * Fix - A call to the wrong get user function. * Fix - Encoding issues when using strtolower fixed. The function now returns utf-8. * Fix - Corrected a few typos. * Fix - No more forced updates. You are free to do them when you choose. * Fix - Broken html In certain places. * Fix - Use slug when adding question type and not the name. * Fix - Moved course details outside of H2 heading. * Fix - Ensure that grading notes show up for gap fill questions. * Fix - Remove extra forward slash when loading templates. * Fix - Multi-line question answers not showing in admin grading. * Fix - File upload paths on Multi-site. * Fix - No more double "Quiz Quiz" on your single quiz. * Fix - Sensei now handles url rule flushing so you don't see 404 for Sensei specific page and post types. * Fix - Fix a few critical issues where we we Menus for fine-grained control over menu items * Tweak - Displaying lesson excerpt on single lesson page for unregistered users * Tweak - Converting all Less files to SASS * Fix - Making sure that courses are no longer available after subscription ends * Fix - Ensuring that only valid users are shown in the grading dashboard * Fix - Fixing filter for quiz results link 2014.03.21 - version 1.5.4 * Fix - Fixing content formatting in TwentyTwelve theme * Fix - Fixing warning when number of questions to show is 1 * Fix - Start a Course link on My Courses page now links to custom Course Archive page if specified in settings. * Fix - Fixing Javascript error on lesson and course edit pages * Fix - Fixing file upload question type when no other types are included in the quiz * Fix - Ensuring that all ungraded quizzes show up in the grading dashboard 2014.03.21 - version 1.5.3 * New - Moving global Sensei functions to new file to make them accessible everywhere * Fix - Fixing CSS conflict with WooCommerce forms * Fix - Fixing login form on My Courses page * Fix - Making sure multiple choice answers that contain apostrophes wil always work on any server * Fix - Fixing occasional WooCommerce error on single course pages 2014.03.12 - version 1.5.2 * New - Adding support for RTL languages in the dashboard * New - Minifying all Javascript files and enabling SCRIPT_DEBUG script expansion * Tweak - Updating Chosen Javascript & CSS libraries to v1.1 * Tweak - Auto-scrolling to complete lesson button after button has been clicked * Fix - Fixing all queries so that other page queries are not affected by Sensei settings 2014.03.07 - version 1.5.1 * New - Adding utility function to check if a user has completed a lesson * Fix - Fixing PHP errors on My Courses page * Fix - Fixing course progress bars on My Courses page 2014.03.04 - version 1.5.0 * New - Completely refactored the quiz edit panel * New - Adding 'File Upload' question type * New - Adding ability to manually order quiz questions via drag-and-drop along with option to randomly order questions * New - Adding option to have any number of multiple choice answers * New - Adding ability to manually order multiple choice answers via drag-and-drop along with option to randomly order answers * New - Adding function to upload media files to quiz questions * New - Adding option to only show a limited number of quiz questions to each student * Tweak - Displaying grading notes on graded quizzes if quiz reset is disabled * Fix - Hiding grading notes with Javascript to cater for disabled CSS * New - Adding ablity to duplicate courses * New - Adding option to filter lessons by course in the dashboard * New - Adding pagination to My Courses page * Fix - Fixing number of courses shown on My Course page * Fix - Preventing purchased courses with incomplete prerequisites from being completed * Fix - Removing 'view results' link when no quizzes are present * Fix - Removing prerequisite course field when a prerequisite course is moved to trash * New - Adding ablity to duplicate lessons * New - Adding 'lesson tags' taxonomy for broader grouping of lessons * Tweak - Removing numbering from lessons and adding filter to put them back * Tweak - Moving videos to top of lessons and adding filter to choose the video location * Fix - Making lesson archive display consistent in all areas * Fix - Removing PHP notices from lesson archives * Fix - Removing prerequisite lesson field when a prerequisite lesson is moved to trash * New - Enhancing grading dashboard to allow filtering by grade status * Tweak - Improving user search in grading dashboard * New - Adding courses and lessons to the 'At a Glance' dashboard widget * Tweak - Removing unused images and CSS * Tweak - Updating deprecated functions for WooCommerce 2.1 * Fix - Fixing adding variable product course to cart * Tweak - Switching profile URLs to use 'nicename' instead of 'username' * New - Adding registration form to login page * Tweak - Improving styling of login page * Fix - Fixing image display in widgets * New - Adding is_sensei() conditional to check for Sensei pages * New - Adding 'sensei' class to body tag for all Sensei pages * New - Adding update to clean up Sensei activity for deleted users * Fix - Ensuring that user Sensei activity is deleted when a user is deleted from WordPress 2014.02.13 - version 1.4.9 * Fix - Fixing WooCommerce taxonomy templates when Sensei is active * Fix - Fixing bug that was causing grades to be higher than 100% * Fix - Clearing floats on Sensei front-end messages * Fix - Making sure chosen drop down is always used on course product selection 2014.01.23 - version 1.4.8 * New - Allowing access to courses when WooCommerce order is marked as processing * Fix - Ensuring that all purchased courses show up on the My Courses page * Fix - Fixing auto grading when all user's answers are incorrect * Fix - IE compatibility fix for course completion * Fix - Fixing update script so that all questions are not reset to multiple choice on update * Fix - Fixing sanitisation of answer input fields * Fix - Fixing saving of true/false questions * Fix - Ensuring that new questions do not contain data from previous question added * Fix - Preventing completed courses widget from showing all courses if none are completed * Tweak - General CSS tweaks 2013.12.13 - version 1.4.7 * Fix - Fixing add question function for WordPress 3.8+ 2013.12.12 - version 1.4.6 * New - Adding Chosen Ajax library * Tweak - Updating Chosen CSS * Tweak - Moving nav arrows from markup to CSS (affects pagination wrappers) * Tweak - Removing absolute positioning from course action buttons on single course page * Tweak - Updating admin icons and styling for WordPress 3.8 * Tweak - Allowing Sensei updater to run functions from extensions * Tweak - Preventing grouped products from being selected as course products * Fix - Removing PHP warnings * Fix - Fixing course excerpt display on Courses page 2013.12.04 - version 1.4.5 * /classes/class-woothemes-sensei-frontend.php - Ensures course content displays when user starts taking course * /classes/class-woothemes-sensei-course.php, /classes/class-woothemes-sensei-frontend.php, /templates/loop-course.php, /widgets/widget-woothemes-sensei-category-courses.php, /widgets/widget-woothemes-sensei-course-component.php - Fixes lesson count when lesson and course have different authors * /assets/js/lesson-metadata.js - Fixes display of course name when adding from within a lesson * /classes/class-woothemes-sensei-frontend.php - Adds course link to order thank you and details pages * /classes/class-woothemes-sensei-course.php, /classes/class-woothemes-sensei-frontend.php, /classes/class-woothemes-sensei-learner-profiles.php, /templates/loop-course.php, /templates/loop-lesson.php, /templates/single-course/course-lessons.php - Removes empty 'fix' divs * /widgets/widget-woothemes-sensei-lesson-component.php, /classes/class-woothemes-sensei-course.php, /classes/class-woothemes-sensei-frontend.php - Markup fixes * /classes/class-woothemes-sensei-learner-profiles.php - Enables auto paragraphs on learner profile description * /assets/css/frontend.css, /classes/class-woothemes-sensei-course-results.php, /classes/class-woothemes-sensei-course.php, /classes/class-woothemes-sensei-frontend.php, /inc/woothemes-sensei-template.php, /templates/content-no-permissions.php, /templates/single-quiz/quiz-questions.php, /templates/woocommerce/add-to-cart.php - Adds unique classes on sensei messages * /classes/class-woothemes-sensei-analysis-course.php, /classes/class-woothemes-sensei-analysis-lesson.php, /classes/class-woothemes-sensei-analysis-overview.php, /classes/class-woothemes-sensei-analysis.php, /classes/class-woothemes-sensei-grading-main.php - Uses display name instead of username in Analysis/Grading sections * /templates/content-single-lesson.php, /classes/class-woothemes-sensei-frontend.php - Ensures lesson comments are only visible to users with access * /classes/class-woothemes-sensei.php, /classes/class-woothemes-sensei-frontend.php - Ensures courses are deactivated when an order is refunded/cancelled * /classes/class-woothemes-sensei-course.php, /classes/class-woothemes-sensei-lesson.php, /classes/class-woothemes-sensei-settings-api.php, /classes/class-woothemes-sensei-settings.php, /classes/class-woothemes-sensei.php - Registers new image sizes for Sensei images, with hard crop setting * /classes/class-woothemes-sensei.php - Ensures guest checkout is disabled if Sensei products in cart * /classes/class-woothemes-sensei-frontend.php - Only display excerpts for lessons/courses in search results 2013.11.20 - version 1.4.4 * /templates/course-results/course-info.php - Updating markup for course results page * /templates/learner-profile/learner-info.php - Updating markup for learner profile page * /templates/content-single-lesson.php - Fixing lesson prerequisite check * /widgets/widget-woothemes-sensei-course-component.php - Fixing 'My Active Courses' & 'Featured Courses' widgets * /classes/class-woothemes-sensei-course-results.php - Updating markup & fixing rewrite rules for course results page * /classes/class-woothemes-sensei-learner-profiles.php - Updating markup & fixing rewrite rules for learner profiles * /classes/class-woothemes-sensei-course.php - Updating markup for lesson quiz meta buttons & fixing limits on course queries * /classes/class-woothemes-sensei-frontend.php - Updating markup, fixing lesson prerequisites & adding function to check for completed lessons * /classes/class-woothemes-sensei-utils.php - Updating button markup * /classes/class-woothemes-sensei.php - Fixing rewrite rules for learner profiles and course results page & improving guest checkout check 2013.10.24 - version 1.4.3 * /assets/css/frontend.css - Responsive layout tweaks & fixes. * /classes/class-woothemes-sensei-frontend.php - fixes missing complete course hook, fixes missing lesson complete message and reset lesson buttons, fixes 'delete course' function. * /classes/class-woothemes-sensei-utils.php - fixes lesson complete message on single lesson page if there are no quiz questions. 2013.10.15 - version 1.4.2 * /assets/js/lesson-metadata.js - fixes post issues with multiline and boolean add and edit ajax functions. * /templates/woocommerce/add-to-cart.php - fixes adding of variable subscription courses to cart. * /templates/single-quiz/question_type-boolean.php, /templates/single-quiz/question_type-essay-paste.php, /templates/single-quiz/question_type-gap-fill.php, /templates/single-quiz/question_type-multi-line.php, /templates/single-quiz/question_type-multiple-choice.php, /templates/single-quiz/question_type-single-line.php - sets default grade of 1 to every question for cases where no grade is set * /classes/class-woothemes-sensei-admin.php - fixes issue where sensei comment types were visible to authors in the backend. * /classes/class-woothemes-sensei-grading.php - fixes layout issue in the grading admin interface where the footer was misplaced. * /classes/class-woothemes-sensei-updates.php - fixes array sort method error notices on the updates screen. * /classes/class-woothemes-sensei-utils.php - fixes quiz submitted link translation string on single lesson page & auto grading issue when some questions are left unanswered. * /classes/class-woothemes-sensei-frontend.php - fixes object instantiation PHP warning, and issue on quiz button incorrectly displaying on single lesson page. * /classes/class-woothemes-sensei-lesson.php - fixes save function to handle changes made in lessons ajax. 2013.10.10 - version 1.4.1 * /templates/single-course/course-lessons.php - Fixing typo in lessons template * /assets/css/frontend.less, /assets/css/frontend.css - Updating layout of lesson buttons * /classes/class-woothemes-sensei-frontend.php - Ensuring 'complete lesson' and 'take quiz' buttons display correctly * /classes/class-woothemes-sensei-lesson.php - Fixing adding of multiple choice questions * /classes/class-woothemes-sensei-course.php - Changing 'chapters' to 'lessons' for consistency * /classes/class-woothemes-sensei-list-table.php - fixes user query and pagination for scaling * /classes/class-woothemes-sensei-analysis-overview.php, /classes/class-woothemes-sensei-analysis-course.php, /classes/class-woothemes-sensei-analysis-lesson.php, /classes/class-woothemes-sensei-grading.php, /classes/class-woothemes-sensei-grading-main.php - fixes user query for scaling 2013.9.24 - version 1.4.0 * /templates/learner-profile.php, /templates/learner-profile/learner-info.php - Adding new templates to display learner profiles * /templates/course-results.php, /templates/course-results/course-info.php, /templates/course-results/course-lessons.php - Adding new templates to display course results page * /templates/user/my-courses.php - Moving courses output to global function * /templates/loop-course.php - Changing 'Lectures' to 'Lessons' & adding text filters * /templates/single-quiz/quiz-questions.php - Moving logic for quiz grade message into utility function * /templates/single-quiz/question_type-boolean.php, /templates/single-quiz/question_type-essay-paste.php, /templates/single-quiz/question_type-gap-fill.php, /templates/single-quiz/question_type-multi-line.php, /templates/single-quiz/question_type-multiple-choice.php, /templates/single-quiz/question_type-single-line.php - Adding question grade & answer notes * /templates/content-single-course.php, /templates/content-single-lesson.php - Allowing site admins to view all content * /templates/woocommerce/add-to-cart.php - Fixing purchase course button to work with variable subscriptions * /inc/woothemes-sensei-template.php - Adding sensei_all_access() function and text filters * /widget/widget-woothemes-sensei-category-courses.php, /widget/widget-woothemes-sensei-course-component.php - Changing 'Lectures' to 'Lessons' & adding text filters * /classes/class-woothemes-sensei.php - Loading new classes for learner profiles & course results and adding function to dynamically disable guest checkout * /classes/class-woothemes-sensei-admin.php - Restructuring Sensei admin menu items & fixing menu highlighting * /classes/class-woothemes-sensei-posttypes.php - Adding author field to post types, filters on labels and slugs, fixing a few translatable strings & restructuring admin menu items * /classes/class-woothemes-sensei-updates.php - Adding admin menu page for manual updates, restructuring links, refactoring updates panel & adding new update function * /classes/class-woothemes-sensei-course.php - Adding load_user_courses_content() to generate active/completed course data per user * /classes/class-woothemes-sensei-settings.php - Adding Learner Profiles settings & updating descriptions for other settings * /classes/class-woothemes-sensei-settings-api.php - Fixing HTML labels on settings page, updating settings CSS version * /classes/class-woothemes-sensei-learner-profiles.php - New class for managing learner profiles * /classes/class-woothemes-sensei-course-results.php - New class for managing course results pages * /classes/class-woothemes-sensei-analysis.php, /classes/class-woothemes-sensei-analysis-overview.php, /classes/class-woothemes-sensei-analysis-course.php, /classes/class-woothemes-sensei-analysis-lesson.php, /classes/class-woothemes-sensei-analysis-user-profile.php, /classes/class-woothemes-sensei-grading-main.php - Updating layout, restructuring links, adding text filters, adding column array filters, enhancing user queries & removing CSS from non-Sensei pages * /classes/class-woothemes-sensei-utils.php - Numerous changes for grade points, moving a number of operations into functions and some minor bug fixes * /classes/class-woothemes-sensei-frontend.php - Adding extra info for question processing, fixing up lesson prerequisite functions, adding text filters & moving some operations into utility functions * /classes/class-woothemes-sensei-list-table.php - Fixing sorting of primary columns * /classes/class-woothemes-sensei-grading.php, /classes/class-woothemes-sensei-grading-user-quiz.php, /classes/class-woothemes-sensei-lesson.php, /assets/js/grading-general.js, /assets/js/lesson-metadata.js, /assets/js/general-frontend.js, - Adding grade points and answer notes per question, restructuring links, adding text filters, updating quiz add/edit UI, fixing PHP notices & removing CSS from non-Sensei pages * /assets/css/settings.less, /assets/css/settings.css - Adding styles for new grading features, updating quiz add/edit UI & updating general admin UI styling * /assets/css/frontend.less, /assets/css/frontend.css - Adding styles for learner profiles & course results * /assets/css/global.css - Updating styles for admin menu items * /assets/css/activation.less, /assets/css/activation.css - Adding stylesheet to handle Sensei setup notice * /assets/images/woothemes.png - Updating WooThemes logo 2013.07.05 - version 1.3.7 * /assets/js/lesson-metadata.js - fix for javascript removing special chars in ajax posting for question types * /classes/class-woothemes-sensei-updates.php - adds hidden manual updates screen in /wp-admin/options-general.php?page=sensei-manual-update-hidden-page 2013.07.01 - version 1.3.6 * /templates/single-quiz/question_type-multiple-choice.php - handles apostrophes in answers bugfix * /classes/class-woothemes-sensei-utils.php - handles apostrophes in answers bugfix 2013.06.10 - version 1.3.5 * /assets/js/lesson-metadata.js - fix for true false question type selector problems * /classes/class-woothemes-sensei-lesson.php - fix for true false question type selector problems * /widgets/widget-woothemes-sensei-course-component.php - fix for featured courses output 2013.06.04 - version 1.3.4 * /assets/css/global.css - updated styling for grading notices * /classes/class-woothemes-sensei.php, /classes/class-woothemes-sensei-analysis-course.php, /classes/class-woothemes-sensei-analysis-lesson.php, /classes/class-woothemes-sensei-frontend.php - fixes bug in completed courses logic * /classes/class-woothemes-sensei-admin.php - updated backend stylesheets * /classes/class-woothemes-sensei-grading.php - added grading success messages in the sensei_grading_notices action * /templates/single-course/course-lessons.php, /templates/user/my-courses.php - fixes bug in completed courses logic 2013.05.30 - version 1.3.3 * /assets/css/frontend.css - fixes Twenty Twelve CSS conflict for lesson navigation next and previous links * /classes/class-woothemes-sensei.php - adds support for more WC subscriptions actions 2013.05.28 - version 1.3.2 * /classes/class-woothemes-sensei-grading.php, /classes/class-woothemes-sensei-utils.php - Fixing grading bug that was causing grade totals to not be saved, added function for lesson_quiz_questions() * /classes/class-woothemes-sensei-frontend.php - Adding logic to fix message for lessons without quiz questions that have been completed * /classes/class-woothemes-sensei-updates.php - Adding security checks on update script loops * /templates/single-quiz/quiz-questions.php - Improving check for manual/auto quiz grading on front-end 2013.05.27 - version 1.3.1 * /classes/class-woothemes-sensei-grading.php - Fixing bug that prevented non-admin users from being graded 2013.05.23 - version 1.3.0 * /assets/css/global.css, /assets/css/frontend.css, /assets/css/settings.css - question types and grading styling * /assets/images/icon_right_32.png, /assets/images/icon_wrong_32.png - grading icons * /assets/js/grading-general.js - New grading javascript logic * /assets/js/lesson-metadata.js - question types modifications * /classes/class-woothemes-sensei-analysis.php, /classes/class-woothemes-sensei-analysis-course.php, /classes/class-woothemes-sensei-analysis-lesson.php, /classes/class-woothemes-sensei-analysis-overview.php - question types and grading modifications * /classes/class-woothemes-sensei-frontend.php - question types and grading modifications * /classes/class-woothemes-sensei-lesson.php - question types modifications * /classes/class-woothemes-sensei-grading.php - New grading functionality, main class * /classes/class-woothemes-sensei-grading-main.php - New grading functionality, overview screen * /classes/class-woothemes-sensei-grading-user-profile.php - New grading functionality, grade a quiz screen * /classes/class-woothemes-sensei-posttypes.php - question types modifications * /classes/class-woothemes-sensei-question.php - question types modifications * /classes/class-woothemes-sensei-quiz.php - question types modifications * /classes/class-woothemes-sensei-updates.php - upgrade functions for questions types and grading data * /classes/class-woothemes-sensei-utils.php - question types and grading helper functions * /classes/class-woothemes-sensei.php - added access permissions filter, woocommerce paypal hook fix * /inc/woothemes-sensei-template.php - questions types and grading helper functions * /templates/single-quiz/question_type-boolean.php, /templates/single-quiz/question_type-essay_paste.php, /templates/single-quiz/question_type-gap-fill.php, /templates/single-quiz/question_type-multi-line.php, /templates/single-quiz/question_type-multiple-choice.php, /templates/single-quiz/question_type-single-line.php, /templates/single-quiz/quiz-questions.php - question types modifications, added new template files for new question types 2013.05.16 - version 1.2.6 * /classes/class-woothemes-sensei-frontend.php - modified the course signup link to handle purchaseable courses * /classes/class-woothemes-sensei.php - permissions modification for user access * /templates/content-single-lesson.php - added notice for course signup if the user doesnt have access * /templates/single-quiz/quiz-questions.php - disabled quiz fields for when user is not taking the course, and added signup notice 2013.05.13 - version 1.2.5 * /classes/class-woothemes-sensei-frontend.php - fix for access permissions settings on Lessons and Quiz pages * /templates/content-single-lesson.php - fix for access permissions settings on Lessons page 2013.05.08 - version 1.2.4 * /widgets/widget-woothemes-sensei-course-component.php - fix for no active and completed courses in widget 2013.04.30 - version 1.2.3 * /assets/css/frontend.css - fix for FontAwesome issue in Firefox * /classes/class-woothemes-sensei-frontend.php - warning message fix 2013.04.29 - version 1.2.2 * /classes/class-woothemes-sensei-frontend.php - fix for get_comments_number filter * /classes/class-woothemes-sensei.php - fix for access permissions settings * /templates/single-lesson/lesson-meta.php - fix for access permissions settings 2013.04.25 - version 1.2.1 * /assets/js/lesson-metadata.js - security improvements * /classes/class-woothemes-sensei-admin.php, /classes/class-woothemes-sensei-analysis.php, /classes/class-woothemes-sensei-lesson.php, /classes/class-woothemes-sensei.php - security improvements * /classes/class-woothemes-sensei-course.php - security improvements, fix for course image output, fix for trashed variations * /classes/class-woothemes-sensei-frontend.php - improved template hooks, fix for WC add to cart url * /classes/class-woothemes-sensei-posttypes.php - fix for lesson_comments setting * /classes/class-woothemes-sensei-utils.php - fix for comments_clauses filter * /inc/woothemes-sensei-template.php - improved template hooks * /templates/archive-course.php, /templates/archive-lesson.php, /templates/loop-lesson.php, /templates/no-permissions.php, /templates/single-course.php, /templates/single-course/course-meta.php, /templates/single-lesson.php, /templates/single-lesson/lesson-meta.php, /templates/single-quiz.php, /templates/single-quiz/quiz-questions.php, /templates/taxonomy-course-category.php, /templates/user/my-courses.php - improved template hooks * /templates/wrappers/wrapper-end.php, /templates/wrappers/wrapper-start.php - added support for Canvas styling * /widgets/widget-woothemes-sensei-category-courses.php, /widgets/widget-woothemes-sensei-course-categories.php, /widgets/widget-woothemes-sensei-course-component.php, /widgets/widget-woothemes-sensei-lesson-component.php - security improvements 2013.04.04 - version 1.2.0 * /assets/css/settings.css - styling changes for Analysis * /assets/js/lesson-metadata.js - fix for media upload button not firing * /classes/class-woothemes-sensei.php - refactor for loading of classes, added subscriptions hooks, added logic for woocommerce order cancellation * /classes/class-woothemes-sensei-analysis.php - refactor to use List Tables class, output functions for new Analysis areas, added export capability for Analysis tables * /classes/class-woothemes-sensei-analysis-course.php - new class to handle Analysis Courses * /classes/class-woothemes-sensei-analysis-lesson.php - new class to handle Analysis Lessons * /classes/class-woothemes-sensei-analysis-overview.php - new class to handle Analysis Overview * /classes/class-woothemes-sensei-analysis-user-profile.php - new class to handle Analysis User Overview * /classes/class-woothemes-sensei-course.php - add filter for course placeholder image, handle product_variation post type * /classes/class-woothemes-sensei-frontend.php - new hooks for frontend use, filters for custom nav menu items * /classes/class-woothemes-sensei-lesson.php - add filter for lesson placeholder image * /classes/class-woothemes-sensei-list-table.php - new list table class to handle data tables * /classes/class-woothemes-sensei-posttypes.php - refactor for loading of classes * /classes/class-woothemes-sensei-utils.php - refactor for removing of comment_clause filters for checking sensei activity * /inc/woothemes-sensei-template.php - removes old functions, recent comments widget fix * /templates/archive-course.php - fixes shortcode issues on paginated pages * /templates/content-no-permissions.php - uses new frontend hooks * /templates/content-single-course.php - uses new frontend hooks * /templates/content-single-lesson.php - uses new frontend hooks * /templates/content-loop-course.php - uses new frontend hooks * /templates/content-loop-lesson.php - uses new frontend hooks * /templates/content-taxonomy-course-category.php - uses new frontend hooks * /templates/woocommerce/add-to-cart.php - handle product_variation post type * /widgets/widget-woothemes-sensei-category-courses.php - uses new frontend hooks * /widgets/widget-woothemes-sensei-course-component.php - uses new frontend hooks * /widgets/widget-woothemes-sensei-lesson-component.php - uses new frontend hooks 2013.03.11 - version 1.1.2 * classes/class-woothemes-sensei-utils.php - fix to check if product was purchased * classes/class-woothemes-sensei.php - fix for checking product id 2013.03.10 - version 1.1.1 * classes/class-woothemes-sensei.php - modify function call to use global object, added new product object function * inc/woothemes-sensei-template.php - modify function call to use global object, removed old function * templates/woocommerce/add-to-cart.php - modify function call to use global object 2013.03.04 - version 1.1.0 * assets/chosen/* - added chosen library for improved dropdown usability * assets/css/frontend.css - frontend course category meta styling * assets/css/global.css - admin chosen drop down styling, admin add question button styling * assets/js/lesson-metadata.js - js to set select inputs to use chosen library for Courses, Lessons, and Settings admin area, allow HTML in question title and answers * classes/class-woothemes-sensei-admin.php - register chosen styles * classes/class-woothemes-sensei-course.php - added Course Category column to the write panel and quick edit, added permissions for WooCommerce adding of products, modified course query for paid and free products to check the actual prices of the products * classes/class-woothemes-sensei-frontend.php - logic for additional lesson pagination, additional hooks for frontend output * classes/class-woothemes-sensei-lesson.php - added Course Category to Ajax Course add, register chosen js, added permissions for adding of Courses, modified quiz_questions query to take additional params for ordering * classes/class-woothemes-sensei-posttypes.php - register new Course Category taxonomy for Courses post type, add menu item for Course Category write panel, added meta caps for future post types permissions * classes/class-woothemes-sensei-settings.php - added option to randomize the quiz questions * classes/class-woothemes-sensei-updates.php - new Class for running Sensei upgrade functions * classes/class-woothemes-sensei.php - register new widgets, refactor widget register logic, logic for Course Category taxonomy archive templater loader, added upgrade function actions, added WC functions for virtual products * inc/woothemes-sensei-template.php - added function to get the next and previous lessons, added Course Category archive header logic to template function * templates/content-no-permissions.php - pagination modification * templates/content-single-course.php - pagination modification, course access permissions fix, added frontend hooks for output * templates/content-single-lesson.php - pagination modification, added frontend hooks for output * templates/content-single-quiz.php - pagination modification, added frontend hooks for output * templates/loop-course.php - added Course Category meta info * templates/taxonomy-course-category.php - template file for new Course Category taxonomy terms * templates/single-lesson/lesson-meta.php - conditional for message output * templates/single-quiz/quiz-questions.php - logic for randomizing quiz questions * templates/user/my-courses.php - added Course Category meta info * templates/wrappers/pagination-lesson.php - added file for lesson pagination * templates/wrappers/pagination-posts.php - added file for default pagination * templates/wrappers/pagination-quiz.php - added file for quiz lesson pagination * widgets/widget-woothemes-sensei-category-courses.php - added file to display Courses from a specific Category * widgets/widget-woothemes-sensei-course-categories.php - added file to display a list of Course Categories 2013.02.25 - version 1.0.11 * /assets/css/frontend.css - Adjusted 'Complete Lesson' button margin on the Lessons page. * /templates/single-lesson/lesson-meta.php - fixed missing class on Take the Lesson Quiz link. * /templates/single-quiz/quiz-questions.php - fixed logic bug for showing the current status of the completed quiz. 2013.02.14 - version 1.0.10 * /assets/css/frontend.css - Fixed buttons and shortcodes styles that were conflicting with theme styles. 2013.02.12 - version 1.0.9 * templates/content-single-lesson.php - Fix for access permissions setting logic * templates/single-lesson/lesson-mega.php - Fix for access permissions setting logic * templates/single-quiz/quiz-questions.php - Fix for access permissions setting logic 2013.02.11 - version 1.0.8 * assets/js/lesson-metadata.js - added htmlentities function for backend validation on raw HTML input * classes/class-woothemes-sensei-utils.php - validation for not logged in user data * classes/class-woothemes-sensei-settings.php - rewording of setting for access permissions * classes/* - stripped trailing spaces * templates/* - stripped trailing spaces 2013.02.08 - version 1.0.7 * templates/content-single-lesson.php - Fixing bug that prevented the lesson content from showing for some users 2013.02.06 - version 1.0.6 * templates/content-single-lesson.php - Ensuring lesson content does not show until pre-requisite lesson is completed 2013.01.31 - version 1.0.5 * /inc/woo-functions.php - Add WooCommerce checks. Fixes compatibility when running Sensei and WooCommerce extensions, regarding updates. * /inc/class-wc-dependencies.php - ADDED. 2013.01.30 - version 1.0.4 * classes/class-woothemes-sensei-course.php - added function to find product courses * classes/class-woothemes-sensei-utils.php - moved customer bought product function check * classes/class-woothemes-sensei.php - added WooCommerce hooks for completing a payment to add the Course to a users My Courses page * inc/woothemes-sensei-template.php - moved customer bought product function check * templates/user/my-courses.php - updated call to customer bought product function * templates/woocommerce/add-to-cart.php - updated call to customer bought product function 2013.01.29 - version 1.0.3 * classes/class-woothemes-sensei-settings-api.php - fix for conflict with Groups plugin * classes/class-woothemes-sensei-settings.php - options to switch of js and css, and options for complete lesson button, reset lesson button, and to remove No Quiz warning message * classes/class-woothemes-sensei-frontend.php - logic to switch of js and css * templates/content-single-course.php - removed woocommerce after hook to prevent related products conflict * templates/single-lesson/lesson-meta.php - added complete lesson and reset lesson buttons functions * inc/woothemes-sensei-template.php - output functions for complete lesson and reset lesson buttons 2013.01.25 - version 1.0.2 * templates/archive-course.php - fixed localization typo * templates/archive-lesson.php - fixed localization typo * classes/class-woothemes-sensei-settings.php - fixed woocommerce detection code * classes/class-woothemes-sensei-utils.php - fixed woocommerce detection code * classes/class-woothemes-sensei-posttypes.php - added filters for content type slugs 2013.01.22 - version 1.0.1 * /inc/woo-functions.php - Include the woo-functions file, for integration with the WooThemes Updater plugin. * /classes/class-woothemes-sensei.php - Add "public" scope to methods missing a scope. Remove call to old plugin updater code. * /classes/class-woothemes-plugin-updater.php - REMOVED. * /lang/woothemes-sensei-en_GB.po - Added language translation file. * /lang/woothemes-sensei-xx_XX.pot - Added language translation file template. * woothemes-sensei.php - Include the woo-functions file. 2013.01.21 - version 1.0.0 * First release. Woo!