简体   繁体   English

单击第二次关闭手风琴

[英]Close accordion on second click

I am in need of fixing this code so that the accordion can open AND close on click. 我需要修复此代码,以便手风琴可以单击打开和关闭。 I am using a wordpress theme that includes an accordion module and am trying to manipulate the code to work for my needs. 我正在使用一个包含手风琴模块的wordpress主题,并试图操纵代码来满足我的需求。

Here is the accordion.js 这是手风琴.js

( function( $ ){

$( document ).ready( function () {

        // Expand/Collapse on click
        $( '.accordion-container' ).on( 'click keydown', '.accordion-section-title', function( e ) {
            if ( e.type === 'keydown' && 13 !== e.which ) // "return" key
                    return;
            e.preventDefault(); // Keep this AFTER the key filter above

            accordionSwitch( $( this ) );
        });

        // Re-initialize accordion when screen options are toggled
        $( '.hide-postbox-tog' ).click( function () {
            accordionInit();
        });

    });

    var accordionOptions = $( '.accordion-container li.accordion-section' ),
        sectionContent   = $( '.accordion-section-content' );

    function accordionInit () {
        // Rounded corners
        accordionOptions.removeClass( 'top bottom' );
        accordionOptions.filter( ':visible' ).first().addClass( 'top' );
        accordionOptions.filter( ':visible' ).last().addClass( 'bottom' ).find( sectionContent ).addClass( 'bottom' );
    }

    function accordionSwitch ( el ) {
        var section = el.closest( '.accordion-section' ),
            siblings = section.closest( '.accordion-container' ).find( '.open' ),
            content = section.find( sectionContent );

        if ( section.hasClass( 'cannot-expand' ) )
            return;

        if ( section.hasClass( 'open' ) ) {
            section.toggleClass( 'open' );
            content.toggle( true ).slideToggle( 150 );
        } else {
            siblings.removeClass( 'open' );
            siblings.find( sectionContent ).show().slideUp( 150 );
            content.toggle( false ).slideToggle( 150 );
            section.toggleClass( 'open' );
        }

        accordionInit();
    }

    // Initialize the accordion (currently just corner fixes)
    accordionInit();

})(jQuery);

and this is the module.php that I believe is connected to it: 这是我认为已连接到的module.php:

<?php

class DSLC_Accordion extends DSLC_Module {

    var $module_id;
    var $module_title;
    var $module_icon;
    var $module_category;

    function __construct() {

        $this->module_id = 'DSLC_Accordion';
        $this->module_title = __( 'Accordion', 'dslc_string' );
        $this->module_icon = 'reorder';
        $this->module_category = 'elements';

    }

