HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: //var/www/html/phpmyfaq/admin/assets/js/sections.js
/**
 * JavaScript functions for groups frontend
 *
 * This Source Code Form is subject to the terms of the Mozilla Public License,
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
 * obtain one at http://mozilla.org/MPL/2.0/.
 *
 * @package phpMyFAQ
 * @author Timo Wolf <amna.wolf@gmail.com>
 * @copyright 2018-2022 phpMyFAQ Team
 * @license http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
 * @link https://www.phpmyfaq.de
 * @since 2018-09-21
 */

/*global $:false, alert:false */

document.addEventListener('DOMContentLoaded', () => {
  'use strict';

  /**
   * Section related functions
   *
   */
  const getSectionList = () => {
    clearSectionList();
    $.getJSON('index.php?action=ajax&ajax=section&ajaxaction=get_all_sections', (data) => {
      $.each(data, (i, val) => {
        $('#section_list_select').append('<option value="' + val.section_id + '">' + val.name + '</option>');
      });
    });
    processSectionList();
  };

  const getSectionData = (section_id) => {
    $.getJSON('index.php?action=ajax&ajax=section&ajaxaction=get_section_data&section_id=' + section_id, (data) => {
      $('#update_section_id').val(data.id);
      $('#update_section_name').val(data.name);
      $('#update_section_description').val(data.description);
    });
  };

  const clearSectionList = function () {
    $('#section_list_select').empty();
  };

  const clearSectionData = function () {
    $('#update_section_id').empty();
    $('#update_section_name').empty();
    $('#update_section_description').empty();
  };

  const sectionSelect = function (event) {
    event = event ? event : window.event ? window.event : null;
    if (event) {
      const select = event.target ? event.target : event.srcElement ? event.srcElement : null;
      if (select && select.value > 0) {
        clearSectionData();
        getSectionData(select.value);
        clearGroupList();
        getGroupList();
        clearSectionMemberList();
        getSectionMemberList(select.value);
      }
    }
  };

  /**
   * Group related functions
   *
   */
  const getGroupList = () => {
    clearGroupList();
    $.getJSON('index.php?action=ajax&ajax=group&ajaxaction=get_all_groups', (data) => {
      $.each(data, (i, val) => {
        $('#group_list_select').append('<option value="' + val.group_id + '">' + val.name + '</option>');
      });
    });
  };

  const clearGroupList = function () {
    $('#group_list_select').empty();
  };

  /**
   * Member related functions
   *
   */
  const addSectionMembers = () => {
    // make sure that a group is selected
    const selectedSection = $('#section_list_select option:selected');
    if (0 === selectedSection.length) {
      alert('Please choose a section.');
      return;
    }

    // get selected groups from list
    const selectedGroups = $('#group_list_select option:selected');
    if (selectedGroups.length > 0) {
      selectedGroups.each(function () {
        const members = $('#section_member_list option');
        const group = $(this);
        let isMember = false;
        members.each((member) => {
          isMember = group.val() === members[member].value;
        });
        if (isMember === false) {
          $('#section_member_list').append(
            '<option value="' + $(this).val() + '" selected>' + $(this).text() + '</option>'
          );
        }
      });
    }
  };

  const clearSectionMemberList = () => {
    $('#section_member_list').empty();
  };

  const getSectionMemberList = function (section_id) {
    if (0 === section_id) {
      clearSectionMemberList();
      return;
    }
    $.getJSON(
      'index.php?action=ajax&ajax=section&ajaxaction=get_all_members&section_id=' + section_id,
      function (data) {
        $('#section_member_list').empty();
        $.each(data, function (i, val) {
          $('#section_member_list').append('<option value="' + val.group_id + '" selected>' + val.name + '</option>');
        });
        $('#update_member_section_id').val(section_id);
      }
    );
  };

  const removeSectionMembers = function () {
    // make sure that a section is selected
    const selectedMemberList = $('#section_member_list option:selected');
    if (selectedMemberList.length === 0) {
      alert('Please choose a group. ');
      return;
    }

    // remove selected members from list
    selectedMemberList.each(function () {
      $('#section_member_list option:selected').remove();
    });
  };

  const processSectionList = function () {
    clearSectionData();
    clearSectionList();
    clearSectionMemberList();
    getSectionMemberList();
  };

  getSectionList();

  $('#section_list_select').on('change', function (event) {
    sectionSelect(event);
  });

  $('.pmf-add-section-member').on('click', function () {
    addSectionMembers();
  });

  $('.pmf-remove-section-member').on('click', function () {
    removeSectionMembers();
  });
});