Plugin Directory

Changeset 3312220


Ignore:
Timestamp:
06/16/2025 01:49:04 AM (10 months ago)
Author:
gpnagy
Message:

New location rule options

Location:
filterflex
Files:
2 deleted
8 edited
7 copied

Legend:

Unmodified
Added
Removed
  • filterflex/tags/1.2.0/admin/js/filterflex-admin.js

    r3311998 r3312220  
    104104                $valueSelect.empty(); // Clear loading indicator
    105105
    106                 if (response.success && response.data.values && Object.keys(response.data.values).length > 0) {
     106                if (response.success && response.data.values && typeof response.data.values === 'object' && Object.keys(response.data.values).length > 0) {
     107                    $valueSelect.prop('disabled', false); // Enable before populating
    107108                    $valueSelect.append($('<option>', { value: '', text: filterFlexData.i18n?.selectValue || '-- Select Value --' }));
    108109                    $.each(response.data.values, function(value, label) {
     
    119120                    } else if ((!initialLoad || (initialLoad && savedVal === null)) && param === 'post_type' && response.data.values.hasOwnProperty('post')) {
    120121                         $valueSelect.val('post'); // Set default to 'Posts'
    121                     }
    122                     else {
     122                    } else {
    123123                         $valueSelect.val(''); // Select default if no saved value or not found
    124124                    }
    125                      $valueSelect.show();
     125                    $valueSelect.show();
    126126                } else {
    127                     // No options returned or error
    128                     $valueSelect.append($('<option>', { value: '', text: filterFlexData.i18n?.noOptions || '-- N/A --' }));
    129                     // Keep it hidden or show N/A? Let's show N/A but keep it disabled-like
    130                      $valueSelect.show().prop('disabled', true); // Visually indicate no options
     127                    // No options returned or error from PHP (response.data.values is null or empty)
     128                    $valueSelect.append($('<option>', { value: '', text: response.data?.message || filterFlexData.i18n?.noOptions || '-- N/A --' }));
     129                    $valueSelect.show().prop('disabled', true);
    131130                 }
    132131             },
     
    139138                 $valueSelect.append($('<option>', { value: '', text: errorMsg })).show().prop('disabled', true);
    140139             },
    141              complete: function() {
    142                  // Re-enable dropdown if it was disabled
    143                  if ($valueSelect.prop('disabled')) {
    144                      // Only re-enable if options were actually loaded successfully
    145                      if ($valueSelect.find('option').length > 1) { // More than just the default/error option
    146                          $valueSelect.prop('disabled', false);
    147                      }
    148                  }
    149                  // Clear the saved value data attribute after using it on initial load
    150                  // Although it might not be strictly necessary to remove it
    151                  // if (initialLoad) {
    152                  //    $valueSelect.removeData('saved-value');
    153                  // }
    154             }
     140            // complete: function() {
     141            //     // Re-enable dropdown if it was disabled
     142            //     if ($valueSelect.prop('disabled')) {
     143            //         // Only re-enable if options were actually loaded successfully
     144            //         if ($valueSelect.find('option').length > 1 && $valueSelect.find('option[value=""]').text() !== (filterFlexData.i18n?.noOptions || '-- N/A --')) {
     145            //             $valueSelect.prop('disabled', false);
     146            //         }
     147            //     }
     148            // }
    155149        });
    156150    }
  • filterflex/tags/1.2.0/filterflex.php

    r3311998 r3312220  
    44 * Plugin URI:        https://wordpress.org/plugins/filterflex
    55 * Description:       A powerful plugin for applying filters to various WordPress elements with custom field support and dynamic tag replacement.
    6  * Version:           1.1.2
     6 * Version:           1.2.0
    77 * Requires at least: 5.0
    88 * Requires PHP:      7.4
  • filterflex/tags/1.2.0/includes/class-filterflex-filter-application.php

    r3311711 r3312220  
    412412        // Check the operator
    413413        switch ( $operator ) {
     414            case 'is':
    414415            case '==':
    415416                return $actual_value == $value;
     417            case 'is_not':
    416418            case '!=':
    417419                return $actual_value != $value;
     
    457459                $terms = get_the_terms( get_the_ID(), get_query_var( 'taxonomy' ) );
    458460                return ! empty( $terms ) ? $terms[0]->term_id : '';
     461            case 'logged_in_status':
     462                return is_user_logged_in() ? 'logged_in' : 'logged_out';
     463            case 'specific_user':
     464                return (string) get_current_user_id();
     465            case 'page_parent':
     466                $post = get_post();
     467                if ( $post && is_post_type_hierarchical( $post->post_type ) ) {
     468                    return (string) $post->post_parent;
     469                }
     470                return '0';
    459471            default:
    460472                // Allow custom parameters via filter
  • filterflex/tags/1.2.0/includes/class-filterflex.php

    r3311998 r3312220  
    477477                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-tag"></span>';
    478478                                    $extra_class = ' filterflex-tag-tags';
     479                                } elseif ( $tag_placeholder === '{author}' ) {
     480                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-admin-users"></span>';
     481                                    $extra_class = ' filterflex-tag-author';
    479482                                } elseif ( $tag_placeholder === '{custom_field}' ) {
    480483                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-welcome-widgets-menus"></span>';
     
    569572        $config = [
    570573            'params' => [
    571                 'post_type'     => __( 'Post Type', 'filterflex' ),
    572                 'page_template' => __( 'Page Template', 'filterflex' ),
    573                 'page'          => __( 'Page', 'filterflex' ),
    574                 'post'          => __( 'Post', 'filterflex' ),
    575                 'post_category' => __( 'Post Category', 'filterflex' ),
    576                 'user_role'     => __( 'User Role', 'filterflex' ),
    577                 'page_type'     => __( 'Page Type', 'filterflex' ),
     574                'post'             => __( 'Post', 'filterflex' ),
     575                'post_category'    => __( 'Post Category', 'filterflex' ),
     576                'post_type'        => __( 'Post Type', 'filterflex' ),
     577                'page'             => __( 'Page', 'filterflex' ),
     578                'page_parent'      => __( 'Page Parent', 'filterflex' ),
     579                'page_type'        => __( 'Page Type', 'filterflex' ),
     580                'user_role'        => __( 'User Role', 'filterflex' ),
     581                'logged_in_status' => __( 'Logged-in Status', 'filterflex' ),
     582                'specific_user'    => __( 'Specific User', 'filterflex' ),
     583                'page_template'    => __( 'Page Template', 'filterflex' ),
    578584            ],
    579585            'operators' => [
    580586                '==' => __('is equal to', 'filterflex'),
    581587                '!=' => __('is not equal to', 'filterflex'),
     588                'is' => __('is', 'filterflex'),
     589                'is_not' => __('is not', 'filterflex'),
    582590            ],
    583591        ];
     
    920928                 foreach ($categories as $category) { $values[$category->term_id] = $category->name; }
    921929                 break;
     930            case 'logged_in_status':
     931                $values = [ 'logged_in' => __( 'Logged In', 'filterflex' ), 'logged_out' => __( 'Logged Out', 'filterflex' ) ];
     932                break;
     933            case 'specific_user':
     934                $users = get_users();
     935                foreach ( $users as $user ) {
     936                    $values[ $user->ID ] = $user->display_name;
     937                }
     938                break;
     939            case 'page_parent':
     940                $pages = get_pages();
     941                foreach ( $pages as $page ) {
     942                    $values[ $page->ID ] = $page->post_title;
     943                }
     944                break;
    922945            default:
    923946                $values = apply_filters( "filterflex_location_values_{$param}", [] );
  • filterflex/tags/1.2.0/includes/core-functions.php

    r3311280 r3312220  
    189189                ];
    190190                break;
     191            case 'logged_in_status':
     192                $values = [ 'logged_in' => __( 'Logged In', 'filterflex' ), 'logged_out' => __( 'Logged Out', 'filterflex' ) ];
     193                break;
     194            case 'specific_user':
     195                $users = get_users();
     196                foreach ( $users as $user ) {
     197                    $values[ $user->ID ] = $user->display_name;
     198                }
     199                break;
     200            case 'page_parent':
     201                $pages = get_pages();
     202                foreach ( $pages as $page ) {
     203                    $values[ $page->ID ] = $page->post_title;
     204                }
     205                break;
    191206            default:
    192207                $values = apply_filters( 'filterflex_ajax_location_values', [], $param );
  • filterflex/tags/1.2.0/readme.txt

    r3311998 r3312220  
    44Requires at least: 5.0
    55Tested up to: 6.8
    6 Stable tag: 1.1.2
     6Stable tag: 1.2.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    5656== Changelog ==
    5757
     58= 1.2.0 =
     59* New Location Rule: Logged-In Status
     60* New Location Rule: Specific User
     61* New Location Rule: Page Parent
     62
    5863= 1.1.2 =
    5964* Added icons to available tags
  • filterflex/trunk/admin/js/filterflex-admin.js

    r3311998 r3312220  
    104104                $valueSelect.empty(); // Clear loading indicator
    105105
    106                 if (response.success && response.data.values && Object.keys(response.data.values).length > 0) {
     106                if (response.success && response.data.values && typeof response.data.values === 'object' && Object.keys(response.data.values).length > 0) {
     107                    $valueSelect.prop('disabled', false); // Enable before populating
    107108                    $valueSelect.append($('<option>', { value: '', text: filterFlexData.i18n?.selectValue || '-- Select Value --' }));
    108109                    $.each(response.data.values, function(value, label) {
     
    119120                    } else if ((!initialLoad || (initialLoad && savedVal === null)) && param === 'post_type' && response.data.values.hasOwnProperty('post')) {
    120121                         $valueSelect.val('post'); // Set default to 'Posts'
    121                     }
    122                     else {
     122                    } else {
    123123                         $valueSelect.val(''); // Select default if no saved value or not found
    124124                    }
    125                      $valueSelect.show();
     125                    $valueSelect.show();
    126126                } else {
    127                     // No options returned or error
    128                     $valueSelect.append($('<option>', { value: '', text: filterFlexData.i18n?.noOptions || '-- N/A --' }));
    129                     // Keep it hidden or show N/A? Let's show N/A but keep it disabled-like
    130                      $valueSelect.show().prop('disabled', true); // Visually indicate no options
     127                    // No options returned or error from PHP (response.data.values is null or empty)
     128                    $valueSelect.append($('<option>', { value: '', text: response.data?.message || filterFlexData.i18n?.noOptions || '-- N/A --' }));
     129                    $valueSelect.show().prop('disabled', true);
    131130                 }
    132131             },
     
    139138                 $valueSelect.append($('<option>', { value: '', text: errorMsg })).show().prop('disabled', true);
    140139             },
    141              complete: function() {
    142                  // Re-enable dropdown if it was disabled
    143                  if ($valueSelect.prop('disabled')) {
    144                      // Only re-enable if options were actually loaded successfully
    145                      if ($valueSelect.find('option').length > 1) { // More than just the default/error option
    146                          $valueSelect.prop('disabled', false);
    147                      }
    148                  }
    149                  // Clear the saved value data attribute after using it on initial load
    150                  // Although it might not be strictly necessary to remove it
    151                  // if (initialLoad) {
    152                  //    $valueSelect.removeData('saved-value');
    153                  // }
    154             }
     140            // complete: function() {
     141            //     // Re-enable dropdown if it was disabled
     142            //     if ($valueSelect.prop('disabled')) {
     143            //         // Only re-enable if options were actually loaded successfully
     144            //         if ($valueSelect.find('option').length > 1 && $valueSelect.find('option[value=""]').text() !== (filterFlexData.i18n?.noOptions || '-- N/A --')) {
     145            //             $valueSelect.prop('disabled', false);
     146            //         }
     147            //     }
     148            // }
    155149        });
    156150    }
  • filterflex/trunk/filterflex.php

    r3311998 r3312220  
    44 * Plugin URI:        https://wordpress.org/plugins/filterflex
    55 * Description:       A powerful plugin for applying filters to various WordPress elements with custom field support and dynamic tag replacement.
    6  * Version:           1.1.2
     6 * Version:           1.2.0
    77 * Requires at least: 5.0
    88 * Requires PHP:      7.4
  • filterflex/trunk/includes/class-filterflex-filter-application.php

    r3311711 r3312220  
    412412        // Check the operator
    413413        switch ( $operator ) {
     414            case 'is':
    414415            case '==':
    415416                return $actual_value == $value;
     417            case 'is_not':
    416418            case '!=':
    417419                return $actual_value != $value;
     
    457459                $terms = get_the_terms( get_the_ID(), get_query_var( 'taxonomy' ) );
    458460                return ! empty( $terms ) ? $terms[0]->term_id : '';
     461            case 'logged_in_status':
     462                return is_user_logged_in() ? 'logged_in' : 'logged_out';
     463            case 'specific_user':
     464                return (string) get_current_user_id();
     465            case 'page_parent':
     466                $post = get_post();
     467                if ( $post && is_post_type_hierarchical( $post->post_type ) ) {
     468                    return (string) $post->post_parent;
     469                }
     470                return '0';
    459471            default:
    460472                // Allow custom parameters via filter
  • filterflex/trunk/includes/class-filterflex.php

    r3311998 r3312220  
    477477                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-tag"></span>';
    478478                                    $extra_class = ' filterflex-tag-tags';
     479                                } elseif ( $tag_placeholder === '{author}' ) {
     480                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-admin-users"></span>';
     481                                    $extra_class = ' filterflex-tag-author';
    479482                                } elseif ( $tag_placeholder === '{custom_field}' ) {
    480483                                    $icon_html = '<span class="filterflex-tag-icon dashicons dashicons-welcome-widgets-menus"></span>';
     
    569572        $config = [
    570573            'params' => [
    571                 'post_type'     => __( 'Post Type', 'filterflex' ),
    572                 'page_template' => __( 'Page Template', 'filterflex' ),
    573                 'page'          => __( 'Page', 'filterflex' ),
    574                 'post'          => __( 'Post', 'filterflex' ),
    575                 'post_category' => __( 'Post Category', 'filterflex' ),
    576                 'user_role'     => __( 'User Role', 'filterflex' ),
    577                 'page_type'     => __( 'Page Type', 'filterflex' ),
     574                'post'             => __( 'Post', 'filterflex' ),
     575                'post_category'    => __( 'Post Category', 'filterflex' ),
     576                'post_type'        => __( 'Post Type', 'filterflex' ),
     577                'page'             => __( 'Page', 'filterflex' ),
     578                'page_parent'      => __( 'Page Parent', 'filterflex' ),
     579                'page_type'        => __( 'Page Type', 'filterflex' ),
     580                'user_role'        => __( 'User Role', 'filterflex' ),
     581                'logged_in_status' => __( 'Logged-in Status', 'filterflex' ),
     582                'specific_user'    => __( 'Specific User', 'filterflex' ),
     583                'page_template'    => __( 'Page Template', 'filterflex' ),
    578584            ],
    579585            'operators' => [
    580586                '==' => __('is equal to', 'filterflex'),
    581587                '!=' => __('is not equal to', 'filterflex'),
     588                'is' => __('is', 'filterflex'),
     589                'is_not' => __('is not', 'filterflex'),
    582590            ],
    583591        ];
     
    920928                 foreach ($categories as $category) { $values[$category->term_id] = $category->name; }
    921929                 break;
     930            case 'logged_in_status':
     931                $values = [ 'logged_in' => __( 'Logged In', 'filterflex' ), 'logged_out' => __( 'Logged Out', 'filterflex' ) ];
     932                break;
     933            case 'specific_user':
     934                $users = get_users();
     935                foreach ( $users as $user ) {
     936                    $values[ $user->ID ] = $user->display_name;
     937                }
     938                break;
     939            case 'page_parent':
     940                $pages = get_pages();
     941                foreach ( $pages as $page ) {
     942                    $values[ $page->ID ] = $page->post_title;
     943                }
     944                break;
    922945            default:
    923946                $values = apply_filters( "filterflex_location_values_{$param}", [] );
  • filterflex/trunk/includes/core-functions.php

    r3311280 r3312220  
    189189                ];
    190190                break;
     191            case 'logged_in_status':
     192                $values = [ 'logged_in' => __( 'Logged In', 'filterflex' ), 'logged_out' => __( 'Logged Out', 'filterflex' ) ];
     193                break;
     194            case 'specific_user':
     195                $users = get_users();
     196                foreach ( $users as $user ) {
     197                    $values[ $user->ID ] = $user->display_name;
     198                }
     199                break;
     200            case 'page_parent':
     201                $pages = get_pages();
     202                foreach ( $pages as $page ) {
     203                    $values[ $page->ID ] = $page->post_title;
     204                }
     205                break;
    191206            default:
    192207                $values = apply_filters( 'filterflex_ajax_location_values', [], $param );
  • filterflex/trunk/readme.txt

    r3311998 r3312220  
    44Requires at least: 5.0
    55Tested up to: 6.8
    6 Stable tag: 1.1.2
     6Stable tag: 1.2.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    5656== Changelog ==
    5757
     58= 1.2.0 =
     59* New Location Rule: Logged-In Status
     60* New Location Rule: Specific User
     61* New Location Rule: Page Parent
     62
    5863= 1.1.2 =
    5964* Added icons to available tags
Note: See TracChangeset for help on using the changeset viewer.