/** * Register the widget for use in Appearance -> Widgets */ add_action( 'widgets_init', 'jetpack_goodreads_widget_init' ); function jetpack_goodreads_widget_init() { register_widget( 'WPCOM_Widget_Goodreads' ); } /** * Goodreads widget class * Display a user's Goodreads shelf. * Customize user_id, title, and shelf * */ class WPCOM_Widget_Goodreads extends WP_Widget { private $goodreads_widget_id = 0; function __construct() { parent::__construct( 'wpcom-goodreads', /** This filter is documented in modules/widgets/facebook-likebox.php */ apply_filters( 'jetpack_widget_name', __( 'Goodreads', 'jetpack' ) ), array( 'classname' => 'widget_goodreads', 'description' => __( 'Display your books from Goodreads', 'jetpack' ), 'customize_selective_refresh' => true, ) ); // For user input sanitization and display $this->shelves = array( 'read' => _x( 'Read', 'past participle: books I have read', 'jetpack' ), 'currently-reading' => __( 'Currently Reading', 'jetpack' ), 'to-read' => _x( 'To Read', 'my list of books to read', 'jetpack' ) ); if ( is_active_widget( '', '', 'wpcom-goodreads' ) || is_customize_preview() ) { add_action( 'wp_print_styles', array( $this, 'enqueue_style' ) ); } } function enqueue_style() { wp_enqueue_style( 'goodreads-widget', plugins_url( 'goodreads/css/goodreads.css', __FILE__ ) ); wp_style_add_data( 'goodreads-widget', 'rtl', 'replace' ); } function widget( $args, $instance ) { /** This action is documented in modules/widgets/gravatar-profile.php */ do_action( 'jetpack_stats_extra', 'widget_view', 'goodreads' ); /** This filter is documented in core/src/wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', isset( $instance['title'] ) ? $instance['title'] : '' ); if ( empty( $instance['user_id'] ) || 'invalid' === $instance['user_id'] ) { if ( current_user_can('edit_theme_options') ) { echo $args['before_widget']; echo '

' . sprintf( __( 'You need to enter your numeric user ID for the Goodreads Widget to work correctly. Full instructions.', 'jetpack' ), esc_url( admin_url( 'widgets.php' ) ), 'http://support.wordpress.com/widgets/goodreads-widget/#goodreads-user-id' ) . '

'; echo $args['after_widget']; } return; } if ( !array_key_exists( $instance['shelf'], $this->shelves ) ) return; $instance['user_id'] = absint( $instance['user_id'] ); // Set widget ID based on shelf. $this->goodreads_widget_id = $instance['user_id'] . '_' . $instance['shelf']; if ( empty( $title ) ) $title = esc_html__( 'Goodreads', 'jetpack' ); echo $args['before_widget']; echo $args['before_title'] . $title . $args['after_title']; $goodreads_url = 'https://www.goodreads.com/review/custom_widget/' . urlencode( $instance['user_id'] ) . '.' . urlencode( $instance['title'] ) . ':%20' . urlencode( $instance['shelf'] ) . '?cover_position=&cover_size=small&num_books=5&order=d&shelf=' . urlencode( $instance['shelf'] ) . '&sort=date_added&widget_bg_transparent=&widget_id=' . esc_attr( $this->goodreads_widget_id ) ; echo '
' . "\n"; echo '' . "\n"; echo $args['after_widget']; } function goodreads_user_id_exists( $user_id ) { $url = "http://www.goodreads.com/user/show/$user_id/"; $response = wp_remote_head( $url, array( 'httpversion'=>'1.1', 'timeout'=>3, 'redirection'=> 2 ) ); if ( wp_remote_retrieve_response_code( $response ) === 200 ) return true; else return false; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['user_id'] = trim( wp_kses( stripslashes( $new_instance['user_id'] ), array() ) ); if ( ! empty( $instance['user_id'] ) && ( ! isset( $old_instance['user_id'] ) || $instance['user_id'] !== $old_instance['user_id'] ) ) { if ( ! $this->goodreads_user_id_exists( $instance['user_id'] ) ) { $instance['user_id'] = 'invalid'; } } $instance['title'] = wp_kses( stripslashes( $new_instance['title'] ), array() ); $shelf = wp_kses( stripslashes( $new_instance['shelf'] ), array() ); if ( array_key_exists( $shelf, $this->shelves ) ) $instance['shelf'] = $shelf; return $instance; } function form( $instance ) { //Defaults $instance = wp_parse_args( (array) $instance, array( 'user_id' => '', 'title' => 'Goodreads', 'shelf' => 'read' ) ); echo '

'; } } About – Dan Moroney

About

thumb_img_2823_1024-2One of the biggest components of Dan Moroney’s identity is being an Oak Parker. Dan was born in Oak Park in the 1970s as the youngest in a family of six children. He attended St. Giles & OPRF. Dan earned a Political Science degree from the University of Dayton and studied in Rome for a year. He served as a Peace Corps Volunteer in Poland and worked on Capitol Hill for Senator Daniel Patrick Moynihan.

Despite these tremendous experiences, Dan returned to Oak Park in 1999. Soon after becoming a homeowner, Dan began cultivating an interest in home renovation. By 2005 Dan had obtained his Real Estate Broker’s license and was buying, renovating and selling homes throughout Oak Park. His company; Moroney Homes, LLC expanded to rental property acquisition and new construction in Oak Park, River Forest and Forest Park.

Dan has been married to his wife; Amy for over twelve years. Together, they’ve raised their children; Ryan (11) and Grace (8). Dan serves as a member of the Oak Park Historic Preservation Commission and as Mann PTO Treasurer. He has coached his children’s teams in soccer, baseball, softball, basketball and floor hockey.

Dan’s biggest motivating factor for running for Trustee is to help Oak Park grow while maintaining it’s unique characteristics. These include a commitment to diversity in all of its forms, architectural excellence, sensible development throughout the village, citizen involvement in government and fostering a sustainable community.

enhance