📁
SKYSHELL MANAGER
PHP v8.2.30
Create
Create
Path:
root
/
home
/
qooetu
/
costes.qooetu.com
/
Name
Size
Perm
Actions
📁
.well-known
-
0755
🗑️
🏷️
🔒
📁
2e19d9
-
0755
🗑️
🏷️
🔒
📁
6b114
-
0755
🗑️
🏷️
🔒
📁
Modules
-
0755
🗑️
🏷️
🔒
📁
app
-
0755
🗑️
🏷️
🔒
📁
assets
-
0755
🗑️
🏷️
🔒
📁
bootstrap
-
0755
🗑️
🏷️
🔒
📁
cgi-bin
-
0755
🗑️
🏷️
🔒
📁
config
-
0755
🗑️
🏷️
🔒
📁
css
-
0755
🗑️
🏷️
🔒
📁
database
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
nbproject
-
0755
🗑️
🏷️
🔒
📁
public
-
0755
🗑️
🏷️
🔒
📁
resources
-
0755
🗑️
🏷️
🔒
📁
routes
-
0755
🗑️
🏷️
🔒
📁
storage
-
0755
🗑️
🏷️
🔒
📁
tests
-
0755
🗑️
🏷️
🔒
📁
uploads
-
0755
🗑️
🏷️
🔒
📁
vendor
-
0755
🗑️
🏷️
🔒
📁
wp-admin
-
0755
🗑️
🏷️
🔒
📁
wp-content
-
0755
🗑️
🏷️
🔒
📁
wp-includes
-
0755
🗑️
🏷️
🔒
📄
.htaccess
0.23 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
COOKIE.txt
0.2 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
X7ROOT.txt
0.27 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
defaults.php
1.29 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
engine.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
error_log
813.08 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
features.php
11.28 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
googlecfb82e09419fc0f6.html
0.05 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php0
1.56 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
inputs.php
0.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
kurd.html
1.07 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
library.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
min.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
p.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
php.ini
0.04 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
product.php
1.78 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
qpmwztts.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
robots.txt
0.32 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
tovmbkwh.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
tyyffovi.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
veoxv.html
1.23 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
Edit: actionButtonDirective.js
/* # cjt/directives/actionButtonDirective.js Copyright 2022 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define( [ "angular", "cjt/core", "cjt/util/test", "cjt/directives/spinnerDirective", "cjt/templates" // NOTE: Pre-load the template cache ], function(angular, CJT, TEST) { "use strict"; // Retrieve the application object var module = angular.module("cjt2.directives.actionButton", [ "cjt2.templates", "cjt2.directives.spinner" ]); /** * Directive that produces a button with an embedded spinner. The spinner starts and the button is * disabled when the button is clicked. Once the action is done processing, the button is enabled * and the spinner is stopped and hidden. * * @attribute {Function|Promise} cp-action The function call to make after starting the spinner. If a Promise, then handled async, if a function then handled sync. * @attribute {String} [spinnerId] Optional id for the spinner. You only need to set this is you want to * have control of the spinner independently of the built in behavior. * * @example * * Basic usage: * <button cp-action="takeAction"> * * Providing a custom spinner id: * <button spinner-id="ActionButton" action="takeAction"> * * Synchronous Action: * * For a synchronous action, the action should be a function that performs some long running * task. Once the function returns, the spinner will stop. Note that we pass the function in the * markup here * * <button cp-action="takeAction"> * * $scope.takeAction = function() { * // do something long sync process * } * * Synchronous Action with Parameter: * * For a synchronous action that needs to pass a parameter, the action should be a function that returns a function that * performs some long running task. Once the function returns, the spinner will stop. Note that we pass the function in the * markup here * * <button cp-action="takeAction($index)"> * * $scope.takeAction = function($index) { * return function() { * // do something long sync process * // use the $index somehow * } * } * * Asynchronous Action: * * For a asynchronous action, the action function should be a function that starts an asynchronous * task and returns a promise. Once the promise resolves or is rejected, the spinner will stop. Note * that we call the function in the markup here. * * <button cp-action="takeAction()"> * * $scope.takeAction = function() { * var deferred = $q.defer(); * $timeout(function() { * deferred.resolve(); * }, 1000); * return deferred.promise; * } * * Classes: * * Because this directive uses replacement, using class attributes on the original element don't always get passed to the * resulting button the way you'd expect. For this reason, you should use the button-class and button-ng-class attributes * to style the final button. The "btn" class is always included by default. If you don't provide any button-class or * button-ng-class attributes then the default classes of "btn btn-primary" will be applied. The button-ng-classes * attribute will be evaluated against the parent scope so it's pretty flexible. * * "btn btn-primary" * <button cp-action="doSomething()"> * * "btn btn-warning" * <button cp-action="doSomething()" button-class="btn-warning"> * * "btn btn-warning" if isWarning * "btn btn-danger" if isError * <button cp-action="doSomething()" button-ng-class="{ 'btn-warning' : isWarning, 'btn-danger' : isError }"> * * "btn" and whatever classes are provided by getButtonClasses on the parent scope * <button cp-action="doSomething()" button-ng-class="getButtonClasses()"> */ module.directive("cpAction", ["spinnerAPI", "$log", function(spinnerAPI, $log) { var ctr = 0; var DEFAULT_AUTO_DISABLE = true; var DEFAULT_CONTROL_NAME = "actionButton"; var DEFAULT_BUTTON_CLASS = "btn-primary"; var RELATIVE_PATH = "libraries/cjt2/directives/actionButton.phtml"; return { templateUrl: CJT.config.debug ? CJT.buildFullPath(RELATIVE_PATH) : RELATIVE_PATH, restrict: "A", transclude: true, replace: true, priority: 10, scope: { // spinnerId: "@spinnerId", // REMOVED: Due to an issue with auto one way binding, seems that if you want defaults to work // with nested controls, you must set the scope in the pre() method, but if you use the // isolated scope @, you can't set the default right. Its missing during the critical // phase when the nested controls need it. buttonClass: "@buttonClass", buttonNgClass: "&", action: "&cpAction", autoDisable: "@?autoDisable", actionActive: "@?", }, /* eslint-disable no-unused-vars */ compile: function(element, attrs) { /* eslint-enable no-unused-vars */ return { /* eslint-disable no-unused-vars */ pre: function(scope, element, attrs) { if (attrs.ngBind) { $log.error("ngBind is not supported on this directive. It causes the spinner to stop working"); } // Set the defaults var id = angular.isDefined(attrs.id) && attrs.id !== "" ? attrs.id : DEFAULT_CONTROL_NAME + ctr++; attrs.spinnerId = angular.isDefined(attrs.spinnerId) && attrs.spinnerId !== "" ? attrs.spinnerId : id + "_Spinner"; if (!angular.isDefined(attrs.buttonNgClass)) { attrs.buttonClass = angular.isDefined(attrs.buttonClass) && attrs.buttonClass !== "" ? attrs.buttonClass : DEFAULT_BUTTON_CLASS; } // remember, autoDisable is a string because of the "@" isolate scope property // we need to convert it to a proper boolean var tmpAutoDisable = attrs.autoDisable; attrs.autoDisable = DEFAULT_AUTO_DISABLE; if (angular.isDefined(tmpAutoDisable)) { if (tmpAutoDisable === "false") { attrs.autoDisable = false; } else if (tmpAutoDisable === "true") { attrs.autoDisable = true; } } // Capture the id so the template can use it. scope.spinnerId = attrs.spinnerId; scope.autoDisable = attrs.autoDisable; }, /* eslint-enable no-unused-vars */ post: function(scope, element, attrs) { scope.running = false; /** * Stop the spinner and enable the button again. * @method finish * @private */ var finish = function() { if (scope.autoDisable) { element.prop("disabled", false); } scope.running = false; spinnerAPI.stop(scope.spinnerId, false); }; /** * Starts the action specified by the method property * @protected */ scope.start = function() { _start(); var action = scope.action(); if (TEST.isQPromise(action)) { // Async action.finally(finish); } else { // Sync finish(); } }; function _start() { if (scope.autoDisable) { element.prop("disabled", true); } spinnerAPI.start(scope.spinnerId); scope.running = true; } /** * Combines the button-ng-class values with a default ng-class object that handles the * loading/process font icon. The ng-class directive will evaluate each item in the array * separately, so mixed formats (string, object, or array) are fine. * * @method ngClass * @return {Array} An array that will be consumed by the ng-class directive. */ scope.ngClass = function() { var finalNgClass = [{ "button-loading": scope.running }]; var buttonNgClass = scope.buttonNgClass(); if (buttonNgClass) { if (angular.isArray(buttonNgClass)) { finalNgClass = finalNgClass.concat(buttonNgClass); } else { finalNgClass.push(buttonNgClass); } } return finalNgClass; }; /** * Allows the directive to change states based on a boolean, useful if your page is perfoming an action prior to, or after the button click. */ attrs.$observe("actionActive", function(newVal) { scope.actionActive = attrs.actionActive = (newVal === "true"); if (attrs.actionActive) { _start(); } else { finish(); } }); } }; } }; }]); } );
Save