From c3b8248962bd9b78a8207d5d275395a886d2ee5a Mon Sep 17 00:00:00 2001
From: wyu <kknd09321@nate.com>
Date: 수, 15 12월 2021 10:31:02 +0900
Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa

---
 src/main/webapp/scripts/app/issue/issueDetail.controller.js |  306 +++++++++++++++++++++++++++-----------------------
 1 files changed, 166 insertions(+), 140 deletions(-)

diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index d3dda22..15203d4 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -28,6 +28,7 @@
                 $scope.fn.updateActiveHistory = updateActiveHistory;    //  �솢�룞 �궡�뿭�뿉�꽌 �쟾泥� 蹂닿린 �꺆�쓣 �닃���쓣 �븣 �뙎湲�, 湲곕줉 �젙蹂대�� �뾽�뜲�씠�듃 �븳�떎.
                 $scope.fn.getChangeIssueStatusList = getChangeIssueStatusList;    //  �씠�뒋�쓽 �쁽�옱 �긽�깭�뿉�꽌 蹂�寃� 媛��뒫�븳 �씠�뒋 �깄�깭 紐⑸줉 媛��졇�삤湲�
                 $scope.fn.modifyIssueStatus = modifyIssueStatus;    //  �씠�뒋 �긽�깭 蹂�寃�
+                $scope.fn.modifyDownIssueStatus = modifyDownIssueStatus;    //�븯�쐞 �씠�뒋 �긽�깭 蹂�寃�
                 $scope.fn.modifyIssueUser = modifyIssueUser;    //  �씠�뒋 �떞�떦�옄 蹂�寃�
                 $scope.fn.modifyIssueDepartment = modifyIssueDepartment;    //  �씠�뒋 �떞�떦遺��꽌 蹂�寃�
                 $scope.fn.initReload = initReload;  //  珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎.
@@ -40,17 +41,19 @@
                 $scope.fn.versionView = versionView;    //  踰꾩쟾 �젙蹂대�� �몴�떆�븳�떎.
                 $scope.fn.reservation = reservation;    //  �삁�빟 �젙蹂대�� �솗�씤 諛� 蹂�寃� �븳�떎.
                 $scope.fn.getIssueListCallBack = getIssueListCallBack;
+                $scope.fn.getDownIssueListCallBack = getDownIssueListCallBack;
                 $scope.fn.addRelationIssue = addRelationIssue;      // �뿰愿� �씠�뒋 異붽�
                 $scope.fn.addDownIssue = addDownIssue;      // �븯�쐞 �씠�뒋 異붽�
                 $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig;      // �뿰愿� �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙
                 $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig;      // �븯�쐞 �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙
-                $scope.fn.getRelTableConfigs = getRelTableConfigs;
-                $scope.fn.getDownTableConfigs = getDownTableConfigs;
+                $scope.fn.setRelTableConfigs = setRelTableConfigs;
+                $scope.fn.setDownTableConfigs = setDownTableConfigs;
                 $scope.fn.containsPartner = containsPartner;
                 $scope.fn.onActivate = onActivate;
+                $scope.fn.issueBack = issueBack;
 
                 //  �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以�
-                $scope.vm.viewer = {};
+                $scope.vm.viewer = {};      // �쁽�옱 �씠�뒋
                 $scope.vm.images = [];  //  泥⑤��맂 �뙆�씪 以� �씠誘몄� �뙆�씪
                 $scope.vm.activeTab = "ALL";    //  �솢�룞 �궡�뿭 �꺆
                 //  �씠�뒋 �긽�깭 蹂�寃� �몴�떆 �뿬遺�
@@ -125,18 +128,22 @@
                     $scope.fn.onActivate();
                 }
 
+                // �긽�쐞 �씠�뒋 �겢由��떆 �긽�쐞 �씠�뒋濡� �씠�룞
+                function issueBack() {
+                    $rootScope.currentDetailIssueId = $scope.vm.viewer.parentIssueVo.id
+                    $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId});
+                }
+
                 function onActivate() {
                     window.scroll(0,240);
                 }
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
-                //  �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊
+                 // �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊
                 $scope.$on("getIssueList", function () {
                     $scope.fn.getIssueDetail();
                 });
