Commit:    c665e91b8cf2d152e599ae4b1834aeb20046952e
Author:    Anatol Belski <a...@php.net>         Fri, 11 Nov 2016 19:17:55 +0100
Parents:   7e0c0ceed1d13766a2e47370495c9fc1a005b8b6
Branches:  master

Link:       
http://git.php.net/?p=web/qa.git;a=commitdiff;h=c665e91b8cf2d152e599ae4b1834aeb20046952e

Log:
implement setting labels

Changed paths:
  M  pulls/api.php
  M  pulls/index.php
  M  pulls/pullrequests.js


Diff:
diff --git a/pulls/api.php b/pulls/api.php
index a23e166..1b11d50 100644
--- a/pulls/api.php
+++ b/pulls/api.php
@@ -116,6 +116,22 @@ function ghchangestate($pull, $state)
        return (bool)do_http_request($pull->_links->self->href, $opts);
 }
 
+function ghsetlabels($pull, $labels)
+{
+       if (!is_array($labels)) {
+               return true;
+       }
+
+       $opts = array(
+               'method'  => 'PUT',
+               'content' => json_encode($labels),
+       );
+
+       $url = $pull->issue_url . "/labels";
+
+       return (bool)do_http_request($url, $opts);
+}
+
 function login()
 {
        global $errors;
@@ -202,10 +218,12 @@ function ghupdate()
 
        $comment = @get_magic_quotes_gpc() ? stripslashes($_POST['comment']) : 
$_POST['comment'];
 
-       if (!ghpostcomment($pull, $comment)) {
-               header('500 Internal Server Error');
-               $errors[] = "Failed to add comment on GitHub";
-               die(json_encode(array('success' => false, 'errors' => 
$errors)));
+       if (!is_array($_POST['labels'])) {
+               if (!ghpostcomment($pull, $comment)) {
+                       header('500 Internal Server Error');
+                       $errors[] = "Failed to add comment on GitHub";
+                       die(json_encode(array('success' => false, 'errors' => 
$errors)));
+               }
        }
 
        if (!empty($_POST['state'])) {
@@ -216,6 +234,14 @@ function ghupdate()
                }
        }
 
+       if (is_array($_POST['labels'])) {
+               if (!ghsetlabels($pull, $_POST['labels'])) {
+                       header('500 Internal Server Error');
+                       $errors[] = "Failed to set labels";
+                       die(json_encode(array('success' => false, 'errors' => 
$errors)));
+               }
+       }
+
        die(json_encode(array('success' => true)));
 }
 
diff --git a/pulls/index.php b/pulls/index.php
index 4225748..6a5bef8 100644
--- a/pulls/index.php
+++ b/pulls/index.php
@@ -96,6 +96,7 @@ $ git push origin master     # everything okay? good, let's 
push it
        <button>OK</button>
    </script>
    <script id="updatePullRequestTemplate" type="text/x-jquery-tmpl">
+       Labels: <span></span>
        State: <select id="newState">
                 <option>open</option>
                 <option>closed</option>
diff --git a/pulls/pullrequests.js b/pulls/pullrequests.js
index 7252a21..17c15a5 100644
--- a/pulls/pullrequests.js
+++ b/pulls/pullrequests.js
@@ -181,7 +181,7 @@ function loadRepo(repo, url) {
                                                                        break;
                                                                }
                                                        }
-                                                       input_html += ' 
value="' + repo_labels.data[i].name + '"';
+                                                       input_html += ' name="' 
+ repo_labels.data[i].name + '"';
                                                        input_html += " />";
                                                        li_el.append(input_html 
+  repo_labels.data[i].name);
                                                }
@@ -197,6 +197,19 @@ function loadRepo(repo, url) {
                 var dia = 
$('<div></div>').html($("#updatePullRequestTemplate").render({}))
                                           .dialog({title: 
$(this).data("number")+': '+$(this).data("title")+' 
('+$(this).data("state")+')' });
                 $("button", dia).click(function(r, n, dia) { return 
function(ev) { updateRepo(r, n, dia); ev.preventDefault();}}(repo, 
$(this).data("number"), dia) );
+
+               var labels = $('[id^="pr-' + $(this).data("number") + 
'-label"]');
+               console.log(labels);
+               if (0 == labels.length) {
+                       $("span", dia).append("<span>Unchanged</span>");
+               } else {
+                       labels.each(function(i, v) {
+                               if (v.checked) {
+                                       $("span", dia).append(v.name + " ");
+                               }
+                       });
+               }
+               $("span", dia).append("<br />");
                 ev.preventDefault();
             });
             $("#repoPullList").accordion({ autoHeight: false });
@@ -213,13 +226,22 @@ function updateRepo(reponame, num, dia) {
         login.showLoginForm();
         return;
     }
+
+    var labs_arg = null;
+    var labs = $('[id^="pr-' + num + '-label"]');
+    if (0 < labs.length) {
+       labs_arg = [];
+       labs.each(function(i, v){if(v.checked){labs_arg.push(v.name);}});
+    }
+
     $("#loading").show();
     $.ajax({ url: API_URL, type: "POST", data: {
         action: 'ghupdate',
         repo: reponame,
         id: num,
         state: $("select", dia).val(),
-        comment: $("textarea", dia).val()
+        comment: $("textarea", dia).val(),
+        labels: labs_arg
     }, success: function(d) {
         if (d.success) {
             loadRepo(reponame);


--
PHP Quality Assurance Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to