Changeset 3464233
- Timestamp:
- 02/18/2026 10:52:21 AM (6 weeks ago)
- Location:
- integrate-asana-with-gravity-forms
- Files:
-
- 22 added
- 4 deleted
- 48 edited
- 1 copied
-
tags/1.6.18 (copied) (copied from integrate-asana-with-gravity-forms/trunk)
-
tags/1.6.18/class-integrate-asana-with-gravity-forms.php (modified) (16 diffs)
-
tags/1.6.18/integrate-asana-with-gravity-forms.php (modified) (3 diffs)
-
tags/1.6.18/readme.txt (modified) (3 diffs)
-
tags/1.6.18/vendor/IAWGF/autoload.php (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/composer/autoload_classmap.php (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/composer/autoload_files.php (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/composer/autoload_real.php (modified) (2 diffs)
-
tags/1.6.18/vendor/IAWGF/composer/autoload_static.php (modified) (4 diffs)
-
tags/1.6.18/vendor/IAWGF/composer/installed.json (modified) (6 diffs)
-
tags/1.6.18/vendor/IAWGF/composer/installed.php (modified) (3 diffs)
-
tags/1.6.18/vendor/IAWGF/composer/platform_check.php (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/assets/css/admin.css (modified) (2 diffs)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/assets/js/admin.js (modified) (4 diffs)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/composer.json (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/Admin (deleted)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/AdminShell.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/AdminAssetHelper.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/Config.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/SuiteCatalog.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteCore/SuiteCore.php (added)
-
tags/1.6.18/vendor/IAWGF/gravityops/core/src/SuiteRegistry.php (deleted)
-
tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/LICENSE (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/README.md (modified) (1 diff)
-
tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/composer.json (modified) (2 diffs)
-
tags/1.6.18/vendor/autoload.php (modified) (1 diff)
-
tags/1.6.18/vendor/composer/autoload_aliases.php (modified) (2 diffs)
-
tags/1.6.18/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/1.6.18/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/1.6.18/vendor/composer/installed.json (modified) (5 diffs)
-
tags/1.6.18/vendor/composer/installed.php (modified) (4 diffs)
-
tags/1.6.18/vendor/composer/platform_check.php (modified) (1 diff)
-
trunk/class-integrate-asana-with-gravity-forms.php (modified) (16 diffs)
-
trunk/integrate-asana-with-gravity-forms.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/vendor/IAWGF/autoload.php (modified) (1 diff)
-
trunk/vendor/IAWGF/composer/autoload_classmap.php (modified) (1 diff)
-
trunk/vendor/IAWGF/composer/autoload_files.php (modified) (1 diff)
-
trunk/vendor/IAWGF/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/IAWGF/composer/autoload_static.php (modified) (4 diffs)
-
trunk/vendor/IAWGF/composer/installed.json (modified) (6 diffs)
-
trunk/vendor/IAWGF/composer/installed.php (modified) (3 diffs)
-
trunk/vendor/IAWGF/composer/platform_check.php (modified) (1 diff)
-
trunk/vendor/IAWGF/gravityops/core/assets/css/admin.css (modified) (2 diffs)
-
trunk/vendor/IAWGF/gravityops/core/assets/js/admin.js (modified) (4 diffs)
-
trunk/vendor/IAWGF/gravityops/core/composer.json (modified) (1 diff)
-
trunk/vendor/IAWGF/gravityops/core/src/Admin (deleted)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/AdminShell.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/AdminAssetHelper.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/Config.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/SuiteCatalog.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteCore/SuiteCore.php (added)
-
trunk/vendor/IAWGF/gravityops/core/src/SuiteRegistry.php (deleted)
-
trunk/vendor/IAWGF/symfony/deprecation-contracts/LICENSE (modified) (1 diff)
-
trunk/vendor/IAWGF/symfony/deprecation-contracts/README.md (modified) (1 diff)
-
trunk/vendor/IAWGF/symfony/deprecation-contracts/composer.json (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_aliases.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.json (modified) (5 diffs)
-
trunk/vendor/composer/installed.php (modified) (4 diffs)
-
trunk/vendor/composer/platform_check.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
integrate-asana-with-gravity-forms/tags/1.6.18/class-integrate-asana-with-gravity-forms.php
r3451305 r3464233 1 1 <?php 2 2 3 use IAWGF\GravityOps\Core\ Admin\SuiteMenu;3 use IAWGF\GravityOps\Core\SuiteCore\SuiteCore; 4 4 use IAWGF\BrightleafDigital\AsanaClient; 5 5 use IAWGF\BrightleafDigital\Auth\Scopes; … … 8 8 use IAWGF\BrightleafDigital\Exceptions\TokenInvalidException; 9 9 use IAWGF\BrightleafDigital\Http\AsanaApiClient; 10 use IAWGF\GravityOps\Core\Admin\ReviewPrompter;11 use IAWGF\GravityOps\Core\Admin\SurveyPrompter;12 10 use IAWGF\GravityOps\Core\Utils\AssetHelper; 13 use IAWGF\GravityOps\Core\Admin\AdminShell;14 use function IAWGF\GravityOps\Core\Admin\gravityops_shell;15 11 if ( !defined( 'ABSPATH' ) ) { 16 12 exit; … … 147 143 add_filter( 'gform_custom_merge_tags', [$this, 'custom_merge_tag'] ); 148 144 // Register the new GravityOps AdminShell page under the parent menu. 149 gravityops_shell()->register_plugin_page( $this->_slug, [145 SuiteCore::instance()->shell()->register_plugin_page( $this->_slug, [ 150 146 'title' => $this->_title, 151 147 'menu_title' => 'Asana Integration', … … 182 178 } 183 179 $param = 'https://wordpress.org/support/plugin/integrate-asana-with-gravity-forms/reviews/#new-post'; 184 $review_prompter = new ReviewPrompter($this->prefix, $this->_title, $param);180 $review_prompter = SuiteCore::instance()->review_prompter( $this->prefix, $this->_title, $param ); 185 181 $review_prompter->init(); 186 182 $review_prompter->maybe_show_review_request( $this->get_number_tasks_created(), 50 ); 187 $survey_prompter = new SurveyPrompter(183 $survey_prompter = SuiteCore::instance()->survey_prompter( 188 184 $this->prefix, 189 185 $this->_title, … … 376 372 */ 377 373 public function get_app_menu_icon() { 378 return ( Suite Menu::get_plugin_icon_url( $this->_slug ) ?: 'dashicons-portfolio' );374 return ( SuiteCore::instance()->suite_menu()->get_plugin_icon_url( $this->_slug ) ?: 'dashicons-portfolio' ); 379 375 } 380 376 … … 385 381 */ 386 382 public function get_menu_icon() { 387 return ( Suite Menu::get_plugin_icon_url( $this->_slug ) ?: $this->get_base_url() . '/includes/images/icon.svg' );383 return ( SuiteCore::instance()->suite_menu()->get_plugin_icon_url( $this->_slug ) ?: $this->get_base_url() . '/includes/images/icon.svg' ); 388 384 } 389 385 … … 589 585 delete_option( $this->prefix . 'access_token' ); 590 586 delete_option( "{$this->prefix}survey_status" ); 587 delete_option( "{$this->prefix}review_prompter_usage_count" ); 591 588 wp_clear_scheduled_hook( 'asana_token_refresh' ); 592 589 } … … 1279 1276 // notes (string). 1280 1277 $this->log_debug( __METHOD__ . '() - getting task description/notes and replacing merge tags.' ); 1281 $task_notes = '<body>' . GFCommon::replace_variables( rgar( $meta, 'task_notes' ), $form, $entry ); 1282 // strip invalid html from rich text 1283 $task_notes = wp_kses( $task_notes, [ 1278 $raw_task_notes = GFCommon::replace_variables( rgar( $meta, 'task_notes' ), $form, $entry ); 1279 // Plain text version for backup task and non-rich text fields. Decode entities to ensure literal characters like < and & show up correctly. 1280 // We avoid wp_strip_all_tags as it butchers PHP code snippets containing < or >. 1281 $plain_task_notes = preg_replace( '/<(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre|p|br|div|span|h[1-6])\\b[^>]*>/i', '', $raw_task_notes ); 1282 $plain_task_notes = preg_replace( '/<\\/(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre|p|br|div|span|h[1-6])>/i', '', $plain_task_notes ); 1283 $plain_task_notes = html_entity_decode( $plain_task_notes, ENT_QUOTES, 'UTF-8' ); 1284 // Rich text version for Asana html_notes. Decode entities first to ensure numeric entities like [ (square brackets) are treated as literal characters. 1285 $html_task_notes = '<body>' . html_entity_decode( $raw_task_notes, ENT_QUOTES, 'UTF-8' ); 1286 // strip invalid html from rich text. 1287 $html_task_notes = wp_kses( $html_task_notes, [ 1284 1288 'body' => [], 1285 1289 'strong' => [], … … 1299 1303 'pre' => [], 1300 1304 ] ); 1301 $task_notes .= '</body>'; 1302 $task_notes = wp_specialchars_decode( $task_notes, ENT_QUOTES ); 1305 $html_task_notes .= '</body>'; 1306 // Asana's html_notes must be valid XML. Escape all text and non-whitelisted tags while preserving allowed Asana HTML tags. 1307 $parts = preg_split( 1308 '/(<[^>]*>)/', 1309 $html_task_notes, 1310 -1, 1311 PREG_SPLIT_DELIM_CAPTURE 1312 ); 1313 $allowed_tags_regex = '/^<\\/?(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre)\\b/i'; 1314 foreach ( $parts as &$part ) { 1315 if ( '' === $part ) { 1316 continue; 1317 } 1318 if ( '<' === $part[0] ) { 1319 if ( !preg_match( $allowed_tags_regex, $part ) ) { 1320 // Use htmlspecialchars with double_encode=false to avoid double escaping existing entities. 1321 $part = htmlspecialchars( 1322 $part, 1323 ENT_QUOTES, 1324 'UTF-8', 1325 false 1326 ); 1327 } 1328 } else { 1329 $part = htmlspecialchars( 1330 $part, 1331 ENT_QUOTES, 1332 'UTF-8', 1333 false 1334 ); 1335 } 1336 // Asana specifically requests ' for single quotes in rich text. 1337 $part = str_replace( ''', ''', $part ); 1338 } 1339 $html_task_notes = implode( '', $parts ); 1303 1340 // array of gid strings -> convert to individual string with for-each later. 1304 1341 $this->log_debug( __METHOD__ . '() - getting assignees.' ); … … 1321 1358 'name' => $processed_task_name, 1322 1359 'tags' => $tags_gid, 1323 'html_notes' => $ task_notes,1360 'html_notes' => $html_task_notes, 1324 1361 'assignee' => $current_assignee, 1325 1362 'projects' => $projects, … … 1386 1423 } 1387 1424 $collaborators_array = implode( ',', $collaborators_array ); 1388 $notes = "Automatic creation of the task failed for some or all of the assignees. The error given was \"{$error}\".\n\n" . "Please create the desired task with this information.\n" . "Task name = {$processed_task_name}\n" . "Task due date = {$processed_due_date}\n" . "Tags = {$tags_as_string}\n" . "Task description = {$ task_notes}\n" . "Task assignees = {$assignees_array}\n" . "Projects = {$projects_array}\n" . "Collaborators = {$collaborators_array}\n";1425 $notes = "Automatic creation of the task failed for some or all of the assignees. The error given was \"{$error}\".\n\n" . "Please create the desired task with this information.\n" . "Task name = {$processed_task_name}\n" . "Task due date = {$processed_due_date}\n" . "Tags = {$tags_as_string}\n" . "Task description = {$plain_task_notes}\n" . "Task assignees = {$assignees_array}\n" . "Projects = {$projects_array}\n" . "Collaborators = {$collaborators_array}\n"; 1389 1426 $this->log_debug( __METHOD__ . '() - attempting to create backup task.' ); 1390 1427 $backup_task_result = $asana_client->tasks()->createTask( [ … … 1618 1655 ]; 1619 1656 } 1620 $workflow_steps = []; 1621 if ( class_exists( AdminShell::class ) ) { 1622 $workflow_steps = AdminShell::get_workflow_steps_by_type( ['iawgf_create_task', 'iawgf_update_task'] ); 1623 } 1657 $workflow_steps = SuiteCore::instance()->shell()->get_workflow_steps_by_type( ['iawgf_create_task', 'iawgf_update_task'] ); 1624 1658 // Use shared renderer: pass GF subview slug, short title for header, and our admin_post action for toggling. 1625 AdminShell::render_feeds_list(1659 SuiteCore::instance()->shell()->render_feeds_list( 1626 1660 $feeds_and_forms, 1627 1661 $this->_slug, … … 1639 1673 public function handle_toggle_feed() { 1640 1674 // Delegate to the shared processor (capability + nonce checks + DB flip + redirect) 1641 AdminShell::process_feed_toggle( 'iawgf_toggle_feed', 'admin.php?page=' . $this->_slug . '&tab=feeds' );1675 SuiteCore::instance()->shell()->process_feed_toggle( 'iawgf_toggle_feed', 'admin.php?page=' . $this->_slug . '&tab=feeds' ); 1642 1676 } 1643 1677 … … 1648 1682 */ 1649 1683 public function handle_toggle_workflow_step() { 1650 AdminShell::process_feed_toggle( 'iawgf_toggle_workflow_step', 'admin.php?page=' . $this->_slug . '&tab=feeds' );1684 SuiteCore::instance()->shell()->process_feed_toggle( 'iawgf_toggle_workflow_step', 'admin.php?page=' . $this->_slug . '&tab=feeds' ); 1651 1685 } 1652 1686 … … 1658 1692 */ 1659 1693 public function gops_render_help() { 1660 AdminShell::render_help_tab( [1694 SuiteCore::instance()->shell()->render_help_tab( [ 1661 1695 'Plugin page' => 'https://brightleafdigital.io/asana-gravity-forms/', 1662 1696 'Docs' => 'https://brightleafdigital.io/asana-gravity-forms/#docs', … … 2729 2763 */ 2730 2764 private function get_freemius_tabs() { 2731 $tabs = AdminShell::freemius_tabs( $this->_slug );2765 $tabs = SuiteCore::instance()->shell()->freemius_tabs( $this->_slug ); 2732 2766 if ( !iawgf_fs()->is_registered() ) { 2733 2767 unset($tabs['account']); -
integrate-asana-with-gravity-forms/tags/1.6.18/integrate-asana-with-gravity-forms.php
r3451305 r3464233 5 5 * Plugin URI: https://brightleafdigital.io//asana-gravity-forms/ 6 6 * Description: Allows you to create Asana tasks directly from your forms. 7 * Version: 1.6.1 77 * Version: 1.6.18 8 8 * Author: BrightLeaf Digital 9 9 * Author URI: https://brightleafdigital.io/ … … 14 14 * @package IntegrateAsanaGravityForms 15 15 */ 16 use function IAWGF\GravityOps\Core\Admin\gravityops_shell;16 use IAWGF\GravityOps\Core\SuiteCore\SuiteCore; 17 17 if ( !defined( 'ABSPATH' ) ) { 18 18 exit; 19 19 // Exit if accessed directly. 20 20 } 21 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_VERSION', '1.6.18' ); 22 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_BASENAME', plugin_basename( __FILE__ ) ); 21 23 require_once __DIR__ . '/vendor/autoload.php'; 22 24 if ( file_exists( __DIR__ . '/vendor/IAWGF/autoload.php' ) ) { 23 25 require_once __DIR__ . '/vendor/IAWGF/autoload.php'; 24 26 } 25 // Instantiate this plugin's copy of the AdminShell early so provider negotiation can happen on plugins_loaded.27 // Register this plugin with SuiteCore early so the latest provider can be selected. 26 28 add_action( 'plugins_loaded', function () { 27 gravityops_shell(); 29 $assets_base_url = ''; 30 if ( file_exists( __DIR__ . '/vendor/IAWGF/gravityops/core/assets/' ) ) { 31 $assets_base_url = plugins_url( 'vendor/IAWGF/gravityops/core/assets/', __FILE__ ); 32 } else { 33 $assets_base_url = plugins_url( 'vendor/gravityops/core/assets/', __FILE__ ); 34 } 35 SuiteCore::register( [ 36 'assets_base_url' => $assets_base_url, 37 ] ); 28 38 }, 1 ); 29 // Ensure GravityOps admin assets resolve from this plugin's vendor path when the library is vendor-installed.30 add_filter( 'gravityops_assets_base_url', function ( $url ) {31 if ( $url ) {32 return $url;33 }34 if ( file_exists( __DIR__ . '/vendor/IAWGF/gravityops/core/assets/' ) ) {35 return plugins_url( 'vendor/IAWGF/gravityops/core/assets/', __FILE__ );36 }37 return plugins_url( 'vendor/gravityops/core/assets/', __FILE__ );38 } );39 39 if ( function_exists( 'iawgf_fs' ) ) { 40 40 iawgf_fs()->set_basename( false, __FILE__ ); … … 82 82 do_action( 'iawgf_fs_loaded' ); 83 83 } 84 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_VERSION', '1.6.17' );85 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_BASENAME', plugin_basename( __FILE__ ) );86 84 add_action( 'admin_notices', function () { 87 85 if ( !class_exists( 'GFForms' ) ) { -
integrate-asana-with-gravity-forms/tags/1.6.18/readme.txt
r3451305 r3464233 2 2 Tested up to: 6.9 3 3 Tags: GravityForms, Asana, integration, task management, automation 4 Stable tag: 1.6.1 74 Stable tag: 1.6.18 5 5 Requires PHP: 7.4 6 6 License: GPLv2 or later … … 80 80 == Changelog == 81 81 82 = 1.6.18 | Feb 18, 2026 = 83 - Fixed uninstall process to properly clear everything 84 - Updated core GravityOps library to improve the update plugin process among other small fixes 85 - Fixed an issue with the Create Task workflow step running also on form submission 86 - Enhanced processing of task description to account for some edge cases where it wouldn't show properly or would cause the task creation to fail 87 82 88 = 1.6.17 | Jan 31, 2026 = 83 89 * Fixed an issue with the save settings button sometimes not showing on the 2nd pg of the integration wizard … … 96 102 * Fixed a bug in the new admin menu 97 103 98 = 1.6.13 =99 * New GravityOps admin page with clearer Overview/Connection/Feeds/Help sections.100 * Quickly turn feeds on/off right from the Feeds list.101 * Improved setup and authorization guidance, especially after site moves or restores.102 * General polish and reliability improvements.103 104 104 = For the full changelog please visit [our website] (https://brightleafdigital.io/docs/changelog/). = -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/autoload.php
r3451305 r3464233 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb::getLoader();22 return ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f::getLoader(); -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/autoload_classmap.php
r3444396 r3464233 26 26 'IAWGF\\BrightleafDigital\\Http\\AsanaApiClient' => $vendorDir . '/brightleaf-digital/asana-client/src/Http/AsanaApiClient.php', 27 27 'IAWGF\\BrightleafDigital\\Utils\\CryptoUtils' => $vendorDir . '/brightleaf-digital/asana-client/src/Utils/CryptoUtils.php', 28 'IAWGF\\GravityOps\\Core\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/Admin/AdminShell.php', 29 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/Admin/ReviewPrompter.php', 30 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader' => $vendorDir . '/gravityops/core/src/Admin/SettingsHeader.php', 31 'IAWGF\\GravityOps\\Core\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/Admin/SuiteMenu.php', 32 'IAWGF\\GravityOps\\Core\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/Admin/SurveyPrompter.php', 33 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/Admin/TrustedLogin.php', 34 'IAWGF\\GravityOps\\Core\\SuiteRegistry' => $vendorDir . '/gravityops/core/src/SuiteRegistry.php', 28 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => $vendorDir . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 29 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 30 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 31 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 32 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 33 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 34 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config' => $vendorDir . '/gravityops/core/src/SuiteCore/Config.php', 35 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 36 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCore.php', 35 37 'IAWGF\\GravityOps\\Core\\Traits\\SingletonTrait' => $vendorDir . '/gravityops/core/src/Traits/SingletonTrait.php', 36 38 'IAWGF\\GravityOps\\Core\\Utils\\AssetHelper' => $vendorDir . '/gravityops/core/src/Utils/AssetHelper.php', -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/autoload_files.php
r3444396 r3464233 10 10 '27af5cb5044b2ad00b632edd7d9fab23' => $vendorDir . '/symfony/deprecation-contracts/function.php', 11 11 '26801412a357618220713b6279bab007' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 12 'ebe7f444078b8942da9be5cdfad48b69' => $vendorDir . '/gravityops/core/src/Admin/functions.php',13 12 ); -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/autoload_real.php
r3451305 r3464233 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb5 class ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \IAWGF\Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\IAWGF\Composer\Autoload\ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::getInitializer($loader));32 call_user_func(\IAWGF\Composer\Autoload\ComposerStaticInitef759e65b13922405ca10b3085d0b89f::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); 35 35 $loader->register(true); 36 36 37 $filesToLoad = \IAWGF\Composer\Autoload\ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$files;37 $filesToLoad = \IAWGF\Composer\Autoload\ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$files; 38 38 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 39 39 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/autoload_static.php
r3451305 r3464233 5 5 namespace IAWGF\Composer\Autoload; 6 6 7 class ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb7 class ComposerStaticInitef759e65b13922405ca10b3085d0b89f 8 8 { 9 9 public static $files = array ( … … 11 11 '27af5cb5044b2ad00b632edd7d9fab23' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', 12 12 '26801412a357618220713b6279bab007' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', 13 'ebe7f444078b8942da9be5cdfad48b69' => __DIR__ . '/..' . '/gravityops/core/src/Admin/functions.php',14 13 ); 15 14 … … 89 88 'IAWGF\\BrightleafDigital\\Http\\AsanaApiClient' => __DIR__ . '/..' . '/brightleaf-digital/asana-client/src/Http/AsanaApiClient.php', 90 89 'IAWGF\\BrightleafDigital\\Utils\\CryptoUtils' => __DIR__ . '/..' . '/brightleaf-digital/asana-client/src/Utils/CryptoUtils.php', 91 'IAWGF\\GravityOps\\Core\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/Admin/AdminShell.php', 92 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/ReviewPrompter.php', 93 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SettingsHeader.php', 94 'IAWGF\\GravityOps\\Core\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SuiteMenu.php', 95 'IAWGF\\GravityOps\\Core\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SurveyPrompter.php', 96 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/Admin/TrustedLogin.php', 97 'IAWGF\\GravityOps\\Core\\SuiteRegistry' => __DIR__ . '/..' . '/gravityops/core/src/SuiteRegistry.php', 90 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 91 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 92 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 93 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 94 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 95 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 96 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Config.php', 97 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 98 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCore.php', 98 99 'IAWGF\\GravityOps\\Core\\Traits\\SingletonTrait' => __DIR__ . '/..' . '/gravityops/core/src/Traits/SingletonTrait.php', 99 100 'IAWGF\\GravityOps\\Core\\Utils\\AssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/Utils/AssetHelper.php', … … 250 251 { 251 252 return \Closure::bind(function () use ($loader) { 252 $loader->prefixLengthsPsr4 = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$prefixLengthsPsr4;253 $loader->prefixDirsPsr4 = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$prefixDirsPsr4;254 $loader->classMap = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$classMap;253 $loader->prefixLengthsPsr4 = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$prefixLengthsPsr4; 254 $loader->prefixDirsPsr4 = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$prefixDirsPsr4; 255 $loader->classMap = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$classMap; 255 256 256 257 }, null, ClassLoader::class); -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/installed.json
r3451305 r3464233 53 53 "2": { 54 54 "name": "gravityops/core", 55 "version": " 1.1.0",56 "version_normalized": " 1.1.0.0",55 "version": "2.0.1", 56 "version_normalized": "2.0.1.0", 57 57 "source": { 58 58 "type": "git", 59 59 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 60 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"61 }, 62 "dist": { 63 "type": "zip", 64 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/ cee27f55738670dc141b58af37d0feb74d4ce47e",65 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",60 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 61 }, 62 "dist": { 63 "type": "zip", 64 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 65 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 66 66 "shasum": "" 67 67 }, … … 70 70 "trustedlogin/client": "^v1.9" 71 71 }, 72 "time": "2026-0 1-21T19:42:14+00:00",72 "time": "2026-02-18T09:47:24+00:00", 73 73 "type": "library", 74 74 "installation-source": "source", … … 76 76 "psr-4": { 77 77 "IAWGF\\GravityOps\\Core\\": "src/" 78 }, 79 "files": [ 80 "src/Admin/functions.php" 81 ] 78 } 82 79 }, 83 80 "license": [ … … 707 704 "11": { 708 705 "name": "symfony/deprecation-contracts", 709 "version": "v3. 6.0",710 "version_normalized": "3. 6.0.0",706 "version": "v3.0.2", 707 "version_normalized": "3.0.2.0", 711 708 "source": { 712 709 "type": "git", 713 710 "url": "https://github.com/symfony/deprecation-contracts.git", 714 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62"715 }, 716 "dist": { 717 "type": "zip", 718 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/ 63afe740e99a13ba87ec199bb07bbdee937a5b62",719 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62",720 "shasum": "" 721 }, 722 "require": { 723 "php": ">=8. 1"724 }, 725 "time": "202 4-09-25T14:21:43+00:00",711 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" 712 }, 713 "dist": { 714 "type": "zip", 715 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 716 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 717 "shasum": "" 718 }, 719 "require": { 720 "php": ">=8.0.2" 721 }, 722 "time": "2022-01-02T09:55:41+00:00", 726 723 "type": "library", 727 724 "extra": { … … 731 728 }, 732 729 "branch-alias": { 733 "dev-main": "3. 6-dev"730 "dev-main": "3.0-dev" 734 731 } 735 732 }, … … 757 754 "homepage": "https://symfony.com", 758 755 "support": { 759 "source": "https://github.com/symfony/deprecation-contracts/tree/v3. 6.0"756 "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" 760 757 }, 761 758 "funding": [ -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/installed.php
r3451305 r3464233 5 5 'pretty_version' => 'dev-main', 6 6 'version' => 'dev-main', 7 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',7 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 8 8 'type' => 'library', 9 9 'install_path' => __DIR__ . '/../', … … 29 29 'gravityops/core' => 30 30 array ( 31 'pretty_version' => ' 1.1.0',32 'version' => ' 1.1.0.0',33 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',31 'pretty_version' => '2.0.1', 32 'version' => '2.0.1.0', 33 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 34 34 'type' => 'library', 35 35 'install_path' => __DIR__ . '/../gravityops/core', … … 137 137 'symfony/deprecation-contracts' => 138 138 array ( 139 'pretty_version' => 'v3. 6.0',140 'version' => '3. 6.0.0',141 'reference' => ' 63afe740e99a13ba87ec199bb07bbdee937a5b62',139 'pretty_version' => 'v3.0.2', 140 'version' => '3.0.2.0', 141 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c', 142 142 'type' => 'library', 143 143 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/composer/platform_check.php
r3451305 r3464233 5 5 $issues = array(); 6 6 7 if (!(PHP_VERSION_ID >= 80 100)) {8 $issues[] = 'Your Composer dependencies require a PHP version ">= 8. 1.0". You are running ' . PHP_VERSION . '.';7 if (!(PHP_VERSION_ID >= 80002)) { 8 $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.'; 9 9 } 10 10 -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/gravityops/core/assets/css/admin.css
r3444396 r3464233 31 31 .gops-tab{padding:6px 14px;border-radius:999px;background:transparent;border:0;text-decoration:none;color:var(--gops-color-muted);font-weight: 500;} 32 32 .gops-tab.is-active{background: var(--gops-color-primary);color:#fff} 33 .gops-tab__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:#5F6EEA;color:#fff;font-size:11px;font-weight:700;line-height:1;margin-left:6px;border:0} 34 35 /* Toolbar */ 36 .gops-actions{display:flex;justify-content:flex-end;margin:6px 0 14px} 33 37 34 38 /* Content / cards */ … … 76 80 .gops-link{color:#5F6EEA;text-decoration:none} /* Accent Product Blue */ 77 81 .gops-link:hover{text-decoration:underline; color: #4A57C6;} 82 button.gops-link{background:none;border:0;padding:0;font:inherit;line-height:1.3;cursor:pointer} 83 84 /* Loading state */ 85 .gops-action-button.is-loading{opacity:.7;pointer-events:none} 86 .gops-spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;margin-left:6px;vertical-align:-2px;animation:gops-spin .7s linear infinite} 87 @keyframes gops-spin{to{transform:rotate(360deg)}} 88 89 /* Modal */ 90 .gops-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:100000} 91 .gops-modal.is-open{display:flex} 92 .gops-modal__backdrop{position:absolute;inset:0;background:rgba(26,20,41,.6)} 93 .gops-modal__dialog{position:relative;z-index:1;background:#fff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(720px,92vw);max-height:80vh;display:flex;flex-direction:column;padding:12px 16px} 94 .gops-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} 95 .gops-modal__title{margin:0;font-size:18px;color:var(--gops-color-text)} 96 .gops-modal__close{background:none;border:0;font-size:26px;line-height:1;cursor:pointer;color:var(--gops-color-muted);transition:color .15s ease} 97 .gops-modal__close:hover{color:var(--gops-color-primary)} 98 .gops-modal__body{overflow:auto;padding:0 4px} 99 .gops-modal__content{margin:0;color:var(--gops-color-text);font-size:13px;line-height:1.4} 100 .gops-modal__content h3, 101 .gops-modal__content h4 { 102 margin: 1em 0 0.3em; 103 font-size: 15px; 104 color: var(--gops-color-primary); 105 font-weight: 600; 106 } 107 .gops-modal__content h3:first-child, 108 .gops-modal__content h4:first-child { 109 margin-top: 0; 110 } 111 .gops-modal__content ul { 112 margin: 0 0 0.8em 0; 113 padding: 0 0 0 1.4em; 114 list-style-type: disc !important; 115 } 116 .gops-modal__content li { 117 margin-bottom: 0.3em; 118 display: list-item !important; 119 } 120 .gops-modal__content p { 121 margin: 0 0 0.6em; 122 } 123 .gops-modal__footer{margin-top:8px;display:flex;justify-content:flex-end;border-top:1px solid var(--gops-color-border);padding-top:10px} 78 124 79 125 /* Brand primary button styling within our admin */ -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/gravityops/core/assets/js/admin.js
r3444396 r3464233 5 5 function qsa(s, c) { 6 6 return Array.prototype.slice.call((c || document).querySelectorAll(s)); 7 } 8 function getAdminConfig() { 9 const root = qs('.gops-admin'); 10 const fallback = {}; 11 if (root) { 12 fallback.nonce = root.getAttribute('data-gops-nonce') || ''; 13 fallback.ajaxUrl = root.getAttribute('data-gops-ajax') || ''; 14 } 15 return Object.assign({}, fallback, window.gopsAdmin || {}); 16 } 17 18 function showNotice(type, message) { 19 const wrap = qs('.gops-admin') || document; 20 const header = qs('.gops-header', wrap) || qs('.gops-header'); 21 const box = ensureNoticesContainer( 22 wrap, 23 header || wrap.firstElementChild 24 ); 25 if (!box) { 26 return; 27 } 28 const notice = document.createElement('div'); 29 notice.className = 'notice notice-' + type + ' is-dismissible'; 30 const p = document.createElement('p'); 31 p.textContent = message; 32 notice.appendChild(p); 33 const btn = document.createElement('button'); 34 btn.type = 'button'; 35 btn.className = 'notice-dismiss'; 36 btn.innerHTML = 37 '<span class="screen-reader-text">Dismiss this notice.</span>'; 38 btn.addEventListener('click', function () { 39 notice.remove(); 40 }); 41 notice.appendChild(btn); 42 box.appendChild(notice); 43 } 44 45 function setButtonLoading(btn, isLoading) { 46 if (!btn) { 47 return; 48 } 49 if (isLoading) { 50 if (!btn.dataset.gopsOriginalText) { 51 btn.dataset.gopsOriginalText = btn.textContent.trim(); 52 } 53 btn.classList.add('is-loading'); 54 btn.disabled = true; 55 if (!qs('.gops-spinner', btn)) { 56 const spinner = document.createElement('span'); 57 spinner.className = 'gops-spinner'; 58 btn.appendChild(spinner); 59 } 60 } else { 61 btn.classList.remove('is-loading'); 62 btn.disabled = false; 63 const spinner = qs('.gops-spinner', btn); 64 if (spinner) { 65 spinner.remove(); 66 } 67 } 68 } 69 70 function ajaxRequest(action, data) { 71 const cfg = getAdminConfig(); 72 const url = cfg.ajaxUrl || window.ajaxurl || ''; 73 const payload = Object.assign( 74 { 75 action, 76 nonce: cfg.nonce || '', 77 }, 78 data || {} 79 ); 80 return jQuery.post(url, payload); 81 } 82 83 function replaceTileHtml(slug, html) { 84 if (!slug || !html) { 85 return; 86 } 87 const tile = qs('.gops-tile[data-gops-tile="' + slug + '"]'); 88 if (tile) { 89 tile.outerHTML = html; 90 } 91 } 92 93 function updateUpdatesCount(count, updatableCount) { 94 const tabs = qs('.gops-tabs'); 95 if (tabs) { 96 let updatesTab = qs('[data-gops-tab="updates"]', tabs); 97 if (count > 0) { 98 if (!updatesTab) { 99 const cfg = getAdminConfig(); 100 const href = cfg.updatesUrl || ''; 101 if (href) { 102 updatesTab = document.createElement('a'); 103 updatesTab.className = 'gops-tab'; 104 updatesTab.setAttribute('data-gops-tab', 'updates'); 105 updatesTab.href = href; 106 updatesTab.textContent = 'Updates'; 107 if ( 108 new URLSearchParams(window.location.search).get( 109 'gops_filter' 110 ) === 'updates' 111 ) { 112 updatesTab.classList.add('is-active'); 113 } 114 const badge = document.createElement('span'); 115 badge.className = 'gops-tab__badge'; 116 badge.setAttribute('data-gops-updates-count', count); 117 badge.textContent = String(count); 118 updatesTab.appendChild(badge); 119 const allTab = qs('[data-gops-tab="all"]', tabs); 120 if (allTab && allTab.nextSibling) { 121 tabs.insertBefore(updatesTab, allTab.nextSibling); 122 } else { 123 tabs.appendChild(updatesTab); 124 } 125 } 126 } else { 127 let badge = qs('.gops-tab__badge', updatesTab); 128 if (!badge) { 129 badge = document.createElement('span'); 130 badge.className = 'gops-tab__badge'; 131 updatesTab.appendChild(badge); 132 } 133 badge.setAttribute('data-gops-updates-count', count); 134 badge.textContent = String(count); 135 } 136 } else if (updatesTab) { 137 updatesTab.remove(); 138 } 139 } 140 141 const actionsWrap = qs('.gops-actions'); 142 if (actionsWrap) { 143 const updateAllBtn = qs('.gops-update-all', actionsWrap); 144 const effectiveUpdatableCount = 145 typeof updatableCount !== 'undefined' ? updatableCount : count; 146 if (effectiveUpdatableCount > 0) { 147 actionsWrap.style.display = ''; 148 if (updateAllBtn) { 149 updateAllBtn.textContent = 150 'Update All (' + effectiveUpdatableCount + ')'; 151 } 152 } else { 153 actionsWrap.style.display = 'none'; 154 } 155 } 156 157 // Update WordPress sidebar menu badge 158 const menuBadge = document.querySelector( 159 '#toplevel_page_gravity_ops .update-plugins' 160 ); 161 if (menuBadge) { 162 if (count > 0) { 163 menuBadge.className = 'update-plugins count-' + count; 164 const inner = menuBadge.querySelector('.plugin-count'); 165 if (inner) { 166 inner.textContent = String(count); 167 } 168 } else { 169 menuBadge.remove(); 170 } 171 } 172 } 173 174 function openChangelogModal(data) { 175 const modal = qs('#gops-changelog-modal'); 176 if (!modal) { 177 return; 178 } 179 const title = qs('.gops-modal__title', modal); 180 const content = qs('.gops-modal__content', modal); 181 const link = qs('.gops-modal__full-link', modal); 182 if (title) { 183 title.textContent = data.title || 'Changelog'; 184 } 185 if (content) { 186 content.innerHTML = data.changelog || 'Changelog not available.'; 187 } 188 if (link) { 189 if (data.full_url) { 190 link.href = data.full_url; 191 link.style.display = ''; 192 } else { 193 link.style.display = 'none'; 194 } 195 } 196 modal.style.display = ''; 197 modal.classList.add('is-open'); 198 modal.setAttribute('aria-hidden', 'false'); 199 } 200 201 function closeChangelogModal() { 202 const modal = qs('#gops-changelog-modal'); 203 if (!modal) { 204 return; 205 } 206 modal.classList.remove('is-open'); 207 modal.style.display = 'none'; 208 modal.setAttribute('aria-hidden', 'true'); 7 209 } 8 210 … … 156 358 if (link && link.href) { 157 359 window.location.href = link.href; 360 } 361 }); 362 363 // Action buttons (update/activate/deactivate/changelog) 364 document.addEventListener('click', function (e) { 365 const btn = e.target.closest('button[data-gops-action]'); 366 if (!btn) { 367 return; 368 } 369 370 const action = btn.getAttribute('data-gops-action') || ''; 371 if (!action) { 372 return; 373 } 374 375 e.preventDefault(); 376 e.stopPropagation(); 377 378 const slug = btn.getAttribute('data-gops-slug') || ''; 379 const pluginFile = btn.getAttribute('data-gops-plugin-file') || ''; 380 381 if (action === 'changelog') { 382 if (!slug) { 383 showNotice('error', 'Missing plugin data.'); 384 return; 385 } 386 setButtonLoading(btn, true); 387 ajaxRequest('gops_get_changelog', { 388 slug, 389 plugin: pluginFile, 390 }) 391 .done(function (resp) { 392 if (resp && resp.success) { 393 openChangelogModal(resp.data || {}); 394 } else { 395 const msg = 396 (resp && resp.data && resp.data.message) || 397 'Unable to load changelog.'; 398 showNotice('error', msg); 399 } 400 }) 401 .fail(function () { 402 showNotice('error', 'Unable to load changelog.'); 403 }) 404 .always(function () { 405 setButtonLoading(btn, false); 406 }); 407 return; 408 } 409 410 if (btn.classList.contains('is-loading')) { 411 return; 412 } 413 414 let request = null; 415 if (action === 'update') { 416 request = ajaxRequest('gops_update_plugin', { 417 slug, 418 plugin: pluginFile, 419 }); 420 } else if (action === 'update-all') { 421 request = ajaxRequest('gops_update_all', {}); 422 } else if (action === 'activate' || action === 'deactivate') { 423 request = ajaxRequest('gops_toggle_plugin', { 424 slug, 425 plugin: pluginFile, 426 toggle: action, 427 }); 428 } 429 430 if (!request) { 431 return; 432 } 433 434 setButtonLoading(btn, true); 435 436 request 437 .done(function (resp) { 438 if (resp && resp.success) { 439 const data = resp.data || {}; 440 if (data.tile_html && data.slug) { 441 replaceTileHtml(data.slug, data.tile_html); 442 } 443 if (data.tiles) { 444 Object.keys(data.tiles).forEach(function (tileSlug) { 445 replaceTileHtml(tileSlug, data.tiles[tileSlug]); 446 }); 447 } 448 if (typeof data.updates_count === 'number') { 449 updateUpdatesCount( 450 data.updates_count, 451 data.updatable_count 452 ); 453 } 454 if (data.message) { 455 showNotice( 456 data.errors && data.errors.length 457 ? 'warning' 458 : 'success', 459 data.message 460 ); 461 } 462 463 // Refresh all updates after a successful action to maintain consistency. 464 if ( 465 action === 'update' || 466 action === 'update-all' || 467 action === 'activate' || 468 action === 'deactivate' 469 ) { 470 triggerBackgroundRefresh(); 471 } 472 if (data.errors && data.errors.length) { 473 data.errors.forEach(function (err) { 474 showNotice('error', err); 475 }); 476 } 477 } else { 478 const msg = 479 (resp && resp.data && resp.data.message) || 480 'Action failed.'; 481 showNotice('error', msg); 482 } 483 }) 484 .fail(function (resp) { 485 let msg = 'Action failed.'; 486 if (resp && resp.responseJSON && resp.responseJSON.data) { 487 msg = resp.responseJSON.data.message || msg; 488 } else if (resp && resp.responseText) { 489 msg = 490 resp.responseText.trim() === '-1' 491 ? 'Security check failed. Refresh and try again.' 492 : resp.responseText; 493 } 494 showNotice('error', msg); 495 }) 496 .always(function () { 497 setButtonLoading(btn, false); 498 }); 499 }); 500 501 // Modal close actions 502 document.addEventListener('click', function (e) { 503 if (e.target.closest('[data-gops-modal-close]')) { 504 e.preventDefault(); 505 closeChangelogModal(); 506 } 507 }); 508 document.addEventListener('keydown', function (e) { 509 if (e.key === 'Escape') { 510 closeChangelogModal(); 158 511 } 159 512 }); … … 306 659 moveNotices(); 307 660 applyFreePluginExternalTabTargets(); 661 triggerBackgroundRefresh(); 308 662 }); 309 663 } else { … … 311 665 moveNotices(); 312 666 applyFreePluginExternalTabTargets(); 667 triggerBackgroundRefresh(); 668 } 669 670 function triggerBackgroundRefresh() { 671 const root = qs('.gops-admin'); 672 if (root && root.dataset.gopsRefresh === '1') { 673 const loader = qs('.gops-header-loader', root); 674 if (loader) { 675 loader.style.display = 'block'; 676 } 677 const tiles = qsa('.gops-tile'); 678 const items = tiles.map(function (tile) { 679 const slug = tile.dataset.gopsTile; 680 const versionEl = qs('.gops-tile__version', tile); 681 const version = versionEl 682 ? versionEl.textContent.replace('v', '').trim() 683 : '0'; 684 return { slug, version }; 685 }); 686 687 ajaxRequest('gops_check_suite_updates', { 688 items: JSON.stringify(items), 689 }) 690 .done(function (resp) { 691 if (resp && resp.success && resp.data) { 692 const data = resp.data; 693 if (data.tiles) { 694 Object.keys(data.tiles).forEach(function (slug) { 695 replaceTileHtml(slug, data.tiles[slug]); 696 }); 697 } 698 if (typeof data.updates_count === 'number') { 699 updateUpdatesCount( 700 data.updates_count, 701 data.updatable_count 702 ); 703 } 704 } 705 }) 706 .always(function () { 707 if (loader) { 708 loader.style.display = 'none'; 709 } 710 }); 711 } 313 712 } 314 713 function applyFreePluginExternalTabTargets() { -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/gravityops/core/composer.json
r3444396 r3464233 11 11 "psr-4": { 12 12 "GravityOps\\Core\\": "src/" 13 }, 14 "files": [ 15 "src/Admin/functions.php" 16 ] 13 } 17 14 } 18 15 } -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/LICENSE
r3451305 r3464233 1 Copyright (c) 2020- presentFabien Potencier1 Copyright (c) 2020-2022 Fabien Potencier 2 2 3 3 Permission is hereby granted, free of charge, to any person obtaining a copy -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/README.md
r3451305 r3464233 23 23 `Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` 24 24 25 While not recommended, the deprecation notices can be completely ignored by declaring an empty25 While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty 26 26 `function trigger_deprecation() {}` in your application. -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/IAWGF/symfony/deprecation-contracts/composer.json
r3451305 r3464233 16 16 ], 17 17 "require": { 18 "php": ">=8. 1"18 "php": ">=8.0.2" 19 19 }, 20 20 "autoload": { … … 26 26 "extra": { 27 27 "branch-alias": { 28 "dev-main": "3. 6-dev"28 "dev-main": "3.0-dev" 29 29 }, 30 30 "thanks": { -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/autoload.php
r3451305 r3464233 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5::getLoader();22 return ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d::getLoader(); -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/autoload_aliases.php
r3444396 r3464233 15 15 } 16 16 17 }18 namespace GravityOps\Core\Admin {19 if(!function_exists('\\GravityOps\\Core\\Admin\\gravityops_shell')){20 function gravityops_shell(...$args) {21 return \IAWGF\GravityOps\Core\Admin\gravityops_shell(...func_get_args());22 }23 }24 17 } 25 18 namespace GuzzleHttp { … … 313 306 ), 314 307 ), 315 'GravityOps\\Core\\ Admin\\AdminShell' =>308 'GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => 316 309 array ( 317 310 'type' => 'class', 318 311 'classname' => 'AdminShell', 319 312 'isabstract' => false, 320 'namespace' => 'GravityOps\\Core\\ Admin',321 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\AdminShell',322 'implements' => 323 array ( 324 ), 325 ), 326 'GravityOps\\Core\\ Admin\\ReviewPrompter' =>313 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 314 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell', 315 'implements' => 316 array ( 317 ), 318 ), 319 'GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => 327 320 array ( 328 321 'type' => 'class', 329 322 'classname' => 'ReviewPrompter', 330 323 'isabstract' => false, 331 'namespace' => 'GravityOps\\Core\\Admin', 332 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter', 333 'implements' => 334 array ( 335 ), 336 ), 337 'GravityOps\\Core\\Admin\\SettingsHeader' => 338 array ( 339 'type' => 'class', 340 'classname' => 'SettingsHeader', 341 'isabstract' => false, 342 'namespace' => 'GravityOps\\Core\\Admin', 343 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader', 344 'implements' => 345 array ( 346 ), 347 ), 348 'GravityOps\\Core\\Admin\\SuiteMenu' => 324 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 325 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter', 326 'implements' => 327 array ( 328 ), 329 ), 330 'GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => 349 331 array ( 350 332 'type' => 'class', 351 333 'classname' => 'SuiteMenu', 352 334 'isabstract' => false, 353 'namespace' => 'GravityOps\\Core\\ Admin',354 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\SuiteMenu',355 'implements' => 356 array ( 357 ), 358 ), 359 'GravityOps\\Core\\ Admin\\SurveyPrompter' =>335 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 336 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu', 337 'implements' => 338 array ( 339 ), 340 ), 341 'GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => 360 342 array ( 361 343 'type' => 'class', 362 344 'classname' => 'SurveyPrompter', 363 345 'isabstract' => false, 364 'namespace' => 'GravityOps\\Core\\ Admin',365 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\SurveyPrompter',366 'implements' => 367 array ( 368 ), 369 ), 370 'GravityOps\\Core\\ Admin\\TrustedLogin' =>346 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 347 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter', 348 'implements' => 349 array ( 350 ), 351 ), 352 'GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => 371 353 array ( 372 354 'type' => 'class', 373 355 'classname' => 'TrustedLogin', 374 356 'isabstract' => false, 375 'namespace' => 'GravityOps\\Core\\Admin', 376 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin', 377 'implements' => 378 array ( 379 ), 380 ), 381 'GravityOps\\Core\\SuiteRegistry' => 382 array ( 383 'type' => 'class', 384 'classname' => 'SuiteRegistry', 385 'isabstract' => false, 386 'namespace' => 'GravityOps\\Core', 387 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteRegistry', 357 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 358 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin', 359 'implements' => 360 array ( 361 ), 362 ), 363 'GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => 364 array ( 365 'type' => 'class', 366 'classname' => 'AdminAssetHelper', 367 'isabstract' => false, 368 'namespace' => 'GravityOps\\Core\\SuiteCore', 369 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper', 370 'implements' => 371 array ( 372 ), 373 ), 374 'GravityOps\\Core\\SuiteCore\\Config' => 375 array ( 376 'type' => 'class', 377 'classname' => 'Config', 378 'isabstract' => false, 379 'namespace' => 'GravityOps\\Core\\SuiteCore', 380 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config', 381 'implements' => 382 array ( 383 ), 384 ), 385 'GravityOps\\Core\\SuiteCore\\SuiteCatalog' => 386 array ( 387 'type' => 'class', 388 'classname' => 'SuiteCatalog', 389 'isabstract' => false, 390 'namespace' => 'GravityOps\\Core\\SuiteCore', 391 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog', 392 'implements' => 393 array ( 394 ), 395 ), 396 'GravityOps\\Core\\SuiteCore\\SuiteCore' => 397 array ( 398 'type' => 'class', 399 'classname' => 'SuiteCore', 400 'isabstract' => false, 401 'namespace' => 'GravityOps\\Core\\SuiteCore', 402 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore', 388 403 'implements' => 389 404 array ( -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/autoload_real.php
r3451305 r3464233 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d55 class ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit c04228858cdd17dea362251fa382d6d5::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $filesToLoad = \Composer\Autoload\ComposerStaticInit c04228858cdd17dea362251fa382d6d5::$files;36 $filesToLoad = \Composer\Autoload\ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::$files; 37 37 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 38 38 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/autoload_static.php
r3451305 r3464233 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit c04228858cdd17dea362251fa382d6d57 class ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d 8 8 { 9 9 public static $files = array ( … … 18 18 { 19 19 return \Closure::bind(function () use ($loader) { 20 $loader->classMap = ComposerStaticInit c04228858cdd17dea362251fa382d6d5::$classMap;20 $loader->classMap = ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::$classMap; 21 21 22 22 }, null, ClassLoader::class); -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/installed.json
r3451305 r3464233 105 105 { 106 106 "name": "gravityops/core", 107 "version": " 1.1.0",108 "version_normalized": " 1.1.0.0",107 "version": "2.0.1", 108 "version_normalized": "2.0.1.0", 109 109 "source": { 110 110 "type": "git", 111 111 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 112 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"113 }, 114 "dist": { 115 "type": "zip", 116 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/ cee27f55738670dc141b58af37d0feb74d4ce47e",117 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",112 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 113 }, 114 "dist": { 115 "type": "zip", 116 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 117 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 118 118 "shasum": "" 119 119 }, … … 122 122 "trustedlogin/client": "^v1.9" 123 123 }, 124 "time": "2026-0 1-21T19:42:14+00:00",124 "time": "2026-02-18T09:47:24+00:00", 125 125 "type": "library", 126 126 "installation-source": "source", … … 717 717 { 718 718 "name": "symfony/deprecation-contracts", 719 "version": "v3. 6.0",720 "version_normalized": "3. 6.0.0",719 "version": "v3.0.2", 720 "version_normalized": "3.0.2.0", 721 721 "source": { 722 722 "type": "git", 723 723 "url": "https://github.com/symfony/deprecation-contracts.git", 724 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62"725 }, 726 "dist": { 727 "type": "zip", 728 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/ 63afe740e99a13ba87ec199bb07bbdee937a5b62",729 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62",730 "shasum": "" 731 }, 732 "require": { 733 "php": ">=8. 1"734 }, 735 "time": "202 4-09-25T14:21:43+00:00",724 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" 725 }, 726 "dist": { 727 "type": "zip", 728 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 729 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 730 "shasum": "" 731 }, 732 "require": { 733 "php": ">=8.0.2" 734 }, 735 "time": "2022-01-02T09:55:41+00:00", 736 736 "type": "library", 737 737 "extra": { … … 741 741 }, 742 742 "branch-alias": { 743 "dev-main": "3. 6-dev"743 "dev-main": "3.0-dev" 744 744 } 745 745 }, … … 763 763 "homepage": "https://symfony.com", 764 764 "support": { 765 "source": "https://github.com/symfony/deprecation-contracts/tree/v3. 6.0"765 "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" 766 766 }, 767 767 "funding": [ -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/installed.php
r3451305 r3464233 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',6 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 23 23 'pretty_version' => 'dev-main', 24 24 'version' => 'dev-main', 25 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',25 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 26 26 'type' => 'library', 27 27 'install_path' => __DIR__ . '/../../', … … 39 39 ), 40 40 'gravityops/core' => array( 41 'pretty_version' => ' 1.1.0',42 'version' => ' 1.1.0.0',43 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',41 'pretty_version' => '2.0.1', 42 'version' => '2.0.1.0', 43 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 44 44 'type' => 'library', 45 45 'install_path' => __DIR__ . '/../gravityops/core', … … 138 138 ), 139 139 'symfony/deprecation-contracts' => array( 140 'pretty_version' => 'v3. 6.0',141 'version' => '3. 6.0.0',142 'reference' => ' 63afe740e99a13ba87ec199bb07bbdee937a5b62',140 'pretty_version' => 'v3.0.2', 141 'version' => '3.0.2.0', 142 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c', 143 143 'type' => 'library', 144 144 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', -
integrate-asana-with-gravity-forms/tags/1.6.18/vendor/composer/platform_check.php
r3451305 r3464233 20 20 } 21 21 } 22 trigger_error( 23 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 E_USER_ERROR 22 throw new \RuntimeException( 23 'Composer detected issues in your platform: ' . implode(' ', $issues) 25 24 ); 26 25 } -
integrate-asana-with-gravity-forms/trunk/class-integrate-asana-with-gravity-forms.php
r3451305 r3464233 1 1 <?php 2 2 3 use IAWGF\GravityOps\Core\ Admin\SuiteMenu;3 use IAWGF\GravityOps\Core\SuiteCore\SuiteCore; 4 4 use IAWGF\BrightleafDigital\AsanaClient; 5 5 use IAWGF\BrightleafDigital\Auth\Scopes; … … 8 8 use IAWGF\BrightleafDigital\Exceptions\TokenInvalidException; 9 9 use IAWGF\BrightleafDigital\Http\AsanaApiClient; 10 use IAWGF\GravityOps\Core\Admin\ReviewPrompter;11 use IAWGF\GravityOps\Core\Admin\SurveyPrompter;12 10 use IAWGF\GravityOps\Core\Utils\AssetHelper; 13 use IAWGF\GravityOps\Core\Admin\AdminShell;14 use function IAWGF\GravityOps\Core\Admin\gravityops_shell;15 11 if ( !defined( 'ABSPATH' ) ) { 16 12 exit; … … 147 143 add_filter( 'gform_custom_merge_tags', [$this, 'custom_merge_tag'] ); 148 144 // Register the new GravityOps AdminShell page under the parent menu. 149 gravityops_shell()->register_plugin_page( $this->_slug, [145 SuiteCore::instance()->shell()->register_plugin_page( $this->_slug, [ 150 146 'title' => $this->_title, 151 147 'menu_title' => 'Asana Integration', … … 182 178 } 183 179 $param = 'https://wordpress.org/support/plugin/integrate-asana-with-gravity-forms/reviews/#new-post'; 184 $review_prompter = new ReviewPrompter($this->prefix, $this->_title, $param);180 $review_prompter = SuiteCore::instance()->review_prompter( $this->prefix, $this->_title, $param ); 185 181 $review_prompter->init(); 186 182 $review_prompter->maybe_show_review_request( $this->get_number_tasks_created(), 50 ); 187 $survey_prompter = new SurveyPrompter(183 $survey_prompter = SuiteCore::instance()->survey_prompter( 188 184 $this->prefix, 189 185 $this->_title, … … 376 372 */ 377 373 public function get_app_menu_icon() { 378 return ( Suite Menu::get_plugin_icon_url( $this->_slug ) ?: 'dashicons-portfolio' );374 return ( SuiteCore::instance()->suite_menu()->get_plugin_icon_url( $this->_slug ) ?: 'dashicons-portfolio' ); 379 375 } 380 376 … … 385 381 */ 386 382 public function get_menu_icon() { 387 return ( Suite Menu::get_plugin_icon_url( $this->_slug ) ?: $this->get_base_url() . '/includes/images/icon.svg' );383 return ( SuiteCore::instance()->suite_menu()->get_plugin_icon_url( $this->_slug ) ?: $this->get_base_url() . '/includes/images/icon.svg' ); 388 384 } 389 385 … … 589 585 delete_option( $this->prefix . 'access_token' ); 590 586 delete_option( "{$this->prefix}survey_status" ); 587 delete_option( "{$this->prefix}review_prompter_usage_count" ); 591 588 wp_clear_scheduled_hook( 'asana_token_refresh' ); 592 589 } … … 1279 1276 // notes (string). 1280 1277 $this->log_debug( __METHOD__ . '() - getting task description/notes and replacing merge tags.' ); 1281 $task_notes = '<body>' . GFCommon::replace_variables( rgar( $meta, 'task_notes' ), $form, $entry ); 1282 // strip invalid html from rich text 1283 $task_notes = wp_kses( $task_notes, [ 1278 $raw_task_notes = GFCommon::replace_variables( rgar( $meta, 'task_notes' ), $form, $entry ); 1279 // Plain text version for backup task and non-rich text fields. Decode entities to ensure literal characters like < and & show up correctly. 1280 // We avoid wp_strip_all_tags as it butchers PHP code snippets containing < or >. 1281 $plain_task_notes = preg_replace( '/<(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre|p|br|div|span|h[1-6])\\b[^>]*>/i', '', $raw_task_notes ); 1282 $plain_task_notes = preg_replace( '/<\\/(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre|p|br|div|span|h[1-6])>/i', '', $plain_task_notes ); 1283 $plain_task_notes = html_entity_decode( $plain_task_notes, ENT_QUOTES, 'UTF-8' ); 1284 // Rich text version for Asana html_notes. Decode entities first to ensure numeric entities like [ (square brackets) are treated as literal characters. 1285 $html_task_notes = '<body>' . html_entity_decode( $raw_task_notes, ENT_QUOTES, 'UTF-8' ); 1286 // strip invalid html from rich text. 1287 $html_task_notes = wp_kses( $html_task_notes, [ 1284 1288 'body' => [], 1285 1289 'strong' => [], … … 1299 1303 'pre' => [], 1300 1304 ] ); 1301 $task_notes .= '</body>'; 1302 $task_notes = wp_specialchars_decode( $task_notes, ENT_QUOTES ); 1305 $html_task_notes .= '</body>'; 1306 // Asana's html_notes must be valid XML. Escape all text and non-whitelisted tags while preserving allowed Asana HTML tags. 1307 $parts = preg_split( 1308 '/(<[^>]*>)/', 1309 $html_task_notes, 1310 -1, 1311 PREG_SPLIT_DELIM_CAPTURE 1312 ); 1313 $allowed_tags_regex = '/^<\\/?(body|strong|em|u|s|code|ol|ul|li|a|blockquote|pre)\\b/i'; 1314 foreach ( $parts as &$part ) { 1315 if ( '' === $part ) { 1316 continue; 1317 } 1318 if ( '<' === $part[0] ) { 1319 if ( !preg_match( $allowed_tags_regex, $part ) ) { 1320 // Use htmlspecialchars with double_encode=false to avoid double escaping existing entities. 1321 $part = htmlspecialchars( 1322 $part, 1323 ENT_QUOTES, 1324 'UTF-8', 1325 false 1326 ); 1327 } 1328 } else { 1329 $part = htmlspecialchars( 1330 $part, 1331 ENT_QUOTES, 1332 'UTF-8', 1333 false 1334 ); 1335 } 1336 // Asana specifically requests ' for single quotes in rich text. 1337 $part = str_replace( ''', ''', $part ); 1338 } 1339 $html_task_notes = implode( '', $parts ); 1303 1340 // array of gid strings -> convert to individual string with for-each later. 1304 1341 $this->log_debug( __METHOD__ . '() - getting assignees.' ); … … 1321 1358 'name' => $processed_task_name, 1322 1359 'tags' => $tags_gid, 1323 'html_notes' => $ task_notes,1360 'html_notes' => $html_task_notes, 1324 1361 'assignee' => $current_assignee, 1325 1362 'projects' => $projects, … … 1386 1423 } 1387 1424 $collaborators_array = implode( ',', $collaborators_array ); 1388 $notes = "Automatic creation of the task failed for some or all of the assignees. The error given was \"{$error}\".\n\n" . "Please create the desired task with this information.\n" . "Task name = {$processed_task_name}\n" . "Task due date = {$processed_due_date}\n" . "Tags = {$tags_as_string}\n" . "Task description = {$ task_notes}\n" . "Task assignees = {$assignees_array}\n" . "Projects = {$projects_array}\n" . "Collaborators = {$collaborators_array}\n";1425 $notes = "Automatic creation of the task failed for some or all of the assignees. The error given was \"{$error}\".\n\n" . "Please create the desired task with this information.\n" . "Task name = {$processed_task_name}\n" . "Task due date = {$processed_due_date}\n" . "Tags = {$tags_as_string}\n" . "Task description = {$plain_task_notes}\n" . "Task assignees = {$assignees_array}\n" . "Projects = {$projects_array}\n" . "Collaborators = {$collaborators_array}\n"; 1389 1426 $this->log_debug( __METHOD__ . '() - attempting to create backup task.' ); 1390 1427 $backup_task_result = $asana_client->tasks()->createTask( [ … … 1618 1655 ]; 1619 1656 } 1620 $workflow_steps = []; 1621 if ( class_exists( AdminShell::class ) ) { 1622 $workflow_steps = AdminShell::get_workflow_steps_by_type( ['iawgf_create_task', 'iawgf_update_task'] ); 1623 } 1657 $workflow_steps = SuiteCore::instance()->shell()->get_workflow_steps_by_type( ['iawgf_create_task', 'iawgf_update_task'] ); 1624 1658 // Use shared renderer: pass GF subview slug, short title for header, and our admin_post action for toggling. 1625 AdminShell::render_feeds_list(1659 SuiteCore::instance()->shell()->render_feeds_list( 1626 1660 $feeds_and_forms, 1627 1661 $this->_slug, … … 1639 1673 public function handle_toggle_feed() { 1640 1674 // Delegate to the shared processor (capability + nonce checks + DB flip + redirect) 1641 AdminShell::process_feed_toggle( 'iawgf_toggle_feed', 'admin.php?page=' . $this->_slug . '&tab=feeds' );1675 SuiteCore::instance()->shell()->process_feed_toggle( 'iawgf_toggle_feed', 'admin.php?page=' . $this->_slug . '&tab=feeds' ); 1642 1676 } 1643 1677 … … 1648 1682 */ 1649 1683 public function handle_toggle_workflow_step() { 1650 AdminShell::process_feed_toggle( 'iawgf_toggle_workflow_step', 'admin.php?page=' . $this->_slug . '&tab=feeds' );1684 SuiteCore::instance()->shell()->process_feed_toggle( 'iawgf_toggle_workflow_step', 'admin.php?page=' . $this->_slug . '&tab=feeds' ); 1651 1685 } 1652 1686 … … 1658 1692 */ 1659 1693 public function gops_render_help() { 1660 AdminShell::render_help_tab( [1694 SuiteCore::instance()->shell()->render_help_tab( [ 1661 1695 'Plugin page' => 'https://brightleafdigital.io/asana-gravity-forms/', 1662 1696 'Docs' => 'https://brightleafdigital.io/asana-gravity-forms/#docs', … … 2729 2763 */ 2730 2764 private function get_freemius_tabs() { 2731 $tabs = AdminShell::freemius_tabs( $this->_slug );2765 $tabs = SuiteCore::instance()->shell()->freemius_tabs( $this->_slug ); 2732 2766 if ( !iawgf_fs()->is_registered() ) { 2733 2767 unset($tabs['account']); -
integrate-asana-with-gravity-forms/trunk/integrate-asana-with-gravity-forms.php
r3451305 r3464233 5 5 * Plugin URI: https://brightleafdigital.io//asana-gravity-forms/ 6 6 * Description: Allows you to create Asana tasks directly from your forms. 7 * Version: 1.6.1 77 * Version: 1.6.18 8 8 * Author: BrightLeaf Digital 9 9 * Author URI: https://brightleafdigital.io/ … … 14 14 * @package IntegrateAsanaGravityForms 15 15 */ 16 use function IAWGF\GravityOps\Core\Admin\gravityops_shell;16 use IAWGF\GravityOps\Core\SuiteCore\SuiteCore; 17 17 if ( !defined( 'ABSPATH' ) ) { 18 18 exit; 19 19 // Exit if accessed directly. 20 20 } 21 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_VERSION', '1.6.18' ); 22 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_BASENAME', plugin_basename( __FILE__ ) ); 21 23 require_once __DIR__ . '/vendor/autoload.php'; 22 24 if ( file_exists( __DIR__ . '/vendor/IAWGF/autoload.php' ) ) { 23 25 require_once __DIR__ . '/vendor/IAWGF/autoload.php'; 24 26 } 25 // Instantiate this plugin's copy of the AdminShell early so provider negotiation can happen on plugins_loaded.27 // Register this plugin with SuiteCore early so the latest provider can be selected. 26 28 add_action( 'plugins_loaded', function () { 27 gravityops_shell(); 29 $assets_base_url = ''; 30 if ( file_exists( __DIR__ . '/vendor/IAWGF/gravityops/core/assets/' ) ) { 31 $assets_base_url = plugins_url( 'vendor/IAWGF/gravityops/core/assets/', __FILE__ ); 32 } else { 33 $assets_base_url = plugins_url( 'vendor/gravityops/core/assets/', __FILE__ ); 34 } 35 SuiteCore::register( [ 36 'assets_base_url' => $assets_base_url, 37 ] ); 28 38 }, 1 ); 29 // Ensure GravityOps admin assets resolve from this plugin's vendor path when the library is vendor-installed.30 add_filter( 'gravityops_assets_base_url', function ( $url ) {31 if ( $url ) {32 return $url;33 }34 if ( file_exists( __DIR__ . '/vendor/IAWGF/gravityops/core/assets/' ) ) {35 return plugins_url( 'vendor/IAWGF/gravityops/core/assets/', __FILE__ );36 }37 return plugins_url( 'vendor/gravityops/core/assets/', __FILE__ );38 } );39 39 if ( function_exists( 'iawgf_fs' ) ) { 40 40 iawgf_fs()->set_basename( false, __FILE__ ); … … 82 82 do_action( 'iawgf_fs_loaded' ); 83 83 } 84 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_VERSION', '1.6.17' );85 define( 'INTEGRATE_ASANA_WITH_GRAVITY_FORMS_BASENAME', plugin_basename( __FILE__ ) );86 84 add_action( 'admin_notices', function () { 87 85 if ( !class_exists( 'GFForms' ) ) { -
integrate-asana-with-gravity-forms/trunk/readme.txt
r3451305 r3464233 2 2 Tested up to: 6.9 3 3 Tags: GravityForms, Asana, integration, task management, automation 4 Stable tag: 1.6.1 74 Stable tag: 1.6.18 5 5 Requires PHP: 7.4 6 6 License: GPLv2 or later … … 80 80 == Changelog == 81 81 82 = 1.6.18 | Feb 18, 2026 = 83 - Fixed uninstall process to properly clear everything 84 - Updated core GravityOps library to improve the update plugin process among other small fixes 85 - Fixed an issue with the Create Task workflow step running also on form submission 86 - Enhanced processing of task description to account for some edge cases where it wouldn't show properly or would cause the task creation to fail 87 82 88 = 1.6.17 | Jan 31, 2026 = 83 89 * Fixed an issue with the save settings button sometimes not showing on the 2nd pg of the integration wizard … … 96 102 * Fixed a bug in the new admin menu 97 103 98 = 1.6.13 =99 * New GravityOps admin page with clearer Overview/Connection/Feeds/Help sections.100 * Quickly turn feeds on/off right from the Feeds list.101 * Improved setup and authorization guidance, especially after site moves or restores.102 * General polish and reliability improvements.103 104 104 = For the full changelog please visit [our website] (https://brightleafdigital.io/docs/changelog/). = -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/autoload.php
r3451305 r3464233 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb::getLoader();22 return ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f::getLoader(); -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/autoload_classmap.php
r3444396 r3464233 26 26 'IAWGF\\BrightleafDigital\\Http\\AsanaApiClient' => $vendorDir . '/brightleaf-digital/asana-client/src/Http/AsanaApiClient.php', 27 27 'IAWGF\\BrightleafDigital\\Utils\\CryptoUtils' => $vendorDir . '/brightleaf-digital/asana-client/src/Utils/CryptoUtils.php', 28 'IAWGF\\GravityOps\\Core\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/Admin/AdminShell.php', 29 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/Admin/ReviewPrompter.php', 30 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader' => $vendorDir . '/gravityops/core/src/Admin/SettingsHeader.php', 31 'IAWGF\\GravityOps\\Core\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/Admin/SuiteMenu.php', 32 'IAWGF\\GravityOps\\Core\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/Admin/SurveyPrompter.php', 33 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/Admin/TrustedLogin.php', 34 'IAWGF\\GravityOps\\Core\\SuiteRegistry' => $vendorDir . '/gravityops/core/src/SuiteRegistry.php', 28 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => $vendorDir . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 29 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 30 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 31 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 32 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 33 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => $vendorDir . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 34 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config' => $vendorDir . '/gravityops/core/src/SuiteCore/Config.php', 35 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 36 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore' => $vendorDir . '/gravityops/core/src/SuiteCore/SuiteCore.php', 35 37 'IAWGF\\GravityOps\\Core\\Traits\\SingletonTrait' => $vendorDir . '/gravityops/core/src/Traits/SingletonTrait.php', 36 38 'IAWGF\\GravityOps\\Core\\Utils\\AssetHelper' => $vendorDir . '/gravityops/core/src/Utils/AssetHelper.php', -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/autoload_files.php
r3444396 r3464233 10 10 '27af5cb5044b2ad00b632edd7d9fab23' => $vendorDir . '/symfony/deprecation-contracts/function.php', 11 11 '26801412a357618220713b6279bab007' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 12 'ebe7f444078b8942da9be5cdfad48b69' => $vendorDir . '/gravityops/core/src/Admin/functions.php',13 12 ); -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/autoload_real.php
r3451305 r3464233 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb5 class ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \IAWGF\Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 019f90907971e7ceb5d780b24aa8e1bb', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitef759e65b13922405ca10b3085d0b89f', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\IAWGF\Composer\Autoload\ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::getInitializer($loader));32 call_user_func(\IAWGF\Composer\Autoload\ComposerStaticInitef759e65b13922405ca10b3085d0b89f::getInitializer($loader)); 33 33 34 34 $loader->setClassMapAuthoritative(true); 35 35 $loader->register(true); 36 36 37 $filesToLoad = \IAWGF\Composer\Autoload\ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$files;37 $filesToLoad = \IAWGF\Composer\Autoload\ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$files; 38 38 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 39 39 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/autoload_static.php
r3451305 r3464233 5 5 namespace IAWGF\Composer\Autoload; 6 6 7 class ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb7 class ComposerStaticInitef759e65b13922405ca10b3085d0b89f 8 8 { 9 9 public static $files = array ( … … 11 11 '27af5cb5044b2ad00b632edd7d9fab23' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', 12 12 '26801412a357618220713b6279bab007' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', 13 'ebe7f444078b8942da9be5cdfad48b69' => __DIR__ . '/..' . '/gravityops/core/src/Admin/functions.php',14 13 ); 15 14 … … 89 88 'IAWGF\\BrightleafDigital\\Http\\AsanaApiClient' => __DIR__ . '/..' . '/brightleaf-digital/asana-client/src/Http/AsanaApiClient.php', 90 89 'IAWGF\\BrightleafDigital\\Utils\\CryptoUtils' => __DIR__ . '/..' . '/brightleaf-digital/asana-client/src/Utils/CryptoUtils.php', 91 'IAWGF\\GravityOps\\Core\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/Admin/AdminShell.php', 92 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/ReviewPrompter.php', 93 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SettingsHeader.php', 94 'IAWGF\\GravityOps\\Core\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SuiteMenu.php', 95 'IAWGF\\GravityOps\\Core\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/Admin/SurveyPrompter.php', 96 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/Admin/TrustedLogin.php', 97 'IAWGF\\GravityOps\\Core\\SuiteRegistry' => __DIR__ . '/..' . '/gravityops/core/src/SuiteRegistry.php', 90 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/AdminAssetHelper.php', 91 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/AdminShell.php', 92 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/ReviewPrompter.php', 93 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SuiteMenu.php', 94 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/SurveyPrompter.php', 95 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Admin/TrustedLogin.php', 96 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/Config.php', 97 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCatalog.php', 98 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore' => __DIR__ . '/..' . '/gravityops/core/src/SuiteCore/SuiteCore.php', 98 99 'IAWGF\\GravityOps\\Core\\Traits\\SingletonTrait' => __DIR__ . '/..' . '/gravityops/core/src/Traits/SingletonTrait.php', 99 100 'IAWGF\\GravityOps\\Core\\Utils\\AssetHelper' => __DIR__ . '/..' . '/gravityops/core/src/Utils/AssetHelper.php', … … 250 251 { 251 252 return \Closure::bind(function () use ($loader) { 252 $loader->prefixLengthsPsr4 = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$prefixLengthsPsr4;253 $loader->prefixDirsPsr4 = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$prefixDirsPsr4;254 $loader->classMap = ComposerStaticInit 019f90907971e7ceb5d780b24aa8e1bb::$classMap;253 $loader->prefixLengthsPsr4 = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$prefixLengthsPsr4; 254 $loader->prefixDirsPsr4 = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$prefixDirsPsr4; 255 $loader->classMap = ComposerStaticInitef759e65b13922405ca10b3085d0b89f::$classMap; 255 256 256 257 }, null, ClassLoader::class); -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/installed.json
r3451305 r3464233 53 53 "2": { 54 54 "name": "gravityops/core", 55 "version": " 1.1.0",56 "version_normalized": " 1.1.0.0",55 "version": "2.0.1", 56 "version_normalized": "2.0.1.0", 57 57 "source": { 58 58 "type": "git", 59 59 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 60 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"61 }, 62 "dist": { 63 "type": "zip", 64 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/ cee27f55738670dc141b58af37d0feb74d4ce47e",65 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",60 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 61 }, 62 "dist": { 63 "type": "zip", 64 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 65 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 66 66 "shasum": "" 67 67 }, … … 70 70 "trustedlogin/client": "^v1.9" 71 71 }, 72 "time": "2026-0 1-21T19:42:14+00:00",72 "time": "2026-02-18T09:47:24+00:00", 73 73 "type": "library", 74 74 "installation-source": "source", … … 76 76 "psr-4": { 77 77 "IAWGF\\GravityOps\\Core\\": "src/" 78 }, 79 "files": [ 80 "src/Admin/functions.php" 81 ] 78 } 82 79 }, 83 80 "license": [ … … 707 704 "11": { 708 705 "name": "symfony/deprecation-contracts", 709 "version": "v3. 6.0",710 "version_normalized": "3. 6.0.0",706 "version": "v3.0.2", 707 "version_normalized": "3.0.2.0", 711 708 "source": { 712 709 "type": "git", 713 710 "url": "https://github.com/symfony/deprecation-contracts.git", 714 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62"715 }, 716 "dist": { 717 "type": "zip", 718 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/ 63afe740e99a13ba87ec199bb07bbdee937a5b62",719 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62",720 "shasum": "" 721 }, 722 "require": { 723 "php": ">=8. 1"724 }, 725 "time": "202 4-09-25T14:21:43+00:00",711 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" 712 }, 713 "dist": { 714 "type": "zip", 715 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 716 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 717 "shasum": "" 718 }, 719 "require": { 720 "php": ">=8.0.2" 721 }, 722 "time": "2022-01-02T09:55:41+00:00", 726 723 "type": "library", 727 724 "extra": { … … 731 728 }, 732 729 "branch-alias": { 733 "dev-main": "3. 6-dev"730 "dev-main": "3.0-dev" 734 731 } 735 732 }, … … 757 754 "homepage": "https://symfony.com", 758 755 "support": { 759 "source": "https://github.com/symfony/deprecation-contracts/tree/v3. 6.0"756 "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" 760 757 }, 761 758 "funding": [ -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/installed.php
r3451305 r3464233 5 5 'pretty_version' => 'dev-main', 6 6 'version' => 'dev-main', 7 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',7 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 8 8 'type' => 'library', 9 9 'install_path' => __DIR__ . '/../', … … 29 29 'gravityops/core' => 30 30 array ( 31 'pretty_version' => ' 1.1.0',32 'version' => ' 1.1.0.0',33 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',31 'pretty_version' => '2.0.1', 32 'version' => '2.0.1.0', 33 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 34 34 'type' => 'library', 35 35 'install_path' => __DIR__ . '/../gravityops/core', … … 137 137 'symfony/deprecation-contracts' => 138 138 array ( 139 'pretty_version' => 'v3. 6.0',140 'version' => '3. 6.0.0',141 'reference' => ' 63afe740e99a13ba87ec199bb07bbdee937a5b62',139 'pretty_version' => 'v3.0.2', 140 'version' => '3.0.2.0', 141 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c', 142 142 'type' => 'library', 143 143 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/composer/platform_check.php
r3451305 r3464233 5 5 $issues = array(); 6 6 7 if (!(PHP_VERSION_ID >= 80 100)) {8 $issues[] = 'Your Composer dependencies require a PHP version ">= 8. 1.0". You are running ' . PHP_VERSION . '.';7 if (!(PHP_VERSION_ID >= 80002)) { 8 $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.'; 9 9 } 10 10 -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/gravityops/core/assets/css/admin.css
r3444396 r3464233 31 31 .gops-tab{padding:6px 14px;border-radius:999px;background:transparent;border:0;text-decoration:none;color:var(--gops-color-muted);font-weight: 500;} 32 32 .gops-tab.is-active{background: var(--gops-color-primary);color:#fff} 33 .gops-tab__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:#5F6EEA;color:#fff;font-size:11px;font-weight:700;line-height:1;margin-left:6px;border:0} 34 35 /* Toolbar */ 36 .gops-actions{display:flex;justify-content:flex-end;margin:6px 0 14px} 33 37 34 38 /* Content / cards */ … … 76 80 .gops-link{color:#5F6EEA;text-decoration:none} /* Accent Product Blue */ 77 81 .gops-link:hover{text-decoration:underline; color: #4A57C6;} 82 button.gops-link{background:none;border:0;padding:0;font:inherit;line-height:1.3;cursor:pointer} 83 84 /* Loading state */ 85 .gops-action-button.is-loading{opacity:.7;pointer-events:none} 86 .gops-spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;margin-left:6px;vertical-align:-2px;animation:gops-spin .7s linear infinite} 87 @keyframes gops-spin{to{transform:rotate(360deg)}} 88 89 /* Modal */ 90 .gops-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:100000} 91 .gops-modal.is-open{display:flex} 92 .gops-modal__backdrop{position:absolute;inset:0;background:rgba(26,20,41,.6)} 93 .gops-modal__dialog{position:relative;z-index:1;background:#fff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(720px,92vw);max-height:80vh;display:flex;flex-direction:column;padding:12px 16px} 94 .gops-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px} 95 .gops-modal__title{margin:0;font-size:18px;color:var(--gops-color-text)} 96 .gops-modal__close{background:none;border:0;font-size:26px;line-height:1;cursor:pointer;color:var(--gops-color-muted);transition:color .15s ease} 97 .gops-modal__close:hover{color:var(--gops-color-primary)} 98 .gops-modal__body{overflow:auto;padding:0 4px} 99 .gops-modal__content{margin:0;color:var(--gops-color-text);font-size:13px;line-height:1.4} 100 .gops-modal__content h3, 101 .gops-modal__content h4 { 102 margin: 1em 0 0.3em; 103 font-size: 15px; 104 color: var(--gops-color-primary); 105 font-weight: 600; 106 } 107 .gops-modal__content h3:first-child, 108 .gops-modal__content h4:first-child { 109 margin-top: 0; 110 } 111 .gops-modal__content ul { 112 margin: 0 0 0.8em 0; 113 padding: 0 0 0 1.4em; 114 list-style-type: disc !important; 115 } 116 .gops-modal__content li { 117 margin-bottom: 0.3em; 118 display: list-item !important; 119 } 120 .gops-modal__content p { 121 margin: 0 0 0.6em; 122 } 123 .gops-modal__footer{margin-top:8px;display:flex;justify-content:flex-end;border-top:1px solid var(--gops-color-border);padding-top:10px} 78 124 79 125 /* Brand primary button styling within our admin */ -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/gravityops/core/assets/js/admin.js
r3444396 r3464233 5 5 function qsa(s, c) { 6 6 return Array.prototype.slice.call((c || document).querySelectorAll(s)); 7 } 8 function getAdminConfig() { 9 const root = qs('.gops-admin'); 10 const fallback = {}; 11 if (root) { 12 fallback.nonce = root.getAttribute('data-gops-nonce') || ''; 13 fallback.ajaxUrl = root.getAttribute('data-gops-ajax') || ''; 14 } 15 return Object.assign({}, fallback, window.gopsAdmin || {}); 16 } 17 18 function showNotice(type, message) { 19 const wrap = qs('.gops-admin') || document; 20 const header = qs('.gops-header', wrap) || qs('.gops-header'); 21 const box = ensureNoticesContainer( 22 wrap, 23 header || wrap.firstElementChild 24 ); 25 if (!box) { 26 return; 27 } 28 const notice = document.createElement('div'); 29 notice.className = 'notice notice-' + type + ' is-dismissible'; 30 const p = document.createElement('p'); 31 p.textContent = message; 32 notice.appendChild(p); 33 const btn = document.createElement('button'); 34 btn.type = 'button'; 35 btn.className = 'notice-dismiss'; 36 btn.innerHTML = 37 '<span class="screen-reader-text">Dismiss this notice.</span>'; 38 btn.addEventListener('click', function () { 39 notice.remove(); 40 }); 41 notice.appendChild(btn); 42 box.appendChild(notice); 43 } 44 45 function setButtonLoading(btn, isLoading) { 46 if (!btn) { 47 return; 48 } 49 if (isLoading) { 50 if (!btn.dataset.gopsOriginalText) { 51 btn.dataset.gopsOriginalText = btn.textContent.trim(); 52 } 53 btn.classList.add('is-loading'); 54 btn.disabled = true; 55 if (!qs('.gops-spinner', btn)) { 56 const spinner = document.createElement('span'); 57 spinner.className = 'gops-spinner'; 58 btn.appendChild(spinner); 59 } 60 } else { 61 btn.classList.remove('is-loading'); 62 btn.disabled = false; 63 const spinner = qs('.gops-spinner', btn); 64 if (spinner) { 65 spinner.remove(); 66 } 67 } 68 } 69 70 function ajaxRequest(action, data) { 71 const cfg = getAdminConfig(); 72 const url = cfg.ajaxUrl || window.ajaxurl || ''; 73 const payload = Object.assign( 74 { 75 action, 76 nonce: cfg.nonce || '', 77 }, 78 data || {} 79 ); 80 return jQuery.post(url, payload); 81 } 82 83 function replaceTileHtml(slug, html) { 84 if (!slug || !html) { 85 return; 86 } 87 const tile = qs('.gops-tile[data-gops-tile="' + slug + '"]'); 88 if (tile) { 89 tile.outerHTML = html; 90 } 91 } 92 93 function updateUpdatesCount(count, updatableCount) { 94 const tabs = qs('.gops-tabs'); 95 if (tabs) { 96 let updatesTab = qs('[data-gops-tab="updates"]', tabs); 97 if (count > 0) { 98 if (!updatesTab) { 99 const cfg = getAdminConfig(); 100 const href = cfg.updatesUrl || ''; 101 if (href) { 102 updatesTab = document.createElement('a'); 103 updatesTab.className = 'gops-tab'; 104 updatesTab.setAttribute('data-gops-tab', 'updates'); 105 updatesTab.href = href; 106 updatesTab.textContent = 'Updates'; 107 if ( 108 new URLSearchParams(window.location.search).get( 109 'gops_filter' 110 ) === 'updates' 111 ) { 112 updatesTab.classList.add('is-active'); 113 } 114 const badge = document.createElement('span'); 115 badge.className = 'gops-tab__badge'; 116 badge.setAttribute('data-gops-updates-count', count); 117 badge.textContent = String(count); 118 updatesTab.appendChild(badge); 119 const allTab = qs('[data-gops-tab="all"]', tabs); 120 if (allTab && allTab.nextSibling) { 121 tabs.insertBefore(updatesTab, allTab.nextSibling); 122 } else { 123 tabs.appendChild(updatesTab); 124 } 125 } 126 } else { 127 let badge = qs('.gops-tab__badge', updatesTab); 128 if (!badge) { 129 badge = document.createElement('span'); 130 badge.className = 'gops-tab__badge'; 131 updatesTab.appendChild(badge); 132 } 133 badge.setAttribute('data-gops-updates-count', count); 134 badge.textContent = String(count); 135 } 136 } else if (updatesTab) { 137 updatesTab.remove(); 138 } 139 } 140 141 const actionsWrap = qs('.gops-actions'); 142 if (actionsWrap) { 143 const updateAllBtn = qs('.gops-update-all', actionsWrap); 144 const effectiveUpdatableCount = 145 typeof updatableCount !== 'undefined' ? updatableCount : count; 146 if (effectiveUpdatableCount > 0) { 147 actionsWrap.style.display = ''; 148 if (updateAllBtn) { 149 updateAllBtn.textContent = 150 'Update All (' + effectiveUpdatableCount + ')'; 151 } 152 } else { 153 actionsWrap.style.display = 'none'; 154 } 155 } 156 157 // Update WordPress sidebar menu badge 158 const menuBadge = document.querySelector( 159 '#toplevel_page_gravity_ops .update-plugins' 160 ); 161 if (menuBadge) { 162 if (count > 0) { 163 menuBadge.className = 'update-plugins count-' + count; 164 const inner = menuBadge.querySelector('.plugin-count'); 165 if (inner) { 166 inner.textContent = String(count); 167 } 168 } else { 169 menuBadge.remove(); 170 } 171 } 172 } 173 174 function openChangelogModal(data) { 175 const modal = qs('#gops-changelog-modal'); 176 if (!modal) { 177 return; 178 } 179 const title = qs('.gops-modal__title', modal); 180 const content = qs('.gops-modal__content', modal); 181 const link = qs('.gops-modal__full-link', modal); 182 if (title) { 183 title.textContent = data.title || 'Changelog'; 184 } 185 if (content) { 186 content.innerHTML = data.changelog || 'Changelog not available.'; 187 } 188 if (link) { 189 if (data.full_url) { 190 link.href = data.full_url; 191 link.style.display = ''; 192 } else { 193 link.style.display = 'none'; 194 } 195 } 196 modal.style.display = ''; 197 modal.classList.add('is-open'); 198 modal.setAttribute('aria-hidden', 'false'); 199 } 200 201 function closeChangelogModal() { 202 const modal = qs('#gops-changelog-modal'); 203 if (!modal) { 204 return; 205 } 206 modal.classList.remove('is-open'); 207 modal.style.display = 'none'; 208 modal.setAttribute('aria-hidden', 'true'); 7 209 } 8 210 … … 156 358 if (link && link.href) { 157 359 window.location.href = link.href; 360 } 361 }); 362 363 // Action buttons (update/activate/deactivate/changelog) 364 document.addEventListener('click', function (e) { 365 const btn = e.target.closest('button[data-gops-action]'); 366 if (!btn) { 367 return; 368 } 369 370 const action = btn.getAttribute('data-gops-action') || ''; 371 if (!action) { 372 return; 373 } 374 375 e.preventDefault(); 376 e.stopPropagation(); 377 378 const slug = btn.getAttribute('data-gops-slug') || ''; 379 const pluginFile = btn.getAttribute('data-gops-plugin-file') || ''; 380 381 if (action === 'changelog') { 382 if (!slug) { 383 showNotice('error', 'Missing plugin data.'); 384 return; 385 } 386 setButtonLoading(btn, true); 387 ajaxRequest('gops_get_changelog', { 388 slug, 389 plugin: pluginFile, 390 }) 391 .done(function (resp) { 392 if (resp && resp.success) { 393 openChangelogModal(resp.data || {}); 394 } else { 395 const msg = 396 (resp && resp.data && resp.data.message) || 397 'Unable to load changelog.'; 398 showNotice('error', msg); 399 } 400 }) 401 .fail(function () { 402 showNotice('error', 'Unable to load changelog.'); 403 }) 404 .always(function () { 405 setButtonLoading(btn, false); 406 }); 407 return; 408 } 409 410 if (btn.classList.contains('is-loading')) { 411 return; 412 } 413 414 let request = null; 415 if (action === 'update') { 416 request = ajaxRequest('gops_update_plugin', { 417 slug, 418 plugin: pluginFile, 419 }); 420 } else if (action === 'update-all') { 421 request = ajaxRequest('gops_update_all', {}); 422 } else if (action === 'activate' || action === 'deactivate') { 423 request = ajaxRequest('gops_toggle_plugin', { 424 slug, 425 plugin: pluginFile, 426 toggle: action, 427 }); 428 } 429 430 if (!request) { 431 return; 432 } 433 434 setButtonLoading(btn, true); 435 436 request 437 .done(function (resp) { 438 if (resp && resp.success) { 439 const data = resp.data || {}; 440 if (data.tile_html && data.slug) { 441 replaceTileHtml(data.slug, data.tile_html); 442 } 443 if (data.tiles) { 444 Object.keys(data.tiles).forEach(function (tileSlug) { 445 replaceTileHtml(tileSlug, data.tiles[tileSlug]); 446 }); 447 } 448 if (typeof data.updates_count === 'number') { 449 updateUpdatesCount( 450 data.updates_count, 451 data.updatable_count 452 ); 453 } 454 if (data.message) { 455 showNotice( 456 data.errors && data.errors.length 457 ? 'warning' 458 : 'success', 459 data.message 460 ); 461 } 462 463 // Refresh all updates after a successful action to maintain consistency. 464 if ( 465 action === 'update' || 466 action === 'update-all' || 467 action === 'activate' || 468 action === 'deactivate' 469 ) { 470 triggerBackgroundRefresh(); 471 } 472 if (data.errors && data.errors.length) { 473 data.errors.forEach(function (err) { 474 showNotice('error', err); 475 }); 476 } 477 } else { 478 const msg = 479 (resp && resp.data && resp.data.message) || 480 'Action failed.'; 481 showNotice('error', msg); 482 } 483 }) 484 .fail(function (resp) { 485 let msg = 'Action failed.'; 486 if (resp && resp.responseJSON && resp.responseJSON.data) { 487 msg = resp.responseJSON.data.message || msg; 488 } else if (resp && resp.responseText) { 489 msg = 490 resp.responseText.trim() === '-1' 491 ? 'Security check failed. Refresh and try again.' 492 : resp.responseText; 493 } 494 showNotice('error', msg); 495 }) 496 .always(function () { 497 setButtonLoading(btn, false); 498 }); 499 }); 500 501 // Modal close actions 502 document.addEventListener('click', function (e) { 503 if (e.target.closest('[data-gops-modal-close]')) { 504 e.preventDefault(); 505 closeChangelogModal(); 506 } 507 }); 508 document.addEventListener('keydown', function (e) { 509 if (e.key === 'Escape') { 510 closeChangelogModal(); 158 511 } 159 512 }); … … 306 659 moveNotices(); 307 660 applyFreePluginExternalTabTargets(); 661 triggerBackgroundRefresh(); 308 662 }); 309 663 } else { … … 311 665 moveNotices(); 312 666 applyFreePluginExternalTabTargets(); 667 triggerBackgroundRefresh(); 668 } 669 670 function triggerBackgroundRefresh() { 671 const root = qs('.gops-admin'); 672 if (root && root.dataset.gopsRefresh === '1') { 673 const loader = qs('.gops-header-loader', root); 674 if (loader) { 675 loader.style.display = 'block'; 676 } 677 const tiles = qsa('.gops-tile'); 678 const items = tiles.map(function (tile) { 679 const slug = tile.dataset.gopsTile; 680 const versionEl = qs('.gops-tile__version', tile); 681 const version = versionEl 682 ? versionEl.textContent.replace('v', '').trim() 683 : '0'; 684 return { slug, version }; 685 }); 686 687 ajaxRequest('gops_check_suite_updates', { 688 items: JSON.stringify(items), 689 }) 690 .done(function (resp) { 691 if (resp && resp.success && resp.data) { 692 const data = resp.data; 693 if (data.tiles) { 694 Object.keys(data.tiles).forEach(function (slug) { 695 replaceTileHtml(slug, data.tiles[slug]); 696 }); 697 } 698 if (typeof data.updates_count === 'number') { 699 updateUpdatesCount( 700 data.updates_count, 701 data.updatable_count 702 ); 703 } 704 } 705 }) 706 .always(function () { 707 if (loader) { 708 loader.style.display = 'none'; 709 } 710 }); 711 } 313 712 } 314 713 function applyFreePluginExternalTabTargets() { -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/gravityops/core/composer.json
r3444396 r3464233 11 11 "psr-4": { 12 12 "GravityOps\\Core\\": "src/" 13 }, 14 "files": [ 15 "src/Admin/functions.php" 16 ] 13 } 17 14 } 18 15 } -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/symfony/deprecation-contracts/LICENSE
r3451305 r3464233 1 Copyright (c) 2020- presentFabien Potencier1 Copyright (c) 2020-2022 Fabien Potencier 2 2 3 3 Permission is hereby granted, free of charge, to any person obtaining a copy -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/symfony/deprecation-contracts/README.md
r3451305 r3464233 23 23 `Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` 24 24 25 While not recommended, the deprecation notices can be completely ignored by declaring an empty25 While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty 26 26 `function trigger_deprecation() {}` in your application. -
integrate-asana-with-gravity-forms/trunk/vendor/IAWGF/symfony/deprecation-contracts/composer.json
r3451305 r3464233 16 16 ], 17 17 "require": { 18 "php": ">=8. 1"18 "php": ">=8.0.2" 19 19 }, 20 20 "autoload": { … … 26 26 "extra": { 27 27 "branch-alias": { 28 "dev-main": "3. 6-dev"28 "dev-main": "3.0-dev" 29 29 }, 30 30 "thanks": { -
integrate-asana-with-gravity-forms/trunk/vendor/autoload.php
r3451305 r3464233 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5::getLoader();22 return ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d::getLoader(); -
integrate-asana-with-gravity-forms/trunk/vendor/composer/autoload_aliases.php
r3444396 r3464233 15 15 } 16 16 17 }18 namespace GravityOps\Core\Admin {19 if(!function_exists('\\GravityOps\\Core\\Admin\\gravityops_shell')){20 function gravityops_shell(...$args) {21 return \IAWGF\GravityOps\Core\Admin\gravityops_shell(...func_get_args());22 }23 }24 17 } 25 18 namespace GuzzleHttp { … … 313 306 ), 314 307 ), 315 'GravityOps\\Core\\ Admin\\AdminShell' =>308 'GravityOps\\Core\\SuiteCore\\Admin\\AdminShell' => 316 309 array ( 317 310 'type' => 'class', 318 311 'classname' => 'AdminShell', 319 312 'isabstract' => false, 320 'namespace' => 'GravityOps\\Core\\ Admin',321 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\AdminShell',322 'implements' => 323 array ( 324 ), 325 ), 326 'GravityOps\\Core\\ Admin\\ReviewPrompter' =>313 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 314 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\AdminShell', 315 'implements' => 316 array ( 317 ), 318 ), 319 'GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter' => 327 320 array ( 328 321 'type' => 'class', 329 322 'classname' => 'ReviewPrompter', 330 323 'isabstract' => false, 331 'namespace' => 'GravityOps\\Core\\Admin', 332 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\ReviewPrompter', 333 'implements' => 334 array ( 335 ), 336 ), 337 'GravityOps\\Core\\Admin\\SettingsHeader' => 338 array ( 339 'type' => 'class', 340 'classname' => 'SettingsHeader', 341 'isabstract' => false, 342 'namespace' => 'GravityOps\\Core\\Admin', 343 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\SettingsHeader', 344 'implements' => 345 array ( 346 ), 347 ), 348 'GravityOps\\Core\\Admin\\SuiteMenu' => 324 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 325 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\ReviewPrompter', 326 'implements' => 327 array ( 328 ), 329 ), 330 'GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu' => 349 331 array ( 350 332 'type' => 'class', 351 333 'classname' => 'SuiteMenu', 352 334 'isabstract' => false, 353 'namespace' => 'GravityOps\\Core\\ Admin',354 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\SuiteMenu',355 'implements' => 356 array ( 357 ), 358 ), 359 'GravityOps\\Core\\ Admin\\SurveyPrompter' =>335 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 336 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SuiteMenu', 337 'implements' => 338 array ( 339 ), 340 ), 341 'GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter' => 360 342 array ( 361 343 'type' => 'class', 362 344 'classname' => 'SurveyPrompter', 363 345 'isabstract' => false, 364 'namespace' => 'GravityOps\\Core\\ Admin',365 'extends' => 'IAWGF\\GravityOps\\Core\\ Admin\\SurveyPrompter',366 'implements' => 367 array ( 368 ), 369 ), 370 'GravityOps\\Core\\ Admin\\TrustedLogin' =>346 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 347 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\SurveyPrompter', 348 'implements' => 349 array ( 350 ), 351 ), 352 'GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin' => 371 353 array ( 372 354 'type' => 'class', 373 355 'classname' => 'TrustedLogin', 374 356 'isabstract' => false, 375 'namespace' => 'GravityOps\\Core\\Admin', 376 'extends' => 'IAWGF\\GravityOps\\Core\\Admin\\TrustedLogin', 377 'implements' => 378 array ( 379 ), 380 ), 381 'GravityOps\\Core\\SuiteRegistry' => 382 array ( 383 'type' => 'class', 384 'classname' => 'SuiteRegistry', 385 'isabstract' => false, 386 'namespace' => 'GravityOps\\Core', 387 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteRegistry', 357 'namespace' => 'GravityOps\\Core\\SuiteCore\\Admin', 358 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Admin\\TrustedLogin', 359 'implements' => 360 array ( 361 ), 362 ), 363 'GravityOps\\Core\\SuiteCore\\AdminAssetHelper' => 364 array ( 365 'type' => 'class', 366 'classname' => 'AdminAssetHelper', 367 'isabstract' => false, 368 'namespace' => 'GravityOps\\Core\\SuiteCore', 369 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\AdminAssetHelper', 370 'implements' => 371 array ( 372 ), 373 ), 374 'GravityOps\\Core\\SuiteCore\\Config' => 375 array ( 376 'type' => 'class', 377 'classname' => 'Config', 378 'isabstract' => false, 379 'namespace' => 'GravityOps\\Core\\SuiteCore', 380 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\Config', 381 'implements' => 382 array ( 383 ), 384 ), 385 'GravityOps\\Core\\SuiteCore\\SuiteCatalog' => 386 array ( 387 'type' => 'class', 388 'classname' => 'SuiteCatalog', 389 'isabstract' => false, 390 'namespace' => 'GravityOps\\Core\\SuiteCore', 391 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCatalog', 392 'implements' => 393 array ( 394 ), 395 ), 396 'GravityOps\\Core\\SuiteCore\\SuiteCore' => 397 array ( 398 'type' => 'class', 399 'classname' => 'SuiteCore', 400 'isabstract' => false, 401 'namespace' => 'GravityOps\\Core\\SuiteCore', 402 'extends' => 'IAWGF\\GravityOps\\Core\\SuiteCore\\SuiteCore', 388 403 'implements' => 389 404 array ( -
integrate-asana-with-gravity-forms/trunk/vendor/composer/autoload_real.php
r3451305 r3464233 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d55 class ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit c04228858cdd17dea362251fa382d6d5', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInitb00a5d9582cdfedfa6ea11676daebf9d', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit c04228858cdd17dea362251fa382d6d5::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $filesToLoad = \Composer\Autoload\ComposerStaticInit c04228858cdd17dea362251fa382d6d5::$files;36 $filesToLoad = \Composer\Autoload\ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::$files; 37 37 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 38 38 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
integrate-asana-with-gravity-forms/trunk/vendor/composer/autoload_static.php
r3451305 r3464233 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit c04228858cdd17dea362251fa382d6d57 class ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d 8 8 { 9 9 public static $files = array ( … … 18 18 { 19 19 return \Closure::bind(function () use ($loader) { 20 $loader->classMap = ComposerStaticInit c04228858cdd17dea362251fa382d6d5::$classMap;20 $loader->classMap = ComposerStaticInitb00a5d9582cdfedfa6ea11676daebf9d::$classMap; 21 21 22 22 }, null, ClassLoader::class); -
integrate-asana-with-gravity-forms/trunk/vendor/composer/installed.json
r3451305 r3464233 105 105 { 106 106 "name": "gravityops/core", 107 "version": " 1.1.0",108 "version_normalized": " 1.1.0.0",107 "version": "2.0.1", 108 "version_normalized": "2.0.1.0", 109 109 "source": { 110 110 "type": "git", 111 111 "url": "git@github.com:BrightLeaf-Digital/gravityops.git", 112 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e"113 }, 114 "dist": { 115 "type": "zip", 116 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/ cee27f55738670dc141b58af37d0feb74d4ce47e",117 "reference": " cee27f55738670dc141b58af37d0feb74d4ce47e",112 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2" 113 }, 114 "dist": { 115 "type": "zip", 116 "url": "https://api.github.com/repos/BrightLeaf-Digital/gravityops/zipball/2535a2a105334f0bac61b112d8707ba9bc6e18b2", 117 "reference": "2535a2a105334f0bac61b112d8707ba9bc6e18b2", 118 118 "shasum": "" 119 119 }, … … 122 122 "trustedlogin/client": "^v1.9" 123 123 }, 124 "time": "2026-0 1-21T19:42:14+00:00",124 "time": "2026-02-18T09:47:24+00:00", 125 125 "type": "library", 126 126 "installation-source": "source", … … 717 717 { 718 718 "name": "symfony/deprecation-contracts", 719 "version": "v3. 6.0",720 "version_normalized": "3. 6.0.0",719 "version": "v3.0.2", 720 "version_normalized": "3.0.2.0", 721 721 "source": { 722 722 "type": "git", 723 723 "url": "https://github.com/symfony/deprecation-contracts.git", 724 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62"725 }, 726 "dist": { 727 "type": "zip", 728 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/ 63afe740e99a13ba87ec199bb07bbdee937a5b62",729 "reference": " 63afe740e99a13ba87ec199bb07bbdee937a5b62",730 "shasum": "" 731 }, 732 "require": { 733 "php": ">=8. 1"734 }, 735 "time": "202 4-09-25T14:21:43+00:00",724 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" 725 }, 726 "dist": { 727 "type": "zip", 728 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 729 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", 730 "shasum": "" 731 }, 732 "require": { 733 "php": ">=8.0.2" 734 }, 735 "time": "2022-01-02T09:55:41+00:00", 736 736 "type": "library", 737 737 "extra": { … … 741 741 }, 742 742 "branch-alias": { 743 "dev-main": "3. 6-dev"743 "dev-main": "3.0-dev" 744 744 } 745 745 }, … … 763 763 "homepage": "https://symfony.com", 764 764 "support": { 765 "source": "https://github.com/symfony/deprecation-contracts/tree/v3. 6.0"765 "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" 766 766 }, 767 767 "funding": [ -
integrate-asana-with-gravity-forms/trunk/vendor/composer/installed.php
r3451305 r3464233 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',6 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 23 23 'pretty_version' => 'dev-main', 24 24 'version' => 'dev-main', 25 'reference' => ' d47e4e9f5c37121dd1b206ae16bd629dfbd7a709',25 'reference' => 'bf7d1a994d6e90d3b3f68d8469d1a1435f26023c', 26 26 'type' => 'library', 27 27 'install_path' => __DIR__ . '/../../', … … 39 39 ), 40 40 'gravityops/core' => array( 41 'pretty_version' => ' 1.1.0',42 'version' => ' 1.1.0.0',43 'reference' => ' cee27f55738670dc141b58af37d0feb74d4ce47e',41 'pretty_version' => '2.0.1', 42 'version' => '2.0.1.0', 43 'reference' => '2535a2a105334f0bac61b112d8707ba9bc6e18b2', 44 44 'type' => 'library', 45 45 'install_path' => __DIR__ . '/../gravityops/core', … … 138 138 ), 139 139 'symfony/deprecation-contracts' => array( 140 'pretty_version' => 'v3. 6.0',141 'version' => '3. 6.0.0',142 'reference' => ' 63afe740e99a13ba87ec199bb07bbdee937a5b62',140 'pretty_version' => 'v3.0.2', 141 'version' => '3.0.2.0', 142 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c', 143 143 'type' => 'library', 144 144 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', -
integrate-asana-with-gravity-forms/trunk/vendor/composer/platform_check.php
r3451305 r3464233 20 20 } 21 21 } 22 trigger_error( 23 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 E_USER_ERROR 22 throw new \RuntimeException( 23 'Composer detected issues in your platform: ' . implode(' ', $issues) 25 24 ); 26 25 }
Note: See TracChangeset
for help on using the changeset viewer.