-
-
 
                 // �븯�쐞 �씠�뒋 �궘�젣
                 function removeDownIssue(id) {
@@ -224,6 +231,10 @@
 
                 //  �봽濡쒖젥�듃 autocomplete page �뾽�뜲�씠�듃
                 function getIssueListCallBack(result) {
+                    $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage;
+                }
+
+                function getDownIssueListCallBack(result) {
                     $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage;
                 }
 
@@ -339,6 +350,16 @@
                                 .setDAlign("text-center")
                                 .setDRenderer("ISSUE_DOWN_MOVE"));
                             break;
+
+                        case "ISSUE_DOWN_STATUS_TYPE" : //  �씠�뒋 �긽�깭
+                            $scope.vm.downTableConfigs.push($tableProvider.config()
+                                .setHName("issue.issueStatus")
+                                .setDType("renderer")
+                                .setHWidth("bold " + Down_issueTableConfig.width)
+                                .setDAlign("text-center")
+                                .setDRenderer("ISSUE_DOWN_STATUS_TYPE"));
+                            break;
+
                         case "PRIORITY" :   // �븯�쐞 �씠�뒋 �슦�꽑�닚�쐞
                             $scope.vm.downTableConfigs.push($tableProvider.config()
                                 .setHName("common.priority")
@@ -456,14 +477,16 @@
                         .setHWidth("width-60-p bold")
                         .setHSort(false)
                         .setDRenderer("ISSUE_DOWN_MOVE"))
-                    $scope.vm.downTableConfigs.push($tableProvider.config()
-                        .setHName("issue.relationIssueDelete")
-                        .setDType("renderer")
-                        .setDAlign("text-center")
-                        .setHWidth("width-20-p bold")
-                        .setDRenderer("ISSUE_DOWN_DELETE")
-                        .setHSort(false)
-                        .setDAlign("text-center"))
+                    if($scope.vm.viewer.modifyPermissionCheck){
+                        $scope.vm.downTableConfigs.push($tableProvider.config()
+                            .setHName("issue.relationIssueDelete")
+                            .setDType("renderer")
+                            .setDAlign("text-center")
+                            .setHWidth("width-20-p bold")
+                            .setDRenderer("ISSUE_DOWN_DELETE")
+                            .setHSort(false)
+                            .setDAlign("text-center"))
+                    }
 
                     angular.forEach($scope.vm.downTableConfigs, function (Down_issueTableConfig) {
                         //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
@@ -474,125 +497,100 @@
                     });
                 }
 
