403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/burlakastudio.realcommenter/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/burlakastudio.realcommenter/talk_admin_tools.js
'use strict';

/**
 * Модуль "Полноценные комментарии 2.0" под Битрикс
 * Официальный сайт модуля: www.realcommenter.com
 * Официальный сайт разработчика: burlaka.studio
 * Автор и разработчик: Алексей Бурлака (AlexeyGfi) -> alexeygfi@gmail.com
 */

function realcommenter_admintools_scan_and_init () {

  /**
   * Ищем все не проинициализиваронные формы
   */
  let admin_tools = document.querySelectorAll(
    realcommenter_get_selector('tree')
    + ' ' + realcommenter_get_selector('admin_tools')
    + ':not([data-inited])');

  admin_tools.forEach(function (item) {

    let switch_obj = item.querySelector('ins');
    if (!switch_obj) {
      return;
    }

    switch_obj.addEventListener('click', realcommenter_admintools_switch_cpu.bind(switch_obj, item));
    item.setAttribute('data-inited', '1');

  });
}

window.addEventListener('load', realcommenter_admintools_scan_and_init);
document.addEventListener('tree_updated', realcommenter_admintools_scan_and_init);

function realcommenter_admintools_switch_cpu (container_obj) {
  //this - кнопка

  if (!this || !container_obj) {
    return;
  }

  /**
   * Если внутри есть уже сгенерённая выпадалка с инструментами - пинаем её открытие
   * ...иначе запрашиваем, инициализируем и только после этого открываем
   */

  let tools_list = container_obj.querySelector(realcommenter_get_selector('admin_fly_cloud'));

  if (tools_list) {
    realcommenter_admintools_switch_show.bind(tools_list, container_obj)();
  } else {

    /**
     * Если шаблон уже прочитан, не нужно его перечитывать
     */
    realcommenter_admintools_pull.bind(this, container_obj)();
  }

}

function realcommenter_admintools_pull (container_obj) {

  // this - кнопка

  let parent_comment = realcommenter_get_closest_comment(container_obj);
  if (!parent_comment) {
    return false;
  }

  let comment_id_matches = parent_comment.getAttribute('id');
  comment_id_matches = comment_id_matches.match(/[0-9]+/);

  if (!comment_id_matches) {
    return false;
  }

  let _data = {
    request_type: 'admin_tools',
    comment_id: comment_id_matches.shift()
  };

  realcommenter_ajaxion.bind(this, {
    url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
    onsuccess: realcommenter_admintools_recieved_template,
    data: _data
  })();
}

function realcommenter_admintools_recieved_template (result) {

  if (typeof result['ERROR'] !== 'undefined' && Object.keys(result['ERROR']).length) {
    console.log('ERROR');
    console.log(result);
    return;
  }

  if (result['ADMIN_TOOLS_TEMPLATE'] !== 'undefined' && result['ADMIN_TOOLS_TEMPLATE']) {

    realcommenter_admintools_switch_cpu['template'] = result['ADMIN_TOOLS_TEMPLATE'];

    if (!!typeof result['request']['comment_id']) {

      let parent_comment = document.querySelector(
        realcommenter_get_selector('comment_id')
        + result['request']['comment_id']
      );
      if (parent_comment) {
        realcommenter_admintools_append_toolbox.bind(parent_comment)();
      }

    }

  }

}

function realcommenter_admintools_append_toolbox () {

  // this - контейнер со всей веткой комментария

  if (
    typeof realcommenter_admintools_switch_cpu['template'] === 'undefined'
    || !realcommenter_admintools_switch_cpu['template']
  ) {
    return;
  }

  let admin_tool = this.querySelector('* > ' + realcommenter_get_selector('admin_tools'));

  if (!admin_tool) {
    return;
  }

  let bridge_obj = document.createElement('div');
  bridge_obj.style.display = 'none';
  bridge_obj.innerHTML = realcommenter_admintools_switch_cpu['template'];
  admin_tool.appendChild(bridge_obj);

  let tools_list = bridge_obj.querySelector(realcommenter_get_selector('admin_fly_cloud'));
  if (!tools_list) {
    return;
  }

  admin_tool.appendChild(tools_list);
  bridge_obj.parentNode.removeChild(bridge_obj);

  realcommenter_admintools_init_tools_list(admin_tool);

}

function realcommenter_admintools_init_tools_list (container_obj) {

  let _tools = container_obj.querySelectorAll('[data-action]');
  _tools.forEach(function (item) {
    let _action = item.getAttribute('data-action');
    item.addEventListener('click', realcommenter_admintools_action.bind(item, _action, container_obj));
  });

  realcommenter_admintools_switch_show(container_obj);

}

