Plugin Directory

Changeset 3331684


Ignore:
Timestamp:
07/21/2025 06:58:00 PM (8 months ago)
Author:
dbeja
Message:

Update to version 1.1 from GitHub

Location:
quick-admin-launcher
Files:
28 added
2 deleted
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • quick-admin-launcher/tags/1.1/README.txt

    r3254046 r3331684  
    44Donate link: https://www.paypal.com/paypalme/dbkode
    55Requires at least: 5.7
    6 Tested up to: 6.7
     6Tested up to: 6.8
    77Requires PHP: 7.2
    8 Stable tag: 1.0.2
     8Stable tag: 1.1
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    6565
    6666== Changelog ==
     67= 1.1 =
     68* Fix: console crash when less than 2 chars
     69* Fix: Shortcut keys saving issue
     70* PHP code refactoring
     71
    6772= 1.0.2 =
    6873* Minor performance improvements
     
    7378= 1.0 =
    7479* Plugin release
     80
     81== Development & Testing ==
     82
     83Requirements:
     84- PHP 8.0 or higher (required for PHPUnit 9)
     85- Composer
     86- Node.js & npm (for building assets)
     87- WordPress (for integration testing)
     88
     89Setup:
     901. Install PHP dependencies:
     91   composer install
     922. Install Node dependencies and build assets:
     93   npm install
     94   npm run build
     953. Set up the WordPress test environment:
     96   bash bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latest
     97   (Adjust DB credentials as needed)
     98
     99Running Tests:
     100- Run all tests:
     101  composer test
     102  or
     103  vendor/bin/phpunit
     104- Run tests with coverage:
     105  composer test-coverage
     106
     107Notes:
     108- Tests are located in the tests/ directory.
     109- The plugin uses the wp-phpunit framework for WordPress integration.
     110- Make sure your database is running and accessible for the test suite.
  • quick-admin-launcher/tags/1.1/build/index.asset.php

    r3253429 r3331684  
    1 <?php return array('dependencies' => array('react', 'wp-element'), 'version' => '92a7a31955b23100c983');
     1<?php return array('dependencies' => array('react', 'wp-element'), 'version' => 'e54f72ebbdcfe2e73d0f');
  • quick-admin-launcher/tags/1.1/build/index.css

    r3253429 r3331684  
    1 #quickal-modal-wrapper{background-color:rgba(0,0,0,.7);height:100%;left:0;position:fixed;top:0;width:100%;z-index:10000}#quickal-modal{background-color:#fefefe;border:1px solid #a9a9a9;border-radius:5px;box-shadow:0 0 10px 0;left:50%;margin-left:-200px;padding:10px;position:absolute;top:40%}#quickal-modal-input{background-color:#fefefe;border:none;font-size:20px;width:400px}#quickal-modal-input:focus{border:none;box-shadow:none}.quickal-modal-dropdown-item{color:#3c434a;padding:5px}.quickal-modal-dropdown-item a{color:#3c434a;text-decoration:none}.quickal-modal-dropdown-item.quickal-selected{background-color:#2271b1;color:#fff}.quickal-modal-dropdown-item.quickal-selected a{color:#fff}.quickal-icon-base64{background-repeat:no-repeat;background-size:contain;display:inline-block;height:12px;width:12px}.quickal-result-type{float:right}.quickal-ribbon{filter:drop-shadow(2px 3px 2px rgba(0,0,0,.5));position:absolute;right:10px;top:-3px}.quickal-ribbon .quickal-ribbon-content{background:#ba051b linear-gradient(45deg,transparent,hsla(0,0%,100%,.25));background-size:400% 400%;clip-path:polygon(0 0,100% 0,100% 100%,50% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 6px),0 calc(100% - 12px));color:#fff;font-size:.75rem;font-weight:700;min-height:26px;padding:8px 2px 4px;position:relative;text-align:center;transition:clip-path 1s,padding 1s,background 1s;width:22px}.quickal-ribbon .quickal-ribbon-content.quickal-ribbon-content-loading{animation:quickalLoadingAnimation 1s ease-out infinite}.quickal-ribbon .quickal-ribbon-content .quickal-ribbon-logo{background:transparent url(images/logo.823fa92c.png) no-repeat 50%;background-size:contain;bottom:10px;left:0;position:absolute;top:5px;width:100%}@keyframes quickalLoadingAnimation{0%{background-color:#d12525}25%{background-color:#000}50%{background-color:#d12525}75%{background-color:#000}to{background-color:#d12525}}#quickal-modal .spinner{position:absolute;right:30px;top:20px}.quickal-settings-title{background:transparent url(images/logo-red.abbdc065.png) no-repeat 0;background-size:contain;line-height:30px;padding-left:25px}#wpadminbar .quickal-admin-bar{position:relative}#wpadminbar .quickal-admin-bar .ab-item{width:15px}#wpadminbar .quickal-admin-bar .quickal-admin-bar-icon{background:transparent url(images/logo.823fa92c.png) no-repeat 0;background-size:contain;height:20px;margin-top:-10px;position:absolute;top:50%;width:20px}
     1#quickal-modal-wrapper{background-color:rgba(0,0,0,.7);height:100%;left:0;position:fixed;top:0;width:100%;z-index:10000}#quickal-modal{background-color:#fefefe;border:1px solid #a9a9a9;border-radius:5px;box-shadow:0 0 10px 0;left:50%;margin-left:-200px;padding:10px;position:absolute;top:40%}#quickal-modal-input{background-color:#fefefe;border:none;font-size:20px;width:400px}#quickal-modal-input:focus{border:none;box-shadow:none}.quickal-modal-dropdown-item{color:#3c434a;padding:5px}.quickal-modal-dropdown-item a{color:#3c434a;text-decoration:none}.quickal-modal-dropdown-item.quickal-selected{background-color:#2271b1;color:#fff}.quickal-modal-dropdown-item.quickal-selected a{color:#fff}.quickal-icon-base64{background-repeat:no-repeat;background-size:contain;display:inline-block;height:12px;width:12px}.quickal-result-type{float:right}.quickal-ribbon{filter:drop-shadow(2px 3px 2px rgba(0,0,0,.5));position:absolute;right:10px;top:-3px}.quickal-ribbon .quickal-ribbon-content{background:#ba051b linear-gradient(45deg,transparent,hsla(0,0%,100%,.25));background-size:400% 400%;clip-path:polygon(0 0,100% 0,100% 100%,50% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 6px),0 calc(100% - 12px));color:#fff;font-size:.75rem;font-weight:700;min-height:26px;padding:8px 2px 4px;position:relative;text-align:center;transition:clip-path 1s,padding 1s,background 1s;width:22px}.quickal-ribbon .quickal-ribbon-content.quickal-ribbon-content-loading{animation:quickalLoadingAnimation 1s ease-out infinite}.quickal-ribbon .quickal-ribbon-content .quickal-ribbon-logo{background:transparent url(images/logo.823fa92c.png) no-repeat 50%;background-size:contain;bottom:10px;left:0;position:absolute;top:5px;width:100%}@keyframes quickalLoadingAnimation{0%{background-color:#d12525}25%{background-color:#000}50%{background-color:#d12525}75%{background-color:#000}to{background-color:#d12525}}#quickal-modal .spinner{position:absolute;right:30px;top:20px}.quickal-settings-title{background:transparent url(images/logo-red.abbdc065.png) no-repeat 0;background-size:contain;line-height:30px;padding-left:40px!important}#wpadminbar .quickal-admin-bar{position:relative}#wpadminbar .quickal-admin-bar .ab-item{width:15px}#wpadminbar .quickal-admin-bar .quickal-admin-bar-icon{background:transparent url(images/logo.823fa92c.png) no-repeat 0;background-size:contain;height:20px;margin-top:-10px;position:absolute;top:50%;width:20px}
  • quick-admin-launcher/tags/1.1/build/index.js

    r3253429 r3331684  
    1 (()=>{"use strict";const e=window.React,t=window.wp.element,a=({quickalData:a})=>{const[n,l]=(0,t.useState)(!1),[o,c]=(0,t.useState)(""),[i,r]=(0,t.useState)([]),[s,u]=(0,t.useState)(0),[m,d]=(0,t.useState)(!1),[k,y]=(0,t.useState)(null);return(0,t.useEffect)((()=>{document.querySelector(".quickal-admin-bar > a").addEventListener("click",(e=>{l(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()}));const e=e=>{"quickal_setting_hotkey_display"!==document.activeElement.id&&(a.hotkey.key===e.key&&a.hotkey.alt===e.altKey&&a.hotkey.ctrl===e.ctrlKey&&a.hotkey.shift===e.shiftKey&&a.hotkey.meta===e.metaKey&&(l(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()),n&&"Escape"===e.key&&(l(!1),d(!1)),n&&"ArrowDown"===e.key&&u((e=>(e+1)%i.length)),n&&"ArrowUp"===e.key&&u((e=>(e-1+i.length)%i.length)),n&&"Enter"===e.key&&i[s]&&(window.location=i[s].link))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[n,i,s,a]),n?(0,e.createElement)("div",{id:"quickal-modal-wrapper",onClick:()=>{l(!1),d(!1)}},(0,e.createElement)("div",{id:"quickal-modal"},(0,e.createElement)("div",{className:"quickal-ribbon"},(0,e.createElement)("div",{className:"quickal-ribbon-content "+(m?"quickal-ribbon-content-loading":"")},(0,e.createElement)("div",{className:"quickal-ribbon-logo"}))),(0,e.createElement)("input",{id:"quickal-modal-input",type:"text",value:o,onChange:e=>{const t=e.target.value.toLowerCase().trim();if(c(t),0===t.length)return void r([]);const n=t.split(" "),l=a.adminMenu.filter((e=>n.every((t=>e.term.includes(t)))));r(l),u(0),d(!0);const o=t.replace(" ","+");clearTimeout(k),y(setTimeout((async()=>{const e=await fetch(`${a.rest}/search/${o}`,{headers:{"X-WP-Nonce":a.nonce,"Content-Type":"application/json;charset=utf-8"}}),t=await e.json();r((e=>[...e,...t])),d(!1)}),300))},onKeyDown:e=>{if("ArrowUp"===e.key||"ArrowDown"===e.key)return!1},placeholder:"Search any admin tool or content..."}),(0,e.createElement)("div",{className:"quickal-modal-dropdown"},i.map(((t,a)=>(0,e.createElement)("div",{key:a,className:"quickal-modal-dropdown-item "+(a===s?"quickal-selected":""),onMouseOver:()=>(e=>{u(e)})(a)},t.icon&&t.icon.includes("dashicons-")&&(0,e.createElement)("span",{className:`dashicons-before ${t.icon}`}),t.icon&&t.icon.includes("base64")&&(0,e.createElement)("span",{className:"quickal-icon-base64",style:{backgroundImage:`url(${t.icon})`}}),(0,e.createElement)("a",{href:t.link},(0,e.createElement)("span",null,t.label)),t.type&&(0,e.createElement)("div",{className:"quickal-result-type"},"(",(0,e.createElement)("span",null,t.type),")"))))))):null};document.addEventListener("DOMContentLoaded",(()=>{const n=(0,t.createRoot)(document.getElementById("quickal-modal-root")),l=window.quickalData;l.hotkey.alt=!!l.hotkey.alt,l.hotkey.ctrl=!!l.hotkey.ctrl,l.hotkey.shift=!!l.hotkey.shift,l.hotkey.meta=!!l.hotkey.meta,l.adminMenu=(()=>{const e=document.querySelectorAll("#adminmenu a");let t=[],a="",n=!1;var l="";for(let u=0;u<e.length;u+=1){var o=e[u].href,c=e[u].innerText.replace(/\n|\r/g,"").trim();if(n=e[u].className.includes("menu-top"),n){a=c;var i=e[u].querySelector(".wp-menu-image");if(i){var r=i.className.replace("dashicons-before","").match(/(dashicons-[a-z0-9-]*)/g);if(r)l=r[0];else{var s=i.querySelector("img");s&&(l=s.src)}}}else c=`${a} - ${c}`;const m={label:c,term:c.toLowerCase(),link:o,icon:l};t.push(m)}return t})(),l.extra_items.length>0&&(l.adminMenu=[...l.adminMenu,...l.extra_items]),n.render((0,e.createElement)(a,{quickalData:l}))}))})();
     1(()=>{"use strict";const e=window.React,t=window.wp.element,a=({quickalData:a})=>{const[n,o]=(0,t.useState)(!1),[l,c]=(0,t.useState)(""),[i,r]=(0,t.useState)([]),[s,u]=(0,t.useState)(0),[m,d]=(0,t.useState)(!1),[k,y]=(0,t.useState)(null);return(0,t.useEffect)((()=>{document.querySelector(".quickal-admin-bar > a").addEventListener("click",(e=>{o(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()}));const e=e=>{"quickal_setting_hotkey_display"!==document.activeElement.id&&(a.hotkey.key===e.key&&a.hotkey.alt===e.altKey&&a.hotkey.ctrl===e.ctrlKey&&a.hotkey.shift===e.shiftKey&&a.hotkey.meta===e.metaKey&&(o(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()),n&&"Escape"===e.key&&(o(!1),d(!1)),n&&"ArrowDown"===e.key&&u((e=>(e+1)%i.length)),n&&"ArrowUp"===e.key&&u((e=>(e-1+i.length)%i.length)),n&&"Enter"===e.key&&i[s]&&(window.location=i[s].link))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[n,i,s,a]),n?(0,e.createElement)("div",{id:"quickal-modal-wrapper",onClick:()=>{o(!1),d(!1)}},(0,e.createElement)("div",{id:"quickal-modal"},(0,e.createElement)("div",{className:"quickal-ribbon"},(0,e.createElement)("div",{className:"quickal-ribbon-content "+(m?"quickal-ribbon-content-loading":"")},(0,e.createElement)("div",{className:"quickal-ribbon-logo"}))),(0,e.createElement)("input",{id:"quickal-modal-input",type:"text",value:l,onChange:e=>{const t=e.target.value;c(t);const n=t.toLowerCase().trim();if(0===n.length)return r([]),void d(!1);const o=n.split(" "),l=a.adminMenu.filter((e=>o.every((t=>e.term.includes(t)))));if(r(l),u(0),n.length<2)return void d(!1);d(!0);const i=n.replace(" ","+");clearTimeout(k),y(setTimeout((async()=>{try{const e=await fetch(`${a.rest}/search/${i}`,{headers:{"X-WP-Nonce":a.nonce,"Content-Type":"application/json;charset=utf-8"}});if(!e.ok)return void d(!1);const t=await e.json();Array.isArray(t)&&r((e=>[...e,...t]))}catch(e){d(!1)}d(!1)}),300))},onKeyDown:e=>{if("ArrowUp"===e.key||"ArrowDown"===e.key)return!1},placeholder:"Search any admin tool or content..."}),(0,e.createElement)("div",{className:"quickal-modal-dropdown"},i.map(((t,a)=>(0,e.createElement)("div",{key:a,className:"quickal-modal-dropdown-item "+(a===s?"quickal-selected":""),onMouseOver:()=>(e=>{u(e)})(a)},t.icon&&t.icon.includes("dashicons-")&&(0,e.createElement)("span",{className:`dashicons-before ${t.icon}`}),t.icon&&t.icon.includes("base64")&&(0,e.createElement)("span",{className:"quickal-icon-base64",style:{backgroundImage:`url(${t.icon})`}}),(0,e.createElement)("a",{href:t.link},(0,e.createElement)("span",null,t.label)),t.type&&(0,e.createElement)("div",{className:"quickal-result-type"},"(",(0,e.createElement)("span",null,t.type),")"))))))):null};document.addEventListener("DOMContentLoaded",(()=>{const n=(0,t.createRoot)(document.getElementById("quickal-modal-root")),o=window.quickalData;o.hotkey.alt=!!o.hotkey.alt,o.hotkey.ctrl=!!o.hotkey.ctrl,o.hotkey.shift=!!o.hotkey.shift,o.hotkey.meta=!!o.hotkey.meta,o.adminMenu=(()=>{const e=document.querySelectorAll("#adminmenu a");let t=[],a="",n=!1;var o="";for(let u=0;u<e.length;u+=1){var l=e[u].href,c=e[u].innerText.replace(/\n|\r/g,"").trim();if(n=e[u].className.includes("menu-top"),n){a=c;var i=e[u].querySelector(".wp-menu-image");if(i){var r=i.className.replace("dashicons-before","").match(/(dashicons-[a-z0-9-]*)/g);if(r)o=r[0];else{var s=i.querySelector("img");s&&(o=s.src)}}}else c=`${a} - ${c}`;const m={label:c,term:c.toLowerCase(),link:l,icon:o};t.push(m)}return t})(),o.extra_items.length>0&&(o.adminMenu=[...o.adminMenu,...o.extra_items]),n.render((0,e.createElement)(a,{quickalData:o}))}))})();
  • quick-admin-launcher/tags/1.1/quick-admin-launcher.php

    r3254046 r3331684  
    44 * Plugin URI:  https://wordpress.org/plugins/quick-admin-launcher/
    55 * Description: Quick Admin Launcher is a WordPress plugin that allows to quickly launch any admin tool from a search box.
    6  * Version:     1.0.2
     6 * Version:     1.1
    77 * Author:      dbeja
    88 * Text Domain: quickal
    99 * Domain Path: /languages
     10 * Requires PHP: 7.4
    1011 */
    1112
    12 defined( 'ABSPATH' ) || die( 'No script kiddies please!' );
     13defined('ABSPATH') || die('No script kiddies please!');
    1314
    14 define( 'QUICKAL_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
    15 define( 'QUICKAL_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
    16 define( 'QUICKAL_VERSION', '1.0.2' );
     15define('QUICKAL_PLUGIN_DIR', plugin_dir_path(__FILE__));
     16define('QUICKAL_PLUGIN_URL', plugin_dir_url(__FILE__));
     17define('QUICKAL_VERSION', '1.1');
    1718
    18 require_once QUICKAL_PLUGIN_DIR . '/includes/autoload.php';
     19// Load Composer autoloader
     20require_once QUICKAL_PLUGIN_DIR . '/vendor/autoload.php';
    1921
    20 register_activation_hook( __FILE__, 'quickal_activate' );
    21 register_deactivation_hook( __FILE__, 'quickal_deactivate' );
     22// Register activation and deactivation hooks
     23register_activation_hook(__FILE__, 'quickal_activate');
     24register_deactivation_hook(__FILE__, 'quickal_deactivate');
    2225
    2326/**
    24  * Activation hook
     27 * Plugin activation hook
    2528 *
    2629 * @since 1.0.0
     30 * @return void
    2731 */
    28 function quickal_activate() {
    29     // set default quickal settings.
    30     $options = get_option( 'quickal_settings' );
    31     if ( false === $options ) {
    32         $default = array(
    33             'post_types'   => array( 'page', 'post' ),
    34             'users_search' => 1,
    35             'hotkey'       => array(
    36                 'display' => 'CTRL + k',
    37                 'key'     => 'k',
    38                 'alt'     => '',
    39                 'ctrl'    => 1,
    40                 'shift'   => '',
    41                 'meta'    => '',
    42             ),
    43         );
    44         update_option( 'quickal_settings', $default );
    45     }
     32function quickal_activate(): void
     33{
     34    try {
     35        // Set default settings if they don't exist
     36        $options = get_option('quickal_settings');
     37        if (false === $options) {
     38            $defaults = \QUICKAL\Config\PluginConfig::getDefaults();
     39            update_option('quickal_settings', $defaults);
     40        }
     41       
     42        // Log activation
     43        if (defined('WP_DEBUG') && WP_DEBUG) {
     44            error_log('[QuickAL] Plugin activated successfully');
     45        }
     46       
     47    } catch (\Exception $e) {
     48        error_log('[QuickAL] Activation error: ' . $e->getMessage());
     49    }
    4650}
    4751
    4852/**
    49  * Deactivation hook
     53 * Plugin deactivation hook
    5054 *
    5155 * @since 1.0.0
     56 * @return void
    5257 */
    53 function quickal_deactivate() {}
     58function quickal_deactivate(): void
     59{
     60    try {
     61        // Clean up any temporary data if needed
     62        if (defined('WP_DEBUG') && WP_DEBUG) {
     63            error_log('[QuickAL] Plugin deactivated');
     64        }
     65       
     66    } catch (\Exception $e) {
     67        error_log('[QuickAL] Deactivation error: ' . $e->getMessage());
     68    }
     69}
    5470
    55 $quickal = new QUICKAL\QuickAL();
    56 $quickal->init();
     71/**
     72 * Initialize the plugin with dependency injection
     73 *
     74 * @return void
     75 */
     76function quickal_init(): void
     77{
     78    try {
     79        // Create dependency injection container
     80        $container = new \QUICKAL\DI\Container();
     81       
     82        // Get the main plugin instance
     83        $plugin = $container->get(\QUICKAL\QuickAL::class);
     84       
     85        // Initialize the plugin
     86        $plugin->init();
     87       
     88    } catch (\Exception $e) {
     89        error_log('[QuickAL] Initialization error: ' . $e->getMessage());
     90    }
     91}
     92
     93// Initialize plugin after WordPress is loaded
     94add_action('plugins_loaded', 'quickal_init');
  • quick-admin-launcher/trunk/README.txt

    r3254046 r3331684  
    44Donate link: https://www.paypal.com/paypalme/dbkode
    55Requires at least: 5.7
    6 Tested up to: 6.7
     6Tested up to: 6.8
    77Requires PHP: 7.2
    8 Stable tag: 1.0.2
     8Stable tag: 1.1
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    6565
    6666== Changelog ==
     67= 1.1 =
     68* Fix: console crash when less than 2 chars
     69* Fix: Shortcut keys saving issue
     70* PHP code refactoring
     71
    6772= 1.0.2 =
    6873* Minor performance improvements
     
    7378= 1.0 =
    7479* Plugin release
     80
     81== Development & Testing ==
     82
     83Requirements:
     84- PHP 8.0 or higher (required for PHPUnit 9)
     85- Composer
     86- Node.js & npm (for building assets)
     87- WordPress (for integration testing)
     88
     89Setup:
     901. Install PHP dependencies:
     91   composer install
     922. Install Node dependencies and build assets:
     93   npm install
     94   npm run build
     953. Set up the WordPress test environment:
     96   bash bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latest
     97   (Adjust DB credentials as needed)
     98
     99Running Tests:
     100- Run all tests:
     101  composer test
     102  or
     103  vendor/bin/phpunit
     104- Run tests with coverage:
     105  composer test-coverage
     106
     107Notes:
     108- Tests are located in the tests/ directory.
     109- The plugin uses the wp-phpunit framework for WordPress integration.
     110- Make sure your database is running and accessible for the test suite.
  • quick-admin-launcher/trunk/build/index.asset.php

    r3253429 r3331684  
    1 <?php return array('dependencies' => array('react', 'wp-element'), 'version' => '92a7a31955b23100c983');
     1<?php return array('dependencies' => array('react', 'wp-element'), 'version' => 'e54f72ebbdcfe2e73d0f');
  • quick-admin-launcher/trunk/build/index.css

    r3253429 r3331684  
    1 #quickal-modal-wrapper{background-color:rgba(0,0,0,.7);height:100%;left:0;position:fixed;top:0;width:100%;z-index:10000}#quickal-modal{background-color:#fefefe;border:1px solid #a9a9a9;border-radius:5px;box-shadow:0 0 10px 0;left:50%;margin-left:-200px;padding:10px;position:absolute;top:40%}#quickal-modal-input{background-color:#fefefe;border:none;font-size:20px;width:400px}#quickal-modal-input:focus{border:none;box-shadow:none}.quickal-modal-dropdown-item{color:#3c434a;padding:5px}.quickal-modal-dropdown-item a{color:#3c434a;text-decoration:none}.quickal-modal-dropdown-item.quickal-selected{background-color:#2271b1;color:#fff}.quickal-modal-dropdown-item.quickal-selected a{color:#fff}.quickal-icon-base64{background-repeat:no-repeat;background-size:contain;display:inline-block;height:12px;width:12px}.quickal-result-type{float:right}.quickal-ribbon{filter:drop-shadow(2px 3px 2px rgba(0,0,0,.5));position:absolute;right:10px;top:-3px}.quickal-ribbon .quickal-ribbon-content{background:#ba051b linear-gradient(45deg,transparent,hsla(0,0%,100%,.25));background-size:400% 400%;clip-path:polygon(0 0,100% 0,100% 100%,50% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 6px),0 calc(100% - 12px));color:#fff;font-size:.75rem;font-weight:700;min-height:26px;padding:8px 2px 4px;position:relative;text-align:center;transition:clip-path 1s,padding 1s,background 1s;width:22px}.quickal-ribbon .quickal-ribbon-content.quickal-ribbon-content-loading{animation:quickalLoadingAnimation 1s ease-out infinite}.quickal-ribbon .quickal-ribbon-content .quickal-ribbon-logo{background:transparent url(images/logo.823fa92c.png) no-repeat 50%;background-size:contain;bottom:10px;left:0;position:absolute;top:5px;width:100%}@keyframes quickalLoadingAnimation{0%{background-color:#d12525}25%{background-color:#000}50%{background-color:#d12525}75%{background-color:#000}to{background-color:#d12525}}#quickal-modal .spinner{position:absolute;right:30px;top:20px}.quickal-settings-title{background:transparent url(images/logo-red.abbdc065.png) no-repeat 0;background-size:contain;line-height:30px;padding-left:25px}#wpadminbar .quickal-admin-bar{position:relative}#wpadminbar .quickal-admin-bar .ab-item{width:15px}#wpadminbar .quickal-admin-bar .quickal-admin-bar-icon{background:transparent url(images/logo.823fa92c.png) no-repeat 0;background-size:contain;height:20px;margin-top:-10px;position:absolute;top:50%;width:20px}
     1#quickal-modal-wrapper{background-color:rgba(0,0,0,.7);height:100%;left:0;position:fixed;top:0;width:100%;z-index:10000}#quickal-modal{background-color:#fefefe;border:1px solid #a9a9a9;border-radius:5px;box-shadow:0 0 10px 0;left:50%;margin-left:-200px;padding:10px;position:absolute;top:40%}#quickal-modal-input{background-color:#fefefe;border:none;font-size:20px;width:400px}#quickal-modal-input:focus{border:none;box-shadow:none}.quickal-modal-dropdown-item{color:#3c434a;padding:5px}.quickal-modal-dropdown-item a{color:#3c434a;text-decoration:none}.quickal-modal-dropdown-item.quickal-selected{background-color:#2271b1;color:#fff}.quickal-modal-dropdown-item.quickal-selected a{color:#fff}.quickal-icon-base64{background-repeat:no-repeat;background-size:contain;display:inline-block;height:12px;width:12px}.quickal-result-type{float:right}.quickal-ribbon{filter:drop-shadow(2px 3px 2px rgba(0,0,0,.5));position:absolute;right:10px;top:-3px}.quickal-ribbon .quickal-ribbon-content{background:#ba051b linear-gradient(45deg,transparent,hsla(0,0%,100%,.25));background-size:400% 400%;clip-path:polygon(0 0,100% 0,100% 100%,50% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,50% calc(100% - 6px),0 calc(100% - 12px));color:#fff;font-size:.75rem;font-weight:700;min-height:26px;padding:8px 2px 4px;position:relative;text-align:center;transition:clip-path 1s,padding 1s,background 1s;width:22px}.quickal-ribbon .quickal-ribbon-content.quickal-ribbon-content-loading{animation:quickalLoadingAnimation 1s ease-out infinite}.quickal-ribbon .quickal-ribbon-content .quickal-ribbon-logo{background:transparent url(images/logo.823fa92c.png) no-repeat 50%;background-size:contain;bottom:10px;left:0;position:absolute;top:5px;width:100%}@keyframes quickalLoadingAnimation{0%{background-color:#d12525}25%{background-color:#000}50%{background-color:#d12525}75%{background-color:#000}to{background-color:#d12525}}#quickal-modal .spinner{position:absolute;right:30px;top:20px}.quickal-settings-title{background:transparent url(images/logo-red.abbdc065.png) no-repeat 0;background-size:contain;line-height:30px;padding-left:40px!important}#wpadminbar .quickal-admin-bar{position:relative}#wpadminbar .quickal-admin-bar .ab-item{width:15px}#wpadminbar .quickal-admin-bar .quickal-admin-bar-icon{background:transparent url(images/logo.823fa92c.png) no-repeat 0;background-size:contain;height:20px;margin-top:-10px;position:absolute;top:50%;width:20px}
  • quick-admin-launcher/trunk/build/index.js

    r3253429 r3331684  
    1 (()=>{"use strict";const e=window.React,t=window.wp.element,a=({quickalData:a})=>{const[n,l]=(0,t.useState)(!1),[o,c]=(0,t.useState)(""),[i,r]=(0,t.useState)([]),[s,u]=(0,t.useState)(0),[m,d]=(0,t.useState)(!1),[k,y]=(0,t.useState)(null);return(0,t.useEffect)((()=>{document.querySelector(".quickal-admin-bar > a").addEventListener("click",(e=>{l(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()}));const e=e=>{"quickal_setting_hotkey_display"!==document.activeElement.id&&(a.hotkey.key===e.key&&a.hotkey.alt===e.altKey&&a.hotkey.ctrl===e.ctrlKey&&a.hotkey.shift===e.shiftKey&&a.hotkey.meta===e.metaKey&&(l(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()),n&&"Escape"===e.key&&(l(!1),d(!1)),n&&"ArrowDown"===e.key&&u((e=>(e+1)%i.length)),n&&"ArrowUp"===e.key&&u((e=>(e-1+i.length)%i.length)),n&&"Enter"===e.key&&i[s]&&(window.location=i[s].link))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[n,i,s,a]),n?(0,e.createElement)("div",{id:"quickal-modal-wrapper",onClick:()=>{l(!1),d(!1)}},(0,e.createElement)("div",{id:"quickal-modal"},(0,e.createElement)("div",{className:"quickal-ribbon"},(0,e.createElement)("div",{className:"quickal-ribbon-content "+(m?"quickal-ribbon-content-loading":"")},(0,e.createElement)("div",{className:"quickal-ribbon-logo"}))),(0,e.createElement)("input",{id:"quickal-modal-input",type:"text",value:o,onChange:e=>{const t=e.target.value.toLowerCase().trim();if(c(t),0===t.length)return void r([]);const n=t.split(" "),l=a.adminMenu.filter((e=>n.every((t=>e.term.includes(t)))));r(l),u(0),d(!0);const o=t.replace(" ","+");clearTimeout(k),y(setTimeout((async()=>{const e=await fetch(`${a.rest}/search/${o}`,{headers:{"X-WP-Nonce":a.nonce,"Content-Type":"application/json;charset=utf-8"}}),t=await e.json();r((e=>[...e,...t])),d(!1)}),300))},onKeyDown:e=>{if("ArrowUp"===e.key||"ArrowDown"===e.key)return!1},placeholder:"Search any admin tool or content..."}),(0,e.createElement)("div",{className:"quickal-modal-dropdown"},i.map(((t,a)=>(0,e.createElement)("div",{key:a,className:"quickal-modal-dropdown-item "+(a===s?"quickal-selected":""),onMouseOver:()=>(e=>{u(e)})(a)},t.icon&&t.icon.includes("dashicons-")&&(0,e.createElement)("span",{className:`dashicons-before ${t.icon}`}),t.icon&&t.icon.includes("base64")&&(0,e.createElement)("span",{className:"quickal-icon-base64",style:{backgroundImage:`url(${t.icon})`}}),(0,e.createElement)("a",{href:t.link},(0,e.createElement)("span",null,t.label)),t.type&&(0,e.createElement)("div",{className:"quickal-result-type"},"(",(0,e.createElement)("span",null,t.type),")"))))))):null};document.addEventListener("DOMContentLoaded",(()=>{const n=(0,t.createRoot)(document.getElementById("quickal-modal-root")),l=window.quickalData;l.hotkey.alt=!!l.hotkey.alt,l.hotkey.ctrl=!!l.hotkey.ctrl,l.hotkey.shift=!!l.hotkey.shift,l.hotkey.meta=!!l.hotkey.meta,l.adminMenu=(()=>{const e=document.querySelectorAll("#adminmenu a");let t=[],a="",n=!1;var l="";for(let u=0;u<e.length;u+=1){var o=e[u].href,c=e[u].innerText.replace(/\n|\r/g,"").trim();if(n=e[u].className.includes("menu-top"),n){a=c;var i=e[u].querySelector(".wp-menu-image");if(i){var r=i.className.replace("dashicons-before","").match(/(dashicons-[a-z0-9-]*)/g);if(r)l=r[0];else{var s=i.querySelector("img");s&&(l=s.src)}}}else c=`${a} - ${c}`;const m={label:c,term:c.toLowerCase(),link:o,icon:l};t.push(m)}return t})(),l.extra_items.length>0&&(l.adminMenu=[...l.adminMenu,...l.extra_items]),n.render((0,e.createElement)(a,{quickalData:l}))}))})();
     1(()=>{"use strict";const e=window.React,t=window.wp.element,a=({quickalData:a})=>{const[n,o]=(0,t.useState)(!1),[l,c]=(0,t.useState)(""),[i,r]=(0,t.useState)([]),[s,u]=(0,t.useState)(0),[m,d]=(0,t.useState)(!1),[k,y]=(0,t.useState)(null);return(0,t.useEffect)((()=>{document.querySelector(".quickal-admin-bar > a").addEventListener("click",(e=>{o(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()}));const e=e=>{"quickal_setting_hotkey_display"!==document.activeElement.id&&(a.hotkey.key===e.key&&a.hotkey.alt===e.altKey&&a.hotkey.ctrl===e.ctrlKey&&a.hotkey.shift===e.shiftKey&&a.hotkey.meta===e.metaKey&&(o(!n),n||setTimeout((()=>{document.getElementById("quickal-modal-input").focus()}),100),e.preventDefault()),n&&"Escape"===e.key&&(o(!1),d(!1)),n&&"ArrowDown"===e.key&&u((e=>(e+1)%i.length)),n&&"ArrowUp"===e.key&&u((e=>(e-1+i.length)%i.length)),n&&"Enter"===e.key&&i[s]&&(window.location=i[s].link))};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[n,i,s,a]),n?(0,e.createElement)("div",{id:"quickal-modal-wrapper",onClick:()=>{o(!1),d(!1)}},(0,e.createElement)("div",{id:"quickal-modal"},(0,e.createElement)("div",{className:"quickal-ribbon"},(0,e.createElement)("div",{className:"quickal-ribbon-content "+(m?"quickal-ribbon-content-loading":"")},(0,e.createElement)("div",{className:"quickal-ribbon-logo"}))),(0,e.createElement)("input",{id:"quickal-modal-input",type:"text",value:l,onChange:e=>{const t=e.target.value;c(t);const n=t.toLowerCase().trim();if(0===n.length)return r([]),void d(!1);const o=n.split(" "),l=a.adminMenu.filter((e=>o.every((t=>e.term.includes(t)))));if(r(l),u(0),n.length<2)return void d(!1);d(!0);const i=n.replace(" ","+");clearTimeout(k),y(setTimeout((async()=>{try{const e=await fetch(`${a.rest}/search/${i}`,{headers:{"X-WP-Nonce":a.nonce,"Content-Type":"application/json;charset=utf-8"}});if(!e.ok)return void d(!1);const t=await e.json();Array.isArray(t)&&r((e=>[...e,...t]))}catch(e){d(!1)}d(!1)}),300))},onKeyDown:e=>{if("ArrowUp"===e.key||"ArrowDown"===e.key)return!1},placeholder:"Search any admin tool or content..."}),(0,e.createElement)("div",{className:"quickal-modal-dropdown"},i.map(((t,a)=>(0,e.createElement)("div",{key:a,className:"quickal-modal-dropdown-item "+(a===s?"quickal-selected":""),onMouseOver:()=>(e=>{u(e)})(a)},t.icon&&t.icon.includes("dashicons-")&&(0,e.createElement)("span",{className:`dashicons-before ${t.icon}`}),t.icon&&t.icon.includes("base64")&&(0,e.createElement)("span",{className:"quickal-icon-base64",style:{backgroundImage:`url(${t.icon})`}}),(0,e.createElement)("a",{href:t.link},(0,e.createElement)("span",null,t.label)),t.type&&(0,e.createElement)("div",{className:"quickal-result-type"},"(",(0,e.createElement)("span",null,t.type),")"))))))):null};document.addEventListener("DOMContentLoaded",(()=>{const n=(0,t.createRoot)(document.getElementById("quickal-modal-root")),o=window.quickalData;o.hotkey.alt=!!o.hotkey.alt,o.hotkey.ctrl=!!o.hotkey.ctrl,o.hotkey.shift=!!o.hotkey.shift,o.hotkey.meta=!!o.hotkey.meta,o.adminMenu=(()=>{const e=document.querySelectorAll("#adminmenu a");let t=[],a="",n=!1;var o="";for(let u=0;u<e.length;u+=1){var l=e[u].href,c=e[u].innerText.replace(/\n|\r/g,"").trim();if(n=e[u].className.includes("menu-top"),n){a=c;var i=e[u].querySelector(".wp-menu-image");if(i){var r=i.className.replace("dashicons-before","").match(/(dashicons-[a-z0-9-]*)/g);if(r)o=r[0];else{var s=i.querySelector("img");s&&(o=s.src)}}}else c=`${a} - ${c}`;const m={label:c,term:c.toLowerCase(),link:l,icon:o};t.push(m)}return t})(),o.extra_items.length>0&&(o.adminMenu=[...o.adminMenu,...o.extra_items]),n.render((0,e.createElement)(a,{quickalData:o}))}))})();
  • quick-admin-launcher/trunk/quick-admin-launcher.php

    r3254046 r3331684  
    44 * Plugin URI:  https://wordpress.org/plugins/quick-admin-launcher/
    55 * Description: Quick Admin Launcher is a WordPress plugin that allows to quickly launch any admin tool from a search box.
    6  * Version:     1.0.2
     6 * Version:     1.1
    77 * Author:      dbeja
    88 * Text Domain: quickal
    99 * Domain Path: /languages
     10 * Requires PHP: 7.4
    1011 */
    1112
    12 defined( 'ABSPATH' ) || die( 'No script kiddies please!' );
     13defined('ABSPATH') || die('No script kiddies please!');
    1314
    14 define( 'QUICKAL_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
    15 define( 'QUICKAL_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
    16 define( 'QUICKAL_VERSION', '1.0.2' );
     15define('QUICKAL_PLUGIN_DIR', plugin_dir_path(__FILE__));
     16define('QUICKAL_PLUGIN_URL', plugin_dir_url(__FILE__));
     17define('QUICKAL_VERSION', '1.1');
    1718
    18 require_once QUICKAL_PLUGIN_DIR . '/includes/autoload.php';
     19// Load Composer autoloader
     20require_once QUICKAL_PLUGIN_DIR . '/vendor/autoload.php';
    1921
    20 register_activation_hook( __FILE__, 'quickal_activate' );
    21 register_deactivation_hook( __FILE__, 'quickal_deactivate' );
     22// Register activation and deactivation hooks
     23register_activation_hook(__FILE__, 'quickal_activate');
     24register_deactivation_hook(__FILE__, 'quickal_deactivate');
    2225
    2326/**
    24  * Activation hook
     27 * Plugin activation hook
    2528 *
    2629 * @since 1.0.0
     30 * @return void
    2731 */
    28 function quickal_activate() {
    29     // set default quickal settings.
    30     $options = get_option( 'quickal_settings' );
    31     if ( false === $options ) {
    32         $default = array(
    33             'post_types'   => array( 'page', 'post' ),
    34             'users_search' => 1,
    35             'hotkey'       => array(
    36                 'display' => 'CTRL + k',
    37                 'key'     => 'k',
    38                 'alt'     => '',
    39                 'ctrl'    => 1,
    40                 'shift'   => '',
    41                 'meta'    => '',
    42             ),
    43         );
    44         update_option( 'quickal_settings', $default );
    45     }
     32function quickal_activate(): void
     33{
     34    try {
     35        // Set default settings if they don't exist
     36        $options = get_option('quickal_settings');
     37        if (false === $options) {
     38            $defaults = \QUICKAL\Config\PluginConfig::getDefaults();
     39            update_option('quickal_settings', $defaults);
     40        }
     41       
     42        // Log activation
     43        if (defined('WP_DEBUG') && WP_DEBUG) {
     44            error_log('[QuickAL] Plugin activated successfully');
     45        }
     46       
     47    } catch (\Exception $e) {
     48        error_log('[QuickAL] Activation error: ' . $e->getMessage());
     49    }
    4650}
    4751
    4852/**
    49  * Deactivation hook
     53 * Plugin deactivation hook
    5054 *
    5155 * @since 1.0.0
     56 * @return void
    5257 */
    53 function quickal_deactivate() {}
     58function quickal_deactivate(): void
     59{
     60    try {
     61        // Clean up any temporary data if needed
     62        if (defined('WP_DEBUG') && WP_DEBUG) {
     63            error_log('[QuickAL] Plugin deactivated');
     64        }
     65       
     66    } catch (\Exception $e) {
     67        error_log('[QuickAL] Deactivation error: ' . $e->getMessage());
     68    }
     69}
    5470
    55 $quickal = new QUICKAL\QuickAL();
    56 $quickal->init();
     71/**
     72 * Initialize the plugin with dependency injection
     73 *
     74 * @return void
     75 */
     76function quickal_init(): void
     77{
     78    try {
     79        // Create dependency injection container
     80        $container = new \QUICKAL\DI\Container();
     81       
     82        // Get the main plugin instance
     83        $plugin = $container->get(\QUICKAL\QuickAL::class);
     84       
     85        // Initialize the plugin
     86        $plugin->init();
     87       
     88    } catch (\Exception $e) {
     89        error_log('[QuickAL] Initialization error: ' . $e->getMessage());
     90    }
     91}
     92
     93// Initialize plugin after WordPress is loaded
     94add_action('plugins_loaded', 'quickal_init');
Note: See TracChangeset for help on using the changeset viewer.