-                // �뿰愿� �씠�뒋 �긽�꽭 議고쉶
-                function getRelTableConfigs() {
-                    var content = {
-                        issueId : $scope.vm.viewer.id,
-                        issueTypeId : $rootScope.getCurrentIssueTypeId()
-                    };
+                // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙
+                function setRelTableConfigs(issueTableConfigVo) {
+                    if (issueTableConfigVo == null) {
+                        makeRelTableConfigs();
+                        return;
+                    }
+                    var issueTableConfigs = issueTableConfigVo.issueTableConfigs;
 
-                    IssueTableConfig.relationDetail($resourceProvider.getContent(
-                        content,
-                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
+                    //  �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎.
+                    if ($rootScope.isDefined(issueTableConfigs)) {
+                        //  �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎.
 
-                        if (result.data.message.status === "success") {
-                            var issueTableConfigs = result.data.data;
+                        $scope.vm.issueRelTableConfigs = [];
+                        $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs);
+                        $scope.vm.issueRelTableConfigs.sort(function (a, b) {
+                            return a.position < b.position ? -1 : a.position > b.position ? 1 : 0;
+                        });
 
-                            //  �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎.
-                            if ($rootScope.isDefined(issueTableConfigs)) {
-                                //  �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎.
+                        $scope.vm.relTableConfigs = [];
+                        $scope.vm.relTableConfigs.push($tableProvider.config()
+                            .setHName("issue.relationIssueType")
+                            .setDType("renderer")
+                            .setDAlign("text-center")
+                            .setHWidth("width-30-p bold")
+                            .setHSort(false)
+                            .setDRenderer("ISSUE_RELATION_TYPE"))
+                        $scope.vm.relTableConfigs.push($tableProvider.config()
+                            .setHName("issue.relationIssueTitle")
+                            .setDType("renderer")
+                            .setDAlign("text-center")
+                            .setHWidth("width-60-p bold")
+                            .setHSort(false)
+                            .setDRenderer("ISSUE_RELATION_MOVE"))
+                        angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) {
+                            //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
+                            if (Rel_issueTableConfig.display) {
+                                //  �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎.
+                                $scope.fn.setRelTableColumn(Rel_issueTableConfig);
 
-                                $scope.vm.issueRelTableConfigs = [];
-                                $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs);
-                                $scope.vm.issueRelTableConfigs.sort(function (a, b) {
-                                    return a.position < b.position ? -1 : a.position > b.position ? 1 : 0;
-                                });
-
-                                $scope.vm.relTableConfigs = [];
-                                $scope.vm.relTableConfigs.push($tableProvider.config()
-                                    .setHName("issue.relationIssueType")
-                                    .setDType("renderer")
-                                    .setDAlign("text-center")
-                                    .setHWidth("width-30-p bold")
-                                    .setHSort(false)
-                                    .setDRenderer("ISSUE_RELATION_TYPE"))
-                                $scope.vm.relTableConfigs.push($tableProvider.config()
-                                    .setHName("issue.relationIssueTitle")
-                                    .setDType("renderer")
-                                    .setDAlign("text-center")
-                                    .setHWidth("width-60-p bold")
-                                    .setHSort(false)
-                                    .setDRenderer("ISSUE_RELATION_MOVE"))
-                                angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) {
-                                    //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
-                                    if (Rel_issueTableConfig.display) {
-                                        //  �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎.
-                                        $scope.fn.setRelTableColumn(Rel_issueTableConfig);
-
-                                    }
-                                });
-                                $scope.vm.relTableConfigs.push($tableProvider.config()
-                                    .setHName("issue.relationIssueDelete")
-                                    .setDType("renderer")
-                                    .setHWidth("width-20-p bold")
-                                    .setDRenderer("ISSUE_RELATION_DELETE")
-                                    .setHSort(false)
-                                    .setDAlign("text-center"))
-
-                            } else {
-                                makeRelTableConfigs();
                             }
+                        });
+                        $scope.vm.relTableConfigs.push($tableProvider.config()
+                            .setHName("issue.relationIssueDelete")
+                            .setDType("renderer")
+                            .setHWidth("width-20-p bold")
+                            .setDRenderer("ISSUE_RELATION_DELETE")
+                            .setHSort(false)
+                            .setDAlign("text-center"))
 
-                        } else {
-                            SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉 議고쉶 �삤瑜�"
-                        }
-                    });
+                    } else {
+                        makeRelTableConfigs();
+                    }
+
                 }
 
