Back to all examples

PHP
<?php

require_once '../lib/Kendo/Autoload.php';

?>
<div class="demo-section k-content">
	<?php
	
		$dialog = new \Kendo\UI\Dialog('dialog');
		$cancelAction = new \Kendo\UI\DialogAction();
		$cancelAction->text("Cancel")
					 ->action(onCancelClick);

		$okAction = new \Kendo\UI\DialogAction();
		$okAction->text("Ok")
				 ->primary(true)
				 ->action(onOkClick);

		$dialog->title('Categories')
			   ->width('400px')
			   ->visible(true)
			   ->close(onClose)
			   ->addAction($cancelAction, $okAction)
			   ->startContent();
			   
	?>
	<div class="dialogContent">
		<input id="filterText" type="text" placeholder="Search categories" onkeyup="onFilterKeyUp()" />
		<div class="selectAll">
			<input type="checkbox" id="chbAll" class="k-checkbox" onchange="chbAllOnChange()" />
			<label class="k-checkbox-label" for="chbAll">Select All</label>
			<span id="result">0 categories selected</span>
		</div>
		<?php
		
			$treeview = new \Kendo\UI\TreeView('treeview');

			$checkboxes = new \Kendo\UI\TreeViewCheckboxes();
			$checkboxes->checkChildren(true);
			$treeview->checkboxes($checkboxes);

			$treeview->check("onCheck");

			// helper function that creates TreeViewItem with id and spriteCssClass
			function TreeViewItem($id, $text) {
				$item = new \Kendo\UI\TreeViewItem($text);
				$item->id = $id;
				return $item;
			}

			$furniture = TreeViewItem(1, 'Furniture');
			$furniture->expanded(true);

			$tables = TreeViewItem(2, 'tables & chairs');
			$sofas = TreeViewItem(3, 'sofas');
			$occasional = TreeViewItem(4, 'occasional furniture');
			$childrens = TreeViewItem(5, 'childrens furniture');
			$beds = TreeViewItem(6, 'beds');

			$furniture->addItem($tables, $sofas, $occasional, $childrens, $beds);

			$decor = TreeViewItem(7, 'Decor');
			$decor->expanded(true);

			$bedlinen = TreeViewItem(8, 'bed linen');
			$throws = TreeViewItem(9, 'throws');
			$curtains = TreeViewItem(10, 'curtains & blinds');
			$rugs = TreeViewItem(11, 'rugs');
			$carpets = TreeViewItem(12, 'carpets');

			$decor->addItem($bedlinen, $throws, $curtains, $rugs, $carpets);

			$storage = TreeViewItem(13, 'Storage');
			$storage->expanded(true);

			$wall = TreeViewItem(14, 'wall shelving');
			$kids = TreeViewItem(15, 'kids storage');
			$multimedia = TreeViewItem(16, 'multimedia storage');
			$floor = TreeViewItem(17, 'floor shelving');
			$rollholders = TreeViewItem(18, 'toilet roll holders');
			$storagejars = TreeViewItem(19, 'storage jars');
			$drawers = TreeViewItem(20, 'drawers');
			$boxes = TreeViewItem(21, 'boxes');

			$storage->addItem($wall, $kids, $multimedia, $floor, $rollholders, $storagejars, $drawers, $boxes);

			$dataSource = new \Kendo\Data\HierarchicalDataSource();

			$dataSource->data(array($furniture, $decor, $storage));

			$treeview->dataSource($dataSource);

			echo $treeview->render();
			
		?>
	</div>
    <?php
	
    $dialog->endContent();

    echo $dialog->render();
	
	?>
	<?php
	
		$multiselect = new \Kendo\UI\MultiSelect('multiselect');

		$multiselect->dataTextField('text')
					->dataValueField('id');
					
		echo $multiselect->render();
		
	?>
	<br />
	<?php
	
		$button = new \Kendo\UI\Button('openWindow');
		
		$button->attr('class', 'k-primary')
		->content('SELECT CATEGORIES');
				
		echo $button->render();
				
	?>
</div>			
	
