/** * Set up the enqueue for the CSS & JavaScript files. * * @since 0.0.1 */ public function admin_load() { get_current_screen()->add_help_tab(array('id' => 'overview', 'title' => __('Overview'), 'content' => '<p>' . __('You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.') . '</p>' . '<p>' . __('To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the “Choose Image” button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.') . '</p>' . '<p>' . __('You can also choose a background color by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker.') . '</p>' . '<p>' . __('Don’t forget to click on the Save Changes button when you are finished.') . '</p>')); get_current_screen()->set_help_sidebar('<p><strong>' . __('For more information:') . '</strong></p>' . '<p>' . __('<a href="https://codex.wordpress.org/Appearance_Background_Screen" target="_blank">Documentation on Custom Background</a>') . '</p>' . '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'); hq_enqueue_media(); hq_enqueue_script('custom-background'); hq_enqueue_style('hq-color-picker'); }
/** * Initializes the new feature pointers. * * @since 0.0.1 * * All pointers can be disabled using the following: * remove_action( 'admin_enqueue_scripts', array( 'HQ_Internal_Pointers', 'enqueue_scripts' ) ); * * Individual pointers (e.g. hq390_widgets) can be disabled using the following: * remove_action( 'admin_print_footer_scripts', array( 'HQ_Internal_Pointers', 'pointer_hq390_widgets' ) ); * * @static * * @param string $hook_suffix The current admin page. */ public static function enqueue_scripts($hook_suffix) { /* * Register feature pointers * * Format: * array( * hook_suffix => pointer callback * ) * * Example: * array( * 'themes.php' => 'hq390_widgets' * ) */ $registered_pointers = array(); // Check if screen related pointer is registered if (empty($registered_pointers[$hook_suffix])) { return; } $pointers = (array) $registered_pointers[$hook_suffix]; /* * Specify required capabilities for feature pointers * * Format: * array( * pointer callback => Array of required capabilities * ) * * Example: * array( * 'hq390_widgets' => array( 'edit_theme_options' ) * ) */ $caps_required = array(); // Get dismissed pointers $dismissed = explode(',', (string) get_user_meta(get_current_user_id(), 'dismissed_hq_pointers', true)); $got_pointers = false; foreach (array_diff($pointers, $dismissed) as $pointer) { if (isset($caps_required[$pointer])) { foreach ($caps_required[$pointer] as $cap) { if (!current_user_can($cap)) { continue 2; } } } // Bind pointer print function add_action('admin_print_footer_scripts', array('HQ_Internal_Pointers', 'pointer_' . $pointer)); $got_pointers = true; } if (!$got_pointers) { return; } // Add pointers script and style to queue hq_enqueue_style('hq-pointer'); hq_enqueue_script('hq-pointer'); }
/** * Enqueues the default ThickBox js and css. * * If any of the settings need to be changed, this can be done with another js * file similar to media-upload.js. That file should * require array('thickbox') to ensure it is loaded after. * * @since 0.0.1 */ function add_thickbox() { hq_enqueue_script('thickbox'); hq_enqueue_style('thickbox'); if (is_network_admin()) { add_action('admin_head', '_thickbox_path_admin_subfolder'); } }
/** * Enqueues all scripts, styles, settings, and templates necessary to use * all media JS APIs. * * @since 0.0.1 * * @global int $content_width * @global hqdb $hqdb * @global HQ_Locale $hq_locale * * @param array $args { * Arguments for enqueuing media scripts. * * @type int|HQ_Post A post object or ID. * } */ function hq_enqueue_media($args = array()) { // Enqueue me just once per page, please. if (did_action('hq_enqueue_media')) { return; } global $content_width, $hqdb, $hq_locale; $defaults = array('post' => null); $args = hq_parse_args($args, $defaults); // We're going to pass the old thickbox media tabs to `media_upload_tabs` // to ensure plugins will work. We will then unset those tabs. $tabs = array('type' => '', 'type_url' => '', 'gallery' => '', 'library' => ''); /** This filter is documented in hq-admin/includes/media.php */ $tabs = apply_filters('media_upload_tabs', $tabs); unset($tabs['type'], $tabs['type_url'], $tabs['gallery'], $tabs['library']); $props = array('link' => get_option('image_default_link_type'), 'align' => get_option('image_default_align'), 'size' => get_option('image_default_size')); $exts = array_merge(hq_get_audio_extensions(), hq_get_video_extensions()); $mimes = get_allowed_mime_types(); $ext_mimes = array(); foreach ($exts as $ext) { foreach ($mimes as $ext_preg => $mime_match) { if (preg_match('#' . $ext . '#i', $ext_preg)) { $ext_mimes[$ext] = $mime_match; break; } } } $has_audio = $hqdb->get_var("\n\t\tSELECT ID\n\t\tFROM {$hqdb->posts}\n\t\tWHERE post_type = 'attachment'\n\t\tAND post_mime_type LIKE 'audio%'\n\t\tLIMIT 1\n\t"); $has_video = $hqdb->get_var("\n\t\tSELECT ID\n\t\tFROM {$hqdb->posts}\n\t\tWHERE post_type = 'attachment'\n\t\tAND post_mime_type LIKE 'video%'\n\t\tLIMIT 1\n\t"); $months = $hqdb->get_results($hqdb->prepare("\n\t\tSELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month\n\t\tFROM {$hqdb->posts}\n\t\tWHERE post_type = %s\n\t\tORDER BY post_date DESC\n\t", 'attachment')); foreach ($months as $month_year) { $month_year->text = sprintf(__('%1$s %2$d'), $hq_locale->get_month($month_year->month), $month_year->year); } $settings = array('tabs' => $tabs, 'tabUrl' => add_query_arg(array('chromeless' => true), admin_url('media-upload.php')), 'mimeTypes' => hq_list_pluck(get_post_mime_types(), 0), 'captions' => !apply_filters('disable_captions', ''), 'nonce' => array('sendToEditor' => hq_create_nonce('media-send-to-editor')), 'post' => array('id' => 0), 'defaultProps' => $props, 'attachmentCounts' => array('audio' => $has_audio ? 1 : 0, 'video' => $has_video ? 1 : 0), 'embedExts' => $exts, 'embedMimes' => $ext_mimes, 'contentWidth' => $content_width, 'months' => $months, 'mediaTrash' => MEDIA_TRASH ? 1 : 0); $post = null; if (isset($args['post'])) { $post = get_post($args['post']); $settings['post'] = array('id' => $post->ID, 'nonce' => hq_create_nonce('update-post_' . $post->ID)); $thumbnail_support = current_theme_supports('post-thumbnails', $post->post_type) && post_type_supports($post->post_type, 'thumbnail'); if (!$thumbnail_support && 'attachment' === $post->post_type && $post->post_mime_type) { if (hq_attachment_is('audio', $post)) { $thumbnail_support = post_type_supports('attachment:audio', 'thumbnail') || current_theme_supports('post-thumbnails', 'attachment:audio'); } elseif (hq_attachment_is('video', $post)) { $thumbnail_support = post_type_supports('attachment:video', 'thumbnail') || current_theme_supports('post-thumbnails', 'attachment:video'); } } if ($thumbnail_support) { $featured_image_id = get_post_meta($post->ID, '_thumbnail_id', true); $settings['post']['featuredImageId'] = $featured_image_id ? $featured_image_id : -1; } } $hier = $post && is_post_type_hierarchical($post->post_type); if ($post) { $post_type_object = get_post_type_object($post->post_type); } else { $post_type_object = get_post_type_object('post'); } $strings = array('url' => __('URL'), 'addMedia' => __('Add Media'), 'search' => __('Search'), 'select' => __('Select'), 'cancel' => __('Cancel'), 'update' => __('Update'), 'replace' => __('Replace'), 'remove' => __('Remove'), 'back' => __('Back'), 'selected' => __('%d selected'), 'dragInfo' => __('Drag and drop to reorder media files.'), 'uploadFilesTitle' => __('Upload Files'), 'uploadImagesTitle' => __('Upload Images'), 'mediaLibraryTitle' => __('Media Library'), 'insertMediaTitle' => __('Insert Media'), 'createNewGallery' => __('Create a new gallery'), 'createNewPlaylist' => __('Create a new playlist'), 'createNewVideoPlaylist' => __('Create a new video playlist'), 'returnToLibrary' => __('← Return to library'), 'allMediaItems' => __('All media items'), 'allDates' => __('All dates'), 'noItemsFound' => __('No items found.'), 'insertIntoPost' => $hier ? __('Insert into page') : __('Insert into post'), 'unattached' => __('Unattached'), 'trash' => _x('Trash', 'noun'), 'uploadedToThisPost' => $hier ? __('Uploaded to this page') : __('Uploaded to this post'), 'warnDelete' => __("You are about to permanently delete this item.\n 'Cancel' to stop, 'OK' to delete."), 'warnBulkDelete' => __("You are about to permanently delete these items.\n 'Cancel' to stop, 'OK' to delete."), 'warnBulkTrash' => __("You are about to trash these items.\n 'Cancel' to stop, 'OK' to delete."), 'bulkSelect' => __('Bulk Select'), 'cancelSelection' => __('Cancel Selection'), 'trashSelected' => __('Trash Selected'), 'untrashSelected' => __('Untrash Selected'), 'deleteSelected' => __('Delete Selected'), 'deletePermanently' => __('Delete Permanently'), 'apply' => __('Apply'), 'filterByDate' => __('Filter by date'), 'filterByType' => __('Filter by type'), 'searchMediaLabel' => __('Search Media'), 'noMedia' => __('No media attachments found.'), 'attachmentDetails' => __('Attachment Details'), 'insertFromUrlTitle' => __('Insert from URL'), 'setFeaturedImageTitle' => $post_type_object->labels->featured_image, 'setFeaturedImage' => $post_type_object->labels->set_featured_image, 'createGalleryTitle' => __('Create Gallery'), 'editGalleryTitle' => __('Edit Gallery'), 'cancelGalleryTitle' => __('← Cancel Gallery'), 'insertGallery' => __('Insert gallery'), 'updateGallery' => __('Update gallery'), 'addToGallery' => __('Add to gallery'), 'addToGalleryTitle' => __('Add to Gallery'), 'reverseOrder' => __('Reverse order'), 'imageDetailsTitle' => __('Image Details'), 'imageReplaceTitle' => __('Replace Image'), 'imageDetailsCancel' => __('Cancel Edit'), 'editImage' => __('Edit Image'), 'chooseImage' => __('Choose Image'), 'selectAndCrop' => __('Select and Crop'), 'skipCropping' => __('Skip Cropping'), 'cropImage' => __('Crop Image'), 'cropYourImage' => __('Crop your image'), 'cropping' => __('Cropping…'), 'suggestedDimensions' => __('Suggested image dimensions:'), 'cropError' => __('There has been an error cropping your image.'), 'audioDetailsTitle' => __('Audio Details'), 'audioReplaceTitle' => __('Replace Audio'), 'audioAddSourceTitle' => __('Add Audio Source'), 'audioDetailsCancel' => __('Cancel Edit'), 'videoDetailsTitle' => __('Video Details'), 'videoReplaceTitle' => __('Replace Video'), 'videoAddSourceTitle' => __('Add Video Source'), 'videoDetailsCancel' => __('Cancel Edit'), 'videoSelectPosterImageTitle' => __('Select Poster Image'), 'videoAddTrackTitle' => __('Add Subtitles'), 'playlistDragInfo' => __('Drag and drop to reorder tracks.'), 'createPlaylistTitle' => __('Create Audio Playlist'), 'editPlaylistTitle' => __('Edit Audio Playlist'), 'cancelPlaylistTitle' => __('← Cancel Audio Playlist'), 'insertPlaylist' => __('Insert audio playlist'), 'updatePlaylist' => __('Update audio playlist'), 'addToPlaylist' => __('Add to audio playlist'), 'addToPlaylistTitle' => __('Add to Audio Playlist'), 'videoPlaylistDragInfo' => __('Drag and drop to reorder videos.'), 'createVideoPlaylistTitle' => __('Create Video Playlist'), 'editVideoPlaylistTitle' => __('Edit Video Playlist'), 'cancelVideoPlaylistTitle' => __('← Cancel Video Playlist'), 'insertVideoPlaylist' => __('Insert video playlist'), 'updateVideoPlaylist' => __('Update video playlist'), 'addToVideoPlaylist' => __('Add to video playlist'), 'addToVideoPlaylistTitle' => __('Add to Video Playlist')); /** * Filter the media view settings. * * @since 0.0.1 * * @param array $settings List of media view settings. * @param HQ_Post $post Post object. */ $settings = apply_filters('media_view_settings', $settings, $post); /** * Filter the media view strings. * * @since 0.0.1 * * @param array $strings List of media view strings. * @param HQ_Post $post Post object. */ $strings = apply_filters('media_view_strings', $strings, $post); $strings['settings'] = $settings; // Ensure we enqueue media-editor first, that way media-views is // registered internally before we try to localize it. see #24724. hq_enqueue_script('media-editor'); hq_localize_script('media-views', '_hqMediaViewsL10n', $strings); hq_enqueue_script('media-audiovideo'); hq_enqueue_style('media-views'); if (is_admin()) { hq_enqueue_script('mce-view'); hq_enqueue_script('image-edit'); } hq_enqueue_style('imgareaselect'); hq_plupload_default_settings(); require_once ABSPATH . HQINC . '/media-template.php'; add_action('admin_footer', 'hq_print_media_templates'); add_action('hq_footer', 'hq_print_media_templates'); add_action('customize_controls_print_footer_scripts', 'hq_print_media_templates'); /** * Fires at the conclusion of hq_enqueue_media(). * * @since 0.0.1 */ do_action('hq_enqueue_media'); }
/** * Enqueue the styles for the current color scheme. * * @since HiveQueen Theme 0.1 */ function hivequeen_enqueue_color_scheme() { $options = hivequeen_get_theme_options(); $color_scheme = $options['color_scheme']; if ('dark' == $color_scheme) { hq_enqueue_style('dark', get_template_directory_uri() . '/colors/dark.css', array(), null); } /** * Fires after the styles for the Twenty Eleven color scheme are enqueued. * * @since HiveQueen Theme 0.1 * * @param string $color_scheme The color scheme. */ do_action('hivequeen_enqueue_color_scheme', $color_scheme); }
/** * Set up the enqueue for the CSS files * * @since 0.0.1 */ public function css_includes() { $step = $this->step(); if ((1 == $step || 3 == $step) && current_theme_supports('custom-header', 'header-text')) { hq_enqueue_style('hq-color-picker'); } elseif (2 == $step) { hq_enqueue_style('imgareaselect'); } }