﻿MooTyper Moodle Plugin
======================
Features
========
Everything you need to start typing instruction
in Moodle is provided in this plugin.

"When looking at grades, exclamation marks are present if
the person typed more than 60 chars in 5 seconds (which is
kind of imposible)...or if the exercise took more than 10
minutes to complete...so this is to warn a teacher about a
potential cheeter..."

Lessons - A selection of example lessons, are
included. If you choose not to use them, you can delete
them before triggering the installation, or you can
delete them after the installation is completed. Lessons
can be completed in lesson mode, practice mode or exam mode.

Keyboard Layouts - A selection of keyboard layouts
are included. You can create your own and have it included
by bumping the version number, then upgrading. Keyboard
visualization during lessons is optional. An admin can
delete unwanted keyboard layouts at any time.

After the V4.2.2 upgrade, any old MooTyper using, Whole grades,
will need to be edited and then saved. No need to make any
changes, just need to save to update the mdl_mootyper table
for the scale entry. (rating and grades were added v3.9.1)

Installation
============

* Put this code under "yourmoodlerootdir/mod/mootyper" (you may "git clone")
* Visit your Moodle site as administrator to install plugin via web interface

Contact
=======

Feel free to contact me at drachels@drachels.com

If you have problems using the plugin or would like
to see a new feature implemented, please visit

    https://github.com/drachels/moodle-mod_mootyper/issues

If you like the plugin and want to say hi publicly instead of
sending an email, leave a comment at

    https://moodle.org/plugins/mod_mootyper
===============
=== Deferred to a later version. ===
20200521 MooTyper_435 - Need to be able to delete un-need lesson files from lesson folder.
    20240212 See ticket re:may be in v4.2.4 already! Need to VERIFY.
20200521 MooTyper_471 - Need to add missing items to activity edit page - mod_form.php.
20200708 MooTyper_572 - Need behat tests. WAITING
20230928 MooTyper_1082 - Need to implement automatic attempts removal for old data. WAITING
20231007 MooTyper_1127 - Need to prevent exercise delete unless it is the last one
    in the lesson.
20231014 MooTyper_1100 - Need to revisit cron_task.php as it is not really needed.
20231019 MooTyper_1102 - See about changing Suspicion to be based on WPM and character
    count of the exercise.
20231106 MooTyper_1112 - English to Hebrew lessons. See ticket. WAITING
20240111 MooTyper_1168 - Deleting a MooTyper instance seems to leasve some items undeleted.
20240115 MooTyper_1170 - Might need a previous_completions.php file. - WAITING


20240129 MooTyper_1183 - Exercise Completion may need rewrite to account for bad exercise
    grade in Lesson mode.

20240201 MooTyper_1185 - Feature request - Automatically save results at end of an exercise.

20240326 MooTyper_1227 - Would be nice to have pictures for which finger to use. In progress
    in the MooTyper Keyboard development course with new English(USV5.2)masterlayout version.
20240524 MooTyper_1248 - Need new KB layout installation code when installing/upgrading MooTyper.



Moodle Versions
===============
=== 4.3.0 === (Build: 2024102000)
20240227 MooTyper_1215bt - Duplicate or Restore activity always winds up in Exam mode. Found
    code error with comparison in restore_mootyper_stepslib.php file. See ticket for details. 
20240516 MooTyper_1240bt - Need Español Lantin America V5 and V6 keyboard layouts. Created and
    verfied the code as needed in the four files.
20240517 MooTyper_1242bt - Need new KB layout, EnglishInternationalWKeypad(INTLV6). Made changes
    as needed to create the working layout.
20240706 MooTyper_1259bt - Need to change all occurences of, // @codingStandardsIgnoreLine, over
    to, // phpcs:ignore. Changed
20240902 MooTyper_1312bt - MooTyper - High delay in large courses #125. Added missing $record->userid
    and now seems to work correctly.
20240902 MooTyper_1313bt - MooTyper - number_format(): Passing null to parameter #1 ($num) of
    type float is deprecated. Found suggestion to switch from using, number_format();, over
    to using, sprintf();, instead. See ticker for details of actual code change.
20240918 MooTyper_1320bt - Need a Maori Keyboard Layout. Created the two files based off the one's
    for English(USV5) EnglishWKeypad(USV6).

    
=== 4.2.9 === (Build: 2024061300)
20240129 MooTyper_1182v - Lesson Completion needs rewrite to account for when exercises are
    set to less than max. I made a change in the "if" at about line 136, in the code of the
    custom_completion.php file.
20240331 MooTyper_1228v - Need to make an English International Keyboard Layout. Created two
    needed files based English(UKV5) then modified as needed.
20240410 MooTyper_1234v - Sort arrows on gview.php and owngrades.php should be part of the sort link.
    Changed code in gview.php and owngrades.php to include the arrows as part of the sort link.
    See the ticket for further details.    
20240424 MooTyper_1236v - The lsnimport.php needs to ignore Eclipse IDE period folders. Added an
    "if" that checks to skip any file name that starts with a period.
20240517 MooTyper_1241v - EnglishWKeypad(USV6).php indents are mostly incorrect. Changed indents
    as needed to align code in the file. Changed version to 6.1 in this file and the .js file.
20240611 MooTyper_1252v - New codechecker shows language file needs to be sorted. Completed changes
    as directed by codechecker. Found a duplicate string name and renamed both: deletekb and
    deletedblo in the layouts.php file.

=== 4.2.8 === (Build: 2024032100)
20231014 MooTyper_1100v - Need to revisit cron_task.php as it is not really needed. Commented
    out as not currently needed.
20240110 MooTyper_1164v - Completion does not work for, Require lesson completion,
    by itself. See ticket for current progress. Possibly still needs work.
20240215 MooTyper_1207v - Lesson completion not staying checked. Changed the setting from just
    the checkbox, to require an input of 1. Added a help button.
20240215 MooTyper_1208v - Upon later change to deactivate, completion item must be set to 0.
    Discovered I was using hard coded words, instead of the needed string with the new
    $suffix added. Added help buttons for each completion.
20240223 MooTyper_1212v - MooTyper - Duplicate fails when using PostgreSQL data base in
    MooTyper v4.2.7 and lower. Changed the three affected SQL's in the
    backup_mootyper_stepslib.php file, so that JOIN's use ON.
20240223 MooTyper_1214v - MooTyper v4.2.8 fails when used with PostgreSQL Data Base. See
    the code for details. Added GROUP BY as needed, where needed. Modified other code in
    custom_completion.php as needed to get the correct completion results.
20240227 MooTyper_1216v - Layout - Spanish(V5) needs to remove a non-breaking space from
    the 5 key. Removed one non-breaking space.