<script>			
	$(document).ready(function () {
		var dialog = $("#dialog");
		var multiSelect = $("#multiselect").data("kendoMultiSelect");
		
		multiSelect.readonly(true);

		$("#openWindow").click(function () {
		dialog.data("kendoDialog").open();
		$(this).fadeOut();
		});

		dialog.data("kendoDialog").open();		
	});

	function onCancelClick(e) {
	e.sender.close();
	}

	function onOkClick(e) {
	var checkedNodes = [];
	var treeView = $("#treeview").data("kendoTreeView");

	getCheckedNodes(treeView.dataSource.view(), checkedNodes);
	populateMultiSelect(checkedNodes);

	e.sender.close();
	}

	function onClose() {
	$("#openWindow").fadeIn();
	}

	function populateMultiSelect(checkedNodes) {
		var multiSelect = $("#multiselect").data("kendoMultiSelect");
		multiSelect.dataSource.data([]);

		var multiData = multiSelect.dataSource.data();
		if (checkedNodes.length > 0) {
		var array = multiSelect.value().slice();
		for (var i = 0; i < checkedNodes.length; i++) {
				multiData.push({ text: checkedNodes[i].text, id: checkedNodes[i].id });
				array.push(checkedNodes[i].id.toString());
			}

			multiSelect.dataSource.data(multiData);
			multiSelect.dataSource.filter({});
			multiSelect.value(array);
		}
	}

	function checkUncheckAllNodes(nodes, checked) {
		for (var i = 0; i < nodes.length; i++) {
			nodes[i].set("checked", checked);

			if (nodes[i].hasChildren) {
				checkUncheckAllNodes(nodes[i].children.view(), checked);
			}
		}
	}

	function chbAllOnChange() {
		var checkedNodes = [];
		var treeView = $("#treeview").data("kendoTreeView");
		var isAllChecked = $('#chbAll').prop("checked");

		checkUncheckAllNodes(treeView.dataSource.view(), isAllChecked)

		if (isAllChecked) {
			setMessage($('#treeview input[type="checkbox"]').length);
		}
		else {
			setMessage(0);
		}
	}

	function getCheckedNodes(nodes, checkedNodes) {
		var node;

		for (var i = 0; i < nodes.length; i++) {
			node = nodes[i];

			if (node.checked) {
				checkedNodes.push({ text: node.text, id: node.id });
			}

			if (node.hasChildren) {
				getCheckedNodes(node.children.view(), checkedNodes);
			}
		}
	}

	function onCheck() {
		var checkedNodes = [];
		var treeView = $("#treeview").data("kendoTreeView");

		getCheckedNodes(treeView.dataSource.view(), checkedNodes);
		setMessage(checkedNodes.length);
	}

	function setMessage(checkedNodes) {
		var message;

		if (checkedNodes > 0) {
			message = checkedNodes + " categories selected";
		}
		else {
			message = "0 categories selected";
		}

		$("#result").html(message);
	}

	function onFilterKeyUp() {
		var filterText = $("#filterText").val();
		debugger;
		if (filterText !== "") {
			$(".selectAll").css("visibility", "hidden");
			$("#treeview .k-group .k-group .k-in").closest("li").hide();
			$("#treeview .k-group .k-group .k-in:contains(" + filterText + ")").each(function () {
				$(this).parents("ul, li").each(function () {
					$(this).show();
				});
			});
		}
		else {
			$("#treeview .k-group").find("li").show();
			$(".selectAll").css("visibility", "visible");
		}
	}
</script>
<style>
	html .k-dialog .k-window-titlebar {
	padding-left: 17px;
	}

	.k-dialog .k-content {
	padding: 17px;
	}

	#filterText {
	width: 100%;
	box-sizing: border-box;
	padding: 6px;
	border-radius: 3px;
	border: 1px solid #d9d9d9;
	}

	.selectAll {
	margin: 17px 0;
	}

	#result {
	color: #9ca3a6;
	float: right;
	}

	#treeview {
	height: 300px;
	overflow-y: auto;
	border: 1px solid #d9d9d9;
	}

	#openWindow {
	min-width: 180px;
	}
</style>