Warning: chmod(): Operation not permitted in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [0] in function chmod in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [1] in function include_once in /var/www/hopeinstoughton_www/wp-settings.php on line 560 [2] in function require_once in /var/www/hopeinstoughton_www/wp-config.php on line 85 [3] in function require_once in /var/www/hopeinstoughton_www/wp-load.php on line 50 [4] in function require_once in /var/www/hopeinstoughton_www/wp-blog-header.php on line 13 [5] in function require in /var/www/hopeinstoughton_www/index.php on line 17
| Server IP : 94.177.8.99 / Your IP : 216.73.217.165 Web Server : Apache/2.4.58 (Ubuntu) System : Linux aries 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/patientapps_support/modules/contextMenu/ |
Upload File : |
<?php
namespace modules\contextMenu;
// https://swisnl.github.io/jQuery-contextMenu/demo/async-promise.html
class main extends \moduleMain {
private $active = FALSE;
public function __construct() {
parent::__construct(__DIR__);
}
public function Activate() {
hook_add('component.add', [$this, '__component']);
hook_add('html.prepare', [$this, '__html_prepare']);
}
public function __component(&$status, $requested) {
if ($requested == 'contextMenu') {
$this->active = TRUE;
$status = TRUE;
}
}
public function __html_prepare($modulemain) {
$base = $modulemain->StaticUriModule(__DIR__);
$id = $modulemain->IncludeFile($base . '/jquery.contextMenu.min.css');
$css = <<<BLOCK
BLOCK;
// $id->AddCSS($css);
$modulemain->IncludeFile($base . '/jquery.ui.position.min.js')
->library('jquery-ui-position')
->depends('jquery-ui');
$id = $modulemain->IncludeFile($base . '/jquery.contextMenu.min.js');
// $id = $modulemain->IncludeFile($base . '/jquery.contextMenu.js');
$javascript = <<<'BLOCK'
function _getData($target) {
var $k = $target.closest('li.jstree-node');
var temp = $k.data('data');
if (typeof temp != 'undefined') return temp;
temp = $target[0];
return temp.id;
}
var subItems;
function _attachContextMenu(selector) {
$.contextMenu({
selector: selector,
trigger: 'none',
reposition: false,
build: function ($trigger, e) {
return {
callback: function (key, options) {
if (typeof subItems[key] != 'undefined') {
if (subItems[key].href) {
// do our special ajax to perform the selected popup item
var className = subItems[key].className || '';
className = ' ' + className + ' ';
if (className.indexOf(' json ') > -1) {
main.loadURL(subItems[key].href);
} else if (className.indexOf(' ajax ') > -1) {
history.pushState(null, null, subItems[key].href);
main.loadURL(subItems[key].href);
} else {
window.location.href = subItems[key].href;
}
}
}
},
items: subItems,
};
}
});
}
function loadContextMenus(parent) {
var $context = $('.contextMenu', parent);
if ($context.length) {
_attachContextMenu('.contextMenu');
}
}
$(document).on('loaded.template', function() {
loadContextMenus($(document));
}).on('mouseup', '.contextMenu', function(e) {
if (e.which != 3) return;
var $context = $(this);
var $target = $(e.target);
if ($context.attr('src') !== undefined) { // only when src attr present
var param = $context.attr('src') + '?src=' + _getData($target);
let id = this.id;
_attachContextMenu('#' + id);
$.getJSON( param, function( data ) {
subItems = data;
$context.contextMenu({x: e.pageX, y: e.pageY + 10});
});
e.preventDefault();
}
}).on('contextmenu', function(e) {
var $target = $(e.target);
var x = $target.closest('.contextMenu');
if (x.length) {
return false; // disable browser context
}
}).on('loaded.datatables', function(event, table) {
loadContextMenus($(table));
});
BLOCK;
/* subItems = {
"edit": { name: "Edit", icon: "edit" },
"cut": { name: "Cut", icon: "cut" },
"status": {
name: "Status",
icon: "delete",
items: {
"sub1": { name: "Submenu1", icon: "edit" },
"sub2": { name: "Submenu2", icon: "cut" },
},
},
"normalSub": {
name: "Normal Sub",
items: {
"normalsub1": { name: "normal Sub 1"},
"normalsub2": { name: "normal Sub 2"},
"normalsub3": { name: "normal Sub 3"},
}
}
}
*/
$id->JavascriptCommand($javascript)->depends('jquery-ui-position');
}
}