-                // �븯�쐞 �씠�뒋 �긽�꽭 議고쉶
-                function getDownTableConfigs() {
-                    var content = {
-                        issueId : $scope.vm.viewer.id,
-                        issueTypeId : $rootScope.getCurrentIssueTypeId()
-                    };
+                // �븯�쐞 �씠�뒋 �긽�꽭 議고쉶 寃곌낵 �꽕�젙
+                function setDownTableConfigs(issueTableConfigVo) {
+                    if (issueTableConfigVo == null) return;
+                    var issueTableConfigs = issueTableConfigVo.issueTableConfigs;
 
-                    IssueTableConfig.downDetail($resourceProvider.getContent(
-                        content,
-                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
-
-                        if (result.data.message.status === "success") {
-                            var issueTableConfigs = result.data.data;
-
-                            //  �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎.
-                            if ($rootScope.isDefined(issueTableConfigs)) {
-                                //  �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎.
-                                $scope.vm.issueDownTableConfigs = [];
-                                $scope.vm.issueDownTableConfigs = JSON.parse(issueTableConfigs);
-                                $scope.vm.issueDownTableConfigs.sort(function (a, b) {
-                                    return a.position < b.position ? -1 : a.position > b.position ? 1 : 0;
-                                });
-                                $scope.vm.downTableConfigs = [];
-                                $scope.vm.downTableConfigs.push($tableProvider.config()
-                                    .setHName("issue.downIssueTitle")
-                                    .setDType("renderer")
-                                    .setDAlign("text-center")
-                                    .setHWidth("width-60-p bold")
-                                    .setHSort(false)
-                                    .setDRenderer("ISSUE_DOWN_MOVE"))
-                                angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) {
-                                    //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
-                                    if (Down_issueTableConfig.display) {
-                                        //  �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎.
-                                        $scope.fn.setDownTableColumn(Down_issueTableConfig);
-                                    }
-                                });
-                                $scope.vm.downTableConfigs.push($tableProvider.config()
-                                    .setHName("issue.relationIssueDelete")
-                                    .setDType("renderer")
-                                    .setHWidth("width-20-p bold")
-                                    .setDRenderer("ISSUE_DOWN_DELETE")
-                                    .setHSort(false)
-                                    .setDAlign("text-center"))
-
-                            } else {
-                                makeDownTableConfigs();
+                    //  �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎.
+                    if ($rootScope.isDefined(issueTableConfigs)) {
+                        //  �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎.
+                        $scope.vm.issueDownTableConfigs = [];
+                        $scope.vm.issueDownTableConfigs = JSON.parse(issueTableConfigs);
+                        $scope.vm.issueDownTableConfigs.sort(function (a, b) {
+                            return a.position < b.position ? -1 : a.position > b.position ? 1 : 0;
+                        });
+                        $scope.vm.downTableConfigs = [];
+                        $scope.vm.downTableConfigs.push($tableProvider.config()
+                            .setHName("issue.downIssueTitle")
+                            .setDType("renderer")
+                            .setDAlign("text-center")
+                            .setHWidth("width-60-p bold")
+                            .setHSort(false)
+                            .setDRenderer("ISSUE_DOWN_MOVE"))
+                        angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) {
+                            //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
+                            if (Down_issueTableConfig.display) {
+                                //  �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎.
+                                $scope.fn.setDownTableColumn(Down_issueTableConfig);
                             }
+                        });
+                        $scope.vm.downTableConfigs.push($tableProvider.config()
+                            .setHName("issue.relationIssueDelete")
+                            .setDType("renderer")
+                            .setHWidth("width-20-p bold")
+                            .setDRenderer("ISSUE_DOWN_DELETE")
+                            .setHSort(false)
+                            .setDAlign("text-center"))
 
-                        }
-                        else {
-                            SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉 議고쉶 �삤瑜�"
-                        }
-                    });
+                    } else {
+                        makeDownTableConfigs();
+                    }
                 }
 
                 // �뿰愿� �씠�뒋 異붽�
@@ -650,22 +648,26 @@
                     });
                 }
 
-                //  �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
-                //  $rootScope.$on("getIssueDetail", function (event, args) {
-                //      $scope.vm.viewer.id = args["id"];
-                //      $scope.fn.getIssueDetail();
-                //  });
-                
-                // �씠硫붿씪 蹂대궦�썑 �긽�꽭�솕硫� 媛깆떊
-                 $rootScope.$on("getIssueDetail", function (event, args) {
-                     $scope.fn.getIssueDetail();
-                 });
+                 // �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
+                 // $rootScope.$on("getIssueDetail", function (event, args) {
+                 //     $scope.vm.viewer.id = args["id"];
+                 //     $scope.fn.getIssueDetail();
+                 // });
 
                 //  �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
                 // $scope.$on("getIssueDetail", function (event, args) {
                 //     $scope.vm.viewer.id = args["id"];
                 //     $scope.fn.getIssueDetail();
                 // });
+                
+                // �씠硫붿씪 蹂대궦�썑 �긽�꽭�솕硫� 媛깆떊
+                //  $rootScope.$on("getIssueDetail", function (event, args) {
+                //      $scope.fn.getIssueDetail();
+                //  });
+
+                $scope.$on("getIssueDetail", function (event, args) {
+                    $scope.fn.getIssueDetail();
+                });
 
                 $scope.$watch(function() {
                     return $rootScope.currentDetailIssueId;
@@ -705,6 +707,25 @@
                     });
                 }
 
+                function modifyDownIssueStatus() {
+                    $uibModal.open({
+                        templateUrl : 'views/issue/downIssueModifyStatus.html',
+                        size : "md",
+                        controller : 'downIssueModifyStatusController',
+                        backdrop : 'static',
+                        resolve : {
+                            parameter : function () {
+                                return {
+                                    issueTypeId : $scope.vm.viewer.issueTypeVo.id,
+                                    issueIds : [$scope.vm.viewer.id],
+                                    downIssues : $scope.vm.viewer.issueDownVos,
+                                    projectId : $scope.vm.viewer.projectVo.id
+                                };
+                            }
+                        }
+                    });
+                }
+
                 //  �떞�떦�옄 蹂�寃�
                 function modifyIssueUser() {
                     $uibModal.open({
@@ -735,10 +756,11 @@
                         resolve : {
                             parameter : function () {
                                 return {
-                                    departmentVos : [$scope.vm.form.issues[0].departmentVos],
-                                    id : [$scope.vm.form.issues[0].id],
-                                    projectId : [$scope.vm.form.issues[0].projectVo.id],
-                                    project : [$scope.vm.form.issues[0].projectVo]
+                                    departmentVos : $scope.vm.form.issues[0].departmentVos,
+                                    id : $scope.vm.form.issues[0].id,
+                                    projectId : $scope.vm.form.issues[0].projectVo.id,
+                                    project : $scope.vm.form.issues[0].projectVo,
+                                    issueTypeId : $scope.vm.form.issues[0].issueTypeVo.id
                                 };
                             }
                         }
@@ -830,8 +852,8 @@
                     //  珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎.
                     $scope.fn.initReload();
 
-                    $scope.fn.getRelTableConfigs();
-                    $scope.fn.getDownTableConfigs();
+                    // $scope.fn.getRelTableConfigs();
+                    // $scope.fn.getDownTableConfigs();
 
                         Issue.detail($resourceProvider.getContent(
                         {id : $scope.vm.viewer.id, deep : "02"},
@@ -839,6 +861,7 @@
 
                         if (result.data.message.status === "success") {
                             if (angular.isDefined(result.data.data)) {
+
                                 $scope.vm.viewer = angular.copy(result.data.data);
                                 //  �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲�
                                 $scope.fn.makePreviewImages(result.data.data.attachedFileVos);
@@ -860,6 +883,10 @@
                                 $scope.vm.form.issuesDown = [];
                                 $scope.vm.form.issuesDown.push(result.data.data);
 
+                                var issueTableConfigVos = result.data.data.issueTableConfigVos;
+                                $scope.fn.setRelTableConfigs(issueTableConfigVos[0]);
+                                $scope.fn.setDownTableConfigs(issueTableConfigVos[1]);
+
                                 // �뿰愿� �씠�뒋 諛섎났臾�
                                 if (result.data.data.issueRelationVos !== null) {
                                     angular.forEach(result.data.data.issueRelationVos, function (issueRelationVo){
@@ -873,6 +900,7 @@
                                     angular.forEach(result.data.data.issueDownVos, function (issueDownVo){
                                         //$scope.vm.form.issuesDown.push(issueDownVo.issueDown);
                                         $scope.vm.form.issuesDown.push(issueDownVo);
+
                                     });
                                 }
                                 $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
@@ -888,8 +916,6 @@
                         }
                     });
                 }
-
-                // ===================================================================================
 
                 //  �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲�
                 function makePreviewImages(attachedFileVos) {

--
Gitblit v1.8.0