mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
add condition logic and/or in admin, fix logic in front, fix condition required fields in edit profile
This commit is contained in:
@@ -13,6 +13,7 @@ tmp/
|
|||||||
*~.nib
|
*~.nib
|
||||||
local.properties
|
local.properties
|
||||||
.classpath
|
.classpath
|
||||||
|
.ideanpg
|
||||||
.settings/
|
.settings/
|
||||||
.loadpath
|
.loadpath
|
||||||
|
|
||||||
@@ -217,3 +218,5 @@ pip-log.txt
|
|||||||
|
|
||||||
node_modules/
|
node_modules/
|
||||||
assets/vendor/
|
assets/vendor/
|
||||||
|
package-lock.json
|
||||||
|
.idea
|
||||||
@@ -322,25 +322,30 @@ jQuery(document).ready( function (){
|
|||||||
*/
|
*/
|
||||||
function um_field_apply_action($dom, condition, is_true) {
|
function um_field_apply_action($dom, condition, is_true) {
|
||||||
var child_dom = jQuery('div.um-field[data-key="' + condition.owner + '"]');
|
var child_dom = jQuery('div.um-field[data-key="' + condition.owner + '"]');
|
||||||
|
var child_dom_input = jQuery('div.um-field[data-key="' + condition.owner + '"] input');
|
||||||
|
|
||||||
if (condition.action == 'show' && is_true /*&& child_dom.is(':hidden')*/) {
|
if (condition.action == 'show' && is_true /*&& child_dom.is(':hidden')*/) {
|
||||||
child_dom.show();
|
child_dom.show();
|
||||||
|
child_dom_input.removeAttr('disabled');
|
||||||
_show_in_ie( child_dom );
|
_show_in_ie( child_dom );
|
||||||
um_field_restore_default_value(child_dom);
|
um_field_restore_default_value(child_dom);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (condition.action == 'show' && !is_true /*&& child_dom.is(':visible') */) {
|
if (condition.action == 'show' && !is_true /*&& child_dom.is(':visible') */) {
|
||||||
child_dom.hide();
|
child_dom.hide();
|
||||||
|
child_dom_input.attr('disabled','disabled');
|
||||||
_hide_in_ie( child_dom );
|
_hide_in_ie( child_dom );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (condition.action == 'hide' && is_true /*&& child_dom.is(':visible')*/) {
|
if (condition.action == 'hide' && is_true /*&& child_dom.is(':visible')*/) {
|
||||||
child_dom.hide();
|
child_dom.hide();
|
||||||
_hide_in_ie( child_dom );
|
child_dom_input.attr('disabled','disabled');
|
||||||
}
|
_hide_in_ie( child_dom );
|
||||||
|
}
|
||||||
|
|
||||||
if (condition.action == 'hide' && !is_true /*&& child_dom.is(':hidden')*/) {
|
if (condition.action == 'hide' && !is_true /*&& child_dom.is(':hidden')*/) {
|
||||||
child_dom.show();
|
child_dom.show();
|
||||||
|
child_dom_input.removeAttr('disabled');
|
||||||
_show_in_ie( child_dom );
|
_show_in_ie( child_dom );
|
||||||
um_field_restore_default_value( child_dom );
|
um_field_restore_default_value( child_dom );
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -295,4 +295,14 @@ span.um-admin-icon-clear{
|
|||||||
}
|
}
|
||||||
span.um-admin-icon-clear.show {display: inline-block}
|
span.um-admin-icon-clear.show {display: inline-block}
|
||||||
span.um-admin-icon-clear:hover {color: #777}
|
span.um-admin-icon-clear:hover {color: #777}
|
||||||
span.um-admin-icon-clear i {font-size: 20px;vertical-align: middle;}
|
span.um-admin-icon-clear i {font-size: 20px;vertical-align: middle;}
|
||||||
|
|
||||||
|
.um-admin-new-condition-compare-and {
|
||||||
|
margin-top: 10px !important;
|
||||||
|
margin-bottom: 10px !important;
|
||||||
|
}
|
||||||
|
.um-admin-new-condition-compare-or {
|
||||||
|
display: block !important;
|
||||||
|
width: 150px;
|
||||||
|
margin-top: 20px !important;
|
||||||
|
}
|
||||||
@@ -199,41 +199,68 @@ jQuery(document).ready(function() {
|
|||||||
**/
|
**/
|
||||||
jQuery(document).on('click', '.um-admin-new-condition', function() {
|
jQuery(document).on('click', '.um-admin-new-condition', function() {
|
||||||
|
|
||||||
if ( jQuery(this).hasClass('disabled') )
|
if ( jQuery(this).hasClass('disabled') )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var content = jQuery(this).parents('.um-admin-btn-content'),
|
var content = jQuery(this).parents('.um-admin-btn-content'),
|
||||||
length = content.find('.um-admin-cur-condition').length;
|
length = content.find('.um-admin-cur-condition').length;
|
||||||
|
|
||||||
if ( length < 5 ) {
|
if ( length < 5 ) {
|
||||||
//content.find('select').select2('destroy');
|
//content.find('select').select2('destroy');
|
||||||
|
|
||||||
var template = jQuery('.um-admin-btn-content').find('.um-admin-cur-condition-template').clone();
|
var template = jQuery('.um-admin-btn-content').find('.um-admin-cur-condition-template').clone();
|
||||||
template.find('input[type=text]').val('');
|
template.find('input[type=text]').val('');
|
||||||
template.find('select').val('');
|
template.find('select').val('');
|
||||||
|
|
||||||
template.appendTo( content );
|
if ( jQuery(this).hasClass('um-admin-new-condition-compare-and') ){
|
||||||
jQuery(template).removeClass("um-admin-cur-condition-template");
|
|
||||||
jQuery(template).addClass("um-admin-cur-condition");
|
|
||||||
|
|
||||||
um_admin_live_update_scripts();
|
template.find('#_conditional_compare').val('and');
|
||||||
um_admin_modal_responsive();
|
var group = jQuery(this).prev('.um-admin-cur-condition').find('[id^="_conditional_group"]').val();
|
||||||
} else {
|
console.log(group);
|
||||||
jQuery(this).addClass('disabled');
|
template.find('#_conditional_group').val(group);
|
||||||
alert( 'You already have 5 rules' );
|
var templatehtml = template.html();
|
||||||
}
|
template.insertBefore( jQuery(this) );
|
||||||
//need fields refactor
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
template.find('#_conditional_compare').val('or');
|
||||||
|
var group = jQuery('.condition-wrap .um-admin-cur-condition').last().find('[id^="_conditional_group"]').val();
|
||||||
|
template.find('#_conditional_group').val(parseInt(group)+1);
|
||||||
|
var button = jQuery('.um-admin-new-condition-compare-and:first').clone();
|
||||||
|
$( "<hr />" ).insertBefore( jQuery(this) );
|
||||||
|
template.insertBefore( jQuery(this) );
|
||||||
|
button.insertBefore( jQuery(this) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery(template).removeClass("um-admin-cur-condition-template");
|
||||||
|
jQuery(template).addClass("um-admin-cur-condition");
|
||||||
|
|
||||||
|
um_admin_live_update_scripts();
|
||||||
|
um_admin_modal_responsive();
|
||||||
|
} else {
|
||||||
|
jQuery(this).addClass('disabled');
|
||||||
|
alert( 'You already have 5 rules' );
|
||||||
|
}
|
||||||
|
//need fields refactor
|
||||||
var conditions = jQuery('.um-admin-cur-condition');
|
var conditions = jQuery('.um-admin-cur-condition');
|
||||||
jQuery(conditions).each( function ( i ) {
|
|
||||||
id = i === 0 ? '' : i;
|
jQuery(conditions).each( function ( i ) {
|
||||||
jQuery( this ).find('[id^="_conditional_action"]').attr('name', '_conditional_action' + id);
|
// var value = jQuery( this )
|
||||||
jQuery( this ).find('[id^="_conditional_action"]').attr('id', '_conditional_action' + id);
|
|
||||||
jQuery( this ).find('[id^="_conditional_field"]').attr('name', '_conditional_field' + id);
|
id = i === 0 ? '' : i;
|
||||||
jQuery( this ).find('[id^="_conditional_field"]').attr('id', '_conditional_field' + id);
|
jQuery( this ).find('[id^="_conditional_action"]').attr('name', '_conditional_action' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_operator"]').attr('name', '_conditional_operator' + id);
|
jQuery( this ).find('[id^="_conditional_action"]').attr('id', '_conditional_action' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id);
|
jQuery( this ).find('[id^="_conditional_field"]').attr('name', '_conditional_field' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id);
|
jQuery( this ).find('[id^="_conditional_field"]').attr('id', '_conditional_field' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id);
|
jQuery( this ).find('[id^="_conditional_operator"]').attr('name', '_conditional_operator' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_compare"]').attr('name', '_conditional_compare' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_compare"]').attr('id', '_conditional_compare' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_group"]').attr('name', '_conditional_group' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_group"]').attr('id', '_conditional_group' + id);
|
||||||
} );
|
} );
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -255,10 +282,20 @@ jQuery(document).ready(function() {
|
|||||||
remove a condition
|
remove a condition
|
||||||
**/
|
**/
|
||||||
jQuery(document).on('click', '.um-admin-remove-condition', function(){
|
jQuery(document).on('click', '.um-admin-remove-condition', function(){
|
||||||
var condition = jQuery(this).parents('.um-admin-cur-condition');
|
var condition = jQuery(this).parents('.um-admin-cur-condition');
|
||||||
jQuery('.um-admin-new-condition').removeClass('disabled');
|
jQuery('.um-admin-new-condition').removeClass('disabled');
|
||||||
jQuery('.tipsy').remove();
|
jQuery('.tipsy').remove();
|
||||||
condition.remove();
|
var compare = condition.find('input[type=hidden]').val();
|
||||||
|
if( compare == 'or' ){
|
||||||
|
condition.next().find('input[type=hidden]').val(compare);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( condition.prev().is('hr') && condition.next().is('.um-admin-new-condition-compare-and') ){
|
||||||
|
condition.next().remove();
|
||||||
|
condition.prev().remove();
|
||||||
|
}
|
||||||
|
condition.remove();
|
||||||
|
|
||||||
//need fields refactor
|
//need fields refactor
|
||||||
var conditions = jQuery('.um-admin-cur-condition');
|
var conditions = jQuery('.um-admin-cur-condition');
|
||||||
jQuery(conditions).each( function ( i ) {
|
jQuery(conditions).each( function ( i ) {
|
||||||
@@ -271,9 +308,13 @@ jQuery(document).ready(function() {
|
|||||||
jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id);
|
jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id);
|
jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id);
|
||||||
jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id);
|
jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_compare"]').attr('name', '_conditional_compare' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_compare"]').attr('id', '_conditional_compare' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_group"]').attr('name', '_conditional_group' + id);
|
||||||
|
jQuery( this ).find('[id^="_conditional_group"]').attr('id', '_conditional_group' + id);
|
||||||
} );
|
} );
|
||||||
um_admin_live_update_scripts();
|
um_admin_live_update_scripts();
|
||||||
um_admin_modal_responsive();
|
um_admin_modal_responsive();
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -168,27 +168,27 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
|||||||
unset( $array['conditions'] );
|
unset( $array['conditions'] );
|
||||||
if ( isset($array['conditional_field']) && !empty( $array['conditional_action'] ) && !empty( $array['conditional_operator'] ) ) {
|
if ( isset($array['conditional_field']) && !empty( $array['conditional_action'] ) && !empty( $array['conditional_operator'] ) ) {
|
||||||
$array['conditional_value'] = isset( $array['conditional_value'] ) ? $array['conditional_value'] : '';
|
$array['conditional_value'] = isset( $array['conditional_value'] ) ? $array['conditional_value'] : '';
|
||||||
$array['conditions'][] = array( $array['conditional_action'], $array['conditional_field'], $array['conditional_operator'], $array['conditional_value'] );
|
$array['conditions'][] = array( $array['conditional_action'], $array['conditional_field'], $array['conditional_operator'], $array['conditional_value'], $array['conditional_compare'], $array['conditional_group'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($array['conditional_field1']) && !empty( $array['conditional_action1'] ) && !empty( $array['conditional_operator1'] ) ) {
|
if ( isset($array['conditional_field1']) && !empty( $array['conditional_action1'] ) && !empty( $array['conditional_operator1'] ) ) {
|
||||||
$array['conditional_value1'] = isset( $array['conditional_value1'] ) ? $array['conditional_value1'] : '';
|
$array['conditional_value1'] = isset( $array['conditional_value1'] ) ? $array['conditional_value1'] : '';
|
||||||
$array['conditions'][] = array( $array['conditional_action1'], $array['conditional_field1'], $array['conditional_operator1'], $array['conditional_value1'] );
|
$array['conditions'][] = array( $array['conditional_action1'], $array['conditional_field1'], $array['conditional_operator1'], $array['conditional_value1'], $array['conditional_compare1'], $array['conditional_group1'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($array['conditional_field2']) && !empty( $array['conditional_action2'] ) && !empty( $array['conditional_operator2'] ) ) {
|
if ( isset($array['conditional_field2']) && !empty( $array['conditional_action2'] ) && !empty( $array['conditional_operator2'] ) ) {
|
||||||
$array['conditional_value2'] = isset( $array['conditional_value2'] ) ? $array['conditional_value2'] : '';
|
$array['conditional_value2'] = isset( $array['conditional_value2'] ) ? $array['conditional_value2'] : '';
|
||||||
$array['conditions'][] = array( $array['conditional_action2'], $array['conditional_field2'], $array['conditional_operator2'], $array['conditional_value2'] );
|
$array['conditions'][] = array( $array['conditional_action2'], $array['conditional_field2'], $array['conditional_operator2'], $array['conditional_value2'], $array['conditional_compare2'], $array['conditional_group2'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($array['conditional_field3']) && !empty( $array['conditional_action3'] ) && !empty( $array['conditional_operator3'] ) ) {
|
if ( isset($array['conditional_field3']) && !empty( $array['conditional_action3'] ) && !empty( $array['conditional_operator3'] ) ) {
|
||||||
$array['conditional_value3'] = isset( $array['conditional_value3'] ) ? $array['conditional_value3'] : '';
|
$array['conditional_value3'] = isset( $array['conditional_value3'] ) ? $array['conditional_value3'] : '';
|
||||||
$array['conditions'][] = array( $array['conditional_action3'], $array['conditional_field3'], $array['conditional_operator3'], $array['conditional_value3'] );
|
$array['conditions'][] = array( $array['conditional_action3'], $array['conditional_field3'], $array['conditional_operator3'], $array['conditional_value3'], $array['conditional_compare3'], $array['conditional_group3'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($array['conditional_field4']) && !empty( $array['conditional_action4'] ) && !empty( $array['conditional_operator4'] ) ) {
|
if ( isset($array['conditional_field4']) && !empty( $array['conditional_action4'] ) && !empty( $array['conditional_operator4'] ) ) {
|
||||||
$array['conditional_value4'] = isset( $array['conditional_value4'] ) ? $array['conditional_value4'] : '';
|
$array['conditional_value4'] = isset( $array['conditional_value4'] ) ? $array['conditional_value4'] : '';
|
||||||
$array['conditions'][] = array( $array['conditional_action4'], $array['conditional_field4'], $array['conditional_operator4'], $array['conditional_value4'] );
|
$array['conditions'][] = array( $array['conditional_action4'], $array['conditional_field4'], $array['conditional_operator4'], $array['conditional_value4'], $array['conditional_compare4'], $array['conditional_group4'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
return $array;
|
return $array;
|
||||||
@@ -236,6 +236,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
|||||||
<?php $metabox->field_input( '_conditional_field', $form_id ); ?>
|
<?php $metabox->field_input( '_conditional_field', $form_id ); ?>
|
||||||
<?php $metabox->field_input( '_conditional_operator', $form_id ); ?>
|
<?php $metabox->field_input( '_conditional_operator', $form_id ); ?>
|
||||||
<?php $metabox->field_input( '_conditional_value', $form_id ); ?>
|
<?php $metabox->field_input( '_conditional_value', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_compare', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_group', $form_id ); ?>
|
||||||
|
|
||||||
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
||||||
|
|
||||||
@@ -244,44 +246,55 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
|||||||
<p><a href="#" class="um-admin-new-condition button button-primary um-admin-tipsy-n" title="Add new condition"><?php _e( 'Add new rule', 'ultimate-member' ); ?></a></p>
|
<p><a href="#" class="um-admin-new-condition button button-primary um-admin-tipsy-n" title="Add new condition"><?php _e( 'Add new rule', 'ultimate-member' ); ?></a></p>
|
||||||
<p class="um-admin-reset-conditions"><a href="#" class="button"><?php _e( 'Reset all rules', 'ultimate-member' ); ?></a></p>
|
<p class="um-admin-reset-conditions"><a href="#" class="button"><?php _e( 'Reset all rules', 'ultimate-member' ); ?></a></p>
|
||||||
<div class="um-admin-clear"></div>
|
<div class="um-admin-clear"></div>
|
||||||
|
<div class="condition-wrap">
|
||||||
|
<?php if ( isset( $edit_array['conditions'] ) && count( $edit_array['conditions'] ) != 0 ) {
|
||||||
|
|
||||||
<?php if ( isset( $edit_array['conditions'] ) && count( $edit_array['conditions'] ) != 0 ) {
|
foreach ( $edit_array['conditions'] as $k => $arr ) {
|
||||||
|
|
||||||
foreach ( $edit_array['conditions'] as $k => $arr ) {
|
if ( $k == 0 ) $k = ''; ?>
|
||||||
|
<?php if( $arr[4] == 'or' ){ ?>
|
||||||
|
<a href="#" class="um-admin-new-condition um-admin-new-condition-compare-and button button-primary um-admin-tipsy-n" title="Add new condition"><?php _e( 'Add new rule', 'ultimate-member' ); ?></a>
|
||||||
|
|
||||||
if ( $k == 0 ) $k = ''; ?>
|
<hr />
|
||||||
|
<?php } ?>
|
||||||
|
<div class="um-admin-cur-condition">
|
||||||
|
|
||||||
<div class="um-admin-cur-condition">
|
<?php $metabox->field_input( '_conditional_action' . $k, $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_field' . $k , $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_operator' . $k, $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_value' . $k, $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_compare' . $k, $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_group' . $k, $form_id ); ?>
|
||||||
|
|
||||||
<?php $metabox->field_input( '_conditional_action' . $k, $form_id ); ?>
|
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
||||||
<?php $metabox->field_input( '_conditional_field' . $k , $form_id ); ?>
|
|
||||||
<?php $metabox->field_input( '_conditional_operator' . $k, $form_id ); ?>
|
<div class="um-admin-clear"></div>
|
||||||
<?php $metabox->field_input( '_conditional_value' . $k, $form_id ); ?>
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
} else { ?>
|
||||||
|
|
||||||
|
<div class="um-admin-cur-condition">
|
||||||
|
|
||||||
|
<?php $metabox->field_input( '_conditional_action', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_field', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_operator', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_value', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_compare', $form_id ); ?>
|
||||||
|
<?php $metabox->field_input( '_conditional_group', $form_id ); ?>
|
||||||
|
|
||||||
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
||||||
|
|
||||||
<div class="um-admin-clear"></div>
|
<div class="um-admin-clear"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php } ?>
|
||||||
}
|
<a href="#" class="um-admin-new-condition um-admin-new-condition-compare-and button button-primary um-admin-tipsy-n" title="Add new condition"><?php _e( 'Add new rule', 'ultimate-member' ); ?></a>
|
||||||
|
<a href="#" class="um-admin-new-condition um-admin-new-condition-compare-or button button-primary um-admin-tipsy-n" title="Add new condition"><?php _e( 'Add new rule group', 'ultimate-member' ); ?></a>
|
||||||
|
|
||||||
} else { ?>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="um-admin-cur-condition">
|
|
||||||
|
|
||||||
<?php $metabox->field_input( '_conditional_action', $form_id ); ?>
|
|
||||||
<?php $metabox->field_input( '_conditional_field', $form_id ); ?>
|
|
||||||
<?php $metabox->field_input( '_conditional_operator', $form_id ); ?>
|
|
||||||
<?php $metabox->field_input( '_conditional_value', $form_id ); ?>
|
|
||||||
|
|
||||||
<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>
|
|
||||||
|
|
||||||
<div class="um-admin-clear"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php } ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|||||||
@@ -1315,7 +1315,30 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
|
|||||||
<p>
|
<p>
|
||||||
<input type="text" name="<?php echo $attribute; ?>" id="<?php echo $attribute; ?>" value="<?php echo isset( $this->edit_mode_value ) ? $this->edit_mode_value : ''; ?>" placeholder="<?php _e( 'Value', 'ultimate-member' ); ?>" style="width: 150px!important;position: relative;top: -1px;" />
|
<input type="text" name="<?php echo $attribute; ?>" id="<?php echo $attribute; ?>" value="<?php echo isset( $this->edit_mode_value ) ? $this->edit_mode_value : ''; ?>" placeholder="<?php _e( 'Value', 'ultimate-member' ); ?>" style="width: 150px!important;position: relative;top: -1px;" />
|
||||||
</p>
|
</p>
|
||||||
|
<?php
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '_conditional_compare':
|
||||||
|
case '_conditional_compare1':
|
||||||
|
case '_conditional_compare2':
|
||||||
|
case '_conditional_compare3':
|
||||||
|
case '_conditional_compare4':
|
||||||
|
?>
|
||||||
|
<p>
|
||||||
|
<input type="hidden" name="<?php echo $attribute; ?>" id="<?php echo $attribute; ?>" value="<?php echo isset( $this->edit_mode_value ) ? $this->edit_mode_value : ''; ?>">
|
||||||
|
</p>
|
||||||
|
<?php
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '_conditional_group':
|
||||||
|
case '_conditional_group1':
|
||||||
|
case '_conditional_group2':
|
||||||
|
case '_conditional_group3':
|
||||||
|
case '_conditional_group4':
|
||||||
|
?>
|
||||||
|
<p>
|
||||||
|
<input type="hidden" name="<?php echo $attribute; ?>" id="<?php echo $attribute; ?>" value="<?php echo isset( $this->edit_mode_value ) ? $this->edit_mode_value : '0'; ?>">
|
||||||
|
</p>
|
||||||
<?php
|
<?php
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -202,12 +202,16 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
|||||||
unset( $condition_fields[ $key ][ $deleted_field ] );
|
unset( $condition_fields[ $key ][ $deleted_field ] );
|
||||||
unset( $condition_fields[ $key ][ 'conditional_operator' . $deleted_field_id ] );
|
unset( $condition_fields[ $key ][ 'conditional_operator' . $deleted_field_id ] );
|
||||||
unset( $condition_fields[ $key ][ 'conditional_value' . $deleted_field_id ] );
|
unset( $condition_fields[ $key ][ 'conditional_value' . $deleted_field_id ] );
|
||||||
|
unset( $condition_fields[ $key ][ 'conditional_compare' . $deleted_field_id ] );
|
||||||
|
unset( $condition_fields[ $key ][ 'conditional_group' . $deleted_field_id ] );
|
||||||
unset( $condition_fields[ $key ]['conditions'][ $arr_id ] );
|
unset( $condition_fields[ $key ]['conditions'][ $arr_id ] );
|
||||||
|
|
||||||
unset( $fields[ $key ][ 'conditional_action' . $deleted_field_id ] );
|
unset( $fields[ $key ][ 'conditional_action' . $deleted_field_id ] );
|
||||||
unset( $fields[ $key ][ $deleted_field ] );
|
unset( $fields[ $key ][ $deleted_field ] );
|
||||||
unset( $fields[ $key ][ 'conditional_operator' . $deleted_field_id ] );
|
unset( $fields[ $key ][ 'conditional_operator' . $deleted_field_id ] );
|
||||||
unset( $fields[ $key ][ 'conditional_value' . $deleted_field_id ] );
|
unset( $fields[ $key ][ 'conditional_value' . $deleted_field_id ] );
|
||||||
|
unset( $fields[ $key ][ 'conditional_compare' . $deleted_field_id ] );
|
||||||
|
unset( $fields[ $key ][ 'conditional_group' . $deleted_field_id ] );
|
||||||
unset( $fields[ $key ]['conditions'][ $arr_id ] );
|
unset( $fields[ $key ]['conditions'][ $arr_id ] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -327,63 +327,63 @@ function um_submit_form_errors_hook_( $args ) {
|
|||||||
}
|
}
|
||||||
} elseif ( $op == 'not empty' ) {
|
} elseif ( $op == 'not empty' ) {
|
||||||
if ( ! empty( $cond_value ) ) {
|
if ( ! empty( $cond_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'equals to' ) {
|
} elseif ( $op == 'equals to' ) {
|
||||||
if ( $cond_value == $parent_value ) {
|
if ( $cond_value == $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'not equals' ) {
|
} elseif ( $op == 'not equals' ) {
|
||||||
if ( $cond_value != $parent_value ) {
|
if ( $cond_value != $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'greater than' ) {
|
} elseif ( $op == 'greater than' ) {
|
||||||
if ( $cond_value > $parent_value ) {
|
if ( $cond_value > $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'less than' ) {
|
} elseif ( $op == 'less than' ) {
|
||||||
if ( $cond_value < $parent_value ) {
|
if ( $cond_value < $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'contains' ) {
|
} elseif ( $op == 'contains' ) {
|
||||||
if ( is_string( $cond_value ) && strstr( $cond_value, $parent_value ) ) {
|
if ( is_string( $cond_value ) && strstr( $cond_value, $parent_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
if( is_array( $cond_value ) && in_array( $parent_value, $cond_value ) ) {
|
if( is_array( $cond_value ) && in_array( $parent_value, $cond_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ( $visibility == 'show' ) {
|
} elseif ( $visibility == 'show' ) {
|
||||||
if ( $op == 'empty' ) {
|
if ( $op == 'empty' ) {
|
||||||
if ( ! empty( $cond_value ) ) {
|
if ( ! empty( $cond_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'not empty' ) {
|
} elseif ( $op == 'not empty' ) {
|
||||||
if ( empty( $cond_value ) ) {
|
if ( empty( $cond_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'equals to' ) {
|
} elseif ( $op == 'equals to' ) {
|
||||||
if ( $cond_value != $parent_value ) {
|
if ( $cond_value != $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'not equals' ) {
|
} elseif ( $op == 'not equals' ) {
|
||||||
if ( $cond_value == $parent_value ) {
|
if ( $cond_value == $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'greater than' ) {
|
} elseif ( $op == 'greater than' ) {
|
||||||
if ( $cond_value <= $parent_value ) {
|
if ( $cond_value <= $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'less than' ) {
|
} elseif ( $op == 'less than' ) {
|
||||||
if ( $cond_value >= $parent_value ) {
|
if ( $cond_value >= $parent_value ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
} elseif ( $op == 'contains' ) {
|
} elseif ( $op == 'contains' ) {
|
||||||
if ( is_string( $cond_value ) && ! strstr( $cond_value, $parent_value ) ) {
|
if ( is_string( $cond_value ) && ! strstr( $cond_value, $parent_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
if( is_array( $cond_value ) && !in_array( $parent_value, $cond_value ) ) {
|
if( is_array( $cond_value ) && !in_array( $parent_value, $cond_value ) ) {
|
||||||
continue 2;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+228
-105
@@ -288,142 +288,265 @@ function um_user_ip() {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function um_field_conditions_are_met( $data ) {
|
function um_field_conditions_are_met( $data ) {
|
||||||
if (!isset( $data['conditions'] )) return true;
|
if (!isset( $data['conditions'] )) return true;
|
||||||
|
|
||||||
$state = 1;
|
$state = ( $data['conditional_action'] == 'show' ) ? 1 : 0;
|
||||||
|
|
||||||
foreach ($data['conditions'] as $k => $arr) {
|
$first_group = 0;
|
||||||
if ($arr[0] == 'show') {
|
$state_array = array();
|
||||||
|
$count = count($state_array);
|
||||||
|
foreach ($data['conditions'] as $k => $arr){
|
||||||
|
|
||||||
$val = $arr[3];
|
$val = $arr[3];
|
||||||
$op = $arr[2];
|
$op = $arr[2];
|
||||||
|
|
||||||
if (strstr( $arr[1], 'role_' ))
|
if (strstr($arr[1], 'role_'))
|
||||||
$arr[1] = 'role';
|
$arr[1] = 'role';
|
||||||
|
|
||||||
$field = um_profile( $arr[1] );
|
$field = um_profile($arr[1]);
|
||||||
|
|
||||||
switch ($op) {
|
|
||||||
case 'equals to':
|
|
||||||
|
|
||||||
$field = maybe_unserialize( $field );
|
if( $arr[5] != $first_group ){
|
||||||
|
|
||||||
if (is_array( $field ))
|
|
||||||
$state = in_array( $val, $field ) ? 1 : 0;
|
|
||||||
else
|
|
||||||
$state = ( $field == $val ) ? 1 : 0;
|
|
||||||
|
|
||||||
break;
|
if ($arr[0] == 'show') {
|
||||||
case 'not equals':
|
|
||||||
|
|
||||||
$field = maybe_unserialize( $field );
|
switch ($op) {
|
||||||
|
case 'equals to':
|
||||||
|
|
||||||
if (is_array( $field ))
|
$field = maybe_unserialize( $field );
|
||||||
$state = !in_array( $val, $field ) ? 1 : 0;
|
|
||||||
else
|
|
||||||
$state = ( $field != $val ) ? 1 : 0;
|
|
||||||
|
|
||||||
break;
|
if (is_array( $field ))
|
||||||
case 'empty':
|
$state = in_array( $val, $field ) ? 1 : 0;
|
||||||
|
else
|
||||||
|
$state = ( $field == $val ) ? 1 : 0;
|
||||||
|
|
||||||
$state = ( !$field ) ? 1 : 0;
|
break;
|
||||||
|
case 'not equals':
|
||||||
|
|
||||||
break;
|
$field = maybe_unserialize( $field );
|
||||||
case 'not empty':
|
|
||||||
|
|
||||||
$state = ( $field ) ? 1 : 0;
|
if (is_array( $field ))
|
||||||
|
$state = !in_array( $val, $field ) ? 1 : 0;
|
||||||
|
else
|
||||||
|
$state = ( $field != $val ) ? 1 : 0;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'greater than':
|
case 'empty':
|
||||||
if ($field > $val) {
|
|
||||||
$state = 1;
|
|
||||||
} else {
|
|
||||||
$state = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'less than':
|
|
||||||
if ($field < $val) {
|
|
||||||
$state = 1;
|
|
||||||
} else {
|
|
||||||
$state = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'contains':
|
|
||||||
if (strstr( $field, $val )) {
|
|
||||||
$state = 1;
|
|
||||||
} else {
|
|
||||||
$state = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if ($arr[0] == 'hide') {
|
|
||||||
|
|
||||||
$state = 1;
|
$state = ( !$field ) ? 1 : 0;
|
||||||
$val = $arr[3];
|
|
||||||
$op = $arr[2];
|
|
||||||
|
|
||||||
if (strstr( $arr[1], 'role_' ))
|
break;
|
||||||
$arr[1] = 'role';
|
case 'not empty':
|
||||||
|
|
||||||
$field = um_profile( $arr[1] );
|
$state = ( $field ) ? 1 : 0;
|
||||||
|
|
||||||
switch ($op) {
|
break;
|
||||||
case 'equals to':
|
case 'greater than':
|
||||||
|
if ($field > $val) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'less than':
|
||||||
|
if ($field < $val) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'contains':
|
||||||
|
if (strstr( $field, $val )) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if ($arr[0] == 'hide') {
|
||||||
|
|
||||||
$field = maybe_unserialize( $field );
|
switch ($op) {
|
||||||
|
case 'equals to':
|
||||||
|
|
||||||
if (is_array( $field ))
|
$field = maybe_unserialize( $field );
|
||||||
$state = in_array( $val, $field ) ? 0 : 1;
|
|
||||||
else
|
|
||||||
$state = ( $field == $val ) ? 0 : 1;
|
|
||||||
|
|
||||||
break;
|
if (is_array( $field ))
|
||||||
case 'not equals':
|
$state = in_array( $val, $field ) ? 0 : 1;
|
||||||
|
else
|
||||||
|
$state = ( $field == $val ) ? 0 : 1;
|
||||||
|
|
||||||
$field = maybe_unserialize( $field );
|
break;
|
||||||
|
case 'not equals':
|
||||||
|
|
||||||
if (is_array( $field ))
|
$field = maybe_unserialize( $field );
|
||||||
$state = !in_array( $val, $field ) ? 0 : 1;
|
|
||||||
else
|
|
||||||
$state = ( $field != $val ) ? 0 : 1;
|
|
||||||
|
|
||||||
break;
|
if (is_array( $field ))
|
||||||
case 'empty':
|
$state = !in_array( $val, $field ) ? 0 : 1;
|
||||||
|
else
|
||||||
|
$state = ( $field != $val ) ? 0 : 1;
|
||||||
|
|
||||||
$state = ( !$field ) ? 0 : 1;
|
break;
|
||||||
|
case 'empty':
|
||||||
|
|
||||||
break;
|
$state = ( !$field ) ? 0 : 1;
|
||||||
case 'not empty':
|
|
||||||
|
|
||||||
$state = ( $field ) ? 0 : 1;
|
break;
|
||||||
|
case 'not empty':
|
||||||
|
|
||||||
break;
|
$state = ( $field ) ? 0 : 1;
|
||||||
case 'greater than':
|
|
||||||
if ($field <= $val) {
|
|
||||||
$state = 0;
|
|
||||||
} else {
|
|
||||||
$state = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'less than':
|
|
||||||
if ($field >= $val) {
|
|
||||||
$state = 0;
|
|
||||||
} else {
|
|
||||||
$state = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'contains':
|
|
||||||
if (strstr( $field, $val )) {
|
|
||||||
$state = 0;
|
|
||||||
} else {
|
|
||||||
$state = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ( $state ) ? true : false;
|
break;
|
||||||
|
case 'greater than':
|
||||||
|
if ($field <= $val) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'less than':
|
||||||
|
if ($field >= $val) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'contains':
|
||||||
|
if (strstr( $field, $val )) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$first_group++;
|
||||||
|
array_push($state_array, $state);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if ($arr[0] == 'show') {
|
||||||
|
|
||||||
|
switch ($op) {
|
||||||
|
case 'equals to':
|
||||||
|
|
||||||
|
$field = maybe_unserialize( $field );
|
||||||
|
|
||||||
|
if (is_array( $field ))
|
||||||
|
$state = in_array( $val, $field ) ? 1 : 0;
|
||||||
|
else
|
||||||
|
$state = ( $field == $val ) ? 1 : 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'not equals':
|
||||||
|
|
||||||
|
$field = maybe_unserialize( $field );
|
||||||
|
|
||||||
|
if (is_array( $field ))
|
||||||
|
$state = !in_array( $val, $field ) ? 1 : 0;
|
||||||
|
else
|
||||||
|
$state = ( $field != $val ) ? 1 : 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'empty':
|
||||||
|
|
||||||
|
$state = ( !$field ) ? 1 : 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'not empty':
|
||||||
|
|
||||||
|
$state = ( $field ) ? 1 : 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'greater than':
|
||||||
|
if ($field > $val) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'less than':
|
||||||
|
if ($field < $val) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'contains':
|
||||||
|
if (strstr( $field, $val )) {
|
||||||
|
$state = 1;
|
||||||
|
} else {
|
||||||
|
$state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if ($arr[0] == 'hide') {
|
||||||
|
|
||||||
|
switch ($op) {
|
||||||
|
case 'equals to':
|
||||||
|
|
||||||
|
$field = maybe_unserialize( $field );
|
||||||
|
|
||||||
|
if (is_array( $field ))
|
||||||
|
$state = in_array( $val, $field ) ? 0 : 1;
|
||||||
|
else
|
||||||
|
$state = ( $field == $val ) ? 0 : 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'not equals':
|
||||||
|
|
||||||
|
$field = maybe_unserialize( $field );
|
||||||
|
|
||||||
|
if (is_array( $field ))
|
||||||
|
$state = !in_array( $val, $field ) ? 0 : 1;
|
||||||
|
else
|
||||||
|
$state = ( $field != $val ) ? 0 : 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'empty':
|
||||||
|
|
||||||
|
$state = ( !$field ) ? 0 : 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'not empty':
|
||||||
|
|
||||||
|
$state = ( $field ) ? 0 : 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'greater than':
|
||||||
|
if ($field <= $val) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'less than':
|
||||||
|
if ($field >= $val) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'contains':
|
||||||
|
if (strstr( $field, $val )) {
|
||||||
|
$state = 0;
|
||||||
|
} else {
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$state_array[$count] = $state;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
$result = array_unique($state_array);
|
||||||
|
if( !in_array("1", $result) ){
|
||||||
|
return $state = false;
|
||||||
|
} else {
|
||||||
|
return $state = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,13 @@
|
|||||||
"grunt-contrib-watch": "~0.6.1",
|
"grunt-contrib-watch": "~0.6.1",
|
||||||
"grunt-modernizr": "~0.6.0",
|
"grunt-modernizr": "~0.6.0",
|
||||||
"grunt-wp-assets": "~0.2.6",
|
"grunt-wp-assets": "~0.2.6",
|
||||||
|
"gulp": "^3.9.1",
|
||||||
"gulp-rename": "^1.2.2",
|
"gulp-rename": "^1.2.2",
|
||||||
|
"gulp-uglify": "^3.0.1",
|
||||||
"load-grunt-tasks": "~1.0.0",
|
"load-grunt-tasks": "~1.0.0",
|
||||||
"time-grunt": "~1.0.0"
|
"time-grunt": "~1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"gulp-install": "^1.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user