| @@ -1,8 +1,10 @@ | ||
| 1 | 1 | <?php |
| 2 | +defined('ABSPATH') || die('Restricted Access'); | |
| 2 | 3 | |
| 3 | -function acym_getView(string $ctrl, string $view, bool $forceBackend = false) | |
| 4 | +function acym_getView(string $ctrl, string $view, bool $forceBackend = false): string | |
| 4 | 5 | { |
| 6 | + // Handle page override | |
| 5 | 7 | $override = acym_getPageOverride($ctrl, $view, $forceBackend); |
| 6 | 8 | |
| 7 | 9 | if (file_exists($override)) { |
| 8 | 10 | return $override; |
| @@ -12,23 +14,23 @@ | ||
| 12 | 14 | return $viewsFolder.ucfirst($ctrl).DS.'tmpl'.DS.$view.'.php'; |
| 13 | 15 | } |
| 14 | 16 | } |
| 15 | 17 | |
| 16 | -function acym_getPartial($family, $view) | |
| 18 | +function acym_getPartial(string $family, string $view): string | |
| 17 | 19 | { |
| 18 | 20 | return ACYM_PARTIAL.$family.DS.$view.'.php'; |
| 19 | 21 | } |
| 20 | 22 | |
| 21 | -function acym_loadAssets($ctrl, $task) | |
| 23 | +function acym_loadAssets(string $ctrl, string $task): void | |
| 22 | 24 | { |
| 23 | 25 | $scope = acym_isAdmin() ? 'back' : 'front'; |
| 24 | 26 | acym_loadCmsScripts(); |
| 27 | + $config = acym_config(); | |
| 25 | 28 | |
| 29 | + // Include JS | |
| 26 | 30 | acym_addScript( |
| 27 | 31 | true, |
| 28 | - 'const ACYM_AVAILABLE_PLUGINS = "'.str_replace('"', '\"', ACYM_AVAILABLE_PLUGINS).'"; | |
| 29 | - const ACYM_UPDATEME_API_URL = "'.ACYM_UPDATEME_API_URL.'"; | |
| 30 | - const AJAX_URL_ACYMAILING = "'.ACYM_ACYMAILING_WEBSITE.'"; | |
| 32 | + 'const ACYM_UPDATEME_API_URL = "'.ACYM_UPDATEME_API_URL.'"; | |
| 31 | 33 | const ACYM_MEDIA_URL = "'.ACYM_MEDIA_URL.'"; |
| 32 | 34 | const ACYM_CMS = "'.addslashes(ACYM_CMS).'"; |
| 33 | 35 | const ACYM_J40 = '.(defined('ACYM_J40') && ACYM_J40 ? 'true' : 'false').'; |
| 34 | 36 | const FOUNDATION_FOR_EMAIL = "'.ACYM_CSS.'libraries/foundation_email.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'libraries'.DS.'foundation_email.min.css').'"; |
| @@ -39,9 +41,10 @@ | ||
| 39 | 41 | const ACYM_PLUGINS_URL = "'.addslashes(ACYM_PLUGINS_URL).'"; |
| 40 | 42 | const ACYM_ROOT_URI = "'.acym_rootURI().'"; |
| 41 | 43 | const ACYM_CONTROLLER = "'.addslashes($ctrl).'"; |
| 42 | 44 | const ACYM_TASK = "'.addslashes($task).'"; |
| 43 | - const ACYM_SOCIAL_MEDIA = "'.addslashes(ACYM_SOCIAL_MEDIA).'";' | |
| 45 | + const ACYM_SOCIAL_MEDIA = "'.addslashes(ACYM_SOCIAL_MEDIA).'"; | |
| 46 | + const ACYM_LEVEL = "'.addslashes($config->get('level', '')).'";' | |
| 44 | 47 | ); |
| 45 | 48 | |
| 46 | 49 | acym_addScript(false, ACYM_JS.'helpers.min.js?v='.filemtime(ACYM_MEDIA.'js'.DS.'helpers.min.js')); |
| 47 | 50 | |
| @@ -68,8 +71,9 @@ | ||
| 68 | 71 | if (file_exists(ACYM_MEDIA.'js'.DS.$scope.DS.$ctrl.DS.$task.'.min.js')) { |
| 69 | 72 | acym_addScript(false, ACYM_JS.$scope.'/'.$ctrl.'/'.$task.'.min.js?v='.filemtime(ACYM_MEDIA.'js'.DS.$scope.DS.$ctrl.DS.$task.'.min.js')); |
| 70 | 73 | } |
| 71 | 74 | |
| 75 | + // Include CSS | |
| 72 | 76 | acym_addStyle(false, ACYM_CSS.'global.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'global.min.css')); |
| 73 | 77 | |
| 74 | 78 | if (!acym_isExcludedFrontView($ctrl, $task)) { |
| 75 | 79 | acym_addStyle(false, ACYM_CSS.$scope.'_global.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.$scope.'_global.min.css')); |
| @@ -79,11 +83,14 @@ | ||
| 79 | 83 | acym_addStyle(false, ACYM_CSS.$scope.'/'.$ctrl.'.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.$scope.DS.$ctrl.'.min.css')); |
| 80 | 84 | } |
| 81 | 85 | } |
| 82 | 86 | |
| 83 | -function acym_getJSMessages() | |
| 87 | +/** | |
| 88 | + * Get translated error message for JS form validation | |
| 89 | + */ | |
| 90 | +function acym_getJSMessages(): string | |
| 84 | 91 | { |
| 85 | - $msg = "{"; | |
| 92 | + $msg = '{'; | |
| 86 | 93 | $msg .= '"email": "'.acym_translation('ACYM_VALID_EMAIL', true).'",'; |
| 87 | 94 | $msg .= '"number": "'.acym_translation('ACYM_VALID_NUMBER', true).'",'; |
| 88 | 95 | $msg .= '"requiredMsg": "'.acym_translation('ACYM_REQUIRED_FIELD', true).'",'; |
| 89 | 96 | $msg .= '"defaultMsg": "'.acym_translation('ACYM_DEFAULT_VALIDATION_ERROR', true).'"'; |
| @@ -332,8 +339,11 @@ | ||
| 332 | 339 | 'ACYM_TEXT_MODE', |
| 333 | 340 | 'ACYM_TERMS_POLICY_OPTIONS', |
| 334 | 341 | 'ACYM_TERMS_CONDITIONS', |
| 335 | 342 | 'ACYM_PRIVACY_POLICY', |
| 343 | + 'ACYM_TERMS_CONDITIONS_URL', | |
| 344 | + 'ACYM_PRIVACY_POLICY_URL', | |
| 345 | + 'ACYM_DISPLAY_TRACKING_CONSENT', | |
| 336 | 346 | 'ACYM_SUBSCRIBE_OPTIONS', |
| 337 | 347 | 'ACYM_SUCCESS_MODE', |
| 338 | 348 | 'ACYM_CONFIRMATION_MESSAGE', |
| 339 | 349 | 'ACYM_UNSUBSCRIBE_OPTIONS', |
| @@ -395,9 +405,9 @@ | ||
| 395 | 405 | 'ACYM_UNSPLASH_KEY_NEEDED', |
| 396 | 406 | 'ACYM_GET_ONE_HERE', |
| 397 | 407 | 'ACYM_ENTITY', |
| 398 | 408 | 'ACYM_DELETE_DOMAIN_CONFIRMATION', |
| 399 | - 'ACYM_TENOR_KEY_NEEDED', | |
| 409 | + 'ACYM_GIPHY_KEY_NEEDED', | |
| 400 | 410 | 'ACYM_COPY_CODE', |
| 401 | 411 | 'ACYM_SCENARIO_ARE_YOU_SURE_DELETE_X', |
| 402 | 412 | 'ACYM_DELAY', |
| 403 | 413 | 'ACYM_CONDITION', |
| @@ -414,8 +424,13 @@ | ||
| 414 | 424 | 'ACYM_SETTINGS', |
| 415 | 425 | 'ACYM_SCENARIO_ARE_YOU_SURE_DELETE_X_WITH_CHILDREN_NODES', |
| 416 | 426 | 'ACYM_SCENARIO', |
| 417 | 427 | 'ACYM_SCENARIOS', |
| 428 | + 'ACYM_EXTRA_INFORMATION', | |
| 429 | + 'ACYM_SELECT_A_PAGE', | |
| 430 | + 'ACYM_DEDICATED_SENDING_PROCESS_WARNING', | |
| 431 | + 'ACYM_GET_MY_API_KEY', | |
| 432 | + 'ACYM_DOMAIN_UNDER_REVIEW', | |
| 418 | 433 | ]; |
| 419 | 434 | |
| 420 | 435 | foreach ($keysToLoad as $oneKey) { |
| 421 | 436 | $msg .= ',"'.$oneKey.'": "'.acym_translation($oneKey, true).'"'; |
| @@ -420,22 +435,27 @@ | ||
| 420 | 435 | foreach ($keysToLoad as $oneKey) { |
| 421 | 436 | $msg .= ',"'.$oneKey.'": "'.acym_translation($oneKey, true).'"'; |
| 422 | 437 | } |
| 423 | 438 | |
| 424 | - $msg .= "}"; | |
| 439 | + $msg .= '}'; | |
| 425 | 440 | |
| 426 | 441 | return $msg; |
| 427 | 442 | } |
| 428 | 443 | |
| 429 | -function acym_isExcludedFrontView($ctrl, $task) | |
| 444 | +function acym_isExcludedFrontView(string $ctrl, string $task): bool | |
| 430 | 445 | { |
| 431 | - if ('archive' === $ctrl && in_array($task, ['view'])) return true; | |
| 432 | - if ('frontusers' === $ctrl && 'profile' === $task) return true; | |
| 446 | + if ('archive' === $ctrl && $task === 'view') { | |
| 447 | + return true; | |
| 448 | + } | |
| 433 | 449 | |
| 450 | + if ('frontusers' === $ctrl && 'profile' === $task) { | |
| 451 | + return true; | |
| 452 | + } | |
| 453 | + | |
| 434 | 454 | return false; |
| 435 | 455 | } |
| 436 | 456 | |
| 437 | -function acym_listingActions($actions, $deleteMessage = '', $ctrl = '') | |
| 457 | +function acym_listingActions(array $actions, string $deleteMessage = '', string $ctrl = ''): void | |
| 438 | 458 | { |
| 439 | 459 | $defaultAction = new stdClass(); |
| 440 | 460 | $defaultAction->value = 0; |
| 441 | 461 | $defaultAction->text = acym_translation('ACYM_CHOOSE_ACTION'); |
| @@ -442,9 +462,8 @@ | ||
| 442 | 462 | $defaultAction->disable = true; |
| 443 | 463 | |
| 444 | 464 | array_unshift($actions, $defaultAction); |
| 445 | 465 | |
| 446 | - $completeMessage = '<input id="acym__listing__action__delete-message" value="'.(empty($deleteMessage) ? '' : acym_escape($deleteMessage)).'" type="hidden">'; | |
| 447 | 466 | |
| 448 | 467 | $attributes = [ |
| 449 | 468 | 'class' => 'medium-shrink cell margin-right-1', |
| 450 | 469 | ]; |
| @@ -449,32 +468,38 @@ | ||
| 449 | 468 | 'class' => 'medium-shrink cell margin-right-1', |
| 450 | 469 | ]; |
| 451 | 470 | if (!empty($ctrl)) { |
| 452 | 471 | $attributes['data-ctrl'] = $ctrl; |
| 453 | - $completeMessage .= ' <input type="hidden" name="return_listing">'; | |
| 454 | 472 | } |
| 455 | 473 | |
| 456 | - return acym_select( | |
| 457 | - $actions, | |
| 458 | - '', | |
| 459 | - 0, | |
| 460 | - $attributes, | |
| 461 | - 'value', | |
| 462 | - 'text', | |
| 463 | - 'listing_actions' | |
| 464 | - ).$completeMessage; | |
| 474 | + acym_select( | |
| 475 | + $actions, | |
| 476 | + '', | |
| 477 | + 0, | |
| 478 | + $attributes, | |
| 479 | + 'value', | |
| 480 | + 'text', | |
| 481 | + 'listing_actions', | |
| 482 | + false, | |
| 483 | + true | |
| 484 | + ); | |
| 485 | + | |
| 486 | + echo '<input id="acym__listing__action__delete-message" value="'.esc_attr(empty($deleteMessage) ? '' : $deleteMessage).'" type="hidden">'; | |
| 487 | + if (!empty($ctrl)) { | |
| 488 | + echo ' <input type="hidden" name="return_listing">'; | |
| 489 | + } | |
| 465 | 490 | } |
| 466 | 491 | |
| 467 | -function acym_backToListing($listingName = null): string | |
| 492 | +function acym_backToListing(?string $listingName = null): void | |
| 468 | 493 | { |
| 469 | 494 | if (empty($listingName)) { |
| 470 | 495 | $listingName = acym_getVar('cmd', 'ctrl'); |
| 471 | 496 | } |
| 497 | + ?> | |
| 472 | 498 | |
| 473 | - $returnLink = '<p class="acym__back_to_listing">'; | |
| 474 | - $returnLink .= '<a href="'.acym_completeLink($listingName).'" class="acym_vcenter">'; | |
| 475 | - $returnLink .= '<i class="acymicon-chevron-left"></i> '.acym_translation('ACYM_BACK_TO_LISTING'); | |
| 476 | - $returnLink .= '</a>'; | |
| 477 | - $returnLink .= '</p>'; | |
| 478 | - | |
| 479 | - return $returnLink; | |
| 499 | + <p class="acym__back_to_listing"> | |
| 500 | + <a href="<?php echo esc_url(acym_completeLink($listingName)); ?>" class="acym_vcenter"> | |
| 501 | + <i class="acymicon-chevron-left"></i> <?php echo esc_html(acym_translation('ACYM_BACK_TO_LISTING')); ?> | |
| 502 | + </a> | |
| 503 | + </p> | |
| 504 | + <?php | |
| 480 | 505 | } |