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/mail/directorymenu/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/mail/directorymenu/src/directorymenu.js
import { Tag } from 'main.core';
import { EventEmitter, BaseEvent } from 'main.core.events';
import { Item } from './item.js';

import 'ui.design-tokens';
import 'ui.fonts.opensans';
import './css/ui-wrappermenu.css';
import './css/style.css';


export class DirectoryMenu
{
	#activeDir = '';
	#menu = Tag.render`<ul class="ui-mail-left-directory-menu"></ul>`;
	#directoryCounters = new Map();
	#items = new Map();
	#systemDirs = [];

	getActiveDir()
	{
		return this.#activeDir;
	}

	setActiveDir(path)
	{
		this.#activeDir = path;
	}

	clearActiveMenuButtons()
	{
		for (let item of this.#items.values())
		{
			item.disableActivity();
		}
	}

	rebuildMenu(dirsWithUnseenMailCounters)
	{
		this.#directoryCounters = dirsWithUnseenMailCounters;
		this.cleanItems();
		this.buildMenu();
		this.setDirectory(this.getActiveDir());
	}

	cleanItems()
	{
		for (let item of this.#items.values())
		{
			this.#menu.removeChild(item);
		}
		this.#items.clear();
	}

	includeItem(domItem, directoryPath)
	{
		this.#items.set(directoryPath, domItem);
		this.#menu.append(domItem);
	}

	chooseFunction(path)
	{
		this.clearActiveMenuButtons();
		this.setActiveDir(path);
		this.setFilterDir(path);
	}

	buildMenu(firstBuild = false)
	{
		for (let i = 0; i < this.#directoryCounters.length; i++)
		{
			const directory = this.#directoryCounters[i];
			const path = directory['path'];
			if(!Item.checkProperties(directory))
			{
				continue;
			}

			if(this.#systemDirs['inbox'] === path && firstBuild)
			{
				BX.Mail.Home.FilterToolbar.setCount(directory['count']);
			}

			new Item(directory,this,0,this.#systemDirs);
		}
	}

	setFilterDir(name)
	{
		const event = new BaseEvent({ data: { directory: name } });
		EventEmitter.emit('BX.DirectoryMenu:onChangeFilter', event);

		name = BX.Mail.Home.Counters.getShortcut(name);

		const filter = this.filter;
		if (!!filter && (filter instanceof BX.Main.Filter))
		{
			const FilterApi = filter.getApi();
			FilterApi.setFields({
				'DIR': name,
			});
			FilterApi.apply();
		}
	}

	changeCounter(dirPath, number, mode)
	{
		const item = this.#items.get(dirPath);

		if(item === undefined) return;

		if (mode !== 'set')
		{
			item.setCount(item.getCount() + Number(number));
		}
		else
		{
			item.setCount(Number(number));
		}
	}

	setCounters(counters)
	{
		for (let path in counters)
		{
			if (counters.hasOwnProperty(path))
			{
				this.changeCounter(path, counters[path], 'set');
			}
		}
	}

	setDirectory(path)
	{
		this.clearActiveMenuButtons();
		if(path === undefined) return;
		const item = this.#items.get(path);
		if(item)
		{
			this.setActiveDir(path)
			item.enableActivity();
		}
	}

	constructor(config = {
		dirsWithUnseenMailCounters: {},
		filterId: '',
		systemDirs :
		{
			spam: 'Spam',
			trash: 'Trash',
			outcome: 'Outcome',
			drafts: 'Drafts',
			inbox: 'Inbox',
		}
	})
	{
		this.filter = BX.Main.filterManager.getById(config['filterId']);
		this.#systemDirs = config['systemDirs'];

		EventEmitter.subscribe('BX.Main.Filter:apply', (event) => {

			let dir = BX.Mail.Home.Counters.getDirPath(this.filter.getFilterFieldsValues()['DIR']);

			EventEmitter.emit('BX.DirectoryMenu:onChangeFilter', new BaseEvent({ data: { directory: dir } }));
			this.setDirectory(dir)
		});

		this.#directoryCounters = config['dirsWithUnseenMailCounters'];

		this.buildMenu(true);
	}

	getNode()
	{
		return this.#menu;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit