Add drag and drop to change swimlane positions
This commit is contained in:
parent
da7259819b
commit
5fe68d4d49
|
|
@ -3,11 +3,13 @@ Version 1.0.26 (unreleased)
|
|||
|
||||
Breaking changes:
|
||||
|
||||
* API procedures: "moveColumnUp" and "moveColumnDown" are replace by "changeColumnPosition"
|
||||
* API procedures:
|
||||
- "moveColumnUp" and "moveColumnDown" are replace by "changeColumnPosition"
|
||||
- "moveSwimlaneUp" and "moveSwimlaneDown" are replace by "changeSwimlanePosition"
|
||||
|
||||
New features:
|
||||
|
||||
* Add drag and drop to change subtasks and columns positions
|
||||
* Add drag and drop to change subtasks, swimlanes and columns positions
|
||||
* Add file drag and drop and asynchronous upload
|
||||
* Enable/Disable users
|
||||
* Add setting option to disable private projects
|
||||
|
|
|
|||
|
|
@ -48,9 +48,11 @@ class Swimlane extends \Kanboard\Core\Base
|
|||
public function updateSwimlane($swimlane_id, $name, $description = null)
|
||||
{
|
||||
$values = array('id' => $swimlane_id, 'name' => $name);
|
||||
|
||||
if (!is_null($description)) {
|
||||
$values['description'] = $description;
|
||||
}
|
||||
|
||||
return $this->swimlane->update($values);
|
||||
}
|
||||
|
||||
|
|
@ -69,13 +71,8 @@ class Swimlane extends \Kanboard\Core\Base
|
|||
return $this->swimlane->enable($project_id, $swimlane_id);
|
||||
}
|
||||
|
||||
public function moveSwimlaneUp($project_id, $swimlane_id)
|
||||
public function changeSwimlanePosition($project_id, $swimlane_id, $position)
|
||||
{
|
||||
return $this->swimlane->moveUp($project_id, $swimlane_id);
|
||||
}
|
||||
|
||||
public function moveSwimlaneDown($project_id, $swimlane_id)
|
||||
{
|
||||
return $this->swimlane->moveDown($project_id, $swimlane_id);
|
||||
return $this->swimlane->changePosition($project_id, $swimlane_id, $position);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ class Column extends Base
|
|||
public function create(array $values = array(), array $errors = array())
|
||||
{
|
||||
$project = $this->getProject();
|
||||
$columns = $this->column->getList($project['id']);
|
||||
|
||||
if (empty($values)) {
|
||||
$values = array('project_id' => $project['id']);
|
||||
|
|
@ -126,7 +125,7 @@ class Column extends Base
|
|||
$project = $this->getProject();
|
||||
$values = $this->request->getJson();
|
||||
|
||||
if (! empty($values)) {
|
||||
if (! empty($values) && isset($values['column_id']) && isset($values['position'])) {
|
||||
$result = $this->column->changePosition($project['id'], $values['column_id'], $values['position']);
|
||||
return $this->response->json(array('result' => $result));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class Swimlane extends Base
|
|||
*
|
||||
* @access public
|
||||
*/
|
||||
public function index(array $values = array(), array $errors = array())
|
||||
public function index()
|
||||
{
|
||||
$project = $this->getProject();
|
||||
|
||||
|
|
@ -44,10 +44,24 @@ class Swimlane extends Base
|
|||
'default_swimlane' => $this->swimlane->getDefault($project['id']),
|
||||
'active_swimlanes' => $this->swimlane->getAllByStatus($project['id'], SwimlaneModel::ACTIVE),
|
||||
'inactive_swimlanes' => $this->swimlane->getAllByStatus($project['id'], SwimlaneModel::INACTIVE),
|
||||
'project' => $project,
|
||||
'title' => t('Swimlanes')
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new swimlane
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function create(array $values = array(), array $errors = array())
|
||||
{
|
||||
$project = $this->getProject();
|
||||
|
||||
$this->response->html($this->template->render('swimlane/create', array(
|
||||
'values' => $values + array('project_id' => $project['id']),
|
||||
'errors' => $errors,
|
||||
'project' => $project,
|
||||
'title' => t('Swimlanes')
|
||||
)));
|
||||
}
|
||||
|
||||
|
|
@ -67,11 +81,28 @@ class Swimlane extends Base
|
|||
$this->flash->success(t('Your swimlane have been created successfully.'));
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
} else {
|
||||
$this->flash->failure(t('Unable to create your swimlane.'));
|
||||
$errors = array('name' => array(t('Another swimlane with the same name exists in the project')));
|
||||
}
|
||||
}
|
||||
|
||||
$this->index($values, $errors);
|
||||
$this->create($values, $errors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit default swimlane (display the form)
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function editDefault(array $values = array(), array $errors = array())
|
||||
{
|
||||
$project = $this->getProject();
|
||||
$swimlane = $this->swimlane->getDefault($project['id']);
|
||||
|
||||
$this->response->html($this->helper->layout->project('swimlane/edit_default', array(
|
||||
'values' => empty($values) ? $swimlane : $values,
|
||||
'errors' => $errors,
|
||||
'project' => $project,
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -79,23 +110,23 @@ class Swimlane extends Base
|
|||
*
|
||||
* @access public
|
||||
*/
|
||||
public function change()
|
||||
public function updateDefault()
|
||||
{
|
||||
$project = $this->getProject();
|
||||
|
||||
$values = $this->request->getValues() + array('show_default_swimlane' => 0);
|
||||
list($valid, ) = $this->swimlaneValidator->validateDefaultModification($values);
|
||||
list($valid, $errors) = $this->swimlaneValidator->validateDefaultModification($values);
|
||||
|
||||
if ($valid) {
|
||||
if ($this->swimlane->updateDefault($values)) {
|
||||
$this->flash->success(t('The default swimlane have been updated successfully.'));
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])), true);
|
||||
} else {
|
||||
$this->flash->failure(t('Unable to update this swimlane.'));
|
||||
}
|
||||
}
|
||||
|
||||
$this->index();
|
||||
$this->editDefault($values, $errors);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -112,7 +143,6 @@ class Swimlane extends Base
|
|||
'values' => empty($values) ? $swimlane : $values,
|
||||
'errors' => $errors,
|
||||
'project' => $project,
|
||||
'title' => t('Swimlanes')
|
||||
)));
|
||||
}
|
||||
|
||||
|
|
@ -133,7 +163,7 @@ class Swimlane extends Base
|
|||
$this->flash->success(t('Swimlane updated successfully.'));
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
} else {
|
||||
$this->flash->failure(t('Unable to update this swimlane.'));
|
||||
$errors = array('name' => array(t('Another swimlane with the same name exists in the project')));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -153,7 +183,6 @@ class Swimlane extends Base
|
|||
$this->response->html($this->helper->layout->project('swimlane/remove', array(
|
||||
'project' => $project,
|
||||
'swimlane' => $swimlane,
|
||||
'title' => t('Remove a swimlane')
|
||||
)));
|
||||
}
|
||||
|
||||
|
|
@ -197,6 +226,25 @@ class Swimlane extends Base
|
|||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable default swimlane
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function disableDefault()
|
||||
{
|
||||
$this->checkCSRFParam();
|
||||
$project = $this->getProject();
|
||||
|
||||
if ($this->swimlane->disableDefault($project['id'])) {
|
||||
$this->flash->success(t('Swimlane updated successfully.'));
|
||||
} else {
|
||||
$this->flash->failure(t('Unable to update this swimlane.'));
|
||||
}
|
||||
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable a swimlane
|
||||
*
|
||||
|
|
@ -218,32 +266,39 @@ class Swimlane extends Base
|
|||
}
|
||||
|
||||
/**
|
||||
* Move up a swimlane
|
||||
* Enable default swimlane
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function moveup()
|
||||
public function enableDefault()
|
||||
{
|
||||
$this->checkCSRFParam();
|
||||
$project = $this->getProject();
|
||||
$swimlane_id = $this->request->getIntegerParam('swimlane_id');
|
||||
|
||||
$this->swimlane->moveUp($project['id'], $swimlane_id);
|
||||
if ($this->swimlane->enableDefault($project['id'])) {
|
||||
$this->flash->success(t('Swimlane updated successfully.'));
|
||||
} else {
|
||||
$this->flash->failure(t('Unable to update this swimlane.'));
|
||||
}
|
||||
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
}
|
||||
|
||||
/**
|
||||
* Move down a swimlane
|
||||
* Move swimlane position
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function movedown()
|
||||
public function move()
|
||||
{
|
||||
$this->checkCSRFParam();
|
||||
$project = $this->getProject();
|
||||
$swimlane_id = $this->request->getIntegerParam('swimlane_id');
|
||||
$values = $this->request->getJson();
|
||||
|
||||
$this->swimlane->moveDown($project['id'], $swimlane_id);
|
||||
$this->response->redirect($this->helper->url->to('swimlane', 'index', array('project_id' => $project['id'])));
|
||||
if (! empty($values) && isset($values['swimlane_id']) && isset($values['position'])) {
|
||||
$result = $this->swimlane->changePosition($project['id'], $values['swimlane_id'], $values['position']);
|
||||
return $this->response->json(array('result' => $result));
|
||||
}
|
||||
|
||||
$this->forbidden();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Ukloni projekat',
|
||||
'Edit the board for "%s"' => 'Uredi tablu za "%s"',
|
||||
'All projects' => 'Svi projekti',
|
||||
'Change columns' => 'Zamijeni kolonu',
|
||||
'Add a new column' => 'Dodaj novu kolonu',
|
||||
'Title' => 'Naslov',
|
||||
'Nobody assigned' => 'Niko nije dodijeljen',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Dodeli boju korisniku',
|
||||
'Column title' => 'Naslov kolone',
|
||||
'Position' => 'Pozicija',
|
||||
'Move Up' => 'Podigni',
|
||||
'Move Down' => 'Spusti',
|
||||
'Duplicate to another project' => 'Dupliciraj u drugi projekat',
|
||||
'Duplicate' => 'Dupliciraj',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Da li zaista želiš ukloniti ovu swimline traku: "%s"?',
|
||||
'Inactive swimlanes' => 'Neaktivne swimline trake',
|
||||
'Remove a swimlane' => 'Ukloni swimline traku',
|
||||
'Rename' => 'Preimenuj',
|
||||
'Show default swimlane' => 'Prikaži podrazumijevanu swimline traku',
|
||||
'Swimlane modification for the project "%s"' => 'Izmjene swimline trake za projekat "%s"',
|
||||
'Swimlane not found.' => 'Swimline traka nije pronađena.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimline trake',
|
||||
'Swimlane updated successfully.' => 'Swimline traka uspjeno ažurirana.',
|
||||
'The default swimlane have been updated successfully.' => 'Podrazumijevana swimline traka uspješno ažurirana.',
|
||||
'Unable to create your swimlane.' => 'Nemoguće kreirati swimline traku.',
|
||||
'Unable to remove this swimlane.' => 'Nemoguće ukloniti swimline traku.',
|
||||
'Unable to update this swimlane.' => 'Nemoguće ažurirati swimline traku.',
|
||||
'Your swimlane have been created successfully.' => 'Swimline traka je uspješno kreirana.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Vyjmout projekt',
|
||||
'Edit the board for "%s"' => 'Editace nástěnky pro "%s" ',
|
||||
'All projects' => 'Všechny projekty',
|
||||
'Change columns' => 'Změna sloupců',
|
||||
'Add a new column' => 'Přidat nový sloupec',
|
||||
'Title' => 'Název',
|
||||
'Nobody assigned' => 'Nepřiřazena žádná osoba',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Přiřadit barvu konkrétnímu uživateli',
|
||||
'Column title' => 'Název sloupce',
|
||||
'Position' => 'Pozice',
|
||||
'Move Up' => 'Posunout nahoru',
|
||||
'Move Down' => 'Posunout dolu',
|
||||
'Duplicate to another project' => 'Vytvořit kopii v jiném projektu',
|
||||
'Duplicate' => 'Vytvořit kopii',
|
||||
'link' => 'Link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Diese Swimlane wirklich ändern: "%s"?',
|
||||
'Inactive swimlanes' => 'Inaktive Swimlane',
|
||||
'Remove a swimlane' => 'Odstranit swimlane',
|
||||
'Rename' => 'Přejmenovat',
|
||||
'Show default swimlane' => 'Standard Swimlane anzeigen',
|
||||
'Swimlane modification for the project "%s"' => 'Swimlane Änderung für das Projekt "%s"',
|
||||
'Swimlane not found.' => 'Swimlane nicht gefunden',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane erfolgreich geändert.',
|
||||
'The default swimlane have been updated successfully.' => 'Die standard Swimlane wurden erfolgreich aktualisiert. Die standard Swimlane wurden erfolgreich aktualisiert.',
|
||||
'Unable to create your swimlane.' => 'Es ist nicht möglich die Swimlane zu erstellen.',
|
||||
'Unable to remove this swimlane.' => 'Es ist nicht möglich die Swimlane zu entfernen.',
|
||||
'Unable to update this swimlane.' => 'Es ist nicht möglich die Swimöane zu ändern.',
|
||||
'Your swimlane have been created successfully.' => 'Die Swimlane wurde erfolgreich angelegt.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Fjern projekt',
|
||||
'Edit the board for "%s"' => 'Rediger boardet for "%s"',
|
||||
'All projects' => 'Alle Projekter',
|
||||
'Change columns' => 'Ændre kolonner',
|
||||
'Add a new column' => 'Tilføj en ny kolonne',
|
||||
'Title' => 'Titel',
|
||||
'Nobody assigned' => 'Ingen ansvarlig',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Tildel en farve til en bestemt bruger',
|
||||
'Column title' => 'Kolonne titel',
|
||||
'Position' => 'Position',
|
||||
'Move Up' => 'Ryk op',
|
||||
'Move Down' => 'Ryk ned',
|
||||
'Duplicate to another project' => 'Kopier til et andet projekt',
|
||||
'Duplicate' => 'Kopier',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
// 'Do you really want to remove this swimlane: "%s"?' => '',
|
||||
// 'Inactive swimlanes' => '',
|
||||
// 'Remove a swimlane' => '',
|
||||
// 'Rename' => '',
|
||||
// 'Show default swimlane' => '',
|
||||
// 'Swimlane modification for the project "%s"' => '',
|
||||
// 'Swimlane not found.' => '',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
// 'Swimlanes' => '',
|
||||
// 'Swimlane updated successfully.' => '',
|
||||
// 'The default swimlane have been updated successfully.' => '',
|
||||
// 'Unable to create your swimlane.' => '',
|
||||
// 'Unable to remove this swimlane.' => '',
|
||||
// 'Unable to update this swimlane.' => '',
|
||||
// 'Your swimlane have been created successfully.' => '',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Projekt löschen',
|
||||
'Edit the board for "%s"' => 'Pinnwand für "%s" bearbeiten',
|
||||
'All projects' => 'Alle Projekte',
|
||||
'Change columns' => 'Spalten ändern',
|
||||
'Add a new column' => 'Neue Spalte hinzufügen',
|
||||
'Title' => 'Titel',
|
||||
'Nobody assigned' => 'Nicht zugeordnet',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Einem Benutzer eine Farbe zuordnen',
|
||||
'Column title' => 'Spaltentitel',
|
||||
'Position' => 'Position',
|
||||
'Move Up' => 'nach oben',
|
||||
'Move Down' => 'nach unten',
|
||||
'Duplicate to another project' => 'In ein anderes Projekt duplizieren',
|
||||
'Duplicate' => 'Duplizieren',
|
||||
'link' => 'Link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Diese Swimlane wirklich ändern: "%s"?',
|
||||
'Inactive swimlanes' => 'Inaktive Swimlane',
|
||||
'Remove a swimlane' => 'Swimlane entfernen',
|
||||
'Rename' => 'umbenennen',
|
||||
'Show default swimlane' => 'Standard-Swimlane anzeigen',
|
||||
'Swimlane modification for the project "%s"' => 'Swimlane-Änderung für das Projekt "%s"',
|
||||
'Swimlane not found.' => 'Swimlane nicht gefunden',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane erfolgreich geändert.',
|
||||
'The default swimlane have been updated successfully.' => 'Die Standard-Swimlane wurden erfolgreich aktualisiert. Die Standard-Swimlane wurden erfolgreich aktualisiert.',
|
||||
'Unable to create your swimlane.' => 'Es ist nicht möglich, Swimlane zu erstellen.',
|
||||
'Unable to remove this swimlane.' => 'Es ist nicht möglich, die Swimlane zu entfernen.',
|
||||
'Unable to update this swimlane.' => 'Es ist nicht möglich, die Swimlane zu ändern.',
|
||||
'Your swimlane have been created successfully.' => 'Die Swimlane wurde erfolgreich angelegt.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Αφαίρεση του έργου',
|
||||
'Edit the board for "%s"' => 'Διόρθωση πίνακα από « %s »',
|
||||
'All projects' => 'Όλα τα έργα',
|
||||
'Change columns' => 'Αλλαγή στηλών',
|
||||
'Add a new column' => 'Πρόσθήκη στήλης',
|
||||
'Title' => 'Τίτλος',
|
||||
'Nobody assigned' => 'Δεν έχει ανατεθεί',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Ανάθεση χρώματος σε συγκεκριμένο χρήστη',
|
||||
'Column title' => 'Τίτλος στήλης',
|
||||
'Position' => 'Θέση',
|
||||
'Move Up' => 'Μετακίνηση πάνω',
|
||||
'Move Down' => 'Μετακίνηση κάτω',
|
||||
'Duplicate to another project' => 'Αντιγραφή σε άλλο έργο',
|
||||
'Duplicate' => 'Αντιγραφή',
|
||||
'link' => 'σύνδεσμος',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Σίγουρα θέλετε να αφαιρέσετε τη λωρίδα : « %s » ?',
|
||||
'Inactive swimlanes' => 'Λωρίδες ανενεργές',
|
||||
'Remove a swimlane' => 'Αφαιρέστε μια λωρίδα',
|
||||
'Rename' => 'Μετονομασία',
|
||||
'Show default swimlane' => 'Εμφάνιση προεπιλεγμένων λωρίδων',
|
||||
'Swimlane modification for the project "%s"' => 'Τροποποίηση λωρίδας για το έργο « %s »',
|
||||
'Swimlane not found.' => 'Η λωρίδα δεν βρέθηκε.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Η λωρίδα ενημερώθηκε με επιτυχία.',
|
||||
'The default swimlane have been updated successfully.' => 'Η προεπιλεγμένη λωρίδα ενημερώθηκε με επιτυχία.',
|
||||
'Unable to create your swimlane.' => 'Αδύνατο να δημιουργηθεί η λωρίδα.',
|
||||
'Unable to remove this swimlane.' => 'Αδύνατο να αφαιρεθεί η λωρίδα.',
|
||||
'Unable to update this swimlane.' => 'Αδύνατο να ενημερωθεί η λωρίδα.',
|
||||
'Your swimlane have been created successfully.' => 'Η λωρίδα δημιουργήθηκε με επιτυχία.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Suprimir el proyecto',
|
||||
'Edit the board for "%s"' => 'Modificar el tablero para « %s »',
|
||||
'All projects' => 'Todos los proyectos',
|
||||
'Change columns' => 'Cambiar las columnas',
|
||||
'Add a new column' => 'Añadir una nueva columna',
|
||||
'Title' => 'Título',
|
||||
'Nobody assigned' => 'Nadie asignado',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Asignar un color a un usuario específico',
|
||||
'Column title' => 'Título de la columna',
|
||||
'Position' => 'Posición',
|
||||
'Move Up' => 'Mover hacia arriba',
|
||||
'Move Down' => 'Mover hacia abajo',
|
||||
'Duplicate to another project' => 'Duplicar a otro proyecto',
|
||||
'Duplicate' => 'Duplicar',
|
||||
'link' => 'vinculación',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => '¿Realmente quiere quitar esta calle: "%s"?',
|
||||
'Inactive swimlanes' => 'Calles inactivas',
|
||||
'Remove a swimlane' => 'Quitar un calle',
|
||||
'Rename' => 'Renombrar',
|
||||
'Show default swimlane' => 'Mostrar calle por defecto',
|
||||
'Swimlane modification for the project "%s"' => 'Modificación de la calle para el proyecto "%s"',
|
||||
'Swimlane not found.' => 'Calle no encontrada',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Calles',
|
||||
'Swimlane updated successfully.' => 'Calle actualizada correctamente',
|
||||
'The default swimlane have been updated successfully.' => 'La calle por defecto ha sido actualizada correctamente',
|
||||
'Unable to create your swimlane.' => 'Imposible crear su calle',
|
||||
'Unable to remove this swimlane.' => 'Imposible de quitar esta calle',
|
||||
'Unable to update this swimlane.' => 'Imposible de actualizar esta calle',
|
||||
'Your swimlane have been created successfully.' => 'Su calle ha sido creada correctamente',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Poista projekti',
|
||||
'Edit the board for "%s"' => 'Muokkaa taulua projektille "%s"',
|
||||
'All projects' => 'Kaikki projektit',
|
||||
'Change columns' => 'Muokkaa sarakkeita',
|
||||
'Add a new column' => 'Lisää uusi sarake',
|
||||
'Title' => 'Nimi',
|
||||
'Nobody assigned' => 'Ei suorittajaa',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Valitse väri käyttäjälle',
|
||||
'Column title' => 'Sarakkeen nimi',
|
||||
'Position' => 'Positio',
|
||||
'Move Up' => 'Siirrä ylös',
|
||||
'Move Down' => 'Siirrä alas',
|
||||
'Duplicate to another project' => 'Kopioi toiseen projektiin',
|
||||
'Duplicate' => 'Monista',
|
||||
'link' => 'linkki',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Haluatko varmasti poistaa tämän kaistan: "%s"?',
|
||||
'Inactive swimlanes' => 'Passiiviset kaistat',
|
||||
'Remove a swimlane' => 'Poista kaista',
|
||||
'Rename' => 'Uudelleennimeä',
|
||||
'Show default swimlane' => 'Näytä oletuskaista',
|
||||
'Swimlane modification for the project "%s"' => 'Kaistamuutos projektille "%s"',
|
||||
'Swimlane not found.' => 'Kaistaa ei löydy',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Kaistat',
|
||||
'Swimlane updated successfully.' => 'Kaista päivitetty onnistuneesti.',
|
||||
'The default swimlane have been updated successfully.' => 'Oletuskaista päivitetty onnistuneesti.',
|
||||
'Unable to create your swimlane.' => 'Kaistan luonti epäonnistui.',
|
||||
'Unable to remove this swimlane.' => 'Kaistan poisto epäonnistui.',
|
||||
'Unable to update this swimlane.' => 'Kaistan päivittäminen epäonnistui.',
|
||||
'Your swimlane have been created successfully.' => 'Kaista luotu onnistuneesti.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Supprimer le projet',
|
||||
'Edit the board for "%s"' => 'Modifier le tableau pour « %s »',
|
||||
'All projects' => 'Tous les projets',
|
||||
'Change columns' => 'Changer les colonnes',
|
||||
'Add a new column' => 'Ajouter une nouvelle colonne',
|
||||
'Title' => 'Titre',
|
||||
'Nobody assigned' => 'Personne assignée',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Assigner une couleur à un utilisateur',
|
||||
'Column title' => 'Titre de la colonne',
|
||||
'Position' => 'Position',
|
||||
'Move Up' => 'Déplacer vers le haut',
|
||||
'Move Down' => 'Déplacer vers le bas',
|
||||
'Duplicate to another project' => 'Dupliquer dans un autre projet',
|
||||
'Duplicate' => 'Dupliquer',
|
||||
'link' => 'lien',
|
||||
|
|
@ -503,7 +500,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Voulez-vous vraiment supprimer cette swimlane : « %s » ?',
|
||||
'Inactive swimlanes' => 'Swimlanes inactives',
|
||||
'Remove a swimlane' => 'Supprimer une swimlane',
|
||||
'Rename' => 'Renommer',
|
||||
'Show default swimlane' => 'Afficher la swimlane par défaut',
|
||||
'Swimlane modification for the project "%s"' => 'Modification d\'une swimlane pour le projet « %s »',
|
||||
'Swimlane not found.' => 'Cette swimlane est introuvable.',
|
||||
|
|
@ -511,7 +507,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane mise à jour avec succès.',
|
||||
'The default swimlane have been updated successfully.' => 'La swimlane par défaut a été mise à jour avec succès.',
|
||||
'Unable to create your swimlane.' => 'Impossible de créer votre swimlane.',
|
||||
'Unable to remove this swimlane.' => 'Impossible de supprimer cette swimlane.',
|
||||
'Unable to update this swimlane.' => 'Impossible de mettre à jour cette swimlane.',
|
||||
'Your swimlane have been created successfully.' => 'Votre swimlane a été créée avec succès.',
|
||||
|
|
@ -1155,4 +1150,5 @@ return array(
|
|||
'Last activity' => 'Dernières activités',
|
||||
'Change subtask position' => 'Changer la position de la sous-tâche',
|
||||
'This value must be greater than %d' => 'Cette valeur doit être plus grande que %d',
|
||||
'Another swimlane with the same name exists in the project' => 'Une autre swimlane existe avec le même nom dans le projet',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Projekt törlése',
|
||||
'Edit the board for "%s"' => 'Tábla szerkesztése: "%s"',
|
||||
'All projects' => 'Minden projekt',
|
||||
'Change columns' => 'Oszlop módosítása',
|
||||
'Add a new column' => 'Új oszlop',
|
||||
'Title' => 'Cím',
|
||||
'Nobody assigned' => 'Nincs felelős',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Szín hozzárendelése a felhasználóhoz',
|
||||
'Column title' => 'Oszlopfejléc',
|
||||
'Position' => 'Pozíció',
|
||||
'Move Up' => 'Fel',
|
||||
'Move Down' => 'Le',
|
||||
'Duplicate to another project' => 'Másolás másik projektbe',
|
||||
'Duplicate' => 'Másolás',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Valóban törli a folyamatot:%s ?',
|
||||
'Inactive swimlanes' => 'Inaktív folyamatok',
|
||||
'Remove a swimlane' => 'Folyamat törlés',
|
||||
'Rename' => 'Átnevezés',
|
||||
'Show default swimlane' => 'Alapértelmezett folyamat megjelenítése',
|
||||
'Swimlane modification for the project "%s"' => '%s projekt folyamatainak módosítása',
|
||||
'Swimlane not found.' => 'Folyamat nem található',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Folyamatok',
|
||||
'Swimlane updated successfully.' => 'Folyamat sikeresn frissítve',
|
||||
'The default swimlane have been updated successfully.' => 'Az alapértelmezett folyamat sikeresen frissítve.',
|
||||
'Unable to create your swimlane.' => 'A folyamat létrehozása sikertelen.',
|
||||
'Unable to remove this swimlane.' => 'A folyamat törlése sikertelen.',
|
||||
'Unable to update this swimlane.' => 'A folyamat frissítése sikertelen.',
|
||||
'Your swimlane have been created successfully.' => 'A folyamat sikeresen létrehozva.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Hapus proyek',
|
||||
'Edit the board for "%s"' => 'Rubah papan untuk « %s »',
|
||||
'All projects' => 'Semua proyek',
|
||||
'Change columns' => 'Rubah kolom',
|
||||
'Add a new column' => 'Tambah kolom baru',
|
||||
'Title' => 'Judul',
|
||||
'Nobody assigned' => 'Tidak ada yang ditugaskan',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Menetapkan warna untuk pengguna tertentu',
|
||||
'Column title' => 'Judul kolom',
|
||||
'Position' => 'Posisi',
|
||||
'Move Up' => 'Pindah ke atas',
|
||||
'Move Down' => 'Pindah ke bawah',
|
||||
'Duplicate to another project' => 'Duplikasi ke proyek lain',
|
||||
'Duplicate' => 'Duplikasi',
|
||||
'link' => 'tautan',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Apakah anda yakin akan menghapus swimlane ini : « %s » ?',
|
||||
'Inactive swimlanes' => 'Swimlanes tidak aktif',
|
||||
'Remove a swimlane' => 'Supprimer une swimlane',
|
||||
'Rename' => 'Ganti nama',
|
||||
'Show default swimlane' => 'Perlihatkan standar swimlane',
|
||||
'Swimlane modification for the project "%s"' => 'Modifikasi swimlane untuk proyek « %s »',
|
||||
'Swimlane not found.' => 'Swimlane tidak ditemukan.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane berhasil diperbaharui.',
|
||||
'The default swimlane have been updated successfully.' => 'Standar swimlane berhasil diperbaharui.',
|
||||
'Unable to create your swimlane.' => 'Tidak dapat membuat swimlane anda.',
|
||||
'Unable to remove this swimlane.' => 'Tidak dapat menghapus swimlane ini.',
|
||||
'Unable to update this swimlane.' => 'Tidak dapat memperbaharui swimlane ini.',
|
||||
'Your swimlane have been created successfully.' => 'Swimlane anda berhasil dibuat.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Cancella il progetto',
|
||||
'Edit the board for "%s"' => 'Modifica la bacheca per "%s"',
|
||||
'All projects' => 'Tutti i progetti',
|
||||
'Change columns' => 'Cambia le colonne',
|
||||
'Add a new column' => 'Aggiungi una nuova colonna',
|
||||
'Title' => 'Titolo',
|
||||
'Nobody assigned' => 'Nessuno assegnato',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Assegna un colore ad un utente specifico',
|
||||
'Column title' => 'Titolo della colonna',
|
||||
'Position' => 'Posizione',
|
||||
'Move Up' => 'Sposta in alto',
|
||||
'Move Down' => 'Sposta in basso',
|
||||
'Duplicate to another project' => 'Duplica in un altro progetto',
|
||||
'Duplicate' => 'Duplica',
|
||||
'link' => 'relazione',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Vuoi davvero rimuovere la seguente corsia: "%s"?',
|
||||
'Inactive swimlanes' => 'Corsie inattive',
|
||||
'Remove a swimlane' => 'Rimuovi una corsia',
|
||||
'Rename' => 'Rinomina',
|
||||
'Show default swimlane' => 'Mostra la corsia predefinita',
|
||||
'Swimlane modification for the project "%s"' => 'Modifica corsia per il progetto "%s"',
|
||||
'Swimlane not found.' => 'Corsia non trovata.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Corsie',
|
||||
'Swimlane updated successfully.' => 'Corsia aggiornata con successo.',
|
||||
'The default swimlane have been updated successfully.' => 'La corsia predefinita è stata aggiornata con successo.',
|
||||
'Unable to create your swimlane.' => 'Impossibile creare la corsia.',
|
||||
'Unable to remove this swimlane.' => 'Impossibile rimuovere questa corsia.',
|
||||
'Unable to update this swimlane.' => 'Impossibile aggiornare questa corsia.',
|
||||
'Your swimlane have been created successfully.' => 'La tua corsia è stata creata con successo',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'プロジェクトの削除',
|
||||
'Edit the board for "%s"' => 'ボード「%s」を変更する',
|
||||
'All projects' => 'すべてのプロジェクト',
|
||||
'Change columns' => 'カラムの変更',
|
||||
'Add a new column' => 'カラムの追加',
|
||||
'Title' => 'タイトル',
|
||||
'Nobody assigned' => '担当なし',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => '色をユーザに割り当てる',
|
||||
'Column title' => 'カラムのタイトル',
|
||||
'Position' => '位置',
|
||||
'Move Up' => '上に動かす',
|
||||
'Move Down' => '下に動かす',
|
||||
'Duplicate to another project' => '別のプロジェクトに複製する',
|
||||
'Duplicate' => '複製する',
|
||||
'link' => 'リンク',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'このスイムレーン「%s」を本当に削除しますか?',
|
||||
'Inactive swimlanes' => 'インタラクティブなスイムレーン',
|
||||
'Remove a swimlane' => 'スイムレーンの削除',
|
||||
'Rename' => '名前の変更',
|
||||
'Show default swimlane' => 'デフォルトスイムレーンの表示',
|
||||
'Swimlane modification for the project "%s"' => '「%s」に対するスイムレーン変更',
|
||||
'Swimlane not found.' => 'スイムレーンが見つかりません。',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'スイムレーン',
|
||||
'Swimlane updated successfully.' => 'スイムレーンを更新しました。',
|
||||
'The default swimlane have been updated successfully.' => 'デフォルトスイムレーンを更新しました。',
|
||||
'Unable to create your swimlane.' => 'スイムレーンを追加できませんでした。',
|
||||
'Unable to remove this swimlane.' => 'スイムレーンを削除できませんでした。',
|
||||
'Unable to update this swimlane.' => 'スイムレーンを更新できませんでした。',
|
||||
'Your swimlane have been created successfully.' => 'スイムレーンが作成されました。',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Hapus projek',
|
||||
'Edit the board for "%s"' => 'Ubah papan untuk « %s »',
|
||||
'All projects' => 'Semua projek',
|
||||
'Change columns' => 'Ubah kolom',
|
||||
'Add a new column' => 'Tambah kolom baru',
|
||||
'Title' => 'Judul',
|
||||
'Nobody assigned' => 'Tidak ada yang ditugaskan',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Menetapkan warna untuk pengguna tertentu',
|
||||
'Column title' => 'Judul kolom',
|
||||
'Position' => 'Posisi',
|
||||
'Move Up' => 'Pindah ke atas',
|
||||
'Move Down' => 'Pindah ke bawah',
|
||||
'Duplicate to another project' => 'Duplikasi ke projek lain',
|
||||
'Duplicate' => 'Duplikasi',
|
||||
'link' => 'Pautan',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Anda yakin untuk menghapus swimlane ini : « %s » ?',
|
||||
'Inactive swimlanes' => 'Swimlanes tidak aktif',
|
||||
'Remove a swimlane' => 'Padam swimlane',
|
||||
'Rename' => 'Namakan semula',
|
||||
'Show default swimlane' => 'Tampilkan piawai swimlane',
|
||||
'Swimlane modification for the project "%s"' => 'Modifikasi swimlane untuk projek « %s »',
|
||||
'Swimlane not found.' => 'Swimlane tidak ditemui.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane telah dikemaskini.',
|
||||
'The default swimlane have been updated successfully.' => 'Standar swimlane berhasil diperbaharui.',
|
||||
'Unable to create your swimlane.' => 'Tidak dapat membuat swimlane anda.',
|
||||
'Unable to remove this swimlane.' => 'Tidak dapat menghapus swimlane ini.',
|
||||
'Unable to update this swimlane.' => 'Tidak dapat memperbaharui swimlane ini.',
|
||||
'Your swimlane have been created successfully.' => 'Swimlane anda berhasil dibuat.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Fjern prosjekt',
|
||||
'Edit the board for "%s"' => 'Endre prosjektsiden for "%s"',
|
||||
'All projects' => 'Alle prosjekter',
|
||||
'Change columns' => 'Endre kolonner',
|
||||
'Add a new column' => 'Legg til en ny kolonne',
|
||||
'Title' => 'Tittel',
|
||||
'Nobody assigned' => 'Ikke tildelt',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Tildel en farge til en bestemt bruker',
|
||||
'Column title' => 'Kolonne tittel',
|
||||
'Position' => 'Posisjon',
|
||||
'Move Up' => 'Flytt opp',
|
||||
'Move Down' => 'Flytt ned',
|
||||
'Duplicate to another project' => 'Kopier til et annet prosjekt',
|
||||
'Duplicate' => 'Kopier',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
// 'Do you really want to remove this swimlane: "%s"?' => '',
|
||||
// 'Inactive swimlanes' => '',
|
||||
'Remove a swimlane' => 'Fjern en svømmebane',
|
||||
'Rename' => 'Endre navn',
|
||||
'Show default swimlane' => 'Vis standard svømmebane',
|
||||
// 'Swimlane modification for the project "%s"' => '',
|
||||
'Swimlane not found.' => 'Svømmebane ikke funnet',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Svømmebaner',
|
||||
'Swimlane updated successfully.' => 'Svømmebane oppdatert',
|
||||
// 'The default swimlane have been updated successfully.' => '',
|
||||
// 'Unable to create your swimlane.' => '',
|
||||
// 'Unable to remove this swimlane.' => '',
|
||||
// 'Unable to update this swimlane.' => '',
|
||||
// 'Your swimlane have been created successfully.' => '',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Project verwijderen',
|
||||
'Edit the board for "%s"' => 'Bord bewerken voor « %s »',
|
||||
'All projects' => 'Alle projecten',
|
||||
'Change columns' => 'Kolommen veranderen',
|
||||
'Add a new column' => 'Kolom toevoegen',
|
||||
'Title' => 'Titel',
|
||||
'Nobody assigned' => 'Niemand toegewezen',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Wijs een kleur toe aan een gebruiker',
|
||||
'Column title' => 'Kolom titel',
|
||||
'Position' => 'Positie',
|
||||
'Move Up' => 'Omhoog verplaatsen',
|
||||
'Move Down' => 'Omlaag verplaatsen',
|
||||
'Duplicate to another project' => 'Dupliceren in een ander project',
|
||||
'Duplicate' => 'Dupliceren',
|
||||
'link' => 'koppelen',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Weet u zeker dat u deze swimlane wil verwijderen : « %s » ?',
|
||||
'Inactive swimlanes' => 'Inactieve swinlanes',
|
||||
'Remove a swimlane' => 'Verwijder swinlane',
|
||||
'Rename' => 'Hernoemen',
|
||||
'Show default swimlane' => 'Standaard swimlane tonen',
|
||||
'Swimlane modification for the project "%s"' => 'Swinlane aanpassing voor project « %s »',
|
||||
'Swimlane not found.' => 'Swimlane niet gevonden.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane succesvol aangepast.',
|
||||
'The default swimlane have been updated successfully.' => 'De standaard swimlane is succesvol aangepast.',
|
||||
'Unable to create your swimlane.' => 'Swimlane aanmaken niet gelukt.',
|
||||
'Unable to remove this swimlane.' => 'Swimlane verwijderen niet gelukt.',
|
||||
'Unable to update this swimlane.' => 'Swimlane aanpassen niet gelukt.',
|
||||
'Your swimlane have been created successfully.' => 'Swimlane succesvol aangemaakt.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Usuń projekt',
|
||||
'Edit the board for "%s"' => 'Edytuj tablicę dla "%s"',
|
||||
'All projects' => 'Wszystkie projekty',
|
||||
'Change columns' => 'Zmień kolumny',
|
||||
'Add a new column' => 'Dodaj nową kolumnę',
|
||||
'Title' => 'Tytuł',
|
||||
'Nobody assigned' => 'Nikt nie przypisany',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Przypisz kolor do wybranego użytkownika',
|
||||
'Column title' => 'Tytuł kolumny',
|
||||
'Position' => 'Pozycja',
|
||||
'Move Up' => 'Przenieś wyżej',
|
||||
'Move Down' => 'Przenieś niżej',
|
||||
'Duplicate to another project' => 'Skopiuj do innego projektu',
|
||||
'Duplicate' => 'Utwórz kopię',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Czy na pewno chcesz usunąć proces: "%s"?',
|
||||
'Inactive swimlanes' => 'Nieaktywne procesy',
|
||||
'Remove a swimlane' => 'Usuń proces',
|
||||
'Rename' => 'Zmień nazwe',
|
||||
'Show default swimlane' => 'Pokaż domyślny proces',
|
||||
'Swimlane modification for the project "%s"' => 'Edycja procesów dla projektu "%s"',
|
||||
'Swimlane not found.' => 'Nie znaleziono procesu.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Procesy',
|
||||
'Swimlane updated successfully.' => 'Proces zaktualizowany pomyślnie.',
|
||||
'The default swimlane have been updated successfully.' => 'Domyślny proces zaktualizowany pomyślnie.',
|
||||
'Unable to create your swimlane.' => 'Nie można utworzyć procesu.',
|
||||
'Unable to remove this swimlane.' => 'Nie można usunąć procesu.',
|
||||
'Unable to update this swimlane.' => 'Nie można zaktualizować procesu.',
|
||||
'Your swimlane have been created successfully.' => 'Proces tworzony pomyślnie.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Remover projeto',
|
||||
'Edit the board for "%s"' => 'Editar o board para "%s"',
|
||||
'All projects' => 'Todos os projetos',
|
||||
'Change columns' => 'Modificar colunas',
|
||||
'Add a new column' => 'Adicionar uma nova coluna',
|
||||
'Title' => 'Título',
|
||||
'Nobody assigned' => 'Ninguém designado',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Designar uma cor para um usuário específico',
|
||||
'Column title' => 'Título da coluna',
|
||||
'Position' => 'Posição',
|
||||
'Move Up' => 'Mover para cima',
|
||||
'Move Down' => 'Mover para baixo',
|
||||
'Duplicate to another project' => 'Duplicar para outro projeto',
|
||||
'Duplicate' => 'Duplicar',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Você realmente deseja remover esta swimlane: "%s"?',
|
||||
'Inactive swimlanes' => 'Desativar swimlanes',
|
||||
'Remove a swimlane' => 'Remover uma swimlane',
|
||||
'Rename' => 'Renomear',
|
||||
'Show default swimlane' => 'Exibir swimlane padrão',
|
||||
'Swimlane modification for the project "%s"' => 'Modificação de swimlane para o projeto "%s"',
|
||||
'Swimlane not found.' => 'Swimlane não encontrada.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane atualizada com sucesso.',
|
||||
'The default swimlane have been updated successfully.' => 'A swimlane padrão foi atualizada com sucesso.',
|
||||
'Unable to create your swimlane.' => 'Não foi possível criar a sua swimlane.',
|
||||
'Unable to remove this swimlane.' => 'Não foi possível remover esta swimlane.',
|
||||
'Unable to update this swimlane.' => 'Não foi possível atualizar esta swimlane.',
|
||||
'Your swimlane have been created successfully.' => 'Sua swimlane foi criada com sucesso.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Remover projecto',
|
||||
'Edit the board for "%s"' => 'Editar o quadro para "%s"',
|
||||
'All projects' => 'Todos os projectos',
|
||||
'Change columns' => 'Modificar colunas',
|
||||
'Add a new column' => 'Adicionar uma nova coluna',
|
||||
'Title' => 'Título',
|
||||
'Nobody assigned' => 'Ninguém assignado',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Designar uma cor para um utilizador específico',
|
||||
'Column title' => 'Título da coluna',
|
||||
'Position' => 'Posição',
|
||||
'Move Up' => 'Mover para cima',
|
||||
'Move Down' => 'Mover para baixo',
|
||||
'Duplicate to another project' => 'Duplicar para outro projecto',
|
||||
'Duplicate' => 'Duplicar',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Tem a certeza que quer remover este swimlane: "%s"?',
|
||||
'Inactive swimlanes' => 'Desactivar swimlanes',
|
||||
'Remove a swimlane' => 'Remover um swimlane',
|
||||
'Rename' => 'Renomear',
|
||||
'Show default swimlane' => 'Mostrar swimlane padrão',
|
||||
'Swimlane modification for the project "%s"' => 'Modificação de swimlane para o projecto "%s"',
|
||||
'Swimlane not found.' => 'Swimlane não encontrado.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane atualizado com sucesso.',
|
||||
'The default swimlane have been updated successfully.' => 'O swimlane padrão foi atualizado com sucesso.',
|
||||
'Unable to create your swimlane.' => 'Não foi possível criar o seu swimlane.',
|
||||
'Unable to remove this swimlane.' => 'Não foi possível remover este swimlane.',
|
||||
'Unable to update this swimlane.' => 'Não foi possível atualizar este swimlane.',
|
||||
'Your swimlane have been created successfully.' => 'Seu swimlane foi criado com sucesso.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Удалить проект',
|
||||
'Edit the board for "%s"' => 'Изменить доску для "%s"',
|
||||
'All projects' => 'Все проекты',
|
||||
'Change columns' => 'Изменить колонки',
|
||||
'Add a new column' => 'Добавить новую колонку',
|
||||
'Title' => 'Название',
|
||||
'Nobody assigned' => 'Никто не назначен',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Назначить определенный цвет пользователю',
|
||||
'Column title' => 'Название колонки',
|
||||
'Position' => 'Расположение',
|
||||
'Move Up' => 'Сдвинуть вверх',
|
||||
'Move Down' => 'Сдвинуть вниз',
|
||||
'Duplicate to another project' => 'Клонировать в другой проект',
|
||||
'Duplicate' => 'Клонировать',
|
||||
'link' => 'ссылка',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Вы действительно хотите удалить дорожку "%s"?',
|
||||
'Inactive swimlanes' => 'Неактивные дорожки',
|
||||
'Remove a swimlane' => 'Удалить дорожку',
|
||||
'Rename' => 'Переименовать',
|
||||
'Show default swimlane' => 'Показать стандартную дорожку',
|
||||
'Swimlane modification for the project "%s"' => 'Редактирование дорожки для проекта "%s"',
|
||||
'Swimlane not found.' => 'Дорожка не найдена.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Дорожки',
|
||||
'Swimlane updated successfully.' => 'Дорожка успешно обновлена.',
|
||||
'The default swimlane have been updated successfully.' => 'Стандартная swimlane был успешно обновлен.',
|
||||
'Unable to create your swimlane.' => 'Невозможно создать дорожку.',
|
||||
'Unable to remove this swimlane.' => 'Невозможно удалить дорожку.',
|
||||
'Unable to update this swimlane.' => 'Невозможно обновить дорожку.',
|
||||
'Your swimlane have been created successfully.' => 'Ваша дорожка была успешно создан.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Ukloni projekat',
|
||||
'Edit the board for "%s"' => 'Izmeni tablu za "%s"',
|
||||
'All projects' => 'Svi projekti',
|
||||
'Change columns' => 'Zameni kolonu',
|
||||
'Add a new column' => 'Dodaj novu kolonu',
|
||||
'Title' => 'Naslov',
|
||||
'Nobody assigned' => 'Niko nije dodeljen',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Dodeli boju korisniku',
|
||||
'Column title' => 'Naslov kolone',
|
||||
'Position' => 'Pozicija',
|
||||
'Move Up' => 'Podigni',
|
||||
'Move Down' => 'Spusti',
|
||||
'Duplicate to another project' => 'Kopiraj u drugi projekat',
|
||||
'Duplicate' => 'Napravi kopiju',
|
||||
'link' => 'link',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Da li da uklonim razdelnik: "%s"?',
|
||||
'Inactive swimlanes' => 'Neaktivni razdelniki',
|
||||
'Remove a swimlane' => 'Ukloni razdelnik',
|
||||
'Rename' => 'Preimenuj',
|
||||
'Show default swimlane' => 'Prikaži osnovni razdelnik',
|
||||
'Swimlane modification for the project "%s"' => 'Izmena razdelnika za projekat "%s"',
|
||||
'Swimlane not found.' => 'Razdelnik nije pronađen.',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Razdelnici',
|
||||
'Swimlane updated successfully.' => 'Razdelnik zaktualizowany pomyślnie.',
|
||||
// 'The default swimlane have been updated successfully.' => '',
|
||||
// 'Unable to create your swimlane.' => '',
|
||||
// 'Unable to remove this swimlane.' => '',
|
||||
// 'Unable to update this swimlane.' => '',
|
||||
'Your swimlane have been created successfully.' => 'Razdelnik je uspešno kreiran.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Ta bort projekt',
|
||||
'Edit the board for "%s"' => 'Ändra tavlan för "%s"',
|
||||
'All projects' => 'Alla projekt',
|
||||
'Change columns' => 'Ändra kolumner',
|
||||
'Add a new column' => 'Lägg till ny kolumn',
|
||||
'Title' => 'Titel',
|
||||
'Nobody assigned' => 'Ingen tilldelad',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Tilldela en färg till en specifik användare',
|
||||
'Column title' => 'Kolumnens titel',
|
||||
'Position' => 'Position',
|
||||
'Move Up' => 'Flytta upp',
|
||||
'Move Down' => 'Flytta ned',
|
||||
'Duplicate to another project' => 'Kopiera till ett annat projekt',
|
||||
'Duplicate' => 'Kopiera uppgiften',
|
||||
'link' => 'länk',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Vill du verkligen ta bort denna swimlane: "%s"?',
|
||||
'Inactive swimlanes' => 'Inaktiv swimlane',
|
||||
'Remove a swimlane' => 'Ta bort en swimlane',
|
||||
'Rename' => 'Byt namn',
|
||||
'Show default swimlane' => 'Visa standard swimlane',
|
||||
'Swimlane modification for the project "%s"' => 'Ändra swimlane för projektet "%s"',
|
||||
'Swimlane not found.' => 'Swimlane kunde inte hittas',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Swimlanes',
|
||||
'Swimlane updated successfully.' => 'Swimlane uppdaterad',
|
||||
'The default swimlane have been updated successfully.' => 'Standardswimlane har uppdaterats',
|
||||
'Unable to create your swimlane.' => 'Kunde inte skapa din swimlane',
|
||||
'Unable to remove this swimlane.' => 'Kunde inte ta bort swimlane',
|
||||
'Unable to update this swimlane.' => 'Kunde inte uppdatera swimlane',
|
||||
'Your swimlane have been created successfully.' => 'Din swimlane har skapats',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'ลบโปรเจค',
|
||||
'Edit the board for "%s"' => 'แก้ไขบอร์ดสำหรับ « %s »',
|
||||
'All projects' => 'โปรเจคทั้งหมด',
|
||||
'Change columns' => 'เปลี่ยนคอลัมน์',
|
||||
'Add a new column' => 'เพิ่มคอลัมน์ใหม่',
|
||||
'Title' => 'หัวเรื่อง',
|
||||
'Nobody assigned' => 'ไม่กำหนดใคร',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'กำหนดสีให้ผู้ใช้แบบเจาะจง',
|
||||
'Column title' => 'หัวเรื่องคอลัมน์',
|
||||
'Position' => 'ตำแหน่ง',
|
||||
'Move Up' => 'ย้ายขึ้น',
|
||||
'Move Down' => 'ย้ายลง',
|
||||
'Duplicate to another project' => 'ทำซ้ำในโปรเจคอื่น',
|
||||
'Duplicate' => 'ทำซ้ำ',
|
||||
'link' => 'ลิงค์',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'คุณต้องการลบสวิมเลนนี้ : "%s"?',
|
||||
'Inactive swimlanes' => 'สวิมเลนไม่ทำงาน',
|
||||
'Remove a swimlane' => 'ลบสวิมเลน',
|
||||
'Rename' => 'เปลี่ยนชื่อ',
|
||||
'Show default swimlane' => 'แสดงสวิมเลนเริ่มต้น',
|
||||
'Swimlane modification for the project "%s"' => 'แก้ไขสวิมเลนสำหรับโปรเจค "%s"',
|
||||
'Swimlane not found.' => 'หาสวิมเลนไม่พบ',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'สวิมเลน',
|
||||
'Swimlane updated successfully.' => 'ปรับปรุงสวิมเลนเรียบร้อยแล้ว',
|
||||
'The default swimlane have been updated successfully.' => 'สวิมเลนเริ่มต้นปรับปรุงเรียบร้อยแล้ว',
|
||||
'Unable to create your swimlane.' => 'ไม่สามารถสร้างสวิมเลนของคุณได้',
|
||||
'Unable to remove this swimlane.' => 'ไม่สามารถลบสวิมเลนนี้',
|
||||
'Unable to update this swimlane.' => 'ไม่สามารถปรับปรุงสวิมเลนนี้',
|
||||
'Your swimlane have been created successfully.' => 'สวิมเลนของคุณถูกสร้างเรียบร้อยแล้ว',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => 'Projeyi sil',
|
||||
'Edit the board for "%s"' => 'Tabloyu "%s" için güncelle',
|
||||
'All projects' => 'Tüm projeler',
|
||||
'Change columns' => 'Sütunları değiştir',
|
||||
'Add a new column' => 'Yeni sütun ekle',
|
||||
'Title' => 'Başlık',
|
||||
'Nobody assigned' => 'Kullanıcı atanmamış',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => 'Bir kullanıcıya renk tanımla',
|
||||
'Column title' => 'Sütun başlığı',
|
||||
'Position' => 'Pozisyon',
|
||||
'Move Up' => 'Yukarı taşı',
|
||||
'Move Down' => 'Aşağı taşı',
|
||||
'Duplicate to another project' => 'Başka bir projeye kopyala',
|
||||
'Duplicate' => 'Kopya oluştur',
|
||||
'link' => 'bağlantı',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => 'Bu Kulvarı silmek istediğinize emin misiniz?: "%s"?',
|
||||
'Inactive swimlanes' => 'Pasif Kulvarlar',
|
||||
'Remove a swimlane' => 'Kulvarı sil',
|
||||
'Rename' => 'Yeniden adlandır',
|
||||
'Show default swimlane' => 'Varsayılan Kulvarı göster',
|
||||
'Swimlane modification for the project "%s"' => '"%s" Projesi için Kulvar değişikliği',
|
||||
'Swimlane not found.' => 'Kulvar bulunamadı',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => 'Kulvarlar',
|
||||
'Swimlane updated successfully.' => 'Kulvar başarıyla güncellendi.',
|
||||
'The default swimlane have been updated successfully.' => 'Varsayılan Kulvarlar başarıyla güncellendi.',
|
||||
'Unable to create your swimlane.' => 'Bu Kulvarı oluşturmak mümkün değil.',
|
||||
'Unable to remove this swimlane.' => 'Bu Kulvarı silmek mümkün değil.',
|
||||
'Unable to update this swimlane.' => 'Bu Kulvarı değiştirmek mümkün değil.',
|
||||
'Your swimlane have been created successfully.' => 'Kulvar başarıyla oluşturuldu.',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ return array(
|
|||
'Remove project' => '移除项目',
|
||||
'Edit the board for "%s"' => '为"%s"修改看板',
|
||||
'All projects' => '所有项目',
|
||||
'Change columns' => '更改栏目',
|
||||
'Add a new column' => '添加新栏目',
|
||||
'Title' => '标题',
|
||||
'Nobody assigned' => '无人被指派',
|
||||
|
|
@ -208,8 +207,6 @@ return array(
|
|||
'Assign a color to a specific user' => '为特定用户指派颜色',
|
||||
'Column title' => '栏目名称',
|
||||
'Position' => '位置',
|
||||
'Move Up' => '往上移',
|
||||
'Move Down' => '往下移',
|
||||
'Duplicate to another project' => '复制到另一项目',
|
||||
'Duplicate' => '复制',
|
||||
'link' => '连接',
|
||||
|
|
@ -501,7 +498,6 @@ return array(
|
|||
'Do you really want to remove this swimlane: "%s"?' => '确定要删除里程碑:"%s"?',
|
||||
'Inactive swimlanes' => '非活动里程碑',
|
||||
'Remove a swimlane' => '删除里程碑',
|
||||
'Rename' => '重命名',
|
||||
'Show default swimlane' => '显示默认里程碑',
|
||||
'Swimlane modification for the project "%s"' => '项目"%s"的里程碑变更',
|
||||
'Swimlane not found.' => '未找到里程碑。',
|
||||
|
|
@ -509,7 +505,6 @@ return array(
|
|||
'Swimlanes' => '里程碑',
|
||||
'Swimlane updated successfully.' => '成功更新了里程碑。',
|
||||
'The default swimlane have been updated successfully.' => '成功更新了默认里程碑。',
|
||||
'Unable to create your swimlane.' => '无法创建里程碑。',
|
||||
'Unable to remove this swimlane.' => '无法删除此里程碑',
|
||||
'Unable to update this swimlane.' => '无法更新此里程碑',
|
||||
'Your swimlane have been created successfully.' => '已经成功创建里程碑。',
|
||||
|
|
@ -1152,4 +1147,5 @@ return array(
|
|||
// 'Last activity' => '',
|
||||
// 'Change subtask position' => '',
|
||||
// 'This value must be greater than %d' => '',
|
||||
// 'Another swimlane with the same name exists in the project' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -262,6 +262,40 @@ class Swimlane extends Base
|
|||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the default swimlane
|
||||
*
|
||||
* @access public
|
||||
* @param integer $project_id
|
||||
* @return bool
|
||||
*/
|
||||
public function enableDefault($project_id)
|
||||
{
|
||||
return $this->db
|
||||
->table(Project::TABLE)
|
||||
->eq('id', $project_id)
|
||||
->update(array(
|
||||
'show_default_swimlane' => 1,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the default swimlane
|
||||
*
|
||||
* @access public
|
||||
* @param integer $project_id
|
||||
* @return bool
|
||||
*/
|
||||
public function disableDefault($project_id)
|
||||
{
|
||||
return $this->db
|
||||
->table(Project::TABLE)
|
||||
->eq('id', $project_id)
|
||||
->update(array(
|
||||
'show_default_swimlane' => 0,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the last position of a swimlane
|
||||
*
|
||||
|
|
@ -366,6 +400,7 @@ class Swimlane extends Base
|
|||
->eq('project_id', $project_id)
|
||||
->eq('is_active', 1)
|
||||
->asc('position')
|
||||
->asc('id')
|
||||
->findAllByColumn('id');
|
||||
|
||||
if (! $swimlanes) {
|
||||
|
|
@ -382,69 +417,42 @@ class Swimlane extends Base
|
|||
}
|
||||
|
||||
/**
|
||||
* Move a swimlane down, increment the position value
|
||||
* Change swimlane position
|
||||
*
|
||||
* @access public
|
||||
* @param integer $project_id Project id
|
||||
* @param integer $swimlane_id Swimlane id
|
||||
* @param integer $project_id
|
||||
* @param integer $swimlane_id
|
||||
* @param integer $position
|
||||
* @return boolean
|
||||
*/
|
||||
public function moveDown($project_id, $swimlane_id)
|
||||
public function changePosition($project_id, $swimlane_id, $position)
|
||||
{
|
||||
$swimlanes = $this->db->hashtable(self::TABLE)
|
||||
->eq('project_id', $project_id)
|
||||
->eq('is_active', self::ACTIVE)
|
||||
->asc('position')
|
||||
->getAll('id', 'position');
|
||||
|
||||
$positions = array_flip($swimlanes);
|
||||
|
||||
if (isset($swimlanes[$swimlane_id]) && $swimlanes[$swimlane_id] < count($swimlanes)) {
|
||||
$position = ++$swimlanes[$swimlane_id];
|
||||
$swimlanes[$positions[$position]]--;
|
||||
|
||||
$this->db->startTransaction();
|
||||
$this->db->table(self::TABLE)->eq('id', $swimlane_id)->update(array('position' => $position));
|
||||
$this->db->table(self::TABLE)->eq('id', $positions[$position])->update(array('position' => $swimlanes[$positions[$position]]));
|
||||
$this->db->closeTransaction();
|
||||
|
||||
return true;
|
||||
if ($position < 1 || $position > $this->db->table(self::TABLE)->eq('project_id', $project_id)->count()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move a swimlane up, decrement the position value
|
||||
*
|
||||
* @access public
|
||||
* @param integer $project_id Project id
|
||||
* @param integer $swimlane_id Swimlane id
|
||||
* @return boolean
|
||||
*/
|
||||
public function moveUp($project_id, $swimlane_id)
|
||||
{
|
||||
$swimlanes = $this->db->hashtable(self::TABLE)
|
||||
$swimlane_ids = $this->db->table(self::TABLE)
|
||||
->eq('is_active', 1)
|
||||
->eq('project_id', $project_id)
|
||||
->eq('is_active', self::ACTIVE)
|
||||
->neq('id', $swimlane_id)
|
||||
->asc('position')
|
||||
->getAll('id', 'position');
|
||||
->findAllByColumn('id');
|
||||
|
||||
$positions = array_flip($swimlanes);
|
||||
$offset = 1;
|
||||
$results = array();
|
||||
|
||||
if (isset($swimlanes[$swimlane_id]) && $swimlanes[$swimlane_id] > 1) {
|
||||
$position = --$swimlanes[$swimlane_id];
|
||||
$swimlanes[$positions[$position]]++;
|
||||
foreach ($swimlane_ids as $current_swimlane_id) {
|
||||
if ($offset == $position) {
|
||||
$offset++;
|
||||
}
|
||||
|
||||
$this->db->startTransaction();
|
||||
$this->db->table(self::TABLE)->eq('id', $swimlane_id)->update(array('position' => $position));
|
||||
$this->db->table(self::TABLE)->eq('id', $positions[$position])->update(array('position' => $swimlanes[$positions[$position]]));
|
||||
$this->db->closeTransaction();
|
||||
|
||||
return true;
|
||||
$results[] = $this->db->table(self::TABLE)->eq('id', $current_swimlane_id)->update(array('position' => $offset));
|
||||
$offset++;
|
||||
}
|
||||
|
||||
return false;
|
||||
$results[] = $this->db->table(self::TABLE)->eq('id', $swimlane_id)->update(array('position' => $position));
|
||||
|
||||
return !in_array(false, $results, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
<div class="page-header">
|
||||
<h2><?= t('Add a new swimlane') ?></h2>
|
||||
</div>
|
||||
<form class="popover-form" method="post" action="<?= $this->url->href('swimlane', 'save', array('project_id' => $project['id'])) ?>" autocomplete="off">
|
||||
|
||||
<?= $this->form->csrf() ?>
|
||||
<?= $this->form->hidden('project_id', $values) ?>
|
||||
|
||||
<?= $this->form->label(t('Name'), 'name') ?>
|
||||
<?= $this->form->text('name', $values, $errors, array('autofocus', 'required', 'maxlength="50"')) ?>
|
||||
|
||||
<?= $this->form->label(t('Description'), 'description') ?>
|
||||
|
||||
<div class="form-tabs">
|
||||
<div class="write-area">
|
||||
<?= $this->form->textarea('description', $values, $errors) ?>
|
||||
</div>
|
||||
<div class="preview-area">
|
||||
<div class="markdown"></div>
|
||||
</div>
|
||||
<ul class="form-tabs-nav">
|
||||
<li class="form-tab form-tab-selected">
|
||||
<i class="fa fa-pencil-square-o fa-fw"></i><a id="markdown-write" href="#"><?= t('Write') ?></a>
|
||||
</li>
|
||||
<li class="form-tab">
|
||||
<a id="markdown-preview" href="#"><i class="fa fa-eye fa-fw"></i><?= t('Preview') ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="form-help"><?= $this->url->doc(t('Write your text in Markdown'), 'syntax-guide') ?></div>
|
||||
|
||||
<div class="form-actions">
|
||||
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue">
|
||||
<?= t('or') ?>
|
||||
<?= $this->url->link(t('cancel'), 'Swimlane', 'index', array('project_id' => $project['id']), false, 'close-popover') ?>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<div class="page-header">
|
||||
<h2><?= t('Change default swimlane') ?></h2>
|
||||
</div>
|
||||
<form class="popover-form" method="post" action="<?= $this->url->href('swimlane', 'updateDefault', array('project_id' => $project['id'])) ?>" autocomplete="off">
|
||||
<?= $this->form->csrf() ?>
|
||||
<?= $this->form->hidden('id', $values) ?>
|
||||
|
||||
<?= $this->form->label(t('Name'), 'default_swimlane') ?>
|
||||
<?= $this->form->text('default_swimlane', $values, $errors, array('required', 'maxlength="50"')) ?>
|
||||
|
||||
<?= $this->form->checkbox('show_default_swimlane', t('Show default swimlane'), 1, $values['show_default_swimlane'] == 1) ?>
|
||||
|
||||
<div class="form-actions">
|
||||
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue">
|
||||
<?= t('or') ?>
|
||||
<?= $this->url->link(t('cancel'), 'Swimlane', 'index', array('project_id' => $project['id']), false, 'close-popover') ?>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -1,71 +1,28 @@
|
|||
<div class="page-header">
|
||||
<h2><?= t('Change default swimlane') ?></h2>
|
||||
<h2><?= t('Swimlanes') ?></h2>
|
||||
<ul>
|
||||
<li>
|
||||
<i class="fa fa-plus fa-fw"></i>
|
||||
<?= $this->url->link(t('Add a new swimlane'), 'Swimlane', 'create', array('project_id' => $project['id']), false, 'popover') ?>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form method="post" action="<?= $this->url->href('swimlane', 'change', array('project_id' => $project['id'])) ?>" autocomplete="off">
|
||||
|
||||
<?= $this->form->csrf() ?>
|
||||
<?= $this->form->hidden('id', $default_swimlane) ?>
|
||||
|
||||
<?= $this->form->label(t('Rename'), 'default_swimlane') ?>
|
||||
<?= $this->form->text('default_swimlane', $default_swimlane, array(), array('required', 'maxlength="50"')) ?>
|
||||
|
||||
<?php if (! empty($active_swimlanes) || $default_swimlane['show_default_swimlane'] == 0): ?>
|
||||
<?= $this->form->checkbox('show_default_swimlane', t('Show default swimlane'), 1, $default_swimlane['show_default_swimlane'] == 1) ?>
|
||||
<?php else: ?>
|
||||
<?= $this->form->hidden('show_default_swimlane', $default_swimlane) ?>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="form-actions">
|
||||
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<?php if (! empty($active_swimlanes)): ?>
|
||||
<div class="page-header">
|
||||
<h2><?= t('Active swimlanes') ?></h2>
|
||||
</div>
|
||||
<?= $this->render('swimlane/table', array('swimlanes' => $active_swimlanes, 'project' => $project)) ?>
|
||||
<?php if (! empty($active_swimlanes) || $default_swimlane['show_default_swimlane'] == 1): ?>
|
||||
<h3><?= t('Active swimlanes') ?></h3>
|
||||
<?= $this->render('swimlane/table', array(
|
||||
'swimlanes' => $active_swimlanes,
|
||||
'project' => $project,
|
||||
'default_swimlane' => $default_swimlane['show_default_swimlane'] == 1 ? $default_swimlane : array()
|
||||
)) ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if (! empty($inactive_swimlanes)): ?>
|
||||
<div class="page-header">
|
||||
<h2><?= t('Inactive swimlanes') ?></h2>
|
||||
</div>
|
||||
<?= $this->render('swimlane/table', array('swimlanes' => $inactive_swimlanes, 'project' => $project, 'hide_position' => true)) ?>
|
||||
<?php if (! empty($inactive_swimlanes) || $default_swimlane['show_default_swimlane'] == 0): ?>
|
||||
<h3><?= t('Inactive swimlanes') ?></h3>
|
||||
<?= $this->render('swimlane/table', array(
|
||||
'swimlanes' => $inactive_swimlanes,
|
||||
'project' => $project,
|
||||
'default_swimlane' => $default_swimlane['show_default_swimlane'] == 0 ? $default_swimlane : array(),
|
||||
'disable_handler' => true
|
||||
)) ?>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="page-header">
|
||||
<h2><?= t('Add a new swimlane') ?></h2>
|
||||
</div>
|
||||
<form method="post" action="<?= $this->url->href('swimlane', 'save', array('project_id' => $project['id'])) ?>" autocomplete="off">
|
||||
|
||||
<?= $this->form->csrf() ?>
|
||||
<?= $this->form->hidden('project_id', $values) ?>
|
||||
|
||||
<?= $this->form->label(t('Name'), 'name') ?>
|
||||
<?= $this->form->text('name', $values, $errors, array('required', 'maxlength="50"')) ?>
|
||||
|
||||
<?= $this->form->label(t('Description'), 'description') ?>
|
||||
|
||||
<div class="form-tabs">
|
||||
<div class="write-area">
|
||||
<?= $this->form->textarea('description', $values, $errors) ?>
|
||||
</div>
|
||||
<div class="preview-area">
|
||||
<div class="markdown"></div>
|
||||
</div>
|
||||
<ul class="form-tabs-nav">
|
||||
<li class="form-tab form-tab-selected">
|
||||
<i class="fa fa-pencil-square-o fa-fw"></i><a id="markdown-write" href="#"><?= t('Write') ?></a>
|
||||
</li>
|
||||
<li class="form-tab">
|
||||
<a id="markdown-preview" href="#"><i class="fa fa-eye fa-fw"></i><?= t('Preview') ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="form-help"><?= $this->url->doc(t('Write your text in Markdown'), 'syntax-guide') ?></div>
|
||||
|
||||
<div class="form-actions">
|
||||
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue">
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -1,47 +1,76 @@
|
|||
<table>
|
||||
<tr>
|
||||
<?php if (! isset($hide_position)): ?>
|
||||
<th class="column-10"><?= t('Position') ?></th>
|
||||
<?php endif ?>
|
||||
<th><?= t('Name') ?></th>
|
||||
<th class="column-8"><?= t('Actions') ?></th>
|
||||
</tr>
|
||||
<?php foreach ($swimlanes as $swimlane): ?>
|
||||
<tr>
|
||||
<?php if (! isset($hide_position)): ?>
|
||||
<td>#<?= $swimlane['position'] ?></td>
|
||||
<?php endif ?>
|
||||
<td><?= $this->e($swimlane['name']) ?></td>
|
||||
<td>
|
||||
<div class="dropdown">
|
||||
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a>
|
||||
<ul>
|
||||
<?php if ($swimlane['position'] != 0 && $swimlane['position'] != 1): ?>
|
||||
<li>
|
||||
<?= $this->url->link(t('Move Up'), 'swimlane', 'moveup', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
</li>
|
||||
<table
|
||||
class="swimlanes-table table-stripped"
|
||||
data-save-position-url="<?= $this->url->href('Swimlane', 'move', array('project_id' => $project['id'])) ?>">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= t('Name') ?></th>
|
||||
<th class="column-8"><?= t('Actions') ?></th>
|
||||
</tr>
|
||||
|
||||
<?php if (! empty($default_swimlane)): ?>
|
||||
<tr>
|
||||
<td>
|
||||
<?= $this->e($default_swimlane['default_swimlane']) ?>
|
||||
<?php if ($default_swimlane['default_swimlane'] !== t('Default swimlane')): ?>
|
||||
(<?= t('Default swimlane') ?>)
|
||||
<?php endif ?>
|
||||
<?php if ($swimlane['position'] != 0 && $swimlane['position'] != count($swimlanes)): ?>
|
||||
</td>
|
||||
<td>
|
||||
<div class="dropdown">
|
||||
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a>
|
||||
<ul>
|
||||
<li>
|
||||
<?= $this->url->link(t('Move Down'), 'swimlane', 'movedown', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
<?= $this->url->link(t('Edit'), 'Swimlane', 'editDefault', array('project_id' => $project['id']), false, 'popover') ?>
|
||||
</li>
|
||||
<li>
|
||||
<?php if ($default_swimlane['show_default_swimlane'] == 1): ?>
|
||||
<?= $this->url->link(t('Disable'), 'Swimlane', 'disableDefault', array('project_id' => $project['id']), true) ?>
|
||||
<?php else: ?>
|
||||
<?= $this->url->link(t('Enable'), 'Swimlane', 'enableDefault', array('project_id' => $project['id']), true) ?>
|
||||
<?php endif ?>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif ?>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($swimlanes as $swimlane): ?>
|
||||
<tr data-swimlane-id="<?= $swimlane['id'] ?>">
|
||||
<td>
|
||||
<?php if (! isset($disable_handler)): ?>
|
||||
<i class="fa fa-arrows-alt draggable-row-handle" title="<?= t('Change column position') ?>"></i>
|
||||
<?php endif ?>
|
||||
<li>
|
||||
<?= $this->url->link(t('Edit'), 'swimlane', 'edit', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), false, 'popover') ?>
|
||||
</li>
|
||||
<li>
|
||||
<?php if ($swimlane['is_active']): ?>
|
||||
<?= $this->url->link(t('Disable'), 'swimlane', 'disable', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
<?php else: ?>
|
||||
<?= $this->url->link(t('Enable'), 'swimlane', 'enable', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
<?php endif ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->link(t('Remove'), 'swimlane', 'confirm', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), false, 'popover') ?>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</table>
|
||||
|
||||
<?= $this->e($swimlane['name']) ?>
|
||||
|
||||
<?php if (! empty($swimlane['description'])): ?>
|
||||
<span class="tooltip" title='<?= $this->e($this->text->markdown($swimlane['description'])) ?>'>
|
||||
<i class="fa fa-info-circle"></i>
|
||||
</span>
|
||||
<?php endif ?>
|
||||
</td>
|
||||
<td>
|
||||
<div class="dropdown">
|
||||
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a>
|
||||
<ul>
|
||||
<li>
|
||||
<?= $this->url->link(t('Edit'), 'swimlane', 'edit', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), false, 'popover') ?>
|
||||
</li>
|
||||
<li>
|
||||
<?php if ($swimlane['is_active']): ?>
|
||||
<?= $this->url->link(t('Disable'), 'swimlane', 'disable', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
<?php else: ?>
|
||||
<?= $this->url->link(t('Enable'), 'swimlane', 'enable', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), true) ?>
|
||||
<?php endif ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->link(t('Remove'), 'swimlane', 'confirm', array('project_id' => $project['id'], 'swimlane_id' => $swimlane['id']), false, 'popover') ?>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -2,7 +2,7 @@ function App() {
|
|||
this.board = new Board(this);
|
||||
this.markdown = new Markdown();
|
||||
this.search = new Search(this);
|
||||
this.swimlane = new Swimlane();
|
||||
this.swimlane = new Swimlane(this);
|
||||
this.dropdown = new Dropdown();
|
||||
this.tooltip = new Tooltip(this);
|
||||
this.popover = new Popover(this);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
function Swimlane() {
|
||||
function Swimlane(app) {
|
||||
this.app = app;
|
||||
}
|
||||
|
||||
Swimlane.prototype.getStorageKey = function() {
|
||||
|
|
@ -53,6 +54,7 @@ Swimlane.prototype.refresh = function() {
|
|||
|
||||
Swimlane.prototype.listen = function() {
|
||||
var self = this;
|
||||
self.dragAndDrop();
|
||||
|
||||
$(document).on('click', ".board-swimlane-toggle", function(e) {
|
||||
e.preventDefault();
|
||||
|
|
@ -67,3 +69,55 @@ Swimlane.prototype.listen = function() {
|
|||
}
|
||||
});
|
||||
};
|
||||
|
||||
Swimlane.prototype.dragAndDrop = function() {
|
||||
var self = this;
|
||||
|
||||
$(".draggable-row-handle").mouseenter(function() {
|
||||
$(this).parent().parent().addClass("draggable-item-hover");
|
||||
}).mouseleave(function() {
|
||||
$(this).parent().parent().removeClass("draggable-item-hover");
|
||||
});
|
||||
|
||||
$(".swimlanes-table tbody").sortable({
|
||||
forcePlaceholderSize: true,
|
||||
handle: "td:first i",
|
||||
helper: function(e, ui) {
|
||||
ui.children().each(function() {
|
||||
$(this).width($(this).width());
|
||||
});
|
||||
|
||||
return ui;
|
||||
},
|
||||
stop: function(event, ui) {
|
||||
var swimlane = ui.item;
|
||||
swimlane.removeClass("draggable-item-selected");
|
||||
self.savePosition(swimlane.data("swimlane-id"), swimlane.index() + 1);
|
||||
},
|
||||
start: function(event, ui) {
|
||||
ui.item.addClass("draggable-item-selected");
|
||||
}
|
||||
}).disableSelection();
|
||||
};
|
||||
|
||||
Swimlane.prototype.savePosition = function(swimlaneId, position) {
|
||||
var url = $(".swimlanes-table").data("save-position-url");
|
||||
var self = this;
|
||||
|
||||
this.app.showLoadingIcon();
|
||||
|
||||
$.ajax({
|
||||
cache: false,
|
||||
url: url,
|
||||
contentType: "application/json",
|
||||
type: "POST",
|
||||
processData: false,
|
||||
data: JSON.stringify({
|
||||
"swimlane_id": swimlaneId,
|
||||
"position": position
|
||||
}),
|
||||
complete: function() {
|
||||
self.app.hideLoadingIcon();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ Response example:
|
|||
- Parameters:
|
||||
- **project_id** (integer, required)
|
||||
- **column_id** (integer, required)
|
||||
- **position** (integer, required)
|
||||
- **position** (integer, required, must be >= 1)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
|
|
|
|||
|
|
@ -235,12 +235,13 @@ Response example:
|
|||
}
|
||||
```
|
||||
|
||||
## moveSwimlaneUp
|
||||
## changeSwimlanePosition
|
||||
|
||||
- Purpose: **Move up the swimlane position**
|
||||
- Purpose: **Move up the swimlane position** (only for active swimlanes)
|
||||
- Parameters:
|
||||
- **project_id** (integer, required)
|
||||
- **swimlane_id** (integer, required)
|
||||
- **position** (integer, required, must be >= 1)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
|
|
@ -249,11 +250,12 @@ Request example:
|
|||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveSwimlaneUp",
|
||||
"method": "changeSwimlanePosition",
|
||||
"id": 99275573,
|
||||
"params": [
|
||||
1,
|
||||
2
|
||||
2,
|
||||
3
|
||||
]
|
||||
}
|
||||
```
|
||||
|
|
@ -268,39 +270,6 @@ Response example:
|
|||
}
|
||||
```
|
||||
|
||||
## moveSwimlaneDown
|
||||
|
||||
- Purpose: **Move down the swimlane position**
|
||||
- Parameters:
|
||||
- **project_id** (integer, required)
|
||||
- **swimlane_id** (integer, required)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveSwimlaneDown",
|
||||
"id": 957090649,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"swimlane_id": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 957090649,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
## updateSwimlane
|
||||
|
||||
- Purpose: **Update swimlane properties**
|
||||
|
|
|
|||
|
|
@ -170,122 +170,6 @@ class Api extends PHPUnit_Framework_TestCase
|
|||
$this->assertCount(0, $activities);
|
||||
}
|
||||
|
||||
public function testGetDefaultSwimlane()
|
||||
{
|
||||
$swimlane = $this->client->getDefaultSwimlane(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals('Default swimlane', $swimlane['default_swimlane']);
|
||||
}
|
||||
|
||||
public function testAddSwimlane()
|
||||
{
|
||||
$swimlane_id = $this->client->addSwimlane(1, 'Swimlane 1');
|
||||
$this->assertNotFalse($swimlane_id);
|
||||
$this->assertInternalType('int', $swimlane_id);
|
||||
|
||||
$swimlane = $this->client->getSwimlaneById($swimlane_id);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testGetSwimlane()
|
||||
{
|
||||
$swimlane = $this->client->getSwimlane(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testUpdateSwimlane()
|
||||
{
|
||||
$swimlane = $this->client->getSwimlaneByName(1, 'Swimlane 1');
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals(1, $swimlane['id']);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
|
||||
$this->assertTrue($this->client->updateSwimlane($swimlane['id'], 'Another swimlane'));
|
||||
|
||||
$swimlane = $this->client->getSwimlaneById($swimlane['id']);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals('Another swimlane', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testDisableSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->client->disableSwimlane(1, 1));
|
||||
|
||||
$swimlane = $this->client->getSwimlaneById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
}
|
||||
|
||||
public function testEnableSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->client->enableSwimlane(1, 1));
|
||||
|
||||
$swimlane = $this->client->getSwimlaneById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
}
|
||||
|
||||
public function testGetAllSwimlanes()
|
||||
{
|
||||
$this->assertNotFalse($this->client->addSwimlane(1, 'Swimlane A'));
|
||||
|
||||
$swimlanes = $this->client->getAllSwimlanes(1);
|
||||
$this->assertNotEmpty($swimlanes);
|
||||
$this->assertCount(2, $swimlanes);
|
||||
$this->assertEquals('Another swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[1]['name']);
|
||||
}
|
||||
|
||||
public function testGetActiveSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->client->disableSwimlane(1, 1));
|
||||
|
||||
$swimlanes = $this->client->getActiveSwimlanes(1);
|
||||
$this->assertNotEmpty($swimlanes);
|
||||
$this->assertCount(2, $swimlanes);
|
||||
$this->assertEquals('Default swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[1]['name']);
|
||||
}
|
||||
|
||||
public function testMoveSwimlaneUp()
|
||||
{
|
||||
$this->assertTrue($this->client->enableSwimlane(1, 1));
|
||||
$this->assertTrue($this->client->moveSwimlaneUp(1, 1));
|
||||
|
||||
$swimlanes = $this->client->getActiveSwimlanes(1);
|
||||
$this->assertNotEmpty($swimlanes);
|
||||
$this->assertCount(3, $swimlanes);
|
||||
$this->assertEquals('Default swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Another swimlane', $swimlanes[1]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[2]['name']);
|
||||
|
||||
$this->assertTrue($this->client->moveSwimlaneUp(1, 2));
|
||||
|
||||
$swimlanes = $this->client->getActiveSwimlanes(1);
|
||||
$this->assertNotEmpty($swimlanes);
|
||||
$this->assertCount(3, $swimlanes);
|
||||
$this->assertEquals('Default swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[1]['name']);
|
||||
$this->assertEquals('Another swimlane', $swimlanes[2]['name']);
|
||||
}
|
||||
|
||||
public function testMoveSwimlaneDown()
|
||||
{
|
||||
$this->assertTrue($this->client->moveSwimlaneDown(1, 2));
|
||||
|
||||
$swimlanes = $this->client->getActiveSwimlanes(1);
|
||||
$this->assertNotEmpty($swimlanes);
|
||||
$this->assertCount(3, $swimlanes);
|
||||
$this->assertEquals('Default swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Another swimlane', $swimlanes[1]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[2]['name']);
|
||||
}
|
||||
|
||||
public function testCreateTaskWithWrongMember()
|
||||
{
|
||||
$task = array(
|
||||
|
|
@ -394,18 +278,6 @@ class Api extends PHPUnit_Framework_TestCase
|
|||
$this->assertNotEquals($moved_timestamp, $task['date_moved']);
|
||||
}
|
||||
|
||||
public function testRemoveSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->client->removeSwimlane(1, 2));
|
||||
|
||||
$task = $this->client->getTask($this->getTaskId());
|
||||
$this->assertNotFalse($task);
|
||||
$this->assertTrue(is_array($task));
|
||||
$this->assertEquals(1, $task['position']);
|
||||
$this->assertEquals(4, $task['column_id']);
|
||||
$this->assertEquals(0, $task['swimlane_id']);
|
||||
}
|
||||
|
||||
public function testUpdateTask()
|
||||
{
|
||||
$task = $this->client->getTask(1);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__.'/Base.php';
|
||||
|
||||
class SwimlaneTest extends Base
|
||||
{
|
||||
public function testCreateProject()
|
||||
{
|
||||
$this->assertEquals(1, $this->app->createProject('A project'));
|
||||
}
|
||||
|
||||
public function testGetDefaultSwimlane()
|
||||
{
|
||||
$swimlane = $this->app->getDefaultSwimlane(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals('Default swimlane', $swimlane['default_swimlane']);
|
||||
}
|
||||
|
||||
public function testAddSwimlane()
|
||||
{
|
||||
$swimlane_id = $this->app->addSwimlane(1, 'Swimlane 1');
|
||||
$this->assertNotFalse($swimlane_id);
|
||||
$this->assertInternalType('int', $swimlane_id);
|
||||
|
||||
$swimlane = $this->app->getSwimlaneById($swimlane_id);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testGetSwimlane()
|
||||
{
|
||||
$swimlane = $this->app->getSwimlane(1);
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testUpdateSwimlane()
|
||||
{
|
||||
$swimlane = $this->app->getSwimlaneByName(1, 'Swimlane 1');
|
||||
$this->assertInternalType('array', $swimlane);
|
||||
$this->assertEquals(1, $swimlane['id']);
|
||||
$this->assertEquals('Swimlane 1', $swimlane['name']);
|
||||
|
||||
$this->assertTrue($this->app->updateSwimlane($swimlane['id'], 'Another swimlane'));
|
||||
|
||||
$swimlane = $this->app->getSwimlaneById($swimlane['id']);
|
||||
$this->assertEquals('Another swimlane', $swimlane['name']);
|
||||
}
|
||||
|
||||
public function testDisableSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->app->disableSwimlane(1, 1));
|
||||
|
||||
$swimlane = $this->app->getSwimlaneById(1);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
}
|
||||
|
||||
public function testEnableSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->app->enableSwimlane(1, 1));
|
||||
|
||||
$swimlane = $this->app->getSwimlaneById(1);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
}
|
||||
|
||||
public function testGetAllSwimlanes()
|
||||
{
|
||||
$this->assertNotFalse($this->app->addSwimlane(1, 'Swimlane A'));
|
||||
|
||||
$swimlanes = $this->app->getAllSwimlanes(1);
|
||||
$this->assertCount(2, $swimlanes);
|
||||
$this->assertEquals('Another swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[1]['name']);
|
||||
}
|
||||
|
||||
public function testGetActiveSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->app->disableSwimlane(1, 1));
|
||||
|
||||
$swimlanes = $this->app->getActiveSwimlanes(1);
|
||||
$this->assertCount(2, $swimlanes);
|
||||
$this->assertEquals('Default swimlane', $swimlanes[0]['name']);
|
||||
$this->assertEquals('Swimlane A', $swimlanes[1]['name']);
|
||||
}
|
||||
|
||||
public function testRemoveSwimlane()
|
||||
{
|
||||
$this->assertTrue($this->app->removeSwimlane(1, 2));
|
||||
}
|
||||
|
||||
public function testChangePosition()
|
||||
{
|
||||
$this->assertNotFalse($this->app->addSwimlane(1, 'Swimlane 1'));
|
||||
$this->assertNotFalse($this->app->addSwimlane(1, 'Swimlane 2'));
|
||||
|
||||
$swimlanes = $this->app->getAllSwimlanes(1);
|
||||
$this->assertCount(3, $swimlanes);
|
||||
|
||||
$this->assertTrue($this->app->changeSwimlanePosition(1, 1, 3));
|
||||
$this->assertFalse($this->app->changeSwimlanePosition(1, 1, 6));
|
||||
}
|
||||
}
|
||||
|
|
@ -86,7 +86,23 @@ class SwimlaneTest extends Base
|
|||
$this->assertEquals(0, $default['show_default_swimlane']);
|
||||
}
|
||||
|
||||
public function testDisable()
|
||||
public function testDisableEnableDefaultSwimlane()
|
||||
{
|
||||
$projectModel = new Project($this->container);
|
||||
$swimlaneModel = new Swimlane($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||
|
||||
$this->assertTrue($swimlaneModel->disableDefault(1));
|
||||
$default = $swimlaneModel->getDefault(1);
|
||||
$this->assertEquals(0, $default['show_default_swimlane']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->enableDefault(1));
|
||||
$default = $swimlaneModel->getDefault(1);
|
||||
$this->assertEquals(1, $default['show_default_swimlane']);
|
||||
}
|
||||
|
||||
public function testDisableEnable()
|
||||
{
|
||||
$p = new Project($this->container);
|
||||
$s = new Swimlane($this->container);
|
||||
|
|
@ -210,172 +226,6 @@ class SwimlaneTest extends Base
|
|||
$this->assertEquals(1, $swimlane['position']);
|
||||
}
|
||||
|
||||
public function testMoveUp()
|
||||
{
|
||||
$p = new Project($this->container);
|
||||
$s = new Swimlane($this->container);
|
||||
|
||||
$this->assertEquals(1, $p->create(array('name' => 'UnitTest')));
|
||||
$this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
|
||||
$this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
|
||||
$this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(3, $swimlane['position']);
|
||||
|
||||
// Move the swimlane 3 up
|
||||
$this->assertTrue($s->moveUp(1, 3));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(3, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
// First swimlane can be moved up
|
||||
$this->assertFalse($s->moveUp(1, 1));
|
||||
|
||||
// Move with a disabled swimlane
|
||||
$this->assertTrue($s->disable(1, 1));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
$this->assertEquals(0, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
// Move the 2nd swimlane up
|
||||
$this->assertTrue($s->moveUp(1, 2));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
$this->assertEquals(0, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
}
|
||||
|
||||
public function testMoveDown()
|
||||
{
|
||||
$p = new Project($this->container);
|
||||
$s = new Swimlane($this->container);
|
||||
|
||||
$this->assertEquals(1, $p->create(array('name' => 'UnitTest')));
|
||||
$this->assertEquals(1, $s->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
|
||||
$this->assertEquals(2, $s->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
|
||||
$this->assertEquals(3, $s->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(3, $swimlane['position']);
|
||||
|
||||
// Move the swimlane 1 down
|
||||
$this->assertTrue($s->moveDown(1, 1));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(3, $swimlane['position']);
|
||||
|
||||
// Last swimlane can be moved down
|
||||
$this->assertFalse($s->moveDown(1, 3));
|
||||
|
||||
// Move with a disabled swimlane
|
||||
$this->assertTrue($s->disable(1, 3));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
$this->assertEquals(0, $swimlane['position']);
|
||||
|
||||
// Move the 2st swimlane down
|
||||
$this->assertTrue($s->moveDown(1, 2));
|
||||
|
||||
$swimlane = $s->getById(1);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(1, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(2);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(1, $swimlane['is_active']);
|
||||
$this->assertEquals(2, $swimlane['position']);
|
||||
|
||||
$swimlane = $s->getById(3);
|
||||
$this->assertNotEmpty($swimlane);
|
||||
$this->assertEquals(0, $swimlane['is_active']);
|
||||
$this->assertEquals(0, $swimlane['position']);
|
||||
}
|
||||
|
||||
public function testDuplicateSwimlane()
|
||||
{
|
||||
$p = new Project($this->container);
|
||||
|
|
@ -406,4 +256,93 @@ class SwimlaneTest extends Base
|
|||
$new_default = $s->getDefault(2);
|
||||
$this->assertEquals('New Default', $new_default['default_swimlane']);
|
||||
}
|
||||
|
||||
public function testChangePosition()
|
||||
{
|
||||
$projectModel = new Project($this->container);
|
||||
$swimlaneModel = new Swimlane($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
|
||||
$this->assertEquals(1, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
|
||||
$this->assertEquals(2, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
|
||||
$this->assertEquals(3, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #3')));
|
||||
$this->assertEquals(4, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #4')));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(1, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(2, $swimlanes[1]['id']);
|
||||
$this->assertEquals(3, $swimlanes[2]['position']);
|
||||
$this->assertEquals(3, $swimlanes[2]['id']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->changePosition(1, 3, 2));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(1, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(3, $swimlanes[1]['id']);
|
||||
$this->assertEquals(3, $swimlanes[2]['position']);
|
||||
$this->assertEquals(2, $swimlanes[2]['id']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->changePosition(1, 2, 1));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(2, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(1, $swimlanes[1]['id']);
|
||||
$this->assertEquals(3, $swimlanes[2]['position']);
|
||||
$this->assertEquals(3, $swimlanes[2]['id']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->changePosition(1, 2, 2));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(1, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(2, $swimlanes[1]['id']);
|
||||
$this->assertEquals(3, $swimlanes[2]['position']);
|
||||
$this->assertEquals(3, $swimlanes[2]['id']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->changePosition(1, 4, 1));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(4, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(1, $swimlanes[1]['id']);
|
||||
$this->assertEquals(3, $swimlanes[2]['position']);
|
||||
$this->assertEquals(2, $swimlanes[2]['id']);
|
||||
|
||||
$this->assertFalse($swimlaneModel->changePosition(1, 2, 0));
|
||||
$this->assertFalse($swimlaneModel->changePosition(1, 2, 5));
|
||||
}
|
||||
|
||||
public function testChangePositionWithInactiveSwimlane()
|
||||
{
|
||||
$projectModel = new Project($this->container);
|
||||
$swimlaneModel = new Swimlane($this->container);
|
||||
|
||||
$this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
|
||||
$this->assertEquals(1, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #1')));
|
||||
$this->assertEquals(2, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #2', 'is_active' => 0)));
|
||||
$this->assertEquals(3, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #3', 'is_active' => 0)));
|
||||
$this->assertEquals(4, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #4')));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(1, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(4, $swimlanes[1]['id']);
|
||||
|
||||
$this->assertTrue($swimlaneModel->changePosition(1, 4, 1));
|
||||
|
||||
$swimlanes = $swimlaneModel->getAllByStatus(1);
|
||||
$this->assertEquals(1, $swimlanes[0]['position']);
|
||||
$this->assertEquals(4, $swimlanes[0]['id']);
|
||||
$this->assertEquals(2, $swimlanes[1]['position']);
|
||||
$this->assertEquals(1, $swimlanes[1]['id']);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue