leguwork_public/board.php
2021-04-02 10:30:40 +08:00

427 lines
14 KiB
PHP

<?php
$userinfo = getUserInfo($MYID);
$rqorgid = r('orgid');
?>
<!DOCTYPE html>
<html>
<head>
<? require_once "header.html"; ?>
<script type="text/javascript" src="scripts/colpick.js?_<?=filemtime('scripts/colpick.js')?>"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>-->
<link type="text/css" href="css/colpick.css?_<?=filemtime('css/colpick.css')?>" rel="stylesheet" />
</head>
<body>
<? require_once "leftbar.html"; ?>
<? require_once "projectheader.html"; ?>
<!-- <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">-->
<link type="text/css" href="css/bootstrap.min.css?_<?=filemtime('css/bootstrap.min.css')?>" rel="stylesheet" />
<style>
.h1_title{
font-size: 25px;
margin-left: 10px;
margin-top: 10px;
}
a.star_top{
color: red;
}
.right_ico{
margin: 0px 3px;
}
.board_star_num{
font-size: 13px;
/*margin-right: 10px;*/
/*margin-top: 5px;*/
display: inline-block;
width: 77px;
}
.main_board_act{
display: none;
}
.star_board_boardmain{
height: 100px;
}
.main_board_progress{
margin-top: 5px;
}
</style>
<script type="text/tmpl" id="tmpl-board" >
<div class="boardtmpl canchangesort">
<%
var bgcolor = "";
var scolor = localStorage['boardColor1_'+ data['_id']];
if(scolor){
if(scolor.indexOf('base64')!=-1){
bgcolor = "background-image:url("+scolor+");background-size:100%";
}else{
bgcolor = "background-color:"+scolor;
}
}
var star_icon = 'fa-star-o';
%>
<div class="boardmain" data-id="<%=data['_id']%>" data-title="<%=data['title']%>" style="position: relative;<%=bgcolor%>">
<a href="./?app=list&boardid=<%=data['_id']%>"><%=data['title']%></a>
<%if(MYINFO && MYINFO.extData && MYINFO.extData.admin=='all'){%>
<span style="font-size:12px;font-weight: normal;"><%=(MYINFO&&MYINFO.extData&&MYINFO.extData.admin?data['orgname']:"")%></span>
<%}%>
<!--div style="float:right"><a class="fa <%=star_icon%> js_star_board" href="javascript:;;;" title="星标看板"></a></div-->
<div class="main_board_act" style="position: absolute; bottom: 0; text-align: right; width: 94%; font-weight: normal;">
<a class="fa fa-trash-o archivedBoard" href="javascript:;;;" title="归档该看板"></a>
<a class="fa fa-adjust colorbox" href="javascript:;;;" title="修改背景色"></a>
<a class="fa fa-sign-out jsQuitBoard" href="javascript:;;;" title="退出看板"></a>
<!--<img src="img/getcolor.png" class="colorbox" style="width: 15px;" />-->
</div>
</div>
</div>
</script>
<!-- 星标看板 -->
<script type="text/tmpl" id="tmpl-board_star" >
<div class="boardtmpl star_canchangesort board_star">
<%
var bgcolor = "";
var scolor = localStorage['boardColor1_'+ data['_id']];
if(scolor){
if(scolor.indexOf('base64')!=-1){
bgcolor = "background-image:url("+scolor+");background-size:100%";
}else{
bgcolor = "background-color:"+scolor;
}
}
var star_icon = 'fa-star';
var progress_class = 'progress-bar-danger';
var progress_num = (data['complete_card_num'] / data['all_card_num'] * 100).toFixed(2);
if(data['remain_card_num'] <= 0 || data['all_card_num'] <= 0){
progress_num = 0;
}
if (progress_num >= 80){
progress_class = 'progress-bar-success';
}else if(progress_num >= 50){
progress_class = 'progress-bar-warning';
}
var showTopbtnClass = '';
var flagClass = '';
if (data['showTopbtn']){
flagClass = 'fa-flag';
showTopbtnClass = 'fa-caret-square-o-up';
}
var boardRightHtml = '';
if(data['showTopbtn']){
boardRightHtml += '<a class="right_ico fa fa-caret-square-o-up jsTopBoard top_board_hide" href="javascript:;;;" title="置顶"> </a>';
}
if(data['isTop']){
boardRightHtml += '<a class="right_ico fa fa-flag star_top" href="javascript:;;;" title="重要看板"> </a>';
bgcolor = "background-color: #0a009fa3";
}else{
if(data['isStar']){
boardRightHtml += '<a class="right_ico fa fa-star js_star_board" href="javascript:;;;" title="星标看板"> </a>';
}
}
%>
<div class="boardmain star_board_boardmain" data-id="<%=data['_id']%>" data-title="<%=data['title']%>" style="position: relative;<%=bgcolor%>">
<a href="./?app=list&boardid=<%=data['_id']%>"><%=data['title']%></a>
<div style="float:right">
<!-- <a class="fa <%=showTopbtnClass%> jsTopBoard top_board_hide" href="javascript:;;;" title="置顶"></a>-->
<!-- <a class="fa <%=star_icon%> js_star_board" href="javascript:;;;" title="星标看板"></a>-->
<%=boardRightHtml%>
</div>
<div style="">
<span class='board_star_num'>已完成: <%=data['complete_card_num']%></span>
<span class='board_star_num'>剩余单: <%=data['remain_card_num']%></span>
<span class='board_star_num'>总单数: <%=data['all_card_num']%></span>
</div>
<div class="main_board_progress">
<div class="progress">
<div class="progress-bar <%=progress_class%> progress-bar-striped active" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="min-width: 3em; width: <%=progress_num%>%;">
<%=progress_num%>%
</div>
</div>
</div>
<div class="main_board_act" style="position: absolute; bottom: 0; text-align: right; width: 94%; font-weight: normal;">
<a class="fa fa-trash-o archivedBoard" href="javascript:;;;" title="归档该看板"></a>
<!-- <a class="fa fa-adjust colorbox" href="javascript:;;;" title="修改背景色"></a>-->
<a class="fa fa-sign-out jsQuitBoard" href="javascript:;;;" title="退出看板"></a>
<!--<img src="img/getcolor.png" class="colorbox" style="width: 15px;" />-->
</div>
</div>
</div>
</script>
<script type="text/tmpl" id="tmpl-createproject" >
<? require_once "createproject.html"; ?>
</script>
<div id="wrap">
<!-- <div class="" style="max-width: 1200px; padding-top: 5px;; margin:auto">
<h1 class="h1_title boards-page-board-section-header-name"> 重要看板</h1>
</div>
<div id="main_top" style="max-width: 1200px; padding-top: 5px;; margin:auto">
</div>-->
<!-- <div class="" style="max-width: 1200px; padding-top: 5px;; margin:auto;clear: both"></div>-->
<!--div class="" style="max-width: 1200px; padding-top: 5px;; margin:auto">
<h1 class="h1_title boards-page-board-section-header-name"> 星标看板</h1>
</div>
<div id="main_star_1" style="max-width: 1200px; padding-top: 5px;; margin:auto">
<div id="main_star_top" style="max-width: 1200px; padding-top: 5px;; margin:auto">
</div>
<div id="main_star" style="max-width: 1200px; margin:auto">
</div>
</div-->
<div class="" style="max-width: 1200px; padding-top: 5px;; margin:auto;clear: both"></div>
<div class="" style="max-width: 1200px; padding-top: 5px;; margin:auto">
<h1 class="h1_title boards-page-board-section-header-name" style=";width:120px;display:inline-block"> 项目看板</h1>
<?php
if($userinfo && $userinfo['extData'] && $userinfo['extData']['admin']==='all'){
$orgs = getorgs();
?>
<span>
<select style="padding:5px;" id="selectorg">
<option value="">切换组织</option>
<? foreach($orgs as $orgid=>$orgname){?>
<option value="<?=$orgid?>"><?=$orgname?></option>
<? } ?>
</select>
</span>
<?php
}
?>
</div>
<div id="main" style="max-width: 1200px; padding-top: 5px;; margin:auto"></div>
</div>
</body>
<script>
var rqorgid="<?=$rqorgid?>";
var sortData = {};
if(localStorage.boardSortData){
try{
sortData = JSON.parse(localStorage.boardSortData);
}catch(e){}
}
function initBoard(){
getboards(function(json){
DATA.boards = json;
fmtBoards();
},rqorgid);
}
function bindBoardSort(){
try{
$('#main').sortable('destory');
}catch(e){}
var lastSortCard;
$('#main').sortable({
connectWith: [".canchangesort"],
distance: 15,
tolerance:'pointer',
opacity:0.8,
revert:100,
helper:'clone',
appendTo:'body',
start : function(event, ui){
},
stop: function(event, ui){
sortData = {};
$('.canchangesort').each(function(index){
var boardid = $(this).find('.boardmain').data('id');
sortData[boardid] = index;
});
localStorage.boardSortData = JSON.stringify(sortData);
},
}).disableSelection();
}
function fmtBoards(){
boards = [];
for(var bid in DATA.boards){
DATA.boards[bid].sort = sortData[bid] || 0;
boards.push( DATA.boards[bid] );
}
boards.sort(function(a,b){
return a.sort - b.sort;
});
console.log('fmtBoards',boards);
fill('#tmpl-board', boards ,'#main');
$('#main').prepend('<div class="boardtmpl">\
<div class="boardmain" style="background-color:#999;text-align: center;line-height: 50px;">\
<a href="javascript:;" class="addprojecthref">新建看板</a>\
</div>\
</div><div class="boardtmpl">\
<div class="boardmain" style="text-align: center;line-height: 50px;">\
<a href="./?app=mylists" class="tomylists">与我相关</a>\
</div>\
</div>');
bindBoardSort();
//选色器
$('.colorbox').colpick({
onChange:function(hsb,hex,rgb,el,bySetColor) {
//$(el).css('border-color','#'+hex);
var b = $(el).parents('.boardmain');
var id = b.data('id');
b.css('background-color','#'+hex);
localStorage['boardColor_'+ id] = '#'+hex;
//console.log(hex);
},
onSubmit:function(hsb,hex,rgb,el) {
$(el).colpickHide();
}
});
//粘贴背景图片
$('.boardmain').pasteImageReader(function(results){
var id = $(this).data('id');
console.log(id);
localStorage['boardColor_'+ id] = results.dataURL;
fmtBoards();
});
}
//创建看板
$('body').on('click','.addprojecthref',function(e){
$('#createproject').remove();
var html = T( $('#tmpl-createproject').html() , {} );
$('body').append( html );
$('#createproject').css({
'left':e.clientX+5,
'top':e.clientY+10
});
return false;
});
//创建submit
$('body').on('click','.addboard_btnsubmit',function(e){
var val = $('.addboard_text').val();
if(val.length == 0)return;
doSubmitAddboard(val,function(json){
$('.close_createproject').click();
});
});
$('#selectorg').on('change',function(e){
var orgid = $(this).val();
console.log(orgid);
location.href="./?app=board&orgid="+orgid;
});
$('#selectorg').val("<?=$rqorgid?>");
//创建界面X
$('body').on('click','.close_createproject',function(e){
$('#createproject').remove();
});
$('#main').click(function(){
$('#createproject').remove();
});
//归档看板
$('body').on('click','.archivedBoard',function(e){
var title = $(this).parents('.boardmain').data('title');
var id = $(this).parents('.boardmain').data('id');
var code = prompt('输入口令归档看板['+ title +']');
if(code==null)return;
if(code == 'legucc'){
doArchivedboard(id);
}else{
alert('口令错误');
}
});
// 退出看板
$('body').on('click','.jsQuitBoard',function(e){
var title = $(this).parents('.boardmain').data('title');
var boardid = $(this).parents('.boardmain').data('id');
if(confirm('你确定退出该项目吗?')){
$.get('./?app=api&apiact=quit_board&boardid='+ boardid , function(text){
initBoard();
});
}
});
// 置顶看板
$('body').on('click','.jsTopBoard',function(e){
var title = $(this).parents('.boardmain').data('title');
var id = $(this).parents('.boardmain').data('id');
var isTop = confirm('你确定置顶该项目吗?');
if(isTop){
// doArchivedboard(id);
var bid = $(this).parents('.boardmain').data('id');
var url = pyapi_host + '/v2/main_board/toggle_top_board?uid=' + MYID + '&bid=' + bid;
console.log('quit_board uid',MYID, ' bid ', bid );
$.get(url,function (data) {
initBoard();
});
}
});
// 星标看板
$('body').on('click','.js_star_board',function(e){
// var title = $(this).parents('.boardmain').data('title');
var bid = $(this).parents('.boardmain').data('id');
var url = pyapi_host + '/v2/main_board/toggle_star?uid=' + MYID + '&bid=' + bid;
$.get(url,function (data) {
initBoard();
});
});
$('body').on('mouseenter','.boardmain',function (e) {
$(this).find('.main_board_act').show();
});
$('body').on('mouseleave','.boardmain',function (e) {
$(this).find('.main_board_act').hide();
});
EVENT.on('addboard',function(data){
initBoard();
});
EVENT.on('archivedboard',function(data){
initBoard();
});
initBoard();
</script>
</html>