Plugin Directory

Changeset 3371792


Ignore:
Timestamp:
10/02/2025 12:56:58 PM (6 months ago)
Author:
maxpertici
Message:

MITYPES / trunk

Location:
menu-item-types/trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • menu-item-types/trunk/admin/metabox/mitypes-menu-item-types.php

    r3115898 r3371792  
    1010require_once( $app->getDirectoryPath() . 'admin/metabox/item-types/mitypes-item-type-custom.php' );
    1111
    12 
    1312/**
    14  *
    15  *
    16  * handler for add menuitem in nva-menu admin screen
     13 * Handler for add menuitem in nav-menu admin screen
    1714 * check with custom and flag and param added url of item
    1815 */
    19 
    20 add_filter( 'wp_setup_nav_menu_item' , 'mitypes_setup_nav_menu_item' );
    2116
    2217function mitypes_setup_nav_menu_item( $menu_item ){
     
    138133    return $menu_item;
    139134}
     135
     136add_filter( 'wp_setup_nav_menu_item' , 'mitypes_setup_nav_menu_item' );
  • menu-item-types/trunk/admin/nav_menu.php

    r3115898 r3371792  
    66
    77/**
    8  * Enqueue script for admin WP:AM setings page
    9  *
    10  * @since 1.0
     8 * Enqueue script for admin
    119 */
    12 add_action( 'admin_enqueue_scripts', 'mitypes_nav_menu_enqueue_scripts' );
    13 
    1410function mitypes_nav_menu_enqueue_scripts( $hook ){
    1511
     
    2925}
    3026
     27add_action( 'admin_enqueue_scripts', 'mitypes_nav_menu_enqueue_scripts' );
    3128
    3229
     30
     31/**
     32 * Customize custom menu item types in menu screen
     33 *
     34 * @return void
     35 */
    3336function mitypes_nav_menu_mark_item_type( $item_id, $item, $depth, $args, $id )  {
    3437
     
    4447   
    4548        // find item type
    46 
    4749        $mit_buildin = array_keys( $menu_item_types['buildin'] );
    4850        $mit_plugin  = array_keys( $menu_item_types['plugin'] );
     
    5355            $hide_url_of_nav_item = true ;
    5456        }
    55 
    5657    }
    5758
    58     // $wp_buildin  = array( 'post_type', 'taxonomy' );
    59    
    6059    echo '<script> mitypes_set_menu_item_type_css( '.$item_id.', "' . $item_type . '", ' . $hide_url_of_nav_item . ' ); </script>';
    61 
    6260}
    6361
     
    6765
    6866/**
    69  *
    70  * @since : 1.1
     67 * Add CSS for menu item types
    7168 */
    72 
    73 add_action( 'admin_head', 'mitypes_mit_items_icons_css' );
    74 
    7569function mitypes_mit_items_icons_css( $hook ){
    7670
     
    9589        echo '</style>';
    9690    }
     91}
    9792
    98 }
     93add_action( 'admin_head', 'mitypes_mit_items_icons_css' );
  • menu-item-types/trunk/composer.json

    r3115898 r3371792  
    11{
    2   "name": "maxpertici/menu-item-types",
     2  "name": "mxp/menu-item-types",
    33  "require-dev": {},
    44  "autoload": {
  • menu-item-types/trunk/composer.lock

    r3115898 r3371792  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "e73746999016f68c6ba32422bbd87176",
     7    "content-hash": "20a78310cef7c845da281eb9ebb1a427",
    88    "packages": [],
    99    "packages-dev": [],
    1010    "aliases": [],
    1111    "minimum-stability": "stable",
    12     "stability-flags": [],
     12    "stability-flags": {},
    1313    "prefer-stable": false,
    1414    "prefer-lowest": false,
    15     "platform": [],
    16     "platform-dev": [],
     15    "platform": {},
     16    "platform-dev": {},
    1717    "plugin-api-version": "2.6.0"
    1818}
  • menu-item-types/trunk/core/App.php

    r3223618 r3371792  
    99
    1010    public $prefix = '#mitypes' . '_' ;
     11   
     12    public $acf_group_prefix = 'group_mit_' ;
     13    public $acf_field_prefix = 'field_mit_' ;
    1114
    1215    private $itemsColection = [];
     
    5356        }
    5457
    55         do_action('mitypes_init');
     58        // do_action('mitypes_init');
    5659    }
    5760
     
    136139        }
    137140
     141        do_action('mitypes_init');
     142
    138143        if( is_admin() ){
    139144            $admin = Admin::instance();
  • menu-item-types/trunk/menu-item-types.php

    r3223618 r3371792  
    44Plugin URI:   https://maxpertici.fr#menu-item-types
    55Description:  Use elements of a personalized type in the navigation menus.
    6 Version:      1.6
     6Version:      1.7
    77Author:       @maxpertici
    88Author URI:   https://maxpertici.fr
     
    1818use MXP\MITypes\App;
    1919
    20 require_once( 'config.php' );
    2120$loader = require __DIR__ . '/vendor/autoload.php';
    2221
  • menu-item-types/trunk/mitypes/item-types/heading.php

    r3115898 r3371792  
    11<?php
     2
     3use MXP\MITypes\App;
     4
     5$App = App::instance();
    26
    37return [
     
    711    'render' => '',
    812    'field-group' =>  array(
    9         'key'    => MITYPES_ACF_PREFIX_GROUP.'heading',
     13        'key'    => $App->acf_group_prefix.'heading',
    1014        'title'  => __( 'Heading settings group', 'menu-item-types' ),
    1115        'fields' => array(
    1216            array(
    13                 'key'   => MITYPES_ACF_PREFIX_FIELD . 'heading_selector',
     17                'key'   => $App->acf_field_prefix . 'heading_selector',
    1418                'label' => __( 'Heading level' , 'menu-item-types'),
    1519                'name'  => 'mitypes_heading_selector',
  • menu-item-types/trunk/mitypes/item-types/image.php

    r3115898 r3371792  
    11<?php
     2
     3use MXP\MITypes\App;
     4
     5$App = App::instance();
     6
    27
    38/**
     
    3540}
    3641
     42
     43
    3744return [
    3845    'slug'   => 'image',
     
    4552    },
    4653    'field-group' => array(
    47         'key'      => MITYPES_ACF_PREFIX_GROUP.'image',
     54        'key'      => $App->acf_group_prefix.'image',
    4855        'title'    => __( 'Image settings group', 'menu-item-types' ),
    4956        'fields' => array(
    5057            array(
    51                 'key' => MITYPES_ACF_PREFIX_FIELD.'image_selector',
     58                'key' => $App->acf_field_prefix.'image_selector',
    5259                'label' => __( 'Image', 'menu-item-types' ),
    5360                'name' => 'mitypes_image_media',
     
    7885
    7986            array(
    80                 'key'   => MITYPES_ACF_PREFIX_FIELD.'image_size',
     87                'key'   => $App->acf_field_prefix.'image_size',
    8188                'label' => __( 'Size', 'menu-item-types' ),
    8289                'name'  => 'mitypes_image_size',
     
    106113           
    107114        ),
    108 
    109 
    110115        'location' => array(
    111116            array(
    112117                array(
    113                     // 'param' => 'nav_menu_item',
    114118                    'param' => 'mitypes',
    115119                    'operator' => '==',
    116                     // 'value' => 'all',
    117120                    'value' => 'image',
    118121                ),
  • menu-item-types/trunk/mitypes/item-types/nolink.php

    r3115898 r3371792  
    11<?php
     2
     3use MXP\MITypes\App;
     4
     5$App = App::instance();
    26
    37return [
     
    812    'field-group' => array(
    913
    10         'key'      => MITYPES_ACF_PREFIX_GROUP.'nolink',
     14        'key'      => $App->acf_group_prefix.'nolink',
    1115        'title'    => __( 'Nolink settings group', 'menu-item-types' ),
    1216       
     
    1620            array(
    1721                array(
    18                     // 'param' => 'nav_menu_item',
    1922                    'param' => 'mitypes',
    2023                    'operator' => '==',
    21                     // 'value' => 'all',
    2224                    'value' => 'nolink',
    2325                ),
  • menu-item-types/trunk/mitypes/item-types/paragraph.php

    r3115898 r3371792  
    11<?php
     2use MXP\MITypes\App;
     3
     4$App = App::instance();
    25
    36return [
    4     'slug'   => 'parapraph',
     7    'slug'   => 'paragraph',
    58    'label'  => __( 'Paragraph', 'menu-item-types'),
    69    'icon'   => '',
     
    811    'field-group' => array(
    912       
    10         'key'      => MITYPES_ACF_PREFIX_GROUP.'paragraph',
     13        'key'      => $App->acf_group_prefix.'paragraph',
    1114        'title'    => __( 'Paragraph settings group', 'menu-item-types' ),
    1215       
     
    1417
    1518            array(
    16                 'key'   => MITYPES_ACF_PREFIX_FIELD . 'paragraph_text',
     19                'key'   => $App->acf_field_prefix . 'paragraph_text',
    1720                'label' => __( 'Text' , 'menu-item-types'),
    1821                'name'  => 'mitypes_paragraph_text',
  • menu-item-types/trunk/mitypes/renders/renders.php

    r3115898 r3371792  
    55defined( 'ABSPATH' ) or die();
    66
    7 add_filter( 'walker_nav_menu_start_el', 'mitypes_menu_item_custom_output', 10, 4 );
    87
    9 // https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/
    10 
     8/**
     9 * Custom output for menu item
     10 *
     11 * @see https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/
     12 */
    1113function mitypes_menu_item_custom_output( $item_output, $item, $depth, $args ) {
    1214
     
    99101}
    100102
     103add_filter( 'walker_nav_menu_start_el', 'mitypes_menu_item_custom_output', 10, 4 );
     104
     105
    101106
    102107/**
  • menu-item-types/trunk/mitypes/renders/templates/image.php

    r3115898 r3371792  
    3030    $size = 'thumbnail' ;
    3131    $img_size = get_field('mitypes_image_size', $item->ID );
    32     if( isset( $img_size ) && $img_size != '' ){ $size = array_keys($img_size) ; }
     32
     33    if( isset( $img_size ) && is_array( $img_size ) && isset( $img_size['value'] ) ){
     34        $size = $img_size['value'] ;
     35    }
    3336
    3437    echo wp_kses( $args->before, $img_tags );
  • menu-item-types/trunk/readme.txt

    r3223634 r3371792  
    44Tags: Menu, Custom, Nav item
    55Requires at least: 5.8
    6 Tested up to: 6.7.1
    7 Stable tag: 1.6
    8 Requires PHP: 7.0
     6Tested up to: 6.9.3
     7Stable tag: 1.7
     8Requires PHP: 8.0
    99License: GPLv2
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    1919
    2020
    21 == Menu Item Types can be extended ==
    22 You can create your own item type like this :
     21== Create your own item type ==
     22You need to declare your new type in a plugin, child theme, or your custom theme like this :
     23
    2324`
    2425function register_my_custom_type(){
     
    2627    $args = array(
    2728        'slug'        => "my-custom-type",
    28         'icon'        => 'https://url-to-icon-file.svg',
    2929        'label'       => __( 'My Custom Type', 'my-custom-type' ),
    30         'field-group' => 'path/to/acf/field-group-array.php',
    3130        'render'      => 'path/to/render/my-custom-render.php',
    32         'callback'    => function(){
    33             // Use callback for customize your item
    34             // you can add filter on 'mitypes_nav_menu_link_attributes' if you need
    35         }
    3631    );
    3732
    3833    mitypes_register_type( $args );
    3934}
    40 add_filter( 'mitypes_init', 'register_my_custom_type' );
     35add_action( 'mitypes_init', 'register_my_custom_type' );
    4136`
     37
     38You can do more than that on $args.
     39
     40`
     41$args = array(
     42    'slug'   => "my-custom-type",
     43    'label'  => __( 'My Custom Type', 'my-custom-type' ),
     44    'render' => 'path/to/my-custom-type-render.php',
     45
     46    // Link your custom icon
     47    'icon' => 'https://url-to-icon-file.svg',
     48   
     49    // Return ACF Group field array
     50    'field-group' => [
     51        'key'   => 'uniq_key',
     52        'title' => 'Group Title',
     53        'fields => [
     54            ...
     55        ],
     56        'location' => [
     57            [
     58                [
     59                    'param' => 'mitypes',
     60                    'operator' => '==',
     61                    'value' => 'my-custom-type',
     62                ],
     63            ],
     64        ],
     65
     66    ],
     67
     68    // Use callback for customize your item
     69    // you can add filter on 'mitypes_nav_menu_link_attributes' if you need
     70    'callback' => function(){ ... }
     71);
     72`
     73
     74And finally, you can work in the render with some variables.
     75You have two variables available:
     76* $item which is the WP_Post of the menu item, with which you can, for example, retrieve custom field data.
     77* $args which is the array of arguments used during the generation of the menu item.
    4278
    4379There are already additional plugins.
     
    85121== Changelog ==
    86122
     123= 1.7 =
     124* Fix : mitypes_init hook timing
     125* Fix : buildin paragraph slug (maybe if you excluded it with the error, it will be back in your admin, sorry)
     126* Fix : image size in Image type
     127* Update readme.txt with more code information
     128* PHP 8.x required
     129
     130
    87131= 1.6 =
    88132* Fix : translation's notices
  • menu-item-types/trunk/vendor/autoload.php

    r3115898 r3371792  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInite73746999016f68c6ba32422bbd87176::getLoader();
     25return ComposerAutoloaderInit20a78310cef7c845da281eb9ebb1a427::getLoader();
  • menu-item-types/trunk/vendor/composer/InstalledVersions.php

    r3115898 r3371792  
    3232     */
    3333    private static $installed;
     34
     35    /**
     36     * @var bool
     37     */
     38    private static $installedIsLocalDir;
    3439
    3540    /**
     
    310315        self::$installed = $data;
    311316        self::$installedByVendor = array();
     317
     318        // when using reload, we disable the duplicate protection to ensure that self::$installed data is
     319        // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
     320        // so we have to assume it does not, and that may result in duplicate data being returned when listing
     321        // all installed packages for example
     322        self::$installedIsLocalDir = false;
    312323    }
    313324
     
    323334
    324335        $installed = array();
     336        $copiedLocalDir = false;
    325337
    326338        if (self::$canGetVendors) {
     339            $selfDir = strtr(__DIR__, '\\', '/');
    327340            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
     341                $vendorDir = strtr($vendorDir, '\\', '/');
    328342                if (isset(self::$installedByVendor[$vendorDir])) {
    329343                    $installed[] = self::$installedByVendor[$vendorDir];
     
    331345                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
    332346                    $required = require $vendorDir.'/composer/installed.php';
    333                     $installed[] = self::$installedByVendor[$vendorDir] = $required;
    334                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
    335                         self::$installed = $installed[count($installed) - 1];
     347                    self::$installedByVendor[$vendorDir] = $required;
     348                    $installed[] = $required;
     349                    if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
     350                        self::$installed = $required;
     351                        self::$installedIsLocalDir = true;
    336352                    }
     353                }
     354                if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
     355                    $copiedLocalDir = true;
    337356                }
    338357            }
     
    351370        }
    352371
    353         if (self::$installed !== array()) {
     372        if (self::$installed !== array() && !$copiedLocalDir) {
    354373            $installed[] = self::$installed;
    355374        }
  • menu-item-types/trunk/vendor/composer/autoload_files.php

    r3115898 r3371792  
    77
    88return array(
    9     'ec224cf6c752fb07fdf33257d272c280' => $baseDir . '/functions/register.php',
     9    '223b7f274868971ca7628883dd886300' => $baseDir . '/functions/register.php',
    1010);
  • menu-item-types/trunk/vendor/composer/autoload_real.php

    r3115898 r3371792  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInite73746999016f68c6ba32422bbd87176
     5class ComposerAutoloaderInit20a78310cef7c845da281eb9ebb1a427
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInite73746999016f68c6ba32422bbd87176', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInit20a78310cef7c845da281eb9ebb1a427', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    27         spl_autoload_unregister(array('ComposerAutoloaderInite73746999016f68c6ba32422bbd87176', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInit20a78310cef7c845da281eb9ebb1a427', 'loadClassLoader'));
    2828
    2929        require __DIR__ . '/autoload_static.php';
    30         call_user_func(\Composer\Autoload\ComposerStaticInite73746999016f68c6ba32422bbd87176::getInitializer($loader));
     30        call_user_func(\Composer\Autoload\ComposerStaticInit20a78310cef7c845da281eb9ebb1a427::getInitializer($loader));
    3131
    3232        $loader->register(true);
    3333
    34         $filesToLoad = \Composer\Autoload\ComposerStaticInite73746999016f68c6ba32422bbd87176::$files;
     34        $filesToLoad = \Composer\Autoload\ComposerStaticInit20a78310cef7c845da281eb9ebb1a427::$files;
    3535        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
    3636            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • menu-item-types/trunk/vendor/composer/autoload_static.php

    r3115898 r3371792  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInite73746999016f68c6ba32422bbd87176
     7class ComposerStaticInit20a78310cef7c845da281eb9ebb1a427
    88{
    99    public static $files = array (
    10         'ec224cf6c752fb07fdf33257d272c280' => __DIR__ . '/../..' . '/functions/register.php',
     10        '223b7f274868971ca7628883dd886300' => __DIR__ . '/../..' . '/functions/register.php',
    1111    );
    1212
     
    3232    {
    3333        return \Closure::bind(function () use ($loader) {
    34             $loader->prefixLengthsPsr4 = ComposerStaticInite73746999016f68c6ba32422bbd87176::$prefixLengthsPsr4;
    35             $loader->prefixDirsPsr4 = ComposerStaticInite73746999016f68c6ba32422bbd87176::$prefixDirsPsr4;
    36             $loader->classMap = ComposerStaticInite73746999016f68c6ba32422bbd87176::$classMap;
     34            $loader->prefixLengthsPsr4 = ComposerStaticInit20a78310cef7c845da281eb9ebb1a427::$prefixLengthsPsr4;
     35            $loader->prefixDirsPsr4 = ComposerStaticInit20a78310cef7c845da281eb9ebb1a427::$prefixDirsPsr4;
     36            $loader->classMap = ComposerStaticInit20a78310cef7c845da281eb9ebb1a427::$classMap;
    3737
    3838        }, null, ClassLoader::class);
  • menu-item-types/trunk/vendor/composer/installed.php

    r3115898 r3371792  
    11<?php return array(
    22    'root' => array(
    3         'name' => 'maxpertici/menu-item-types',
     3        'name' => 'mxp/menu-item-types',
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => '089059d72cadc8040819426320c8017b3ca7435b',
     6        'reference' => 'd6f1333defa45bd91b520c54e1b86517d494dfb9',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1111    ),
    1212    'versions' => array(
    13         'maxpertici/menu-item-types' => array(
     13        'mxp/menu-item-types' => array(
    1414            'pretty_version' => 'dev-master',
    1515            'version' => 'dev-master',
    16             'reference' => '089059d72cadc8040819426320c8017b3ca7435b',
     16            'reference' => 'd6f1333defa45bd91b520c54e1b86517d494dfb9',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.