Tutor LMS – eLearning and online course solution - Version 1.3.2

Version Description

  • 29 May, 2019 =

  • Added: centralized tutor version upgrading system by a dedicated class called Upgrader

  • Added: add to cart guest mode in WooCommerce integration based on Tutor LMS > settings > woocommerce

  • Added: Gutenberg support on course edit page based on settings

  • Added: Automatic free plugin install from pro when the pro version is activated but the free plugin does not exist (pro)

  • Added: nice notice bar for install or activate free version from pro (pro)

  • Added: Pro text in the tutor LMS dashboard menu when Tutor Pro plugin installed and activated

  • Updated: a design for course listing, removed hover and moved it to straight course gird footer

  • Fixed: a Gutenberg bug related post author on course post type, usually post_author column saved 0 if course edit with Gutenberg, we fixed this issue.

  • Fixed: a template condition in the course description

  • Removed: license restriction for features, it required now for auto-update (pro)

  • Fixed: Response design all issue fixed

  • Fixed: array count check and return issue in utils

  • Fixed: a bug in dashboard/settings, withdraw menu removed from subscriber/users dashboard, and only shown in the instructor's dashboard.

Download this release

Release Info

Developer themeum
Plugin Icon wp plugin Tutor LMS – eLearning and online course solution
Version 1.3.2
Comparing to
See all releases

Code changes from version 1.3.1 to 1.3.2

Files changed (51) hide show
  1. assets/css/tutor-admin.css +2 -2
  2. assets/css/tutor-front.css +382 -237
  3. assets/js/tutor-front.js +2 -0
  4. classes/Admin.php +11 -7
  5. classes/Course.php +27 -0
  6. classes/Instructor.php +3 -0
  7. classes/Options.php +5 -0
  8. classes/Post_types.php +3 -0
  9. classes/Question.php +3 -0
  10. classes/Student.php +3 -0
  11. classes/Theme_Compatibility.php +3 -0
  12. classes/Tools.php +3 -0
  13. classes/Tutor.php +4 -20
  14. classes/TutorEDD.php +3 -0
  15. classes/Tutor_Base.php +2 -0
  16. classes/Upgrader.php +54 -0
  17. classes/User.php +3 -0
  18. classes/Utils.php +4 -1
  19. classes/Withdraw.php +0 -1
  20. classes/WooCommerce.php +9 -0
  21. includes/theme-compatibility/storefront/assets/css/style.css +2 -2
  22. readme.txt +17 -1
  23. templates/dashboard.php +2 -1
  24. templates/dashboard/earning.php +9 -2
  25. templates/dashboard/earning/statement.php +50 -50
  26. templates/dashboard/earning/statements.php +61 -54
  27. templates/dashboard/enrolled-courses.php +2 -6
  28. templates/dashboard/enrolled-courses/active-courses.php +2 -6
  29. templates/dashboard/enrolled-courses/completed-courses.php +2 -6
  30. templates/dashboard/logged-in.php +1 -1
  31. templates/dashboard/my-courses.php +2 -7
  32. templates/dashboard/purchase_history.php +37 -34
  33. templates/dashboard/quiz-attempts.php +5 -6
  34. templates/dashboard/settings.php +5 -3
  35. templates/dashboard/settings/education.php +5 -3
  36. templates/dashboard/settings/reset-password.php +25 -21
  37. templates/dashboard/settings/skill.php +5 -4
  38. templates/dashboard/settings/withdraw-settings.php +5 -7
  39. templates/loop/course.php +0 -1
  40. templates/loop/footer.php +1 -8
  41. templates/loop/meta.php +40 -21
  42. templates/loop/rating.php +2 -0
  43. templates/loop/title.php +3 -2
  44. templates/single-course-enrolled-announcements.php +1 -1
  45. templates/single-course-enrolled-overview.php +1 -1
  46. templates/single-course-enrolled-questions.php +1 -1
  47. templates/single/course/add-to-cart.php +14 -2
  48. templates/single/course/course-content.php +18 -15
  49. templates/single/course/tags.php +1 -1
  50. templates/single/quiz/body.php +9 -9
  51. tutor.php +2 -2
assets/css/tutor-admin.css CHANGED
@@ -1905,8 +1905,8 @@ Lesson Edit Modal
1905
  font-family: 'tutor';
1906
  margin-right: 5px;
1907
  content: "\e91d";
1908
- -webkit-animation: spin 2s infinite linear;
1909
- animation: spin 2s infinite linear;
1910
  display: inline-block;
1911
  }
1912
  .tutor-notice-warning{
1905
  font-family: 'tutor';
1906
  margin-right: 5px;
1907
  content: "\e91d";
1908
+ -webkit-animation: spin 1s steps(8) infinite;
1909
+ animation: spin 1s steps(8) infinite;
1910
  display: inline-block;
1911
  }
1912
  .tutor-notice-warning{
assets/css/tutor-front.css CHANGED
@@ -14,6 +14,11 @@ body {
14
  .tutor-wrap{
15
  color: var(--tutor-text-color);
16
  }
 
 
 
 
 
17
  /**
18
  Most Important CSS
19
  .tutor-container
@@ -158,6 +163,10 @@ Most Important CSS
158
  margin-bottom: 40px;
159
  }
160
 
 
 
 
 
161
  /********************/
162
  /*start single course*/
163
  /********************/
@@ -257,6 +266,12 @@ Most Important CSS
257
  margin-bottom: 5px;
258
  min-width: 95px;
259
  }
 
 
 
 
 
 
260
  .tutor-single-course-meta ul li:last-child{
261
  margin-right: 0;
262
  }
@@ -336,6 +351,7 @@ Most Important CSS
336
  border: 1px solid #ddd;
337
  border-radius: 4px;
338
  }
 
339
  }
340
 