    function options() {    

        $dslc_options = array(

            array(
                'label' => __( '(hidden) Accordion Content', 'dslc_string' ),
                'id' => 'accordion_content',
                'std' => '',
                'type' => 'textarea',
                'visibility' => 'hidden',
                'section' => 'styling',
            ),
            array(
                'label' => __( '(hidden) Accordion Nav', 'dslc_string' ),
                'id' => 'accordion_nav',
                'std' => '',
                'type' => 'textarea',
                'visibility' => 'hidden',
                'section' => 'styling',
            ),

            array(
                'label' => __( 'Open by default', 'dslc_string' ),
                'id' => 'open_by_default',
                'std' => '1',
                'type' => 'text',
            ),

            /**
             * General
             */

            array(
                'label' => __( 'BG Color', 'dslc_string' ),
                'id' => 'css_bg_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'background-color',
                'section' => 'styling',
            ),
            array(
                'label' => __( 'Border Color', 'dslc_string' ),
                'id' => 'css_border_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'border-color',
                'section' => 'styling',
            ),
            array(
                'label' => __( 'Border Width', 'dslc_string' ),
                'id' => 'css_border_width',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'border-width',
                'section' => 'styling',
                'ext' => 'px',
            ),
            array(
                'label' => __( 'Borders', 'dslc_string' ),
                'id' => 'css_border_trbl',
                'std' => 'top right bottom left',
                'type' => 'checkbox',
                'choices' => array(
                    array(
                        'label' => __( 'Top', 'dslc_string' ),
                        'value' => 'top'
                    ),
                    array(
                        'label' => __( 'Right', 'dslc_string' ),
                        'value' => 'right'
                    ),
                    array(
                        'label' => __( 'Bottom', 'dslc_string' ),
                        'value' => 'bottom'
                    ),
                    array(
                        'label' => __( 'Left', 'dslc_string' ),
                        'value' => 'left'
                    ),
                ),
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'border-style',
                'section' => 'styling',
            ),
            array(
                'label' => __( 'Margin Bottom', 'dslc_string' ),
                'id' => 'css_margin_bottom',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'margin-bottom',
                'section' => 'styling',
                'ext' => 'px',
            ),
            array(
                'label' => __( 'Padding Vertical', 'dslc_string' ),
                'id' => 'css_padding_vertical',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'padding-top,padding-bottom',
                'section' => 'styling',
                'ext' => 'px',
            ),
            array(
                'label' => __( 'Padding Horizontal', 'dslc_string' ),
                'id' => 'css_padding_horizontal',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion',
                'affect_on_change_rule' => 'padding-left,padding-right',
                'section' => 'styling',
                'ext' => 'px',
            ),

            /**
             * Header
             */

            array(
                'label' => __( 'BG Color', 'dslc_string' ),
                'id' => 'css_header_bg_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'background-color',
                'section' => 'styling',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Color', 'dslc_string' ),
                'id' => 'css_header_border_color',
                'std' => '#e8e8e8',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'border-color',
                'section' => 'styling',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Width', 'dslc_string' ),
                'id' => 'css_header_border_width',
                'std' => '1',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'border-width',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Borders', 'dslc_string' ),
                'id' => 'css_header_border_trbl',
                'std' => 'top right bottom left',
                'type' => 'checkbox',
                'choices' => array(
                    array(
                        'label' => __( 'Top', 'dslc_string' ),
                        'value' => 'top'
                    ),
                    array(
                        'label' => __( 'Right', 'dslc_string' ),
                        'value' => 'right'
                    ),
                    array(
                        'label' => __( 'Bottom', 'dslc_string' ),
                        'value' => 'bottom'
                    ),
                    array(
                        'label' => __( 'Left', 'dslc_string' ),
                        'value' => 'left'
                    ),
                ),
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'border-style',
                'section' => 'styling',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Margin Bottom', 'dslc_string' ),
                'id' => 'css_header_margin_bottom',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'margin-bottom',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Padding Vertical', 'dslc_string' ),
                'id' => 'css_header_padding_vertical',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'padding-top,padding-bottom',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'header', 'dslc_string' )
            ),
            array(
                'label' => __( 'Padding Horizontal', 'dslc_string' ),
                'id' => 'css_header_padding_horizontal',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-header',
                'affect_on_change_rule' => 'padding-left,padding-right',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'header', 'dslc_string' )
            ),

            /**
             * Title
             */

