PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 All 140 releases
← All changes | assets/src/apps/js/admin/pages/widgets.js +91 -29 4.1.6.9.1 → 4.4.9 View file →
@@ -11,51 +11,113 @@
11 11 function formatCourseSelection( repo ) {
12 12 return repo.title.rendered || repo.text;
13 13 }
14 14
15 -function autocompleteWidget( widget = null ) {
15 +/*function autocompleteWidget( widget = null ) {
16 16 const searchs = $( '.lp-widget_select_course' );
17 17 const wpRestUrl = searchs.data( 'rest-url' );
18 18 const postType = searchs.data( 'post_type' ) || 'lp_course';
19 19
20 - searchs.select2( {
21 - ajax: {
22 - method: 'GET',
23 - url: wpRestUrl + 'wp/v2/' + postType,
24 - dataType: 'json',
25 - delay: 250,
26 - data( params ) {
27 - return {
28 - search: params.term,
29 - };
20 + if ( postType === 'lp_course' ) {
21 + const dataStruct = {
22 + urlApi: Api.admin.apiSearchCourses,
23 + dataType: 'courses',
24 + keyGetValue: {
25 + value: 'ID',
26 + text: '{{post_title}} (#{{ID}})',
27 + key_render: {
28 + post_title: 'post_title',
29 + ID: 'ID',
30 + },
30 31 },
31 - processResults( data, params ) {
32 - params.page = params.page || 1;
32 + };
33 + const dataStructJson = JSON.stringify( dataStruct );
34 + const widgetListEl = document.querySelector( '#widget-list' );
35 + let nonTomSelectWidgetEls = '';
36 + if ( widgetListEl ) {
37 + const tomSelectWidgetEls = Array.prototype.slice.call( widgetListEl.querySelectorAll( '.lp-widget_select_course' ) );
38 + nonTomSelectWidgetEls = Array.prototype.slice.call( searchs ).filter( ( el ) => ! tomSelectWidgetEls.includes( el ) );
39 + }
33 40
34 - return {
35 - results: data,
36 - };
41 + nonTomSelectWidgetEls.forEach( ( nonTomSelectWidgetEl ) => {
42 + $( nonTomSelectWidgetEl ).attr( 'data-struct', dataStructJson );
43 + initTomSelect( nonTomSelectWidgetEl );
44 + } );
45 + } else {
46 + searchs.select2( {
47 + ajax: {
48 + method: 'GET',
49 + url: wpRestUrl + 'wp/v2/' + postType,
50 + dataType: 'json',
51 + delay: 250,
52 + data( params ) {
53 + return {
54 + search: params.term,
55 + };
56 + },
57 + processResults( data, params ) {
58 + params.page = params.page || 1;
59 +
60 + return {
61 + results: data,
62 + };
63 + },
64 + cache: true,
37 65 },
38 - cache: true,
39 - },
40 - escapeMarkup( markup ) {
41 - return markup;
42 - },
43 - minimumInputLength: 2,
44 - templateResult: formatCourse, // omitted for brevity, see the source of this page
45 - templateSelection: formatCourseSelection, // omitted for brevity, see the source of this page
46 - } );
47 -}
66 + escapeMarkup( markup ) {
67 + return markup;
68 + },
69 + minimumInputLength: 2,
70 + templateResult: formatCourse, // omitted for brevity, see the source of this page
71 + templateSelection: formatCourseSelection, // omitted for brevity, see the source of this page
72 + } );
73 + }
74 +}*/
48 75
49 76 document.addEventListener( 'DOMContentLoaded', function( event ) {
50 77 if ( document.querySelector( '#widgets-editor' ) ) {
51 78 $( document ).on( 'widget-added', function( event, widget ) {
52 - autocompleteWidget( widget );
79 + //autocompleteWidget( widget );
53 80 } );
54 81 } else {
55 82 $( document ).on( 'learnpress/widgets/select', function() {
56 - autocompleteWidget();
83 + //autocompleteWidget();
84 + sortItem();
57 85 } );
58 86
59 - autocompleteWidget();
87 + //autocompleteWidget();
60 88 }
61 89 } );
90 +
91 +//Sortable checkbox
92 +document.addEventListener( 'DOMContentLoaded', function( event ) {
93 + sortItem();
94 +} );
95 +
96 +$( document ).on( 'widget-added widget-updated', function( event ) {
97 + sortItem();
98 +} );
99 +
100 +function sortItem() {
101 + $( '.widget-content .sortable' ).sortable( {
102 + handle: '.drag',
103 +
104 + start( event, ui ) {
105 +
106 + },
107 + update( event, ui ) {
108 + const value = [];
109 + $( this ).children().map( function() {
110 + value.push( $( this ).find( 'input' ).val() );
111 + } );
112 +
113 + value.join( ',' );
114 +
115 + const fieldSort = $( this ).closest( '.widget-content' ).find( 'input.fields-sort' );
116 + fieldSort.val( value );
117 + fieldSort.trigger( 'change' );
118 + },
119 + stop( event, ui ) {
120 +
121 + },
122 + } );
123 +}