Support » Plugin: Admin Page Framework » repeatable sortable tab order change not saved in custom post, custom meta box

  • Admin Page Framework v3.8.12
    I created Custom Post Type and inside it a custom meta box.
    The meta box has a section with a repeatable & sortable tab.
    On saved post, with 4 tabs added, when I re-order tabs and press “Update”, when page reloads, the tabs are back in the original order. Change was not saved in custom post, custom meta box.

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Author miunosoft

    (@miunosoft)

    Hi,

    I cannot reproduce the problem.

    I suggest you update the framework to the latest version.

    After updating and you still have the same problem, post the steps to reproduce it so that others can see it.

    • This reply was modified 3 months, 2 weeks ago by miunosoft. Reason: grammar error

    Updated to v3.8.15 and still seeing the same issue.
    Create 4 tabs “Steps” and enter description and question text as Q1,Q2,Q3,Q4
    Publish
    Rearrange tab Steps to be Q1,Q3,Q2,Q4
    Update
    Page reloads and shows tab Steps in original order Q1,Q2,Q3,Q4

    
    <?php
    
    /**
     * Test Plugin for admin page framework
     *
     * @since             1.0.0
     * @package           prt
     * @wordpress-plugin
     * Plugin Name:       prt
     * Description:       Test Plugin for admin page framework
     * Version:           1.0.0 
     * Text Domain:       prt
     */
    
    // If this file is called directly, abort.
    if ( ! defined( 'WPINC' ) ) {
    	die;
    }
    
    define( 'PRT_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
    define( 'PRT_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
    
    // Load the Admin Page Framework if it exists
    if (file_exists(dirname(__FILE__) . '/admin-page-framework/admin-page-framework.php')) {
        include dirname( __FILE__ ) . '/admin-page-framework/admin-page-framework.php';
    }
    
    // PROFILE FIELDS - ADMIN PAGE
    class Prt extends prt_AdminPageFramework_PostType {
        
        public function setUp() {
     
            $this->setArguments(
                array( // argument - for the array structure, refer to http://codex.wordpress.org/Function_Reference/register_post_type#Arguments
                    'labels' => array(
                        'name'               => 'PRT',
                        'add_new_item'       => __( 'PRT Q Item', 'prt' ),
                        'plugin_action_link' => __( 'PRT Custom Q Type', 'prt' ), // (framework specific key). [3.0.6+]
                    ),
                    'supports'          => array( 'title', 'thumbnail' ), // e.g. array( 'title', 'editor', 'comments', 'thumbnail', 'excerpt' ),
                    'public'            => true,
                    //'show_ui'           => true,
                    //'show_in_menu'      => true,
                    'menu_icon'         => 'dashicons-welcome-learn-more'
                )    
            );    
            
            add_action( 'the_content', array( $this, 'content_output_handler' ) );
        }
        
        public function columns_prt_q( $aHeaderColumns ) {
            
            return array(
                    'cb'    => '<input type="checkbox" />', // Checkbox for bulk actions.
                    'title' => __( 'Title', 'prt' ), // Post title. Includes "edit", "quick edit", "trash" and "view" links. If $mode (set from $_REQUEST['mode']) is 'excerpt', a post excerpt is included between the title and links.
                    'icon'  => __( 'Icon', 'prt' ),
                    'passing_mark' => __( 'Passing Mark', 'prt' ),
                    'prerequisite' => __( 'Prerequisite', 'prt' ),
                    'id' => __( 'Quiz ID', 'prt' ),
                )     
                // + $aHeaderColumns // uncomment this to enable the default columns.
            ;
            
        }
         public function cell_prt_q_icon( $sCell, $iPostID ) { // cell_{post type}_{column key}
            $icon='<img src="" alt="N/A">';
            $postSettings=get_post_meta($iPostID,'quiz_settings',true);
            if($postSettings){
                if($postSettings['quiz_icon']){
                    $icon='<img src="'.$postSettings['quiz_icon'].'" alt="N/A">';
                }
            }
            return $sCell
                    . '<div class="perm_icon_sm">'
                        . $icon  
                    . '</div>'; 
        }
        public function cell_prt_q_passing_mark( $sCell, $iPostID ) { // cell_{post type}_{column key}
            $passMark='0%';
            $postSettings=get_post_meta($iPostID,'quiz_settings',true);
            if($postSettings){
                if($postSettings['quiz_pass']){
                    $passMark=$postSettings['quiz_pass'].'%';
                }
            }
            return $sCell
                    . '<div class="">'
                        . '<p>' . esc_attr( $passMark ) . '</p>'
                    . '</div>';   
        }
        public function cell_prt_q_prerequisite( $sCell, $iPostID ) { // cell_{post type}_{column key}
            $prerequisite='None';
            $postSettings=get_post_meta($iPostID,'quiz_settings',true);
            if($postSettings){
                if($postSettings['quiz_prerequisite']){
                    $prerequisitePost=get_post($postSettings['quiz_prerequisite']);
                    if($prerequisitePost){
                        $prerequisite=$prerequisitePost->post_title;
                    }
                }
            }
            return $sCell
                    . '<div class="">'
                        . '<p>' . esc_attr( $prerequisite ) . '</p>'
                    . '</div>'; 
        }
        public function cell_prt_q_id( $sCell, $iPostID ) { // cell_{post type}_{column key}
            return $sCell
                    . '<div class="pr_post_cell" >'
                        . '<p>id='.esc_attr($iPostID).'</p>'
                    . '</div>';
            
        }
        
        
        public function content_output_handler( $sContent ) { 
            if ( ! is_singular() ) {
                    return $sContent;
            }
            if ( ! is_main_query() ) {
                return $sContent;
            }
            global $post;
            if ( 'prt_q' !== $post->post_type ) {
                return $sContent;
            }
            echo "<div>HELLO BLUE WORLD!</div>";
            //$_sSelectedColor = get_post_meta( $GLOBALS['post']->ID, 'my_custom_color', true );
            $_sSelectedColor = 'blue';//$_sSelectedColor ? $_sSelectedColor : 'transparent';
            return "<h3>" . __( 'Selected Color', 'prt' ) . "</h3>"         
                . "<div style='width: 100%;'>123PERM456" 
                    . "<div style='margin:auto; width: 3em; height: 3em; background-color:$_sSelectedColor'></div>"
                . "</div>"
                ;
     
        }    
        
    }
    
    class PrtMetaBox extends prt_AdminPageFramework_MetaBox {
        
        /*
         * Use the setUp() method to define settings of this meta box.
         */
        public function setUp() {
            $this->addSettingSections(
                'perm_quiz',    // target page slug
                array(
                    'section_id'        => 'perm_quiz_tab_section',
                    'repeatable'        => true,
                    'sortable'          => true,
                    'section_tab_slug'  => 'perm_quiz_tab',
                    'title'             => 'Section',
                    //'description'       => 'This section is a repeatable tabbed section.',
                )
            );
            
            $this->addSettingFields(
                array(
                    'field_id'      => 'quiz_settings',
                    'type'          => 'inline_mixed',
                    'title'         => __( 'Settings', 'prt' ),
                    'content'       => array(
                        array(
                                    'field_id'   => 'quiz_pass',
                                    'type'       => 'text',
                                    'title'      => __('Passing Mark (%)', 'prt'),
                                    'attributes' => array('type'=>'number', 'min'=>'0', 'max'=>'100')
                        ),
                        array(
                                    'field_id'  => 'quiz_prerequisite',
                                    'type'      => 'select',
                                    'title'     => __('Quiz Prerequisite', 'prt'),
                                    'label'    => $this->getQuizPosts()
                        ),
                        array(
                                'field_id'   => 'quiz_icon',
                                'type'       => 'image',
                                'title'      => __('Icon', 'prt'),
                                'attributes' => array(
                                        'style' => 'max-width: 100px;max-height: 100px;float:right;margin-top:0',
                                    )
                        )
                    )
                ),
                array(
                        'field_id'   => 'quiz_desc',
                        'type'       => 'textarea',
                        'rich'       => true,
                        'title'      => __('Quiz Description', 'prt'),
                    ),
                array(
                        'field_id'   => 'quiz_status',
                        'type'       => 'hidden',
                        'default'    => 'U'
                    )
                
                
            );
            
            $this->addSettingFields(
                array('perm_quiz_tab_section'),
                array(
                                'field_id'   => 'exclude',
                                'type'       => 'checkbox',
                                'label'      => __(' Exclude from score calculation', 'prt'),
                                'default'    => false,
                                'attributes' => array(
                                        'style' => 'margin:0 10px 0px 0px;',
                                    )
                ),
                array(
                        'field_id'   => 'quiz_question',
                        'type'       => 'textarea',
                        'rich'       => true,
                        'title'      => __('Quiz Question', 'prt'),
                ),
                array(
                    'field_id'      => 'quiz_answer_group',
                    'type'          => 'inline_mixed',
                    'repeatable'    => true,
                    'title'         => __( 'Multiple Choice Answers', 'prt' ),
                    'content'       => array(
                        array(
                                'field_id'   => 'quiz_answer',
                                'type'       => 'text',
                                'title'      => __('Answer', 'prt'),
                        ),
                        array(
                                'field_id'   => 'correct_answer',
                                'type'       => 'checkbox',
                                'title'      => __('Correct', 'prt'),
                                'default'    => false,
                                'attributes' => array(
                                        'style' => 'margin:0 0 5px 20px;',
                                    )
                        )
                    )
                )
            );
            
        
        }
       
        function getQuizPosts(){
            $postslist = get_posts(array('post_type' => 'prt_q'));
            $retPostList=["-1"=>"None"];
            foreach ( $postslist as $post ){
                if( $post->ID != $_GET['post'] ){
                    $retPostList+=["$post->ID"=>$post->post_title];
                }
            }
            return $retPostList;
        }
        
    }
     
    
    new Prt('prt_q'); 
    new PrtMetaBox(
        null,   // meta box ID - can be null.
        __( 'PRT Quiz Meta Box', 'prt' ), // title
        array( 'prt_q' ),                 // post type slugs: post, page, etc.
        'normal',                                      // context
        'low'                                          // priority
    );
    
    
    • This reply was modified 3 months, 1 week ago by iso10.

    Sample plugin “PRT” created to demonstrate

    http://www.filedropper.com/prt

    Plugin Author miunosoft

    (@miunosoft)

    I see. I could see the problem.

    I’ll see if this can be fixed.

    Thanks for the report.

Viewing 4 replies - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.