记事本粘性插件

时间:2016-07-22 09:09:36

标签: php jquery wordpress

我有以下代码为前端用户提供textarea,以便将其用作页面上的注释来编写要记住的内容。但是这段代码只保存了一个可以在用户需要时编辑的便签。我的问题是,如果有一种方法可以将内容保存到某个地方,并且每次按下提交时都会有新的内容。或者添加新的粘滞按钮。

 require_once( plugin_dir_path( __FILE__ ) . 'wp-ajax.php' );
                    class notepad_stikey extends WP_Ajax {
                        var $user;
                        var $username;
                        function __construct() {
                            parent::__construct();
                            add_action('init', array( &$this, 'setup') );
                        }
                        function setup() {
                            $this->user = get_current_user_id();
                            $this->username = get_userdata( $this->user )->user_login;
                            $this->notes = get_user_meta( $this->user, 'notepad_stikey', true );
                            $this->ph = ' '; //placeholder
                            if (empty( $this->notes )) {
                                $this->notes = $this->ph;
                            }
                            add_action('wp_enqueue_scripts', array( &$this, 'scripts') );
                        }
                        function scripts() {
                            wp_enqueue_script( 'notepad_stikey', plugins_url( 'notepad_stikey.js', __FILE__ ), array( 'jquery' ) );
                            wp_localize_script( 'notepad_stikey', 'notepad_stikey', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
                        }
                        function an_change_notepad_stikey() {
                            $notes = trim( $_POST['notes'] );
                            //if notes is empty, delete
                            if ( empty($notes) ) {
                                if ( delete_user_meta( $this->user, 'notepad_stikey' ) )
                                    die( 'notes deleted' );
                            }
                            //notes are the same, notes = placeholder, or resaving empty notes
                            if ( $notes == $this->notes || $notes == $this->ph || ( empty($notes) && $this->notes == $this->ph) )
                                die();
                            //update
                            if ( update_user_meta( $this->user, 'notepad_stikey', $notes ) )
                                die( 'updated' );
                            //hopefully, we don't get this far. if we do, something is wrong
                            die( 'uh oh. notes could not be saved' );
                        }
                    }
                    global $notepad_stikey;
                    $notepad_stikey = new notepad_stikey();
                    add_action( 'widgets_init', 'notepad_stikey_load' );
                    function notepad_stikey_load() {
                        register_widget( 'notepad_stikey_Widget' );
                    }
                    class notepad_stikey_Widget extends WP_Widget {
                        function notepad_stikey_Widget() {
                            $widget_ops = array('classname' => 'notepad_stikey', 'description' => __( 'notepad_stikey. Only one instance please. Else this will break.', 'notepad_stikey' ) );
                            $control_ops = array( 'id_base' => 'notepad_stikey' );
                            parent::WP_Widget( 'notepad_stikey', __( 'notepad_stikey', 'notepad_stikey' ), $widget_ops, $control_ops );
                        }
                        function widget( $args, $instance ) {
                            extract( $args, EXTR_SKIP );
                            echo $before_widget;
                            global $notepad_stikey;
                            $username = $notepad_stikey->username;
                            $notes = $notepad_stikey->notes;
                            //overwrite title
                            $instance['title'] = 'Notepad for '. $username;
                            echo $instance['hide_title'] ? '' : $before_title . $instance['title'] . $after_title;
                            echo "<div id='notepad_stikey' class='$username' style='border: 1px solid #eee; padding: 10px 15px;min-height: 100px;'>";
                            echo $notes;
                            echo '</div><span style="float:left;color:#008;" id="notepad_stikey_response"></span><small style="float:right;">click box above to edit</small>';
                            echo $after_widget;
                        } //end widget()
                        function update($new_instance, $old_instance) {
                            $instance = $old_instance;
                            $instance['title'] = esc_attr( $new_instance['title'] );
                            $instance['hide_title'] = (bool) $new_instance['hide_title'] ? 1 : 0;
                            return $instance;
                        } //end update()
                        function form( $instance ) {
                            $instance = wp_parse_args( (array) $instance, array( 'hide_title' => 0 ) );
                            extract( $instance );
                            ?>
                            <p>
                                <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hide_title'); ?>" name="<?php echo $this->get_field_name('hide_title'); ?>"<?php checked( $hide_title ); ?> />
                                <label for="<?php echo $this->get_field_id('hide_title'); ?>"><?php _e('Hide Title?', 'notepad_stikey' );?></label>
                            </p>
                            <?php
                        } //end form()
                    }



                   if (!class_exists('WP_Ajax')) {
               class WP_Ajax {
            function __construct( $ajax_prefix = 'a', $nopriv_prefix = 'n' ) {
                $regex = "/^($ajax_prefix)?($nopriv_prefix)?_|^($nopriv_prefix)?  ($ajax_prefix)?_/";
                $methods = get_class_methods( $this );
                foreach ( $methods as $method ) {
                    if ( preg_match( $regex, $method, $matches ) ) {
                        if ( count( $matches ) > 1 ) {
                            $action = preg_replace( $regex, '', $method );
                            if ( count( $matches ) == 3 ) {
                                add_action( "wp_ajax_$action", array( $this, $method )    );
                                add_action( "wp_ajax_nopriv_$action", array( $this, $method ) );
                            } else {
                                if ( $matches[1] == $ajax_prefix ) {
                                    add_action( "wp_ajax_$action", array( $this, $method ) );
                                } else {
                                    add_action( "wp_ajax_nopriv_$action", array( $this,    $method ) );
                                }
                            }
                        }
                    }
                }
            }
               }

               }



                   jQuery(document).ready(function($) {
                   $('#notepad_stikey').click(function(e) {
                   tag = e.target.tagName;
                    if ( tag != 'TEXTAREA' && tag != 'INPUT' ) {
                    contents = $(this).html();
                    $(this).html( '<textarea rows="5" cols="50"  style="display:block;width:98%;height:100px;">' + contents + '</textarea><input type="submit" class="save" style="position:relative;z-index:99" />' );
                  }
                  });
                 $('#notepad_stikey input.save').live( 'click', function() {
                new_contents = $(this).siblings('textarea').val();
                $('#notepad_stikey').html( new_contents );
                change_notepad_stikey( new_contents );
                return false;
               });
                function change_notepad_stikey( notes ) {
                $('#notepad_stikey_response').text( '...' );
                $.post(notepad_stikey.ajaxurl,
                    {
                        'action' : 'change_notepad_stikey',
                        'notes' : notes
                    }, function(response) {
                        //if (response != '') {
                            //alert( response );
                            $('#notepad_stikey_response').text( response );
                        //}
                    }, 'text' );
                }
                });

0 个答案:

没有答案