20240303 MooTyper_1219v - Lesson Completion - Need to prevent values other than 0 or 1. 
    Modified the file, mod?form.php for the, $completionlessongroup, so the the group item
    is no longer $mform->createElement('checkbox', but is now, $mform->createElement
    ('selectyesno'. The yes-no selection is automatically translated as 1 or 0.



=== 4.2.7 === (Build: 2024013100)
20230929 MooTyper_1083v - In lib.php, function mootyper_get_completion_state($course, $cm,
    $userid, $type), needs to be removed. See ticket. This function has currently been
    removed.
20231212 MooTyper_1131v - Deleting an exercise leaves orphaned grades if a user has already
    completed the exercise. Current code warns the teacher that an orphaned grade needs to
    be deleted. See also, MooTyper_1165.
20240110 MooTyper_1165v - There is some hard coded text, Need to delete., in gview.php
    at about line 287. Converted the hard coded text to a string and added code to use
    it in the gview.php page at about line 286.
20240110 MooTyper_1166v - When a teacher deletes an exercise result on gview.php, it does
    not reset the completion status of the student. When I fixed the completionexercise
    SQL for PostgreSQL, MariaDB, and MySQL, this finally started working correctly.
20240119 MooTyper_1176v - Sql in var $finalexercisecompletesql fails because it's missing,
    Group By #121. Modified the SQL to use two versions based on the DB type. Reworked the
    SQL to one simpler and also works for PostgreSQL, MariaDB and MySQL.
20240120 MooTyper_1177v - Heading on the owngrades page is not formatting correctly. Added
    a sub-table. See the ticket for details.
20240120 MooTyper_1178v - Cannot sort data based on the exercise name. Added the code
    that was missing. Sort by exercise name now works like the other columns on the page.
20240121 MooTyper_1179v - The custom_completion.php file needs to use simplified $params.
    Made a LOT of changes. See the ticket for details. 
20240128 MooTyper_1181v - Warning: Undefined property: stdClass::$completionexercise, plus
    the other four. Once I got the PostgreSQL straightened out, I was able to remove the
    extra completion code that I had added into the lib.php files. These five undefineds
    were part of my addition that I have now removed and things are working as expected.


=== 4.2.6 === 2023121000
20231204 MooTyper_1125v - Need to see about moving $style1 and $style, lines 155/156
    of exercises.php to styles.css file. Added a, .style1 and .style2 into the styles.css
    file. In the exercises.php file, for testing I commented out the line 155 and 156. I
    then modified lines 158, 159, 160, and 199 to use class="style1" and then in two
    places in line 195 I modified it to use class="style2".
20231210 MooTyper_1129v - Error in new instances with "Activity completion" configured #118.
    Merged pull request that fixes this.
20231210 MooTyper_1130v - Module only update completion progress when the instance is
    updated. #120. Restored missing function. Testing shows completion now works.
=== 4.2.5 === 20231206
20231204 MooTyper_1124v - Deleting an exercise from the exercises.php page seems to
    possibly be broken/not working. In line 53(57) of the erem.php, I had left a right
    parenthesis when converting from array() to [].
20231204 MooTyper_1126v - Deleting a lesson from exercises.php page seems to be broken.
    In line 53(57) of the erem.php, I had left a right parenthesis when converting from
    array() to [].

=== 4.2.4 === 2023110200
20201006 MooTyper_629v - Request for Home Row Keys color settings. Have applied a
    one-off method to new French(BelgianFRBV5) layout. Modified the .js file to produce
    the desired colors for the keys.
20230215 MooTyper_1011v - Need to add an on/off toggle or check box for each bar
    on the grade charts. Added need code to ownview.php. Did a copy and paste for gview.php.
    ***Need to fix dropdowns to NOT have one blank line as an option.
20230510 MooTyper_1040v - Deprecated: Implicit conversion from float 1674064081.5 to int
    loses precision owngrades.php. Added round() to owngrades.php line 264 and to gview.php
    line 365.
20230513 MooTyper_645v - Need Completion tracking based on Precision, WPM, exercises,
    lesson, and grade. Got it working, but may need further development. Added
    required new completion fields to mdl_mootyper table.
20230515 MooTyper_1044v - In Lesson mode, when anyone removes a grade, the Moodle Gradebook
    is not updated. In attrem.php, I added a new call to mootyper_update_grades() in lib.php.
20230613 MooTyper_1054v - MooTyper Backup and Restore seems to be broken. Backup/restore only
    works on same server and give errors on another server due to not updating all ID's.
    Rewrote both the backup and restore code to correctly create and link to new ID's.
20230614 MooTyper_1055v - Missing child tree for exercises in the backup_mootyper_stepslib.php
    file. As part of my work on MooTyper_1054, I have added the missing code and tested it.
    It seems to be working correctly now.
20230707 MooTyper_1057v - MooTyper - Deleting a MooTyper activity does not delete related attempts.
    Realized that the attemptid in mootyper_grades is NOT being updated during the restore! Once
    this was changed in restore_mootyper_stepslib.php file, both deleting an individual grade, as
    well as removing a MooTyper activity, removes attempts from the mootyper_attempts table.
20230707 MooTyper_1058v - MooTyper - Reset MooTyper Instance does not delete checks. Added code
    to delete checks based on attemptid when executing function reset_mootyper_instance($mootyperid).
20230708 MooTyper_1059v - MooTyper - Backup does not include teacher created lessons and exercises.
    The code to fix this was developed and included as part of MooTyper_1054.
20230729 MooTyper_1063v - The mdl_mootyper_grades, mistakedetails, field size of 255 is too small.
    Upgrade DB field size to 1333. Could not go bigger with varchar. 20231005 Had to make another
    change from varchar 1333 to text.
20230810 MooTyper_1065v - In line 344 of provider.php, mootyper should be mootyperid. Made the code
    merge so it is now mootyperid in line 344 of the provider.php file.
20230920 MooTyper_1074v - Grade pages need the Completed column moved two places to the right.
    20230920 Completed the moves in owngrades.php and being tested. 20230920 Made the same
    code moves in gview.php. 20230920 Made the needed changes in the csvexport.php file.
20230926 MooTyper_1078v - Need to implement suffix on mod_form.php for Moodle 4.3. Made all the
    needed changes in public function add_completion_rules() {. Made all the needed code changes
    in public function completion_rule_enabled($data) {.
20230927 MooTyper_1079v - No one in a group has any attempts causes multiple errors in gview.php.
    Added an additional AND clause check to make sure at least one memeber of the group being
    viewed has made an attempt at an exercise. 
20230927 MooTyper_1080v - Latest codechecker requires convert from long array(), to short array [].
    Changed all arrays to short array form, []. There was a "boat load" so see ticket for details.
20230927 MooTyper_1081v - Latest codechecker says "Import statements must not begin with a leading
    backslash." Removed all leading backslashes. There were many of them so see ticket for details.
20231019 MooTyper_1103v - In the new Italian v5.1 keyboard layout, the shift and enter keys, color
    is wrong. Made needed code changes in the .js file.
20231029 MooTyper_1106v - German(v5) layouts do not properly handle ê é è characters. Made needed
    changes to both the German(V5) and German(V5)-icons layouts.
20231029 MooTyper_1107v - Syntax error in line 174 of mootyper/classes/local/lessons.php file. Fixed
    by adding code to include the missing closing quotation mark.
20231029 MooTyper_1108v - Need Arabic(ARV5)dual layout. Created the files some time ago and now
    have tested the layout.
20231030 MooTyper_1109v - Remove attempt does not work when using View all grades and Visible group
    is not All participants. Changed code to ensure $n is always set to $mootyper->id. See ticket
    for details. 
20231101 MooTyper_1111v - Completion rules are missing from the Default activity completion page.
    Added missing function in lib.php file and missing language description strings.

=== 4.2.3 === 20230420
20230105 MooTyper_982v - Need to enable new, Grade, bar to the chart. Added a new
    series 4 for grades. Temporarily commented out series 1 for hits per minute,
    resulting in a x-axis that goes from 0 to 100.
20230123 MooTyper_996v - Need to add AM / PM to date format for gview.php and owngrades.php. 
    Changed the settings.php page code, down around line 143 from this: 'M d, Y G:i' to this:
    'M d, Y G:i A'. Once I went to the MooTyper settings page, added the A there, it started
    showing AM and PM with the times.
20230206 MooTyper_1009v - Need to remove V4 layouts that also have a V5 version. Removed
    copies of keyboard layouts that have both a V4 and V5 layout. 
20230207 MooTyper_1010v - A user has requested a German(V5) KB Layout. I duplicated the
    German(V5)-icons files as just, German(V5). I then modified the php file to no longer
    use the icons, but instead, to use the words, like I did in the German(V4) php file.
20230224 MooTyper_472v - Need Korean keyboard layout. Dropping this ticket because of the
    way Korean is displayed in syllables. Not compatible with view.php and typer.js files.
20230224 MooTyper_699v - Create Hindi(HIV5) KB Layout. Dropping this ticket because the
    Hindi alphabet is not in the Courier New font file so it is not compatible with
    view.php and typer.js files.
20230224 MooTyper_1013v - Need to see about selecting KB Layout based on name instead of ID.
    New code provided as a merged pulled request for item #110.
20230406 MooTyper_1032v - Invalid event functions defined in \mod_mootyper\event
    \course_exercises_viewed. Deleted deprecated legacy log code as need in all the new,
    MooTyper v4.2.3, files.



=== 4.2.2 === posted 20230118
20221008 MooTyper_930v - In exam mode, WPM by itself, does not generate a grade. See the
    ticket for specific details. Added one string, modified a $sql, added automatic
    feedback, and added multiple if checks to create the correct raw grade needed
    by the Moodle rating and grading systems.
20230103 MooTyper_980v - In practice and lesson modes, WPM by itself, does not generate
    the correct rating for the grade book. Deferred to MooTyper_930 as the fix for it
    will also fix this ticket.
20230105 MooTyper_981v - Need new grade/rating coloumn for grade table on grade pages.
    Made needed changes in gview.php, lib.php, owngrades.php, and results.php. I now
    am getting a grade column when viewing the owngrades.php page and the gview.php
    page. Might want to see about adding the grade data to the charts.
20230106 MooTyper_983v - Need new grade data added to CSV download file.  Made code
    changes to gview.php and csvexport.php. Data is now in the download.
20230107 MooTyper_984v - Sort controls on gview.php and owngrades.php pages are not
    working correctly. Fixed them, both pages, and they now appear to be working
    correctly.
20230108 MooTyper_985v - Need date/time added to CSVexport file name. Added code
    that pastes the current date and time into the file name, just before the .csv
    at the end of the file name.
20230108 MooTyper_986v - Postgresql generates errors in proposed MooTyper v4.2.2. 
    The Moodle ratings table expects an integer, so I changed the code to give 0 decimals.
    Also, with PostgreSQL the $exercises table order is scrambled. Fixed by sorting
    the table before use. See the ticket for exact details.
20230114 MooTyper_991v - Got debug message regarding duplicate values in column 'firstname'.
    The function in lib.php had an SQL that was getting unique users by firstname. The
    fix was to reorder the SQL and get the users id first. 
20230116 MooTyper_992v - In gcnext.php, line 60 not giving fail when % fails and WPM passes.
    Fixed by modifying line 60 to require %pass and WPMpass for green background, no
    matter what the mode is. Otherwise the background should be red. See ticket for
    details.
20230116 MooTyper_993v - Need to see about adding Count, Max, Min, or Sum to the grades
    reports based on rating setting. Have made needed code changes to result.php, gview.php,
    and owngrades.php. The rating info only shows up when ratings are being used.

=== 4.2.1 === released 20221207
20200521 MooTyper_458v - Site admin should be able to see who created and can edit an
    exercise or a lesson. Added the needed information code to eedit.php.
20211121 MooTyper_757v - Issue#99 at github Error in phpUnit for core_calender.
    20220413 Got a pull request that fixes this. More info at:
    https://github.com/drachels/moodle-mod_mootyper/issues/99. I've applied
    the pull request, but have not had time to verify the fix.
20220413 MooTyper_843v - When using PostgreSQL, View all grades, is broken for, All
    participants. In gview.php, about line 153, changed $groups = ''; to $groups = 0;
20220505 MooTyper_836v - Completion file custom_completion.php needs work especially for
    completexercise. 20220813 Added four missing functions for completionlesson to the
    mod_form.php file so that now the extra selection check box shows when setting the
    completion requirements.
20220729 MooTyper_901v - Need two new strings in eedit.php about line 287 and 289
    regarding changing lesson info. Added the two new strings, "This lesson was
    included with the MooTyper plugin." and "Created in course:."
20220816 MooTyper_908v - Grade to pass in Whole MooTyper grading should automatically
    use the defaultprecision. Made changes in the mod_form.php file.
20220922 MooTyper_923v - I think the, Export/edit exercises, link needs to be moved up
    in the nav link hierarchy. In the lib.php file, down around line 1196, I moved the
    code for the, Export/edit exercises, link so that it gets added to the navigation
    hierarchy sooner. Still visible only if the teacher can edit the lesson being used.
20221023 MooTyper_940v - Need to create new icons, monologo.svg and monologo.png.
    Created both icons and they are being used in this Moodle 4.x.x site.
20221127 MooTyper_967v - #108 From the MooTyper settings page, other Moodtype nav links
    are broken. The fix is to specify the the complete path. e.g. $link = new
    moodle_url('/mod/mootyper/eins.php', array('id' => $cm->id)); See ticket for
    specific changes that were made.

=== 4.2.0 === released 20220403
20220128 MooTyper_814 - Need string for authorid on the exercises.php page button. Added
    the string and code needed to display it about line 148 of file exercises.php. 
20220128 MooTyper_699 - Create Hindi(HIV5) KB Layout. Created the initial versions of the
    two files and started modifications.
20220220 MooTyper_819 - Missing basic completion information on view page issue #102. The
    same person who opened this issue, provided a solution via pull request that added the
    needed code in the renderer.php file down around line 66.
20220219 MooTyper_821 - Issue #104 - Data Privacy is broken. Made the needed changes then
    also got a pull request for this. Export requests do work.
20220322 MooTyper_799 - Need new Moodle 4.0 icon. Discovered I can just make two copies
    of the switch with a branch check for greater than m3.11. The copy of the switch for
    Moodle 4.0 and above should contain the new case FEATURE_MOD_PURPOSE: return
    MOD_PURPOSE_ASSESSMENT; 

=== 4.1.1 === released 20220128
20220122 MooTyper_613 - Would be nice to have a link to index.php on grade pages.
    Added links to index.php on the view.php, gview.php, and owngrades.php pages.
    Added links for when lesson is complete and when exam is complete.
20220125 MooTyper_547 - Duplicating a MooTyper does not set the cursor color correctly.
    Originally thought I had this fixed in MooTyper v3.9.0. However, I finally have
    tracked the problem to line 77, in file, backup_mootyper_stepslib.php where the
    variable, cursocolor was mistyped as coursorcolor.
20220125 MooTyper_718 - Exercises.php file need fix dev stuff in the big top button.
    Modified the code in exercises.php so it now shows, Author ID: xx, Lesson visible
    to: xxx, and Can edit: xxx. After testing, will need to turn Author ID: into
    a language string.
20220126 MooTyper_442 - Set return url in layouts.php, to return to same MooTyper.
    Change button url and it appears to be working correctly. 
20220126 MooTyper_415 - Need a layout add/remove page. Added and tested code. Switched
    to using buttons with popup confirm window.

=== 4.1.0 === released 2022011700
20220117 MooTyper_808 - Avoid storing absolute paths in database (mootyper_layouts).
    Completed pull request and now testing MooTyper v4.1.0. Duplicate of
    MooTyper_635, which I closed also.

=== 4.0.1 === released 2021072200
20210416 MooTyper_701 - Exception - Return value of mootyper_grade_item_update() must
    be an instance of void, none returned. Made two changes in the moodle3dev lib.php
    file to remove the :void in the function line of the code.
20210507 MooTyper_714 - Turkmen(TKV5) pull request. Did the pull request, then fixed
    missing shift indicators for all of row 1 and for a few other letters in other
    rows. № was missing from blue row and there were 3 non-existent keys included.
    Also converted all \r\n over to \n.
20210507 MooTyper_715 - Owngrades.php stats table missing right vertical border.
    Tracked it down to an extra table cell definition at about line 205.
20210511 MooTyper_465 - Convert owngrades.php and gview.php grade tables to BS4 table.
    I think I have these two files fixed. Will still need to do others, but will do
    another ticket for them.
20210626 MooTyper_755 - recent activity causes a debug meesage. Added a branch
   check so that M3.10 and below use the old, user_picture and M3.11 and above
   will use the new, \core_user\fields, code.
20210722 MooTyper_747 - Convert from lib.php cron function to /classes/task/cron_task.php.
    Added one new string and two needed files. Sheduled tasks reports success.
20210722 MooTyper - Need to remove from view.php, a line of code. See ticket for details.
    Removed the line of code and replaced with $PAGE-&gt;requires-&gt;jquery().


=== 4.0.0 === release 2021041600
20210325 MooTyper_619/259 Need to add capability to add names to exercise name numbers.
    Done and testing.
20210326 MooTyper_441/180 - Use current MooTyper for layouts.php background color. Implemented.
20210327 MooTyper_459/198 - It would be nice if a Lesson name could be edited. Got this
    and 619 working today. Still need to add exercise names to lesson file exports
    and detect them for imports.
20210327 MooTyper_692/296 - Need exercise names added in lsnexport and lsnimport. At 1550
    got the lsnexport.php file working. Exercise name is added right after the break
    indicator for the exercise texttotype, followed by another break indicator,
    unless it is the last exercise name.
20210331 MooTyper_675/280 - Create Icelandic KB Layout. Created files and tested.
20210408 MooTyper_694/298 - Invalid get_string() identifier: 'mootyper:rate' #95. Added string.

=== 3.9.6 === release 2021032000
20201224 MooTyper_660 Aesop's Fables needs to be split into multiple files. Done.
20201225 MooTyper_662 View.php has lots of space period space errors. Fixed as needed.
20201230 MooTyper_663 owngrades.php grade table right border does not render in some
    browsers was due to incorrect td count in some rows. Checked and now renders
    correctly in Firefox, Chrome, Edge, Opera, and Safari.
20210304 MooTyper_653 Need to format all KB layout files. Fixed lots of minor
    format errors and tags.
20200317 MooTyper_674 Need Estonia(EEV5) KB layout. Created files and tested.
20210318 MooTyper_676 Need Danish(DNV5) KB layout. Created files and tested.
20210318 MooTyper_677 Need Hungarian(HUV5) KB layout. Created files and tested.
20210318 MooTyper_679 Need Italian(ITV5) KB layout. Created files and tested.
20210318 MooTyper_680 Need Norwegian(NOV5) KB layout. Created files and tested.
20210318 MooTyper_681 Need Russian(RUV5) KB layout. Created files and tested.
20210319 MooTyper_682 Need Serbian(SR_CRV5) KB layout. Created files and tested.
20210319 MooTyper_683 Need Swedish(SEV5) KB layout. Created files and tested.
20210319 MooTyper_686 Need Turkish(TRV5) KB layout. Created files and tested.
20210319 MooTyper_687 Need Ukrainian(UKV5) keyboard layout. Created files and tested.
20210320 MooTyper_646 Need French(V5) and FrenchWKeypad(V6) KB layouts. Created
    and tested. The carat,^, is on two keys, row 1 on the nine key as an Alt,
    and row 2 on the key to the right of P. THe highlight defaults to the row 2
    key without Alt being highlighted.

=== 3.9.5 === released 2020111000
20201109 MooTyper_643 Bad grade can be wiped out by a page reload, fixed. Atchk.php
    was missing the, use \mod_mootyper\local\results;, and results::suspicion.

=== 3.9.4 === released 2020110100
20201027 Fixed keytop round borders on Spanish, Portugues(P), and German V6 layouts.
20201027 Added GermanWKeypad(V6)-icons KB layout.

=== 3.9.3 === released 2020090502
20201016 Added SpanishWKeypad(V6) KB layout.
20201018 Added PortuguesWKeypad(PortugueseV6) KB layout.

=== 3.9.2 === released 2020073100
20200728 Added four new fields to table mootyper. assessed, asstimestart,
    assessedtimefinished, and scale.
20200730 MooTyper_567, Investigate adding median, mode and range to the bottom
    of grade tables. Code in place and pushed to github.
20200808 MooTyper_562, Need to integrate MooTyper grades into Moodle
    Grades/Rating system, is FINALLY working. Still need to fix delete part.

=== 3.9.1+ === released 20200810
20200715 MooTyper_577, File upgrade.php missing final upgrade_mod_savepoint. Added
    missing line of code and pushed to github.

=== 3.9.1 === released 2020070800
20200708 MooTyper_570, mod_setup.php can be directly accessed by students. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_569, lsnimport.php can be directly accessed by students. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_568, gview.php can be directly accessed by students. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_565, eins.php can be directly accessed by students. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_566, eedit.php can be directly accessed by students. Duplicate
    of MT_416. Fixed in current version. 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_416, Students can type in address for eedit.php. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_559, exercises.php can be directly accessed by students. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_563, REMOVED FUNCTION - change variable name in lib.php function
    get_grade_averages($grads). 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_418, Change $id to $cmid like other plugins. Needed for enhanced
    navigation. 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_432, eins.php about line 207, ... is hard coded. Removed the
    ellipse. 20200708 Pushed to MT V3.9.1 code on github.
20200630 MooTyper_560, mod_form.php page, under MooTyper Administration, the link
    is broken. Have a fix inplace and being tested. 20200708 Pushed to MT V3.9.1
    code on github.
20200708 MooTyper_558, mod_setup.php has duplicate lines of code for timelimit,
    requiredgoal, and requiredwpm. Removed duplicate lines of code. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_546, delete a grade doesn't work correctly. Fixed. 20200708
    Pushed to MT V3.9.1 code on github.
20200708 MooTyper_474, Vietnamese keyboard unable to type some characters.
    20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_462, Need Uyghur keyboard layout - RTL. 20200708 Pushed
    to MT V3.9.1 code on github. Created course on m3x demo site.
20200708 MooTyper_425, Cancel on eins.php should go to view.php instead of
    exercises.php. 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_422, MT Slovenian layout needs multiple keys adjusted.
    20200708 Pushed to MT V3.9.1 code on github. Changed spacing layout
    on multiple keytops.
20200708 MooTyper_452, Change align from center to left for audio and
    buttons 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_440, Arabic(V4)dual - space bar showing shift is needed.
   Deleted extra layouts. 20200708 Pushed to MT V3.9.1 code on github.
20200708 MooTyper_434, CSS .normal does not work correctly in current version.
    20200708 Pushed to MT V3.9.1 code on github. Made various tweaks to the css.

=== 3.9.0 === released 2020062003
20200618 I have thrown away six months worth of development work, and as of today
    have started over. I am systematically going through all the code changes
    I developed, and am applying them here, while doing lots of testing to make
    sure that I am not breaking anything.
20200620 MooTyper_411, View all grades does not support groups, changed status
    to, Being tested.
20200620 MooTyper_542, in gview change $htmlout's to echo's. Makes the code
    more consistent with the rest of MooTyper, and easier to make changes.
20200624 MooTyper_411, View all grades does not support groups. Made change
    to case, in lib.php. In gview.php (View all grades) added code to
    support Separate and Visible groups, groupmode. The change also fixed the
    missing, Exercise, dropdown, so that, View by exercise, is now working again.
20200624 MooTyper_463, lsnexport.php incorrect inline SQL needs to be fixed.
    Changed code to use $params.
20200624 MooTyper_547, Duplicating a MooTyper does not set the cursor color correctly.
    There was an error in mod_setup.php, line 219, which was using the keyboard
    background color, instead of using the cursor color.
20200625 MooTyper_548, if (lessons::is_editable_by_me($USER->id, $id, $lessonpo))
    giving wrong results. Second if, second $id should have been $crs.
20200625 MooTyper_549, classes/local/lessons.php function is_user_enrolled incorrect
    inline SQL needs to be fixed. Changed to use $params.
20200625 MooTyper_550, Keyboard layout EnglishWKeypad(USV6) incorrectly renders
    in Opera. Fixed by adding one pixel to the width of the background in css.
20200625 MooTyper_551, Change exercises.php table background color to same as
    current MooTyper color. Eliminates DB get for MooTyper configuration.
20200625 MooTyper_552, Change eedit.php table background color to same as
    current MooTyper color. Adds DB get for current MooTyper.
20200625 MooTyper_553, Change eins.php table background color to same as
    current MooTyper color. Adds DB get for current MooTyper.
20200627 MooTyper_558, mod_setup.php has duplicate lines of code for timelimit,
    requiredgoal, and requiredwpm. Removed 30 (10x3) duplicate lines and replaced
    them with a copy of just the 10 needed lines.
20200628 MooTyper_557, view.php Edit/edit exercises link should only be visible
    if I can edit the current lesson. Changed the if around line 353 to also
    check the lesson visibility. Hide Settings button if not editable by me.
20200629 Released MooTyper v3.9.0. Closed 36 tickets with this release.

=== 3.8.3 === released 2019123002
12/27/19 Issue #81 at github - Missing space between user name and exercise name in
the graph when viewing all grades. Fixed and pushed to github master branch.
12/28/19 TRK1_319 Mistake details error reporting added just below the status bar.
12/29/19 Bumped version to 3.8.3 and pushed to github.
12/29/19 TRK1_332 Added new field, mistakedetails to table mdl_mootyper_grades.
12/29/19 TRK1_319 Added code to place countChars(mistakestring) into new field.
12/30/19 TRK1_319 Added code in gview.php and owngrades.php, to place data from
the, mdl_mootyper_grades->mistakedetails, field, into the grades table in the,
Mistakes, column for, View all grades, and, View my grades.
12/31/19 TRK1_333 Converted hard coded, Mistake details, to a language string,
and wrapped it in a div so I can make it align to the left.
12/31/19 Experimenting with .tb1 settings in styles.css to try and keep the hidden
textarea from creating a blank line below the, Mistake details. Might need to make
a single row, two column table, for them.
01/02/20 TRK1_320 layout_imported, line 222 in lsnimport.php fixed.
01/03/20 Minor fix and publish, Armenian(V5) layout.
01/03/20 TRK1_264 Changed Export to .csv link to a BS4 style primary button
on the View all grades page.
01/03/20 TRK1_335 Added, Mistake details, data to the, Mistakes, column
to the, Export to .csv, file output data.
01/04/20 Spell checked lessons and switched some to paragraph format.
01/04/20 Some code cleanup based on last version check on Moodle.

=== 3.8.2 === released 2019122501
12/10/19 TRK1_314 Added lesson ID to the link, Add new exercise to this lesson, ID: XX.
Also moved the link code so now inside the 'if' that checks and hides the link if the
lesson and exercises are not editable by the person viewing the page. This move also
fixed the download link in the table, and shows, 'Not editable by me." message.
12/11/19 TRK1_315 Fixed bug when checking iseditable by me. If mdl_mootyper_lessons->editable
was set to a 1, teachers in course, current course was NOT being compared to the
lesson->courseid, like it should.
12/11/19 TRK1_317 Changed language strings to use Lesson/lesson instead of Exercise/exercise.
12/11/19 TRK1_318 Romainian(V5) working. Able to type all in Lorem Ipsum. Ready for Beta release.
12/13/19 Bumped version to 3.8.2 and moved a copy to m3x.drachels.com site.
12/14/19 TRK1_168 Added requiredwpm setting and implemented the needed code and strings. Seems
to be working fine.
12/14/19 TRK1_181 Added settings for keytoptextc but not the code to implement it, yet.
12/14/19 TRK1_311 Added settings for timelimit, but not the code to implement it, yet.
12/15/19 TRK1_181 Added code for keytoptextc and it appears to be working correctly.
12/22/19 TRK1_325, TRK1_322, and TRK1_324 Fixed multiple bugs with mode setting. Mainly
fixed bug where exam mode would only show exercise 1, when others were selected.
12/23/19 TRK1_323 Finally realized the mistake I was making and now have this working
so that during the initial activity setup, get the site default mode. Then check to
see if the activity has something in isexam. First time there will not be. Any time
someone later clicks on Settings, there will be something in isexam, and use it.
12/24/19 TRK1_311 Exercise timelimit coded and appears to be working correctly.
12/24/19 TRK1-326 and TRK1_327 Added timelimit setting to the labels above the
grade tables in gview.php and owngrades.php
12/24/19 TRK1_168 TRK1_311 Reopened as I discovered I could not change from a site default
of any positive number down to a zero. Discovered that I could not do the same for
timelimit and for %. Fixed and testing. Added TRK1_328.
12/25/19 TRK1_329 Added timelimit to the first line of output in the csvexport file.
12/26/19 TRK1_168 Required WPM code needed to be changed as in older Moodles it
was resetting to site defaultwpm each time you went to Settings page.
12/26/19 TRK1_330 For convenience, I added a Cancel button to the settings page.

=== 3.8.1 === released 2019120800
11/24/19 Fixed PostrgreSQL compatibility error in locallib.php function get_mootyperlessons.
11/24/19 Fixed bug when going to eins.php. Undefined variable $lsnnamepo. When incoming
optional parameter 'lesson' is blank due to starting a new lesson/category name,
$lsnnamepo has to be set to -1, otherwise when starting a new exercise for the current
lesson/category, the optional parameter 'lesson' goes to the $lessonpo. The first part
was missing.
11/30/19 TRK1_284 Created exercise_completed event and pushed to github.
12/01/19 TRK1_304 Created exam_completed event and modified examdone string
then pushed to github.
12/01/19 TRK1_301 The links and Continue button on view.php above the status bar,
have been converted to small primary buttons, with the vertical bar replaced
with just one space.
12/02/19 TRK1_257 Started work on Manage MooTyper layouts capability that will let admins
delete any of the unused keyboard layouts in their system.
12/02/19 TRK1_306 Worked some on fixing warnings and errors listed on Moodle for
the MooTyper 3.8.0 release.
12/03/19 Added new donated German(V4)-icons keyboard layout from pmaneggia.
12/03/19 Temporarily added suggested new permissions for mod/mootyper:viewcategory
and mod/mootyper:editcategory. Discussing what is needed with pmaneggia. I think
just checking for site admin is the best way to go.
12/03/19 TRK1_307 Created new German(V5)-icons keyboard layout. Still needs some
final checking, but I have published it to github for feedback from pmaneggia.
12/03/19 TRK1_190 Now have lesson_completed event working.
12/06/19 Lots of code cleanup in various files.
12/07/19 More code cleanup and bumped version for release.
12/08/19 Made two small string changes and bumped version date for release.

=== 3.8.0+ === released 2019112400
11/19/19 TRK1_295 In file mod_setup down around line 448, I changed the Confirm button
to use BS4 coding to make the Confirm compatible with Safari web browsers as
well as all the others.
11/19/19 TRK1_294 Changed from a, Continue, link to a, Continue, button on the Import
lesson / KB layout page generated by lsnimport.php file.
11/19/19 TRK1_293 Changed from a plain list of lessons and layouts to a Booststrap4
tables on the Import lesson / KB layout page generated by lsnimport.php file.
Currently, the table is using hover for the table class and light or success in the
row classes. Light if the lesson or layout is already in the database and success if
they are new and were just added.

=== 3.8.0 === released 2019111700
10/28/19 Corrected comment style used in styles.css file. Also deleted all of the
[[settings]] lines of code that were preventing Moodle from applying the file.
10/28/19 Tweaked the Alt Gr when needed in all the layouts. Also eliminated an
extra blank line that was spacing the KB layout two lines below texttoenter
instead of just one.
10/29/19 Verified and tweaked as needed, all the event code in php files, that
I could. Added new event for viewed_own_grades in owngrades.php.
10/29/19 Fixed bug in, Viewed exercises, event, course_exercises_viewed.php. In
the logs, the Viewed exercises link was giving an error due to passing 'f' instead
of passing 'id' to the URL.
10/29/19 Changed event description for View all grades and Viewed exercises.
11/07/19 Added course name and activity name to the first row of the csv file
output. Made changes in both gview.php and csvexport.php and pushed to github.
11/10/19 Add details to the log entrries for when an exercise grade is deleted.
This required multiple changes to three files, attrem.php, grade_deleted.php,
and owngrades_deleted.php.
11/11/19 Worked on, attrem.php, grade_deleted.php, and owngrades_deleted.php some
more to include whose grade and for which exercise it was that was being deleted.
11/11/19 Added details to the event, exercise_edited in eedit.php and exercise_edited.php.
11/11/19 Finalized changes to viewed_all_grades event triggered in gview.php.
11/11/19 Rewrote events for lesson import, layout import, and lesson/category export.
11/12/19 Rewrote events for exercise_deleted and lesson_deleted and pushed to github.
11/12/19 Rewrote events for exercise_added and pushed to github. Changed one
language string, too.
11/12/19 Changed wording for viewed_all_grades event to include more information
and added event, export_viewallgrades_to_csv.
11/14/19 Created event, Export to .csv and pushed to github.
11/14/19 Created new .php file for layouts Danish, Dvorak, Norwegian, Swedish,
and Vietnamese trying to get rid of Moodle reported BOM character in each file.
11/14/19 Code cleanup in typer.js.
11/17/19 TRK1_291 - In file eins.php, changed the Confirm button to btn-primary and added a
Cancel button that takes you back to exercises.php, looking at the same exercise
from which you started, or first exercise in the list of them.
11/17/19 TRK1_290 - In file eedit.php, changed the Confirm button to btn-primary and added a
Cancel button that takes you back to exercises.php, looking at the same exercise
from which you started, or first exercise in the list of them.
11/17/19 TRK1_263 I have the export event working for the text link. Still needs work
for the new BS4 button.

=== 3.7.0 === released 2019102100
05/20/19 function get_keyboard_layouts_db() { in locallib.php so the list of keyboard
layouts appears in alphabetical order.
05/20/19 Removed jsTime, jsProgress, jsAcc, jsSpeed, textup, and textdown from styles.css.
05/20/19 Modified view.php to add Lesson/category name = xxxx to Mode and Exercise
x of x above the status bar.
07/13/19 Closed pull requests on github as I had implemented the changes manually.
09/11/19 Changed status bar to full width so that languages other than English
do not cause an extra new line due to long label names.
10/16/19 Fixed a bug in mod_setup.php that prevented use of setup modes other than what
was in the default settings for mode.
10/21/19 Ran codechecker and udated README.md
10/23/19 Released v3.7.0.

=== 3.6.1 === released 2019051800
04/12/19 As of 11:30 AM, I have finally gotten my Korean(V5) keyboard to start
recognizing Korean characters, without breaking other layouts.
04/13/19 TRK1_200 When looking at the Lessons page generated by exercises.ph, I have
added a link above the exercises table that will take you to the eins.php page
with the lesson name already selected so you can add a new exercise to the lesson.
Had to also add a new language string as part of this upgrade to exercise editing.
04/14/19 Added Ex- to the exercise name in the popup when students remove owngrade.
04/30/19 Started development, again, on adding Mode config setting, adding Mode and
Lesson to the activity setup page.
05/01/19 Started development of keypad layout per request from Assiniboine Community College.
Also began development of a keyboard with keypad layout. Will need to make some
drastic changes to the .js file to get the highlighting to work correctly.
05/11/19 Pushed changed styles.css, view.php, and new numberPadOnly(V1).js and php files
to github. This .js file implements color highlights.
5/12/19 Implemented highlights in English(V6).
5/15/19 Renamed English(V6) to EnglishWKeypad(V6). Fixed it's highlith errors.
5/17/19 Fixed Czech(V6) highlight error with đ and Đ.
5/17/19 Tried rc1 but deleted due to problems with EnglishWKeypad(USV6) layout.
5/17/19 Fixed code getElementByID errors for regular keys in EnglishWKeypad(USV6)
layout so you can type any letter or number.

=== 3.6.0+ === released 2019041200
04/12/19 Plus version release due to including the wrong typer.js file in the
last 3.6.0 release. It had my console.log entries in it, and one of them was
breaking the scroll function.

=== 3.6.0 === Working on BETA released 2019032800
03/01/19 Doing lots of code cleanup based on working on Roshine.
03/02/19 Did lots more code cleanup based on changes to Roshine. Also worked
on changing the look of the grades table generated by owngrades.php. Big change
is adding a background that matches/uses keybdbgc (keyboard background color)
so the table can match the view.php page and color coordinate with a course
or site theme color scheme.
03/03/19 Made the same background changes to the page generated by gview.php.
Both grade viewing page tables now also include a heading the lists the mode
and the name of the Lesson/Category.
03/03/19 HUGE code change. I eliminated the section of code that generated
the grade view for an exam, in gview.php. I now use the Lesson and Practice
part of the code to also generate results when generating a grade report
for an exam. As part of the change, I was also able to eliminate the function
used by exam mode to retrieve exam results data from the database.
03/03/19 In almost every php file, I changed to a new require format as seen
in the Moodle documentation for code style.
03/04/19 Worked on adding background frames and color to all the pages using
setting for the keyboard background.
03/08/19 Created new English(USV5) keyboard layout that only highlights one
of the shift keys for uppercase letters and symbols. Highlight the shiftkey
opposite to the side of the keyboard where the key is. e.g. A uses shiftright.
03/09/19 Created new V5 layouts for Dvorak and Spanish layouts.
03/10/19 Changed code to csvexport so the filename is now the lesson name
with all whitespace removed. First row of the file now shows the mode,
the lesson name, and the required goal.
03/10/19 Ran codechecker on everything and pushed changes to master branch
at git hub as a MATURITY_BETA version.
03/11/19 Fixed an error in the classes/event/course_module_view.php file
that was causing an error when clicking a log link that should take you
to the MooTyper that was listed in the log as being viewed.
03/12/19 Renamed event grade_removed to grade_deleted to comply with verb list.
Changed language string grade_removed to grade_deleted.
03/12/19 Added event owngrades_deleted and add language string owngrades_deleted.
03/13/19 Renamed event lesson_removed to lesson_deleted to comply with verb list.
Changed language string lesson_removed to lesson_deleted.
03/13/19 Renamed event exercise_removed to exercise_deleted to comply with verb list.
Changed language string exercise_removed to exercise_deleted.
03/13/19 Began work on Belgian(DutchV5) keyboard layout.
03/15/19 Finished, TRK1_191 - MooTyper - Keyboard layout - Belgian(DutchV5)yesterday,
but discovered one shiftright error today, that should have been shiftleft, and fixed it.
03/15/19 Fixed, TRK1_173 - MooTyper - Confirm on eedit.php should return to caller.
03/15/19 Fixed, TRK1_192 - MooTyper - eins.php remove exercise does not return to
the correct lesson view.
03/15/19 Fixed, TRK1_193 - MooTyper - erem.php after removing an exercise you
do not go to the correct lesson.
03/19/19 Added confirm popup when deleting a grade from gview.php, View all grades.
03/16/19 Added confirm popup when deleting a grade from owngrades.php, Vy my grades.
03/16/19 Add mew string for the two new confirm popups.
03/16/19 Rename 3 strings to change wroding from remove, to delete.
03/17/19 Added new GDPR functions.
03/18/19 Changed string, $string['eremove'] = 'Remove'; to, $string['delete'] = 'Delete';
Changed the gview.php and owngrades.php files to use the new Delete string,
instead of the improper, Remove.
3/18/19 Armenian(V5) KB - done
3/18/19 Bulgarian(V5) KB - done
3/19/19 Slovenian(V5) KB - done
3/21/19 Croation(V5) KB - done
3/21/19 Czech(V5) KB - started
3/26/19 Pushed new Belgium(DutchV5), Dvorak(V5), English(USV5), Slovenian(V5),
and Spanish(V5) keyboard layouts to github.
3/28/19 Released version 3.6.0.

=== 3.5.4+ === released 2019021600
12/06/18 M36 - Started dev on adding Mode and Exercise category to the MooTyper
activity Edit page. Got them both there with help. Exercise category still
needs work as id is not matching the name correctly, yet.
12/11/18 M36 - Got both Mode and Exercise category working. Now need Exercise to
show when Exam mode is selected.
12/13/18 M36 - Got Exercise to show when mode is Exam. Now need it to show an
actual list of numbers for the chose Exercise category.
01/26/19 3dev - Relabeled some German layout keytops and pushed to github.
01/26/19 3dev - Added two missing characters, â, and î, to german.js file.
02/01/19 3dev - Spent the last two days working on removing all the code style
errors in all the keyboard layouts. See ticket for fix. Pushed to github
master branch.
02/03/19 3dev - Finally found a combination to fix the missing security code
for atchk.php and pushed change to github master branch.
02/13/19 Mostly completed new Telugu keyboard layout. Need to fix parenthesis.
02/14/19 Added all the code needed for Open and Close calendar events.
02/14/18 Created new release 3.5.4.
02/15/19 Fixed calendar Open event when creating a new MooTyper activity.
Instance was not being set at the right point in the add_instnace function.
02/16/19 Created new release 3.5.4+ build 2019021600.

=== 3.5.3 === released 2018113000
06/09/18 Worked on code cleanup in all the keyboard .js files.
06/09/18 Major cleanup in Belgium(DutchV4).js file. - Working so far.
06/12/18 Completed the same major cleanup in all the other .js kb files.
06/16/18 Change the search pattern in eedit.php and eins.php to allow
every character with, var pattern = /[!-ﻼ]/i; instead of the old
piecemeal method of selectin alphabets from somewhere in the middle
of the characters available in a font. Will STILL need to account
for the characters in each js file of each keyboard drivers target alphabet.
06/16/18 Created Vietnamese(V4) keyboard layout.
06/18/18 Created Swedish(V4) keyboard layout.
06/19/18 Created Danish(V4) keyboard layout.
06/19/18 Created Norwegian(V4) keyboard layout.
06/22/18 Created Bulgarian(V4) keyboard layout.
06/23/18 Created Greek(V4) keyboard layout.
06/25/18 Created Czech(V4) keyboard layout.
06/25/18 Made the minor code modification to enable Automatic View
activity completion. Started work on the grade completion part.
06/26/18 Worked some more on added gradebook capabiltiy to MooTyper.
06/27/18 Created Italian(V4) keyboard layout.
06/27/18 Created Turkish(V4) keyboard layout. And removed some
fixed spaces in the new keyboard php files after fixing line
lengths.
06/29/18 Created Arabic(V4) keyboard layout. Still needs major work.
06/30/18 Implemented, Activity Completion for View and it is now
working in this version of MooTyper.
06/30/18 Created Ukrainian(V4) keyboard layout.
07/07/18 Created Hungarian(V4) keyboard layout.
07/09/18 Created German(V4) keyboard layout.
07/11/18 Created Serbian(V4) keyboard layout.
07/12/18 Most of the needed work for Arabic(V4) keyboard layout is now complete.
07/22/18 Fixed alignment error for the English(US) tilde keytop.
09/23/18 Worked some on Aribic(V4) layout. The .js file still needs some characters
implemented.
09/25/18 Got all the lower case Arabic letters working except the ones on tgb.
The g is lighting up when it should be shift+t or shift+b.
11/30/18 Pushed all the working stuff to github for realease.

=== 3.5.2 === released 20180060300
05/15/18 Fixed lesson export so \r\n is only \n.
05/26/18 Added strings for GDPR.
05/26/18 Added privacy.php file with code for GDPR.
STILL need code changed to included data for lesson and exercises.
05/28/18 Finally, I think I have GDPR working. Creates data.json,
attempts.json, grades.json, and lesson.json. The last one doesn't
ever show up for a student. Only teachers and admins, IF, they
have created a lesson with at least one exercise.
05/29/18 Delete for grades and lessons worked previously and today I have
added a delete for lessons. Can't use as it is because it leaves orphaned
exercises in the mootyper_exercises table.
06/01/18 Got a working provider.php for MooTyper working. Need to refine listed
lessons as in some cases it is listing repeats.
06/02/18 After forum discussion with Davo Smith, I realize, I only need to list
and delete grades and attempts.
06/03/18 Modified provider.php to only handle grades and attempts.
06/03/18 Some code cleanup in Belgin, Dvorak, and English(US) .js files.
06/04/18 Fixed GDPR code to use the legacy_polyfill so I can use one branch
to work for Moodle 2.7 thru Moodle 3.5.
06/05/18 Tested each version - all okay.
Bumped version to 3.5.2 and pushed to github.

=== 3.5.1 STABLE === release 2018051300
04/08/18 Modified csvexport.php to include exercise name in the export file.
04/09/18 Created prototype Korean(V4) keyboard layout. Still needs work.
04/16/18 Began development of GDPR code for MooTyper in Moodle3.5.
05/01/18 Have GDPR for MT giving results for grades. Now need to add attempts,
lessons, and exercises.
05/02/18 Added new strings needed for, Plugin privacy registry, listing.
05/03/18 Modified $SQL in privacy.php.
05/04/18 Added missing strings for grades and lessons.Reorganized and changed
wording of new strings for Plugin privacy registry.
05/11/18 Changed status bar WPM to show Gross WPM and Net WPM in Moodle3dev.
05/11/18 Changed the final display of WPM to show updated GWPM and NWPM.
05/11/19 Changed gcnext, view.php, and typer.js to treat wpm as rpWpmInput
just like the other rpXxxxInput items.
05/12/18 Added Practice mode. Setting is hardcoded at the moment.
05/13/18 Finished development of the new, Practice, mode.
05/13/18 Cleaned code. Alost all the code precheck errors are in the js files
for each of the keyboard layouts. Need to go through them again.
05/14/18 Finsihed changes to the wpm formula and pushed to github.
05/14/18 Posted new 3.5.1 version to Moodle.

=== 3.5.0 STABLE === release 2018040400
03/26/18 Updated function doTheEnd in typer.js to do a final stauts bar update so the
info on the staus bar is the same as the info in the grade view.
03/27/18 Added scrolling text capability to the texttotype and hid the textarea.
03/28/18 Added textbackground color to scrolling text. Need to add database setting for it.
03/28/18 Added cursor color in scrolling text. Need to add database setting for it.
03/28/18 Added border and drop shadow to scrolling text frame.
03/30/18 Changed scrolling text so scroll bars appear after typing the exercise.
03/30/18 In XMLDB added four new fields to mdl_mootyper for cursorcolor, textbgc, texterrorcolor,
and countmistakes.
03/30/18 Modified backup code for new fields.
03/30/18 Modified view.php for new fields.
03/31/18 Added new settings for text background color, cursor color, incorrect letter color
to the settings.php file, the mod_setup.php file, and the mod_form.php file.
04/03/18 Added code for auto text direction to make Hebrew(V4)dual layout work.
04/04/18 Added code to view.php to make the status bar round corners look right for
Moodle 3.1 and below as they were not getting flipped as expected.
04/04/18 Created English(UKV4) keyboard layout files.
04/04/18 Deleted Hebrew(V4RTL) and Hebrew(V4LTR) as they are replaced by Hebrew(V4)dual.
04/04/18 Cleaned code and pushed to github for new release.


=== 3.4.3 STABLE === released 2018031200
02/08/18 Started development on Hebrew(V4) Keyboard layout at request of Eyal Laifer.
02/09/18 Abandoned files from Eyal and started over. By EOD I have Hebrew characters working
but NOT the capitalized English characters.
02/10/18 Testing for Hebrew text right align. Should work like the other color settings.
02/10/18 Have working Hebrew layout except for English characters when using shift.
02/11/18 Have left, center, and right align working for text-to-enter and the text entry area.
02/15/18 Working on Thai layout - no progress to speak of. Unable to get shift letters on row1
to type except for %.
02/16/18 Fixed a couple of errors and added AltGr characters to Hebrew KB Layout.
02/16/18 Did some code cleanup on all MooTyper files.
02/18/18 Finally got Thai shift letters to work. Turnoff function had shiftd renamed and that was
causing it to break.
02/25/18 Started modifications to Hebrew(V4) based on input from Eyal Laifer.
02/26/18 Converted Text Alignment Setting from a type into entry box, into a selector using
three language strings for left, center, and right.
03/11/18 Created Estonian(V4) keyboard layout at request of Virgo Pihlapuu.
03/11/18 Got text alignment selector working in eedit.php.
03/12/18 Got text alignment selector working in eins.php and added new language string to warn users
to set alignment before starting to type, as setting alignment clears the textarea.
03/12/18 Cleaned code and pushed to github for new release.

=== 3.4.2 STABLE === released 2017120402
12/02/17 Created Portuguese(PortugalV4) keyboard layout and modified eeins.php and eedit.php
to add «» characters.
12/03/17 Finalized Portuguese(PortugalV4) keyboard layout and modified styles.css file
so that the new Moodle previous and next activity links, stay below MooTyper.
12/04/17 Added missing characters to Portuguese(BrazilV4) keyboard layout and changed font size.
12/04/17 Bumped Version.
12/04/17 Changed font size and name for English(USV4).
12/05/17 Changed PARAM_CLEANHTML to PARAM_RAW in line 50 of eedit.php and line 53 of eeins.php
to fix the problem of some symbols being changed when used in exercises.
12/06/17 Created French(V4) keyboard layout. Waiting for assistance to make sure combined
characters are accounted for.
12/12/17 I think the French(V4) keyboard layout is ready for release. One more check by
Séverin and I'll know for sure.
12/12/17 Dinis has completed MooTyper translation for Portuguese.
12/18/17 Pushed code to github that as Course Reset capability for MooTyper.
12/22/17 Released MooTyper 3.4.2 to Moodle.

=== 3.4.1 STABLE === released 2017120100
11/11/17 Worked on fixing many of the JSDOC errors in all the layout .js files and typer.js.
11/14/17 Moved statistics so they appear with a colored background, right above
the text to type. Added the 2 grade and the settings links just above them.
11/19/17 Over the past four days I have been creating V4 keyboard layouts.
11/20/17 Fixed css filename error in line 72 of owngrades.php. Fixed css filename
error in line 70 of gview.php. Being spelled wrong was preventing the correct
color (black) from being applied to the sort direction indicators on both of
the grade viewing pages.
11/22/17 Added dropdown keyboard layout selector to mod_form which is used when
adding or editing a MooTyper activity.
11/23/17 rearrainged mod_form and mod_setup so Show keyboard checkbox is just
above the Keyboard layout selector.
11/23/17 Modfied min:secs in stats to use leading 0:0 any time seconds
are less than 10, which occurs after each 60 seconds.
11/24/17 Added dropdown selector for required precision to mod_form.php which is
used when adding or editing a MooTyper activity.
11/27/17 Over the past three days I have added a statistics background setting
and added it, keytops, and keyboard background settings that can be set at the
time of creating a MooTyper activity.
12/01/17 Released V4 versions of keyboard layouts.
12/01/17 Released MooTyper 3.4.1.

=== 3.4.0 STABLE === released 2017110700
11/06/17 Over the past two weeks I have been working on eliminating the last few
instances of _POST and _GET. Finally got rid of the last one today in mod_setup.php.
While working on this I also made a new log entry for removing a lesson and made the
previous one cover just the removal of an exercise from a lesson.
Reworked the mod_form to include showkeyboard.
11/07/17 Pushed latest to github. Works on Moodle 2.7 to Moodle 3.4.
Charts are shown only when in Moodle 3.2 and higher.

=== 3.3.2 STABLE === released 2017102600
10/26/17 Fixed a lot more of the warnings and errors listed on Moodle for 3.3.1 version.
10/26/17 Pushed changes to github and published new version 3.3.2.

=== 3.3.1 STABLE === released 2017102500
10/5/17 Changed t_crka to t_Crka to get rid of camelcase errors in all keyboard .js files.
10/5/17 Added JSDoc comments to functions in typer.js and all keyboard .js files.
10/5/17 Bumped version by 0.1.
10/10/17 Fixed instances of _POST being used in gcnext.php and gadd.php.
10/10/17 Pushed 3.3.1 BETA to github.
10/12/17 Fixed instances of _POST being used when it should not in eedit.php and eins.php.
10/19/17 Fixed some instances of _GET being used in attrem.php.
10/20/17 Fixed some instances of _GET being used in atchk.php
10/24/17 Removed DIE and Require_login from atchk.php to fix things back to what
they should be. With either of those lines, students could restart a lesson fromt
the beginning without being fourced to complete and take a "bad" grade. With
either of those two lines, the code for suspicious grades did not work.
10/25/17 Finished fixing _POST and _GET in all files pushed to git and published new version 3.3.1.


=== 3.3.0 STABLE === released 2017092901
NOTE: Moodle 3.2 implements new Graph API, so this MooTyper will be
for MooTyper 3.2 and 3.3 only.
7/19/17 Started adding chart to owngrades.php, View own grades page.
7/20/17 Have dynamic chart working for own grades when grades are present.
Added language string for it's title.
7/20/17 Discovered the column label, Exercise, for the owngrades table was
hard coded. Changed to get_string.
7/20/17 Added dynamic chart to gview.php, View all grades page and added language string for it's title.
8/14/17 Fine tuning y-axis labels for the new graphs.
8/21/17 Eclipse day!
9/3/17 Been working off and on to get various parts of 3.3.0 to work.
   1. fixed options setting so Continuous type is set to config setting
   2. added countmistypedspaces optional
   3. fixed options setting so COunt mistyped spaces is set to config setting
   4. fixed a problem with typer.js that was removing formatting for texttoenter
   5. set colors for text to enter Red, Blue, and Green like the original design
9/4/17 Received message from Ruben Cancho that accented letters do not work in Spanish(V21) keyboard layout.
9/10/17 Reworked all the keyboard layouts, especially Spanish. Accents work as expected except when
using Linux.
9/15/17 Created Belgium(DutchV21) keyboard layout.
9/16/17 Added blue and red characters to Portuguese(V21)(Brazil) KB layout.
9/16/17 Added missing characters, blue, and red to Slovenian(V21) KB layout. Everything works except 'Ł'.
9/17/17 Finished dev work on Belgium(DutchV21) KB layout. Can now type all the provided sample text.
9/17/17 Changed size of the text area in eedit.php line 130-133.
9/17/17 Increased the width of the Required precision setting from 20px to 25px in mod_setup.php line 159.
9/20/17 Completed dev work on a Dvorak KB layout a couple of days ago. Yesterday, simplified all
internal "or" checks and changed it to (V3)
9/20/17 Simplified code in English(V21) and changed it to English(V3).
9/20/17 Simplified code in Belgium(DutchV21) and changed it to Belgium(DutchV3)
9/20/17 Added missing string for log event when importing new KB layout.
9/21/17 Simplified code in Spanish(V21) and changed it to Spanish(V3)
9/23/17 Simplified code in Portuguese(V21) and changed it to Portuguese(V3)
9/24/17 Simplified code in Russian(V21) and changed it to Russian(V3)
9/24/17 Simplified code in German(Swiss)(V21) and changed it to German(Swiss)(V3) - still needs work.
9/26/17 Finally got Slovenian(V3) working correctly for all keys.
9/27/17 Finally got German(SwissV3) based on Belgium working correctly for all keys.
9/29/17 Finished tweaks to keyboard layouts.
9/29/17 Added code to draw charts when the MooTyper is an Exam.
9/29/17 Released MooTyper 3.3 STABLE.

=== 3.2.0 STABLE ===

7/20/17 Completed codechecker fixes.
8/11/17 Since last entry been working off and on, on getting V2 keyboards to render "the same" in both Boost
and Clean. Finally got it today by cutting the padding back to 1px along with width of 39px and height of 30px.
8/12/17 Fine tuning the V2 keyboard files. Added missing background to Japanese (V2) keyboard. Lost some of my work.
NOT sure what happened. I think I did not have template.css and styles.css set the same so that when I made a
a settings change it wiped out my work in styles.css.
8/16/17 Finally tracked down a way to make renders using both Clean and Boost look the same. Did it by adding,
box-sizing: border-box; to each one of my classes in styles.css and template.css.
8/16/17 Made a lot of little tweeks to all of the keyboard layouts to make them as symetrical as I can, plus
added a few missing keys to the non-v2 layouts.
8/18/17 Continued making tweeks to all the keyboard layouts
8/19/17 Released version 3.2.0.

=== 3.1.5 Beta === NOT RELEASED
6/10/17 Cleaned up more of the code in typer.js - Slovenian to English.
6/11/17 Cleaned up more of the code in typer.js - Slovenian to English.
6/11/17 Worked on CSS - still don't know why render size is different between Boost and Clean.
6/22/17 Started development of Behat tests.
6/23/17 Experimented with adding options to the MooTyper edit activity page:
        - Mode = Lesson or Exam
        - showkeyboard
        - continuous type
8/18/17 Current 3.2.0 STABLE released instead of 3.1.5.

=== 3.1.4 STABLE ===
6/5/17 Currently have backup working with user data for grades.
6/7/17 Worked on lesson import.
6/8/17 Worked on lesson import for keyboard part. had to add gloabl db and cfg to this part just like lesson.
6/8/17 Released new version.

=== 3.1.4 BETA ===
10/18/16 typer.js did some more work on converting Slovenian words to English.
10/18/16 Modified typer.js so that if you mistype a character, you don't have
to enter the correct letter before proceeding, but it still gets counted as a mistake.
10/24/16 Started work on adding continuous typing as a setting during setup of a MooTyper lesson or exam.
04/05/17 Fixed multiple occurances in both css files where 5x should be 5px.
04/05/17 Fixed one spot where radius was spelled wrong in both css files.
05/04/17 Code style cleanup .../mootyper/view.php.
05/04/17 Code style cleanup .../mootyper/typer.js.
05/04/17 Code style cleanup .../mootyper/settings.php.
05/04/17 Code style cleanup .../mootyper/owngrades.php.
05/04/17 Code style cleanup .../mootyper/mod_setup.php.
05/04/17 Code style cleanup .../mootyper/mod_form.php.
05/04/17 Code style cleanup .../mootyper/lsnimport.php.
05/04/17 Code style cleanup .../mootyper/lsnexport.php.
05/04/17 Code style cleanup .../mootyper/lib.php.
05/04/17 Code style cleanup .../mootyper/gview.php.
05/04/17 Code style cleanup .../mootyper/gcnext.php. moved global $DB up above require_once.
05/04/17 Code style cleanup .../mootyper/gadd.php. moved global $DB up above require_once.
05/04/17 Code style cleanup .../mootyper/exercises.php.
05/04/17 Code style cleanup .../mootyper/erem.php. moved global $DB up above require_once.
05/04/17 Code style cleanup .../mootyper/eins.php.
05/04/17 Code style cleanup .../mootyper/eedit.php.
05/04/17 Code style cleanup .../mootyper/csvexport.php.
05/04/17 Code style cleanup .../mootyper/attrem.php. moved global $DB up above require_once.
05/04/17 Code style cleanup .../mootyper/atchk.php. moved global $DB up above require_once.
05/04/17 Code style cleanup .../mootyper/layout/Dvorak.js
05/04/17 Code style cleanup .../mootyper/db/install.php.
05/04/17 Code style cleanup .../mootyper/db/uninstall.php.
05/04/17 Code style cleanup .../mootyper/backup/moodle2/backup_mootyper_activity_task.class.php.
05/04/17 Code style cleanup .../mootyper/backup/moodle2/backup_mootyper_stepslib.php.
05/04/17 Code style cleanup .../mootyper/backup/moodle2/restore_mootyper_stepslib.php.
5/4/17 Code doc cleanup in ...mod/view.php
5/4/17 Code doc cleanup in ...mod/styles.css and template.css
5/4/17 Code doc cleanup in ...mod/settings.php
5/4/17 Code doc cleanup in ...mod/renderer.php
5/4/17 Code doc cleanup in ...mod/owngrades.php
5/4/17 Code doc cleanup in ...mod/mod_setup.php
5/4/17 Code doc cleanup in ...mod/mod_form.php
5/4/17 Code doc cleanup in ...mod/lsnimport.php
5/4/17 Code doc cleanup in ...mod/lsnexport.php
5/4/17 Code doc cleanup in ...mod/locallib.php
5/4/17 Code doc cleanup in ...mod/lib.php
5/4/17 Code doc cleanup in ...mod/index.php
5/4/17 Code doc cleanup in ...mod/gcnext.php
5/4/17 Code doc cleanup in ...mod/gadd.php
5/4/17 Code doc cleanup in ...mod/gadd.php
5/4/17 Code doc cleanup in ...mod/erem.php
5/4/17 Code doc cleanup in ...mod/eins.php
5/4/17 Code doc cleanup in ...mod/eedit.php
5/4/17 Code doc cleanup in ...mod/csvexport.php
5/4/17 Code doc cleanup in ...mod/attrem.php
5/4/17 Code doc cleanup in ...mod/atchk.php
5/4/17 Code doc cleanup in ...mod/lang/en/mootyper.php
5/4/17 Code doc cleanup in ...mod/db/access.php       *******
5/4/17 Code doc cleanup in ...mod/db/install.php      *******
5/4/17 Code doc cleanup in ...mod/db/log.php          *******
5/4/17 Code doc cleanup in ...mod/db/uninstall.php    *******
5/4/17 Code doc cleanup in ...mod/db/upgrade.php      *******
5/4/17 Code doc cleanup in ...mod/classes/event/course_exercise_viewed.php
5/4/17 Code doc cleanup in ...mod/classes/event/course_module_instance_list_viewed.php
5/5/17 Modified $sql SELECT statement to include mte.id in lsnexport.php line so exercises CAN be
duplicates without getting debug message in output file.
05/06/17 Code style cleanup .../mootyper/csvexport.php - moved require_once x3 to correct location in file.
05/06/17 Code style cleanup .../mootyper/eedit.php - moved globals to correct location in file.
05/06/17 Code style cleanup .../mootyper/exercises.php - moved globals to correct location in file.
05/06/17 Code style cleanup .../mootyper/lessons/* - fixed missing lf at the end of new lessons.
05/06/17 Code style cleanup .../mootyper/localib.php - removed whitespace at the end of a bunch of lines.
05/06/17 Code style cleanup .../mootyper/view.php - moved globals to correct location in file.
05/06/17 Code style cleanup .../mootyper/layouts/qwerty.js - fixed errors.
05/06/17 Code style cleanup .../mootyper/layouts/English(V2).php - added missing intro section.
6/1/17 Pushed 3.1.4 Beta to github with partial backup capability for others to test.
6/3/17 Pushed 3.1.4.1 Beta to github with user data backup capability for others to test.
6/4/17 Ran code checker PHPdoc on new code in moodle 30 and fixed warnings, errors and missing documentation.
6/4/17 Did more work on continous typing. Flag is not being detected correctly?
6/5/17 Added continuoustype field to list of fields to back up. Tested and is working.
6/5/17 Implemented continuous typing as an optional setting. Working in beta.

=== 3.1.3 ===
08/15/16 Changed Administration Import exercise / category entry, to Import lesson / KB layout.
08/15/16 Added code to lsnimport.php that checks to see if there are any new keyboard layouts in the layouts folder.
10/10/16 Fixed bug with Time open and Time close being reversed in availability check.
10/10/16 Changed code for Exam mode to prevent negative WPM.
10/11/16 Changed code for Lesson mode to prevent negative WPM.
10/11/16 Changed some language strings to make the plugin more generic.
10/11/16 Changed availability check code in view.php so that admin and teachers can always access
a MooTyper activity to check grades. Only students are prevented if availability is closed.

=== 3.1.2 === released 2016080700
07/18/2016 Implemented code to show entries in the Recent Activity Block.
07/30/2016 Implemented code to use open and close dates for MooTyper activities.
07/30/2016 Implemented renderer.php file and started creating functions in it.
08/02/2016 Implemented code for passwords. Had to add new usepassword field
to mdl_mootyper table.
08/06/2016 Changed Exercise filename to show "Exercise x of y' instead of a
single meaningless digit.
08/07/2016 Modified config name for recent activity to match other config names.
08/07/2016 Added setting to allow for automatic addition of GMT to export lesson
filenames.

=== 3.1.1 ===
07/01/2016 Previously, I attempted to add a setting for the date and time format
but gave it up to work on other new capabilities and enhancements. Today, I tried
again based on a clue regarding get_config. Took only a few minutes and I now have
it working. Need to finalize the directions and see what codes can be used. Right
now I know about d, M, Y, G and i as well as comma and colon.
07/02/2016 Added color picker setting for passing grades. Not used for exam as no
pass/fail is implemented for exam.
07/02/2016 Added color picker setting for failing grades. Not used for exam as no
pass/fail is implemented for exam.
07/02/2016 Added color picker setting for suspicious grades.
07/08/2016 Added color picker setting for keyboard background for new keyboard layouts.
Does not affect old keyboard layout versions.
07/08/2016 Added color picker setting for keytops of non-homerow keys for new keyboard layouts.
Does not affect old keyboard layout versions.

=== 3.1.0 ===
Working on multiple new capabilities.
05/03/2016 Over the past few days I've added V2 versions of other keyboard layouts.
06/14/2016 Added an Export / edit exercises link in the Administration
block that's visible when looking at the view.php page. It takes you to the
normal exercises.php page and now has links that will let you export lessons
as a .txt file so you can save and or swap lessons that you create.
06/14/2016 Added an Import exercise / category link in the Administration
block that's visible when looking at the view.php page. When clicked it will
check all the files in the MooTyper lesson folder. Filenames that match lessons
already in the database are skipped. Filenames that do not match lessons already
in the database will get added. Once complete you will see a report of what was
done with a contiue link that takes you to the exercises.php page so you can
check the contents of the new lessons.
06/25/2016 Yesterday I updated github with a 3.1.0 Beta version and made a post about
it in the discussion group.
06/26/2016 Last night when doing some testing, I discovered the lesson export
format was not correct. Updated the code in lsnexport.php and pushed to github.
06/30/2016 Modified lesson export format again. Each exported line of text need
both CR adn LF, not just the CR I had been using. With just a CR, the text of the
first exercise of a lesson would would not show up until it was opend for editing
and then saved. New format works out of the box.
07/01/2016 Released this version on Moodle.

=== 3.0.1 ===
04/01/16 Added English(US) keyboard layout by copying English one.
Redid all number and symbol keys to show shifted and unshifted characters
on one key, by using supscript and subscript tags.
Got rid of the <> key that was by the z key and put them where they belong.
Added the missing backslash plus vertical bar key that was supposed
to be next to the right bracket key.
Changed the Alt gr key to Alt.
Resized some keys to enhance the layout.
Some characters were not being recognized as valid characters for a lesson,
so I added them in the eins.php file. I also added them to the eedit.php file.
04/04/16 Added some CSS changes to make the English(US) keyboard layout look better
especially keys with two symbols on them.
04/04/16 Redid the icon as an SVG file.
04/06/16 Change suspicion indication from red to yellow to make it stand out more.
I also added more characters to the lesson install.php. Made copy of the original
version so I can experiment.
04/07/16 Added links under the Administration block to go
directly to MooTyper Administration and Add new exercise/category pages. The two
links also use the new icon file.
04/08/16 Changed variable name in install.php from $pikapos to $periodpos.
04/08/16 Added keyboard background color setting for the new keyboard layout.
Have NOT yet figured out the correct "selector" for it in settings.php.

=== 3.0 ===
3.0 (Build: 2016032400) (2016032400)Moodle 2.9, 3.0
* Changed version.
Minor code cleanup.

=== 2.9 ===
2.9 (Build: 2016032300) (2016032300)Moodle 2.9
Release date: Thursday, 24 March 2016, 12:54 PM

* Fixed function moodleform_mod::add_intro_editor() is deprecated, in mod_form.php.
* Removed non-English sample lessons
* Removed extra language files.
* Changed version.

=== 2.8 ===
2.7.1 (Build: 2016032200) (2016031501)Moodle 2.7, 2.8
Release date: Tuesday, 22 March 2016, 5:24 PM

Modified ename language string.
Fixed function can_view_edit_all($usr, $c) that was letting everyone modify every lesson.
Fixed function is_user_enrolled($usr, $crs) that was incorrectly comparing a courseid to modifieid.
Modified the call to function get_typerlessons() in mod_setup.php so the function is no longer
used. It was incorrectly being called for everyone and giving them edit/remove capability they
should not have had.
Modified mod_setup.php to only call function get_mootyperlessons($u, $c) so edit/remove works correctly.
Removed some of the junk lines in locallib.php and modified the remarks at the top of the file.
Combined README.txt and README.md into one file: README.md.
Changed version.

=== 2.7 ===
I took over MooTyper 3/15/16
* 2.7.0 (Build: 2016031500) (2016031500)Moodle 2.7
  Release date: Wednesday, 16 March 2016, 11:12 AM
required changes in code:
  * Fixed all deprecated add_to_log functions.
  * Sorted language strings.
  * Added language strings for new events.
  * Added language strings for missing permissions.
  * Fixed multiple notices of trying to get property of non-object errors when viewing lessons.
  * Fixed function moodleform_mod::add_intro_editor() is deprecated error.
  * Fixed get_context_instance() is deprecated when viewing list of MootTyper activities.

No updates for about a year and a half.

=== 2.7 ===

* 2.6.6 (Build: 2014120500) (2014120500)Moodle 2.7
  Release date: Friday, 5 December 2014, 11:17 AM
* 2.6.5 (Build: 2014102300) (2014102300)Moodle 2.7
  Release date: Thursday, 23 October 2014, 4:32 PM
* 2.6.4 (Build: 2014090300) (2014090300)Moodle 2.7
  Release date: Wednesday, 3 September 2014, 8:11 AM
* 2.6.2 (Build: 2014082800) (2014082800)Moodle 2.7
  Release date: Thursday, 28 August 2014, 3:17 PM
* 2.5 (Build: 2014071300) (2014071300)Moodle 2.7
  Release date: Sunday, 13 July 2014, 5:38 AM

=== No releases for 2.4, 2.5, 2.6 ===

=== 2.3 === released 20140803

* 2.6 (Build: 2014080300) (2014080300)Moodle 2.3
  Release date: Sunday, 3 August 2014, 7:51 AM
* 2.4 (Build: 2014071200) (2014071200)Moodle 2.3
  Release date: Sunday, 13 July 2014, 5:27 AM
* 2.3.1 (Build: 2013022300) (2013022300)Moodle 2.3
  Release date: Friday, 22 February 2013, 5:38 PM
* 2.3 (Build: 2013022100) (2013022100)Moodle 2.3
  Release date: Thursday, 21 February 2013, 4:39 PM

=== 2.2 ===

* 2.2 (Build: 2013012100) (2013012100)Moodle 2.2
  Release date: Monday, 21 January 2013, 11:40 AM
* 2.1 (Build: 2012101200) (2012101200)Moodle 2.2
  Release date: Friday, 12 October 2012, 9:38 AM
* 2.0 (Build: 2012101100) (2012101100)Moodle 2.2
  Release date: Thursday, 11 October 2012, 2:43 PM
* 1.9 (Build: 2012101100) (2012101100)Moodle 2.2
  Release date: Thursday, 11 October 2012, 6:43 AM
* 1.8 (Build: 2012090400) (2012100400)Moodle 2.2
  Release date: Thursday, 4 October 2012, 7:39 AM
* 1.7 (Build: 2012100400) (2012100400)Moodle 2.2
  Release date: Thursday, 4 October 2012, 6:52 AM
* 1.6 (Build: 2012082500) (2012082500)Moodle 2.2
  Release date: Friday, 24 August 2012, 4:14 PM
* 1.5 (Build: 2012082400) (2012082400)Moodle 2.2
  Release date: Friday, 24 August 2012, 9:23 AM
* 1.4 (Build: 2012081600) (2012081600)Moodle 2.2
  Release date: Wednesday, 15 August 2012, 11:09 AM
* 1.3 (Build: 2012081500) (2012081500)Moodle 2.2
  Release date: Tuesday, 14 August 2012, 4:17 PM
* 1.2 (Build: 2012081400) (2012081400)Moodle 2.2
  Release date: Tuesday, 14 August 2012, 4:43 AM
* 1.1 (Build: 2012010700) (2012010700)Moodle 2.2
  Release date: Wednesday, 25 July 2012, 3:15 AM
* 1.0 (20120411)Moodle 2.2
  Release date: Sunday, 1 July 2012, 12:19 PM
