Blog

  • BM-to-PNG-Converter

    DEPRECATED

    Archived in favor of BMtoBMP, which converts BM/PAL files to bitmap images instead of PNGs.

    This was done primarily to remove the Raylib dependency. At the time I wrote this program, I justified using Raylib as a crutch because the project I created this tool for was going to be using it already. Almost immediately after completing this project though, I regretted the idea. Only just got some time to actually work on this.

    The remainder of the old README.md will remain as-is for archival purposes. Note that the Additional info on how BM and PAL files work section is rather inaccurate at this point. I learned a lot more about the file format as I worked on this new project. Please view BMtoBMP using the link above if you’re looking for more information on these files.

    BM-to-PNG-Converter

    A header-only library and command-line executable which converts BM files to images (PNGs) using PAL files.

    Installing

    Navigate to the releases page and download the latest zip file.

    Once downloaded, extract the zip file wherever you’d like and you’re done!

    See usage below for more details on running the application.

    Building from Source (Linux/macOS/Unix)

    Install dependencies:

    # BM-to-PNG dependencies:
    gcc make cmake mingw32-gcc clang-tools-extra
    
    # Raylib (v5.0) dependencies:
    alsa-lib-devel mesa-libGL-devel libX11-devel libXrandr-devel libXi-devel libXcursor-devel libXinerama-devel libatomic
    

    Clone the project:

    $ git clone https://github.com/IcePanorama/BM-to-PNG-Converter.git
    # ... or, alternatively ...
    $ git clone git@github.com:IcePanorama/BM-to-PNG-Converter.git

    Install:

    $ cd BM-to-PNG-Converter && mkdir build && cd build && cmake .. && make release && cd ..

    Usage

    BMtoPNG_x86_64.exe path\to\file.BM path\to\file.PAL # 64-bit Windows Systems
    BMtoPNG_i686.exe path\to\file.BM path\to\file.PAL # 32-bit Windows Systems
    ./BMtoPNG path/to/file.BM path/to/file.PAL # Linux/macOS/Unix Systems
    

    Using the library

    The only non-static function accessible through the header is convert_bm_file_to_png (). For input, it takes in two FILE pointers, both of which the caller is responsible for initializing and closing. The first should be a pointer to some BM file, while the second should be a pointer to some PAL file. The caller is also responsible for insuring that these are, in fact, BM and PAL files. Lastly, the final piece of input should be the desired output filename.

    N/B: The function automatically adds the file extension to the end of output_filename.

    Additional info on how BM and PAL files work:

    BM

    For whatever reason, these files are organized in a weird fashion. The first 8 bytes of a given file correspond to its width and height (in little endian), followed by 4 bytes of zeros. What follows after this is an array of bytes where each byte corresponds to a pixel in the output image. The strange part is that this array isn’t organized like you might think. Rather that starting from the upper left hand, it starts from the bottom left, I believe. I found this out just through trial and error, but perhaps someone more knowledgable than me knows why. My best guess is that it’s maybe data protection? idk

    PAL

    These files are very simple compared to the BM files. The “index” you get from the BM file just tells you where to jump to in the PAL file and then you just read the next three bytes which correspond directly to that pixel’s rgb values.

    Visit original content creator repository
    https://github.com/IcePanorama/BM-to-PNG-Converter

  • alkemyChallenge

    CHALLENGE BACKEND – Java

    Spring Boot (API) 🚀

    Objetivo

    Desarrollar una API para explorar el mundo de Disney, la cual permitirá conocer y modificar los
    personajes que lo componen y entender en qué películas estos participaron. Por otro lado, deberá
    exponer la información para que cualquier frontend pueda consumirla.

    👉 Utilizar Spring Boot.
    👉 No es necesario armar el Frontend.
    👉 Las rutas deberán seguir el patrón REST.
    👉 Utilizar la librería Spring Security.

    Requerimientos técnicos

    1. Modelado de Base de Datos

    ● Personaje: deberá tener,

    ○ Imagen.
    ○ Nombre.
    ○ Edad.
    ○ Peso.
    ○ Historia.
    ○ Películas o series asociadas.

    ● Película o Serie: deberá tener,

    ○ Imagen.
    ○ Título.
    ○ Fecha de creación.
    ○ Calificación (del 1 al 5).
    ○ Personajes asociados.

    ● Género: deberá tener,

    ○ Nombre.
    ○ Imagen.
    ○ Películas o series asociadas.

    2. Autenticación de Usuarios

    Para realizar peticiones a los endpoints subsiguientes el usuario deberá contar con un token que
    obtendrá al autenticarse. Para ello, deberán desarrollarse los endpoints de registro y login, que
    permitan obtener el token.

    Los endpoints encargados de la autenticación deberán ser:
    ● /auth/login
    ● /auth/register

    3. Listado de Personajes

    El listado deberá mostrar:
    ● Imagen.
    ● Nombre.
    El endpoint deberá ser:
    ● /characters

    4. Creación, Edición y Eliminación de Personajes (CRUD)

    Deberán existir las operaciones básicas de creación, edición y eliminación de personajes.

    5. Detalle de Personaje

    En el detalle deberán listarse todos los atributos del personaje, como así también sus películas o
    series relacionadas.

    6. Búsqueda de Personajes

    Deberá permitir buscar por nombre, y filtrar por edad, peso o películas/series en las que participó.
    Para especificar el término de búsqueda o filtros se deberán enviar como parámetros de query:
    ● GET /characters?name=nombre
    ● GET /characters?age=edad
    ● GET /characters?movies=idMovie

    7. Listado de Películas

    Deberá mostrar solamente los campos imagen, título y fecha de creación.
    El endpoint deberá ser:
    ● GET /movies

    8. Detalle de Película / Serie con sus personajes

    Devolverá todos los campos de la película o serie junto a los personajes asociados a la misma

    9. Creación, Edición y Eliminación de Película / Serie

    Deberán existir las operaciones básicas de creación, edición y eliminación de películas o series.

    10.Búsqueda de Películas o Series

    Deberá permitir buscar por título, y filtrar por género. Además, permitir ordenar los resultados por
    fecha de creación de forma ascendiente o descendiente.
    El término de búsqueda, filtro u ordenación se deberán especificar como parámetros de query:
    ● /movies?name=nombre
    ● /movies?genre=idGenero
    ● /movies?order=ASC | DESC

    11. Envío de emails

    Al registrarse en el sitio, el usuario deberá recibir un email de bienvenida. Es recomendable, la
    utilización de algún servicio de terceros como SendGrid.

    Documentación

    Es deseable documentar los endpoints utilizando alguna herramienta como Postman o
    Swagger.

    Tests

    De forma opcional, se podrán agregar tests de los diferentes endpoints de la APP, verificando
    posibles escenarios de error:

    • Campos faltantes o con un formato inválido en BODY de las peticiones
    • Acceso a recursos inexistentes en endpoints de detalle
      Los tests pueden realizarse utilizando JUnit y Mockito.

    Visit original content creator repository
    https://github.com/federicovinas7/alkemyChallenge

  • typescript_todoApp

    Getting Started with Create React App

    This project was bootstrapped with Create React App.

    Available Scripts

    In the project directory, you can run:

    npm start

    Runs the app in the development mode.
    Open http://localhost:3000 to view it in the browser.

    The page will reload if you make edits.
    You will also see any lint errors in the console.

    npm test

    Launches the test runner in the interactive watch mode.
    See the section about running tests for more information.

    npm run build

    Builds the app for production to the build folder.
    It correctly bundles React in production mode and optimizes the build for the best performance.

    The build is minified and the filenames include the hashes.
    Your app is ready to be deployed!

    See the section about deployment for more information.

    npm run eject

    Note: this is a one-way operation. Once you eject, you can’t go back!

    If you aren’t satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

    Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

    You don’t have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

    Learn More

    You can learn more in the Create React App documentation.

    To learn React, check out the React documentation.

    Visit original content creator repository
    https://github.com/ludolfaugust/typescript_todoApp

  • Imagine

    Imagine App

    An simple image gallery app utilizing Unsplash API.

    Tests codecov

    Built with ❤︎ by Wajahat Karim and contributors



    Features

    • Popular photos with pagination support
    • Quickly explore top categories like Cars, Mountains, Animals, Interior etc.
    • Search query with pagination support
    • Comes in both light and dark mode.

    Architecture

    • Built with Modern Android Development practices
    • Utilized Usecase, Repository pattern for data
    • Includes unit tests for Use cases, Repository, ViewModels, API Service response.

    📱 Download Demo on Android

    Download the APK file from here on your Android phone and enjoy the Demo App 🙂

    Built With 🛠

    • Kotlin – First class and official programming language for Android development.
    • Coroutines – For asynchronous and more..
    • Flow – A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
    • Android Architecture Components – Collection of libraries that help you design robust, testable, and maintainable apps.
      • LiveData – Data objects that notify views when the underlying database changes.
      • ViewModel – Stores UI-related data that isn’t destroyed on UI changes.
      • ViewBinding – Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Dependency Injection
      • Hilt – Easier way to incorporate Dagger DI into Android apps. This is in the main branch.
      • Dagger2 – Standard library to incorporate Dagger dependency injection into an Android application. This is in a separate dagger branch.
    • Retrofit – A type-safe HTTP client for Android and Java.
    • Material Components for Android – Modular and customizable Material Design UI components for Android.
    • Gradle Kotlin DSL – For writing Gradle build scripts using Kotlin.
    • MockK – For Mocking and Unit Testing

    👨 Developed By

    Wajahat Karim

    Twitter Web Medium Linkedin

    Visit original content creator repository https://github.com/wajahatkarim3/Imagine
  • Imagine

    Imagine App

    An simple image gallery app utilizing Unsplash API.

    Tests codecov

    Built with ❤︎ by Wajahat Karim and contributors



    Features

    • Popular photos with pagination support
    • Quickly explore top categories like Cars, Mountains, Animals, Interior etc.
    • Search query with pagination support
    • Comes in both light and dark mode.

    Architecture

    • Built with Modern Android Development practices
    • Utilized Usecase, Repository pattern for data
    • Includes unit tests for Use cases, Repository, ViewModels, API Service response.

    📱 Download Demo on Android

    Download the APK file from here on your Android phone and enjoy the Demo App 🙂

    Built With 🛠

    • Kotlin – First class and official programming language for Android development.
    • Coroutines – For asynchronous and more..
    • Flow – A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
    • Android Architecture Components – Collection of libraries that help you design robust, testable, and maintainable apps.
      • LiveData – Data objects that notify views when the underlying database changes.
      • ViewModel – Stores UI-related data that isn’t destroyed on UI changes.
      • ViewBinding – Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Dependency Injection
      • Hilt – Easier way to incorporate Dagger DI into Android apps. This is in the main branch.
      • Dagger2 – Standard library to incorporate Dagger dependency injection into an Android application. This is in a separate dagger branch.
    • Retrofit – A type-safe HTTP client for Android and Java.
    • Material Components for Android – Modular and customizable Material Design UI components for Android.
    • Gradle Kotlin DSL – For writing Gradle build scripts using Kotlin.
    • MockK – For Mocking and Unit Testing

    👨 Developed By

    Wajahat Karim

    Twitter Web Medium Linkedin

    Visit original content creator repository https://github.com/wajahatkarim3/Imagine
  • aiof-auth

    Overview

    All in one finance authentication API

    build Build Status

    Documentation

    Overall documentation for the aiof Auth microservice

    Authentication

    Authentication can be done via the /auth/token endpoint. There are several ways an entity can authenticate:

    • email and password for User
    • api_key for User or Client
    • refresh_token for User or Client

    Example for User

    Request

    {
        "email": "test@test.com",
        "password": "test"
    }

    Response

    {
        "token_type": "Bearer",
        "expires_in": 900,
        "access_token": "jwt_access_token",
        "refresh_token": "refresh_token"
    }

    Example for Client

    Request

    {
        "api_key": "api_key_here"
    }

    Response

    {
        "token_type": "Bearer",
        "expires_in": 900,
        "access_token": "jwt_access_token",
        "refresh_token": "refresh_token"
    }

    Tests

    Unit tests are ran on each pipeline build. The pipelines are built with Azure DevOps from the azure-pipelines.yml file. Additionally, as part of the build pipeline, there are test result coverage reports done by Coverlet. Also, you can click on the build pipeline badge and check the unit test coverage for the latest run

    Libraries

    JWT

    OpenSSL

    The service currently uses RSA256 algorithm to sign the JWT’s. For this scenario we use OpenSSL to generate a private and public key. In order to do so follow the below steps:

    • Install openssl tools from Chocolatey by running the following command: choco install openssl.light (needs to only be done once)
    • Then restart PowerShell, if required
    • Navigate to a desired directory to create the .pem files
    • Run the command: openssl genrsa -out private-key.pem 2048
    • Run the command: openssl rsa -in private-key.pem -outform PEM -pubout -out public-key.pem

    A good article with detailed documentation can be found here. Also, a .pem to XML converter tool can be found here

    How to run it

    The best and recommended way to run it is using docker-compose. Additionally, below are some quick commands/tips to run it locally.

    From the root project directory

    dotnet run -p .\aiof.auth.core\

    Or change directories and run from the core .csproj

    cd .\aiof.auth.core\
    dotnet run

    Make API calls to

    http://localhost:5000
    

    Docker

    Pull the latest image from Docker Hub

    docker pull gkama/aiof-auth:latest

    Or build the local Dockerfile.local

    docker build -t aiof-api:latest -f Dockerfile.local .

    Run it

    docker run -it --rm -e ASPNETCORE_ENVIRONMENT='Development' -p 8001:80 gkama/aiof-auth:latest

    Make API calls to

    http://localhost:8001/
    

    (Optional) Clean up none images

    docker rmi $(docker images -f "dangling=true" -q)

    Docker compose

    From the root project directory

    docker-compose up
    Visit original content creator repository https://github.com/kamacharovs/aiof-auth
  • ZhihuDaily

    ZhihuDaily

    This is a project to learn how to build an app with different architecture. The tags in master shows the evolution of the project step-by-step, You will see this project becomes more clear than before after using the MVP.The branch shows the other implementation. As well, the project is continue refactoring.

    该项目是知乎日报的一个实现,主要用来学习各种项目架构.从最基本的代码(全部代码在Activity中)到MVP等,之后依然会持续更新. 使用tag来表明一步一步重构代码进化过程,从这些分支上可以看到使用MVP的代码是多么清晰. 项目代码会不断更新,不断进行重构。

    Version

    • v1.5

      make the componentization more beautiful to run. every component can run alone, and can be run with other components, also each components is separate from each other. 完善组件化。通过配置runalone.json使各个组件能单独运行;各个组件能选取依赖项;各个组件互相隔离;

    • v1.4

      make it componentization, better than before. But there is still some problem with component. The component cannot compile other components,it must be run as a single application, which means the project must run as all in application or an application with other modules. 将项目初步进行组件化。 这种结构下的组件化不能做到组件依赖其他组件运行。因为当前项目运行的状态要么是全是application,或者是一个application和其他module.

    • v1.3

      review with RxJava, based on the MVP,also with Retrofit 在MVP基础上使用RxJava重构,同时网络框架替换为Retrofit.

      • 添加Presenter生命周期方法,attachView()和 detachView()方法对 Subscription 解绑.
      • 此中不把Activity当做Controller,因为这样做限制太大,直接在Fragment中进行创建和attachView
    • v1.2

      review with mvp,making the View and Logic separating from each other.It is so great,and looks more elegant. 使用MVP重构,List页面参考Google samples的三层架构,Detail页面没有把remote和locale分开,你可以看到这两者的区别.

    • v1.1

      pull all codes out from activity into fragment 将部分代码抽离到Fragment中,为下一步打基础

    • v1.0

      version 1.0,all codes are in the Activity and with no fragments, the basic code for all variants. 全部代码在Activity中,作为重构的基础

    Branches

    • the master has a lot of tags, and the first version code is on it.
    • the branch_mvp_variant is a variant of MVP,which use Fragment/Activity as Presenter. In this way, you can do it with no interfaces, using Generic to decoupled(little hard to understand), and I put clickListeners in Presenters, so it looks more clearly. (This branch does not merge into master. I prefer the normal one.)
    • the branch_rxcache replace GreenDao with RxCache to save data

    中文版:

    • master分支上的tag表示每次重构后的完整代码
    • branch_mvp_variant分支是 MVP变种 分支,使用Fragment作为Presenter,我把点击事件当做逻辑放在Presenter中,代码简化了不少
    • the branch_rxcache 替换了GreenDao,使用RxCache来做缓存

    ScreenShot

    ZhihuDaily

    TODO

    • 17/10/26 使用GreenDao造成了多个实体类,如在项目中GreenDao生成的SavedStory一系列,和Story重复,而此时又没有使用Clean架构来使用该bean,造成重复和难以理解。 所以这也算GreenDao的一个弊端吧。 将会使用liteOrm或其他一些数据库来解决该问题。

    • 17/11/1 在v1.4版本基础上,需要再次进行组件化,使用gradle插件将组件完全分离。 模仿DDComponentForAndroid

    ThanksTo

    知乎日报API
    PureZhihuD

    文章总结

    Android 项目框架 使用MVP开发
    Android 网络框架 Retrofit2.0介绍、使用和封装
    Android 项目框架 使用RxJava开发
    Android 依赖注入框架 Dagger2使用

    Download

    fir.im downLoad

    Visit original content creator repository https://github.com/baiiu/ZhihuDaily
  • Uncanny Toolkit for LearnDash

    Uncanny Toolkit for LearnDash

    Contributors: uncannyowl
    Tags: LearnDash, eLearning, LMS, education, learning, courseware
    Requires at least: 5.4
    Tested up to: 6.7.1
    Requires PHP: 7.4
    Stable tag: 3.7.0.3
    License: This plugin is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. Uncanny Toolkit for LearnDash is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Uncanny Toolkit for LearnDash. If not, see https://www.gnu.org/licenses/gpl-3.0.html.
    License URI: https://www.gnu.org/licenses/gpl-3.0.html

    Extend LearnDash with a variety of useful modules that make it even easier to build great learner experiences with LearnDash.

    Description

    Important: This plugin requires PHP 7.4 or higher and LearnDash 4.2 or higher.

    The Uncanny Toolkit for LearnDash adds 16 modules that every elearning site needs, including a login form, login redirect, resume capabilities and more. Trusted to power over 30,000+ LearnDash sites, it’s the easiest way to improve the learning experience for your students. Translation ready and multisite capable!

    https://www.youtube.com/watch?v=o0MWoyR5Sos

    The Uncanny Toolkit for LearnDash adds the following features to your LearnDash site:

    • Disable Emails: While this module is active, WordPress and any plugins using native WordPress email functions will be prevented from sending email. Use this on development and staging sites to block accidental customer emails.
    • Front End Login: Add full-featured login forms with reCaptcha, password reset, and user validation support to front end pages.
    • Hide Admin Bar: Hide the Admin Bar at the top of WordPress pages based on user role.
    • LearnDash Breadcrumbs: Easily add breadcrumb links that work with courses, lessons, topics and quizzes using a shortcode or template change.
    • LearnDash Certificate Widget: Display all LearnDash certificates earned by a user in a widget.
    • LearnDash Groups in User Profiles: Display a user’s LearnDash Group memberships in the user profile.
    • LearnDash Resume Button: Inserts a button that allows learners to return to the course, lesson or topic that they last visited.
    • Log In/Log Out Links: Add Log In and Log Out links to site menus, or to any page or widget with a shortcode.
    • Login/Logout Redirects: Redirect learners to a specific URL after signing in or out of the site.
    • Menu Item Visibility: Toggle the visibility of menu items based on whether or not users are signed in to the site.
    • Not Enrolled Redirect: Redirect all non-admin roles to a specific URL if they are not enrolled in the course. This is useful for directing prospective customers to a course sales page.
    • Quiz completion advances to next step: Automatically advance to the next course step when a user clicks “Click here to continue” on quiz results page inside a lesson or topic.
    • Show LearnDash Certificates: Display a list of LearnDash certificates (course, quiz and group) earned by the user, with the most recent at the top.
    • Show or Hide Content: Conditionally shows content to either logged in or logged out users. Great for Open course types or protecting content on a course page.
    • Topics Autocomplete Lessons (Legacy): Automatically marks lessons as completed when all topics and quizzes for that lesson are marked complete.
    • User Switching: Easily and securely switch between users. Great for testing your site and troubleshooting user issues.

    We welcome contributions to the Uncanny Toolkit! The plugin is managed in a GitHub Repository.

    Ready to take your LearnDash site even further?

    The Pro version of the Uncanny Toolkit adds a continuously expanding list of powerful features (currently 35) to the Toolkit. These include:

    • Autocomplete Lessons & Topics: Automatically mark all lessons and topics as completed on user visit and remove Mark Complete buttons. Global settings can be overridden for individual lessons and topics.
    • Autocomplete Lessons & Topics on Fluent Forms Submission: Automatically mark LearnDash lessons and topics as complete when the user submits a Fluent form.
    • Autocomplete Lessons & Topics on Formidable Forms Submission: Automatically mark LearnDash lessons and topics as complete when the user submits a Formidable form.
    • Autocomplete Lessons & Topics on Gravity Form Submission: Automatically mark LearnDash lessons and topics as completed when the user submits a Gravity form.
    • Autocomplete Lessons & Topics on Quiz Results Page: Automatically mark LearnDash lessons and topics as completed when the user reaches the quiz results page with a passing mark (so users that forget to click “Click here to continue” don’t get stuck in a course).
    • Autocomplete Lessons & Topics on WPForms Submission: Automatically mark LearnDash lessons and topics as complete when the user submits a WPForms form.
    • Autocomplete Lessons & Topics When Quiz Is Graded : Automatically mark LearnDash lessons and topics as completed when the associated quiz is manually graded.
    • Certificate Preview: Get a preview of your LearnDash certificate without leaving the editor.
    • Course Dashboard: Display a list of enrolled courses to students in a variety of ways. This tool also makes it easy to access individual lessons, topics, quizzes, quiz results and certificates for students.
    • Days Until Course Expiry: Display the number of days until the learner’s access expires for the current course. This is a useful shortcode to include on course pages.
    • Download Certificates In Bulk: Download course, quiz and group certificates in bulk. Available to admins and Group Leaders.
    • Drip Lessons by LearnDash Group: Unlock access to LearnDash lessons by setting availability dates for LearnDash Groups rather than for all enrolled users.
    • Drip Topics by Group: Unlock access to LearnDash topics by setting dates for LearnDash Groups rather than for all enrolled users.
    • Duplicate Pages & Posts: Easily clone pages, posts, LearnDash courses, lessons, topics, quizzes and more.
    • Email Course Certificates: Sends a copy of certificate earned from course completions and optionally save certificates on the server.
    • Email Group Certificates: Sends a copy of certificate earned from group completions and save certificates on the server.
    • Email Quiz Certificates: Sends a copy of certificates earned from quiz completions and save certificates on the server.
    • Enhanced Course Grid: Add a highly customizable grid of LearnDash courses to the front end, learner dashboard or anywhere you want. This is a great tool for sites with a large number of courses.
    • Enhanced LearnDash CSV Reports: Add additional columns to the LearnDash Course CSV report, including custom user and course meta records.
    • Enhanced Lesson/Topic Grid: Add a highly customizable grid of LearnDash lessons/topics to the front end, learner dashboard or anywhere you want.
    • Group Expiration: Set expiration dates for LearnDash groups so that course enrolment for the group is removed on the specified day. Reminder emails can be sent to users advising them of group expiration.
    • Group Forums with bbPress: Create group-specific discussion forums with bbPress. Only group members will have access to group-specific forums. Includes a handy widget.
    • Group Login Redirect: Adds a group-specific login redirect setting to LearnDash groups. Automatically redirect group members to a specific page on login.
    • Group Logo/List: Add group-specific logos to any page, including registration pages. A shortcode to list a user’s LearnDash Groups is also available.
    • Group Registration: Allow users to add themselves directly to LearnDash groups on registration by assigning each group a unique registration URL. Users can also change or add groups themselves by visiting group URLs.
    • Import Users: Create or update users and assign them to courses and LearnDash groups from a CSV file. Supports custom user fields.
    • Improved Group Leader Interface (deprecated): This legacy module helped LearnDash 2.x and 3.x sites hide unrelated menu entries from /wp-admin/ and enroll Group Leaders in group courses.
    • Lazy Loading Course Navigation: Shortcode that loads a course navigation tree via AJAX. Useful on sites with many lessons and topics where the native LearnDash Course Navigation widget is extending page load time.
    • Learner Transcript: Add printable transcripts to the front end for your learners. This is a great way for learners to have a record of all course progress and overall standing.
    • Lesson/Topic/Quiz Table Colors (Legacy): Change the background and header text color of LearnDash tables. This module modifies the course, lesson, topic, quiz, and Pro Dashboard tables. (Legacy LearnDash theme only).
    • Reset Progress Button: Inserts a button that allows learners to reset all activity for a course, allowing them to retake it.
    • Restrict Page Access: Restrict access to any page by logged in/out status, course enrollment, group membership, or role. Display a message or automatically redirect users that are denied access.
    • Simple Course Timer: Tracks time spent in all LearnDash courses, lessons, and topics, and detects when a user is idle. Course completion time and total course time are both added to LearnDash reports. Enables blocking access to quizzes until minimum time spent in a course.
    • Single Page Courses: Create microlearning courses that have no associated lessons; this moves the Mark Complete button up to the course level.

    Uncanny Automator

    If you like the Uncanny Toolkit, you’ll love Uncanny Automator! Our free no-code automation plugin connects LearnDash to over 150 plugins and apps plus other WordPress sites. Build personalized learning paths and automated instructional workflows with an easy-to-use interface in minutes. Trusted by over 40,000 WordPress sites to build powerful learning workflows and automations.

    More LearnDash Plugins!

    Uncanny Owl offers a full suite of plugins that extend the LearnDash platform and make it easier to build and manage a great learning experience. Here are a few:

    • Tin Canny Reporting for LearnDash: Add support for your SCORM and Tin Can modules inside WordPress as well as powerful drill-down LearnDash course and quiz reports.
    • Uncanny Groups for LearnDash: Make it easy for your customers and member organizations to manage their learners in the front end, track and manage their progress, and buy buy groups with B2B sales tools.
    • Uncanny Codes: An easier way to get your learners into LearnDash groups, courses, and more. Generate codes that can be used by learners to self-enrol into LearnDash groups and courses when they register, make a purchase, or are simply signed in.
    • Uncanny Continuing Education Credits: Assign credits to LearnDash courses and archive LearnDash course and quiz data to offer recurring training.

    Follow Uncanny Owl for updates about our latest LearnDash enhancements on Twitter, Facebook and YouTube.

    Installation

    1. Ensure that your installation of WordPress is using PHP 7.4 or higher and LearnDash 4.2 or higher.
    2. Upload the contents of the plugin zip file to the /wp-content/plugins/ directory.
    3. Activate the plugin through the Plugins menu in WordPress.

    Screenshots

    1. 15+ powerful modules

    15+ powerful modules

    2. Fully-featured Front End Login module with modal support

    Fully-featured Front End Login module with modal support

    3. LearnDash Resume Button module – works at a global or course level

    LearnDash Resume Button module - works at a global or course level

    Changelog

    3.7.0.2 [2025-01-29]

    Fixed:

    • PHP 8.x+ notices #393
    • Log In/Log Out Links – Security fixes #405

    Internal:

    Quiz completion advances to next step – Replaced Deprecated WP filter ‘learndash_completion_redirect’  #395 WP-Admin – Removed display – block !important from review request notices #342

    3.7.0.1 [2024-07-11]

    Internal:

    • Hide notifications from other plugins on Toolkit pages. #388
    • WP action hooks to facilitate licensing updates in Toolkit Pro v4.3 #389

    3.7 [2024-06-20]

    New Feature:

    • Front End Login – New CloudFlare Turnstile support #373

    Updated:

    • Front End Login – Added new filter uo_frontend_login_modal_page_lockout_detection to override detection #375
    • Topics Autocomplete Lessons – Renamed to “Topics Autocomplete Lessons (Legacy)” #377

    Under the hood:

    • Upgrade to Pro – Change Menu Link Color #380
    • Upgrade to Pro menu item #381

    3.6.4.8 [2024-01-02]

    Fixed:

    • Certificate Widget – Throws PHP Error when LearnDash is not active #369
    • WP2FA – 2.6 PHP Error issues #368

    3.6.4.7 [2023-11-23]

    Internal:

    • Removed featured plugin page modifications #365

    3.6.4.6 [2023-11-09]

    Fixed:

    • Blocks – Removed lodash dependency for WordPress v6.4+ #363

    3.6.4.5 [2023-10-16]

    Updated:

    • User Switching – Module updated to the latest version #350
    • Front End login – Hide “Description” output from Forgot Password Form when visitors enter invalid email or username #345

    Fixed:

    • WP2FA – v2.4+ support added and fixed PHP errors #352
    • Install Automator – Recipe description duplicated #306

    3.6.4.4 [2023-05-31]

    Updated:

    • Allow review requests to be dismissed even if REST API blocked #334
    • Load static assets from inside the plugin #335
    • Suppress admin notices on Automation page #308

    Fixed:

    • Install Automator – PHP Error in a specific situation #337
    • Front End Login – PHP warning for redirect_to param #328
    • Vulnerability – Update redirect_url param for review-banner-visibility endpoint to use wp_safe_redirect #331
    • Vulnerability – Fix permissions_callback for review-banner-visibility endpoint #330

    3.6.4.3 [2023-03-06]

    Updated:

    • Log In/Log Out Links – Attributes log_in_text and log_out_text added to change the text of the anchor #301
    • Front End Login & WP2FA – Added support for v2.4+ #206

    Fixed:

    • Front End Login & WP2FA – PHP Error with v2.4+ #206
    • Front End Login – Persist action lostpassword redirecting from wp-login.php #317
    • Log In/Log Out Links – Fixed PHP Notice #320
    • Breadcrumbs – Topic omitted from breadcrumb trail when quiz is embedded at topic level #294
    • PHP Error on LearnDash’s third party Add-Ons page in a specific situation #313

    Internal:

    • Notices showing on Get Automator page #295
    • Renamed “Get Automator” to “Automation” #307
    • Automation – Update strings for improved translation support #282

    3.6.4.2 [2023-01-26]

    Fixed:

    • CVE-2023-23714 security fix in 1-click installer in a specific situation #309

    3.6.4.1 [2022-11-23]

    Fixed:

    • Resume button – Removed the “Completed course” check added in v3.6.4 #292

    Developers:

    • Resume button – Added a filter to optionally not show the button if the course is completed
      • apply_filters( 'uo_resume_button_do_not_show_for_completed_course', false, $ld_course_id )

    3.6.4 [2022-11-22]

    Added:

    • Show Certificates & Certificate Widget – Add support for Group Certificates #263
    • Resume module – New attribute show_name to display the name of the last LearnDash step in the Enhanced Course Grid module #256

    Updated:

    • Not enrolled Redirect URL – Prevent redirect caching – Utilize existing filter uncanny_toolkit_not_enrolled_redirect_nocache #250
    • 2FA – Show loading animation and disable button on submission #234
    • Front End Login – Add “Verify” and “Unverify” to Bulk action menu #194
    • Resume Button – Do not show resume button if the course is completed #261

    Fixed:

    • Front-end login + WPML = get_posts not populating Login page dropdown in module settings #266
    • CSRF Vulnerability #259
    • Misc PHP warnings and validation Fixes #248
    • Frontend Login – Block redirect to external website #243
    • Automator notification – Buttons could not be clicked #239
    • Front End Login – Redirect conflicts between login page and login modal #230

    Internal:

    • Add support for number field in Settings fields #286
    • Try Automator – Branding updates #270
    • Show Automator plugin on Add New Plugin’s page #268
    • Add in-plugin notifications #265
    • Pro Upsell Modules – Add “Single Page Courses” #254
    • When activating/deactivating a module, the semi-transparent overlay doesn’t match the size of the module outline #184
    • Updated Gutenberg dependencies #288

    3.6.3 [2022-06-16]

    Added:

    • Show Certificates – New shortcode attributes to show/hide courses/quizzes certificate links #207
    • Front End Login – Password visibility toggle #159
    • Not Enrolled Redirect – Filter uncanny_toolkit_not_enrolled_redirect_nocache added to prevent redirect caching with nocache_headers() #209

    Updated:

    • Improved translation support #198
    • Improved PHP 8.1+ compatibility #173

    Fixed:

    • Front End Login – WP2FA settings link broken #217
    • Front End Login – Typo in 2FA error message #190
    • Front End Login – WP2FA – Front-end ajax erroneously invoking 2FA when it’s not enabled #215
    • Show Certificates – Quiz certificate link issue missing time argument fixed #200

    Internal:

    • Update is_pro_active function #222
    • npm – Remove sass-svg & sassdash dependencies #213

    3.6.2 [2022-02-09]

    Added:

    • Login/Logout Redirects – Added filters to dynamically enable/disable redirect #179
    • Certificates List Shortcode – Added filters to manipulate certificate title #171
    • Resume Button – Added filter uo_resume_button_permalink #164

    Fixed:

    • Front End Login – reCaptcha causing issue with reset password link sent from wp-admin #177
    • Front End Login – “Remember me” checkbox now works with WP 2FA integration enabled #166

    3.6.1 [2021-12-16]

    Added:

    • Front End Login – Support for 2FA plugin v2.0+ #155
    • Front End Login – uo_login shortcode now respects the “Disable Remember Me Checkbox” setting #156
    • PHP 8.x Compatibility #154

    Fixed:

    • Quiz completion advances to next step now forwards the user correctly in LearnDash 5.6.0.1 #152

    3.6 [2021-11-17]

    Updated:

    • Updated User Switching code to version 1.5.8 of User Switching plugin by John Blackbourn #141
    • Front End Login – Added support for concurrent login feature in LearnDash Integrity plugin #138
    • Front End Login – Added detection of reCaptcha setting conflict with LearnDash Integrity plugin #137
    • Changes/fixes to ticket submission data when used with Toolkit Pro #135
    • Updated uncanny_toolkit_template_path for easier custom template overrides. Note: any sites using this function should update their code #133

    Fixed:

    • Front End Login – Compatibility issue with WP 2FA on some sites #130
    • E_ERROR – wp_remote_get() – admin-showcase.php #128
    • Front End Login – Fixed compatibility issue with redirect filter in MemberPress #111
    • Learn More buttons exceed box bounds when Toolkit Pro or LearnDash not active #110

    3.5.2 [2021-08-18]

    Updated:

    • Updated User switching codebase from John Blackbourn’s User Switching plugin version 1.5.7 #97
    • Front End Login – Added custom events for JavaScript developers #89
    • No longer using block_categories filter as it was deprecated in WordPress 5.8

    Fixed:

    • Conflict with select2 library in other plugins prevented some toolkit modules from being enabled on some sites #99
    • Front End Login – No longer redirects to /Array when WordPress periodically attempts to verify the site email address #95
    • Front End Login – Unescaped redirect_to parameter causes 403 error on some hosts #94
    • Quiz Completion Advances to Next Step – Redirect erroneously uses $step instead of $step_id resulting in an incorrect redirect in some situations #91

    3.5.1 [2021-06-09]

    Fixed:

    • Filter on modules page now returns relevant results
    • Quiz Completion Advances to Next Step – No longer advances to next lesson/topic if there are still incomplete quizzes in the lesson/topic
    • Login Redirect – No longer redirects admins on login

    3.5 [2021-05-03]

    Added:

    • WP 2FA – Two-factor Authentication plugin integration for Front End Login module #48
    • One-click Uncanny Automator install #47

    Fixed:

    • Notice: Undefined index: uc_exp_email_body in Group Expiration Module #31
    • Notice: Undefined index: uc_exp_email_title in Group Expiration Module #30
    • LearnDash 3.4.x compatibility for Topics AutoComplete Lessons Module #21
    • Topics complete lessons contains LD 3.4.0 incompatibility #46
    • Deprecated notice when saving any module settings. #41
    • Unable to open Settings in the Modules #34
    • Deprecated: add_option was called with a deprecated argument in Config #29
    • Notice: Trying to get property ‘success’ of non-object #28
    • Notice: Undefined index action in Frontend Login Plus #27
    • PHPMailer file path #16
    • Incompatibility with LearnDash 3.4.x in Topics Autocomplete Lessons module #14
    • Topics Autocomplete Lessons: Now only redirects to course level when completing the last topic in the last lesson of a course #4
    • Front End Login: Custom reCAPTCHA text set in settings panel now overrides default reCAPTCHA text #3

    Updated:

    • “Upgrade to Pro” to Plugins page #24
    • Code quality #18 #33

    3.4.3 [2021-03-17]

    Fixed:

    • Front End Login: Custom reCAPTCHA text set in settings panel now overrides default reCAPTCHA text
    • Topics Autocomplete Lessons: Now only redirects to course level when completing the last topic in the last lesson of a course

    3.4.2 [2021-02-11]

    Added:

    • New parameters to settings array to support future functionality

    Updated:

    • Quiz completion advances to next step: “Click here to continue” button on last quiz of a course will now redirect to course page instead of lesson/topic
    • Not Enrolled Redirect: Now detects if users are enrolled via group access

    Fixed:

    • User Switching: Could not switch users on some site if Front End Login is enabled
    • Deprecated: Function get_magic_quotes_gpc()
    • Notices on module page when LearnDash is not active
    • Disable Emails: PHP notice: Constant DISABLE_EMAILS_OPTIONS already defined
    • Front End Login: Users that become unverified and then are reverified will now receive a notification email

    3.4.1 [2021-01-04]

    Added:

    • Front End Login – Option to ignore login redirects when using the modal login
    • Front End Login – Option to customize the user verification email
    • Front End Login – Option to disable the user verification email
    • Front End Login – Filter uo_frontend_login_args for developers to modify the login form arguments
    • Front End Login – Show custom error messages in the Forgot password form
    • Front End Login – Actions to support user verification trigger in Uncanny Automator
    • Added do_action( 'toolkit_settings_save_validation', $class, $options ) to let users manipulate module settings

    Updated:

    • Front End Login – Redirects from /wp-login.php to the assigned login page now preserve the redirect_to parameter in the URL

    Fixed:

    • Topics Autocomplete Lessons – Activity tables now updated with proper completion data for the last topic in a lesson
    • Front End Login – Unverified users are no longer able to log in
    • Fixed – Log in / log out redirect – Conflict with frontend login module

    3.4 [2020-11-05]

    • New Module: Quiz completion advances to next step – Automatically advance to the next step when user clicks “Click here to continue” on final quiz page of a lesson/topic
    • Updated: Front End Login – Users created before the module was activated or while the module is not activated are set to “Auto verified” instead of “Not verified”
    • Updated: Front End Login – Update to allow basic auth plugin to work with wp-json routes. Contributed by asppsa

    3.3.4 [2020-09-30]

    • Updated: Menu Item Visibility – Updated nav menu walker function for improved compatibility with newer versions of WordPress
    • Updated: Added permission_callback to all Rest API calls for WordPress v5.5 compatibility
    • Fixed: Front End Login – Redirect attribute now redirects correctly when logging in using modal login form
    • Fixed: Front End Login – PHP notice: Trying to get property ‘ID’ of non-object on some non-post pages

    3.3.3 [2020-08-05]

    • Updated: Front End Login – Replaced file_get_contents with wp_remote_post to improve compatibility with some hosts
    • Fixed: Front End Login – Javascript notice – Uncaught TypeError: Cannot read property ‘currentPageIsLoginPage’ of undefined
    • Fixed: Topics Autocomplete Lessons – When someone other than the user (e.g. an Admin or Group Leader) marks the last topic in a lesson complete for the user the associated lesson is now automatically marked complete

    3.3.2 [2020-07-27]

    • Updated: Front End Login – Improved compatibility of modal login with server-side caching
    • Updated: Front End Login – Added redirect attribute to uo_login_ui shortcode
    • Updated: Front End Login – Modal Login menu link now reloads the page if clicked while the user is on the login page specified in settings
    • Updated: Resume Button – Resume data now deleted when course progress is cleared
    • Updated: Resume Button – No longer appears on LearnDash post types (Universal resume button only; course-specific resume button will still appear on course pages)
    • Fixed: Not Enrolled Redirect – No longer redirects on the course archive page

    3.3.1 [2020-06-25]

    • Updated: Menu Item Visibility – Updated to version 1.10.1 by Kathy Darling
    • Fixed: Resume Button – Input type changed back to “submit” from “button”
    • Fixed: Front End Login – Login form showing up twice on login pages created with the Gutenberg editor
    • Fixed: PHP notice $modal_link undefined on modules page

    3.3 [2020-06-16]

    • Added: Resume Button – Added shortcode to output a properly formatted link: [uo_learndash_resume_link] or URL [uo_learndash_resume_link url_only=”yes”]
    • Added: “Help” button on module settings dialogs
    • Added: Front End Login – New pop-up modal login form
    • Added: Front End Login – AJAX support for common actions (Boxed with shadow template only)
    • Updated: Front End Login – Redirect to login page changed from 302 to 301
    • Updated: Front End Login – Improved compatibility with Login/Logout Redirects module
    • Updated: Front End Login – reCAPTCHA now rendered explicitly to support more than one reCAPTCHA on the same page
    • Updated: Front End Login – Removed jQuery dependency from front end assets
    • Updated: Changed plugin name from “Uncanny LearnDash Toolkit” to “Uncanny Toolkit for LearnDash”
    • Updated: Resume Button – Improved translation support
    • Updated: User Switching updated to version 1.5.4 by John Blackbourn
    • Updated: Improved compatibility with WordPress versions < 5.1
    • Updated: Code cleanup
    • Fixed: Front End Login – Workaround to enable users to log in if the login page is in the trash
    • Fixed: PHP Notice: register_rest_route was called incorrectly in WordPress 5.4.2 and newer
    • Fixed: Blocks now show up in Gutenberg editor

    3.2.2 [2020-03-19]

    • Updated: Resume button – “RESUME” Button text now localized
    • Fixed: Uncanny Toolkit Pro Gutenberg blocks were unavailable unless at least one module from the Uncanny Toolkit (free version) that contained a Gutenberg block was active
    • Fixed: Front End Login – Admins being redirected to blank wp-login.php page on login on some sites
    • Fixed: Topics Autocomplete Lessons – After completing all topics, lesson no longer autocompleted if it contains an incomplete assignment

    3.2.1 [2020-02-27]

    • Added: Front End Login – Require strong password option for password reset form (minimum 8 characters including 1 uppercase letter, 1 lowercase letter and 1 number)
    • Updated: Not Enrolled Redirect – Redirect field now accepts shortcodes
    • Updated: Tweaked CSS style for select2 dropdowns in /wp-admin
    • Updated: Front End Login – redirect_to parameter in URL now takes precedence over redirect shortcode attribute and Login/Logout redirects module
    • Fixed: Front End Login – PHP fatal error on some sites when initiating a password reset before LearnDash settings are initialized

    3.2 [2020-01-02]

    • Added: New Module: Disable Emails – When active, disables all emails sent via wp_mail function. Fork of the excellent Disable Emails plugin by webaware
    • Added: Certificate Widget/Show Certificates shortcode – Setting to output Certificate Name instead of Course/Quiz name
    • Added: Certificate Widget – Sort order options
    • Added: Front End Login – redirect_to parameter now supported
    • Updated: Breadcrumbs – Dashboard link now inserted into native LearnDash breadcrumbs on 3.0 template
    • Updated: Front End Login – Added priority of 100 to wp_mail_content_type filter to avoid conflicts with some email plugins such as WP Better Emails
    • Updated: User Switching – Link now floats right when Focus Mode is enabled for improved accessibility
    • Fixed: Front End Login – Fatal errors when resetting password after registration on some sites
    • Fixed: Front End Login – Invalid password reset link message now displayed before password reset form is displayed
    • Fixed: Front End Login – Invalid login/password messages not displayed when entering incorrect credentials on some sites
    • Fixed: Front End Login – Shortcode not detected when placed inside a Gutenberg layout block
    • Fixed: Duplicate Pages and Posts module missing in list Pro modules
    • Fixed: Redirect if not enrolled – PHP notice: Undefined property
    • Fixed: Updated: Some strings incorrectly using uncanny-toolkit-pro textdomain

    3.1.4

    • Added: Front End Login – Added redirect parameter to uo_login shortcode to allow form-specific redirects
    • Updated: Front End Login – Failed login redirect now ignored for REST and AJAX requests
    • Updated: Front End Login – Eliminated 500 error on password reset when other plugins alter email filters
    • Updated: Front End Login – Improved translation support for strings related to account verification
    • Updated: Certificate Widget/Show Certificates – Now displays the course/quiz name instead of the certificate name
    • Fixed: Send Course/Quiz Certificate by Email – Email content loses line breaks on reload
    • Fixed: Clicking the label of “Verify this user and allow them to log in” checkbox no longer toggles the “Rich Editing” checkbox

    3.1.3

    • Updated: Restored copyright and GPL license info to User Switching module (thanks @johnbillion!)

    3.1.2

    • Updated: Removed PHP_OS_FAMILY constant to avoid false-positives in PHP compatibility checks
    • Fixed: Not Enrolled Redirect – Course settings being reset on save
    • Fixed: Front End Login – Headers already sent error on reset password

    3.1.1

    • Added: Course Dashboard (Pro): Logic to select dashboard 3.0 theme when module is activated or LearnDash 3.0 theme is active
    • Updated: Improved radio button behavior in module settings dialogs
    • Fixed: Front End Login – Issue that caused “Headers already sent” warning on some sites
    • Fixed: Hide Admin Bar – Admin bar no longer appears in Elementor editing view

    3.1

    • Added: Automatic template overrides! Override any file in the /src/templates folder by copying it into /uncanny-toolkit/ in your child theme
    • Added: Front End Login – Option to disable “Remember Me” checkbox
    • Updated: Front End Login – Improved compatibility with other login plugins when reCaptcha is enabled
    • Updated: Front End Login: Default template no longer displays email field after the reset password form is submitted
    • Updated: Log In/Log Out Links – Improved translation support
    • Updated: Hide Admin Bar – The admin bar is now always visible to all users with the “manage_options” capability
    • Updated: Resume Button – Removed next post prefetch meta tag on courses, lessons, topics and quizzes to prevent Firefox users from being sent to the wrong lesson/topic when resuming
    • Fixed: Required PHP version message now correctly states PHP 5.6 or higher is required

    3.0.2

    • Updated: Improved compatibility with Internet Explorer 11
    • Fixed: Front End Login: Forgot password email body field was duplicating content when settings saved on some sites
    • Fixed: Login/Logout Redirect: Resolved conflict with Group Login Redirect module (Toolkit Pro)

    3.0.1

    • Added: Front End Login – Added recaptcha support to [uo_login] shortcode
    • Added: Plugin will automatically deactivate and show notice if PHP < 5.6 is detected
    • Updated: Improved scroll handling in module settings dialogs
    • Fixed: Front End Login – Unrecognized URL parameters no longer cause %placholder% to be rendered on the login form
    • Fixed: Typo in %placholder%
    • Fixed: Module settings dialogs with many options now render properly in Firefox
    • Fixed: Z-index issue on select2 elements in /wp-admin
    • Fixed: Missing dependency error: blocks.style.build.css

    3.0

    • Important: If you had overridden the Front End Login template file, you will need to update the template override by making a copy of the new file.
    • This release features a completely overhauled Front End Login module, including: * A new modern, clean design (selectable from module settings) * Many additional options for customizing text, including the password reset email * Better templating system, making it easier to make design changes without modifying the core plugin * Recaptcha support * New optional, customizable Register link * The link in the password reset email now goes to a front end page instead of the WordPress password reset page
    • Added: Gutenberg blocks for breadcrumbs and resume button modules
    • Added: WAI ARIA support in breadcrumbs module
    • Added: Tab structure for toolkit pages
    • Added: Help page for easier access to plugin documentation
    • Added: Log In/Log Out Redirects – Default priority set to 999, added field to manually set priority
    • Updated: Module names changed for consistency: * LearnDash Certificate Widget > Certificate Widget * LearnDash Groups in User Profiles > Groups in User Profiles * LearnDash Resume Button > Resume Button * Show LearnDash Certificates > Show Certificates
    • Updated: Hide Admin Bar – Improved multisite support
    • Updated: Hide Admin Bar – Added priority 11 to filter for improved compatibility with some themes and plugins
    • Updated: Cleaner, modernized UI for modules page
    • Updated: Changed admin URLs for toolkit pages
    • Updated: User Switching – Added position:relative to link to switch back to the admin user in the user switching module to improve theme compatibility
    • Updated: Reorganized plugin .js and .css files
    • Updated: Learndash Groups in User Profiles – Now uses LearnDash API for querying groups

    2.5

    • Added: Course-specific Resume Button; can be placed on course pages
    • Added: Option to output Resume Button destination below resume button
    • Added: Option to include current page in LearnDash Breadcrumb trail
    • Updated: Improvements to the Reset Password functions of Front End Login module
    • Updated: Ignore AJAX requests on Logout Redirect
    • Updated: Removed 999 priority on Hide Admin Bar module to address incompatibility with Elementor builder
    • Fixed: Admins are no longer redirected to lessons when approving assignments with Topics Autocomplete Lessons module enabled
    • Fixed: Page doesn’t exist error in Resume Button function in rare circumstances
    • Fixed: Notice in Redirect If Not Enrolled Module
    • Fixed: Removed slashes sometimes appended to email body content in Email Course/Quiz Certificate modules

    2.4.2

    • Fixed: Certificate widget and shortcode now display LearnDash certificates
    • Fixed: Certificate widget now correctly renders Uncanny Continuing Education certificates

    2.4.1

    • Fixed: Resume Button: Fatal error on LearnDash versions < 2.5
    • Fixed: Not Enrolled Redirect: Undefined index notice

    2.4

    • Added: Additional string localizations
    • Added: List view for modules in Toolkit settings
    • Updated: Autocomplete Lessons and Topics: When enabled, a “Done” button is now added to last lesson in a course (returns user to course page)
    • Updated: Front End Login: Labels now positioned above login fields by default
    • Updated: LearnDash resume button: Improved compatibility with Shared Course Steps and Nested Permalinks enabled
    • Fixed: Breadcrumbs: Topic no longer appears twice in breadcrumbs on topic quizzes
    • Fixed: Certificate Widget: Notice no longer appears when no certificates have been earned

    2.3

    • Added: New Module – Not Enrolled Redirect – Redirect a user to a specified URL if they attempt to access a course in which they are not enrolled
    • Added: Front-End Login – Added label setting for login form (Username, Email, Username or Email, Login)
    • Updated: Front End Login – Cleaned up some error messaging in the user interface
    • Updated: Front End Login – Made some additional strings translatable
    • Updated: User Switching code to version 1.3 of User Switching plugin by John Blackbourn
    • Updated: Confirmation message when disabling a toolkit module now appears in green instead of red
    • Fixed: JavaScript error on the Toolkit settings page in some environments when debug is enabled.

    2.2

    • New Module: User Switching – enables admins to easily switch to any other user – Based on User Switching by John Blackbourn: https://wordpress.org/plugins/user-switching/
    • Added: Support for LearnDash 2.5
    • Updated: Hide Admin Bar action priority (now 999)
    • Updated: Improved multisite support

    2.1

    • Updated: Certificate widget now recognizes course certificates
    • Fixed: Course complete action was called repeatedly when Topics Autocomplete Lessons module was active

    2.0.6

    • Fixed: Single quotes are saved properly in toolkit module settings
    • Fixed: Front end login reset password function on Edge and Safari

    2.0.5

    • Fixed: WooCommerce/Third Party plugin notices popping up in Pro Toolkit Ad banner
    • Fixed: Modules not loading because DB updates were not saving slashes on some hosts
    • Fixed: Password reset when WordPress is installed in a subdirectory

    2.0.4

    • Fixed: Restored ‘Sample Tag’ module
    • Fixed: Removed invalid slashes when saving settings

    2.0.1

    • Fixed: Flush admin scripts/styles

    2.0

    • Added: Module filtering options in the Toolkit UI
    • Fixed: Minor issue in auto-completion logic when multiple quizzes are assigned to the topic/lesson
    • Fixed: Front End Login now accepts username or email if user approval is turned on
    • Fixed: Minor layout issue in WordPress menu editor when Menu Item Visibility module is enabled

    1.3.5

    • Added: Textarea as an option for module settings
    • Added: Priority 11 to menu item visibility filter; will now override common theme menu enhancements like megamenu

    1.3.4

    • Removed: Dynamic announcement banner to admin UI

    1.3.3

    • Added: Dynamic announcement banner to admin UI
    • Updated: Changed log in link shortcode [uo_login] to [uo_login_link]
    • Fixed: Log in link redirects to login empty

    1.3.2

    • Added uo_login_link shortcode to replace deprecated uo_login in Login/Logout Menu
    • Added WordPress 4.6 support
    • Improved design of module settings
    • Improved compatibility with Nav Menu Roles plugin
    • Fixed LearnDash Group User Profile module to only show group name if group ID is valid
    • Fixed multiple escape slash issue with custom module
    • Fixed auto completion of lessons if topics are complete but quiz is not
    • Reworded Front-End Login error label

    1.3.1

    • Blocked Pro reminders from appearing on page reloads after dismissal

    1.3.0

    • Added logout redirect setting
    • Added color pickers
    • Added links to Pro modules plugin
    • Added admin notification when user is manually approved
    • Added links to Knowledge Base articles for all modules
    • Fixed automatic approval of assignment when Topics Autocomplete Lessons module is on
    • Fixed widget certificate link
    • Enhanced security for mark lessons complete

    1.2.7

    • Fixed learndash_lesson_completed to allow hooks from BadgeOS and other plugins
    • Fixed Topics Auto Complete Lessons invalid argument for foreach() for non-logged in users
    • Fixed fix notice on 404 pages
    • Fixed do not setup resume button if last page has been deleted
    • Excluded admin users from manual verification script

    1.2.6

    • Allowed certificates with the same name
    • Fixed Uncanny Certificate Widget closing tag

    1.2.5

    • Fixed course completion date issue with Topics Autocomplete Lessons
    • Added support for alternate course labels (Thanks Eben Hale!)

    1.2.4

    • Added PHP/LearnDash/WP version checking
    • Fixed cookies for password reset and registration
    • Updated resume button to match theme button style
    • Fixed verified user email formatting

    1.2.3

    • Tested with WordPress 4.5
    • Fixed breadcrumbs function

    1.2.2

    • Fixed duplicate breadcrumbs on quiz pages

    1.2.1

    • Fixed missing file

    1.2

    • NEW FEATURE: LearnDash Breadcrumbs
    • Fixed course completion time in CSV output
    • Fixed translation text domain
    • Added sorting of features by name on admin settings page
    • Added bitbucket pull requests for developers
    • Fixed all shortcode now use _ rather than –
    • Dev Only Added simple user registration to Front End Login feature
    • Added translation support
    • Fixed course completion time in LearnDash CVS Reports

    1.1

    • NEW FEATURE: Log In/Log Out Links
    • Fixed redirect from wp registration page
    • Added registration link to uo_login_ui
    • Added setting to change Resume button text

    1.0.1

    • Open Certificate links in new window
    • Fixed blank settings page on older server configuration
    • Fixed auto loading on older server configuration
    • Fixed settings modal on small screens
    • OB Clean Buffer Before AJAX Response
    • Improved support for custom extensions
    • Set Addon Option default as Array()
    • Prevented login lockout if login page set incorrectly

    1.0

    • Public release

    Upgrade Notice

    Visit original content creator repository https://github.com/UncannyOwl/Uncanny-Toolkit-for-LearnDash