341
  .tutor-single-course-meta.tutor-lead-meta ul{
@@ -376,6 +392,30 @@ Most Important CSS
376
  content: ',';
377
  margin-right: 4px;
378
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  /*benifit*/
380
  .tutor-course-benefits-content ul{
381
  list-style: none;
@@ -520,7 +560,7 @@ div[class*="tutor-course-col"] {
520
  border-radius: 4px;
521
  -webkit-transition: 300ms;
522
  transition: 300ms;
523
- border: 1px solid #DCDFE5;
524
  height: 100%;
525
  display: -webkit-box;
526
  display: -ms-flexbox;
@@ -627,25 +667,49 @@ div[class*="tutor-course-col"] {
627
  margin-right: 4px;
628
  margin-left: 0;
629
  }
630
- .tutor-course-loop-title a h2{
631
- font-size: 22px;
632
  line-height: 28px;
633
- font-weight: 500;
634
  margin-bottom: 17px;
 
 
635
  color: var(--tutor-text-color);
636
  }
637
- .tutor-course-loop-title a:hover h2{
638
  color: var(--tutor-primary-color);
639
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  .tutor-loop-course-footer{
641
  padding: 15px;
642
- border-top: 1px solid #DCDFE5;
643
  color: #838791;
644
  font-size: 12px;
645
  line-height: 25px;
646
  border-bottom-left-radius: 4px;
647
  border-bottom-right-radius: 4px;
648
- position: relative;
649
  font-weight: 400;
650
  }
651
  .tutor-loop-course-footer:after{
@@ -653,37 +717,15 @@ div[class*="tutor-course-col"] {
653
  display: table;
654
  clear: both;
655
  }
656
-
657
- .tutor-loop-course-footer i{
658
- font-size: 15px;
659
- color: var(--tutor-light-color);
660
- line-height: 25px;
661
- margin-right: 3px;
662
- float: left;
663
- }
664
- .tutor-loop-course-footer i:not(:first-child){
665
- margin-left: 12px;
666
- }
667
-
668
- .tutor-loop-course-footer span{
669
- line-height: 25px;
670
- float: left;
671
- }
672
-
673
  .tutor-loop-course-footer span.woocommerce-Price-currencySymbol{
674
  vertical-align: top;
675
  }
676
 
677
  .tutor-course-loop-price{
678
- float: right;
679
  color: var(--tutor-text-color);
680
- font-size: 17px;
681
- font-weight: 500;
682
  }
683
  .tutor-course-loop-price .price del{
684
- font-size: 12px;
685
- opacity: 1;
686
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
687
  font-weight: 400;
688
  }
689
 
@@ -699,54 +741,57 @@ div[class*="tutor-course-col"] {
699
  .tutor-course-loop-price .price del + ins{
700
  background: transparent;
701
  margin-left: 0;
 
702
  }
703
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap{
704
- position: absolute;
705
- left: -1px;
706
- top: 0;
707
- width: calc(100% + 2px);
708
- height: calc(100% + 1px);
709
- color: #fff;
710
- text-align: center;
711
- top: 0;
712
- opacity: 0;
713
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
714
- -webkit-transition: 100ms;
715
- transition: 100ms;
716
- border-bottom-left-radius: 4px;
717
- border-bottom-right-radius: 4px;
718
- background: var(--tutor-primary-color);
719
  }
720
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap a{
721
- color: #fff;
 
 
 
 
 
 
722
  font-size: 14px;
723
- text-transform: uppercase;
724
- font-weight: 700;
725
- -webkit-animation: rotate_cs 5s infinite; /* Safari 4.0 - 8.0 */
726
- animation: rotate_cs 5s infinite;
727
  padding: 0;
728
- display: block;
729
- width: 100%;
730
- line-height: 54px;
731
- background: var(--tutor-primary-color);
732
  }
733
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap a.added{
734
- display: none;
 
 
735
  }
736
 
737
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap a.added_to_cart{
738
- background-color: #000000;
 
 
 
 
739
  }
740
 
741
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap a:before{
742
  content: '\e915';
743
- font-family: "tutor";
 
 
 
 
 
 
 
 
744
  margin-right: 5px;
 
745
  }
746
 
747
- .tutor-loop-course-footer .tutor-loop-cart-btn-wrap a.added_to_cart:before{
748
- display: none;
749
- }
750
 
751
  /* Standard syntax */
752
  @-webkit-keyframes mymove {
@@ -816,15 +861,9 @@ div[class*="tutor-course-col"] {
816
  }
817
  }
818
 
819
- .tutor-course-loop-title h2{
820
- font-size: 16px;
821
- font-size: 16px;
822
- font-size: 16px;
823
- font-size: 1rem;
824
- }
825
  .tutor-course-filter-wrap{
826
  clear: both;
827
- margin-bottom: 20px;
828
  }
829
  .tutor-course-filter-form{
830
  display: inline-block;
@@ -904,7 +943,7 @@ div[class*="tutor-course-col"] {
904
 
905
  .tutor-loop-author > div a{
906
  color: var(--tutor-text-color);
907
- font-weight: 700;
908
  -webkit-transition: 300ms;
909
  transition: 300ms;
910
  }
@@ -1039,6 +1078,8 @@ a.tutor-btn.bordered-btn:hover,
1039
  .tutor-wrap nav.course-enrolled-nav ul li{
1040
  display: inline-block;
1041
  }
 
 
1042
  .tutor-wrap nav.course-enrolled-nav ul li a{
1043
  display: block;
1044
  font-size: 16px;
@@ -1054,6 +1095,23 @@ a.tutor-btn.bordered-btn:hover,
1054
  border-bottom: 2px solid var(--tutor-primary-color);
1055
  color: var(--tutor-text-color);
1056
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1057
  /* *********************** */
1058
  /* Tutor Dashboard */
1059
  /* *********************** */
@@ -1067,6 +1125,7 @@ a.tutor-btn.bordered-btn:hover,
1067
  align-items: center;
1068
  padding-bottom: 30px;
1069
  border-bottom: 1px solid #DCDFE5;
 
1070
  }
1071
 
1072
  .tutor-dashboard-header-avatar img{
@@ -1081,11 +1140,19 @@ a.tutor-btn.bordered-btn:hover,
1081
  -ms-flex-positive: 1;
1082
  flex-grow: 1;
1083
  padding-left: 20px;
 
 
 
 
 
 
1084
  }
1085
 
1086
  .tutor-dashboard-header-display-name h4{
1087
  font-size: 30px;
1088
- margin-bottom: 0;
 
 
1089
  }
1090
 
1091
  .tutor-dashboard-header-stats{
@@ -1094,6 +1161,7 @@ a.tutor-btn.bordered-btn:hover,
1094
  display: flex;
1095
  -ms-flex-wrap: wrap;
1096
  flex-wrap: wrap;
 
1097
  }
1098
 
1099
  .tutor-dashboard-header-stats > div:not(:first-child){
@@ -1101,6 +1169,8 @@ a.tutor-btn.bordered-btn:hover,
1101
  }
1102
 
1103
 
 
 
1104
  /* end dashboard header */
1105
 
1106
  /**
@@ -1247,7 +1317,9 @@ a.tutor-btn.bordered-btn:hover,
1247
  }
1248
 
1249
  /*dashboard quiz attempts*/
1250
-
 
 
1251
  .tutor-dashboard-content .tutor-quiz-attempt-history tr th,
1252
  .tutor-dashboard-content .tutor-quiz-attempt-history tr td{
1253
  vertical-align: middle;
@@ -1270,6 +1342,39 @@ a.tutor-btn.bordered-btn:hover,
1270
  margin-right: 4px;
1271
  }
1272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1273
  .tutor-dashboard-content .tutor-quiz-attempt-history table a{
1274
  color: var(--tutor-primary-color);
1275
  font-weight: 700;
@@ -1304,10 +1409,23 @@ a.tutor-btn.bordered-btn:hover,
1304
  display: -ms-flexbox;
1305
  display: flex;
1306
  }
 
1307
  .tutor-dashboard-profile .tutor-dashboard-profile-item .heading{
1308
  min-width: 190px;
1309
  }
1310
 
 
 
 
 
 
 
 
 
 
 
 
 
1311
  .tutor-dashboard-profile .tutor-dashboard-profile-item .content{
1312
  -webkit-box-flex: 1;
1313
  -ms-flex-positive: 1;
@@ -1425,14 +1543,6 @@ a.tutor-btn.bordered-btn:hover,
1425
  }
1426
 
1427
  @media (max-width: 991px) {
1428
- ul.tutor-dashboard-permalinks li{
1429
- display: inline-block;
1430
- border-bottom: none !important;
1431
- border-right: 1px solid #E8EFF1;
1432
- }
1433
- ul.tutor-dashboard-permalinks li:last-child{
1434
- border-right-color: transparent;
1435
- }
1436
  .tutor-dashboard-student .tutor-col-3,
1437
  .tutor-dashboard-student .tutor-col-9{
1438
  -webkit-box-flex: 0;
@@ -1534,27 +1644,32 @@ a.tutor-btn.bordered-btn:hover,
1534
 
1535
  /** Earning Report */
1536
  .tutor-date-range-filter-wrap{
1537
- display: -webkit-box;
1538
- display: -ms-flexbox;
1539
- display: flex;
1540
  margin: 15px 0 20px;
1541
  font-size: 12px;
1542
  }
 
 
1543
  .report-top-sub-menu{
1544
- margin: 0;
1545
- -webkit-box-flex: 1;
1546
- -ms-flex: 1;
1547
- flex: 1;
1548
- display: -webkit-box;
1549
- display: -ms-flexbox;
1550
- display: flex;
1551
  }
 
1552
  .report-top-sub-menu a{
1553
  text-decoration: none;
1554
  padding: 5px 8px;
1555
  border: 1px solid #D7DADF;
1556
  color: #AAAEB3;
 
 
 
1557
  }
 
 
 
 
 
 
1558
  .report-top-sub-menu a:hover{
1559
  background: #EDF0F9;
1560
  color: #333;
@@ -1564,24 +1679,37 @@ a.tutor-btn.bordered-btn:hover,
1564
  color: #ffffff;
1565
  border: 1px solid var(--tutor-primary-hover-color);
1566
  }
1567
-
1568
- .report-top-sub-menu a:not(:last-child){
1569
- border-right: none;
1570
  }
1571
-
1572
  .report-date-range-form{
1573
  display: -webkit-box;
1574
  display: -ms-flexbox;
1575
  display: flex;
1576
  margin-bottom: 0;
 
1577
  }
1578
  .date-range-input{
1579
  position: relative;
1580
- margin-right: 5px;
1581
  }
 
 
 
 
 
 
 
 
 
1582
  .date-range-input:last-child{
1583
  margin-right: 0;
1584
  }
 
 
 
 
 
 
1585
  .date-range-input input, .date-range-input input[type=text]{
1586
  border: 1px solid #D7DADF;
1587
  box-shadow: none;
@@ -1590,6 +1718,7 @@ a.tutor-btn.bordered-btn:hover,
1590
  padding-right: 30px;
1591
  padding-top: 0;
1592
  padding-bottom: 0;
 
1593
  }
1594
  .date-range-input i.tutor-icon-calendar{
1595
  position: absolute;
@@ -1609,6 +1738,11 @@ a.tutor-btn.bordered-btn:hover,
1609
  .report-download-csv-icon a{
1610
  text-decoration: none;
1611
  }
 
 
 
 
 
1612
  table.tutor-dashboard-statement-table p{
1613
  margin: 0;
1614
  padding: 0;
@@ -1630,7 +1764,7 @@ Withdraw Method
1630
  display: flex;
1631
  -ms-flex-wrap: wrap;
1632
  flex-wrap: wrap;
1633
- margin: 0 -15px 50px;
1634
  }
1635
 
1636
  .withdraw-method-select-wrap .withdraw-method-select{
@@ -1638,6 +1772,7 @@ Withdraw Method
1638
  -ms-flex-positive: 1;
1639
  flex-grow: 1;
1640
  padding: 0 15px;
 
1641
  }
1642
  .withdraw-method-select-wrap .withdraw-method-select label{
1643
  display: block;
@@ -1710,6 +1845,12 @@ Withdraw Method
1710
  padding: 0 15px 20px;
1711
  }
1712
 
 
 
 
 
 
 
1713
  .withdraw-method-form > div.withdraw-account-save-btn-wrap{
1714
  width: 100%;
1715
  }
@@ -1764,114 +1905,14 @@ label[for="tutor_withdraw_amount"]{
1764
 
1765
  /** END Withdraw */
1766
 
1767
- /**
1768
- DatePicker
1769
- */
1770
- .ui-datepicker {
1771
- background-color: #fff;
1772
- border: 1px solid #EEEEEE;
1773
- display: none;
1774
- margin-top: 4px;
1775
- padding: 5px;
1776
- width: 180px;
1777
- }
1778
- .ui-datepicker a,
1779
- .ui-datepicker a:hover {
1780
- text-decoration: none;
1781
- }
1782
- .ui-datepicker a:hover,
1783
- .ui-datepicker td:hover a {
1784
- color: var(--tutor-primary-hover-color);
1785
- -webkit-transition: color 0.1s ease-in-out;
1786
- transition: color 0.1s ease-in-out;
1787
- }
1788
- .ui-datepicker .ui-datepicker-header {
1789
- margin-bottom: 4px;
1790
- text-align: center;
1791
- }
1792
- .ui-datepicker .ui-datepicker-title {
1793
- font-weight: 700;
1794
- }
1795
- .ui-datepicker .ui-datepicker-prev,
1796
- .ui-datepicker .ui-datepicker-next {
1797
- cursor: default;
1798
- font-family: 'tutor';
1799
- -webkit-font-smoothing: antialiased;
1800
- font-style: normal;
1801
- font-weight: normal;
1802
- height: 20px;
1803
- line-height: 1;
1804
- margin-top: 2px;
1805
- width: 30px;
1806
- }
1807
- .ui-datepicker .ui-datepicker-prev {
1808
- float: left;
1809
- text-align: left;
1810
- }
1811
- .ui-datepicker .ui-datepicker-next {
1812
- float: right;
1813
- text-align: right;
1814
- }
1815
- .ui-datepicker .ui-datepicker-prev:before {
1816
- content: "\e921";
1817
- }
1818
- .ui-datepicker .ui-datepicker-next:before {
1819
- content: "\e903";
1820
- }
1821
- .ui-datepicker .ui-icon {
1822
- display: none;
1823
- }
1824
- .ui-datepicker .ui-datepicker-calendar {
1825
- table-layout: fixed;
1826
- width: 100%;
1827
- }
1828
- .ui-datepicker .ui-datepicker-calendar th,
1829
- .ui-datepicker .ui-datepicker-calendar td {
1830
- text-align: center;
1831
- padding: 0;
1832
- }
1833
- .ui-datepicker .ui-datepicker-calendar td {
1834
- border-radius: 4px;
1835
- -webkit-transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out;
1836
- transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out;
1837
- }
1838
- .ui-datepicker .ui-datepicker-calendar td:hover {
1839
- background-color: #eee;
1840
- cursor: pointer;
1841
- }
1842
- .ui-datepicker .ui-datepicker-calendar td a {
1843
- text-decoration: none;
1844
- }
1845
- .ui-datepicker .ui-datepicker-current-day {
1846
- background-color: var( --tutor-primary-hover-color);
1847
- }
1848
- .ui-datepicker .ui-datepicker-current-day a {
1849
- color: #fff
1850
- }
1851
- .ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover {
1852
- background-color: #fff;
1853
- cursor: default;
1854
- }
1855
-
1856
- .ui-datepicker-calendar .ui-state-default {
1857
- border: none;
1858
- background: none;
1859
- }
1860
- .ui-datepicker-calendar .ui-state-default.ui-state-highlight {
1861
- background: #EEEEEE;
1862
- padding: 3px;
1863
- display: block;
1864
- }
1865
-
1866
- /** End DatePicker **/
1867
-
1868
-
1869
  .tutor-mycourse-thumbnail {
1870
  -webkit-box-flex: 0;
1871
  -ms-flex: 0 0 250px;
1872
  flex: 0 0 250px;
1873
  -ms-flex-item-align: center;
1874
- align-self: center;
 
 
1875
  }
1876
  .tutor-mycourse-content {
1877
  padding: 20px;
@@ -1879,6 +1920,19 @@ DatePicker
1879
  -ms-flex: 1;
1880
  flex: 1;
1881
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
1882
  .tutor-mycourse-content h3{
1883
  margin: 0 0 9px;
1884
  }
@@ -1925,7 +1979,16 @@ DatePicker
1925
  margin-bottom: 30px;
1926
  border: 1px solid #DCDFE5;
1927
  border-radius: 4px;
 
 
 
 
 
 
 
 
1928
  }
 
1929
  .tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{
1930
  display: none;
1931
  }
@@ -2004,7 +2067,6 @@ DatePicker
2004
 
2005
  .tutor-course-delete-popup{
2006
  text-align: center;
2007
- padding: 40px 35px;
2008
  font-size: 16px;
2009
  line-height: 25px;
2010
  font-weight: 400;
@@ -2059,47 +2121,54 @@ DatePicker
2059
  color: #ffffff;
2060
  }
2061
 
 
 
 
 
 
 
 
 
 
 
 
2062
  /* *********************** */
2063
  /* End Tutor Student Dashboard */
2064
  /************************ */
2065
  .tutor-profile-photo-upload-wrap{
2066
  width: 200px;
2067
- height: 200px;
2068
- margin-bottom: 50px;
2069
  position: relative;
2070
  }
2071
  .tutor-profile-photo-upload-wrap img{
2072
  width: 100%;
2073
- height: 100%;
 
2074
  }
2075
  a.tutor-profile-photo-upload-btn {
2076
  position: absolute;
2077
- bottom: 0;
2078
  background-color: var(--tutor-primary-color);
2079
  color: #fff;
2080
  display: block;
2081
  width: 100%;
2082
  text-align: CENTER;
2083
- padding: 7px 0;
2084
  }
 
 
 
 
 
 
 
2085
  .tutor-profile-photo-delete-btn{
2086
  position: absolute;
2087
  color: #ff000c;
2088
  right: 10px;
2089
  top: 10px;
2090
  }
2091
- .tutor-reset-password-form-wrap .tutor-form-group{
2092
- display: -webkit-box;
2093
- display: -ms-flexbox;
2094
- display: flex;
2095
- max-width: 500px;
2096
- }
2097
-
2098
- .tutor-reset-password-form-wrap .tutor-form-group label{
2099
- -webkit-box-flex: 0;
2100
- -ms-flex: 0 0 200px;
2101
- flex: 0 0 200px;
2102
- }
2103
  /**
2104
  Instructor
2105
  */
@@ -2257,6 +2326,7 @@ a.page-numbers:hover {
2257
  display: -webkit-box;
2258
  display: -ms-flexbox;
2259
  display: flex;
 
2260
  }
2261
  .tutor-lesson-sidebar{
2262
  -webkit-box-flex: 0;
@@ -2266,9 +2336,16 @@ a.page-numbers:hover {
2266
 
2267
  @media (max-width: 991px) {
2268
  .tutor-lesson-sidebar{
2269
- -webkit-box-flex: 0;
2270
- -ms-flex: 0 0 300px;
2271
- flex: 0 0 300px;
 
 
 
 
 
 
 
2272
  }
2273
  }
2274
 
@@ -2731,7 +2808,7 @@ a.page-numbers:hover {
2731
  .tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{
2732
  width: calc(50% - 22px);
2733
  text-align: center;
2734
- margin: 10px;
2735
  display: inline-block;
2736
  }
2737
 
@@ -2945,8 +3022,8 @@ ul.tutor-required-fields{
2945
  font-family: 'tutor';
2946
  margin-right: 5px;
2947
  content: "\e91d";
2948
- -webkit-animation: spin 2s infinite linear;
2949
- animation: spin 2s infinite linear;
2950
  display: inline-block;
2951
  }
2952
  .loading-lesson .tutor-lesson-video-wrap:before{
@@ -3151,6 +3228,12 @@ Course question and answer
3151
  color: var(--tutor-text-color);
3152
  }
3153
 
 
 
 
 
 
 
3154
  @media (max-width: 767px) {
3155
  .tutor-quiz-header .tutor-quiz-meta{
3156
  display: block;
@@ -3158,18 +3241,17 @@ Course question and answer
3158
  padding: 0;
3159
  }
3160
  .tutor-quiz-header .tutor-quiz-meta li{
3161
- display: inline-block;
3162
  color: var(--tutor-text-color);
3163
  margin: 5px;
3164
- border: 1px solid #dddddd;
3165
- padding: 5px 10px;
3166
- border-radius: 4px;
 
 
 
 
3167
  }
3168
- }
3169
- .tutor-quiz-header .tutor-quiz-meta li strong{
3170
- display: block;
3171
- color: var(--tutor-light-color);
3172
- font-weight: 400;
3173
  }
3174
  .tutor-quiz-attempt-history{
3175
  overflow-x: auto;
@@ -3213,6 +3295,34 @@ Course question and answer
3213
  .tutor-quiz-attempt-history table span.result-pass{
3214
  background: var(--tutor-success-button-color);
3215
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3216
  /*.attempt-reviewed-text {*/
3217
  /*color: #777;*/
3218
  /*font-size: 12px;*/
@@ -3273,9 +3383,10 @@ Course question and answer
3273
  height: 175px;
3274
  border-radius: 5px;
3275
  box-shadow: none;
3276
- min-width: 740px;
3277
  margin-bottom: 5px;
3278
  }
 
3279
  .tutor-quiz-answers-wrap textarea:focus{
3280
  background: transparent;
3281
  outline: none !important;
@@ -3401,6 +3512,17 @@ Course question and answer
3401
  vertical-align: top;
3402
  }
3403
 
 
 
 
 
 
 
 
 
 
 
 
3404
 
3405
  .answer-type-matching .quiz-answer-matching-items-wrap{
3406
  margin: 0 -10px;
@@ -4147,6 +4269,12 @@ social share
4147
  margin-right: 0;
4148
  }
4149
 
 
 
 
 
 
 
4150
  .tutor-single-course-meta ul li.tutor-social-share button{
4151
  margin: 0;
4152
  border: none;
@@ -4311,11 +4439,23 @@ social share
4311
  background: #fff;
4312
  padding: 60px;
4313
  width: 90%;
4314
- max-width: 850px;
4315
  max-height: 90%;
4316
  overflow-y: auto;
4317
  }
4318
 
 
 
 
 
 
 
 
 
 
 
 
 
4319
  button.tm-close.tutor-icon-line-cross {
4320
  position: absolute;
4321
  right: 23px;
@@ -4323,6 +4463,11 @@ button.tm-close.tutor-icon-line-cross {
4323
  background: transparent;
4324
  padding: 0;
4325
  font-size: 24px;
 
 
 
 
 
4326
  }
4327
 
4328
  .label-order-status{
14
  .tutor-wrap{
15
  color: var(--tutor-text-color);
16
  }
17
+
18
+ .tutor-wrap img{
19
+ max-width: 100%;
20
+ height: auto;
21
+ }
22
  /**
23
  Most Important CSS
24
  .tutor-container
163
  margin-bottom: 40px;
164
  }
165
 
166
+ .responsive-table-wrap{
167
+ overflow-x: auto;
168
+ }
169
+
170
  /********************/
171
  /*start single course*/
172
  /********************/
266
  margin-bottom: 5px;
267
  min-width: 95px;
268
  }
269
+ @media (max-width: 575px) {
270
+ .tutor-single-course-meta ul li{
271
+ margin-right: 10px;
272
+ }
273
+ }
274
+
275
  .tutor-single-course-meta ul li:last-child{
276
  margin-right: 0;
277
  }
351
  border: 1px solid #ddd;
352
  border-radius: 4px;
353
  }
354
+
355
  }
356
 
357
  .tutor-single-course-meta.tutor-lead-meta ul{
392
  content: ',';
393
  margin-right: 4px;
394
  }
395
+
396
+ @media (max-width: 575px){
397
+ .tutor-single-course-meta.tutor-lead-meta ul{
398
+ display: block;
399
+ }
400
+ .tutor-single-course-meta.tutor-lead-meta ul li{
401
+ display: block;
402
+ border: none;
403
+ margin: 0;
404
+ width: 100%;
405
+ padding: 0 0 10px;
406
+ }
407
+ .tutor-single-course-meta.tutor-lead-meta ul li span{
408
+ display: inline-block;
409
+ color: var(--tutor-text-color);
410
+ font-weight: 700;
411
+ }
412
+
413
+ .tutor-single-course-meta.tutor-lead-meta ul li span::after{
414
+ content: ':';
415
+ color: var(--tutor-text-color);
416
+ }
417
+ }
418
+
419
  /*benifit*/
420
  .tutor-course-benefits-content ul{
421
  list-style: none;
560
  border-radius: 4px;
561
  -webkit-transition: 300ms;
562
  transition: 300ms;
563
+ border: 1px solid rgba(0, 0, 0, 0.05);
564
  height: 100%;
565
  display: -webkit-box;
566
  display: -ms-flexbox;
667
  margin-right: 4px;
668
  margin-left: 0;
669
  }
670
+ .tutor-course-loop-title h2{
671
+ font-size: 20px;
672
  line-height: 28px;
673
+ font-weight: 600;
674
  margin-bottom: 17px;
675
+ }
676
+ .tutor-course-loop-title h2 a{
677
  color: var(--tutor-text-color);
678
  }
679
+ .tutor-course-loop-title h2 a:hover{
680
  color: var(--tutor-primary-color);
681
  }
682
+ .tutor-course-loop-meta{
683
+ margin-bottom: 15px;
684
+ color: var(--tutor-text-color);
685
+ }
686
+ .tutor-course-loop-meta > div{
687
+ display: inline-block;
688
+ }
689
+
690
+
691
+ .tutor-course-loop-meta > div i{
692
+ font-size: 16px;
693
+ margin-right: 4px;
694
+ }
695
+
696
+ .tutor-course-loop-meta > div i,
697
+ .tutor-course-loop-meta > div span{
698
+ vertical-align: middle;
699
+ }
700
+
701
+ .tutor-course-loop-meta > div + div{
702
+ margin-left: 10px;
703
+ }
704
+
705
  .tutor-loop-course-footer{
706
  padding: 15px;
707
+ border-top: 1px solid rgba(0, 0, 0, 0.05);
708
  color: #838791;
709
  font-size: 12px;
710
  line-height: 25px;
711
  border-bottom-left-radius: 4px;
712
  border-bottom-right-radius: 4px;
 
713
  font-weight: 400;
714
  }
715
  .tutor-loop-course-footer:after{
717
  display: table;
718
  clear: both;
719
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
720
  .tutor-loop-course-footer span.woocommerce-Price-currencySymbol{
721
  vertical-align: top;
722
  }
723
 
724
  .tutor-course-loop-price{
 
725
  color: var(--tutor-text-color);
726
+ font-size: 16px;
 
727
  }
728
  .tutor-course-loop-price .price del{
 
 
 
729
  font-weight: 400;
730
  }
731
 
741
  .tutor-course-loop-price .price del + ins{
742
  background: transparent;
743
  margin-left: 0;
744
+ text-decoration: none;
745
  }
746
+ .tutor-course-loop-price > .price{
747
+ display: flex;
748
+ align-items: center;
749
+ justify-content: flex-start;
750
+ font-weight: 600;
 
 
 
 
 
 
 
 
 
 
 
751
  }
752
+
753
+ .tutor-course-loop-price > .price .tutor-loop-cart-btn-wrap a{
754
+ color: var(--tutor-text-color);
755
+ position: relative;
756
+ line-height: 20px;
757
+ vertical-align: top;
758
+ display: block;
759
+ font-weight: 400;
760
  font-size: 14px;
761
+ background: transparent;
 
 
 
762
  padding: 0;
 
 
 
 
763
  }
764
+
765
+
766
+ .tutor-course-loop-price > .price .tutor-loop-cart-btn-wrap a:hover{
767
+ color: var(--tutor-primary-color);
768
  }
769
 
770
+
771
+ .tutor-course-loop-price > .price .tutor-loop-cart-btn-wrap{
772
+ margin-left: auto;
773
+ }
774
+ .tutor-course-loop-price > .price .tutor-loop-cart-btn-wrap a.added{
775
+ display: none;
776
  }
777
 
778
+ .tutor-course-loop-price > .price .tutor-loop-cart-btn-wrap a::before{
779
  content: '\e915';
780
+ font-family: 'tutor' !important;
781
+ speak: none;
782
+ font-style: normal;
783
+ font-weight: normal;
784
+ font-variant: normal;
785
+ text-transform: none;
786
+ line-height: 20px;
787
+ -webkit-font-smoothing: antialiased;
788
+ -moz-osx-font-smoothing: grayscale;
789
  margin-right: 5px;
790
+ vertical-align: top;
791
  }
792
 
793
+
794
+
 
795
 
796
  /* Standard syntax */
797
  @-webkit-keyframes mymove {
861
  }
862
  }
863
 
 
 
 
 
 
 
864
  .tutor-course-filter-wrap{
865
  clear: both;
866
+ margin-bottom: 50px;
867
  }
868
  .tutor-course-filter-form{
869
  display: inline-block;
943
 
944
  .tutor-loop-author > div a{
945
  color: var(--tutor-text-color);
946
+ font-weight: 500;
947
  -webkit-transition: 300ms;
948
  transition: 300ms;
949
  }
1078
  .tutor-wrap nav.course-enrolled-nav ul li{
1079
  display: inline-block;
1080
  }
1081
+
1082
+
1083
  .tutor-wrap nav.course-enrolled-nav ul li a{
1084
  display: block;
1085
  font-size: 16px;
1095
  border-bottom: 2px solid var(--tutor-primary-color);
1096
  color: var(--tutor-text-color);
1097
  }
1098
+
1099
+
1100
+ @media (max-width: 575px) {
1101
+ .tutor-wrap nav.course-enrolled-nav ul li{
1102
+ display: inline-block;
1103
+ }
1104
+ .tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a,
1105
+ .tutor-wrap nav.course-enrolled-nav ul li a{
1106
+ padding: 8px;
1107
+ margin: 0;
1108
+ }
1109
+ .tutor-wrap nav.course-enrolled-nav ul li.active a{
1110
+ border: none;
1111
+ color: var(--tutor-primary-color);
1112
+ }
1113
+ }
1114
+
1115
  /* *********************** */
1116
  /* Tutor Dashboard */
1117
  /* *********************** */
1125
  align-items: center;
1126
  padding-bottom: 30px;
1127
  border-bottom: 1px solid #DCDFE5;
1128
+ flex-wrap: wrap;
1129
  }
1130
 
1131
  .tutor-dashboard-header-avatar img{
1140
  -ms-flex-positive: 1;
1141
  flex-grow: 1;
1142
  padding-left: 20px;
1143
+ padding-top: 15px;
1144
+ padding-bottom: 15px;
1145
+ }
1146
+
1147
+ .tutor-dashboard-header-button{
1148
+ padding-top: 15px;
1149
  }
1150
 
1151
  .tutor-dashboard-header-display-name h4{
1152
  font-size: 30px;
1153
+ margin-top: 0px;
1154
+ margin-bottom: 10px;
1155
+ line-height: 34px;
1156
  }
1157
 
1158
  .tutor-dashboard-header-stats{
1161
  display: flex;
1162
  -ms-flex-wrap: wrap;
1163
  flex-wrap: wrap;
1164
+ line-height: 25px;
1165
  }
1166
 
1167
  .tutor-dashboard-header-stats > div:not(:first-child){
1169
  }
1170
 
1171
 
1172
+
1173
+
1174
  /* end dashboard header */
1175
 
1176
  /**
1317
  }
1318
 
1319
  /*dashboard quiz attempts*/
1320
+ .tutor-dashboard-content{
1321
+ margin-bottom: 60px;
1322
+ }
1323
  .tutor-dashboard-content .tutor-quiz-attempt-history tr th,
1324
  .tutor-dashboard-content .tutor-quiz-attempt-history tr td{
1325
  vertical-align: middle;
1342
  margin-right: 4px;
1343
  }
1344
 
1345
+
1346
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr th{
1347
+ background: #FAFBFC;
1348
+ }
1349
+
1350
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr td{
1351
+ background: #fff;
1352
+ }
1353
+
1354
+ @media (max-width: 768px) {
1355
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr{
1356
+ display: flex;
1357
+ flex-wrap: wrap;
1358
+ box-sizing: border-box;
1359
+ }
1360
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr th{
1361
+ display: none;
1362
+ }
1363
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr td{
1364
+ width: 100%;
1365
+ }
1366
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr td:not(:first-child){
1367
+ text-align: right;
1368
+ }
1369
+
1370
+ .tutor-dashboard-content .tutor-quiz-attempt-history table tr td:not(:first-child)::before{
1371
+ content: attr(title) ": ";
1372
+ float: left;
1373
+ font-weight: 700;
1374
+ }
1375
+
1376
+ }
1377
+
1378
  .tutor-dashboard-content .tutor-quiz-attempt-history table a{
1379
  color: var(--tutor-primary-color);
1380
  font-weight: 700;
1409
  display: -ms-flexbox;
1410
  display: flex;
1411
  }
1412
+
1413
  .tutor-dashboard-profile .tutor-dashboard-profile-item .heading{
1414
  min-width: 190px;
1415
  }
1416
 
1417
+ @media (max-width: 480px) {
1418
+ .tutor-dashboard-profile .tutor-dashboard-profile-item{
1419
+ flex-wrap: wrap;
1420
+ }
1421
+ .tutor-dashboard-profile .tutor-dashboard-profile-item .heading{
1422
+ min-width: 100%;
1423
+ width: 100%;
1424
+ font-weight: 700;
1425
+ margin-bottom: 6px;
1426
+ }
1427
+ }
1428
+
1429
  .tutor-dashboard-profile .tutor-dashboard-profile-item .content{
1430
  -webkit-box-flex: 1;
1431
  -ms-flex-positive: 1;
1543
  }
1544
 
1545
  @media (max-width: 991px) {
 
 
 
 
 
 
 
 
1546
  .tutor-dashboard-student .tutor-col-3,
1547
  .tutor-dashboard-student .tutor-col-9{
1548
  -webkit-box-flex: 0;
1644
 
1645
  /** Earning Report */
1646
  .tutor-date-range-filter-wrap{
 
 
 
1647
  margin: 15px 0 20px;
1648
  font-size: 12px;
1649
  }
1650
+
1651
+
1652
  .report-top-sub-menu{
1653
+ margin: 0 10px 5px 0;
1654
+ display: inline-block;
1655
+ font-size: 0;
 
 
 
 
1656
  }
1657
+
1658
  .report-top-sub-menu a{
1659
  text-decoration: none;
1660
  padding: 5px 8px;
1661
  border: 1px solid #D7DADF;
1662
  color: #AAAEB3;
1663
+ white-space: nowrap;
1664
+ display: inline-block;
1665
+ font-size: 12px;
1666
  }
1667
+
1668
+
1669
+ .report-top-sub-menu a:not(:first-child){
1670
+ margin-left: -1px;
1671
+ }
1672
+
1673
  .report-top-sub-menu a:hover{
1674
  background: #EDF0F9;
1675
  color: #333;
1679
  color: #ffffff;
1680
  border: 1px solid var(--tutor-primary-hover-color);
1681
  }
1682
+ .tutor-date-range-wrap{
1683
+ display: inline-block;
 
1684
  }
 
1685
  .report-date-range-form{
1686
  display: -webkit-box;
1687
  display: -ms-flexbox;
1688
  display: flex;
1689
  margin-bottom: 0;
1690
+ max-width: 370px;
1691
  }
1692
  .date-range-input{
1693
  position: relative;
 
1694
  }
1695
+
1696
+
1697
+ .date-range-input input{
1698
+ border-radius: 0 !important;
1699
+ margin: 0 !important;
1700
+ border-right: none !important;
1701
+ font-size: 14px;
1702
+ }
1703
+
1704
  .date-range-input:last-child{
1705
  margin-right: 0;
1706
  }
1707
+
1708
+
1709
+ .date-range-input:last-child button{
1710
+ border-radius: 0;
1711
+ }
1712
+
1713
  .date-range-input input, .date-range-input input[type=text]{
1714
  border: 1px solid #D7DADF;
1715
  box-shadow: none;
1718
  padding-right: 30px;
1719
  padding-top: 0;
1720
  padding-bottom: 0;
1721
+ width: 100%;
1722
  }
1723
  .date-range-input i.tutor-icon-calendar{
1724
  position: absolute;
1738
  .report-download-csv-icon a{
1739
  text-decoration: none;
1740
  }
1741
+
1742
+ .tutor-dashboard-statement-table-wrap{
1743
+ overflow-x: auto;
1744
+ }
1745
+
1746
  table.tutor-dashboard-statement-table p{
1747
  margin: 0;
1748
  padding: 0;
1764
  display: flex;
1765
  -ms-flex-wrap: wrap;
1766
  flex-wrap: wrap;
1767
+ margin: 0 -15px 40px;
1768
  }
1769
 
1770
  .withdraw-method-select-wrap .withdraw-method-select{
1772
  -ms-flex-positive: 1;
1773
  flex-grow: 1;
1774
  padding: 0 15px;
1775
+ margin-bottom: 30px;
1776
  }
1777
  .withdraw-method-select-wrap .withdraw-method-select label{
1778
  display: block;
1845
  padding: 0 15px 20px;
1846
  }
1847
 
1848
+ @media (max-width: 480px) {
1849
+ .withdraw-method-form > div{
1850
+ width: 100%;
1851
+ }
1852
+ }
1853
+
1854
  .withdraw-method-form > div.withdraw-account-save-btn-wrap{
1855
  width: 100%;
1856
  }
1905
 
1906
  /** END Withdraw */
1907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1908
  .tutor-mycourse-thumbnail {
1909
  -webkit-box-flex: 0;
1910
  -ms-flex: 0 0 250px;
1911
  flex: 0 0 250px;
1912
  -ms-flex-item-align: center;
1913
+ -webkit-background-size: cover;
1914
+ background-size: cover;
1915
+ background-position: center;
1916
  }
1917
  .tutor-mycourse-content {
1918
  padding: 20px;
1920
  -ms-flex: 1;
1921
  flex: 1;
1922
  }
1923
+
1924
+
1925
+ @media (max-width: 580px) {
1926
+ .tutor-mycourse-thumbnail{
1927
+ height: 200px;
1928
+ }
1929
+ .tutor-mycourse-thumbnail,
1930
+ .tutor-mycourse-content{
1931
+ min-width: 100%;
1932
+ width: 100%;
1933
+ }
1934
+ }
1935
+
1936
  .tutor-mycourse-content h3{
1937
  margin: 0 0 9px;
1938
  }
1979
  margin-bottom: 30px;
1980
  border: 1px solid #DCDFE5;
1981
  border-radius: 4px;
1982
+ flex-direction: row;
1983
+ overflow: hidden;
1984
+ }
1985
+
1986
+ @media (max-width: 580px) {
1987
+ .tutor-dashboard-content-inner .tutor-mycourse-wrap{
1988
+ flex-wrap: wrap;
1989
+ }
1990
  }
1991
+
1992
  .tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{
1993
  display: none;
1994
  }
2067
 
2068
  .tutor-course-delete-popup{
2069
  text-align: center;
 
2070
  font-size: 16px;
2071
  line-height: 25px;
2072
  font-weight: 400;
2121
  color: #ffffff;
2122
  }
2123
 
2124
+ @media (max-width: 768px) {
2125
+ .tutor-modal-button-group button{
2126
+ padding: 5px 20px;
2127
+ min-width: auto;
2128
+ margin-bottom: 6px;
2129
+ }
2130
+ .tutor-modal-button-group{
2131
+ margin-top: 20px;
2132
+ }
2133
+ }
2134
+
2135
  /* *********************** */
2136
  /* End Tutor Student Dashboard */
2137
  /************************ */
2138
  .tutor-profile-photo-upload-wrap{
2139
  width: 200px;
2140
+ height: auto;
2141
+ margin-bottom: 70px;
2142
  position: relative;
2143
  }
2144
  .tutor-profile-photo-upload-wrap img{
2145
  width: 100%;
2146
+ height: auto;
2147
+ display: block;
2148
  }
2149
  a.tutor-profile-photo-upload-btn {
2150
  position: absolute;
2151
+ top: 100%;
2152
  background-color: var(--tutor-primary-color);
2153
  color: #fff;
2154
  display: block;
2155
  width: 100%;
2156
  text-align: CENTER;
2157
+ padding: 9px 0;
2158
  }
2159
+
2160
+
2161
+ a.tutor-profile-photo-upload-btn:hover{
2162
+ background-color: var(--tutor-primary-hover-color);
2163
+ color: #fff;
2164
+ }
2165
+
2166
  .tutor-profile-photo-delete-btn{
2167
  position: absolute;
2168
  color: #ff000c;
2169
  right: 10px;
2170
  top: 10px;
2171
  }
 
 
 
 
 
 
 
 
 
 
 
 
2172
  /**
2173
  Instructor
2174
  */
2326
  display: -webkit-box;
2327
  display: -ms-flexbox;
2328
  display: flex;
2329
+ position: relative;
2330
  }
2331
  .tutor-lesson-sidebar{
2332
  -webkit-box-flex: 0;
2336
 
2337
  @media (max-width: 991px) {
2338
  .tutor-lesson-sidebar{
2339
+ position: absolute;
2340
+ left: 0;
2341
+ top: 70px;
2342
+ width: 400px;
2343
+ max-width: 95%;
2344
+ height: calc(100% - 70px);
2345
+ z-index: 9;
2346
+ background: #fff;
2347
+ overflow-y: auto;
2348
+ display: none;
2349
  }
2350
  }
2351
 
2808
  .tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{
2809
  width: calc(50% - 22px);
2810
  text-align: center;
2811
+ margin: 9px;
2812
  display: inline-block;
2813
  }
2814
 
3022
  font-family: 'tutor';
3023
  margin-right: 5px;
3024
  content: "\e91d";
3025
+ -webkit-animation: spin 1s steps(8) infinite;
3026
+ animation: spin 1s steps(8) infinite;
3027
  display: inline-block;
3028
  }
3029
  .loading-lesson .tutor-lesson-video-wrap:before{
3228
  color: var(--tutor-text-color);
3229
  }
3230
 
3231
+ .tutor-quiz-header .tutor-quiz-meta li strong{
3232
+ display: block;
3233
+ color: var(--tutor-light-color);
3234
+ font-weight: 400;
3235
+ }
3236
+
3237
  @media (max-width: 767px) {
3238
  .tutor-quiz-header .tutor-quiz-meta{
3239
  display: block;
3241
  padding: 0;
3242
  }
3243
  .tutor-quiz-header .tutor-quiz-meta li{
3244
+ display: block;
3245
  color: var(--tutor-text-color);
3246
  margin: 5px;
3247
+ border: none;
3248
+ padding: 0;
3249
+ border-radius: 0;
3250
+ }
3251
+ .tutor-quiz-header .tutor-quiz-meta li strong{
3252
+ display: inline-block;
3253
+ margin-right: 5px;
3254
  }
 
 
 
 
 
3255
  }
3256
  .tutor-quiz-attempt-history{
3257
  overflow-x: auto;
3295
  .tutor-quiz-attempt-history table span.result-pass{
3296
  background: var(--tutor-success-button-color);
3297
  }
3298
+
3299
+ @media (max-width: 767px) {
3300
+ .single-quiz-page.tutor-quiz-attempt-history table tr{
3301
+ display: flex;
3302
+ flex-wrap: wrap;
3303
+ overflow: hidden;
3304
+ }
3305
+ .single-quiz-page.tutor-quiz-attempt-history table tr th{
3306
+ display: none;
3307
+ }
3308
+ .single-quiz-page.tutor-quiz-attempt-history table tr td{
3309
+ width: 100%;
3310
+ }
3311
+
3312
+ .single-quiz-page.tutor-quiz-attempt-history table tr td:first-child{
3313
+ font-weight: 600;
3314
+ background: #f1f1f1;
3315
+ }
3316
+ .single-quiz-page.tutor-quiz-attempt-history table tr td:not(:first-child){
3317
+ text-align: right;
3318
+ }
3319
+ .single-quiz-page.tutor-quiz-attempt-history table tr td:not(:first-child)::before{
3320
+ content: attr(title) ": ";
3321
+ float: left;
3322
+ font-weight: 700;
3323
+ }
3324
+ }
3325
+
3326
  /*.attempt-reviewed-text {*/
3327
  /*color: #777;*/
3328
  /*font-size: 12px;*/
3383
  height: 175px;
3384
  border-radius: 5px;
3385
  box-shadow: none;
3386
+ min-width: 100%;
3387
  margin-bottom: 5px;
3388
  }
3389
+
3390
  .tutor-quiz-answers-wrap textarea:focus{
3391
  background: transparent;
3392
  outline: none !important;
3512
  vertical-align: top;
3513
  }
3514
 
3515
+ @media (max-width: 767px) {
3516
+ .answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{
3517
+ width: 50%;
3518
+ }
3519
+ }
3520
+
3521
+ @media (max-width: 575px) {
3522
+ .answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{
3523
+ width: 100%;
3524
+ }
3525
+ }
3526
 
3527
  .answer-type-matching .quiz-answer-matching-items-wrap{
3528
  margin: 0 -10px;
4269
  margin-right: 0;
4270
  }
4271
 
4272
+ @media (max-width: 575px) {
4273
+ .tutor-single-course-meta ul li.tutor-social-share{
4274
+ display: none;
4275
+ }
4276
+ }
4277
+
4278
  .tutor-single-course-meta ul li.tutor-social-share button{
4279
  margin: 0;
4280
  border: none;
4439
  background: #fff;
4440
  padding: 60px;
4441
  width: 90%;
4442
+ max-width: 750px;
4443
  max-height: 90%;
4444
  overflow-y: auto;
4445
  }
4446
 
4447
+ @media (max-width: 768px) {
4448
+ .tutor-frontend-modal .tutor-frontend-modal-content{
4449
+ padding: 40px;
4450
+ }
4451
+ }
4452
+
4453
+ @media (max-width: 540px) {
4454
+ .tutor-frontend-modal .tutor-frontend-modal-content{
4455
+ padding: 20px;
4456
+ }
4457
+ }
4458
+
4459
  button.tm-close.tutor-icon-line-cross {
4460
  position: absolute;
4461
  right: 23px;
4463
  background: transparent;
4464
  padding: 0;
4465
  font-size: 24px;
4466
+ border: none;
4467
+ color: var(--tutor-light-color);
4468
+ }
4469
+ button.tm-close.tutor-icon-line-cross:hover{
4470
+ color: red;
4471
  }
4472
 
4473
  .label-order-status{
assets/js/tutor-front.js CHANGED
@@ -378,6 +378,7 @@ jQuery(document).ready(function($){
378
  success: function (data) {
379
  $wrap.html(data.data.html);
380
  videoPlayer.init();
 
381
  },
382
  complete: function () {
383
  $wrap.removeClass('loading-lesson');
@@ -407,6 +408,7 @@ jQuery(document).ready(function($){
407
  success: function (data) {
408
  $wrap.html(data.data.html);
409
  init_quiz_builder();
 
410
  },
411
  complete: function () {
412
  $wrap.removeClass('loading-lesson');
378
  success: function (data) {
379
  $wrap.html(data.data.html);
380
  videoPlayer.init();
381
+ $('.tutor-lesson-sidebar').css('display', '');
382
  },
383
  complete: function () {
384
  $wrap.removeClass('loading-lesson');
408
  success: function (data) {
409
  $wrap.html(data.data.html);
410
  init_quiz_builder();
411
+ $('.tutor-lesson-sidebar').css('display', '');
412
  },
413
  complete: function () {
414
  $wrap.removeClass('loading-lesson');
classes/Admin.php CHANGED
@@ -29,7 +29,6 @@ class Admin{
29
 
30
  //Admin Footer Text
31
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
32
-
33
  //Register Course Widget
34
  add_action( 'widgets_init', array($this, 'register_course_widget') );
35
  }
@@ -45,8 +44,13 @@ class Admin{
45
 
46
  $course_post_type = tutor()->course_post_type;
47
 
48
- add_menu_page(__('Tutor LMS', 'tutor'), __('Tutor LMS', 'tutor'), 'manage_tutor_instructor', 'tutor', null, 'dashicons-welcome-learn-more', 2);
 
 
 
49
 
 
 
50
  add_submenu_page('tutor', __('Categories', 'tutor'), __('Categories', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-category&post_type='.$course_post_type, null );
51
 
52
  add_submenu_page('tutor', __('Tags', 'tutor'), __('Tags', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-tag&post_type='.$course_post_type, null );
@@ -71,10 +75,10 @@ class Admin{
71
  add_submenu_page('tutor', __('Settings', 'tutor'), __('Settings', 'tutor'), 'manage_tutor', 'tutor_settings', array($this, 'tutor_page') );
72
 
73
  add_submenu_page('tutor',__('Uninstall Tutor LMS', 'tutor'), null, 'deactivate_plugin', 'tutor-uninstall', array($this, 'tutor_uninstall'));
74
- /*
75
  if ( ! $hasPro){
76
  add_submenu_page( 'tutor', __( 'Get Pro', 'tutor' ), __( '<span class="dashicons dashicons-awards tutor-get-pro-text"></span> Get Pro', 'tutor' ), 'manage_options', 'tutor-get-pro', array($this, 'tutor_get_pro') );
77
- }*/
78
 
79
  }
80
 
@@ -311,7 +315,7 @@ class Admin{
311
  'gzip_enabled' => is_callable( 'gzopen' ),
312
  'mbstring_enabled' => extension_loaded( 'mbstring' ),
313
  );
314
-
315
  }
316
 
317
 
@@ -350,7 +354,7 @@ class Admin{
350
  foreach( $terms as $term ){
351
  /**D*/ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
352
  }
353
-
354
  //Delete tags if available
355
  $terms = wp_get_object_terms( $post_id, 'course-tag' );
356
  foreach( $terms as $term ){
@@ -390,7 +394,7 @@ class Admin{
390
 
391
  deactivate_plugins($plugin_file);
392
  }
393
-
394
  wp_redirect('plugins.php');
395
  die();
396
  }
29
 
30
  //Admin Footer Text
31
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
 
32
  //Register Course Widget
33
  add_action( 'widgets_init', array($this, 'register_course_widget') );
34
  }
44
 
45
  $course_post_type = tutor()->course_post_type;
46
 
47
+ $pro_text = '';
48
+ if ($hasPro){
49
+ $pro_text = ' '.__('Pro', 'tutor');
50
+ }
51
 
52
+ add_menu_page(__('Tutor LMS', 'tutor').$pro_text, __('Tutor LMS', 'tutor').$pro_text, 'manage_tutor_instructor', 'tutor', null,
53
+ 'dashicons-welcome-learn-more', 2);
54
  add_submenu_page('tutor', __('Categories', 'tutor'), __('Categories', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-category&post_type='.$course_post_type, null );
55
 
56
  add_submenu_page('tutor', __('Tags', 'tutor'), __('Tags', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-tag&post_type='.$course_post_type, null );
75
  add_submenu_page('tutor', __('Settings', 'tutor'), __('Settings', 'tutor'), 'manage_tutor', 'tutor_settings', array($this, 'tutor_page') );
76
 
77
  add_submenu_page('tutor',__('Uninstall Tutor LMS', 'tutor'), null, 'deactivate_plugin', 'tutor-uninstall', array($this, 'tutor_uninstall'));
78
+
79
  if ( ! $hasPro){
80
  add_submenu_page( 'tutor', __( 'Get Pro', 'tutor' ), __( '<span class="dashicons dashicons-awards tutor-get-pro-text"></span> Get Pro', 'tutor' ), 'manage_options', 'tutor-get-pro', array($this, 'tutor_get_pro') );
81
+ }
82
 
83
  }
84
 
315
  'gzip_enabled' => is_callable( 'gzopen' ),
316
  'mbstring_enabled' => extension_loaded( 'mbstring' ),
317
  );
318
+
319
  }
320
 
321
 
354
  foreach( $terms as $term ){
355
  /**D*/ wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
356
  }
357
+
358
  //Delete tags if available
359
  $terms = wp_get_object_terms( $post_id, 'course-tag' );
360
  foreach( $terms as $term ){
394
 
395
  deactivate_plugins($plugin_file);
396
  }
397
+
398
  wp_redirect('plugins.php');
399
  die();
400
  }
classes/Course.php CHANGED
@@ -34,6 +34,11 @@ class Course extends Tutor_Base {
34
  */
35
  add_action('wp_ajax_tutor_delete_dashboard_course', array($this, 'tutor_delete_dashboard_course'));
36
 
 
 
 
 
 
37
  }
38
  /**
39
  * Registering metabox
@@ -536,4 +541,26 @@ class Course extends Tutor_Base {
536
  }
537
 
538
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
539
  }
34
  */
35
  add_action('wp_ajax_tutor_delete_dashboard_course', array($this, 'tutor_delete_dashboard_course'));
36
 
37
+ /**
38
+ * Gutenberg author support
39
+ */
40
+
41
+ add_filter('wp_insert_post_data', array($this, 'tutor_add_gutenberg_author'), '99', 2);
42
  }
43
  /**
44
  * Registering metabox
541
  }
542
 
543
 
544
+ public function tutor_add_gutenberg_author($data , $postarr){
545
+ global $wpdb;
546
+
547
+ $post_author = (int) tutor_utils()->avalue_dot('post_author', $data);
548
+
549
+ if ( ! $post_author){
550
+ $user_ID = (int) tutor_utils()->avalue_dot('user_ID', $postarr);
551
+ if ($user_ID){
552
+ $data['post_author'] = $user_ID;
553
+ }else{
554
+ global $wpdb;
555
+
556
+ $post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
557
+ $post_author = (int) $wpdb->get_var("SELECT post_author FROM {$wpdb->posts} WHERE ID = {$post_ID} ");
558
+
559
+ $data['post_author'] = $post_author;
560
+ }
561
+ }
562
+
563
+ return $data;
564
+ }
565
+
566
  }
classes/Instructor.php CHANGED
@@ -9,6 +9,9 @@
9
 
10
  namespace TUTOR;
11
 
 
 
 
12
 
13
  class Instructor {
14
 
9
 
10
  namespace TUTOR;
11
 
12
+ if ( ! defined( 'ABSPATH' ) )
13
+ exit;
14
+
15
 
16
  class Instructor {
17
 
classes/Options.php CHANGED
@@ -125,6 +125,11 @@ class Options {
125
  'label' => __('General', 'tutor'),
126
  'desc' => __('Course Settings', 'tutor'),
127
  'fields' => array(
 
 
 
 
 
128
  'display_course_instructors' => array(
129
  'type' => 'checkbox',
130
  'label' => __('Display instructors profile', 'tutor'),
125
  'label' => __('General', 'tutor'),
126
  'desc' => __('Course Settings', 'tutor'),
127
  'fields' => array(
128
+ 'enable_gutenberg_course_edit' => array(
129
+ 'type' => 'checkbox',
130
+ 'label' => __('Enable Gutenberg', 'tutor'),
131
+ 'label_title' => __('Enable Gutenberg support in course edit page.', 'tutor'),
132
+ ),
133
  'display_course_instructors' => array(
134
  'type' => 'checkbox',
135
  'label' => __('Display instructors profile', 'tutor'),
classes/Post_types.php CHANGED
@@ -25,6 +25,8 @@ class Post_types{
25
  }
26
 
27
  public function register_course_post_types() {
 
 
28
  $labels = array(
29
  'name' => _x( 'Courses', 'post type general name', 'tutor' ),
30
  'singular_name' => _x( 'Course', 'post type singular name', 'tutor' ),
@@ -58,6 +60,7 @@ class Post_types{
58
  'menu_position' => null,
59
  'taxonomies' => array( 'course-category', 'course-tag' ),
60
  'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt'),
 
61
 
62
  'capabilities' => array(
63
  'edit_post' => 'edit_tutor_course',
25
  }
26
 
27
  public function register_course_post_types() {
28
+ $enable_gutenberg = (bool) tutor_utils()->get_option('enable_gutenberg_course_edit');
29
+
30
  $labels = array(
31
  'name' => _x( 'Courses', 'post type general name', 'tutor' ),
32
  'singular_name' => _x( 'Course', 'post type singular name', 'tutor' ),
60
  'menu_position' => null,
61
  'taxonomies' => array( 'course-category', 'course-tag' ),
62
  'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt'),
63
+ 'show_in_rest' => $enable_gutenberg,
64
 
65
  'capabilities' => array(
66
  'edit_post' => 'edit_tutor_course',
classes/Question.php CHANGED
@@ -3,6 +3,9 @@
3
 
4
  namespace TUTOR;
5
 
 
 
 
6
 
7
  class Question {
8
 
3
 
4
  namespace TUTOR;
5
 
6
+ if ( ! defined( 'ABSPATH' ) )
7
+ exit;
8
+
9
 
10
  class Question {
11
 
classes/Student.php CHANGED
@@ -9,6 +9,9 @@
9
 
10
  namespace TUTOR;
11
 
 
 
 
12
 
13
  class Student {
14
 
9
 
10
  namespace TUTOR;
11
 
12
+ if ( ! defined( 'ABSPATH' ) )
13
+ exit;
14
+
15
 
16
  class Student {
17
 
classes/Theme_Compatibility.php CHANGED
@@ -12,6 +12,9 @@
12
  namespace TUTOR;
13
 
14
 
 
 
 
15
  class Theme_Compatibility {
16
 
17
  public function __construct() {
12
  namespace TUTOR;
13
 
14
 
15
+ if ( ! defined( 'ABSPATH' ) )
16
+ exit;
17
+
18
  class Theme_Compatibility {
19
 
20
  public function __construct() {
classes/Tools.php CHANGED
@@ -2,6 +2,9 @@
2
 
3
  namespace TUTOR;
4
 
 
 
 
5
 
6
  class Tools {
7
 
2
 
3
  namespace TUTOR;
4
 
5
+ if ( ! defined( 'ABSPATH' ) )
6
+ exit;
7
+
8
 
9
  class Tools {
10
 
classes/Tutor.php CHANGED
@@ -47,6 +47,7 @@ final class Tutor{
47
  private $withdraw;
48
 
49
  private $course_widget;
 
50
 
51
  /**
52
  * @return null|Tutor
@@ -68,8 +69,6 @@ final class Tutor{
68
  $this->url = plugin_dir_url(TUTOR_FILE);
69
  $this->basename = plugin_basename(TUTOR_FILE);
70
 
71
- add_action('admin_init', array($this, 'tutor_course_post_type_update'));
72
-
73
  /**
74
  * Include Files
75
  */
@@ -113,6 +112,7 @@ final class Tutor{
113
  $this->withdraw = new Withdraw();
114
 
115
  $this->course_widget = new Course_Widget();
 
116
 
117
  /**
118
  * Run Method
@@ -202,7 +202,7 @@ final class Tutor{
202
  /**
203
  * Backward Compatibility for version < 1.2.0
204
  */
205
- if (version_compare(get_option('TUTOR_VERSION'), '1.2.0', '<')){
206
  /**
207
  * Creating New Database
208
  */
@@ -216,7 +216,7 @@ final class Tutor{
216
  /**
217
  * Backward Compatibility to < 1.3.1 for make course plural
218
  */
219
- if (version_compare(get_option('TUTOR_VERSION'), '1.3.1', '<')){
220
  global $wpdb;
221
 
222
  if ( ! get_option('is_course_post_type_updated')){
@@ -234,22 +234,6 @@ final class Tutor{
234
  wp_clear_scheduled_hook('tutor_once_in_day_run_schedule');
235
  }
236
 
237
- public function tutor_course_post_type_update(){
238
- /**
239
- * Backward Compatibility to < 1.3.1 for make course plural
240
- */
241
- if (version_compare(get_option('TUTOR_VERSION'), '1.3.1', '<')){
242
- global $wpdb;
243
-
244
- if ( ! get_option('is_course_post_type_updated')){
245
- $wpdb->update($wpdb->posts, array('post_type' => 'courses'), array('post_type' => 'course'));
246
- update_option('is_course_post_type_updated', true);
247
- update_option('tutor_version', '1.3.1');
248
- flush_rewrite_rules();
249
- }
250
- }
251
- }
252
-
253
  public function create_database(){
254
  global $wpdb;
255
 
47
  private $withdraw;
48
 
49
  private $course_widget;
50
+ private $upgrader;
51
 
52
  /**
53
  * @return null|Tutor
69
  $this->url = plugin_dir_url(TUTOR_FILE);
70
  $this->basename = plugin_basename(TUTOR_FILE);
71
 
 
 
72
  /**
73
  * Include Files
74
  */
112
  $this->withdraw = new Withdraw();
113
 
114
  $this->course_widget = new Course_Widget();
115
+ $this->upgrader = new Upgrader();
116
 
117
  /**
118
  * Run Method
202
  /**
203
  * Backward Compatibility for version < 1.2.0
204
  */
205
+ if (version_compare(get_option('tutor_version'), '1.2.0', '<')){
206
  /**
207
  * Creating New Database
208
  */
216
  /**
217
  * Backward Compatibility to < 1.3.1 for make course plural
218
  */
219
+ if (version_compare(get_option('tutor_version'), '1.3.1', '<')){
220
  global $wpdb;
221
 
222
  if ( ! get_option('is_course_post_type_updated')){
234
  wp_clear_scheduled_hook('tutor_once_in_day_run_schedule');
235
  }
236
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  public function create_database(){
238
  global $wpdb;
239
 
classes/TutorEDD.php CHANGED
@@ -5,6 +5,9 @@
5
 
6
  namespace TUTOR;
7
 
 
 
 
8
  class TutorEDD extends Tutor_Base {
9
 
10
  public function __construct() {
5
 
6
  namespace TUTOR;
7
 
8
+ if ( ! defined( 'ABSPATH' ) )
9
+ exit;
10
+
11
  class TutorEDD extends Tutor_Base {
12
 
13
  public function __construct() {
classes/Tutor_Base.php CHANGED
@@ -8,6 +8,8 @@
8
 
9
  namespace TUTOR;
10
 
 
 
11
 
12
  class Tutor_Base {
13
 
8
 
9
  namespace TUTOR;
10
 
11
+ if ( ! defined( 'ABSPATH' ) )
12
+ exit;
13
 
14
  class Tutor_Base {
15
 
classes/Upgrader.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace TUTOR;
4
+
5
+
6
+ if ( ! defined( 'ABSPATH' ) )
7
+ exit;
8
+
9
+ class Upgrader {
10
+
11
+ public function __construct() {
12
+ add_action('admin_init', array($this, 'init_upgrader'));
13
+ }
14
+
15
+ public function init_upgrader(){
16
+ $upgrades = $this->available_upgrades();
17
+
18
+ if (tutor_utils()->count($upgrades)){
19
+ foreach ($upgrades as $upgrade){
20
+ $this->{$upgrade}();
21
+ }
22
+ }
23
+ }
24
+
25
+ public function available_upgrades(){
26
+ $version = get_option('tutor_version');
27
+
28
+ $upgrades = array();
29
+ if ($version){
30
+ $upgrades[] = 'upgrade_to_1_3_1';
31
+ }
32
+
33
+ return $upgrades;
34
+ }
35
+
36
+ /**
37
+ * Upgrade to version 1.3.1
38
+ */
39
+ public function upgrade_to_1_3_1(){
40
+ if (version_compare(get_option('tutor_version'), '1.3.1', '<')) {
41
+ global $wpdb;
42
+
43
+ if ( ! get_option('is_course_post_type_updated')){
44
+ $wpdb->update($wpdb->posts, array('post_type' => 'courses'), array('post_type' => 'course'));
45
+ update_option('is_course_post_type_updated', true);
46
+ update_option('tutor_version', '1.3.1');
47
+ flush_rewrite_rules();
48
+ }
49
+
50
+ }
51
+ }
52
+
53
+
54
+ }
classes/User.php CHANGED
@@ -2,6 +2,9 @@
2
 
3
  namespace TUTOR;
4
 
 
 
 
5
 
6
  class User {
7
 
2
 
3
  namespace TUTOR;
4
 
5
+ if ( ! defined( 'ABSPATH' ) )
6
+ exit;
7
+
8
 
9
  class User {
10
 
classes/Utils.php CHANGED
@@ -3838,7 +3838,10 @@ class Utils {
3838
  * @since v.1.0.4
3839
  */
3840
  public function count($array = array()){
3841
- return is_array($array) && count($array);
 
 
 
3842
  }
3843
 
3844
  /**
3838
  * @since v.1.0.4
3839
  */
3840
  public function count($array = array()){
3841
+ if (is_array($array) && count($array)){
3842
+ return count($array);
3843
+ }
3844
+ return false;
3845
  }
3846
 
3847
  /**
classes/Withdraw.php CHANGED
@@ -10,7 +10,6 @@
10
 
11
  namespace TUTOR;
12
 
13
-
14
  if ( ! defined( 'ABSPATH' ) )
15
  exit;
16
 
10
 
11
  namespace TUTOR;
12
 
 
13
  if ( ! defined( 'ABSPATH' ) )
14
  exit;
15
 
classes/WooCommerce.php CHANGED
@@ -8,6 +8,9 @@
8
 
9
  namespace TUTOR;
10
 
 
 
 
11
  class WooCommerce extends Tutor_Base {
12
 
13
  public function __construct() {
@@ -264,6 +267,12 @@ class WooCommerce extends Tutor_Base {
264
  'label_title' => __('Enable WooComerce to sell course', 'tutor'),
265
  'desc' => __('By integrating WooCommerce, you can sell your course', 'tutor'),
266
  ),
 
 
 
 
 
 
267
  ),
268
  ),
269
  ),
8
 
9
  namespace TUTOR;
10
 
11
+ if ( ! defined( 'ABSPATH' ) )
12
+ exit;
13
+
14
  class WooCommerce extends Tutor_Base {
15
 
16
  public function __construct() {
267
  'label_title' => __('Enable WooComerce to sell course', 'tutor'),
268
  'desc' => __('By integrating WooCommerce, you can sell your course', 'tutor'),
269
  ),
270
+ 'enable_guest_course_cart' => array(
271
+ 'type' => 'checkbox',
272
+ 'label' => __('Enable / Disable', 'tutor'),
273
+ 'label_title' => __('Enable Add to cart by guest', 'tutor'),
274
+ 'desc' => __('From the course details page, any user without login can add to cart course', 'tutor'),
275
+ ),
276
  ),
277
  ),
278
  ),
includes/theme-compatibility/storefront/assets/css/style.css CHANGED
@@ -1,4 +1,4 @@
1
- body.single-lesson #content .col-full{
2
  width: 100%;
3
  max-width: 100%;
4
  padding: 0;
@@ -7,4 +7,4 @@ body.single-lesson #content .col-full{
7
  .tutor-container{
8
  max-width: 100%;
9
  padding: 0;
10
- }
1
+ body.single-lesson #content .col-full, body.single-tutor_quiz #content .col-full{
2
  width: 100%;
3
  max-width: 100%;
4
  padding: 0;
7
  .tutor-container{
8
  max-width: 100%;
9
  padding: 0;
10
+ }
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: lms, course, elearning, education, quiz, training, sell courses, courses,
5
  Requires at least: 4.5
6
  Tested up to: 5.2
7
  Requires PHP: 5.4.0
8
- Stable tag: 1.3.1
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
@@ -207,6 +207,22 @@ Tutor enables you to use any third party plugins without facing any compatibilit
207
 
208
  == Changelog ==
209
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  = 1.3.1 - 22 May, 2019 =
211
 
212
  * Added: status in the purchase history list
5
  Requires at least: 4.5
6
  Tested up to: 5.2
7
  Requires PHP: 5.4.0
8
+ Stable tag: 1.3.2
9
  License: GPLv3
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
207
 
208
  == Changelog ==
209
 
210
+ = 1.3.2 - 29 May, 2019 =
211
+
212
+ * Added: centralized tutor version upgrading system by a dedicated class called `Upgrader`
213
+ * Added: add to cart guest mode in WooCommerce integration based on Tutor LMS > settings > woocommerce
214
+ * Added: Gutenberg support on course edit page based on settings
215
+ * Added: Automatic free plugin install from pro when the pro version is activated but the free plugin does not exist (pro)
216
+ * Added: nice notice bar for install or activate free version from pro (pro)
217
+ * Added: Pro text in the tutor LMS dashboard menu when Tutor Pro plugin installed and activated
218
+ * Updated: a design for course listing, removed hover and moved it to straight course gird footer
219
+ * Fixed: a Gutenberg bug related post author on course post type, usually post_author column saved 0 if course edit with Gutenberg, we fixed this issue.
220
+ * Fixed: a template condition in the course description
221
+ * Removed: license restriction for features, it required now for auto-update (pro)
222
+ * Fixed: Response design all issue fixed
223
+ * Fixed: array count check and return issue in utils
224
+ * Fixed: a bug in dashboard/settings, withdraw menu removed from subscriber/users dashboard, and only shown in the instructor's dashboard.
225
+
226
  = 1.3.1 - 22 May, 2019 =
227
 
228
  * Added: status in the purchase history list
templates/dashboard.php CHANGED
@@ -77,8 +77,9 @@ do_action('tutor_dashboard/before/wrap'); ?>
77
  <?php
78
 
79
  if(current_user_can(tutor()->instructor_role)){
 
80
  ?>
81
- <a class="tutor-btn bordered-btn" href="<?php echo esc_url(add_query_arg(array('post_type'=>'course'),admin_url('post-new.php'))); ?>">
82
  <?php _e('<i class="tutor-icon-video-camera"></i> &nbsp; Upload A Course', 'tutor'); ?>
83
  </a>
84
  <?php
77
  <?php
78
 
79
  if(current_user_can(tutor()->instructor_role)){
80
+ $course_type = tutor()->course_post_type;
81
  ?>
82
+ <a class="tutor-btn bordered-btn" href="<?php echo esc_url(add_query_arg(array('post_type'=>$course_type),admin_url('post-new.php'))); ?>">
83
  <?php _e('<i class="tutor-icon-video-camera"></i> &nbsp; Upload A Course', 'tutor'); ?>
84
  </a>
85
  <?php
templates/dashboard/earning.php CHANGED
@@ -133,6 +133,13 @@ foreach ($chartData as $key => $salesCount){
133
  </div>
134
 
135
 
 
 
 
 
 
 
 
136
 
137
 
138
  <script>
@@ -143,8 +150,8 @@ foreach ($chartData as $key => $salesCount){
143
  labels: <?php echo json_encode(array_keys($chartData)); ?>,
144
  datasets: [{
145
  label: 'Earning',
146
- backgroundColor: '#3057D5',
147
- borderColor: '#3057D5',
148
  data: <?php echo json_encode(array_values($chartData)); ?>,
149
  borderWidth: 2,
150
  fill: false,
133
  </div>
134
 
135
 
136
+ <?php
137
+ $tutor_primary_color = tutor_utils()->get_option('tutor_primary_color');
138
+ if ( ! $tutor_primary_color){
139
+ $tutor_primary_color = '#3057D5';
140
+ }
141
+ ?>
142
+
143
 
144
 
145
  <script>
150
  labels: <?php echo json_encode(array_keys($chartData)); ?>,
151
  datasets: [{
152
  label: 'Earning',
153
+ backgroundColor: '<?php echo $tutor_primary_color; ?>',
154
+ borderColor: '<?php echo $tutor_primary_color; ?>',
155
  data: <?php echo json_encode(array_values($chartData)); ?>,
156
  borderWidth: 2,
157
  fill: false,
templates/dashboard/earning/statement.php CHANGED
@@ -3,64 +3,64 @@
3
 
4
  if ($statements->count) {
5
  ?>
6
-
7
- <table class="tutor-dashboard-statement-table">
8
- <tr>
9
- <th><?php _e('Course', 'tutor'); ?></th>
10
- <th><?php _e('Earning', 'tutor'); ?></th>
11
- <th><?php _e('Deduct', 'tutor'); ?></th>
12
- </tr>
13
-
14
- <?php
15
- foreach ($statements->results as $statement){
16
- ?>
17
  <tr>
18
- <td>
19
- <p>
20
- <a href="<?php echo get_the_permalink($statement->course_id); ?>" target="_blank">
21
- <?php echo $statement->course_title; ?>
22
- </a>
23
- </p>
24
 
25
- <p>
26
- <?php _e('Price', 'tutor'); ?>
27
- <?php echo tutor_utils()->tutor_price($statement->course_price_total); ?>
28
- </p>
 
 
 
 
 
 
29
 
30
- <p class="small-text">
31
- <span class="statement-order-<?php echo $statement->order_status; ?>"><?php echo $statement->order_status; ?></span> <?php
32
- _e('Order ID'); ?> #<?php echo $statement->order_id; ?>,
 
33
 
34
- <strong><?php _e('Date:', 'tutor') ?></strong>
35
- <i><?php echo date(get_option('date_format', strtotime($statement->created_at))).' '.date(get_option('time_format', strtotime($statement->created_at))) ?></i>
36
- </p>
37
 
38
- <?php
39
- $order = new WC_Order($statement->order_id);
40
- echo '<div class="statement-address"> <strong>Purchaser</strong> <address>'.$order->get_formatted_billing_address().'</address></div>';
41
- ?>
42
- </td>
43
- <td>
44
- <p><?php echo tutor_utils()->tutor_price($statement->instructor_amount); ?></p>
45
- <p class="small-text"> <?php _e('As per'); ?> <?php echo $statement->instructor_rate ?> (<?php echo $statement->commission_type ?>) </p>
46
- </td>
47
 
48
- <td>
49
- <p><?php _e('Commission', 'tutor'); ?> : <?php echo tutor_utils()->tutor_price($statement->admin_amount); ?> </p>
50
- <p class="small-text"><?php _e('Rate', 'tutor'); ?> : <?php echo $statement->admin_rate; ?> </p>
51
- <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->commission_type; ?> </p>
 
 
 
 
 
52
 
53
- <p><?php _e('Deducted', 'tutor'); ?> : <?php echo $statement->deduct_fees_name; ?> <?php echo tutor_utils()->tutor_price
54
- ($statement->deduct_fees_amount); ?>
55
- </p>
56
- <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->deduct_fees_type; ?> </p>
57
- </td>
58
- </tr>
59
- <?php
60
- }
61
- ?>
62
- </table>
63
 
 
 
 
 
 
 
 
 
 
 
 
64
  <?php
65
  }else{
66
  printf("<span>%s</span>", __('Statement data is empty', 'tutor'));
3
 
4
  if ($statements->count) {
5
  ?>
6
+ <div class="tutor-dashboard-statement-table-wrap">
7
+ <table class="tutor-dashboard-statement-table">
 
 
 
 
 
 
 
 
 
8
  <tr>
9
+ <th><?php _e('Course', 'tutor'); ?></th>
10
+ <th><?php _e('Earning', 'tutor'); ?></th>
11
+ <th><?php _e('Deduct', 'tutor'); ?></th>
12
+ </tr>
 
 
13
 
14
+ <?php
15
+ foreach ($statements->results as $statement){
16
+ ?>
17
+ <tr>
18
+ <td>
19
+ <p>
20
+ <a href="<?php echo get_the_permalink($statement->course_id); ?>" target="_blank">
21
+ <?php echo $statement->course_title; ?>
22
+ </a>
23
+ </p>
24
 
25
+ <p>
26
+ <?php _e('Price', 'tutor'); ?>
27
+ <?php echo tutor_utils()->tutor_price($statement->course_price_total); ?>
28
+ </p>
29
 
30
+ <p class="small-text">
31
+ <span class="statement-order-<?php echo $statement->order_status; ?>"><?php echo $statement->order_status; ?></span> <?php
32
+ _e('Order ID'); ?> #<?php echo $statement->order_id; ?>,
33
 
34
+ <strong><?php _e('Date:', 'tutor') ?></strong>
35
+ <i><?php echo date(get_option('date_format', strtotime($statement->created_at))).' '.date(get_option('time_format', strtotime($statement->created_at))) ?></i>
36
+ </p>
 
 
 
 
 
 
37
 
38
+ <?php
39
+ $order = new WC_Order($statement->order_id);
40
+ echo '<div class="statement-address"> <strong>Purchaser</strong> <address>'.$order->get_formatted_billing_address().'</address></div>';
41
+ ?>
42
+ </td>
43
+ <td>
44
+ <p><?php echo tutor_utils()->tutor_price($statement->instructor_amount); ?></p>
45
+ <p class="small-text"> <?php _e('As per'); ?> <?php echo $statement->instructor_rate ?> (<?php echo $statement->commission_type ?>) </p>
46
+ </td>
47
 
48
+ <td>
49
+ <p><?php _e('Commission', 'tutor'); ?> : <?php echo tutor_utils()->tutor_price($statement->admin_amount); ?> </p>
50
+ <p class="small-text"><?php _e('Rate', 'tutor'); ?> : <?php echo $statement->admin_rate; ?> </p>
51
+ <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->commission_type; ?> </p>
 
 
 
 
 
 
52
 
53
+ <p><?php _e('Deducted', 'tutor'); ?> : <?php echo $statement->deduct_fees_name; ?> <?php echo tutor_utils()->tutor_price
54
+ ($statement->deduct_fees_amount); ?>
55
+ </p>
56
+ <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->deduct_fees_type; ?> </p>
57
+ </td>
58
+ </tr>
59
+ <?php
60
+ }
61
+ ?>
62
+ </table>
63
+ </div>
64
  <?php
65
  }else{
66
  printf("<span>%s</span>", __('Statement data is empty', 'tutor'));
templates/dashboard/earning/statements.php CHANGED
@@ -125,62 +125,69 @@ if ($statements->count) {
125
  ?>
126
  </p>
127
 
128
- <table class="tutor-dashboard-statement-table">
129
- <tr>
130
- <th><?php _e('Course', 'tutor'); ?></th>
131
- <th><?php _e('Earning', 'tutor'); ?></th>
132
- <th><?php _e('Deduct', 'tutor'); ?></th>
133
- </tr>
134
-
135
- <?php
136
- foreach ($statements->results as $statement){
137
- ?>
138
  <tr>
139
- <td>
140
- <p>
141
- <a href="<?php echo get_the_permalink($statement->course_id); ?>" target="_blank">
142
- <?php echo $statement->course_title; ?>
143
- </a>
144
- </p>
145
-
146
- <p>
147
- <?php _e('Price', 'tutor'); ?>
148
- <?php echo tutor_utils()->tutor_price($statement->course_price_total); ?>
149
- </p>
150
-
151
- <p class="small-text">
152
- <span class="statement-order-<?php echo $statement->order_status; ?>"><?php echo $statement->order_status; ?></span> <?php
153
- _e('Order ID'); ?> #<?php echo $statement->order_id; ?>,
154
-
155
- <strong><?php _e('Date:', 'tutor') ?></strong>
156
- <i><?php echo date(get_option('date_format', strtotime($statement->created_at))).' '.date(get_option('time_format', strtotime($statement->created_at))) ?></i>
157
- </p>
158
-
159
- <?php
160
- $order = new WC_Order($statement->order_id);
161
- echo '<div class="statement-address"> <strong>Purchaser</strong> <address>'.$order->get_formatted_billing_address().'</address></div>';
162
- ?>
163
- </td>
164
- <td>
165
- <p><?php echo tutor_utils()->tutor_price($statement->instructor_amount); ?></p>
166
- <p class="small-text"> <?php _e('As per'); ?> <?php echo $statement->instructor_rate ?> (<?php echo $statement->commission_type ?>) </p>
167
- </td>
168
-
169
- <td>
170
- <p><?php _e('Commission', 'tutor'); ?> : <?php echo tutor_utils()->tutor_price($statement->admin_amount); ?> </p>
171
- <p class="small-text"><?php _e('Rate', 'tutor'); ?> : <?php echo $statement->admin_rate; ?> </p>
172
- <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->commission_type; ?> </p>
173
-
174
- <p><?php _e('Deducted', 'tutor'); ?> : <?php echo $statement->deduct_fees_name; ?> <?php echo tutor_utils()->tutor_price
175
- ($statement->deduct_fees_amount); ?>
176
- </p>
177
- <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->deduct_fees_type; ?> </p>
178
- </td>
179
  </tr>
180
- <?php
181
- }
182
- ?>
183
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  <?php } else{
185
  printf("<span>%s</span>", __('Statement data is empty', 'tutor'));
186
  } ?>
125
  ?>
126
  </p>
127
 
128
+ <div class="tutor-dashboard-statement-table-wrap">
129
+ <table class="tutor-dashboard-statement-table">
 
 
 
 
 
 
 
 
130
  <tr>
131
+ <th><?php _e('Course Info', 'tutor'); ?></th>
132
+ <th><?php _e('Earning', 'tutor'); ?></th>
133
+ <th><?php _e('Commission', 'tutor'); ?></th>
134
+ <th><?php _e('Deduct', 'tutor'); ?></th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  </tr>
136
+
137
+ <?php
138
+ foreach ($statements->results as $statement){
139
+ ?>
140
+ <tr>
141
+ <td>
142
+
143
+ <p class="small-text">
144
+ <span class="statement-order-<?php echo $statement->order_status; ?>"><?php echo $statement->order_status; ?></span>
145
+ &nbsp; <strong><?php _e('Date:', 'tutor') ?></strong>
146
+ <i><?php echo date(get_option('date_format', strtotime($statement->created_at))).' '.date(get_option('time_format', strtotime($statement->created_at))) ?></i>
147
+ </p>
148
+
149
+ <p>
150
+ <a href="<?php echo get_the_permalink($statement->course_id); ?>" target="_blank">
151
+ <?php echo $statement->course_title; ?>
152
+ </a>
153
+ </p>
154
+
155
+ <p>
156
+ <strong><?php _e('Price: ', 'tutor'); ?></strong>
157
+ <?php echo tutor_utils()->tutor_price($statement->course_price_total); ?>
158
+ </p>
159
+
160
+ <p class="small-text"><strong><?php _e('Order ID'); ?> #<?php echo $statement->order_id; ?></strong></p>
161
+
162
+ <?php
163
+ $order = new WC_Order($statement->order_id);
164
+ echo '<div class="statement-address"> <strong>Purchaser</strong> <address>'.$order->get_formatted_billing_address().'</address></div>';
165
+ ?>
166
+ </td>
167
+ <td>
168
+ <p><?php echo tutor_utils()->tutor_price($statement->instructor_amount); ?></p>
169
+ <p class="small-text"> <?php _e('As per'); ?> <?php echo $statement->instructor_rate ?> (<?php echo $statement->commission_type ?>) </p>
170
+ </td>
171
+
172
+ <td>
173
+ <p><?php echo tutor_utils()->tutor_price($statement->admin_amount); ?> </p>
174
+ <p class="small-text"><?php _e('Rate', 'tutor'); ?> : <?php echo $statement->admin_rate; ?> </p>
175
+ <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->commission_type; ?> </p>
176
+
177
+ </td>
178
+
179
+ <td>
180
+ <p><?php echo $statement->deduct_fees_name; ?> <?php echo tutor_utils()->tutor_price($statement->deduct_fees_amount); ?>
181
+ </p>
182
+ <p class="small-text"><?php _e('Type', 'tutor'); ?> : <?php echo $statement->deduct_fees_type; ?> </p>
183
+ </td>
184
+ </tr>
185
+ <?php
186
+ }
187
+ ?>
188
+ </table>
189
+ </div>
190
+
191
  <?php } else{
192
  printf("<span>%s</span>", __('Statement data is empty', 'tutor'));
193
  } ?>
templates/dashboard/enrolled-courses.php CHANGED
@@ -20,15 +20,11 @@
20
  while ($my_courses->have_posts()):
21
  $my_courses->the_post();
22
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
 
23
  ?>
24
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
25
-
26
- <div class="tutor-mycourse-thumbnail">
27
- <?php tutor_course_loop_thumbnail(); ?>
28
- </div>
29
-
30
  <div class="tutor-mycourse-content">
31
-
32
  <div class="tutor-mycourse-rating">
33
  <?php tutor_utils()->star_rating_generator($avg_rating); ?>
34
  <a href="<?php echo get_the_permalink().'#single-course-ratings'; ?>"><?php _e('Leave a rating', 'tutor') ?></a>
20
  while ($my_courses->have_posts()):
21
  $my_courses->the_post();
22
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
23
+ $tutor_course_img = get_tutor_course_thumbnail_src();
24
  ?>
25
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
26
+ <div class="tutor-mycourse-thumbnail" style="background-image: url(<?php echo esc_url($tutor_course_img); ?>)"></div>
 
 
 
 
27
  <div class="tutor-mycourse-content">
 
28
  <div class="tutor-mycourse-rating">
29
  <?php tutor_utils()->star_rating_generator($avg_rating); ?>
30
  <a href="<?php echo get_the_permalink().'#single-course-ratings'; ?>"><?php _e('Leave a rating', 'tutor') ?></a>
templates/dashboard/enrolled-courses/active-courses.php CHANGED
@@ -19,16 +19,12 @@
19
  while ($active_courses->have_posts()):
20
  $active_courses->the_post();
21
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
 
22
  ?>
23
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
24
 
25
- <div class="tutor-mycourse-thumbnail">
26
- <?php
27
 
28
- tutor_course_loop_thumbnail();
29
-
30
- ?>
31
- </div>
32
 
33
  <div class="tutor-mycourse-content">
34
 
19
  while ($active_courses->have_posts()):
20
  $active_courses->the_post();
21
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
22
+ $tutor_course_img = get_tutor_course_thumbnail_src();
23
  ?>
24
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
25
 
 
 
26
 
27
+ <div class="tutor-mycourse-thumbnail" style="background-image: url(<?php echo esc_url($tutor_course_img); ?>)"></div>
 
 
 
28
 
29
  <div class="tutor-mycourse-content">
30
 
templates/dashboard/enrolled-courses/completed-courses.php CHANGED
@@ -19,16 +19,12 @@
19
  $completed_courses->the_post();
20
 
21
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
 
22
  ?>
23
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
24
 
25
- <div class="tutor-mycourse-thumbnail">
26
- <?php
27
 
28
- tutor_course_loop_thumbnail();
29
-
30
- ?>
31
- </div>
32
 
33
  <div class="tutor-mycourse-content">
34
 
19
  $completed_courses->the_post();
20
 
21
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
22
+ $tutor_course_img = get_tutor_course_thumbnail_src();
23
  ?>
24
  <div class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
25
 
 
 
26
 
27
+ <div class="tutor-mycourse-thumbnail" style="background-image: url(<?php echo esc_url($tutor_course_img); ?>)"></div>
 
 
 
28
 
29
  <div class="tutor-mycourse-content">
30
 
templates/dashboard/logged-in.php CHANGED
@@ -1 +1 @@
1
- <h2>You are already logged in</h2>
1
+ <h2><?php _e('You are already logged in', 'tutor') ?></h2>
templates/dashboard/my-courses.php CHANGED
@@ -11,16 +11,11 @@
11
  setup_postdata($post);
12
 
13
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
 
14
  ?>
15
 
16
  <div id="tutor-dashboard-course-<?php the_ID(); ?>" class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
17
-
18
- <div class="tutor-mycourse-thumbnail">
19
- <?php
20
- tutor_course_loop_thumbnail();
21
- ?>
22
- </div>
23
-
24
  <div class="tutor-mycourse-content">
25
  <div class="tutor-mycourse-rating">
26
  <?php
11
  setup_postdata($post);
12
 
13
  $avg_rating = tutor_utils()->get_course_rating()->rating_avg;
14
+ $tutor_course_img = get_tutor_course_thumbnail_src();
15
  ?>
16
 
17
  <div id="tutor-dashboard-course-<?php the_ID(); ?>" class="tutor-mycourse-wrap tutor-mycourse-<?php the_ID(); ?>">
18
+ <div class="tutor-mycourse-thumbnail" style="background-image: url(<?php echo esc_url($tutor_course_img); ?>)"></div>
 
 
 
 
 
 
19
  <div class="tutor-mycourse-content">
20
  <div class="tutor-mycourse-rating">
21
  <?php
templates/dashboard/purchase_history.php CHANGED
@@ -5,41 +5,44 @@ $orders = tutor_utils()->get_orders_by_user_id();
5
 
6
  if (tutor_utils()->count($orders)){
7
  ?>
8
- <table>
9
- <tr>
10
- <th><?php _e('ID', 'tutor'); ?></th>
11
- <th><?php _e('Courses', 'tutor'); ?></th>
12
- <th><?php _e('Amount', 'tutor'); ?></th>
13
- <th><?php _e('Status', 'tutor'); ?></th>
14
- <th><?php _e('Date', 'tutor'); ?></th>
15
- </tr>
16
- <?php
17
- foreach ($orders as $order){
18
- $wc_order = wc_get_order($order->ID);
19
- ?>
20
- <tr>
21
- <td>#<?php echo $order->ID; ?></td>
22
- <td>
23
- <?php
24
- $courses = tutor_utils()->get_course_enrolled_ids_by_order_id($order->ID);
25
- if (tutor_utils()->count($courses)){
26
- foreach ($courses as $course){
27
- echo '<p>'.get_the_title($course['course_id']).'</p>';
28
- }
29
- }
30
- ?>
31
- </td>
32
- <td><?php echo tutor_utils()->tutor_price($wc_order->get_total()); ?></td>
33
- <td><?php echo tutor_utils()->order_status_context($order->post_status); ?></td>
 
 
 
 
 
 
 
 
 
 
 
34
 
35
- <td>
36
- <?php echo date_i18n(get_option('date_format'), strtotime($order->post_date)) ?>
37
- </td>
38
- </tr>
39
- <?php
40
- }
41
- ?>
42
- </table>
43
  <?php
44
  }else{
45
  echo _e('No purchase history available', 'tutor');
5
 
6
  if (tutor_utils()->count($orders)){
7
  ?>
8
+ <div class="responsive-table-wrap">
9
+ <table>
10
+ <tr>
11
+ <th><?php _e('ID', 'tutor'); ?></th>
12
+ <th><?php _e('Courses', 'tutor'); ?></th>
13
+ <th><?php _e('Amount', 'tutor'); ?></th>
14
+ <th><?php _e('Status', 'tutor'); ?></th>
15
+ <th><?php _e('Date', 'tutor'); ?></th>
16
+ </tr>
17
+ <?php
18
+ foreach ($orders as $order){
19
+ $wc_order = wc_get_order($order->ID);
20
+ ?>
21
+ <tr>
22
+ <td>#<?php echo $order->ID; ?></td>
23
+ <td>
24
+ <?php
25
+ $courses = tutor_utils()->get_course_enrolled_ids_by_order_id($order->ID);
26
+ if (tutor_utils()->count($courses)){
27
+ foreach ($courses as $course){
28
+ echo '<p>'.get_the_title($course['course_id']).'</p>';
29
+ }
30
+ }
31
+ ?>
32
+ </td>
33
+ <td><?php echo tutor_utils()->tutor_price($wc_order->get_total()); ?></td>
34
+ <td><?php echo tutor_utils()->order_status_context($order->post_status); ?></td>
35
+
36
+ <td>
37
+ <?php echo date_i18n(get_option('date_format'), strtotime($order->post_date)) ?>
38
+ </td>
39
+ </tr>
40
+ <?php
41
+ }
42
+ ?>
43
+ </table>
44
+ </div>
45
 
 
 
 
 
 
 
 
 
46
  <?php
47
  }else{
48
  echo _e('No purchase history available', 'tutor');
templates/dashboard/quiz-attempts.php CHANGED
@@ -32,7 +32,7 @@ if ($attempted_count){
32
  $passing_grade = tutor_utils()->get_quiz_option($attempt->quiz_id, 'passing_grade', 0);
33
  ?>
34
  <tr class="<?php echo esc_attr($earned_percentage >= $passing_grade ? 'pass' : 'fail') ?>">
35
- <td>
36
  <div>
37
  <?php
38
  echo $earned_percentage >= $passing_grade ? '<span class="result-pass">'.__('Pass', 'tutor').'</span>' : '<span class="result-fail">'.__('Fail', 'tutor').'</span>';
@@ -54,14 +54,13 @@ if ($attempted_count){
54
  </div>
55
  <a href="<?php echo get_the_permalink($attempt->course_id); ?>" target="_blank"><?php echo get_the_title($attempt->course_id); ?></a>
56
  </td>
57
- <td><?php echo $attempt->total_questions; ?> </td>
58
- <td> <?php echo $attempt->total_marks; ?> </td>
59
 
60
- <td>
61
  <?php echo $attempt->earned_marks."({$earned_percentage}%)"; ?>
62
  </td>
63
-
64
- <td>
65
  <?php
66
 
67
  $pass_marks = ($attempt->total_marks * $passing_grade) / 100;
32
  $passing_grade = tutor_utils()->get_quiz_option($attempt->quiz_id, 'passing_grade', 0);
33
  ?>
34
  <tr class="<?php echo esc_attr($earned_percentage >= $passing_grade ? 'pass' : 'fail') ?>">
35
+ <td class="td-course-title" title="<?php _e('Course Title', 'tutor'); ?>">
36
  <div>
37
  <?php
38
  echo $earned_percentage >= $passing_grade ? '<span class="result-pass">'.__('Pass', 'tutor').'</span>' : '<span class="result-fail">'.__('Fail', 'tutor').'</span>';
54
  </div>
55
  <a href="<?php echo get_the_permalink($attempt->course_id); ?>" target="_blank"><?php echo get_the_title($attempt->course_id); ?></a>
56
  </td>
57
+ <td title="<?php _e('Questions', 'tutor'); ?>" class="td-questions"><?php echo $attempt->total_questions; ?> </td>
58
+ <td title="<?php _e('Total Marks', 'tutor'); ?>" class="td-total-marks"> <?php echo $attempt->total_marks; ?> </td>
59
 
60
+ <td title="<?php _e('Earned Marks', 'tutor'); ?>" class="td-earned-marks">
61
  <?php echo $attempt->earned_marks."({$earned_percentage}%)"; ?>
62
  </td>
63
+ <td title="<?php _e('Pass Marks', 'tutor'); ?>" class="td-pass-marks">
 
64
  <?php
65
 
66
  $pass_marks = ($attempt->total_marks * $passing_grade) / 100;
templates/dashboard/settings.php CHANGED
@@ -18,9 +18,11 @@
18
  <li>
19
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
20
  </li>
21
- <li>
22
- <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
23
- </li>
 
 
24
 
25
  </ul>
26
  </div>
18
  <li>
19
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
20
  </li>
21
+ <?php if(current_user_can(tutor()->instructor_role)){ ?>
22
+ <li>
23
+ <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
24
+ </li>
25
+ <?php } ?>
26
 
27
  </ul>
28
  </div>
templates/dashboard/settings/education.php CHANGED
@@ -20,9 +20,11 @@
20
  <li>
21
  <a href="<?php /*echo esc_url($skill); */?>"> <?php /*_e('Expertise & Skill', 'tutor'); */?></a>
22
  </li>-->
23
- <li>
24
- <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
25
- </li>
 
 
26
 
27
  </ul>
28
  </div>
20
  <li>
21
  <a href="<?php /*echo esc_url($skill); */?>"> <?php /*_e('Expertise & Skill', 'tutor'); */?></a>
22
  </li>-->
23
+ <?php if(current_user_can(tutor()->instructor_role)){ ?>
24
+ <li>
25
+ <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
26
+ </li>
27
+ <?php } ?>
28
 
29
  </ul>
30
  </div>
templates/dashboard/settings/reset-password.php CHANGED
@@ -1,5 +1,3 @@
1
-
2
-
3
  <div class="tutor-dashboard-content-inner">
4
 
5
  <div class="tutor-dashboard-inline-links">
@@ -15,19 +13,17 @@
15
  <li class="active">
16
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
17
  </li>
18
- <li>
19
- <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
20
- </li>
 
 
21
 
22
  </ul>
23
  </div>
24
 
25
-
26
  <h3><?php _e('Reset Password', 'tutor') ?></h3>
27
 
28
-
29
-
30
-
31
  <div class="tutor-reset-password-form-wrap">
32
 
33
  <?php
@@ -59,19 +55,27 @@
59
 
60
  <?php do_action('tutor_reset_password_input_before') ?>
61
 
62
- <div class="tutor-form-group">
63
- <label class="tutor-form-col-3"> <?php _e('Previous Password', 'tutor'); ?> </label>
64
- <input type="password" name="previous_password">
 
 
 
 
65
  </div>
66
-
67
- <div class="tutor-form-group">
68
- <label><?php _e('New Password', 'tutor'); ?></label>
69
- <input type="password" name="new_password">
70
- </div>
71
-
72
- <div class="tutor-form-group">
73
- <label><?php _e('Confirm New Password', 'tutor'); ?></label>
74
- <input type="password" name="confirm_new_password">
 
 
 
 
75
  </div>
76
 
77
  <div class="tutor-form-group">
 
 
1
  <div class="tutor-dashboard-content-inner">
2
 
3
  <div class="tutor-dashboard-inline-links">
13
  <li class="active">
14
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
15
  </li>
16
+ <?php if(current_user_can(tutor()->instructor_role)){ ?>
17
+ <li>
18
+ <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
19
+ </li>
20
+ <?php } ?>
21
 
22
  </ul>
23
  </div>
24
 
 
25
  <h3><?php _e('Reset Password', 'tutor') ?></h3>
26
 
 
 
 
27
  <div class="tutor-reset-password-form-wrap">
28
 
29
  <?php
55
 
56
  <?php do_action('tutor_reset_password_input_before') ?>
57
 
58
+ <div class="tutor-form-row">
59
+ <div class="tutor-form-col-12">
60
+ <div class="tutor-form-group">
61
+ <label> <?php _e('Previous Password', 'tutor'); ?> </label>
62
+ <input type="password" name="previous_password">
63
+ </div>
64
+ </div>
65
  </div>
66
+ <div class="tutor-form-row">
67
+ <div class="tutor-form-col-6">
68
+ <div class="tutor-form-group">
69
+ <label><?php _e('New Password', 'tutor'); ?></label>
70
+ <input type="password" name="new_password">
71
+ </div>
72
+ </div>
73
+ <div class="tutor-form-col-6">
74
+ <div class="tutor-form-group">
75
+ <label><?php _e('Confirm New Password', 'tutor'); ?></label>
76
+ <input type="password" name="confirm_new_password">
77
+ </div>
78
+ </div>
79
  </div>
80
 
81
  <div class="tutor-form-group">
templates/dashboard/settings/skill.php CHANGED
@@ -20,10 +20,11 @@
20
  <li class="active">
21
  <a href="<?php /*echo esc_url($skill); */?>"> <?php /*_e('Expertise & Skill'); */?></a>
22
  </li>-->
23
- <li>
24
- <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
25
- </li>
26
-
 
27
  </ul>
28
  </div>
29
 
20
  <li class="active">
21
  <a href="<?php /*echo esc_url($skill); */?>"> <?php /*_e('Expertise & Skill'); */?></a>
22
  </li>-->
23
+ <?php if(current_user_can(tutor()->instructor_role)){ ?>
24
+ <li>
25
+ <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
26
+ </li>
27
+ <?php } ?>
28
  </ul>
29
  </div>
30
 
templates/dashboard/settings/withdraw-settings.php CHANGED
@@ -1,7 +1,5 @@
1
 
2
-
3
  <div class="tutor-dashboard-content-inner">
4
-
5
  <div class="tutor-dashboard-inline-links">
6
  <?php
7
  $settings_url = tutor_utils()->get_tutor_dashboard_page_permalink('settings');
@@ -14,16 +12,16 @@
14
  </li>
15
  <li>
16
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
17
- </li>
18
- <li class="active">
19
- <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
20
- </li>
 
21
  </ul>
22
  </div>
23
 
24
  <h3><?php _e('Select a withdraw method', 'tutor') ?></h3>
25
 
26
-
27
  <form id="tutor-withdraw-account-set-form" action="" method="post">
28
 
29
  <?php
1
 
 
2
  <div class="tutor-dashboard-content-inner">
 
3
  <div class="tutor-dashboard-inline-links">
4
  <?php
5
  $settings_url = tutor_utils()->get_tutor_dashboard_page_permalink('settings');
12
  </li>
13
  <li>
14
  <a href="<?php echo esc_url($reset_password); ?>"> <?php _e('Reset Password', 'tutor'); ?></a>
15
+ </li><?php if(current_user_can(tutor()->instructor_role)){ ?>
16
+ <li class="active">
17
+ <a href="<?php echo esc_url($withdraw); ?>"> <?php _e('Withdraw', 'tutor'); ?></a>
18
+ </li>
19
+ <?php } ?>
20
  </ul>
21
  </div>
22
 
23
  <h3><?php _e('Select a withdraw method', 'tutor') ?></h3>
24
 
 
25
  <form id="tutor-withdraw-account-set-form" action="" method="post">
26
 
27
  <?php
templates/loop/course.php CHANGED
@@ -29,7 +29,6 @@ do_action('tutor_course/loop/before_title');
29
  do_action('tutor_course/loop/title');
30
  do_action('tutor_course/loop/after_title');
31
 
32
-
33
  do_action('tutor_course/loop/before_meta');
34
  do_action('tutor_course/loop/meta');
35
  do_action('tutor_course/loop/after_meta');
29
  do_action('tutor_course/loop/title');
30
  do_action('tutor_course/loop/after_title');
31
 
 
32
  do_action('tutor_course/loop/before_meta');
33
  do_action('tutor_course/loop/meta');
34
  do_action('tutor_course/loop/after_meta');
templates/loop/footer.php CHANGED
@@ -1,10 +1,3 @@
1
  <div class="tutor-loop-course-footer">
2
- <?php
3
- $course_duration = get_tutor_course_duration_context();
4
- $course_students = tutor_utils()->count_enrolled_users_by_course();
5
-
6
- if(!empty($course_duration)) echo "<i class='tutor-icon-clock'></i> <span>$course_duration</span>";
7
- echo "<i class='tutor-icon-user'></i> <span>$course_students</span>";
8
- tutor_course_loop_price();
9
- ?>
10
  </div>
1
  <div class="tutor-loop-course-footer">
2
+ <?php tutor_course_loop_price(); ?>
 
 
 
 
 
 
 
3
  </div>
templates/loop/meta.php CHANGED
@@ -3,29 +3,48 @@ global $post, $authordata;
3
 
4
  $profile_url = tutor_utils()->profile_url($authordata->ID);
5
  ?>
6
- <div class="tutor-loop-author">
7
- <div class="tutor-single-course-avatar">
8
- <a href="<?php echo $profile_url; ?>"> <?php echo tutor_utils()->get_tutor_avatar($post->post_author); ?></a>
9
- </div>
10
 
11
- <div class="tutor-single-course-author-name">
12
- <span><?php _e('by', 'tutor'); ?></span>
13
- <a href="<?php echo $profile_url; ?>"><?php echo get_the_author(); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  </div>
15
 
16
- <div class="tutor-course-lising-category">
17
- <?php
18
- $course_categories = get_tutor_course_categories();
19
- if(!empty($course_categories) && is_array($course_categories ) && count($course_categories)){
20
- ?>
21
- <span><?php esc_html_e('In', 'tutor') ?></span>
22
- <?php
23
- foreach ($course_categories as $course_category){
24
- $category_name = $course_category->name;
25
- $category_link = get_term_link($course_category->term_id);
26
- echo "<a href='$category_link'>$category_name </a>";
 
 
 
 
 
 
 
 
 
 
 
27
  }
28
- }
29
- ?>
30
- </div>
31
  </div>
3
 
4
  $profile_url = tutor_utils()->profile_url($authordata->ID);
5
  ?>
 
 
 
 
6
 
7
+
8
+
9
+ <div class="tutor-course-loop-meta">
10
+ <?php
11
+ $course_duration = get_tutor_course_duration_context();
12
+ $course_students = tutor_utils()->count_enrolled_users_by_course();
13
+ ?>
14
+ <div class="tutor-single-loop-meta">
15
+ <i class='tutor-icon-user'></i><span><?php echo $course_students; ?></span>
16
+ </div>
17
+ <?php
18
+ if(!empty($course_duration)) { ?>
19
+ <div class="tutor-single-loop-meta">
20
+ <i class='tutor-icon-clock'></i> <span><?php echo $course_duration; ?></span>
21
+ </div>
22
+ <?php } ?>
23
  </div>
24
 
25
+
26
+ <div class="tutor-loop-author">
27
+ <div class="tutor-single-course-avatar">
28
+ <a href="<?php echo $profile_url; ?>"> <?php echo tutor_utils()->get_tutor_avatar($post->post_author); ?></a>
29
+ </div>
30
+ <div class="tutor-single-course-author-name">
31
+ <span><?php _e('by', 'tutor'); ?></span>
32
+ <a href="<?php echo $profile_url; ?>"><?php echo get_the_author(); ?></a>
33
+ </div>
34
+
35
+ <div class="tutor-course-lising-category">
36
+ <?php
37
+ $course_categories = get_tutor_course_categories();
38
+ if(!empty($course_categories) && is_array($course_categories ) && count($course_categories)){
39
+ ?>
40
+ <span><?php esc_html_e('In', 'tutor') ?></span>
41
+ <?php
42
+ foreach ($course_categories as $course_category){
43
+ $category_name = $course_category->name;
44
+ $category_link = get_term_link($course_category->term_id);
45
+ echo "<a href='$category_link'>$category_name </a>";
46
+ }
47
  }
48
+ ?>
49
+ </div>
 
50
  </div>
templates/loop/rating.php CHANGED
@@ -13,6 +13,8 @@ if ( ! defined( 'ABSPATH' ) ) {
13
 
14
  ?>
15
 
 
 
16
  <div class="tutor-loop-rating-wrap">
17
  <?php
18
  $course_rating = tutor_utils()->get_course_rating();
13
 
14
  ?>
15
 
16
+
17
+
18
  <div class="tutor-loop-rating-wrap">
19
  <?php
20
  $course_rating = tutor_utils()->get_course_rating();
templates/loop/title.php CHANGED
@@ -10,5 +10,6 @@
10
  ?>
11
 
12
  <div class="tutor-course-loop-title">
13
- <a href="<?php echo get_the_permalink(); ?>"><h2><?php the_title(); ?></h2></a>
14
- </div>
 
10
  ?>
11
 
12
  <div class="tutor-course-loop-title">
13
+ <h2><a href="<?php echo get_the_permalink(); ?>"><?php the_title(); ?></a></h2>
14
+ </div>
15
+
templates/single-course-enrolled-announcements.php CHANGED
@@ -17,7 +17,7 @@ do_action('tutor_course/single/enrolled/before/wrap');
17
  <div <?php tutor_post_class('tutor-single-anouncement-wrap tutor-page-wrap'); ?>>
18
  <div class="tutor-container">
19
  <div class="tutor-row">
20
- <div class="tutor-col-8">
21
  <?php do_action('tutor_course/single/enrolled/before/wrap'); ?>
22
  <?php tutor_course_enrolled_lead_info(); ?>
23
  <?php tutor_course_enrolled_nav(); ?>
17
  <div <?php tutor_post_class('tutor-single-anouncement-wrap tutor-page-wrap'); ?>>
18
  <div class="tutor-container">
19
  <div class="tutor-row">
20
+ <div class="tutor-col-8 tutor-col-md-100">
21
  <?php do_action('tutor_course/single/enrolled/before/wrap'); ?>
22
  <?php tutor_course_enrolled_lead_info(); ?>
23
  <?php tutor_course_enrolled_nav(); ?>
templates/single-course-enrolled-overview.php CHANGED
@@ -16,7 +16,7 @@ do_action('tutor_course/single/enrolled/before/wrap');
16
  <div <?php tutor_post_class('tutor-single-overview-wrap tutor-page-wrap'); ?>>
17
  <div class="tutor-container">
18
  <div class="tutor-row">
19
- <div class="tutor-col-8">
20
  <?php tutor_course_enrolled_lead_info(); ?>
21
  <?php tutor_course_enrolled_nav(); ?>
22
  <?php get_tutor_posts_attachments(); ?>
16
  <div <?php tutor_post_class('tutor-single-overview-wrap tutor-page-wrap'); ?>>
17
  <div class="tutor-container">
18
  <div class="tutor-row">
19
+ <div class="tutor-col-8 tutor-col-md-100">
20
  <?php tutor_course_enrolled_lead_info(); ?>
21
  <?php tutor_course_enrolled_nav(); ?>
22
  <?php get_tutor_posts_attachments(); ?>
templates/single-course-enrolled-questions.php CHANGED
@@ -17,7 +17,7 @@ get_header();
17
  <div <?php tutor_post_class('tutor-question-answare-wrap tutor-page-wrap'); ?>>
18
  <div class="tutor-container">
19
  <div class="tutor-row">
20
- <div class="tutor-col-8">
21
  <?php tutor_course_enrolled_lead_info(); ?>
22
  <?php tutor_course_enrolled_nav(); ?>
23
  <?php tutor_course_question_and_answer(); ?>
17
  <div <?php tutor_post_class('tutor-question-answare-wrap tutor-page-wrap'); ?>>
18
  <div class="tutor-container">
19
  <div class="tutor-row">
20
+ <div class="tutor-col-8 tutor-col-md-100">
21
  <?php tutor_course_enrolled_lead_info(); ?>
22
  <?php tutor_course_enrolled_nav(); ?>
23
  <?php tutor_course_question_and_answer(); ?>
templates/single/course/add-to-cart.php CHANGED
@@ -12,17 +12,29 @@ if ( ! defined( 'ABSPATH' ) )
12
  exit;
13
  $isLoggedIn = is_user_logged_in();
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  $tutor_form_class = apply_filters( 'tutor_enroll_form_classes', array(
16
  'tutor-enroll-form',
17
  ) );
18
 
19
- $is_purchasable = tutor_utils()->is_course_purchasable();
20
  $tutor_course_sell_by = apply_filters('tutor_course_sell_by', null);
21
 
22
  do_action('tutor_course/single/add-to-cart/before');
23
  ?>
24
 
25
- <div class="tutor-single-add-to-cart-box <?php echo ! $isLoggedIn ? 'cart-required-login' : ''; ?> ">
26
  <?php
27
  if ($is_purchasable && $tutor_course_sell_by){
28
  tutor_load_template('single.course.add-to-cart-'.$tutor_course_sell_by);
12
  exit;
13
  $isLoggedIn = is_user_logged_in();
14
 
15
+ $enable_course_sell_by_woocommerce = tutor_utils()->get_option('enable_course_sell_by_woocommerce');
16
+ $enable_guest_course_cart = tutor_utils()->get_option('enable_guest_course_cart');
17
+
18
+ $is_purchasable = tutor_utils()->is_course_purchasable();
19
+
20
+ $required_loggedin_class = '';
21
+ if ( ! $isLoggedIn){
22
+ $required_loggedin_class = apply_filters('tutor_enroll_required_login_class', 'cart-required-login');
23
+ }
24
+ if ($is_purchasable && $enable_course_sell_by_woocommerce && $enable_guest_course_cart){
25
+ $required_loggedin_class = '';
26
+ }
27
+
28
  $tutor_form_class = apply_filters( 'tutor_enroll_form_classes', array(
29
  'tutor-enroll-form',
30
  ) );
31
 
 
32
  $tutor_course_sell_by = apply_filters('tutor_course_sell_by', null);
33
 
34
  do_action('tutor_course/single/add-to-cart/before');
35
  ?>
36
 
37
+ <div class="tutor-single-add-to-cart-box <?php echo $required_loggedin_class; ?> ">
38
  <?php
39
  if ($is_purchasable && $tutor_course_sell_by){
40
  tutor_load_template('single.course.add-to-cart-'.$tutor_course_sell_by);
templates/single/course/course-content.php CHANGED
@@ -13,24 +13,27 @@
13
  do_action('tutor_course/single/before/content');
14
 
15
  global $post;
16
- $content = get_the_content();
17
- if ( empty($content)){
18
- return;
19
- }
20
  ?>
21
 
22
- <div class="tutor-single-course-segment tutor-course-content-wrap">
23
- <div class="course-content-title">
24
- <h4 class="tutor-segment-title"><?php _e('Description', 'tutor'); ?></h4>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  </div>
26
 
27
- <div class="tutor-course-content-content">
28
- <?php
29
- the_content();
30
- //echo wpautop($content);
31
- ?>
32
- </div>
33
- </div>
34
-
35
 
36
  <?php do_action('tutor_course/single/after/content'); ?>
13
  do_action('tutor_course/single/before/content');
14
 
15
  global $post;
 
 
 
 
16
  ?>
17
 
18
+ <div class="tutor-single-course-segment tutor-course-content-wrap">
19
+ <?php
20
+ if ( ! empty(get_the_content())){
21
+ ?>
22
+ <div class="course-content-title">
23
+ <h4 class="tutor-segment-title"><?php _e('Description', 'tutor'); ?></h4>
24
+ </div>
25
+ <?php
26
+ }
27
+ ?>
28
+
29
+
30
+ <div class="tutor-course-content-content">
31
+ <?php
32
+ the_content();
33
+ //echo wpautop($content);
34
+ ?>
35
+ </div>
36
  </div>
37
 
 
 
 
 
 
 
 
 
38
 
39
  <?php do_action('tutor_course/single/after/content'); ?>
templates/single/course/tags.php CHANGED
@@ -17,7 +17,7 @@ $course_tags = get_tutor_course_tags();
17
  if(is_array($course_tags) && count($course_tags)){ ?>
18
  <div class="tutor-single-course-segment">
19
  <div class="course-benefits-title">
20
- <h4 class="tutor-segment-title"><?php esc_html_e('Skills', 'tutor') ?></h4>
21
  </div>
22
  <div class="tutor-course-tags">
23
  <?php
17
  if(is_array($course_tags) && count($course_tags)){ ?>
18
  <div class="tutor-single-course-segment">
19
  <div class="course-benefits-title">
20
+ <h4 class="tutor-segment-title"><?php esc_html_e('Tags', 'tutor') ?></h4>
21
  </div>
22
  <div class="tutor-course-tags">
23
  <?php
templates/single/quiz/body.php CHANGED
@@ -93,7 +93,7 @@ $attempt_remaining = $attempts_allowed - $attempted_count;
93
 
94
  echo '<h4 class="question-text">';
95
  if ( ! $hide_question_number_overview){
96
- echo $question_i;
97
  }
98
  echo $question->question_title;
99
  echo '</h4>';
@@ -397,7 +397,7 @@ $attempt_remaining = $attempts_allowed - $attempted_count;
397
  ?>
398
  <h4 class="tutor-quiz-attempt-history-title"><?php _e('Previous attempts', 'tutor'); ?></h4>
399
 
400
- <div class="tutor-quiz-attempt-history">
401
  <table>
402
  <tr>
403
  <th><?php _e('Time', 'tutor'); ?></th>
@@ -412,7 +412,7 @@ $attempt_remaining = $attempts_allowed - $attempted_count;
412
  ?>
413
 
414
  <tr>
415
- <td>
416
  <?php
417
  echo date_i18n(get_option('date_format'), strtotime($attempt->attempt_started_at)).' '.date_i18n(get_option('time_format'), strtotime($attempt->attempt_started_at));
418
 
@@ -420,29 +420,29 @@ $attempt_remaining = $attempts_allowed - $attempted_count;
420
  ?>
421
  <p class="attempt-reviewed-text">
422
  <?php
423
- echo __('Manually reviewed at', 'tutor').' <br /> '.date_i18n(get_option('date_format', strtotime($attempt->manually_reviewed_at))).' '.date_i18n(get_option('time_format', strtotime($attempt->manually_reviewed_at)));
424
  ?>
425
  </p>
426
  <?php
427
  }
428
  ?>
429
  </td>
430
- <td>
431
  <?php echo $attempt->total_questions; ?>
432
  </td>
433
 
434
- <td>
435
  <?php echo $attempt->total_marks; ?>
436
  </td>
437
 
438
- <td>
439
  <?php
440
  $earned_percentage = $attempt->earned_marks > 0 ? ( number_format(($attempt->earned_marks * 100) / $attempt->total_marks)) : 0;
441
  echo $attempt->earned_marks."({$earned_percentage}%)";
442
  ?>
443
  </td>
444
 
445
- <td>
446
  <?php
447
 
448
  $pass_marks = ($attempt->total_marks * $passing_grade) / 100;
@@ -453,7 +453,7 @@ $attempt_remaining = $attempts_allowed - $attempted_count;
453
  ?>
454
  </td>
455
 
456
- <td>
457
  <?php
458
  if ($earned_percentage >= $passing_grade){
459
  echo '<span class="result-pass">'.__('Pass', 'tutor').'</span>';
93
 
94
  echo '<h4 class="question-text">';
95
  if ( ! $hide_question_number_overview){
96
+ echo $question_i. ". ";
97
  }
98
  echo $question->question_title;
99
  echo '</h4>';
397
  ?>
398
  <h4 class="tutor-quiz-attempt-history-title"><?php _e('Previous attempts', 'tutor'); ?></h4>
399
 
400
+ <div class="tutor-quiz-attempt-history single-quiz-page">
401
  <table>
402
  <tr>
403
  <th><?php _e('Time', 'tutor'); ?></th>
412
  ?>
413
 
414
  <tr>
415
+ <td title="<?php _e('Time', 'tutor'); ?>">
416
  <?php
417
  echo date_i18n(get_option('date_format'), strtotime($attempt->attempt_started_at)).' '.date_i18n(get_option('time_format'), strtotime($attempt->attempt_started_at));
418
 
420
  ?>
421
  <p class="attempt-reviewed-text">
422
  <?php
423
+ echo __('Manually reviewed at', 'tutor').date_i18n(get_option('date_format', strtotime($attempt->manually_reviewed_at))).' '.date_i18n(get_option('time_format', strtotime($attempt->manually_reviewed_at)));
424
  ?>
425
  </p>
426
  <?php
427
  }
428
  ?>
429
  </td>
430
+ <td title="<?php _e('Questions', 'tutor'); ?>">
431
  <?php echo $attempt->total_questions; ?>
432
  </td>
433
 
434
+ <td title="<?php _e('Total Marks', 'tutor'); ?>">
435
  <?php echo $attempt->total_marks; ?>
436
  </td>
437
 
438
+ <td title="<?php _e('Earned Marks', 'tutor'); ?>">
439
  <?php
440
  $earned_percentage = $attempt->earned_marks > 0 ? ( number_format(($attempt->earned_marks * 100) / $attempt->total_marks)) : 0;
441
  echo $attempt->earned_marks."({$earned_percentage}%)";
442
  ?>
443
  </td>
444
 
445
+ <td title="<?php _e('Pass Mark', 'tutor'); ?>">
446
  <?php
447
 
448
  $pass_marks = ($attempt->total_marks * $passing_grade) / 100;
453
  ?>
454
  </td>
455
 
456
+ <td title="<?php _e('Result', 'tutor'); ?>">
457
  <?php
458
  if ($earned_percentage >= $passing_grade){
459
  echo '<span class="result-pass">'.__('Pass', 'tutor').'</span>';
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.3.1
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.3.1');
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.3.2
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.3.2');
21
  define('TUTOR_FILE', __FILE__);
22
 
23