function realcommenter_admintools_action (action, container_obj) {
  //this - инструмент в admin_tools

  let parentComment, commentIdMatches;

  /**
   * Пункты могут иметь флаг того, что должны быть подтверждены.
   * Например, при удалении нужно убедиться, что это был не случайный клик
   */
  if (this.hasAttribute('data-confirmable')) {
    if (!this.hasAttribute('data-action-proof')) {
      this.setAttribute('data-action-proof', '1');
      return;
    }
  }

  switch (action) {
    case 'EDIT' :
      realcommenter_admintools_switch_show(container_obj);
      realcommenter_form_pull.bind(this)();
      break;

    case 'HIDE':
    case 'FREEZE':
    case 'ACTIVE':
    case 'DELETE':
      realcommenter_admintools_switch_show(container_obj);

      parentComment = realcommenter_get_closest_comment(this);
      if (!parentComment) {
        return false;
      }

      commentIdMatches = parentComment.getAttribute('id');
      commentIdMatches = commentIdMatches.match(/[0-9]+/);

      if (!commentIdMatches) {
        return false;
      }

      realcommenter_ajaxion.bind(this, {
        url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
        onsuccess: realcommenter_admintools_ajax_to_expand,
        data: {
          request_type: action,
          comment_id: commentIdMatches.shift(),
          reverse: +this.hasAttribute('data-reverse')
        }
      })();

      break;

    case 'UN_BAN':
    case 'SEND_TO_BAN':
    case 'INCREESE_WARNING':
      parentComment = realcommenter_get_closest_comment(this);
      if (!parentComment) {
        return false;
      }

      commentIdMatches = parentComment.getAttribute('id');
      commentIdMatches = commentIdMatches.match(/[0-9]+/);

      if (!commentIdMatches) {
        return false;
      }

      realcommenter_ajaxion.bind(this, {
        url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
        onsuccess: function (result) {
          if (result.ERROR && Object.keys(result.ERROR).length) {
            console.log('ERROR');
            console.log(result);
            return;
          }

          /**
           * ...например, была попытка применить санкции к модератору
           */
          if (!result.ACTION_RESULT) {
            realcommenter_admintools_switch_show(container_obj);
            return;
          }

          if (result.request && result.request.comment_id) {
            realcommenter_find_and_expand(result.request.comment_id);
          }
        },
        data: {
          request_type: action,
          // Нужно его передать, потому что мы собираемся перечитать узел
          comment_id: commentIdMatches.shift()
        }
      })();

      break;

    case 'APPROVE':
      parentComment = realcommenter_get_closest_comment(this);
      if (!parentComment) {
        return false;
      }

      commentIdMatches = parentComment.getAttribute('id');
      commentIdMatches = commentIdMatches.match(/[0-9]+/);

      if (!commentIdMatches) {
        return false;
      }

      realcommenter_ajaxion.bind(this, {
        url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
        onsuccess: function (result) {
          if (result.ERROR && Object.keys(result.ERROR).length) {
            console.log('ERROR');
            console.log(result);
            return;
          }

          /**
           * ...например, была попытка применить санкции к модератору
           */
          if (!result.ACTION_RESULT) {
            realcommenter_admintools_switch_show(container_obj);
            return;
          }

          if (result.request && result.request.comment_id) {
            realcommenter_find_and_expand(result.request.comment_id);
          }
        },
        data: {
          request_type: action,
          // Нужно его передать, потому что мы собираемся перечитать узел
          comment_id: commentIdMatches.shift()
        }
      })();

      break;

    case 'MORE_FROM':
      parentComment = realcommenter_get_closest_comment(this);
      if (!parentComment) {
        return false;
      }

      commentIdMatches = parentComment.getAttribute('id');
      commentIdMatches = commentIdMatches.match(/[0-9]+/);

      if (!commentIdMatches) {
        return false;
      }

      realcommenter_ajaxion.bind(this, {
        url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
        onsuccess: function (result) {
          if (result.ERROR && Object.keys(result.ERROR).length) {
            console.log('ERROR');
            console.log(result);
            return;
          }

          if (!result.LIST) {
            return;
          }

          // this - del in admin tools, clicked by
          let parentComment = realcommenter_get_closest_comment(this);
          if (!parentComment) {
            return false;
          }

          let commentIdMatches = parentComment.getAttribute('id');
          commentIdMatches = commentIdMatches.match(/[0-9]+/);

          if (!commentIdMatches) {
            return false;
          }

          realcommenter_admintools_switch_show(container_obj, false);

          let commentId = commentIdMatches.shift();
          if (result.request.comment_id !== commentId) {
            return;
          }

          let bridge_obj = document.createElement('div');
          bridge_obj.innerHTML = result.LIST;
          let readyObj = bridge_obj.children[0];
          let noDoubleCss = readyObj.className;

          // Clear old footsteps
          let oldInfo = parentComment.querySelectorAll('.' + noDoubleCss.replace(/\s/, '. '));
          oldInfo.forEach(old => {
            old.parentNode.removeChild(old);
          });

          let answerContainer = parentComment.querySelector('article');
          if (answerContainer) {
            answerContainer.parentNode.insertBefore(readyObj, answerContainer);
          }

          if (result.UPLOAD_ASSETS) {
            BX.load(result.UPLOAD_ASSETS, function (callback) {
              if (callback && window[callback]) {
                window[callback]();
              }
            }.bind(this, result.UPLOAD_CALLBACK));
          }

        }.bind(this),
        data: {
          request_type: action,
          comment_id: commentIdMatches.shift()
        }
      })();

      break;

    case 'REQUEST_INFO':
      parentComment = realcommenter_get_closest_comment(this);
      if (!parentComment) {
        return false;
      }

      commentIdMatches = parentComment.getAttribute('id');
      commentIdMatches = commentIdMatches.match(/[0-9]+/);

      if (!commentIdMatches) {
        return false;
      }

      realcommenter_ajaxion.bind(this, {
        url: '/bitrix/admin/burlakastudio.realcommenter.talk_tree.php',
        data: {
          request_type: action,
          comment_id: commentIdMatches.shift()
        },
        onsuccess: function (result) {
          if (result.ERROR && Object.keys(result.ERROR).length) {
            console.log('ERROR');
            console.log(result);
            return;
          }

          if (!result.INFO) {
            return;
          }

          let processorFunc = realcommenter_deploy_more_info.bind(this, result, container_obj);

          if (result.UPLOAD_ASSETS) {
            BX.load(result.UPLOAD_ASSETS, processorFunc);
          } else {
            processorFunc();
          }

        }.bind(this)
      })();

      break;

    default:
      console.log(action);
  }

}

