drrobotnik
12/5/2014 - 12:23 AM

gistfile1.txt

function tt_widget_visibility_js() { ?>
<script>
jQuery(function($) {
	$( document ).on( 'change.widgetconditions', 'select.conditions-rule-major', function() {
		var $conditionsRuleMajor = $ ( this );
		var $conditionsRuleMinor = $conditionsRuleMajor.siblings( 'select.conditions-rule-minor:first' );
		var $conditionsRuleQueryVars = $conditionsRuleMajor.siblings( 'input.conditions-rule-query-var' );

		console.log($conditionsRuleMajor.val());
		console.log($conditionsRuleMinor);

		if ( $conditionsRuleMajor.val() == 'query_vars' ) {
			$conditionsRuleMinor.hide();
			$conditionsRuleQueryVars.show();
		}else{
			$conditionsRuleMinor.show();
			$conditionsRuleQueryVars.hide();
		}
	});
});

</script><?php
}

function tt_widget_visibility_minor_visible( $default, $rule ) {
	
	if ( 'query_vars' == $rule['major'] ) {
		return false;
	}
	return true;
}

function tt_widget_visibility_condition_major( $rule ) { ?>
<option value="query_vars" <?php selected( "query_vars", $rule['major'] ); ?>><?php esc_html_e( 'Query Vars', 'jetpack' ); ?></option>
<?php }

function tt_widget_visibility_conditions( $conditions ) {
    return array( 'major' => '', 'minor' => '', 'query_var_key' => '', 'query_var_value' => '' );
}

function tt_widget_visibility_additional_fields( $rule ) { 
	?><input class="conditions-rule-query-var small-text<?php if ( ! $rule['major'] || 'query_vars' != $rule['major'] ) { ?> hidden<?php } ?>" name="conditions[rules_query_var_key][]" value="<?php echo $rule['query_var_key']; ?>" data-brandon="" placeholder="key" />
	<input class="conditions-rule-query-var small-text<?php if ( ! $rule['major'] || 'query_vars' != $rule['major'] ) { ?> hidden<?php } ?>" name="conditions[rules_query_var_value][]" value="<?php echo $rule['query_var_value']; ?>" data-brandon="" placeholder="value" /><?php 
}

function tt_widget_conditions_defaults( $defaults, $index ) {
	$defaults['query_var_key'] = isset( $_POST['conditions']['rules_query_var_key'][$index] ) ? $_POST['conditions']['rules_query_var_key'][$index] : '';
	$defaults['query_var_value'] = isset( $_POST['conditions']['rules_query_var_value'][$index] ) ? $_POST['conditions']['rules_query_var_value'][$index] : '';
	return $defaults;
}


function tt_widget_visibility_filter_widget( $condition_result, $rule ) {

	if( 'query_vars' == $rule['major']) {
		
		if( get_query_var( $rule['query_var_key'] ) == $rule['query_var_value'] ) {
			$condition_result = true;
		} else {
			$condition_result = false;
		}

	}

	return $condition_result;
}

add_action('admin_init','tt_jetpack_plugin_init');
add_filter( 'widget_conditions_defaults', 'tt_widget_conditions_defaults', 10, 2 );
add_filter( 'widget_visibility_conditions', 'tt_widget_visibility_conditions' );
add_filter( 'widget_visibility_minor_visible', 'tt_widget_visibility_minor_visible', 10, 2 );
add_filter( 'widget_visibility_filter_widget', 'tt_widget_visibility_filter_widget', 10, 2 );


add_action( 'widget_visibility_condition_major', 'tt_widget_visibility_condition_major' );
add_action( "widget_visibility_additional_fields", 'tt_widget_visibility_additional_fields' );

function tt_jetpack_plugin_init() {
	global $pagenow;
	if( 'widgets.php' == $pagenow) {
		add_action( 'admin_head', 'tt_widget_visibility_js',100);
	}
}