123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- (function ($) {
- /**
- * Attaches double-click behavior to toggle full path of Krumo elements.
- */
- Drupal.behaviors.devel = {
- attach: function (context, settings) {
- // Add hint to footnote
- $('.krumo-footnote .krumo-call').once().before('<img style="vertical-align: middle;" title="Click to expand. Double-click to show path." src="' + settings.basePath + 'misc/help.png"/>');
- var krumo_name = [];
- var krumo_type = [];
- function krumo_traverse(el) {
- krumo_name.push($(el).html());
- krumo_type.push($(el).siblings('em').html().match(/\w*/)[0]);
- if ($(el).closest('.krumo-nest').length > 0) {
- krumo_traverse($(el).closest('.krumo-nest').prev().find('.krumo-name'));
- }
- }
- $('.krumo-child > div:first-child', context).dblclick(
- function(e) {
- if ($(this).find('> .krumo-php-path').length > 0) {
- // Remove path if shown.
- $(this).find('> .krumo-php-path').remove();
- }
- else {
- // Get elements.
- krumo_traverse($(this).find('> a.krumo-name'));
- // Create path.
- var krumo_path_string = '';
- for (var i = krumo_name.length - 1; i >= 0; --i) {
- // Start element.
- if ((krumo_name.length - 1) == i)
- krumo_path_string += '$' + krumo_name[i];
- if (typeof krumo_name[(i-1)] !== 'undefined') {
- if (krumo_type[i] == 'Array') {
- krumo_path_string += "[";
- if (!/^\d*$/.test(krumo_name[(i-1)]))
- krumo_path_string += "'";
- krumo_path_string += krumo_name[(i-1)];
- if (!/^\d*$/.test(krumo_name[(i-1)]))
- krumo_path_string += "'";
- krumo_path_string += "]";
- }
- if (krumo_type[i] == 'Object')
- krumo_path_string += '->' + krumo_name[(i-1)];
- }
- }
- $(this).append('<div class="krumo-php-path" style="font-family: Courier, monospace; font-weight: bold;">' + krumo_path_string + '</div>');
- // Reset arrays.
- krumo_name = [];
- krumo_type = [];
- }
- }
- );
- }
- };
- })(jQuery);
|