C'est joli <3

This commit is contained in:
Michel Roux 2013-10-02 16:33:16 +02:00
parent 11bab4d60b
commit 73f3b226d2
4 changed files with 50 additions and 13 deletions

View File

@ -4,6 +4,7 @@ require_once 'config/config.php';
require_once 'config/color.php'; require_once 'config/color.php';
require_once 'Net/SSH2.php'; require_once 'Net/SSH2.php';
global $servers; global $servers;
$gitstatus = 'git fetch && git status';
if (!empty($_POST['section'])) { if (!empty($_POST['section'])) {
foreach ($servers as $ssh) { foreach ($servers as $ssh) {
@ -18,12 +19,12 @@ if (!empty($_POST['action'])) {
$session = new Net_SSH2($config['host'], $config['port']); $session = new Net_SSH2($config['host'], $config['port']);
if ($session->login($config['user'], $config['pass'])) { if ($session->login($config['user'], $config['pass'])) {
if ($_POST['action'] == 'status') { if ($_POST['action'] == 'status') {
echo ansi2html($session->exec('cd ' . $config['path'] . ' && git fetch && git status')); echo ansi2html($session->exec('cd ' . $config['path'] . ' && ' . $gitstatus));
} else if ($_POST['action'] == 'push') { } else if ($_POST['action'] == 'push') {
$message = empty($_POST['message']) ? 'FTP' : $_POST['message']; $message = empty($_POST['message']) ? 'FTP' : $_POST['message'];
//echo $session->exec('cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push'); //echo $session->exec('cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push && ' . $gitstatus);
} else if ($_POST['action'] == 'pull') { } else if ($_POST['action'] == 'pull') {
//echo $session->exec('cd ' . $config['path'] . ' && git pull'); //echo $session->exec('cd ' . $config['path'] . ' && git pull && ' . $gitstatus);
} }
} }
} }

View File

@ -1,21 +1,25 @@
.btn-group > .btn:first-child { .btn-group .btn:first-child {
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
} }
.btn-group > .btn:last-child { .btn-group .btn:last-child, .input-prepend input {
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
} }
.btn-group > .btn { .btn-group .btn {
border-bottom: 0; border-bottom: 0;
} }
.btn-group .input-prepend .btn {
border-left: 0;
}
.label { .label {
position: relative; position: relative;
bottom: 4px; bottom: 4px;
} }
pre { pre, .btn-group .input-prepend .btn {
border-top-left-radius: 0; border-top-left-radius: 0;
} }
@ -33,3 +37,9 @@ pre {
background-repeat: no-repeat; background-repeat: no-repeat;
padding-left: 20px; padding-left: 20px;
} }
.input-prepend {
margin-bottom: 0;
position: relative;
top: 1px;
}

View File

@ -35,9 +35,12 @@ global $servers;
<section id="<?php echo $id; ?>"> <section id="<?php echo $id; ?>">
<h3><?php echo $param['title']; ?> <span class="label"></span></h3> <h3><?php echo $param['title']; ?> <span class="label"></span></h3>
<div class="btn-group"> <div class="btn-group">
<button class="btn" onclick="status('<?php echo $id; ?>');"><i class="icon-refresh"></i> Status</button> <button class="btn" onclick="callRequest('status', '<?php echo $id; ?>');"><i class="icon-refresh"></i> Status</button>
<button class="btn" onclick="push('<?php echo $id; ?>');"><i class="icon-arrow-up"></i> Push</button> <button class="btn" onclick="callRequest('pull', '<?php echo $id; ?>');"><i class="icon-arrow-down"></i> Pull</button>
<button class="btn" onclick="pull('<?php echo $id; ?>');"><i class="icon-arrow-down"></i> Pull</button> <div class="input-prepend">
<button class="btn" type="button"><i class="icon-arrow-up"></i> Push</button>
<input type="text" name="message" placeholder="Commit message">
</div>
</div> </div>
<pre></pre> <pre></pre>
</section> </section>

View File

@ -1,20 +1,43 @@
window.addEventListener('load', function() { window.addEventListener('load', function() {
var sections = document.querySelectorAll('section'); var sections = document.querySelectorAll('section');
for (var i = 0; i < sections.length; i++) { for (var i = 0; i < sections.length; i++) {
callRequest(sections[i].id); callRequest('status', sections[i].id);
} }
}); });
function callRequest(section) { function callRequest(action, section, message) {
var pre = document.querySelector('#' + section + ' pre'); var pre = document.querySelector('#' + section + ' pre');
pre.innerHTML = '<span class="loading">Loading ...</span>'; pre.innerHTML = '<span class="loading">Loading ...</span>';
var label = document.querySelector('#' + section + ' .label');
label.classList.remove('label-success');
label.classList.remove('label-important');
label.classList.add('label-warning');
label.innerHTML = 'Loading';
message = typeof(message) !== 'undefined' ? message : 'FTP';
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open('POST', 'ajax.php'); xhr.open('POST', 'ajax.php');
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send('action=status&section=' + section); xhr.send('action=' + action + '&section=' + section + '&message=' + message);
xhr.onreadystatechange = function() { xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) { if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {
pre.innerHTML = xhr.responseText; pre.innerHTML = xhr.responseText;
var splitLabel = xhr.responseText.split("\n").reverse();
label.classList.remove('label-warning');
if (splitLabel[1] !== 'nothing to commit (working directory clean)') {
label.classList.add('label-important');
label.innerHTML = 'Update needed';
} else {
label.classList.add('label-success');
label.innerHTML = 'OK';
}
} }
}; };
} }
function push(section) {
//callRequest('push', section, document.getElementById('message').value);
return false;
}