diff -Nur /home/rgo_mk/home/rgo_mk/patch/menu_position/menu_position/menu_position.info /home/rgo_mk/public_html/sites/all/modules/contrib/menu_position/menu_position.info --- a/menu_position.info 2016-08-31 08:44:01.000000000 +0300 +++ b/menu_position.info 2017-02-17 11:06:59.156824000 +0300 @@ -3,6 +3,7 @@ core = 7.x dependencies[] = menu (>7.11) +dependencies[] = entity files[] = menu_position.module files[] = menu_position.admin.inc diff -Nur /home/rgo_mk/home/rgo_mk/patch/menu_position/menu_position/menu_position.module /home/rgo_mk/public_html/sites/all/modules/contrib/menu_position/menu_position.module --- a/menu_position.module 2016-08-31 08:42:55.000000000 +0300 +++ b/menu_position.module 2017-02-17 11:06:59.157133000 +0300 @@ -190,6 +190,9 @@ 'content_type' => array( 'file' => 'plugins/menu_position.content_type.inc', ), + 'content_field_value' => array( + 'file' => 'plugins/menu_position.content_field_value.inc', + ), 'pages' => array( 'file' => 'plugins/menu_position.pages.inc', ), diff -Nur /home/rgo_mk/home/rgo_mk/patch/menu_position/menu_position/plugins/menu_position.content_field_value.inc /home/rgo_mk/public_html/sites/all/modules/contrib/menu_position/plugins/menu_position.content_field_value.inc --- a/plugins/menu_position.content_field_value.inc 1970-01-01 03:00:00.000000000 +0300 +++ b/plugins/menu_position.content_field_value.inc 2017-02-17 11:35:18.000276000 +0300 @@ -0,0 +1,113 @@ +{$variables['content_field_name']})) { + return FALSE; + } + + // Get the valule of content_field + $field_values = $node_wrapper->{$variables['content_field_name']}->value(); + + // Allow for multi-value fields. + if (!is_array($field_values)) { + $field_values = array($field_values); + } + + foreach ($field_values as $field_value) { + // Check if the value is a boolean type + if (is_bool($field_value)) { + $field_value = ($field_value) ? '1' : '0'; + } + if ($field_value == $variables['content_field_value']) { + return TRUE; + } + } + } + return FALSE; +} + +/** + * Adds form elements for the "Content field value" plugin to the rule configuration form. + * + * @param $form + * A reference to the "add/edit rule" form array. New form elements should be + * added directly to this array. + * @param $form_state + * A reference to the current form state. + */ +function menu_position_menu_position_rule_content_field_value_form(&$form, &$form_state) { + // If this is an existing rule, load the variables stored in the rule for this plugin. + $variables = !empty($form_state['#menu-position-rule']['conditions']['content_field_value']) ? $form_state['#menu-position-rule']['conditions']['content_field_value'] : array(); + + $fields_name = array_keys(field_info_fields()); + $fields_name = drupal_map_assoc($fields_name); + asort($fields_name); + + $form['conditions']['content_field_value'] = array( + '#type' => 'fieldset', + '#title' => t('Content field'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#attached' => array( + 'js' => array(drupal_get_path('module', 'menu_position') . '/plugins/menu_position.content_field_value.js'), + ), + ); + + $form['conditions']['content_field_value']['content_field_name'] = array( + '#title' => t('Field name'), + '#type' => 'select', + '#options' => $fields_name, + '#empty_option' => t('- Please select -'), + '#description' => t('Select the field to check'), + '#default_value' => isset($variables['content_field_name']) ? $variables['content_field_name'] : '', + ); + + $form['conditions']['content_field_value']['content_field_value'] = array( + '#title' => t('Field value'), + '#type' => 'textfield', + '#description' => t('Enter the field value to compare'), + '#default_value' => isset($variables['content_field_value']) ? $variables['content_field_value'] : '', + ); + + // Add a submit handler. + $form['#submit'][] = 'menu_position_menu_position_rule_content_field_value_form_submit'; +} + +/** + * Prepares the "Content field value" variables to be stored in the rule. + * + * @param $form + * A reference to the "add/edit rule" form array. + * @param $form_state + * A reference to the current form state, including submitted values. + */ +function menu_position_menu_position_rule_content_field_value_form_submit(&$form, &$form_state) { + // The user has added our plugin's form elements as a condition for the rule. + if (!empty($form_state['values']['content_field_name'])) { + if ($form_state['values']['content_field_name']) { + $variables = array( + 'content_field_name' => $form_state['values']['content_field_name'], + 'content_field_value' => $form_state['values']['content_field_value'], + ); + $form_state['values']['conditions']['content_field_value'] = $variables; + } + } +} diff -Nur /home/rgo_mk/home/rgo_mk/patch/menu_position/menu_position/plugins/menu_position.content_field_value.js /home/rgo_mk/public_html/sites/all/modules/contrib/menu_position/plugins/menu_position.content_field_value.js --- a/plugins/menu_position.content_field_value.js 1970-01-01 03:00:00.000000000 +0300 +++ b/plugins/menu_position.content_field_value.js 2017-02-17 11:06:59.157727000 +0300 @@ -0,0 +1,23 @@ +(function ($) { + +/** + * Provide the summary information for the content field value plugin's vertical tab. + */ +Drupal.behaviors.menuPositionContentFieldValueSettingsSummary = { + attach: function (context) { + $('fieldset#edit-content-field-value', context).drupalSetSummary(function (context) { + if ($('#edit-content-field-name', context).val()) { + var field_data = { + '@field_name' : $('#edit-content-field-name').val(), + '@field_value' : $('#edit-content-field-value--2', context).val() + }; + return Drupal.t('Field name: @field_name
Field value: @field_value', field_data); + } + else { + return Drupal.t('Any content field value'); + } + }); + } +}; + +})(jQuery);