            array(
                'label' => __( 'BG Color', 'dslc_string' ),
                'id' => 'css_title_bg_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'background-color',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Color', 'dslc_string' ),
                'id' => 'css_title_border_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'border-color',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Width', 'dslc_string' ),
                'id' => 'css_title_border_width',
                'std' => '0',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'border-width',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Borders', 'dslc_string' ),
                'id' => 'css_title_border_trbl',
                'std' => 'top right bottom left',
                'type' => 'checkbox',
                'choices' => array(
                    array(
                        'label' => __( 'Top', 'dslc_string' ),
                        'value' => 'top'
                    ),
                    array(
                        'label' => __( 'Right', 'dslc_string' ),
                        'value' => 'right'
                    ),
                    array(
                        'label' => __( 'Bottom', 'dslc_string' ),
                        'value' => 'bottom'
                    ),
                    array(
                        'label' => __( 'Left', 'dslc_string' ),
                        'value' => 'left'
                    ),
                ),
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'border-style',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Color', 'dslc_string' ),
                'id' => 'css_title_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'color',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Font Size', 'dslc_string' ),
                'id' => 'css_title_font_size',
                'std' => '12',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'font-size',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' ),
                'ext' => 'px'
            ),
            array(
                'label' => __( 'Font Weight', 'dslc_string' ),
                'id' => 'css_title_font_weight',
                'std' => '700',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'font-weight',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' ),
                'ext' => '',
                'min' => 100,
                'max' => 900,
                'increment' => 100
            ),
            array(
                'label' => __( 'Font Family', 'dslc_string' ),
                'id' => 'css_title_font_family',
                'std' => 'Open Sans',
                'type' => 'font',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'font-family',
                'section' => 'styling',
                'tab' => __( 'title', 'dslc_string' ),
            ),
            array(
                'label' => __( 'Padding Vertical', 'dslc_string' ),
                'id' => 'css_title_padding_vertical',
                'std' => '15',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'padding-top,padding-bottom',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'title', 'dslc_string' )
            ),
            array(
                'label' => __( 'Padding Horizontal', 'dslc_string' ),
                'id' => 'css_title_padding_horizontal',
                'std' => '15',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-title',
                'affect_on_change_rule' => 'padding-left,padding-right',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'title', 'dslc_string' )
            ),

            /**
             * Content
             */

            array(
                'label' => __( 'BG Color', 'dslc_string' ),
                'id' => 'css_content_bg_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'background-color',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Color', 'dslc_string' ),
                'id' => 'css_content_border_color',
                'std' => '#e8e8e8',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'border-color',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Border Width', 'dslc_string' ),
                'id' => 'css_content_border_width',
                'std' => '1',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'border-width',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Borders', 'dslc_string' ),
                'id' => 'css_content_border_trbl',
                'std' => 'right bottom left',
                'type' => 'checkbox',
                'choices' => array(
                    array(
                        'label' => __( 'Top', 'dslc_string' ),
                        'value' => 'top'
                    ),
                    array(
                        'label' => __( 'Right', 'dslc_string' ),
                        'value' => 'right'
                    ),
                    array(
                        'label' => __( 'Bottom', 'dslc_string' ),
                        'value' => 'bottom'
                    ),
                    array(
                        'label' => __( 'Left', 'dslc_string' ),
                        'value' => 'left'
                    ),
                ),
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'border-style',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Color', 'dslc_string' ),
                'id' => 'css_content_color',
                'std' => '',
                'type' => 'color',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'color',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Font Size', 'dslc_string' ),
                'id' => 'css_content_font_size',
                'std' => '12',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'font-size',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' ),
                'ext' => 'px'
            ),
            array(
                'label' => __( 'Font Weight', 'dslc_string' ),
                'id' => 'css_content_font_weight',
                'std' => '400',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'font-weight',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' ),
                'ext' => '',
                'min' => 100,
                'max' => 900,
                'increment' => 100
            ),
            array(
                'label' => __( 'Font Family', 'dslc_string' ),
                'id' => 'css_content_font_family',
                'std' => 'Open Sans',
                'type' => 'font',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'font-family',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' ),
            ),
            array(
                'label' => __( 'Line Height', 'dslc_string' ),
                'id' => 'css_content_line_height',
                'std' => '22',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'line-height',
                'section' => 'styling',
                'tab' => __( 'content', 'dslc_string' ),
                'ext' => 'px'
            ),
            array(
                'label' => __( 'Padding Vertical', 'dslc_string' ),
                'id' => 'css_content_padding_vertical',
                'std' => '25',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'padding-top,padding-bottom',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'content', 'dslc_string' )
            ),
            array(
                'label' => __( 'Padding Horizontal', 'dslc_string' ),
                'id' => 'css_content_padding_horizontal',
                'std' => '25',
                'type' => 'slider',
                'refresh_on_change' => false,
                'affect_on_change_el' => '.dslc-accordion-content',
                'affect_on_change_rule' => 'padding-left,padding-right',
                'section' => 'styling',
                'ext' => 'px',
                'tab' => __( 'content', 'dslc_string' )
            ),



        $dslc_options = array_merge( $dslc_options, $this->shared_options('animation_options') );
        $dslc_options = array_merge( $dslc_options, $this->presets_options() );

        return apply_filters( 'dslc_module_options', $dslc_options, $this->module_id );

    }

    function output( $options ) {

        global $dslc_active;

        if ( $dslc_active && is_user_logged_in() && current_user_can( DS_LIVE_COMPOSER_CAPABILITY ) )
            $dslc_is_admin = true;
        else
            $dslc_is_admin = false;     

        $this->module_start( $options );

        /* Module output stars here */ 

            $accordion_nav = explode( '(dslc_sep)', trim( $options['accordion_nav'] ) );

            if ( empty( $options['accordion_content'] ) )
                $accordion_contents = false;
            else
                $accordion_contents = explode( '(dslc_sep)', trim( $options['accordion_content'] ) );

            $count = 0;

        ?>

                <div class="dslc-accordion" data-open="<?php echo $options['open_by_default']; ?>">

                    <?php if ( is_array( $accordion_contents ) && count( $accordion_contents ) > 0 ) : ?>

                        <?php foreach ( $accordion_contents as $accordion_content ) : ?>

                            <div class="dslc-accordion-item">

                                <div class="dslc-accordion-header dslc-accordion-hook">
                                    <span class="dslc-accordion-title" <?php if ( $dslc_is_admin ) echo 'contenteditable'; ?>><?php echo $accordion_nav[$count]; ?></span>
                                    <?php if ( $dslc_is_admin ) : ?>
                                        <span class="dslca-delete-accordion-hook"><span class="dslca-icon dslc-icon-remove"></span></span>
                                    <?php endif; ?>
                                </div>

                                <div class="dslc-accordion-content">
                                    <div class="dslca-editable-content">
                                        <?php 
                                            $accordion_content_output = stripslashes( $accordion_content ); 
                                            $accordion_content_output = str_replace( '<lctextarea', '<textarea', $accordion_content_output );
                                            $accordion_content_output = str_replace( '</lctextarea', '</textarea', $accordion_content_output );
                                            echo $accordion_content_output;
                                        ?>
                                    </div>
                                    <?php if ( $dslc_is_admin ) : ?>
                                        <div class="dslca-wysiwyg-actions-edit"><span class="dslca-wysiwyg-actions-edit-hook"><?php _e( 'Edit Content', 'dslc_string' ); ?></span></div>
                                    <?php endif; ?>
                                </div><!-- .dslc-accordion-content -->

                            </div><!-- .dslc-accordion-item -->

                        <?php $count++; endforeach; ?>

                    <?php else : ?>

                        <div class="dslc-accordion-item">

                            <div class="dslc-accordion-header dslc-accordion-hook">
                                <span class="dslc-accordion-title" <?php if ( $dslc_is_admin ) echo 'contenteditable'; ?>><?php _e( 'CLICK TO EDIT', 'dslc_string' ); ?></span>
                                <?php if ( $dslc_is_admin ) : ?>
                                    <span class="dslca-delete-accordion-hook"><span class="dslca-icon dslc-icon-remove"></span></span>
                                <?php endif; ?>
                            </div>

                            <div class="dslc-accordion-content">
                                <div class="dslca-editable-content">
                                    Placeholder content. Lorem ipsum dolor sit amet, consectetur
                                    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                                    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
                                    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
                                    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
                                    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                                </div>
                                <?php if ( $dslc_is_admin ) : ?>
                                    <div class="dslca-wysiwyg-actions-edit"><span class="dslca-wysiwyg-actions-edit-hook"><?php _e( 'Edit Content', 'dslc_string' ); ?></span></div>
                                <?php endif; ?>
                            </div><!-- .dslc-accordion-content -->

                        </div><!-- .dslc-accordion-item -->

                    <?php endif; ?>

                    <?php if ( $dslc_is_admin ) : ?>
                        <div class="dslca-add-accordion">
                            <span class="dslca-add-accordion-hook"><span class="dslca-icon dslc-icon-plus"></span></span>
                        </div>
                    <?php endif; ?>

                </div><!-- .dslc-accordion -->

        <?php /* Module output ends here */

        $this->module_end( $options );

    }

}

Any insight on how to fix this would be GREATLY appreciated. 任何有关如何解决此问题的见解将不胜感激。

Thanks! 谢谢!

A link to a sample page containing the issue content might have been useful to suggest a proper answer but for the analysis of your code i have a solution which can work. 指向包含问题内容的示例页面的链接可能有助于提出正确的答案,但是对于您的代码分析,我有一个可行的解决方案。

Try using the following code and enqueue the same in a js script to make the accordion close on second click. 尝试使用以下代码,并将其放入js脚本中,以使第二次单击时手风琴关闭。

$( ".dslc-accordion" ).accordion({
    icons: icons,
    collapsible: true
});

Let me know if it worked. 让我知道它是否有效。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM