self::SLUG ), $args ), admin_url( 'admin.php' ) ); } public static function action_links( $links ) { array_unshift( $links, '' . esc_html__( 'Galleries', 'equaframe' ) . '' ); return $links; } public static function menu() { add_menu_page( __( 'EquaFrame', 'equaframe' ), __( 'Galleries', 'equaframe' ), self::cap(), self::SLUG, array( __CLASS__, 'page_main' ), EQUAFRAME_URL . 'assets/images/icon-menu.svg', 26 ); add_submenu_page( self::SLUG, __( 'All Galleries', 'equaframe' ), __( 'All Galleries', 'equaframe' ), self::cap(), self::SLUG, array( __CLASS__, 'page_main' ) ); add_submenu_page( self::SLUG, __( 'Add New Gallery', 'equaframe' ), __( 'Add New', 'equaframe' ), self::cap(), self::SLUG . '-new', array( __CLASS__, 'page_new' ) ); } /* ------------------------------------------------------------------ assets */ public static function assets( $hook ) { if ( false === strpos( $hook, self::SLUG ) ) { return; } wp_enqueue_style( 'eqfr-admin', EQUAFRAME_URL . 'assets/css/admin.css', array( 'wp-color-picker' ), EQUAFRAME_VERSION ); $deps = array( 'jquery', 'wp-color-picker', 'jquery-ui-sortable', 'wp-a11y' ); $gallery_id = self::editing_id(); if ( $gallery_id ) { wp_enqueue_media(); } wp_enqueue_script( 'eqfr-admin', EQUAFRAME_URL . 'assets/js/admin.js', $deps, EQUAFRAME_VERSION, true ); wp_localize_script( 'eqfr-admin', 'eqfrAdmin', array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'equaframe_images' ), 'galleryId' => $gallery_id, 'i18n' => array( 'mediaTitle' => __( 'Choose images for this gallery', 'equaframe' ), 'mediaButton' => __( 'Add to gallery', 'equaframe' ), 'saving' => __( 'Saving…', 'equaframe' ), 'saved' => __( 'All changes saved.', 'equaframe' ), 'saveFailed' => __( 'Could not save. Check your connection and try again.', 'equaframe' ), /* translators: 1: new position, 2: total images */ 'moved' => __( 'Moved to position %1$d of %2$d.', 'equaframe' ), 'removed' => __( 'Image removed from gallery.', 'equaframe' ), /* translators: %d: image number */ 'imageN' => __( 'Image %d', 'equaframe' ), /* translators: %s: image name */ 'removeImage' => __( 'Remove %s from gallery', 'equaframe' ), 'confirmRemove' => __( 'Remove this image from the gallery? The file stays in your media library.', 'equaframe' ), 'confirmDelete' => __( 'Delete this gallery? This cannot be undone.', 'equaframe' ), /* translators: %d: number of images */ 'added' => __( '%d image(s) added.', 'equaframe' ), /* translators: %d: number of images */ 'count' => __( '%d image(s) in this gallery', 'equaframe' ), 'copied' => __( 'Shortcode copied to the clipboard.', 'equaframe' ), 'copyFailed' => __( 'Press Ctrl+C (Cmd+C on Mac) to copy the selected text.', 'equaframe' ), /* translators: %s: contrast ratio, for example 4.52 */ 'contrastOk' => __( 'Contrast %s:1. This passes.', 'equaframe' ), /* translators: 1: measured contrast ratio, 2: minimum ratio required */ 'contrastLow' => __( 'Contrast is only %1$s:1. WCAG needs at least %2$s:1 here. Choose colors that are further apart.', 'equaframe' ), 'unsaved' => __( 'You have unsaved changes.', 'equaframe' ), ), ) ); } public static function editing_id() { // phpcs:ignore WordPress.Security.NonceVerification if ( ! isset( $_GET['page'], $_GET['action'], $_GET['gallery'] ) || self::SLUG !== $_GET['page'] || 'edit' !== $_GET['action'] ) { return 0; } // phpcs:ignore WordPress.Security.NonceVerification $id = absint( $_GET['gallery'] ); return EquaFrame_Gallery::get( $id ) ? $id : 0; } /** * One image row. Used for server-rendered rows and for the