Просмотр исходного кода

fixed groups filter and updated ui in Budget

Piotr Labudda 10 лет назад
Родитель
Сommit
9901024d89
3 измененных файлов с 57 добавлено и 517 удалено
  1. 57 517
      SE/se-lib/Route/Budget.php
  2. 0 0
      SE/stuff/bundle.se_route_budget.js
  3. 0 0
      SE/stuff/vendors.js

+ 57 - 517
SE/se-lib/Route/Budget.php

@@ -3,6 +3,7 @@
 Lib::loadClass('RouteBase');
 Lib::loadClass('ProcesHelper');
 Lib::loadClass('TableAjax');
+Lib::loadClass('UserStorageFactory');
 
 class Route_Budget extends RouteBase {
 
@@ -195,524 +196,40 @@ jQuery(document).ready(function () {
 			$months[] = $i + 1;
 		}
 		$this->css();
-		if(V::get('DBG','',$_GET)){echo'<pre style="width:600px;border:1px solid red;max-height:300px;overflow:auto;display:none">';print_r($this->_costs);echo'</pre>';}
-?>
-<div class="container">
-	<div style="float:right;color:#aaa;"><?php echo date("Y-m-d"); ?></div>
-	<h1>Zestawienie kosztów projektów na rok <?php echo $year; ?></h1>
-</div>
-	<table cellspacing="0" cellpadding="0" border="0" id="zestawienie-kosztow-projektow" class="zestawienie-kosztow-tbl">
-	<thead>
-		<tr>
-			<td colspan="3" class="p2">
-				<span class="pull-right"><b>miesiąc</b> <span class="month_cols_picker"></span></span>
-			</td>
-			<?php foreach ($months as $month) { ?>
-				<th class="c col_month_<?php echo $month; ?> thead_col_month" colspan="3"><?php echo sprintf("%02d", $month); ?></th>
-			<?php } ?>
-		</tr>
-		<tr>
-			<td colspan="3" class="p2">
-				<span class="pull-left">
-					<input type="checkbox" onclick="return showHideAll(this);"/> pokaż tylko zaznaczone
-				</span>
-			</td>
-			<?php foreach ($months as $month) { ?>
-				<th class="c col_month_<?php echo $month; ?>" title="Koszty wprowadzone do korespondencji">Koszty</th>
-				<th class="c col_month_<?php echo $month; ?>" title="Plan budżetu">Plan</th>
-				<th class="c col_month_<?php echo $month; ?>" title="Procent przekroczenia planu">%</th>
-			<?php } ?>
-		</tr>
-	</thead>
-	<tbody>
-	<?php $t = 1; ?>
-	<?php foreach ($this->_projectPathsOrder as $projPath => $projId) : ?>
-		<?php
-			$projectID   = $projId;
-			$projectDesc = $this->_projectInfo[$projId]->M_DIST_DESC;
-			$projectPath = $this->_projectInfo[$projId]->path;
-			$projectAccess = $this->hasAccessToProject($projectID);
-			if (!empty($groups)) {
-				if (!$projectAccess) {
-					//echo '<pre>TODO: filtered by acl for project';print_r($this->_projectInfo[$projId]);echo'</pre>';
-					continue;
-				}
-				if (!$this->hasGroupsAccessToProjects($projectID, $groups)) {
-					//echo '<pre>TODO: filtered by acl and groups';print_r($this->_projectInfo[$projId]);echo'</pre>';
-					continue;
-				}
-			}
-		?>
-		<tr class="row-<?php echo ($t = 1 - $t); ?>"
-				data-proj_id="<?php echo $projectID; ?>"
-				data-path="<?php echo $projectPath; ?>">
-			<td class="p2 r nr">
-				<input type="checkbox" name="selectedProject" onclick="return selectProject(this);" value="<?php echo $projectID; ?>" />
-			</td>
-			<td class="p2 l nr"><nobr><?php echo $projectPath; ?></nobr></td>
-				<?php if (!$projectAccess) : ?>
-			<td class="p2">***</td>
-				<?php else : ?>
-			<td class="p2" style="max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" title="<?php echo $projectDesc; ?>"><?php echo $projectDesc; ?></td>
-				<?php endif; ?>
-			<?php foreach ($months as $month) : ?>
-				<?php $vMonthCost = $this->getCost($projectID, $month); ?>
-				<?php $monthCostTotal = ($vMonthCost)? $vMonthCost->COST_TOTAL : 0; ?>
-				<?php if (!$projectAccess) : ?>
-			<td class="col_month_<?php echo $month; ?>" style="min-width:30px;text-align:right;">***</td>
-				<?php elseif (!$vMonthCost) : ?>
-			<td class="col_month_<?php echo $month; ?>" style="min-width:30px">&nbsp;</td>
-				<?php else : ?>
-					<?php
-						$vCostChildOut = number_format($vMonthCost->COST_CHILD, 2);
-						$vCostSelfOut = number_format($vMonthCost->COST_SELF, 2);
-						$vCostTotalOut = number_format($vMonthCost->COST_TOTAL, 2);
-						$vCostTotalOutJs = number_format($vMonthCost->COST_TOTAL, 2, '.', '');
-						$title = "Koszt projektu {$vCostSelfOut} / koszt podprojektów $vCostChildOut";
-						$cellCostCls = '';
-						if ($vMonthCost->COST_CHILD > 0) {
-							if ($vMonthCost->COST_SELF > 0) {
-								$cellCostCls = 'cell-cost-self_and_child';
-							} else {
-								$cellCostCls = 'cell-cost-only_child';
-							}
-						} else {
-							$cellCostCls = 'cell-cost-only_self';
-						}
-					?>
-			<td class="cell-cost <?php echo $cellCostCls; ?> col_month_<?php echo $month; ?>"
-					data-month_num="<?php echo $month; ?>"
-					data-cost="<?php echo $vCostTotalOutJs; ?>"
-					data-proj_path="<?php echo $projectPath; ?>"
-					data-proj_id="<?php echo $projectID; ?>">
-				<span class="ttip" title="<?php echo $title; ?>"><?php echo $vCostTotalOut; ?></span>
-			</td>
-				<?php endif; ?>
-			<?php $monthPlan = $this->getPlan($projectID, $month); ?>
-			<?php $monthPlanOut = number_format($monthPlan, 2); ?>
-			<?php $monthPlanOutJs = number_format($monthPlan, 2, '.', ''); ?>
-			<td class="cell-plan col_month_<?php echo $month; ?>"
-					data-month_num="<?php echo $month; ?>"
-					data-plan="<?php echo $monthPlanOutJs; ?>">
-				<?php if (!$projectAccess) : ?>
-					***
-				<?php elseif ($monthPlan > 0) : ?>
-					<?php echo $monthPlan; ?>
-				<?php else : ?>
-					&nbsp;
-				<?php endif; ?>
-			</td>
-			<?php
-				$cellProcentCls = '';
-				$procentOut = '&nbsp;';
-				$monthPlan = $this->getPlan($projectID, $month);
-				if ($monthPlan > 0) {
-					$procentOut = round(($monthCostTotal * 100) / $monthPlan);
-					if ($procentOut > 150) {
-						$cellProcentCls = 'cell-procent-over150';
-					} else if ($procentOut > 100) {
-						$cellProcentCls = 'cell-procent-over100';
-					} else if ($procentOut == 100) {
-						$cellProcentCls = 'cell-procent-100';
-					} else {
-						$cellProcentCls = 'cell-procent-below100';
-					}
-				}
-			?>
-				<?php if (!$projectAccess) : ?>
-			<td class="col_month_<?php echo $month; ?>" style="min-width:30px;text-align:right;">***</td>
-				<?php else : ?>
-			<td class="cell-procent <?php echo $cellProcentCls; ?> col_month_<?php echo $month; ?>"><?php echo $procentOut; ?></td>
-				<?php endif; ?>
-			<?php endforeach; ?>
-		</tr>
-	<?php endforeach; ?>
-	</tbody>
-	</table>
-	<script>
-jQuery(document).ready(function() {
-	jQuery('#zestawienie-kosztow-projektow')
-		.find('.cell-cost')
-		.on('click', function(e) {
-			var $n = jQuery(this),
-				$modal = jQuery('#projectMonthCostDetails'),
-				projId = $n.data('proj_id'),
-				monthNum = $n.data('month_num'),
-				projPath = '' + $n.data('proj_path'),
-				projPathLength = projPath.length,
-				modalBody = document.createElement('table'),
-				totalDescrCell = document.createElement('td'),
-				totalCostCell = document.createElement('td'),
-				totalEmptyCell = document.createElement('td'),
-				totalRow = document.createElement('tr');
-			modalBody.className = 'zestawienie-kosztow-tbl';
-			modalBody.style.width = '100%';
-			// $n.data() = {proj_id: 3943, proj_path: "0-4132-3943", month_num: 2}
-			// table#proj-koresp-info > tbody#row-proj-2055-koresp-by-month-2
-			jQuery('#proj-koresp-info').find('tbody').each(function(i, tbody) {
-				var vPath = jQuery(tbody).data('proj_path'),
-						vMonthNum = jQuery(tbody).data('month_num');
-				if (monthNum != vMonthNum) return;
-				if (projPathLength > vPath.length) return;
-				if (projPath == vPath
-						|| (projPathLength < vPath.length && projPath + '-' == vPath.substr(0, projPathLength + 1))
-					 ) {
-					modalBody.appendChild(tbody.cloneNode(true));
-				}
-			});
-			{
-				totalDescrCell.className = 'p2';
-				totalDescrCell.style.textAlign = 'right';
-				totalDescrCell.setAttribute('colspan', '2');
-				totalDescrCell.appendChild(document.createTextNode('Suma:'));
-				totalCostCell.className = 'cell-cost';
-				totalCostCell.style.textAlign = 'right';
-				totalCostCell.appendChild(document.createTextNode($n.data('cost')));
-				totalRow.appendChild(totalDescrCell);
-				totalRow.appendChild(totalCostCell);
-				modalBody.appendChild(totalRow);
-			}
-			$modal.find('.modal-title').text('Koszty projektu nr ' + projId + ' w miesiącu <?php echo $year; ?>-' + ((monthNum > 9)? monthNum : '0' + monthNum));
-			$modal.find('.modal-body').html(modalBody);
-			$modal.modal({});
-		})
-
-	jQuery('#zestawienie-kosztow-projektow').data('visible_months', <?php echo json_encode($months); ?>);
-
-	jQuery('#zestawienie-kosztow-projektow').on('show_month', function(e, argMonthNum) {
-		var this$Node = $(this),
-				monthNum = parseInt(argMonthNum),
-				visibleMonths = this$Node.data('visible_months'),
-				dbgLvl = parseInt(this$Node.data('dbg_lvl'))
-		;
-		if(dbgLvl){console.log('event:show_month argMonthNum', argMonthNum);}
-		monthNum = parseInt(monthNum);
-		if (monthNum < 1 || monthNum > 12) return;
-		if (-1 === visibleMonths.indexOf(monthNum)) {
-			visibleMonths.push(monthNum);
-			this$Node.data('visible_months', visibleMonths);
-			if(dbgLvl>1){console.log('event:show_month removed monthNum', monthNum, 'visibleMonths', visibleMonths);}
-			this$Node.trigger('visible_months_changed');
-			// TODO: trigger render_sum
-		} else {
-			if(dbgLvl>1){console.log('event:hide_month monthNum('+monthNum+') already in visibleMonths', visibleMonths);}
-		}
-	});
-
-	jQuery('#zestawienie-kosztow-projektow').on('hide_month', function(e, argMonthNum) {
-		var this$Node = $(this),
-				monthNum = parseInt(argMonthNum),
-				monthInd,
-				visibleMonths = this$Node.data('visible_months'),
-				dbgLvl = parseInt(this$Node.data('dbg_lvl'))
-		;
-		if(dbgLvl){console.log('event:hide_month argMonthNum', argMonthNum);}
-		if (monthNum < 1 || monthNum > 12) return;
-		monthInd = visibleMonths.indexOf(monthNum);
-		if (-1 === monthInd) {
-			if(dbgLvl>1){console.log('event:hide_month monthNum('+monthNum+') not in visibleMonths', visibleMonths);}
-		} else {
-			visibleMonths.splice(monthInd, 1);
-			this$Node.data('visible_months', visibleMonths);
-			if(dbgLvl>1){console.log('event:hide_month removed monthNum', monthNum, 'visibleMonths', visibleMonths);}
-			this$Node.trigger('visible_months_changed');
-		}
-	});
-
-	jQuery('#zestawienie-kosztow-projektow').on('visible_months_changed', function(e) {
-		var this$Node = $(this);
-		this$Node.trigger('render_cols_select');
-		this$Node.trigger('render_cols');
-		this$Node.trigger('render_sum');
-	});
-
-	jQuery('#zestawienie-kosztow-projektow').on('initial_render', function(e) {
-		var this$Node = $(this);
-		this$Node.trigger('render_cols_select');
-		this$Node.trigger('render_cols');
-		this$Node.trigger('render_sum');
-
-		var theadFirstRow$Node = $('#zestawienie-kosztow-projektow').find('thead').find('tr:first'),
-				close$Node;
-		for (var i = 1; i <= 12; i++) {
-			close$Node = $('<i class="pull-right glyphicon glyphicon-remove col_month_remove"></i>').appendTo(theadFirstRow$Node.find('.col_month_' + i));
-			close$Node.css({padding:'2px', cursor: 'pointer', color:'red'});
-			close$Node.data('month_num', i);
-			close$Node.on('click', function(e) {
-				var this$Node = $(this),
-						monthNum = this$Node.data('month_num'),
-						root$Node = $('#zestawienie-kosztow-projektow'),
-						dbgLvl = parseInt(root$Node.data('dbg_lvl'))
-				;
-				if(dbgLvl){console.log('click month col remove btn:', monthNum);}
-				root$Node.trigger('hide_month', monthNum);
-			});
-		}
-	});
-
-	jQuery('#zestawienie-kosztow-projektow').on('render_cols_select', function(e) {
-		var this$Node = $(this),
-				dbgLvl = parseInt(this$Node.data('dbg_lvl'))
-		;
-		if(dbgLvl){console.log('event:render_cols_select');}
-		var this$Node = $(this),
-				visibleMonths = this$Node.data('visible_months'),
-				nodeClass = 'month_cols_picker',
-				currentNode,
-				node
-		;
-		currentNode = this$Node.find('thead').find('.' + nodeClass);
-		node = $('<div class="btn-group pull-right dropdown columnpicker ' + nodeClass + '"></div>');
-		var btn = $('<button class="btn btn-sm btn-link dropdown-toggle" data-toggle="dropdown" href="#">wybierz&nbsp;</button>').appendTo(node);
-		btn.css({padding: '0 10px'});
-		var span = $('<span class="caret"></span>').appendTo(btn);
-		var ul$Node = $('<ul class="dropdown-menu">').appendTo(node);
-
-		for (var i = 1; i <= 12; i++) {
-			var li$Node = $('<li class="checkbox" style="margin:0 10px;"></li>').appendTo(ul$Node),
-					label$Node = $('<label></label>').appendTo(li$Node),
-					input$Node;
-			input$Node = $('<input type="checkbox" title="' + i + '" value="' + i + '" >').appendTo(label$Node);
-			label$Node.append(' ' + i);
-			input$Node.prop('checked', (-1 !== visibleMonths.indexOf(i)));
-		}
-		{// show months all
-			if (visibleMonths.length < 12) {
-				var li$Node = $('<li class="checkbox" style="margin:0 10px;"></li>').appendTo(ul$Node),
-						btnViewAll$Node = $('<button class="btn btn-link">Pokaż wszystkie</button>').appendTo(li$Node)
-				;
-				btnViewAll$Node.on('click', function(e) {
-					var root$Node = $('#zestawienie-kosztow-projektow'),
-							visibleMonths = root$Node.data('visible_months')
-					;
-					if (visibleMonths.length < 12) {
-						visibleMonths = [];
-						for (var i = 1; i <= 12; i++) visibleMonths.push(i);
-						root$Node.data('visible_months', visibleMonths);
-						root$Node.trigger('visible_months_changed');
-					}
-				});
-			}
-		}
-		node.on('change', 'input', function(e) {
-			var this$Node = $(this),
-					monthNum = this$Node.val(),
-					dbgLvl = parseInt($('#zestawienie-kosztow-projektow').data('dbg_lvl'))
-			;
-			e.preventDefault();
-			e.stopPropagation();
-			if(dbgLvl>1){console.log('change checkbox val:', this$Node.val(), 'checked:', this$Node.prop('checked'));}
-			if (this$Node.prop('checked')) {
-				jQuery('#zestawienie-kosztow-projektow').trigger('show_month', monthNum);
-			} else {
-				jQuery('#zestawienie-kosztow-projektow').trigger('hide_month', monthNum);
-			}
-		});
-		currentNode.replaceWith(node);
-	});
-
-	// @require css: #zestawienie-kosztow-projektow.hidden_month_1 .col_month_1 {display:none}
-	jQuery('#zestawienie-kosztow-projektow').on('render_cols', function(e) {
-		var this$Node = $(this),
-				thead$Node = this$Node.find('thead'),
-				tbody$Node = this$Node.find('tbody'),
-				visibleMonths = this$Node.data('visible_months'),
-				dbgLvl = parseInt($('#zestawienie-kosztow-projektow').data('dbg_lvl'))
-		;
-		if(dbgLvl){console.log('event:render_cols visibleMonths', visibleMonths);}
-		for (var i = 1; i <= 12; i++) {
-			if (-1 === visibleMonths.indexOf(i)) {
-				this$Node.addClass('hidden_month_' + i);
-			} else {
-				this$Node.removeClass('hidden_month_' + i);
-			}
-		}
-	});
+		//DBG::_('DBG', '>1', "costs", $this->_costs, __CLASS__, __FUNCTION__, __LINE__);
 
-	jQuery('#zestawienie-kosztow-projektow').on('render_sum', function(e) {
-		var this$Node = $(this),
-				thead$Node = this$Node.find('thead'),
-				tbody$Node = this$Node.find('tbody'),
-				visibleMonths = this$Node.data('visible_months'),
-				dbgLvl = parseInt($('#zestawienie-kosztow-projektow').data('dbg_lvl'))
-		;
-		if(dbgLvl){console.log('event:render_sum visibleMonths', visibleMonths);}
-		if (!thead$Node.find('.thead__cols_summary').length) {
-			$('<th colspan="2" class="thead__cols_summary c">Suma</th>').appendTo(thead$Node.children('tr:first'));
-			$('<th class="thead__cols_summary c">Koszty</th>').appendTo(thead$Node.children('tr:last'));
-			$('<th class="thead__cols_summary c">Plan</th>').appendTo(thead$Node.children('tr:last'));
-			tbody$Node.find('tr').each(function(ind, n) {
-				var this$Node = $(this);
-				$('<td class="row__summary__cost r"></td>').appendTo(this$Node);
-				$('<td class="row__summary__plan r"></td>').appendTo(this$Node);
-			});
-		}
-
-		tbody$Node.find('tr').each(function(ind, n) {
-			var this$Node = $(this),
-					rowSumCost = 0,
-					rowSumPlan = 0
-			;
-			this$Node.find('.cell-cost').each(function(ind, n) {
-				var monthNum = $(this).data('month_num'),
-						costValueOut = $(this).data('cost'),
-						costValue = 0
-				;
-				monthNum = parseInt(monthNum);
-				if (monthNum < 1 || monthNum > 12) return;
-				if (-1 === visibleMonths.indexOf(monthNum)) {
-					if(dbgLvl>2){console.log('HIDE: .cell-cost monthNum', monthNum, 'costValueOut', costValueOut, 'visibleMonths', visibleMonths);}
-					return;
-				} else {
-					costValue = parseFloat(costValueOut);
-					if (isNaN(costValue) || !costValue) costValue = 0;
-					if (costValue) rowSumCost += costValue;
-				}
-				if(dbgLvl>2){console.log('.cell-cost monthNum', monthNum, 'costValueOut', costValueOut, 'visibleMonths', visibleMonths);}
-			});
-			this$Node.find('.cell-plan').each(function(ind, n) {
-				var monthNum = $(this).data('month_num'),
-						planValueOut = $(this).data('plan'),
-						planValue = 0
-				;
-				monthNum = parseInt(monthNum);
-				if (monthNum < 1 || monthNum > 12) return;
-				if (-1 === visibleMonths.indexOf(monthNum)) {
-					if(dbgLvl>2){console.log('HIDE: .cell-cost monthNum', monthNum, 'planValueOut', planValueOut, 'visibleMonths', visibleMonths);}
-					return;
-				} else {
-					planValue = parseFloat(planValueOut);
-					if (isNaN(planValue) || !planValue) planValue = 0;
-					if (planValue) rowSumPlan += planValue;
-				}
-				if(dbgLvl>2){console.log('.cell-cost monthNum', monthNum, 'planValueOut', planValueOut, 'visibleMonths', visibleMonths);}
-			});
-			this$Node.find('.row__summary__cost').html((rowSumCost)? rowSumCost.toFixed(2) : '');
-			this$Node.find('.row__summary__plan').html((rowSumPlan)? rowSumPlan.toFixed(2) : '');
-		});
-	});
-
-	jQuery('#zestawienie-kosztow-projektow').trigger('initial_render');
-});
-	</script>
-
-	<!-- Modal -->
-	<div class="modal fade" id="projectMonthCostDetails" tabindex="-1" role="dialog" aria-labelledby="projectCostDMonthetailsLabel">
-		<div class="modal-dialog" role="document" style="min-width:800px;">
-			<div class="modal-content">
-				<div class="modal-header">
-					<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
-					<h4 class="modal-title" id="projectCostDMonthetailsLabel">Modal title</h4>
-				</div>
-				<div class="modal-body">
-					TODO: projectMonthCostDetails...
-				</div>
-				<div class="modal-footer">
-					<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-				</div>
-			</div>
-		</div>
-	</div>
-	<table id="proj-koresp-info" style="display:none">
-		<?php foreach ($this->_projectPathsOrder as $projPath => $projId) : ?>
-			<?php
-				$projectInfo = $this->_costs[$projId];
-				if (!$projectInfo) {
-					continue;
+		if (!empty($groups)) {
+			foreach ($this->_projectInfo as $idProject => $projInfo) {
+				if (!$this->hasGroupsAccessToProjects($idProject, $groups)) {
+					$this->_projectInfo[$idProject]->filteredByGroups = true;
 				}
-				$projectID   = $projId;
-				$projectDesc = $this->_projectInfo[$projId]->M_DIST_DESC;
-				$projectPath = $this->_projectInfo[$projId]->path;
-			?>
-			<?php if (!empty($projectInfo->korespByMonth)) : ?>
-				<?php foreach ($projectInfo->korespByMonth as $kMonth => $vKorespMonthList) : ?>
-					<tbody id="row-proj-<?php echo $projectID; ?>-koresp-by-month-<?php echo $kMonth; ?>"
-								 data-month_num="<?php echo $kMonth; ?>"
-								 data-proj_path="<?php echo $projectPath; ?>"
-								 data-proj_id="<?php echo $projectID; ?>">
-						<tr>
-							<td style="padding:3px;font-size:1em;background:#eee;"><nobr><?php echo $projectPath; ?></nobr></td>
-							<td colspan="3" style="padding:3px;font-size:1.1em;background:#eee;max-width:500px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" title="<?php echo $projectDesc; ?>">
-								<!-- Koszty projektu nr <?php echo $projectID; ?> -->
-								<!-- - miesiąc <?php echo $year; ?>-<?php echo sprintf("%02d", $kMonth); ?> -->
-								<?php echo $projectDesc; ?>
-							</td>
-						</tr>
-						<?php foreach ($vKorespMonthList as $kKorespIdx => $vKorespInfo) : ?>
-							<?php /*
-								*	[ID] => 41235
-								*	[MONTH] => 2015-02
-								*	[K_ZAWARTOS] => Faktura za pomiar powykonawczy sieci telekomunikacyjnej
-								*	[COST] => 1000.00
-								*	[INCOME] => 0.00
-								? [TRANSFER_OPPOSITE_ID_PROJECT] => int
-								*/
-							$transferToId = V::get('TRANSFER_OPPOSITE_ID_PROJECT_TO', 0, $vKorespInfo);
-							$transferFromId = V::get('TRANSFER_OPPOSITE_ID_PROJECT_FROM', 0, $vKorespInfo);
-							$rowStyle = ($transferToId > 0)? 'font-style:italic;color:#bbb;' : '';
-							?>
-							<tr>
-								<td class="p2 r nr"><?php echo $vKorespInfo->ID; ?></td>
-								<td class="p2"
-										style="max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;<?php echo $rowStyle; ?>"
-										title="<?php echo $vKorespInfo->K_ZAWARTOS; ?>"><?php echo $vKorespInfo->K_ZAWARTOS; ?></td>
-								<?php $vKorespCostOut = number_format($vKorespInfo->COST, 2); ?>
-								<td class="cell-cost cell-cost-only_child"><?php echo $vKorespCostOut; ?></td>
-								<td class="p2 cell-transfer_opposite_id_project">
-									<?php if ($transferFromId > 0) : ?>
-										Transfer z projektu nr <?php echo $transferFromId; ?>
-									<?php endif; ?>
-									<?php if ($transferToId > 0) : ?>
-										Transfer do projektu nr <?php echo $transferToId; ?>
-									<?php endif; ?>
-								</td>
-							</tr>
-						<?php endforeach; ?>
-					</tbody>
-				<?php endforeach; ?>
-			<?php endif; ?>
-		<?php endforeach; ?>
-	</table>
-<script>
-	jQuery(document).ready(function(){
-		jQuery('.ttip').tooltip();
-	});
-
-	function selectProject(n) {
-		var $n = jQuery(n);
-		var $p = $n.parent().parent();
-		if (n.checked) {
-			$p.addClass('row-selected');
-		} else {
-			$p.removeClass('row-selected');
-		}
-		markSubProjects($p, $p.data('path'), n.checked);
-
-		function markSubProjects($p, path, checked) {
-			var $nextRow = $p.next('tr'),
-					nextPath = $nextRow.data('path'),
-					nextCheckbox = $nextRow.find('input[type="checkbox"]').get(0);
-			if (0 !== nextPath.indexOf(path)) {
-				return;
-			}
-			if (checked) {
-				$nextRow.addClass('row-selected');
-			} else {
-				$nextRow.removeClass('row-selected');
 			}
-			nextCheckbox.checked = checked;
-			markSubProjects($nextRow, path, checked);
-		}
-	}
-
-	function showHideAll(n) {
-		if (n.checked) {
-			jQuery('#zestawienie-kosztow-projektow').find('tbody').addClass('showOnlySelected');
-		} else {
-			jQuery('#zestawienie-kosztow-projektow').find('tbody').removeClass('showOnlySelected');
 		}
-	}
 
+//echo'<pre>' . json_encode(array_keys($this->_projectPathsOrder)) . '</pre>';
+//echo'<pre>' . json_encode($this->_projectPathsOrder) . '</pre>';
+//echo'<pre>' . json_encode($this->_projectInfo) . '</pre>';
+//echo'<pre>' . json_encode($this->_costs) . '</pre>';
+//echo'<pre>' . json_encode($this->_plan) . '</pre>';
+$projectPathsOrder = array_keys($this->_projectPathsOrder);
+foreach ($projectPathsOrder as $key => $value) {
+	$projectPathsOrder[$key] = "" . $value;
+}
+?>
+<div id="widget-budget"></div>
+<script src="stuff/vendors.js"></script>
+<script src="stuff/bundle.se_route_budget.js"></script>
+<script>
+jQuery("#widget-budget").Budget({
+	year: '<?php echo $year; ?>',
+	today: '<?php echo date('Y-m-d'); ?>',
+	projectPathsOrder: <?php echo json_encode($projectPathsOrder); ?>,
+	projectPathsMap: <?php echo json_encode($this->_projectPathsOrder); ?>,
+	projectInfo: <?php echo json_encode($this->_projectInfo); ?>,
+	costs: <?php echo json_encode($this->_costs); ?>,
+	plan: <?php echo json_encode($this->_plan); ?>,
+	dbg: false
+});
 </script>
 <?php
 	}
@@ -909,7 +426,7 @@ jQuery(document).ready(function() {
 			$this->_projectInfo[$r->ID]->hasAccess = $this->_userHasAccessToProject($r);
 			if (!$this->_projectInfo[$r->ID]->hasAccess) $hasAccessForAllProjects = false;
 		}
-		$this->_projectInfo[0]->path = '0';
+		$this->_projectInfo[0]->path = "0";
 		$this->_projectInfo[0]->M_DIST_DESC = "Wszystkie projekty";
 		$this->_projectInfo[0]->hasAccess = $hasAccessForAllProjects;
 	}
@@ -925,12 +442,15 @@ jQuery(document).ready(function() {
 
 	public function hasGroupsAccessToProjects($idProject, $groups) {
 		$selectedUserGroupNames = array();
-		$userGroups = User::getLdapGroupsNames();
+		$userGroups = $this->_getLdapGroupsNames();
+		DBG::_('DBG', '>1', "hasGroupsAccessToProjects({$idProject}). userGroups", $userGroups, __CLASS__, __FUNCTION__, __LINE__);
 		foreach ($groups as $idGroup) {
 			$selectedUserGroupNames[$idGroup] = $userGroups[$idGroup];
 		}
+		DBG::_('DBG', '>1', "hasGroupsAccessToProjects({$idProject}). selectedUserGroupNames", $selectedUserGroupNames, __CLASS__, __FUNCTION__, __LINE__);
 		if ($idProject >= 0) {
 			if (array_key_exists($idProject, $this->_projectInfo)) {
+				DBG::_('DBG', '>1', "hasGroupsAccessToProjects({$idProject}). _projectInfo[$idProject]", $this->_projectInfo[$idProject], __CLASS__, __FUNCTION__, __LINE__);
 				$alcGroupRead = V::get('aclGroupRead', null, $this->_projectInfo[$idProject]);
 				if (!$alcGroupRead) {
 					return false;
@@ -944,7 +464,7 @@ jQuery(document).ready(function() {
 	}
 
 	private function _userHasAccessToProject($project) {
-		$groups = User::getLdapGroupsNames();
+		$groups = $this->_getLdapGroupsNames();
 		$userLogin = User::getLogin();
 		if ($project->aclOwner == $userLogin) {
 			return true;
@@ -957,7 +477,8 @@ jQuery(document).ready(function() {
 
 	public function getUsedUserGroups() {
 		$groups = array();
-		$userGroups = User::getLdapGroupsNames();
+		$userGroups = $this->_getLdapGroupsNames();
+		DBG::_('DBG', '>2', "getUsedUserGroups(). userGroups:", $userGroups, __CLASS__, __FUNCTION__, __LINE__);
 		foreach ($this->_projectInfo as $projectInfo) {
 			if (!empty($projectInfo->aclGroupRead)) {
 				$groupKey = array_search($projectInfo->aclGroupRead, $userGroups);
@@ -966,9 +487,28 @@ jQuery(document).ready(function() {
 				}
 			}
 		}
+		DBG::_('DBG', '>2', "getUsedUserGroups(). groups:", $groups, __CLASS__, __FUNCTION__, __LINE__);
 		return $groups;
 	}
 
+	public function _getLdapGroupsNames() {
+		$usrStorageMacOSX = UserStorageFactory::getStorage('MacOSX');
+		if (!$usrStorageMacOSX) throw new Exception("Error storage 'MacOSX' not exists!");
+		$userGroupsByZasobId = array();
+		$userGroups = User::getLdapGroupsNames();
+		DBG::_('DBG', '>3', "_getLdapGroupsNames(). userGroups:", $userGroups, __CLASS__, __FUNCTION__, __LINE__);
+		foreach ($userGroups as $uidGroup) {
+			$idZasob = $usrStorageMacOSX->getGroupIdFromUid($uidGroup);
+			if ($idZasob) {
+				$userGroupsByZasobId[$idZasob] = $uidGroup;
+			} else {
+				//$userGroupsByZasobId[$uidGroup] = $uidGroup;
+			}
+		}
+		DBG::_('DBG', '>3', "_getLdapGroupsNames(). userGroupsByZasobId:", $userGroupsByZasobId, __CLASS__, __FUNCTION__, __LINE__);
+		return $userGroupsByZasobId;
+	}
+
 	private function _reacountCostsFromKoresp() {
 		$projMonthHasCostSelfIds = array();
 		foreach ($this->_costs as $kProjId => $vProjInfo) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
SE/stuff/bundle.se_route_budget.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
SE/stuff/vendors.js


Некоторые файлы не были показаны из-за большого количества измененных файлов