Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/Locale/ja_JP/translations.php
This commit is contained in:
torinky 2017-10-15 18:12:13 +09:00
commit c6f4c51f1f
41 changed files with 583 additions and 406 deletions

View File

@ -1,3 +1,10 @@
# Pass HTTP Authorization header via environment variable to PHP backend
# to make HTTP Basic Authentication work for Apache/FastCGI/php-fpm
# setups (required to authenticate over the API)
<IfModule mod_setenvif.c>
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
</IfModule>
<IfModule mod_rewrite.c>
Options -MultiViews

View File

@ -1,10 +1,14 @@
Version 1.0.47 (unreleased)
---------------------------
Version 1.0.47 (October 3, 2017)
--------------------------------
New features:
* Vietnamese translation
Improvements:
* Updated translations
Security Issues:
* Avoid people to alter other project resources by changing form data

View File

@ -55,4 +55,14 @@ class ExternalTaskManager
return array();
}
/**
* Get all providers
*
* @return ExternalTaskProviderInterface[]
*/
public function getProviders()
{
return $this->providers;
}
}

View File

@ -18,6 +18,22 @@ interface ExternalTaskProviderInterface
*/
public function getName();
/**
* Get provider icon
*
* @access public
* @return string
*/
public function getIcon();
/**
* Get label for adding a new task
*
* @access public
* @return string
*/
public function getMenuAddLabel();
/**
* Retrieve task from external system or cache
*

View File

@ -220,6 +220,21 @@ class TaskHelper extends Base
return $html;
}
public function renderReference(array $task)
{
if (! empty($task['reference'])) {
$reference = $this->helper->text->e($task['reference']);
if (filter_var($task['reference'], FILTER_VALIDATE_URL) !== false) {
return sprintf('<a href="%s" target=_blank">%s</a>', $reference, $reference);
}
return $reference;
}
return '';
}
public function getProgress($task)
{
if (! isset($this->columns[$task['project_id']])) {
@ -256,4 +271,58 @@ class TaskHelper extends Base
$html .= '</ul></div></small>';
return $html;
}
public function getNewBoardTaskButton(array $swimlane, array $column)
{
$html = '<div class="board-add-icon">';
$providers = $this->externalTaskManager->getProviders();
if (empty($providers)) {
$html .= $this->helper->modal->largeIcon(
'plus',
t('Add a new task'),
'TaskCreationController',
'show', array(
'project_id' => $column['project_id'],
'column_id' => $column['id'],
'swimlane_id' => $swimlane['id'],
)
);
} else {
$html .= '<div class="dropdown">';
$html .= '<a href="#" class="dropdown-menu"><i class="fa fa-plus" aria-hidden="true"></i></a><ul>';
$link = $this->helper->modal->large(
'plus',
t('Add a new Kanboard task'),
'TaskCreationController',
'show', array(
'project_id' => $column['project_id'],
'column_id' => $column['id'],
'swimlane_id' => $swimlane['id'],
)
);
$html .= '<li>'.$link.'</li>';
foreach ($providers as $provider) {
$link = $this->helper->url->link(
$provider->getMenuAddLabel(),
'ExternalTaskCreationController',
'step1',
array('project_id' => $column['project_id'], 'swimlane_id' => $swimlane['id'], 'column_id' => $column['id'], 'provider_name' => $provider->getName()),
false,
'js-modal-large'
);
$html .= '<li>'.$provider->getIcon().' '.$link.'</li>';
}
$html .= '</ul></div>';
}
$html .= '</div>';
return $html;
}
}

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
'Write one subject by line.' => 'Schreibe ein Betreff pro Zeile.',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
'Write one subject by line.' => 'Escriba un asunto por línea.',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

File diff suppressed because it is too large Load Diff

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1299,6 +1299,48 @@ return array(
'Assign automatically a color when due date is expired' => '期限が切れたら自動的に色を割当て',
'Total score in this column across all swimlanes' => 'このカラムのすべてのスイムレーンで合計得点',
// 'HRK - Kuna' => '',
// 'ARS - Argentine Peso' => '',
// 'COP - Colombian Peso' => '',
// '%d groups' => '',
// '%d group' => '',
// 'Group ID' => '',
// 'External ID' => '',
// '%d users' => '',
// '%d user' => '',
// 'Hide subtasks' => '',
// 'Show subtasks' => '',
// 'Authentication Parameters' => '',
// 'API Access' => '',
// 'No users found.' => '',
// 'User ID' => '',
// 'Notifications are activated' => '',
// 'Notifications are disabled' => '',
// 'User disabled' => '',
// '%d notifications' => '',
// '%d notification' => '',
// 'There is no external integration installed.' => '',
// 'You are not allowed to update tasks assigned to someone else.' => '',
// 'You are not allowed to change the assignee.' => '',
// 'Task suppression is not permitted' => '',
// 'Changing assignee is not permitted' => '',
// 'Update only assigned tasks is permitted' => '',
// 'Only for tasks assigned to the current user' => '',
// 'My projects' => '',
// 'Your are not member of any project.' => '',
// 'My subtasks' => '',
// '%d subtasks' => '',
// '%d subtask' => '',
// 'Only moving task between those columns is permitted for tasks assigned to the current user' => '',
// '[DUPLICATE]' => '',
// 'DKK - Danish Krona' => '',
// 'Remove user from group' => '',
// 'Assign the task to its creator' => '',
// 'This task was sent by email to "%s" with subject "%s".' => '',
// 'Predefined Email Subjects' => '',
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
'ARS - Argentine Peso' => 'ARS - アルゼンチンペソ',
'COP - Colombian Peso' => 'COP - コロンビアペソ',
'%d groups' => '%d個のグループ',

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
'Write one subject by line.' => 'Escreva um assunto por linha.',
'Create another link' => 'Criar outro link',
'BRL - Brazilian Real' => 'BRL - Real Brasileiro',
// 'Add a new Kanboard task' => '',
);

View File

@ -521,19 +521,19 @@ return array(
'Compact/wide view' => 'Alternar entre a vista compacta e ampliada',
'Currency' => 'Moeda',
'Private project' => 'Projeto privado',
'AUD - Australian Dollar' => 'AUD - Dólar australiano',
'CAD - Canadian Dollar' => 'CAD - Dólar canadense',
'AUD - Australian Dollar' => 'AUD - Dólar Australiano',
'CAD - Canadian Dollar' => 'CAD - Dólar Canadense',
'CHF - Swiss Francs' => 'CHF - Francos Suíços',
'Custom Stylesheet' => 'Folha de estilos personalizada',
'download' => 'transferir',
'EUR - Euro' => 'EUR - Euro',
'GBP - British Pound' => 'GBP - Libra Esterlina',
'INR - Indian Rupee' => 'INR - Rúpia indiana',
'JPY - Japanese Yen' => 'JPY - Iene japonês',
'INR - Indian Rupee' => 'INR - Rúpia Indiana',
'JPY - Japanese Yen' => 'JPY - Iene Japonês',
'NZD - New Zealand Dollar' => 'NZD - Dólar Neozelandês',
'RSD - Serbian dinar' => 'RSD - Dinar sérvio',
// 'CNY - Chinese Yuan' => '',
'USD - US Dollar' => 'USD - Dólar norte-americano',
'RSD - Serbian dinar' => 'RSD - Dinar Sérvio',
'CNY - Chinese Yuan' => 'CNY - Yuan Chinês',
'USD - US Dollar' => 'USD - Dólar Norte-americano',
'Destination column' => 'Coluna de destino',
'Move the task to another column when assigned to a user' => 'Mover a tarefa para uma outra coluna quando esta está atribuída a um utilizador',
'Move the task to another column when assignee is cleared' => 'Mover a tarefa para uma outra coluna quando esta não está atribuída',
@ -570,7 +570,7 @@ return array(
'Add a screenshot' => 'Adicionar uma Screenshot',
'Take a screenshot and press CTRL+V or ⌘+V to paste here.' => 'Tire um screenshot e pressione CTRL + V ou ⌘ + V para colar aqui.',
'Screenshot uploaded successfully.' => 'Screenshot enviada com sucesso.',
'SEK - Swedish Krona' => 'SEK - Coroa sueca',
'SEK - Swedish Krona' => 'SEK - Coroa Sueca',
'Identifier' => 'Identificador',
'Disable two factor authentication' => 'Desactivar autenticação com dois factores',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Tem a certeza que quer desactivar a autenticação com dois factores para esse utilizador: "%s"?',
@ -1338,6 +1338,7 @@ return array(
'This task was sent by email to "%s" with subject "%s".' => 'Esta tarefa foi enviada por email para "%s" com o assunto "%s".',
'Predefined Email Subjects' => 'Assuntos de email predefinidos',
'Write one subject by line.' => 'Escreva um assunto por linha.',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
'Create another link' => 'Criar outro link',
'BRL - Brazilian Real' => 'BRL - Real Brasileiro',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
'Write one subject by line.' => 'Записываются по одной теме на строку.',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -1,8 +1,8 @@
<?php
return array(
// 'number.decimals_separator' => '',
// 'number.thousands_separator' => '',
'number.decimals_separator' => '.',
'number.thousands_separator' => ',',
'None' => 'Hiçbiri',
'Edit' => 'Düzenle',
'Remove' => 'Sil',
@ -71,8 +71,8 @@ return array(
'Settings' => 'Ayarlar',
'Application settings' => 'Uygulama ayarları',
'Language' => 'Dil',
// 'Webhook token:' => '',
'API token:' => 'API belirteci:',
'Webhook token:' => 'Web kancası anahtarı:',
'API token:' => 'API anahtarı:',
'Database size:' => 'Veritabanı boyutu :',
'Download the database' => 'Veritabanını indir',
'Optimize the database' => 'Veritabanını optimize et',
@ -373,7 +373,7 @@ return array(
'Database driver:' => 'Veritabanı sürücüsü:',
'Board settings' => 'Pano ayarları',
'Webhook settings' => 'Webhook ayarları',
'Reset token' => 'Belirteci sıfırla',
'Reset token' => 'Anahtarı sıfırla',
'API endpoint:' => 'API bitiş noktası:',
'Refresh interval for private board' => 'Özel panolar için yenileme sıklığı',
'Refresh interval for public board' => 'Dışa açık panolar için yenileme sıklığı',
@ -382,7 +382,7 @@ return array(
'Frequency in second (60 seconds by default)' => 'Saniye olarak frekans (varsayılan 60 saniye)',
'Frequency in second (0 to disable this feature, 10 seconds by default)' => 'Saniye olarak frekans (Bu özelliği iptal etmek için 0, varsayılan değer 10 saniye)',
'Application URL' => 'Uygulama URL',
'Token regenerated.' => 'Beliteç yeniden oluşturuldu.',
'Token regenerated.' => 'Anahtar yeniden oluşturuldu.',
'Date format' => 'Tarih formatı',
'ISO format is always accepted, example: "%s" and "%s"' => 'ISO formatı her zaman kabul edilir, örneğin: "%s" ve "%s"',
'New private project' => 'Yeni özel proje',
@ -393,11 +393,11 @@ return array(
'There is nothing assigned to you.' => 'Size atanan hiçbir şey yok.',
'My tasks' => 'Görevlerim',
'Activity stream' => 'Güncel olay akışı',
'Dashboard' => 'Anasayfa',
'Dashboard' => 'Pano',
'Confirmation' => 'Onay',
'Allow everybody to access to this project' => 'Bu projeye herkesin erişimine izin ver',
'Everybody have access to this project.' => 'Bu projeye herkesin erişimi var.',
'Webhooks' => 'Webhooks',
'Webhooks' => 'Web Kancaları',
'API' => 'API',
'Create a comment from an external provider' => 'Dış sağlayıcı ile bir yorum oluştur',
'Project management' => 'Proje yönetimi',
@ -526,14 +526,14 @@ return array(
'CHF - Swiss Francs' => 'CHF - İsviçre Frangı',
'Custom Stylesheet' => 'Özel Sitil Css',
'download' => 'indir',
// 'EUR - Euro' => '',
'EUR - Euro' => 'EUR - Euro',
'GBP - British Pound' => 'GBP - İngiliz Paund',
'INR - Indian Rupee' => 'INR - Hint Rupesi',
'JPY - Japanese Yen' => 'JPY - Japon Yeni',
'NZD - New Zealand Dollar' => 'NZD - Yeni Zelanda Doları',
// 'RSD - Serbian dinar' => '',
// 'CNY - Chinese Yuan' => '',
'USD - US Dollar' => 'USD$ Amerikan Doları',
'RSD - Serbian dinar' => 'Sırp Dinarı',
'CNY - Chinese Yuan' => 'Çin Yuanı',
'USD - US Dollar' => 'USD Amerikan Doları',
'Destination column' => 'Hedef Sütun',
'Move the task to another column when assigned to a user' => 'Bir kullanıcıya atandığında görevi başka bir sütuna taşı',
'Move the task to another column when assignee is cleared' => 'Atanmış kullanıcı kaldırıldığında görevi başka bir sütuna taşı',
@ -550,7 +550,7 @@ return array(
'Reference currency' => 'Referans kur',
'The currency rate have been added successfully.' => 'Kur başarıyla eklendi',
'Unable to add this currency rate.' => 'Bu kur eklenemedi',
// 'Webhook URL' => '',
'Webhook URL' => 'Web kancası URL',
'%s removed the assignee of the task %s' => '%s, %s görevinin atanan bilgisini kaldırdı',
'Information' => 'Bilgi',
'Check two factor authentication code' => 'Çift-Kademeli doğrulama kodunu kontrol et',
@ -910,9 +910,9 @@ return array(
'%d task(s) in the column "%s" and the swimlane "%s" will be closed.' => '"%s" sütunu ve "%s" kulvarındaki %d görev kapatılacak.',
'Close all tasks of this column' => 'Bu sütundaki tüm görevleri kapat',
'No plugin has registered a project notification method. You can still configure individual notifications in your user profile.' => 'Proje bildirimleri için hiçbir plugin kaydedilmedi. Yine de profil sayfanızdan bildirim ayarları yapabilirsiniz.',
'My dashboard' => 'Dashboard um',
'My dashboard' => 'Panom',
'My profile' => 'Profilim',
'Project owner: ' => 'Proje sahibi',
'Project owner: ' => 'Proje sahibi: ',
'The project identifier is optional and must be alphanumeric, example: MYPROJECT.' => 'Proje kodu opsiyoneldir ve alfanümerik olmalıdır, örneğin: PROJE1',
'Project owner' => 'Proje sahibi',
'Private projects do not have users and groups management.' => '(Kişiye) Özel projelerde kullanıcı ve grup yönetimi yoktur.',
@ -1012,7 +1012,7 @@ return array(
'Change subtask position' => 'Alt görev sırasını değiştir',
'This value must be greater than %d' => 'Bu değer %d den büyük olmalı',
'Another swimlane with the same name exists in the project' => 'Projede aynı isimli başka bir kulvar var',
'Example: http://example.kanboard.net/ (used to generate absolute URLs)' => 'Örneğin: http://ornek.dediteknoloji.com/ (sabit URLler oluşturmak için)',
'Example: http://example.kanboard.net/ (used to generate absolute URLs)' => 'Örneğin: http://ornek.kanboard.net/ (sabit URLler oluşturmak için)',
'Actions duplicated successfully.' => 'İşlemler başarıyla çoklandı.',
'Unable to duplicate actions.' => 'İşlemler çoklanamıyor.',
'Add a new action' => 'Yeni bir işlem ekle',
@ -1034,7 +1034,7 @@ return array(
'Display list of keyboard shortcuts' => 'Kısayol tuşları listesini göster',
'Menu' => 'Menü',
'Set start date' => 'Başlangıç tarihi belirle',
// 'Avatar' => '',
'Avatar' => 'Simge',
'Upload my avatar image' => 'Avatar resmimi yükle',
'Remove my image' => 'Resmimi kaldır',
'The OAuth2 state parameter is invalid' => 'OAuth2 durum parametresi geçersiz',
@ -1055,29 +1055,29 @@ return array(
'Assign automatically a color based on a priority' => 'Önceliğe bağlı olarak bir renk belirle',
'Overdue tasks for the project(s) "%s"' => '%s proje(leri) için süresi geçen görevler',
'Upload files' => 'Dosyaları yükle',
'Installed Plugins' => 'Yüklenmiş Pluginler',
'Plugin Directory' => 'Plugin Klasörü',
'Plugin installed successfully.' => 'Plugin başarıyla kuruldu.',
'Plugin updated successfully.' => 'Plugin başarıyla güncellendi.',
'Plugin removed successfully.' => 'Plugin başarıyla kaldırıldı.',
'Installed Plugins' => 'Yüklenmiş Eklentiler',
'Plugin Directory' => 'Eklenti Klasörü',
'Plugin installed successfully.' => 'Eklenti başarıyla kuruldu.',
'Plugin updated successfully.' => 'Eklenti başarıyla güncellendi.',
'Plugin removed successfully.' => 'Eklenti başarıyla kaldırıldı.',
'Subtask converted to task successfully.' => 'Alt görev başarıyla göreve dönüştürüldü.',
'Unable to convert the subtask.' => 'Alt görev dönüştürülemedi',
'Unable to extract plugin archive.' => 'Plugin (sıkıştırılmış) dosyasıılamadı.',
'Plugin not found.' => 'Plugin bulunamadı',
'Plugin not found.' => 'Eklenti bulunamadı',
'You don\'t have the permission to remove this plugin.' => 'Bu plugin\'i kaldırmak için yetkiniz yok.',
'Unable to download plugin archive.' => 'Plugin dosyası indirilemedi.',
'Unable to write temporary file for plugin.' => 'Plugin için geçici dosya oluşturulamadı.',
'Unable to open plugin archive.' => 'Plugin dosyasıılamadı.',
'There is no file in the plugin archive.' => 'Plugin (sıkıştırılmış) dosyasında, dosya bulunmuyor.',
'Unable to download plugin archive.' => 'Eklenti dosyası indirilemedi.',
'Unable to write temporary file for plugin.' => 'Eklenti için geçici dosya oluşturulamadı.',
'Unable to open plugin archive.' => 'Eklenti dosyasıılamadı.',
'There is no file in the plugin archive.' => 'Eklenti (sıkıştırılmış) dosyasında, dosya bulunmuyor.',
'Create tasks in bulk' => 'Toplu olarak görev oluştur',
'Your Kanboard instance is not configured to install plugins from the user interface.' => 'Kanbord sisteminiz arayüzden plugin kurulacak şekilde ayarlanmamış.',
'There is no plugin available.' => 'Uygun plugin yok.',
'Your Kanboard instance is not configured to install plugins from the user interface.' => 'Kanbord sisteminiz arayüzden eklenti kurulacak şekilde ayarlanmamış.',
'There is no plugin available.' => 'Uygun eklenti yok.',
'Install' => 'Kur',
'Update' => 'Güncelle',
'Up to date' => 'Güncel',
'Not available' => 'Uygun değil',
'Remove plugin' => 'Plugini kaldır',
'Do you really want to remove this plugin: "%s"?' => '"%s" plugin i gerçekten kaldırmak istiyor musunuz?',
'Remove plugin' => 'Eklentiyi kaldır',
'Do you really want to remove this plugin: "%s"?' => '"%s" eklentiyi gerçekten kaldırmak istiyor musunuz?',
'Uninstall' => 'Kaldır',
'Listing' => 'Listeliyor',
'Metadata' => 'Meta veri',
@ -1092,7 +1092,7 @@ return array(
'Email settings' => 'E-posta ayarları',
'Email sender address' => 'E-posta gönderen adresi',
'Email transport' => 'E-posta taşıma',
'Webhook token' => 'Webhook token',
'Webhook token' => 'Web kancası anahtarı',
'Project tags management' => 'Proje etiket yönetimi',
'Tag created successfully.' => 'Etiket başarıyla oluturuldu.',
'Unable to create this tag.' => 'Etiket oluşturulamıyor.',
@ -1208,136 +1208,137 @@ return array(
'Write' => 'Yaz',
'Write your text in Markdown' => 'Metninizi Markdown a yazın',
'New External Task: %s' => 'Yeni Harici Görev: %s',
'No personal API access token registered.' => 'Kişisel API erişim belirteç-token ınız kaydedilmedi.',
'Your personal API access token is "%s"' => 'Kişisel API erişim belirteç-token ınız"%s"',
'Remove your token' => 'Belirteç-token ınızı kaldır',
'Generate a new token' => 'Yeni bir belirteç-token oluştur',
// 'Showing %d-%d of %d' => '',
// 'Outgoing Emails' => '',
'No personal API access token registered.' => 'Kişisel API erişim anahtarınız kaydedilmedi.',
'Your personal API access token is "%s"' => 'Kişisel API erişim anahtarınız "%s"',
'Remove your token' => 'Anahtarı kaldır',
'Generate a new token' => 'Yeni bir anahtar oluştur',
'Showing %d-%d of %d' => 'Gösterilen %d-%d / %d',
'Outgoing Emails' => 'Gönderilen ePostalar',
'Add or change currency rate' => 'Kur Oranını ekle veya değiştir',
// 'Reference currency: %s' => '',
// 'Add custom filters' => '',
// 'Export' => '',
// 'Add link label' => '',
// 'Incompatible Plugins' => '',
// 'Compatibility' => '',
// 'Permissions and ownership' => '',
// 'Priorities' => '',
// 'Close this window' => '',
// 'Unable to upload this file.' => '',
// 'Import tasks' => '',
// 'Choose a project' => '',
// 'Profile' => '',
// 'Application role' => '',
// '%d invitations were sent.' => '',
// '%d invitation was sent.' => '',
// 'Unable to create this user.' => '',
// 'Kanboard Invitation' => '',
// 'Visible on dashboard' => '',
// 'Created at:' => '',
// 'Updated at:' => '',
// 'There is no custom filter.' => '',
// 'New User' => '',
// 'Authentication' => '',
// 'If checked, this user will use a third-party system for authentication.' => '',
// 'The password is necessary only for local users.' => '',
// 'You have been invited to register on Kanboard.' => '',
// 'Click here to join your team' => '',
// 'Invite people' => '',
// 'Emails' => '',
// 'Enter one email address by line.' => '',
// 'Add these people to this project' => '',
// 'Add this person to this project' => '',
// 'Sign-up' => '',
// 'Credentials' => '',
// 'New user' => '',
// 'This username is already taken' => '',
// 'A link to reset your password has been sent by email.' => '',
// 'Your profile must have a valid email address.' => '',
// 'Unfortunately, we are unable to reset your password. Did you entered a valid username? Do you have an email address in your profile?' => '',
// 'TRL - Turkish Lira' => '',
// 'The project email is optional and could be used by several plugins.' => '',
// 'The project email must be unique across all projects' => '',
// 'The email configuration has been disabled by the administrator.' => '',
// 'Close this project' => '',
// 'Open this project' => '',
// 'Close a project' => '',
// 'Do you really want to close this project: "%s"?' => '',
// 'Reopen a project' => '',
// 'Do you really want to reopen this project: "%s"?' => '',
// 'This project is open' => '',
// 'This project is closed' => '',
// 'Unable to upload files, check the permissions of your data folder.' => '',
// 'Another category with the same name exists in this project' => '',
// 'Comment sent by email successfully.' => '',
// 'Sent by email to [%s](mailto:%s) (%s)' => '',
// 'Unable to read uploaded file.' => '',
// 'Database uploaded successfully.' => '',
// 'Task sent by email successfully.' => '',
// 'There is no category in this project.' => '',
// 'Send by email' => '',
// 'Create and send a comment by email' => '',
// 'Subject' => '',
// 'Upload the database' => '',
// 'You could upload the previously downloaded Sqlite database (Gzip format).' => '',
// 'Database file' => '',
// 'Upload' => '',
// 'Your project must have at least one active swimlane.' => '',
// 'Project: %s' => '',
// 'Automatic action not found: "%s"' => '',
// '%d projects' => '',
// '%d project' => '',
// 'There is no project.' => '',
// 'Sort' => '',
// 'Project ID' => '',
// 'Project name' => '',
// 'Public' => '',
// 'Private' => '',
// '%d tasks' => '',
// '%d task' => '',
// 'Task ID' => '',
// 'Assign automatically a color when due date is expired' => '',
// 'Total score in this column across all swimlanes' => '',
// 'HRK - Kuna' => '',
// 'ARS - Argentine Peso' => '',
// 'COP - Colombian Peso' => '',
// '%d groups' => '',
// '%d group' => '',
// 'Group ID' => '',
// 'External ID' => '',
// '%d users' => '',
// '%d user' => '',
// 'Hide subtasks' => '',
// 'Show subtasks' => '',
// 'Authentication Parameters' => '',
// 'API Access' => '',
// 'No users found.' => '',
// 'User ID' => '',
// 'Notifications are activated' => '',
// 'Notifications are disabled' => '',
// 'User disabled' => '',
// '%d notifications' => '',
// '%d notification' => '',
// 'There is no external integration installed.' => '',
// 'You are not allowed to update tasks assigned to someone else.' => '',
// 'You are not allowed to change the assignee.' => '',
// 'Task suppression is not permitted' => '',
// 'Changing assignee is not permitted' => '',
// 'Update only assigned tasks is permitted' => '',
// 'Only for tasks assigned to the current user' => '',
// 'My projects' => '',
// 'Your are not member of any project.' => '',
// 'My subtasks' => '',
// '%d subtasks' => '',
// '%d subtask' => '',
// 'Only moving task between those columns is permitted for tasks assigned to the current user' => '',
// '[DUPLICATE]' => '',
// 'DKK - Danish Krona' => '',
// 'Remove user from group' => '',
// 'Assign the task to its creator' => '',
// 'This task was sent by email to "%s" with subject "%s".' => '',
// 'Predefined Email Subjects' => '',
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
'Reference currency: %s' => 'Referans parabirimi: %s',
'Add custom filters' => 'Özel filtre ekle',
'Export' => 'Dışa aktar',
'Add link label' => 'Bağlantı etiketi ekle',
'Incompatible Plugins' => 'Uyumsuz Eklentiler',
'Compatibility' => 'Uyumluluk',
'Permissions and ownership' => 'İzinler ve sahiplik',
'Priorities' => 'Öncelikler',
'Close this window' => 'Bu pencereyi kapat',
'Unable to upload this file.' => 'Bu dosya yüklenemiyor',
'Import tasks' => 'Görevleri içeri aktar',
'Choose a project' => 'Proje seçin',
'Profile' => 'Profil',
'Application role' => 'Uygulama rolü',
'%d invitations were sent.' => '%d Davetiye gönderildi',
'%d invitation was sent.' => '%d Davetiye gönderildi',
'Unable to create this user.' => 'Bu kullanıcı oluşturulamadı.',
'Kanboard Invitation' => 'Kanboard Daveti',
'Visible on dashboard' => 'Panoda görünür',
'Created at:' => 'Oluşturulma: ',
'Updated at:' => 'Güncellenme: ',
'There is no custom filter.' => 'Uygulanmış özel filtre yok',
'New User' => 'Yeni Kullanıcı',
'Authentication' => 'Yetkilendirme',
'If checked, this user will use a third-party system for authentication.' => 'İşaretlenirse, bu kullanıcı kimlik doğrulama için üçüncü parti bir sistem kullanacaktır.',
'The password is necessary only for local users.' => 'Parola yalnızca yerel kullanıcılar için gereklidir',
'You have been invited to register on Kanboard.' => 'Kanboarda kayıt yaptırmak için davet edildiniz.',
'Click here to join your team' => 'Takımınıza katılmak için buraya tıklayın',
'Invite people' => 'İnsanları davet et',
'Emails' => 'ePostalar',
'Enter one email address by line.' => 'Her satıra bir adet email girin.',
'Add these people to this project' => 'Kişileri bu projeye ekle',
'Add this person to this project' => 'Kişiyi bu projeye ekle',
'Sign-up' => 'Kayıt',
'Credentials' => 'Kimlik bilgileri',
'New user' => 'Yeni kullanıcı',
'This username is already taken' => 'Bu kullanıcı adı zaten alınmış',
'A link to reset your password has been sent by email.' => 'Parola sıfırlama linkini içeren mesaj ePosta adresinize gönderildi.',
'Your profile must have a valid email address.' => 'Profiliniz için geçerli bir ePosta adresi gerekiyor.',
'Unfortunately, we are unable to reset your password. Did you entered a valid username? Do you have an email address in your profile?' => 'Malesef parolanızı sıfırlayamıyoruz. Kullanıcı adınızı doğru girdiniz mi? Profilinize kayıtlı ePosta adresiniz var mı?',
'TRL - Turkish Lira' => 'TRL - Türk Lirası',
'The project email is optional and could be used by several plugins.' => 'Proje ePostası isteğe bağlıdır ve eklentiler tarafından kullanılabilir',
'The project email must be unique across all projects' => 'Proje e-postası tüm projelerde benzersiz olmalıdır.',
'The email configuration has been disabled by the administrator.' => 'ePosta ayarları yönetici tarafından devre dışı bırakılmış.',
'Close this project' => 'Bu projeyi kapat',
'Open this project' => 'Bu projeyi aç',
'Close a project' => 'Proje kapat',
'Do you really want to close this project: "%s"?' => 'Bu projeyi kapatmak istediğinize emin misiniz? : "%s"',
'Reopen a project' => 'Projeyi tekrar aç',
'Do you really want to reopen this project: "%s"?' => 'Bu projeyi tekrar açmak istediğinizi onaylıyor musunuz? : "%s"',
'This project is open' => 'Bu proje açıktır',
'This project is closed' => 'Bu proje kapatılmış',
'Unable to upload files, check the permissions of your data folder.' => 'Dosya yüklenemedi. Lütfen yükleme dizine yazma izninizi kontrol ediniz.',
'Another category with the same name exists in this project' => 'Bu projede aynı ada sahip başka bir kategori var',
'Comment sent by email successfully.' => 'Yorum ePosta ile başarıyla gönderildi.',
'Sent by email to [%s](mailto:%s) (%s)' => 'ePostayı gönder [%s](mailto:%s) (%s)',
'Unable to read uploaded file.' => 'Yüklenen dosya okunamadı.',
'Database uploaded successfully.' => 'Veritabanı başarıyla yüklendi.',
'Task sent by email successfully.' => 'Görev ePosta ile başarıyla gönderildi.',
'There is no category in this project.' => 'Bu projenin kategorisi yok',
'Send by email' => 'ePosta ile gönder',
'Create and send a comment by email' => 'Yorum oluştur ve ePosta ile gönder',
'Subject' => 'Konu',
'Upload the database' => 'Veritabanına yükle',
'You could upload the previously downloaded Sqlite database (Gzip format).' => 'Daha önce indirdiğiniz Sqlite Veritabanı dosyasını yükleyebilirsiniz (Gzip formatında)',
'Database file' => 'Veritabanı dosyası',
'Upload' => 'Yükle',
'Your project must have at least one active swimlane.' => 'Projenizin en az bir aktif kulvara sahip olması gerekir',
'Project: %s' => 'Proje: %s',
'Automatic action not found: "%s"' => 'Otomatik işlem bulunamadı: "%s"',
'%d projects' => '%d proje',
'%d project' => '%d proje',
'There is no project.' => 'Proje yok.',
'Sort' => 'Sırala',
'Project ID' => 'Proje No',
'Project name' => 'Proje Adı',
'Public' => 'Herkese açık',
'Private' => 'Gizli',
'%d tasks' => '%d görev',
'%d task' => '%d görev',
'Task ID' => 'Görev No',
'Assign automatically a color when due date is expired' => 'Son günü geçtiğinde otomatik olarak bir renk ata',
'Total score in this column across all swimlanes' => 'Tüm kulvarlara göre bu kulvarın toplam puanı',
'HRK - Kuna' => 'HRK - Kuna',
'ARS - Argentine Peso' => 'ARS - Arjantin Pezosu',
'COP - Colombian Peso' => 'COP - Kolombiya Pezosu',
'%d groups' => '%d grup',
'%d group' => '%d grup',
'Group ID' => 'Grup No',
'External ID' => 'Harici No',
'%d users' => '%d kullanıcı',
'%d user' => '%d kullanıcı',
'Hide subtasks' => 'Alt görevleri gizler',
'Show subtasks' => 'Alt görevleri göster',
'Authentication Parameters' => 'Yetkilendirme Parametreleri',
'API Access' => 'API Erişimi',
'No users found.' => 'Kullanıcı yok',
'User ID' => 'Kullanıcı No',
'Notifications are activated' => 'Bildirimler etkinleştirildi',
'Notifications are disabled' => 'Bildirimler devre dışı',
'User disabled' => 'Kullanıcı devre dışı',
'%d notifications' => '%d bildirim',
'%d notification' => '%d bildirim',
'There is no external integration installed.' => 'Yüklenmiş harici entegrasyon yok.',
'You are not allowed to update tasks assigned to someone else.' => 'Başkasına atanmış görevi güncelleme izniniz yok.',
'You are not allowed to change the assignee.' => 'Atanmış kişiyi değiştirme yetkiniz yok.',
'Task suppression is not permitted' => 'Görev silmeye izniniz yok',
'Changing assignee is not permitted' => 'Atanmışı değiştirme izniniz yok',
'Update only assigned tasks is permitted' => 'Yalnızca atandığınız görevleri güncelleyebilirsiniz',
'Only for tasks assigned to the current user' => 'Yalnızca geçerli kullanıcıya atanan görevler için',
'My projects' => 'Projelerim',
'Your are not member of any project.' => 'Herhangi bir projenin üyesi değilsiniz.',
'My subtasks' => 'Altgörevlerim',
'%d subtasks' => '%d alt görev',
'%d subtask' => '%d alt görev',
'Only moving task between those columns is permitted for tasks assigned to the current user' => 'Geçerli kullanıcıya atanan görevler için yalnızca o sütunlar arasında hareket eden bir göreve izin verilir.',
'[DUPLICATE]' => '[ÇİFT]',
'DKK - Danish Krona' => 'DKK - Danimarka Kronu',
'Remove user from group' => 'Kullanıcıyı gruptan çıkar',
'Assign the task to its creator' => 'Oluşturucusuna görev ata',
'This task was sent by email to "%s" with subject "%s".' => 'Bu görev "%s" konusuyla "%s" ePosta adresine gönderildi.',
'Predefined Email Subjects' => 'Öntanımlı ePosta konuları',
'Write one subject by line.' => 'Her satıra bir konu yazınız',
'Create another link' => 'Başka bağlantı oluştur',
'BRL - Brazilian Real' => 'BRL - Brezilya Reali',
// 'Add a new Kanboard task' => '',
);

View File

@ -1346,4 +1346,5 @@ return array(
'Write one subject by line.' => 'Viết một chủ đề theo dòng.',
'Create another link' => 'Tạo liên kết khác',
'BRL - Brazilian Real' => 'BRL - Brazilian Real',
// 'Add a new Kanboard task' => '',
);

View File

@ -1340,4 +1340,5 @@ return array(
// 'Write one subject by line.' => '',
// 'Create another link' => '',
// 'BRL - Brazilian Real' => '',
// 'Add a new Kanboard task' => '',
);

View File

@ -16,9 +16,7 @@
<!-- column in expanded mode -->
<div class="board-column-expanded">
<?php if (! $not_editable && $this->projectRole->canCreateTaskInColumn($column['project_id'], $column['id'])): ?>
<div class="board-add-icon">
<?= $this->modal->largeIcon('plus', t('Add a new task'), 'TaskCreationController', 'show', array('project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id'])) ?>
</div>
<?= $this->task->getNewBoardTaskButton($swimlane, $column) ?>
<?php endif ?>
<?php if ($swimlane['nb_swimlanes'] > 1 && ! empty($column['column_nb_tasks'])): ?>

View File

@ -32,7 +32,7 @@
<div class="task-board-icons-row">
<?php if ($task['reference']): ?>
<span class="task-board-reference" title="<?= t('Reference') ?>">
<?= $this->text->e($task['reference']) ?>
<?= $this->task->renderReference($task) ?>
</span>
<?php endif ?>
</div>

View File

@ -19,6 +19,7 @@
<div class="task-board-saving-icon" style="display: none;"><i class="fa fa-spinner fa-pulse"></i></div>
<?php if ($this->user->hasProjectAccess('TaskModificationController', 'edit', $task['project_id'])): ?>
<?= $this->render('task/dropdown', array('task' => $task)) ?>
<?= $this->modal->large('edit', '', 'TaskModificationController', 'edit', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
<?php else: ?>
<strong><?= '#'.$task['id'] ?></strong>
<?php endif ?>
@ -36,6 +37,7 @@
<div class="task-board-header">
<?php if ($this->user->hasProjectAccess('TaskModificationController', 'edit', $task['project_id'])): ?>
<?= $this->render('task/dropdown', array('task' => $task)) ?>
<?= $this->modal->large('edit', '', 'TaskModificationController', 'edit', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
<?php else: ?>
<strong><?= '#'.$task['id'] ?></strong>
<?php endif ?>

View File

@ -22,7 +22,7 @@
</li>
<?php if (! empty($task['reference'])): ?>
<li>
<strong><?= t('Reference:') ?></strong> <span><?= $this->text->e($task['reference']) ?></span>
<strong><?= t('Reference:') ?></strong> <span><?= $this->task->renderReference($task) ?></span>
</li>
<?php endif ?>
<?php if (! empty($task['score'])): ?>

View File

@ -1,7 +1,7 @@
<div class="task-list-icons">
<?php if ($task['reference']): ?>
<span class="task-board-reference" title="<?= t('Reference') ?>">
<?= $this->text->e($task['reference']) ?>
<?= $this->task->renderReference($task) ?>
</span>
<?php endif ?>
<?php if ($task['is_milestone'] == 1): ?>

View File

@ -39,7 +39,7 @@ Before to configure the recurring task, create a batch file (*.bat or *.cmd) tha
Here an example (`C:\kanboard.bat`):
```
"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\kanboard" cronjob
"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\cli" cronjob
```
**You must change the path of the PHP executable and the path of the Kanboard's script according to your installation.**

View File

@ -48,6 +48,8 @@ Do not use Sqlite on NFS mounts, only when you have a disk with fast I/O.
Kanboard is pre-configured to work with Apache (URL rewriting).
Note: Kanboard is not compatible with Apache `mod_security`.
### PHP Versions
| PHP Version |

View File

@ -39,7 +39,7 @@ Yinelenen görevi yapılandırmadan önce, Kanboard CLI komut dosyasını çalı
İşte bir örnek (`C:\kanboard.bat`):
```
"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\kanboard" cronjob
"C:\php\php.exe" -f "C:\inetpub\wwwroot\kanboard\cli" cronjob
```
**Kurulumunuza göre PHP yürütülebilir dosyanın yolunu ve Kanboard'un komut dosyasının yolunu değiştirmelisiniz.**