bcom/projet.php

355 lines
14 KiB
PHP

<?php
session_start();
include_once 'clazz/Zincluder.php';
try{
$projet = Projet::showProject($_SESSION['session_id'] ?? NULL,$_SESSION['session_mdp'] ?? NULL,$_GET['p'] ?? NULL);
}catch(SQLProcessingException $e){
error_log($e);
echo $e->getHtmlMessage();
$_SESSION ['current_error'] = $e->getHtmlMessage();
header ( 'Location:' . $e->getPreferredRedirection() ?? 'others.php' );
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<?php include 'includes/meta.php'; ?>
</head>
<body>
<?php include 'includes/header.php'; ?>
<h1>Mes projets</h1>
<script>
var projectPublic = <?php echo $projet['public']?'true':'false'; ?>;
</script>
<h1>Le projet <?php echo($projet['name']); ?></h1>
<br/>
<?php
$ssu = $projet['ownerID'] == ($_POST['session_id'] ?? -1);
$couple = Utility::getHierarchicCouple();
echo $couple[0] . ' : ' . $projet['ownerPseudo'] . '<br/>';
$str = $couple[1] . ' : ';
foreach($projet['sowners'] as $sowner)
$str .= $sowner['pseudo'] . ', ';//TODO add link to membre.php
if(count($projet['sowners']) > 0)
echo '<span id="sOwnersText">'.substr($str,0,-2).'</span>';
?>
<?php if($ssu){ ?>
<br/>
<br/><button id="managePeopleButton">G&eacute;rer les <?php echo $couple[1];?></button>
<br/><button id="editProjectButton">Editer le projet</button>
<br/><button id="newVersionButton">Nouvelle version</button>
<div class="fullscreen absent big-background-semi-opaque" id="managePeoplePanel">
<div class="screen-vertical-centered">
<div class="screen-horizontal-centered opaque big-background-opaque" id="managePeoplePan">
<ul class="gray-bordered fast-full-width gone-puce">
Mise a jour de la liste
</ul>
<form>
<input type="text"/>
<button>Ajouter un <?php echo $couple[1];?></button>
</form>
<button>Supprimer les <?php echo $couple[1];?> s&eacute;lectionn&eacute;s</button><br/>
<button>Termin&eacute; !</button>
<script>
$('#managePeoplePan form button').click(function(){
var peopleIDs = new Array();
$(this).prop('disabled',true);
$.post('executor.php?action=addPeople&p='+projectID,{peopleName : $('#managePeoplePan form input').val()},function(){$('#managePeoplePan form button').prop('disabled',false);askPeopleUpdate();});
});
$('#managePeoplePan form').bind('submit',function() {return false;});
$('#managePeoplePan > button:nth-of-type(1)').click(function(){
var peopleIDs = new Array();
$(this).prop('disabled',true);
$('#managePeoplePan ul li.selected').each(function(){peopleIDs.push($(this).data('membreID'));});
$.post('executor.php?action=removePeople&p='+projectID,{peopleIDs : peopleIDs.join(',')},function(){$('#managePeoplePan button:nth-of-type(1)').prop('disabled',false);askPeopleUpdate();});
});
$('#managePeoplePan > button:nth-of-type(2)').click(function(){
$('#managePeoplePanel').fadeOut(600);
});
var askPeopleUpdate = function(){
$.post('executor.php?action=getPeopleList&p='+projectID,{},answerPeopleList);
};
var answerPeopleList = function(newList){
var list = eval(newList);
$('#managePeoplePan ul').empty();
if(list.length < 1)$('#managePeoplePan ul').text("Ce projet n'a pas de <?php echo $couple[1];?>");
var pseudos = new Array();
list.forEach(function(item){
var element = $('<li></li>');
pseudos.push(item['pseudo']);
element.text(item['pseudo']);
element.data('membreID',item['ID']);
$('#managePeoplePan ul').append(element);
});
$('#managePeoplePan ul li').click(function(e){
$(e.target).toggleClass('selected');
});
$('#sOwnersText').text(pseudos.join(','));
};
</script>
</div>
</div>
</div>
<div class="fullscreen absent big-background-semi-opaque" id="editProjectPanel">
<div class="screen-vertical-centered">
<div class="screen-horizontal-centered" id="editProjectPan">
<ul class="gray-bordered fast-full-width gone-puce">
Mise a jour de la liste
</ul>
<button id="nOwnerButton">Nommer nouveau <?php echo $couple[0];?></button><br/>
<button id="projectPublicButton"></button><br/>
<button id="delProjectButton">Supprimer le projet &lt;/!\ Tr&egrave;s dangereux&gt;</button><br/>
<button id="editProjectDone">Termin&eacute; !</button>
<script>
var askPeopleNOwnUpdate = function(){
$.post('executor.php?action=getPeopleList&p='+projectID,{},answerPeopleNOwnList);
};
$('#editProjectPan #projectPublicButton').click(function(){
$('#editProjectPan #projectPublicButton').prop('disabled',true);
$.post('executor.php?action=setPublicy&p='+projectID,{publicy : !projectPublic},function(data){
$('#editProjectPan #projectPublicButton').prop('disabled',false);
if(data != 'ok')return;
projectPublic = !projectPublic;
nameProject();
});
});
$('#editProjectPan #nOwnerButton').click(function(){
var idToName = $('#editProjectPan > ul > li.selected').data('membreID');
if(!idToName)return;
$('#messagePan').addClass('redMessage').html('Voulez vous vraiment promouvoir ce ministre en président ? Vous serez r&eacute;trograd&eacute; en simple ministre t lenouveau pr&eacute;sident pourra a tout moment vous virez ! Ne nommez pas un pr&eacute;sident si vous n\'avez pas confiance en lui<br/><button>Par les pouvoir qui me sont conf&eacute;r&eacute;s, je nomme nouveau pr&eacute;sident ...</button><button>Je suis bien ici en fait !</button>');
$('#messagePan button:nth-of-type(1)').click(function(){
$('#messagePanel').fadeOut(600);
$('#editProjectPan #nOwnerButton').prop('disabled',true);
$.post('executor.php?action=nameOwner&p='+projectID,{nOwnerID : idToName},function(data){
if(data == 'ok')window.location.reload();
$('#editProjectPan #nOwnerButton').prop('disabled',false);
});
});
$('#messagePan button:nth-of-type(2)').click(function(){
$('#messagePanel').fadeOut(600);
});
$('#messagePanel').fadeIn(600);
});
$('#editProjectPan #delProjectButton').click(function(){
$('#messagePan').addClass('redMessage').html('Voulez vous vraiment supprimer ce projet ? Les fichiers seront supprim&eacute;s automatiquement et seront irr&eacute;cup&eacute;rables, le nom de projet sera lib&eacute;s et toutes les informations additionelles seront aussi supprim&eacute;es et ce, d&eacute;finitivement !<br/><button>C\'est ainsi que projet nous quitte ...</button><button>NONNNNNNN !!!!! NE MEURS PAS PROJEEEEEEET !!!!</button>');
$('#messagePan button:nth-of-type(1)').click(function(){
$('#messagePanel').fadeOut(600);
$('#editProjectPan #delProjectButton').prop('disabled',true);
$.post('executor.php?action=delProject&p='+projectID,{},function(data){
if(data == 'ok')window.location.replace('projets.php');
$('#editProjectPan #delProjectButton').prop('disabled',false);
});
});
$('#messagePan button:nth-of-type(2)').click(function(){
$('#messagePanel').fadeOut(600);
});
$('#messagePanel').fadeIn(600);
});
var answerPeopleNOwnList = function(newList){
var list = eval(newList);
$('#editProjectPan ul').empty();
if(list.length < 1)$('#editProjectPan ul').text("Ce projet n'a pas de <?php echo $couple[1];?>");
list.forEach(function(item){
var element = $('<li></li>');
element.text(item['pseudo']);
element.data('membreID',item['ID']);
$('#editProjectPan ul').append(element);
});
$('#editProjectPan ul li').click(function(e){
$('#editProjectPan ul li').removeClass('selected');
$(e.target).addClass('selected');
});
};
var nameProject = function(){
$('#editProjectPan #projectPublicButton').text(projectPublic?"Le projet est public":"Le projet n'est pas public");
}
$('#editProjectPan > #editProjectDone').click(function(){
$('#editProjectPanel').fadeOut(600);
});
</script>
</div>
</div>
</div>
<div class="fullscreen absent big-background-semi-opaque" id="newVersionPanel">
<div class="screen-vertical-centered">
<div class="screen-horizontal-centered" id="newVersionPan">
<form id="nVersionForm">
<label for="nVersionName">Nom de la version</label>
<input type="text" id="nVersionName" /><br/>
<label for="languageSelect">Langage :</label>
<select id="languageSelect">
<option value="Java">Java</option>
<option value="VBA">VBA</option>
</select><br/>
<label for="nVAlphaCheck">Alpha : </label>
<input type="checkbox" id="nVAlphaCheck" value="alpha"/><br/>
<label for="nVBetaCheck">Beta : </label>
<input type="checkbox" id="nVBetaCheck" value="beta"/><br/>
<label for="nVReleaseCheck">Release : </label>
<input type="checkbox" id="nVReleaseCheck" value="release"/><br/>
<label for="nVBuggedCheck">Bogu&eacute; : </label>
<input type="checkbox" id="nVBuggedCheck" value="bugged"/><br/>
</form><br/>
<ul class="gray-bordered fast-full-width gone-puce">
Mise a jour de la liste
</ul>
<button id="createVersionDone">Cr&eacute;er la version</button><br/>
<button id="createVersionAbort">En fait ... non</button>
<script>
$('#nVersionName').on('input',updateVersionName);
$('#newVersionPan form').bind('submit',function() {return false;});
$('#createVersionDone').click(sendCreationRequest);
$('#createVersionAbort').click(function(){
$('#newVersionPanel').fadeOut(600);
});
var askVersionUpdate = function(){
$.post('executor.php?action=getVersionList&p='+projectID,{},answerVersionList);
};
var answerVersionList = function(newList){
var list = eval(newList);
$('#newVersionPan ul').empty();
$('#newVersionPan ul').append($('<li>&zwnj;</li>').attr('id',"versionAbsPotentialPos-1").addClass('potentialPos'));
list.forEach(function(item,index){
var element = $('<li></li>');
element.text(item['name']);
element.data('versionAbs',item['versionAbs']);
element.addClass('hoverable');
$('#newVersionPan ul').append(element);
$('#newVersionPan ul').append($('<li>&zwnj;</li>').attr('id',"versionAbsPotentialPos" + index).addClass('potentialPos').css('display','none'));
});
window.currentIndex = $('#newVersionPan ul > li.hoverable').length - 1;
window.savedCurrentIndex = currentIndex;
$('#newVersionPan ul li.hoverable').mousemove(function(e){
var itemIndex = $('#newVersionPan ul > li.hoverable').index(this);
var index = (currentIndex < itemIndex)?itemIndex:itemIndex-1;
if(currentIndex != index){
$("#versionAbsPotentialPos"+currentIndex).css('display','none');
currentIndex = index;
$("#versionAbsPotentialPos"+currentIndex).css('display','block');
}
});
$('#newVersionPan ul').click(function(){
savedCurrentIndex = currentIndex;
});
$('#newVersionPan ul').hover(null,function(){
$("#versionAbsPotentialPos"+currentIndex).css('display','none');
currentIndex = savedCurrentIndex;
$("#versionAbsPotentialPos"+currentIndex).css('display','block');
});
};
function updateVersionName(){
var name = $('#nVersionName').val();
var pp = $('#newVersionPan ul li.potentialPos');
(name.match(/^\s*$/))?pp.html('&zwnj;'):pp.text(name);
}
function sendCreationRequest(){
var name = $('#nVersionName').val();
var langage = $('#languageSelect').val();
var tags = new Array();
$("#nVersionForm input:checked").each(function(){
tags.push($( this ).val());
});
var insertIndex = savedCurrentIndex;
$.post('executor.php?action=createVersion&p='+projectID,{name:name,langage:langage,tags:tags.join(' '),insertIndex:insertIndex},answerCreationRequest);
}
function answerCreationRequest(data){
if(data != 'ok'){
console.log(data);//TODO la jolie boite de dialogue
}else
window.location.replace(data);
}
</script>
</div>
</div>
</div>
<div class="fullscreen absent big-background-semi-opaque" id="messagePanel">
<div class="screen-vertical-centered">
<div class="screen-horizontal-centered" id="messagePan">
<!-- Progamically filled -->
</div>
</div>
</div>
<script type="text/javascript">
$('#managePeopleButton').click(function(){
askPeopleUpdate();
$('#managePeoplePanel').fadeIn(600);
});
$('#editProjectButton').click(function(){
askPeopleNOwnUpdate();
nameProject();
$('#editProjectPanel').fadeIn(600);
});
$('#newVersionButton').click(function(){
askVersionUpdate();
$('#newVersionPanel').fadeIn(600);
});
</script>
<?php } ?>
<br/>
<br/>
<?php if(count($projet['versions']) > 0){ ?>
<?php $languages = array();
foreach($projet['versions'] AS $version)
array_push($languages,$version['language']);
$languages = array_unique($languages,SORT_REGULAR); ?>
<h3>Toutes les versions :</h3>
<br/>
<?php foreach($languages as $language){ ?>
<table class="versionTable">
<tr>
<th><?php echo Langage::getFromId($language)->getName(); ?></th>
</tr>
<?php foreach ($projet['versions'] as $writingVersion){if($writingVersion['language'] == $language){ ?>
<tr><td><a href = "version.php?v=<?php echo $writingVersion['ID'];?>"><?php echo $writingVersion['name']; ?></a></td></tr>
<?php }}?>
</table>
<?php } ?>
<?php }?>
<br/>
<br/>
<?php include 'includes/footer.php'; ?>
</body>
</html>