From 7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 7 Jan 2020 13:06:14 +0100 Subject: Added wordpress --- srcs/wordpress/wp-admin/includes/widgets.php | 330 +++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100644 srcs/wordpress/wp-admin/includes/widgets.php (limited to 'srcs/wordpress/wp-admin/includes/widgets.php') diff --git a/srcs/wordpress/wp-admin/includes/widgets.php b/srcs/wordpress/wp-admin/includes/widgets.php new file mode 100644 index 0000000..9f7dfb5 --- /dev/null +++ b/srcs/wordpress/wp-admin/includes/widgets.php @@ -0,0 +1,330 @@ + $widget['id'], + 'widget_name' => $widget['name'], + '_display' => 'template', + ); + + if ( isset( $wp_registered_widget_controls[ $widget['id'] ]['id_base'] ) && isset( $widget['params'][0]['number'] ) ) { + $id_base = $wp_registered_widget_controls[ $widget['id'] ]['id_base']; + $args['_temp_id'] = "$id_base-__i__"; + $args['_multi_num'] = next_widget_id_number( $id_base ); + $args['_add'] = 'multi'; + } else { + $args['_add'] = 'single'; + if ( $sidebar ) { + $args['_hide'] = '1'; + } + } + + $control_args = array( + 0 => $args, + 1 => $widget['params'][0], + ); + $sidebar_args = wp_list_widget_controls_dynamic_sidebar( $control_args ); + + wp_widget_control( ...$sidebar_args ); + } +} + +/** + * Callback to sort array by a 'name' key. + * + * @since 3.1.0 + * @access private + * + * @return int + */ +function _sort_name_callback( $a, $b ) { + return strnatcasecmp( $a['name'], $b['name'] ); +} + +/** + * Show the widgets and their settings for a sidebar. + * Used in the admin widget config screen. + * + * @since 2.5.0 + * + * @param string $sidebar Sidebar ID. + * @param string $sidebar_name Optional. Sidebar name. Default empty. + */ +function wp_list_widget_controls( $sidebar, $sidebar_name = '' ) { + add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); + + $description = wp_sidebar_description( $sidebar ); + + echo '
'; + + if ( $sidebar_name ) { + $add_to = sprintf( + /* translators: %s: Widgets sidebar name. */ + __( 'Add to: %s' ), + $sidebar_name + ); + ?> + + + + '; +} + +/** + * Retrieves the widget control arguments. + * + * @since 2.5.0 + * + * @global array $wp_registered_widgets + * + * @staticvar int $i + * + * @param array $params + * @return array + */ +function wp_list_widget_controls_dynamic_sidebar( $params ) { + global $wp_registered_widgets; + static $i = 0; + $i++; + + $widget_id = $params[0]['widget_id']; + $id = isset( $params[0]['_temp_id'] ) ? $params[0]['_temp_id'] : $widget_id; + $hidden = isset( $params[0]['_hide'] ) ? ' style="display:none;"' : ''; + + $params[0]['before_widget'] = "
"; + $params[0]['after_widget'] = '
'; + $params[0]['before_title'] = '%BEG_OF_TITLE%'; // deprecated + $params[0]['after_title'] = '%END_OF_TITLE%'; // deprecated + + if ( is_callable( $wp_registered_widgets[ $widget_id ]['callback'] ) ) { + $wp_registered_widgets[ $widget_id ]['_callback'] = $wp_registered_widgets[ $widget_id ]['callback']; + $wp_registered_widgets[ $widget_id ]['callback'] = 'wp_widget_control'; + } + + return $params; +} + +/** + * @global array $wp_registered_widgets + * + * @param string $id_base + * @return int + */ +function next_widget_id_number( $id_base ) { + global $wp_registered_widgets; + $number = 1; + + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( preg_match( '/' . $id_base . '-([0-9]+)$/', $widget_id, $matches ) ) { + $number = max( $number, $matches[1] ); + } + } + $number++; + + return $number; +} + +/** + * Meta widget used to display the control form for a widget. + * + * Called from dynamic_sidebar(). + * + * @since 2.5.0 + * + * @global array $wp_registered_widgets + * @global array $wp_registered_widget_controls + * @global array $sidebars_widgets + * + * @param array $sidebar_args + * @return array + */ +function wp_widget_control( $sidebar_args ) { + global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets; + + $widget_id = $sidebar_args['widget_id']; + $sidebar_id = isset( $sidebar_args['id'] ) ? $sidebar_args['id'] : false; + $key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[ $sidebar_id ] ) : '-1'; // position of widget in sidebar + $control = isset( $wp_registered_widget_controls[ $widget_id ] ) ? $wp_registered_widget_controls[ $widget_id ] : array(); + $widget = $wp_registered_widgets[ $widget_id ]; + + $id_format = $widget['id']; + $widget_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : ''; + $id_base = isset( $control['id_base'] ) ? $control['id_base'] : $widget_id; + $width = isset( $control['width'] ) ? $control['width'] : ''; + $height = isset( $control['height'] ) ? $control['height'] : ''; + $multi_number = isset( $sidebar_args['_multi_num'] ) ? $sidebar_args['_multi_num'] : ''; + $add_new = isset( $sidebar_args['_add'] ) ? $sidebar_args['_add'] : ''; + + $before_form = isset( $sidebar_args['before_form'] ) ? $sidebar_args['before_form'] : '
'; + $after_form = isset( $sidebar_args['after_form'] ) ? $sidebar_args['after_form'] : '
'; + $before_widget_content = isset( $sidebar_args['before_widget_content'] ) ? $sidebar_args['before_widget_content'] : '
'; + $after_widget_content = isset( $sidebar_args['after_widget_content'] ) ? $sidebar_args['after_widget_content'] : '
'; + + $query_arg = array( 'editwidget' => $widget['id'] ); + if ( $add_new ) { + $query_arg['addnew'] = 1; + if ( $multi_number ) { + $query_arg['num'] = $multi_number; + $query_arg['base'] = $id_base; + } + } else { + $query_arg['sidebar'] = $sidebar_id; + $query_arg['key'] = $key; + } + + /* + * We aren't showing a widget control, we're outputting a template + * for a multi-widget control. + */ + if ( isset( $sidebar_args['_display'] ) && 'template' == $sidebar_args['_display'] && $widget_number ) { + // number == -1 implies a template where id numbers are replaced by a generic '__i__' + $control['params'][0]['number'] = -1; + // With id_base widget id's are constructed like {$id_base}-{$id_number}. + if ( isset( $control['id_base'] ) ) { + $id_format = $control['id_base'] . '-__i__'; + } + } + + $wp_registered_widgets[ $widget_id ]['callback'] = $wp_registered_widgets[ $widget_id ]['_callback']; + unset( $wp_registered_widgets[ $widget_id ]['_callback'] ); + + $widget_title = esc_html( strip_tags( $sidebar_args['widget_name'] ) ); + $has_form = 'noform'; + + echo $sidebar_args['before_widget']; + ?> +
+
+ + + + + + +
+

+
+ +
+ + + " . __( 'There are no options for this widget.' ) . "

\n"; + } + + $noform_class = ''; + if ( 'noform' === $has_form ) { + $noform_class = ' widget-control-noform'; + } + ?> + + + + + + + + + +
+
+ + + | + + +
+
+ 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> + +
+
+
+ +
+ +
+ +
+