Changes in version 1.9.1 - Eliminate # component from address and do not encode it for framesource= in launchShiny() javascript function in learnitdown_init(). Changes in version 1.9.0 - assignment(), assignment2(), challenge() and challenge2() functions now have new arguments institution= and set=. - The learnr(), h5p() and shiny() functions now populate a "learnitdown_apps" option that is used by show_ex_toc() to create an ex/apps.csv file with all exercises together with the assignments. They have new arguments icourse=, institution=, acad_year=, term= and set= to populate this table (also baseurl= for launch_shiny()). - A file with all assignments (assignments.csv) and with all apps (apps.csv) is compiled in the /ex subdirectory when using show_ex_toc(..., finalize = TRUE). - The name of the app is now also indicated in the exercises table of content. Changes in version 1.8.2 - The launchApp() javascript function in learnitdown_init() now includes a framesource= parameter to comply with new Posit Connect rules for embedded contents - The learnr() function has a new argument: connect.url= to specify the URL of the Posit Connect server where the learnr should be run (if NULL, the rstudio.url= argument is used instead. Changes in version 1.8.1 - The observe() statement is now evaluated in the R Markdown document environment. Changes in version 1.8.0 - Changes made to allow learnr running an a Posit Connect server, recognize user, and record in the server database (changes in record_learnr() and learnitdownLearnrServer()) Changes in version 1.7.0 - Shiny and learnr events are now recorded in the "events" table instead of "shiny" or "learnr" tables. - webshot_shiny() now also accepts the path to a PNG file (the screenshot of the app) instead of the url to the Shiny application. This allows to create the webshot image in case the app cannot be accessed directly (for instance, a login in Posit Connect is required). The corresponding RStudio addin is modified to ask for a PNG screenshot if no suitable code is selected. Changes in version 1.6.0 - Argument idurl= added in h5p() to allow including exercises from h5p.org or h5p.com. - Default directory for assignments is now docs instead of _book with subdirectory being ex an which is now created by clean_ex_doc(). Changes in version 1.5.6 - Small adaptations due to a transfer into the learnitr GitHub organization. - License changed to MIT. Changes in version 1.5.5 - More robust checking of password. - Do not drop Shinylogs records dir, only eliminate each file when it is processed. This allows for recording of several simultaneous sessions. - Do not record Shinylogs events whose label starts with ".clientdata_output_". - In launch_shiny() and webshot_shiny(), default width is increased from 780 to 790, otherwise shiny::sidepanelLayout()wrap the side panel on the top of the Shiny app. Changes in version 1.5.4 - In learnitdown_init() an h5pxapikatchu js file is not need any more (commented out). Changes in version 1.5.3 - pkgdown icons added. Changes in version 1.5.2 - The dependency to {keyring} is added again. It allows to store the password Changes in version 1.5.1 - {learnr} and {gradethis} upgraded to higher versions. Changes in version 1.5.0 - assignation() and assignation2() are renamed assignment() and assignment2() which are more correct names. - Assignments and challenge functions get new arguments. clone= indicates if we want to generate an entry in a file to clone corresponding repositories automatically. level= indicates the difficulty level, n= indicates the number of students per assignment (default to 1 for individual assignments/challenges and to 2 for group assignments/challenges). type= indicates the type of exercise. acad_year= is the academic year, and term= is the term where the exercise has to be done. course.starts= and course.ends= indicate starting and ending dates for the exercises for each course (or students groups). - Assignments now create two additional files. An HTML file routes to the correct URL given the context (GitHub Classroom assignment, template GitHub repository if the user is not logged in, or pages indicating it is too soon or too late for these assignments). A CSV file collects assignments information that can be used to clone corresponding repositories and to grade more easily these assignments. Changes in version 1.4.2 - Better checking of internet access during system configuration. Changes in version 1.4.1 - While recording learnr events, the procedure to check if the computer is connected to the Internet sometimes failed without good reasons. Now, check the access to two sites that should be more reliable. - For run_app(), a better code is now used to display the app running in a job inside the RStudio viewer pane. A new argument max.wait = indicates the number of seconds to wait for the Shiny app to start. Changes in version 1.4.0 - For launch_shiny(), allow to include a search string in the url. Changes in version 1.3.3 - Better checking of Internet availability in config() and record_learnr(). Changes in version 1.3.2 - Dependency to keyring eliminated. Changes in version 1.3.1 - Experimental learnr obfuscation functions. Changes in version 1.3.0 - Package renamed {learnitdown} to avoid conflicts with http://learndown.com. - New functions lock()/unlock(), using an application (e.g., course) password to lock or unlock sensitive data like students' personal information, or database password. - New obfuscation functions obfuscate(), ._() and O() to hide {learnr} answers in the original .Rmd file. The function ans() could be used to replace learnr::answer() for a cleaner obfuscation mechanism for quizzes. Changes in version 1.2.1 - Bug correction: when update_pkg() encountered a more recent version of the package, it upgraded it anyway. Changes in version 1.2.0 - There are now more GitHub assignation types : assign2() for group assignations and challenge()/challenge2() for assignations linked to challenges (individual or in groups). - Images related to exercise blocks and suggested style0.css and preamble.texto be used for {learndown}-enabled {bookdown}s are also provided now. Changes in version 1.1.8 - Argument upgrade= added to run(), run_app() and update_pkg(). By default, it is "never", which is a good value inside the SciViews Box, but "ask" may be more appropriate elsewhere. Changes in version 1.1.7 - Again a problem with bookdown links not correctly retargeted when the bookdown is displayed in an iframe. Corrected. Changes in version 1.1.6 - For assignation(), links now have target = "_blank" so that these links are now functional, even inside an iframe. Changes in version 1.1.5 - run_app() now opens the Shiny application in the default browser (but it is still the Viewer pane in RStudio). - In learndown_init(), links with target= attributes were retargeted to _parent, but it is those without target= that had to be changed (corrected). - In learn() and launch_shiny(), the link now have target="_blank" meaning that RStudio is opened in a different tab. Changes in version 1.1.4 - run() now tries harder to display a tutorial in the Tutorial tab in RStudio. Changes in version 1.1.3 - Gracefully exit in run() and run_app() when nothing is selected in the list. Changes in version 1.1.2 - webshot_shiny() refused to work when it sees the toc = argument. Solved. Changes in version 1.1.1 - Anchors now include part for assignation(), so that different anchors are used if different parts of the same assignation are proposed in the same section/module of the bookdown. - Anchor now includes both the image and the iframe for launch_shiny(). - An error message is now displayed in Shiny applications and learnr tutorials if the database is not accessible. - In learnr tutorials, access to database is tested only once. If it fails, no further attempt is done in this process in order to avoid too much slow down in systematically trying to connect to a non responding database for each event. - Internet access and configuration checking in Shiny applications, with a message displayed in case of error. Changes in version 1.1.0 - Addition of learnr() and assignation() functions to create tutorial and GitHub assignation blocks. They use two new blocks: tuto and assign blocks with specific icons. - Addition of toc arguments in h5p(), launch_shiny(), 'learnr() and assignation() and a function to generate the exercises table of content with show_ex_toc(). Anchors are added in the respective items, so that the toc can link to them. The four types of items are also associated with specific icons that link to help pages when the user clicks them. - Links to start Shiny applications and learnr tutorials directly in RStudio server in the SciViews Box are added. Changes in version 1.0.7 - The solution verification in trackSubmit() is now customizable, and a much more complete default is provided in check_shiny_solution(). - Default delay = for webshot_shiny() now at 10 sec in order to catch more correct case with default value. - The run() function now runs a tutorial in the RStudio tab if possible. Changes in version 1.0.6 - The url_pathname is now integrated to the user information in Shiny applications, and it is used to get a more meaningful app name in the case of RStudio Server (otherwise, it is always 'app'). - fingerprint() is renames sign_in(): more explicit. Changes in version 1.0.5 - The fields score, max and grade are added in all events tables with grade = score/max. The solution for Shiny applications can now use a range for numeric values and a series of correct solutions for text. Also a max_score = argument added to trackSubmit() allows to redefine the maximum score for a Shiny application. - fields type and id added to match what is issued by H5P. - encrypt() and decrypt() are now more versatile and accept more arguments to fine-tune their work. - fingerprint() function added to identify users in local learnr and shiny applications. - New argument fingerprint.fun = in trackEvents() so that locally run Shiny applications can also use user data stored in the fingerprint cache. - learndownLearnrSetup() to initialize easily learndown learnr apps. Changes in version 1.0.4 - Functions for learndown learnr applications added. - config() function added. - Reworked database scheme, including course and institution - Use of LEARNDOWN_LOCAL_STORAGE and LEARNDOWN_DEBUG environment variables everywhere (Shiny and learnr applications). - Fields to be added to the database are adapted to get the same ones between the different applications. - Events replaced by their equivalent xAPI verbs. Changes in version 1.0.3 - Allow using an alternate MongoDB server if a Shiny application is run from a server (using MONGO_URL_SERVER environment variable). Changes in version 1.0.2 - Debug messages possibles in trackEvents() to determine the causes of errors when recording Shiny apps events in a MongoDB database. Changes in version 1.0.1 - Shiny apps: do not track events when no login and fallback to temporary directory if path = is not writable in trackEvents(). - The number of opened sessions is tracked in a Shiny app and stopApp() is only invoked if there is no other opened session. - For Shiny applications, trackEvents() only tracks events in a MongoDB database for logged users. A message appears briefly (5sec) to indicate the status of the recording when the session is started. Changes in version 1.0.0 - First version of the learndown package. Including code developed for BioDataScience-Course (show/hide sections depending on the institution or course, hide details, including some code chunks, include H5P, Shiny and learnr applications with user identification and events logging, defer Shiny/learnr apps until the user clicks on it, and an RStudio addin to take screenshots of such apps easily).