$error = null;
$urls = null;
-if (isset($_POST['remote_url'])) {
- $fr = new ForkRemote($_POST['remote_url']);
+if (isset($_REQUEST['remote_url'])) {
+ if (substr($_REQUEST['remote_url'], 0, 9) == 'web+fork:') {
+ $_REQUEST['remote_url'] = substr($_REQUEST['remote_url'], 9);
+ }
+
+ $fr = new ForkRemote($_REQUEST['remote_url']);
if (false === $fr->parse()) {
//no url found
- $error = 'No git:// clone URL found';
+ $error = $fr->error;
} else if (false !== ($gitUrl = $fr->getUniqueGitUrl())) {
if (isset($_POST['orig_url'])) {
$fr->setUrl($_POST['orig_url']);
}
$forker = new Forker();
- $new = $forker->forkRemote($gitUrl, $fr->getUrl());
- redirect($new->getLink('display'));
+ try {
+ $new = $forker->forkRemote(
+ $gitUrl['url'], $fr->getUrl(), $gitUrl['title']
+ );
+ redirect($new->getLink('display', null, true));
+ } catch (\Exception $e) {
+ $error = $e->getMessage();
+ }
} else {
//multiple urls found
$urls = $fr->getGitUrls();
render(
'fork-remote',
array(
- 'remote_url' => isset($_POST['remote_url']) ? $_POST['remote_url'] : '',
+ 'remote_url' => isset($_REQUEST['remote_url']) ? $_REQUEST['remote_url'] : '',
'error' => $error,
'urls' => $urls,
'urlselsize' => $selsize,