function realcommenter_deploy_more_info (result, container_obj) {
  // this - node in admin tools, clicked by
  let parentComment = realcommenter_get_closest_comment(this);
  if (!parentComment) {
    return false;
  }

  let commentIdMatches = parentComment.getAttribute('id');
  commentIdMatches = commentIdMatches.match(/[0-9]+/);

  if (!commentIdMatches) {
    return false;
  }

  realcommenter_admintools_switch_show(container_obj, false);

  let commentId = commentIdMatches.shift();
  if (result.request.comment_id !== commentId) {
    return;
  }

  let bridge_obj = document.createElement('div');
  bridge_obj.innerHTML = result.INFO;
  let readyObj = bridge_obj.children[0];
  let noDoubleCss = readyObj.className;

  // Clear old footsteps
  let oldInfo = parentComment.querySelectorAll('.' + noDoubleCss.replace(/\s/, '. '));
  oldInfo.forEach(old => {
    old.parentNode.removeChild(old);
  });

  let answerContainer = parentComment.querySelector('article');
  if (answerContainer) {
    answerContainer.parentNode.insertBefore(readyObj, answerContainer);
  }

  if (result['UPLOAD_CALLBACK'] && window[result['UPLOAD_CALLBACK']]) {
    window[result['UPLOAD_CALLBACK']]();
  }
}

function realcommenter_admintools_ajax_to_expand (result) {

  if (typeof result['ERROR'] !== 'undefined' && Object.keys(result['ERROR']).length) {
    console.log('ERROR');
    console.log(result);
    return;
  }

  if (result['ACTION_RESULT'] !== 'undefined' && result['ACTION_RESULT']) {

    if (!!typeof result['request']['comment_id'] && typeof result['request']['comment_id']) {

      if (result['request']['request_type'] === 'DELETE') {

        let comment_node = document.querySelector(
          realcommenter_get_selector('comment')
          + realcommenter_get_selector('comment_id') + result['request']['comment_id']
        );

        if (comment_node) {
          comment_node.parentNode.removeChild(comment_node);
        }

      } else {

        let any_child = document.querySelector(
          realcommenter_get_selector('comment')
          + realcommenter_get_selector('comment_id') + result['request']['comment_id']
          + ' *:first-child'
        );

        if (any_child) {
          realcommenter_expand_branch.bind(any_child)();
        }

      }

    }
  }
}

// Показать / Скрыть
function realcommenter_admintools_switch_show (container_obj, force_state) {
  // this - облачко с инструментами

  if (!~container_obj.className.indexOf('_show')) {

    /**
     * Собираемся показать облачко - нужно зарядить onclick на документ, чтобы скрывать его
     */

    let _outclicker = realcommenter_admintools_outclicker.bind(container_obj);

    container_obj.outclicker = _outclicker;
    document.addEventListener('click', _outclicker);

  } else {

    /**
     * Собираемся скрыть облачко.
     * Если есть коллбек клика, отписываем document от него
     */

    if (container_obj.outclicker) {
      document.removeEventListener('click', container_obj.outclicker);
      container_obj.outclicker = null;
    }

  }

  container_obj.classList.toggle('_show', force_state);
}

function realcommenter_admintools_outclicker (e) {

  for (let t = 0; t < e.path.length; t++) {
    if (e.path[t] === this) {
      e.stopPropagation();
      return;
    }
  }

  /**
   * Закрываем облачко
   */
  realcommenter_admintools_switch_show(this, false);

}

Youez - 2016 - github.com/yon3zu
LinuXploit