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 | inc/admin/views/quiz/question-actions.php +172 -172 4.3.9 → 4.4.9 View file →
@@ -1,172 +1,172 @@
1 -<?php
2 -/**
3 - * Admin Quiz Editor: Question actions.
4 - *
5 - * @since 3.0.0
6 - */
7 -?>
8 -
9 -<script type="text/x-template" id="tmpl-lp-quiz-question-actions">
10 - <div class="question-actions table-row" :class="status">
11 - <div class="sort lp-sortable-handle">
12 - <?php learn_press_admin_view( 'svg-icon' ); ?>
13 - </div>
14 - <div class="order">{{index +1}}</div>
15 - <div class="name" @dblclick="toggle">
16 - <input type="text" class="question-title" v-model="question.title" @change="changeTitle" @blur="updateTitle" @keyup.enter="updateTitle" @keyup="keyUp">
17 - </div>
18 - <div class="type">
19 - <a>{{question.type.label}}</a>
20 - <ul>
21 - <li v-for="(type, key) in questionTypes" :class="active(key)">
22 - <a href="" :data-type="key" @click.prevent="changeType(key)">{{type}}</a>
23 - </li>
24 - </ul>
25 - </div>
26 - <div class="actions">
27 - <div class="lp-box-data-actions lp-toolbar-buttons">
28 - <div class="lp-toolbar-btn lp-title-attr-tip" v-if="!disableUpdateList" data-content-tip="<?php esc_attr_e( 'Duplicate', 'learnpress' ); ?>">
29 - <a href="" class="lp-btn-icon dashicons dashicons-admin-page" @click.prevent="clone"></a>
30 - </div>
31 - <div class="lp-toolbar-btn lp-title-attr-tip" data-content-tip="<?php esc_attr_e( 'Edit an item', 'learnpress' ); ?>">
32 - <a :href="url" target="_blank" class="lp-btn-icon dashicons dashicons-edit"></a>
33 - </div>
34 - <div class="lp-toolbar-btn lp-btn-remove lp-toolbar-btn-dropdown" v-if="!disableUpdateList">
35 - <a class="lp-btn-icon dashicons dashicons-trash" @click.prevent="remove"></a>
36 - <ul>
37 - <li>
38 - <a @click.prevent="remove" class="remove"><?php esc_html_e( 'Removed from the quiz', 'learnpress' ); ?></a>
39 - </li>
40 - <li>
41 - <a @click.prevent="deletePermanently" class="delete"><?php esc_html_e( 'Move to trash', 'learnpress' ); ?></a>
42 - </li>
43 - </ul>
44 - </div>
45 - <span :class="['lp-toolbar-btn lp-btn-toggle', question.open ?'open' : 'close']" @click="toggle"></span>
46 - </div>
47 - </div>
48 - </div>
49 -</script>
50 -
51 -<script type="text/javascript">
52 - jQuery( function($) {
53 - var $Vue = window.$Vue || Vue;
54 - var $store = window.LP_Quiz_Store;
55 -
56 - $Vue.component('lp-quiz-question-actions', {
57 - template: '#tmpl-lp-quiz-question-actions',
58 - props: ['question', 'index'],
59 - data: function() {
60 - return {
61 - title: this.question.title,
62 - changed: false
63 - };
64 - },
65 - mounted: function() {
66 - this.$nextTick(function() {
67 - var $ = jQuery;
68 -
69 - $(this.$el).find('.lp-title-attr-tip').LP('QuickTip', {
70 - closeInterval: 0,
71 - arrowOffset: 'el',
72 - tipClass: 'preview-item-tip'
73 - });
74 -
75 - $(document).on('mousedown', '.section-item .drag', function(e) {
76 - $('html, body').addClass('moving');
77 - }).on('mouseup', function (e) {
78 - $('html, body').removeClass('moving');
79 - })
80 - })
81 - },
82 - computed: {
83 - // question status
84 - status: function() {
85 - return $store.getters['lqs/statusUpdateQuestionItem'][this.question.id] || '';
86 - },
87 - // url edit question
88 - url: function() {
89 - return 'post.php?post=' + this.question.id + '&action=edit';
90 - },
91 - // list question types
92 - questionTypes: function() {
93 - return $store.getters['questionTypes'];
94 - },
95 - // disable update list questions
96 - disableUpdateList: function() {
97 - return $store.getters['lqs/disableUpdateList'];
98 - }
99 - },
100 - methods: {
101 - // check question type active
102 - active: function(type) {
103 - var classes = [''];
104 -
105 - if (this.question.type.key === type) {
106 - classes.push('active');
107 - }
108 -
109 - var supportTypes = $store.getters['lqs/supportAnswerOptions'];
110 - if (supportTypes.indexOf(type) === -1 || supportTypes.indexOf(this.question.type.key) === -1) {
111 - classes.push('disabled')
112 - }
113 -
114 - return classes;
115 - },
116 - // onchange question title
117 - changeTitle: function() {
118 - this.changed = true;
119 - },
120 - // update question title
121 - updateTitle: function() {
122 - if (this.changed) {
123 - $store.dispatch('lqs/updateQuestionTitle', this.question);
124 - }
125 - this.changed = false;
126 - },
127 - // change question type
128 - changeType: function(type) {
129 - if (this.question.type.key !== type) {
130 - $store.dispatch('lqs/changeQuestionType', {
131 - question_id: this.question.id,
132 - type: type
133 - });
134 - }
135 - },
136 - // clone question
137 - clone: function() {
138 - $store.dispatch('lqs/cloneQuestion', this.question);
139 - },
140 - // remove question from quiz
141 - remove: function () {
142 - $store.dispatch('lqs/removeQuestion', this.question);
143 - },
144 - // delete permanently question
145 - deletePermanently: function() {
146 - if (!confirm($store.getters['i18n/all'].confirm_trash_question.replace('{{QUESTION_NAME}}', this.question.title))) {
147 - return;
148 - }
149 - $store.dispatch('lqs/deleteQuestion', this.question);
150 - },
151 - // toggle question
152 - toggle: function() {
153 - $store.dispatch('lqs/toggleQuestion', this.question);
154 - },
155 - // navigation questions
156 - keyUp: function(e) {
157 - var keyCode = e.keyCode;
158 - // escape update question title
159 - if (keyCode === 27) {
160 - this.question.title = this.title;
161 - } else {
162 - this.$emit('nav', {key: e.keyCode, order: this.index});
163 - }
164 - },
165 - getQuestionsSupportAnswerOptions: function() {
166 - var supportTypes = $store.getters['lqs/supportAnswerOptions'];
167 - return supportTypes.indexOf(this.question.type.key) !== -1 ? lodash.pick(this.questionTypes, supportTypes) : false;
168 - }
169 - }
170 - });
171 - });
172 -</script>
1 +<?php
2 +/**
3 + * Admin Quiz Editor: Question actions.
4 + *
5 + * @since 3.0.0
6 + */
7 +?>
8 +
9 +<script type="text/x-template" id="tmpl-lp-quiz-question-actions">
10 + <div class="question-actions table-row" :class="status">
11 + <div class="sort lp-sortable-handle">
12 + <?php learn_press_admin_view( 'svg-icon' ); ?>
13 + </div>
14 + <div class="order">{{index +1}}</div>
15 + <div class="name" @dblclick="toggle">
16 + <input type="text" class="question-title" v-model="question.title" @change="changeTitle" @blur="updateTitle" @keyup.enter="updateTitle" @keyup="keyUp">
17 + </div>
18 + <div class="type">
19 + <a>{{question.type.label}}</a>
20 + <ul>
21 + <li v-for="(type, key) in questionTypes" :class="active(key)">
22 + <a href="" :data-type="key" @click.prevent="changeType(key)">{{type}}</a>
23 + </li>
24 + </ul>
25 + </div>
26 + <div class="actions">
27 + <div class="lp-box-data-actions lp-toolbar-buttons">
28 + <div class="lp-toolbar-btn lp-title-attr-tip" v-if="!disableUpdateList" data-content-tip="<?php esc_attr_e( 'Duplicate', 'learnpress' ); ?>">
29 + <a href="" class="lp-btn-icon dashicons dashicons-admin-page" @click.prevent="clone"></a>
30 + </div>
31 + <div class="lp-toolbar-btn lp-title-attr-tip" data-content-tip="<?php esc_attr_e( 'Edit an item', 'learnpress' ); ?>">
32 + <a :href="url" target="_blank" class="lp-btn-icon dashicons dashicons-edit"></a>
33 + </div>
34 + <div class="lp-toolbar-btn lp-btn-remove lp-toolbar-btn-dropdown" v-if="!disableUpdateList">
35 + <a class="lp-btn-icon dashicons dashicons-trash" @click.prevent="remove"></a>
36 + <ul>
37 + <li>
38 + <a @click.prevent="remove" class="remove"><?php esc_html_e( 'Removed from the quiz', 'learnpress' ); ?></a>
39 + </li>
40 + <li>
41 + <a @click.prevent="deletePermanently" class="delete"><?php esc_html_e( 'Move to trash', 'learnpress' ); ?></a>
42 + </li>
43 + </ul>
44 + </div>
45 + <span :class="['lp-toolbar-btn lp-btn-toggle', question.open ?'open' : 'close']" @click="toggle"></span>
46 + </div>
47 + </div>
48 + </div>
49 +</script>
50 +
51 +<script type="text/javascript">
52 + jQuery( function($) {
53 + var $Vue = window.$Vue || Vue;
54 + var $store = window.LP_Quiz_Store;
55 +
56 + $Vue.component('lp-quiz-question-actions', {
57 + template: '#tmpl-lp-quiz-question-actions',
58 + props: ['question', 'index'],
59 + data: function() {
60 + return {
61 + title: this.question.title,
62 + changed: false
63 + };
64 + },
65 + mounted: function() {
66 + this.$nextTick(function() {
67 + var $ = jQuery;
68 +
69 + $(this.$el).find('.lp-title-attr-tip').LP('QuickTip', {
70 + closeInterval: 0,
71 + arrowOffset: 'el',
72 + tipClass: 'preview-item-tip'
73 + });
74 +
75 + $(document).on('mousedown', '.section-item .drag', function(e) {
76 + $('html, body').addClass('moving');
77 + }).on('mouseup', function (e) {
78 + $('html, body').removeClass('moving');
79 + })
80 + })
81 + },
82 + computed: {
83 + // question status
84 + status: function() {
85 + return $store.getters['lqs/statusUpdateQuestionItem'][this.question.id] || '';
86 + },
87 + // url edit question
88 + url: function() {
89 + return 'post.php?post=' + this.question.id + '&action=edit';
90 + },
91 + // list question types
92 + questionTypes: function() {
93 + return $store.getters['questionTypes'];
94 + },
95 + // disable update list questions
96 + disableUpdateList: function() {
97 + return $store.getters['lqs/disableUpdateList'];
98 + }
99 + },
100 + methods: {
101 + // check question type active
102 + active: function(type) {
103 + var classes = [''];
104 +
105 + if (this.question.type.key === type) {
106 + classes.push('active');
107 + }
108 +
109 + var supportTypes = $store.getters['lqs/supportAnswerOptions'];
110 + if (supportTypes.indexOf(type) === -1 || supportTypes.indexOf(this.question.type.key) === -1) {
111 + classes.push('disabled')
112 + }
113 +
114 + return classes;
115 + },
116 + // onchange question title
117 + changeTitle: function() {
118 + this.changed = true;
119 + },
120 + // update question title
121 + updateTitle: function() {
122 + if (this.changed) {
123 + $store.dispatch('lqs/updateQuestionTitle', this.question);
124 + }
125 + this.changed = false;
126 + },
127 + // change question type
128 + changeType: function(type) {
129 + if (this.question.type.key !== type) {
130 + $store.dispatch('lqs/changeQuestionType', {
131 + question_id: this.question.id,
132 + type: type
133 + });
134 + }
135 + },
136 + // clone question
137 + clone: function() {
138 + $store.dispatch('lqs/cloneQuestion', this.question);
139 + },
140 + // remove question from quiz
141 + remove: function () {
142 + $store.dispatch('lqs/removeQuestion', this.question);
143 + },
144 + // delete permanently question
145 + deletePermanently: function() {
146 + if (!confirm($store.getters['i18n/all'].confirm_trash_question.replace('{{QUESTION_NAME}}', this.question.title))) {
147 + return;
148 + }
149 + $store.dispatch('lqs/deleteQuestion', this.question);
150 + },
151 + // toggle question
152 + toggle: function() {
153 + $store.dispatch('lqs/toggleQuestion', this.question);
154 + },
155 + // navigation questions
156 + keyUp: function(e) {
157 + var keyCode = e.keyCode;
158 + // escape update question title
159 + if (keyCode === 27) {
160 + this.question.title = this.title;
161 + } else {
162 + this.$emit('nav', {key: e.keyCode, order: this.index});
163 + }
164 + },
165 + getQuestionsSupportAnswerOptions: function() {
166 + var supportTypes = $store.getters['lqs/supportAnswerOptions'];
167 + return supportTypes.indexOf(this.question.type.key) !== -1 ? lodash.pick(this.questionTypes, supportTypes) : false;
168 + }
169 + }
170 + });
171 + });
172 +</script>