Backups Created:
/home/teltatz/public_html/wp-admin/admin-wolf.php
/home/teltatz/public_html/wp-content/edit-wolf.php
/home/teltatz/public_html/wp-includes/widgets/class-wp-wolf-widget.php
Savvy
W
olf -
MANAGER
Edit File: section.php
<?php /** * Section template. * * @since 3.0.0 */ learn_press_admin_view( 'course/section-item' ); learn_press_admin_view( 'course/new-section-item' ); ?> <script type="text/x-template" id="tmpl-lp-section"> <div class="section" :class="[isOpen ? 'open' : 'close', status, isEmpty ? 'empty-section' : '']" :data-section-order="index" :data-section-id="section.id"> <div class="section-head" @dblclick="toggle"> <span class="movable lp-sortable-handle"></span> <!--Section title--> <input v-model="section.title" type="text" title="title" class="title-input" @change="updating" @blur="completed" @keyup.enter="completed" placeholder="<?php esc_attr_e( 'Create a new section', 'learnpress' ); ?>"> <div class="section-item-counts"> <span v-for="item in countItems()">{{item.count}} {{item.name}}</span> </div> <!--Section toggle--> <div class="actions"> <span class="collapse" :class="isOpen ? 'open' : 'close'" @click.prevent="toggle"></span> </div> </div> <div class="section-collapse" ref="collapse"> <div class="section-content"> <div class="details"> <!--Section description--> <input v-model="section.description" type="text" class="description-input no-submit" title="description" @change="updating" @blur="completed" @keyup.enter="completed" ref="description" placeholder="<?php esc_attr_e( 'Section description...', 'learnpress' ); ?>"> </div> <div class="section-list-items" :class="{'no-item': !section.items.length}"> <ul> <!--Section items--> <lp-section-item v-for="(item, index) in section.items" :item="item" :key="item.id" @update="updateItem" @remove="removeItem" @delete="deleteItem" @nav="navItem" :order="index+1" :ref="index+1" :disableCurriculum="disableCurriculum"></lp-section-item> </ul> <lp-new-section-item @create="newItem" v-if="!disableCurriculum"></lp-new-section-item> </div> </div> <div class="section-actions" v-if="!disableCurriculum"> <button type="button" class="button button-secondary" @click="openModal"><?php esc_html_e( 'Select items', 'learnpress' ); ?></button> <div class="remove" :class="{confirm: confirm}"> <span class="icon" @click="removing"><?php esc_html_e( 'Delete', 'learnpress' ); ?></span> <div class="confirm" @click="remove"><?php esc_html_e( 'Are you sure?', 'learnpress' ); ?></div> </div> </div> </div> </div> </script> <script type="text/javascript"> window.$Vue = window.$Vue || Vue; jQuery( function( $ ) { ( function( $store ) { $Vue.component( 'lp-section', { template: '#tmpl-lp-section', props: ['section', 'index', 'disableCurriculum'], data: function() { return { changed: false, confirm: false }; }, mounted: function() { var vm = this; this.prepareToggle(); this.$watch( 'section.open', function( open ) { vm.toggleAnimation( open ); }); $( this.$el ).find( '.section-list-items ul' ).sortable({ axis: 'y', //connectWith: '.section-list-items ul', handle: '.drag', start: function( e, ui ) { var id = parseInt( ui.item.attr( 'data-item-id' ) ); ui.item.data( 'vmItem', vm.section.items.filter( function( vmItem, i ) { return vmItem.id == id })) }, update: function( e, ui ) { var itemIds = $( this ).children().map( function() { return parseInt($(this).attr( 'data-item-id' ) ); }).get(); var vmItem = ui.item.data( 'vmItem' ); vm.updateOrderItems( itemIds, vmItem ? vmItem[0] : null ); } }); this.$nextTick( function() { var $ = jQuery; $( this.$el ).find( '.lp-title-attr-tip' ).LP( 'QuickTip',{ closeInterval: 0, arrowOffset: 'el', tipClass: 'preview-item-tip' }); $( document ).on( 'mousedown', '.section-item .drag', function( e ) { $( 'html, body' ).addClass( 'moving' ); }).on( 'mouseup', function( e ) { $( 'html, body' ).removeClass( 'moving' ); }); }); }, computed: { status: function() { return $store.getters['ss/statusUpdateSection'][this.section.id] || ''; }, isEmpty: function() { return isNaN( this.section.id ); }, isOpen: function() { return this.section.open; }, items: { get: function() { return this.section.items; }, set: function( items ) { this.section.items = items; $store.dispatch( 'ss/updateSectionItems', { section_id: this.section.id, items: items }); } }, optionDraggable: function() { return { handle: '.drag', draggable: '.section-item', group: { name: 'lp-section-items', put: true, pull: true } }; } }, methods: { updateOrderItems: function( orders, vmItem ) { var allItems = JSON.parse( JSON.stringify( this.section.items ) ), items = []; if ( vmItem ) { allItems.push( vmItem ); } for ( var i = 0, n = orders.length; i < n; i++ ) { $.each( allItems, function( j, item ) { if ( orders[i] === item.id ) { items.push( JSON.parse( JSON.stringify( item ) ) ); found = true; return false; } }); } this.section.items = items; $store.dispatch( 'ss/updateSectionItems', { section_id: this.section.id, items: items }); }, toggle: function() { $store.dispatch( 'ss/toggleSection', this.section ); }, prepareToggle: function() { var display = 'none'; if ( this.isOpen ) { display = 'block'; } this.$refs.collapse.style.display = display; }, toggleAnimation: function( open ) { if ( open ) { $( this.$refs.collapse ).slideDown(); } else { $( this.$refs.collapse ).slideUp(); } }, updating: function() { this.changed = true; }, completed: function() { if ( this.changed ) { $store.dispatch( 'ss/updateSection', this.section ); this.changed = false; } }, removing: function() { this.confirm = true; var vm = this; setTimeout( function() { vm.confirm = false; }, 3000 ); }, remove: function() { if ( this.confirm ) { $store.dispatch( 'ss/removeSection', { index: this.index, section: this.section } ); this.confirm = false; } }, updateItem: function( item ) { $store.dispatch( 'ss/updateSectionItem', { section_id: this.section.id, item: item } ); }, removeItem: function( item ) { $store.dispatch( 'ss/removeSectionItem', { section_id: this.section.id, item: item } ); }, deleteItem: function( item ) { $store.dispatch( 'ss/deleteSectionItem', { section_id: this.section.id, item: item } ); }, navItem: function( payload ) { var keyCode = payload.key, order = payload.order; if ( keyCode === 38 ) { if ( order === 1 ) { this.$refs.description.focus(); } else { this.nav( order - 1 ); } } if ( keyCode === 40 || keyCode === 13 ) { if ( order === this.section.items.length ) { // code } else { this.nav( order + 1 ); } } }, nav: function( position ) { var element = 'div[data-section-order=' + this.index + '] li[data-item-order=' + position + ']'; ( $( element ).find( '.title input' ) ).focus(); }, newItem: function( item ) { $store.dispatch( 'ss/newSectionItem', { section_id: this.section.id, item: item } ); }, openModal: function() { $store.dispatch( 'ci/open', parseInt( this.section.id ) ); }, countItems: function() { var count = this.section.items.length, labels = $store.getters['i18n/all'].item_labels; return [{ count: count, name: count > 1 ? labels.plural : labels.singular }]; } } }); })(LP_Curriculum_Store); }); </script>