Version Description
11 November, 2019 =
Added: Maintenance Mode
Added: Frontend course edit link from Course Edit Page Admin bar LINK
Fixed: bug during add topic in course builder
Fixed: certificate download fatal error related microtime() in tutor-pro version
Download this release
Release Info
Developer | themeum |
Plugin | Tutor LMS – eLearning and online course solution |
Version | 1.4.6 |
Comparing to | |
See all releases |
Code changes from version 1.4.5 to 1.4.6
- assets/css/tutor-admin.css +45 -0
- assets/js/tutor-admin.js +50 -0
- assets/js/tutor.js +45 -0
- classes/Options.php +7 -0
- classes/Post_types.php +40 -39
- classes/Tools.php +34 -0
- classes/Utils.php +1 -1
- includes/tutor-general-functions.php +26 -0
- readme.txt +10 -2
- tutor.php +2 -2
- views/maintenance.php +71 -0
- views/pages/tools.php +1 -1
assets/css/tutor-admin.css
CHANGED
@@ -3230,4 +3230,49 @@ table.tutor-table p{
|
|
3230 |
|
3231 |
/**
|
3232 |
* END Tutor Table
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3233 |
*/
|
3230 |
|
3231 |
/**
|
3232 |
* END Tutor Table
|
3233 |
+
*/
|
3234 |
+
|
3235 |
+
/**
|
3236 |
+
Tools Nav
|
3237 |
+
*/
|
3238 |
+
.tutor-nav-tab-wrapper{
|
3239 |
+
margin-bottom: 10px;
|
3240 |
+
}
|
3241 |
+
.nav-tab-item {
|
3242 |
+
float: left;
|
3243 |
+
border: 1px solid #ccc;
|
3244 |
+
border-bottom: none;
|
3245 |
+
margin-left: .5em;
|
3246 |
+
padding: 10px 14px;
|
3247 |
+
font-size: 14px;
|
3248 |
+
line-height: 1.33;
|
3249 |
+
font-weight: 600;
|
3250 |
+
background: #e5e5e5;
|
3251 |
+
color: #555;
|
3252 |
+
text-decoration: none;
|
3253 |
+
white-space: nowrap
|
3254 |
+
}
|
3255 |
+
.nav-tab-item:first-child{
|
3256 |
+
margin-left: 0;
|
3257 |
+
}
|
3258 |
+
.nav-tab-item:focus,.nav-tab-item:hover {
|
3259 |
+
background-color: #fff;
|
3260 |
+
color: #444
|
3261 |
+
}
|
3262 |
+
.nav-tab-item-active,.nav-tab-item:focus:active {
|
3263 |
+
box-shadow: none
|
3264 |
+
}
|
3265 |
+
.nav-tab-item-active {
|
3266 |
+
margin-bottom: -1px;
|
3267 |
+
color: #444
|
3268 |
+
}
|
3269 |
+
.nav-tab-item-active,.nav-tab-item-active:focus,.nav-tab-item-active:focus:active,.nav-tab-item-active:hover {
|
3270 |
+
border-bottom: 1px solid #f1f1f1;
|
3271 |
+
background: #f1f1f1;
|
3272 |
+
color: #000
|
3273 |
+
}
|
3274 |
+
|
3275 |
+
|
3276 |
+
/**
|
3277 |
+
* END Tools
|
3278 |
*/
|
assets/js/tutor-admin.js
CHANGED
@@ -622,4 +622,54 @@ jQuery(document).ready(function($){
|
|
622 |
}
|
623 |
});
|
624 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
625 |
});
|
622 |
}
|
623 |
});
|
624 |
|
625 |
+
/**
|
626 |
+
* LP Migration
|
627 |
+
* Since v.1.4.6
|
628 |
+
*/
|
629 |
+
|
630 |
+
|
631 |
+
$(document).on( 'click', '#migrate_lp_courses_btn', function( e ){
|
632 |
+
e.preventDefault();
|
633 |
+
|
634 |
+
var $that = $(this);
|
635 |
+
|
636 |
+
$.ajax({
|
637 |
+
url : ajaxurl,
|
638 |
+
type : 'POST',
|
639 |
+
data : {action : 'lp_migrate_course_to_tutor' },
|
640 |
+
beforeSend: function () {
|
641 |
+
$that.addClass('tutor-updating-message');
|
642 |
+
get_live_progress_course_migrating_info();
|
643 |
+
},
|
644 |
+
success: function (data) {
|
645 |
+
if (data.success) {
|
646 |
+
window.location.reload();
|
647 |
+
}
|
648 |
+
},
|
649 |
+
complete: function () {
|
650 |
+
$that.removeClass('tutor-updating-message');
|
651 |
+
}
|
652 |
+
});
|
653 |
+
|
654 |
+
});
|
655 |
+
|
656 |
+
function get_live_progress_course_migrating_info(){
|
657 |
+
$.ajax({
|
658 |
+
url : ajaxurl,
|
659 |
+
type : 'POST',
|
660 |
+
data : {action : '_get_lp_live_progress_course_migrating_info' },
|
661 |
+
success: function (data) {
|
662 |
+
if (data.success) {
|
663 |
+
if (data.data.migrated_count) {
|
664 |
+
$('#course_migration_progress').html('<div class="tutor-alert tutor-alert-info">'+data.data.progress_text+'</div>');
|
665 |
+
}
|
666 |
+
|
667 |
+
setTimeout(get_live_progress_course_migrating_info, 2000);
|
668 |
+
}
|
669 |
+
}
|
670 |
+
});
|
671 |
+
}
|
672 |
+
|
673 |
+
|
674 |
+
|
675 |
});
|
assets/js/tutor.js
CHANGED
@@ -137,6 +137,51 @@ jQuery(document).ready(function($){
|
|
137 |
});
|
138 |
});
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
$(document).on('change keyup', '.course-edit-topic-title-input', function (e) {
|
141 |
e.preventDefault();
|
142 |
$(this).closest('.tutor-topics-top').find('.topic-inner-title').html($(this).val());
|
137 |
});
|
138 |
});
|
139 |
|
140 |
+
/**
|
141 |
+
* Resorting...
|
142 |
+
*/
|
143 |
+
function enable_sorting_topic_lesson(){
|
144 |
+
if (jQuery().sortable) {
|
145 |
+
$(".course-contents").sortable({
|
146 |
+
handle: ".course-move-handle",
|
147 |
+
start: function (e, ui) {
|
148 |
+
ui.placeholder.css('visibility', 'visible');
|
149 |
+
},
|
150 |
+
stop: function (e, ui) {
|
151 |
+
tutor_sorting_topics_and_lesson();
|
152 |
+
},
|
153 |
+
});
|
154 |
+
$(".tutor-lessons:not(.drop-lessons)").sortable({
|
155 |
+
connectWith: ".tutor-lessons",
|
156 |
+
items: "div.course-content-item",
|
157 |
+
start: function (e, ui) {
|
158 |
+
ui.placeholder.css('visibility', 'visible');
|
159 |
+
},
|
160 |
+
stop: function (e, ui) {
|
161 |
+
tutor_sorting_topics_and_lesson();
|
162 |
+
},
|
163 |
+
});
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
function tutor_sorting_topics_and_lesson(){
|
168 |
+
var topics = {};
|
169 |
+
$('.tutor-topics-wrap').each(function(index, item){
|
170 |
+
var $topic = $(this);
|
171 |
+
var topics_id = parseInt($topic.attr('id').match(/\d+/)[0], 10);
|
172 |
+
var lessons = {};
|
173 |
+
|
174 |
+
$topic.find('.course-content-item').each(function(lessonIndex, lessonItem){
|
175 |
+
var $lesson = $(this);
|
176 |
+
var lesson_id = parseInt($lesson.attr('id').match(/\d+/)[0], 10);
|
177 |
+
|
178 |
+
lessons[lessonIndex] = lesson_id;
|
179 |
+
});
|
180 |
+
topics[index] = { 'topic_id' : topics_id, 'lesson_ids' : lessons };
|
181 |
+
});
|
182 |
+
$('#tutor_topics_lessons_sorting').val(JSON.stringify(topics));
|
183 |
+
}
|
184 |
+
|
185 |
$(document).on('change keyup', '.course-edit-topic-title-input', function (e) {
|
186 |
e.preventDefault();
|
187 |
$(this).closest('.tutor-topics-top').find('.topic-inner-title').html($(this).val());
|
classes/Options.php
CHANGED
@@ -149,6 +149,13 @@ class Options {
|
|
149 |
'default' => '20',
|
150 |
'desc' => __('Number of items you would like displayed "per page" in the pagination', 'tutor'),
|
151 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
)
|
153 |
)
|
154 |
),
|
149 |
'default' => '20',
|
150 |
'desc' => __('Number of items you would like displayed "per page" in the pagination', 'tutor'),
|
151 |
),
|
152 |
+
'enable_tutor_maintenance_mode' => array(
|
153 |
+
'type' => 'checkbox',
|
154 |
+
'label' => __('Maintenance Mode', 'tutor'),
|
155 |
+
'label_title' => __('Enable', 'tutor'),
|
156 |
+
'default' => '0',
|
157 |
+
'desc' => __('Enabling the maintenance mode allows you to display a custom message on the frontend. During this time, visitors can not access the site content. But the wp-admin dashboard will remain accessible.', 'tutor'),
|
158 |
+
),
|
159 |
)
|
160 |
)
|
161 |
),
|
classes/Post_types.php
CHANGED
@@ -35,51 +35,52 @@ class Post_types{
|
|
35 |
public function register_course_post_types() {
|
36 |
|
37 |
$labels = array(
|
38 |
-
'name'
|
39 |
-
'singular_name'
|
40 |
-
'menu_name'
|
41 |
-
'name_admin_bar'
|
42 |
-
'add_new'
|
43 |
-
'add_new_item'
|
44 |
-
'new_item'
|
45 |
-
'edit_item'
|
46 |
-
'view_item'
|
47 |
-
'all_items'
|
48 |
-
'search_items'
|
49 |
-
'parent_item_colon'
|
50 |
-
'not_found'
|
51 |
-
'not_found_in_trash'
|
52 |
);
|
53 |
|
54 |
$args = array(
|
55 |
-
'labels'
|
56 |
-
'description'
|
57 |
-
'public'
|
58 |
-
'publicly_queryable'
|
59 |
-
'show_ui'
|
60 |
-
'show_in_menu'
|
61 |
-
'query_var'
|
62 |
-
'rewrite'
|
63 |
-
'menu_icon'
|
64 |
-
'capability_type'
|
65 |
-
'has_archive'
|
66 |
-
'hierarchical'
|
67 |
-
'menu_position'
|
68 |
-
'taxonomies'
|
69 |
-
'supports'
|
70 |
-
'show_in_rest'
|
71 |
|
72 |
'capabilities' => array(
|
73 |
-
'edit_post'
|
74 |
-
'read_post'
|
75 |
-
'delete_post'
|
76 |
-
'delete_posts'
|
77 |
-
'edit_posts'
|
78 |
-
'edit_others_posts'
|
79 |
-
'publish_posts'
|
80 |
-
'read_private_posts'
|
81 |
-
'create_posts'
|
82 |
),
|
|
|
83 |
);
|
84 |
|
85 |
register_post_type($this->course_post_type, $args);
|
35 |
public function register_course_post_types() {
|
36 |
|
37 |
$labels = array(
|
38 |
+
'name' => _x( 'Courses', 'post type general name', 'tutor' ),
|
39 |
+
'singular_name' => _x( 'Course', 'post type singular name', 'tutor' ),
|
40 |
+
'menu_name' => _x( 'Courses', 'admin menu', 'tutor' ),
|
41 |
+
'name_admin_bar' => _x( 'Course', 'add new on admin bar', 'tutor' ),
|
42 |
+
'add_new' => _x( 'Add New', $this->course_post_type, 'tutor' ),
|
43 |
+
'add_new_item' => __( 'Add New Course', 'tutor' ),
|
44 |
+
'new_item' => __( 'New Course', 'tutor' ),
|
45 |
+
'edit_item' => __( 'Edit Course', 'tutor' ),
|
46 |
+
'view_item' => __( 'View Course', 'tutor' ),
|
47 |
+
'all_items' => __( 'Courses', 'tutor' ),
|
48 |
+
'search_items' => __( 'Search Courses', 'tutor' ),
|
49 |
+
'parent_item_colon' => __( 'Parent Courses:', 'tutor' ),
|
50 |
+
'not_found' => __( 'No courses found.', 'tutor' ),
|
51 |
+
'not_found_in_trash' => __( 'No courses found in Trash.', 'tutor' )
|
52 |
);
|
53 |
|
54 |
$args = array(
|
55 |
+
'labels' => $labels,
|
56 |
+
'description' => __( 'Description.', 'tutor' ),
|
57 |
+
'public' => true,
|
58 |
+
'publicly_queryable' => true,
|
59 |
+
'show_ui' => true,
|
60 |
+
'show_in_menu' => 'tutor',
|
61 |
+
'query_var' => true,
|
62 |
+
'rewrite' => array( 'slug' => $this->course_post_type, 'with_front' => false ),
|
63 |
+
'menu_icon' => 'dashicons-book-alt',
|
64 |
+
'capability_type' => 'post',
|
65 |
+
'has_archive' => true,
|
66 |
+
'hierarchical' => false,
|
67 |
+
'menu_position' => null,
|
68 |
+
'taxonomies' => array( 'course-category', 'course-tag' ),
|
69 |
+
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt'),
|
70 |
+
'show_in_rest' => true,
|
71 |
|
72 |
'capabilities' => array(
|
73 |
+
'edit_post' => 'edit_tutor_course',
|
74 |
+
'read_post' => 'read_tutor_course',
|
75 |
+
'delete_post' => 'delete_tutor_course',
|
76 |
+
'delete_posts' => 'delete_tutor_courses',
|
77 |
+
'edit_posts' => 'edit_tutor_courses',
|
78 |
+
'edit_others_posts' => 'edit_others_tutor_courses',
|
79 |
+
'publish_posts' => 'publish_tutor_courses',
|
80 |
+
'read_private_posts' => 'read_private_tutor_courses',
|
81 |
+
'create_posts' => 'edit_tutor_courses',
|
82 |
),
|
83 |
+
|
84 |
);
|
85 |
|
86 |
register_post_type($this->course_post_type, $args);
|
classes/Tools.php
CHANGED
@@ -11,6 +11,11 @@ class Tools {
|
|
11 |
public function __construct() {
|
12 |
//add_action('tutor_once_in_day_run_schedule', array($this, 'delete_auto_draft_posts'));
|
13 |
add_action('tutor_action_regenerate_tutor_pages', array($this, 'regenerate_tutor_pages'));
|
|
|
|
|
|
|
|
|
|
|
14 |
}
|
15 |
|
16 |
/**
|
@@ -40,4 +45,33 @@ class Tools {
|
|
40 |
}
|
41 |
}
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
11 |
public function __construct() {
|
12 |
//add_action('tutor_once_in_day_run_schedule', array($this, 'delete_auto_draft_posts'));
|
13 |
add_action('tutor_action_regenerate_tutor_pages', array($this, 'regenerate_tutor_pages'));
|
14 |
+
|
15 |
+
|
16 |
+
add_action('tutor_option_save_after', array($this, 'tutor_option_save_after'));
|
17 |
+
add_action('init', array($this, 'check_if_maintenance'));
|
18 |
+
|
19 |
}
|
20 |
|
21 |
/**
|
45 |
}
|
46 |
}
|
47 |
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Enable Maintenance Mode
|
51 |
+
*/
|
52 |
+
|
53 |
+
public function tutor_option_save_after(){
|
54 |
+
$maintenance_mode = (bool) get_tutor_option('enable_tutor_maintenance_mode');
|
55 |
+
if ($maintenance_mode){
|
56 |
+
tutor_maintenance_mode(true);
|
57 |
+
}else{
|
58 |
+
tutor_maintenance_mode();
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
public function check_if_maintenance(){
|
63 |
+
if ( ! is_admin()) {
|
64 |
+
$maintenance_mode = (bool) get_tutor_option( 'enable_tutor_maintenance_mode' );
|
65 |
+
if ( ! $maintenance_mode){
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
|
69 |
+
header( 'Retry-After: 600' );
|
70 |
+
include tutor()->path.'views/maintenance.php';
|
71 |
+
die();
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
|
76 |
+
|
77 |
}
|
classes/Utils.php
CHANGED
@@ -1861,7 +1861,7 @@ class Utils {
|
|
1861 |
|
1862 |
do_action('tutor_before_enroll', $course_id);
|
1863 |
$user_id = $this->get_user_id($user_id);
|
1864 |
-
$title = __('Course Enrolled', 'tutor')." – ".
|
1865 |
|
1866 |
$enrolment_status = 'completed';
|
1867 |
|
1861 |
|
1862 |
do_action('tutor_before_enroll', $course_id);
|
1863 |
$user_id = $this->get_user_id($user_id);
|
1864 |
+
$title = __('Course Enrolled', 'tutor')." – ".date(get_option('date_format')) .' @ '.date(get_option('time_format') ) ;
|
1865 |
|
1866 |
$enrolment_status = 'completed';
|
1867 |
|
includes/tutor-general-functions.php
CHANGED
@@ -512,4 +512,30 @@ if ( ! function_exists('tutor_time')) {
|
|
512 |
//return current_time( 'timestamp' );
|
513 |
return time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
|
514 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
}
|
512 |
//return current_time( 'timestamp' );
|
513 |
return time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
|
514 |
}
|
515 |
+
}
|
516 |
+
|
517 |
+
/**
|
518 |
+
* Toggle maintenance mode for the site.
|
519 |
+
*
|
520 |
+
* Creates/deletes the maintenance file to enable/disable maintenance mode.
|
521 |
+
*
|
522 |
+
* @since v.1.4.6
|
523 |
+
*
|
524 |
+
* @global WP_Filesystem_Base $wp_filesystem Subclass
|
525 |
+
*
|
526 |
+
* @param bool $enable True to enable maintenance mode, false to disable.
|
527 |
+
*/
|
528 |
+
if ( ! function_exists('tutor_maintenance_mode')) {
|
529 |
+
function tutor_maintenance_mode( $enable = false ) {
|
530 |
+
global $wp_filesystem;
|
531 |
+
$file = $wp_filesystem->abspath() . '.tutor_maintenance';
|
532 |
+
if ( $enable ) {
|
533 |
+
// Create maintenance file to signal that we are upgrading
|
534 |
+
$maintenance_string = '<?php $upgrading = ' . time() . '; ?>';
|
535 |
+
$wp_filesystem->delete( $file );
|
536 |
+
$wp_filesystem->put_contents( $file, $maintenance_string, FS_CHMOD_FILE );
|
537 |
+
} elseif ( ! $enable && $wp_filesystem->exists( $file ) ) {
|
538 |
+
$wp_filesystem->delete( $file );
|
539 |
+
}
|
540 |
+
}
|
541 |
}
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: lms, course, elearning, education, learning management system
|
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.2
|
7 |
Requires PHP: 5.4.0
|
8 |
-
Stable tag: 1.4.
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
@@ -159,7 +159,7 @@ Have the most secure learning management system when creating your online course
|
|
159 |
|
160 |
- **Frontend Course Builder:** Build your course on the go using the frontend course builder in Tutor LMS plugin. Instructors can see how their course looks live without even having to go backend. The industry-first frontend course builder in any WordPress LMS plugin ever.
|
161 |
|
162 |
-
- **5 Pro Question Patterns
|
163 |
|
164 |
* Short Answer
|
165 |
* Matching
|
@@ -241,6 +241,14 @@ Tutor enables you to use any third party plugins without facing any compatibilit
|
|
241 |
|
242 |
== Changelog ==
|
243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
= 1.4.5 - 21 October, 2019 =
|
245 |
|
246 |
* Added: Disable Course Review option
|
5 |
Requires at least: 4.5
|
6 |
Tested up to: 5.2
|
7 |
Requires PHP: 5.4.0
|
8 |
+
Stable tag: 1.4.6
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
159 |
|
160 |
- **Frontend Course Builder:** Build your course on the go using the frontend course builder in Tutor LMS plugin. Instructors can see how their course looks live without even having to go backend. The industry-first frontend course builder in any WordPress LMS plugin ever.
|
161 |
|
162 |
+
- ** 5 Pro Question Patterns: **
|
163 |
|
164 |
* Short Answer
|
165 |
* Matching
|
241 |
|
242 |
== Changelog ==
|
243 |
|
244 |
+
|
245 |
+
= 1.4.6 - 11 November, 2019 =
|
246 |
+
|
247 |
+
* Added: Maintenance Mode
|
248 |
+
* Added: Frontend course edit link from Course Edit Page Admin bar LINK
|
249 |
+
* Fixed: bug during add topic in course builder
|
250 |
+
* Fixed: certificate download fatal error related microtime() in tutor-pro version
|
251 |
+
|
252 |
= 1.4.5 - 21 October, 2019 =
|
253 |
|
254 |
* Added: Disable Course Review option
|
tutor.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Tutor LMS
|
|
4 |
Plugin URI: https://www.themeum.com/product/tutor-lms/
|
5 |
Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
|
6 |
Author: Themeum
|
7 |
-
Version: 1.4.
|
8 |
Author URI: http://themeum.com
|
9 |
Requires at least: 4.5
|
10 |
Tested up to: 5.2
|
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) )
|
|
17 |
/**
|
18 |
* Defined the tutor main file
|
19 |
*/
|
20 |
-
define('TUTOR_VERSION', '1.4.
|
21 |
define('TUTOR_FILE', __FILE__);
|
22 |
|
23 |
/**
|
4 |
Plugin URI: https://www.themeum.com/product/tutor-lms/
|
5 |
Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
|
6 |
Author: Themeum
|
7 |
+
Version: 1.4.6
|
8 |
Author URI: http://themeum.com
|
9 |
Requires at least: 4.5
|
10 |
Tested up to: 5.2
|
17 |
/**
|
18 |
* Defined the tutor main file
|
19 |
*/
|
20 |
+
define('TUTOR_VERSION', '1.4.6');
|
21 |
define('TUTOR_FILE', __FILE__);
|
22 |
|
23 |
/**
|
views/maintenance.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style type="text/css">
|
2 |
+
html, body {
|
3 |
+
margin: 0 auto;
|
4 |
+
font-family: 'Roboto', sans-serif;
|
5 |
+
height: 100%;
|
6 |
+
background: #eeeef4;
|
7 |
+
font-weight: 100;
|
8 |
+
user-select: none;
|
9 |
+
}
|
10 |
+
main {
|
11 |
+
height: 100%;
|
12 |
+
display: flex;
|
13 |
+
margin: 0 20px;
|
14 |
+
text-align: center;
|
15 |
+
flex-direction: column;
|
16 |
+
align-items: center;
|
17 |
+
justify-content: center;
|
18 |
+
}
|
19 |
+
main h1 {
|
20 |
+
font-size: 3em;
|
21 |
+
font-weight: 100;
|
22 |
+
color: #f44;
|
23 |
+
margin: 0;
|
24 |
+
}
|
25 |
+
main h2 {
|
26 |
+
font-size: 1.5em;
|
27 |
+
font-weight: 100;
|
28 |
+
margin-bottom: 0;
|
29 |
+
}
|
30 |
+
main h3 {
|
31 |
+
font-size: 1.5em;
|
32 |
+
font-weight: 100;
|
33 |
+
margin-top: 0;
|
34 |
+
}
|
35 |
+
main a {
|
36 |
+
font-size: 1.5em;
|
37 |
+
font-weight: 300;
|
38 |
+
color: #f44;
|
39 |
+
text-decoration: none;
|
40 |
+
}
|
41 |
+
|
42 |
+
</style>
|
43 |
+
|
44 |
+
|
45 |
+
<!doctype html>
|
46 |
+
<html <?php language_attributes(); ?>>
|
47 |
+
<head>
|
48 |
+
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
49 |
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2.0">
|
50 |
+
<link rel="profile" href="http://gmpg.org/xfn/11">
|
51 |
+
<title><?php echo get_option('blogname'); ?></title>
|
52 |
+
</head>
|
53 |
+
|
54 |
+
<body>
|
55 |
+
|
56 |
+
<main>
|
57 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="70" viewBox="0 0 100 68">
|
58 |
+
<g id="large">
|
59 |
+
<path fill="none" stroke="#F44" d="M55.8 38.5l6.2-1.2c0-1.8-.1-3.5-.4-5.3l-6.3-.2c-.5-2-1.2-4-2.1-6l4.8-4c-.9-1.6-1.9-3-3-4.4l-5.6 3c-1.3-1.6-3-3-4.7-4.1l2-6A30 30 0 0 0 42 8l-3.3 5.4c-2-.7-4.2-1-6.2-1.2L31.3 6c-1.8 0-3.5.1-5.3.4l-.2 6.3c-2 .5-4 1.2-6 2.1l-4-4.8c-1.6.9-3 1.9-4.4 3l3 5.6c-1.6 1.3-3 3-4.1 4.7l-6-2A32.5 32.5 0 0 0 2 26l5.4 3.3c-.7 2-1 4.2-1.2 6.2L0 36.7c0 1.8.1 3.5.4 5.3l6.3.2c.5 2 1.2 4 2.1 6l-4.8 4c.9 1.6 1.9 3 3 4.4l5.6-3c1.4 1.6 3 3 4.7 4.1l-2 6A30.5 30.5 0 0 0 20 66l3.4-5.4c2 .7 4 1 6.1 1.2l1.2 6.2c1.8 0 3.5-.1 5.3-.4l.2-6.3c2-.5 4-1.2 6-2.1l4 4.8c1.6-.9 3-1.9 4.4-3l-3-5.6c1.6-1.3 3-3 4.1-4.7l6 2A32 32 0 0 0 60 48l-5.4-3.3c.7-2 1-4.2 1.2-6.2zm-13.5 4a12.5 12.5 0 1 1-22.6-11 12.5 12.5 0 0 1 22.6 11z"/>
|
60 |
+
<animateTransform attributeName="transform" begin="0s" dur="3s" from="0 31 37" repeatCount="indefinite" to="360 31 37" type="rotate"/>
|
61 |
+
</g>
|
62 |
+
<g id="small">
|
63 |
+
<path fill="none" stroke="#F44" d="M93 19.3l6-3c-.4-1.6-1-3.2-1.7-4.8L90.8 13c-.9-1.4-2-2.7-3.4-3.8l2.1-6.3A21.8 21.8 0 0 0 85 .7l-3.6 5.5c-1.7-.4-3.4-.5-5.1-.3l-3-5.9c-1.6.4-3.2 1-4.7 1.7L70 8c-1.5 1-2.8 2-3.9 3.5L60 9.4a20.6 20.6 0 0 0-2.2 4.6l5.5 3.6a15 15 0 0 0-.3 5.1l-5.9 3c.4 1.6 1 3.2 1.7 4.7L65 29c1 1.5 2.1 2.8 3.5 3.9l-2.1 6.3a21 21 0 0 0 4.5 2.2l3.6-5.6c1.7.4 3.5.5 5.2.3l2.9 5.9c1.6-.4 3.2-1 4.8-1.7L86 34c1.4-1 2.7-2.1 3.8-3.5l6.3 2.1a21.5 21.5 0 0 0 2.2-4.5l-5.6-3.6c.4-1.7.5-3.5.3-5.1zM84.5 24a7 7 0 1 1-12.8-6.2 7 7 0 0 1 12.8 6.2z"/>
|
64 |
+
<animateTransform attributeName="transform" begin="0s" dur="2s" from="0 78 21" repeatCount="indefinite" to="-360 78 21" type="rotate"/>
|
65 |
+
</g>
|
66 |
+
</svg>
|
67 |
+
<h1>Under Maintanance</h1>
|
68 |
+
<h2>Sorry for the inconvenience.</h2>
|
69 |
+
</main>
|
70 |
+
|
71 |
+
</body>
|
views/pages/tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<h1 class="wp-heading-inline"><?php _e('Tools', 'tutor'); ?></h1>
|
3 |
<hr class="wp-header-end">
|
4 |
|
5 |
-
<nav class="nav-tab-wrapper tutor-
|
6 |
<?php
|
7 |
if (tutils()->count($pages)){
|
8 |
foreach ($pages as $key => $page){
|
2 |
<h1 class="wp-heading-inline"><?php _e('Tools', 'tutor'); ?></h1>
|
3 |
<hr class="wp-header-end">
|
4 |
|
5 |
+
<nav class="nav-tab-wrapper tutor-nav-tab-wrapper">
|
6 |
<?php
|
7 |
if (tutils()->count($pages)){
|
8 |
foreach ($pages as $key => $page){
|